
void pep_dll_build_sections(bfd *abfd,bfd_link_info *info)

{
  uint *puVar1;
  bfd_symbol **ppbVar2;
  def_file_export *pdVar3;
  char cVar4;
  bfd *pbVar5;
  undefined8 uVar6;
  int iVar7;
  char cVar8;
  char cVar9;
  char cVar10;
  undefined3 uVar11;
  bfd_section **ppbVar12;
  int *piVar13;
  byte bVar14;
  int iVar15;
  long lVar16;
  char *pcVar17;
  bfd_symbol *pbVar18;
  size_t sVar19;
  char *pcVar20;
  def_file *pdVar21;
  char *pcVar22;
  int *piVar23;
  def_file_export *pdVar24;
  long lVar25;
  int *piVar26;
  bfd_section *pbVar27;
  uint uVar28;
  def_file_aligncomm *pdVar29;
  def_file_export *pdVar30;
  int iVar31;
  def_file *pdVar32;
  byte *pbVar33;
  int *piVar34;
  byte *pbVar35;
  byte *pbVar36;
  uint uVar37;
  int iVar38;
  bfd_symbol **ppbVar39;
  bool bVar40;
  bool bVar41;
  byte bVar42;
  uint local_68;
  int is_dup;
  
  bVar42 = 0;
  pep_dll_id_target(abfd->xvec->name);
  pep_output_file_set_long_section_names(abfd);
  if (pep_def_file == (def_file *)0x0) {
    pep_def_file = def_file_empty();
  }
  for (pbVar5 = info->input_bfds; pbVar5 != (bfd *)0x0; pbVar5 = (pbVar5->link).next) {
    lVar16 = bfd_get_section_by_name(pbVar5);
    if (lVar16 != 0) {
      uVar6 = *(undefined8 *)(lVar16 + 0x38);
      pcVar17 = (char *)xmalloc(uVar6);
      bfd_get_section_contents(pbVar5,lVar16,pcVar17,0);
      def_file_add_directive(pep_def_file,pcVar17,(int)uVar6);
      free(pcVar17);
    }
  }
  pdVar29 = pep_def_file->aligncomms;
joined_r0x001521ab:
  if (pdVar29 != (def_file_aligncomm *)0x0) {
    do {
      lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);
      if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {
        puVar1 = &pdVar29->alignment;
        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;
      }
      pdVar29 = pdVar29->next;
      if (pdVar29 == (def_file_aligncomm *)0x0) break;
    } while( true );
  }
  bVar14 = *(byte *)info;
  if ((bVar14 & 2) == 0) {
    if (pep_def_file->num_exports != 0) {
      if (pep_dll_export_everything != 0) goto LAB_00152907;
      iVar15 = pep_def_file->num_exports;
      if (pep_dll_kill_ats != 0) goto LAB_001523cf;
      goto LAB_00152938;
    }
    pdVar32 = pep_def_file;
    if ((pep_dll_export_everything != 0) && (pep_dll_exclude_all_symbols == 0)) goto LAB_0015222e;
LAB_00152955:
    if ((bVar14 & 1) == 0) {
      return;
    }
  }
  else {
    if ((pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0)) {
LAB_00152907:
      if (pep_dll_exclude_all_symbols == 0) {
LAB_0015222e:
        pbVar5 = info->input_bfds;
        while( true ) {
          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;
          iVar15 = bfd_generic_link_read_symbols(pbVar5);
          if (iVar15 == 0) break;
          ppbVar39 = pbVar5->outsymbols;
          if (0 < (int)pbVar5->symcount) {
            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;
            do {
              pbVar18 = *ppbVar39;
              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&
                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {
                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;
                if (!bVar41) {
                  iVar15 = bfd_hide_sym_by_version();
                  bVar41 = iVar15 == 0;
                  if (!bVar41) goto LAB_00152388;
                  pbVar18 = *ppbVar39;
                }
                bVar40 = false;
                pdVar32 = (def_file *)pbVar18->name;
                lVar16 = 6;
                pdVar21 = pdVar32;
                pbVar35 = (byte *)0x29f1f4;
                do {
                  if (lVar16 == 0) break;
                  lVar16 = lVar16 + -1;
                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;
                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;
                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);
                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;
                } while (bVar41);
                if ((!bVar40 && !bVar41) != bVar40) {
                  sVar19 = strlen((char *)pdVar32);
                  pcVar17 = (char *)xmalloc(sVar19 + 7);
                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);
                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);
                  free(pcVar17);
                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {
                    if (pep_details->underscored != 0) {
                      pdVar32 = (def_file *)
                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));
                    }
                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,
                                         (char *)&pep_def_file->exports,pdVar32);
                    if (iVar15 != 0) {
                      is_dup = 0;
                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,
                                                    (char *)0x0,&is_dup);
                      if (is_dup == 0) {
                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;
                      }
                    }
                  }
                }
              }
LAB_00152388:
              ppbVar39 = ppbVar39 + 1;
            } while (ppbVar2 != ppbVar39);
          }
          pbVar5 = (pbVar5->link).next;
        }
        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);
        einfo(pcVar17);
        iVar15 = pep_def_file->num_exports;
        pdVar32 = pep_def_file;
        goto joined_r0x00152ec1;
      }
LAB_001523aa:
      iVar15 = pep_def_file->num_exports;
      pdVar32 = pep_def_file;
      if (iVar15 != 0) goto LAB_001523bf;
LAB_00152950:
      bVar14 = *(byte *)info;
      goto LAB_00152955;
    }
LAB_001523bf:
    if (pep_dll_kill_ats == 0) {
LAB_00152938:
      uVar28 = pep_def_file->num_exports;
      pdVar32 = pep_def_file;
    }
    else {
LAB_001523cf:
      lVar16 = 0;
      bVar41 = false;
      pdVar32 = pep_def_file;
      if (iVar15 < 1) goto LAB_00152938;
      do {
        pcVar17 = pdVar32->exports[lVar16].name;
        cVar4 = *pcVar17;
        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {
          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));
          pcVar20 = strrchr(pcVar17,0x40);
          if (pcVar20 == (char *)0x0) {
            pcVar20 = pep_def_file->exports[lVar16].name;
            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);
            einfo(pcVar22,pcVar20);
          }
          else {
            *pcVar20 = '\0';
          }
          pdVar32 = pep_def_file;
          bVar41 = true;
          pep_def_file->exports[lVar16].name = pcVar17;
        }
        uVar28 = pdVar32->num_exports;
        lVar16 = lVar16 + 1;
      } while ((int)lVar16 < (int)uVar28);
      if (bVar41) {
        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);
        goto LAB_00152938;
      }
    }
    if (pep_dll_stdcall_aliases == 0) {
LAB_001525b0:
      pdVar24 = pdVar32->exports;
      if ((int)uVar28 < 1) goto LAB_00152f50;
      iVar15 = 0;
      iVar31 = 0;
      pdVar30 = pdVar24;
      do {
        while (iVar31 != 0) {
          pcVar17 = pdVar30->name;
          iVar38 = strcmp(pcVar17,pdVar30[-1].name);
          if (iVar38 != 0) break;
          pdVar3 = pdVar24 + (long)iVar15 + -1;
          uVar28 = pdVar3->ordinal;
          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||
             (uVar28 == uVar37)) {
            if (pep_dll_warn_dup_exports != 0) {
              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);
              einfo(pcVar17);
              pcVar17 = pdVar30->name;
            }
LAB_00152cc8:
            uVar37 = pdVar30->ordinal;
            if (uVar37 != 0xffffffff) goto LAB_00152636;
          }
          else {
            if (pep_dll_warn_dup_exports != 0) {
              pcVar17 = pdVar3->name;
              pcVar20 = (char *)dcgettext(0,
                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
                                          ,5);
              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);
              pcVar17 = pdVar30->name;
              goto LAB_00152cc8;
            }
LAB_00152636:
            pdVar3->ordinal = uVar37;
          }
          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;
          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;
          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;
          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;
          if (pcVar17 != (char *)0x0) {
            free(pcVar17);
          }
          if (pdVar30->internal_name != (char *)0x0) {
            free(pdVar30->internal_name);
          }
          if (pdVar30->its_name != (char *)0x0) {
            free(pdVar30->its_name);
          }
          iVar31 = iVar31 + 1;
          pdVar30 = pdVar30 + 1;
          pdVar32 = pep_def_file;
          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;
        }
        if (iVar15 != iVar31) {
          pcVar17 = pdVar30->internal_name;
          pdVar3 = pdVar24 + iVar15;
          pdVar3->name = pdVar30->name;
          pdVar3->internal_name = pcVar17;
          iVar38 = pdVar30->ordinal;
          iVar7 = pdVar30->hint;
          pdVar3->its_name = pdVar30->its_name;
          pdVar3->ordinal = iVar38;
          pdVar3->hint = iVar7;
          cVar4 = pdVar30->flag_constant;
          cVar8 = pdVar30->flag_noname;
          cVar9 = pdVar30->flag_data;
          cVar10 = pdVar30->flag_forward;
          uVar11 = *(undefined3 *)&pdVar30->field_0x25;
          pdVar3->flag_private = pdVar30->flag_private;
          pdVar3->flag_constant = cVar4;
          pdVar3->flag_noname = cVar8;
          pdVar3->flag_data = cVar9;
          pdVar3->flag_forward = cVar10;
          *(undefined3 *)&pdVar3->field_0x25 = uVar11;
        }
        iVar15 = iVar15 + 1;
        iVar31 = iVar31 + 1;
        pdVar30 = pdVar30 + 1;
      } while (iVar31 < pdVar32->num_exports);
LAB_001526e4:
      lVar16 = (long)iVar15 << 3;
    }
    else {
      if (0 < (int)uVar28) {
        bVar41 = false;
        lVar16 = 0;
        bVar40 = true;
LAB_001524c9:
        do {
          lVar25 = 6;
          pbVar35 = (byte *)pdVar32->exports[lVar16].name;
          pbVar33 = pbVar35;
          pbVar36 = (byte *)0x29f1f4;
          do {
            if (lVar25 == 0) break;
            lVar25 = lVar25 + -1;
            bVar41 = *pbVar33 < *pbVar36;
            bVar40 = *pbVar33 == *pbVar36;
            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;
            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;
          } while (bVar40);
          if (((!bVar41 && !bVar40) == bVar41) ||
             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {
LAB_001524b8:
            uVar28 = pdVar32->num_exports;
            lVar16 = lVar16 + 1;
            uVar37 = (uint)lVar16;
            bVar41 = uVar28 < uVar37;
            bVar40 = uVar28 == uVar37;
            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;
            goto LAB_001524c9;
          }
          is_dup = 1;
          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));
          pcVar17 = strchr((char *)pdVar21,0x40);
          pdVar32 = pep_def_file;
          *pcVar17 = '\0';
          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,
                               (char *)&pdVar32->exports,pdVar21);
          pdVar32 = pep_def_file;
          if (iVar15 != 0) {
            def_file_add_export(pep_def_file,(char *)pdVar21,
                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);
            pdVar32 = pep_def_file;
          }
          pep_def_file = pdVar32;
          if (is_dup == 0) goto LAB_001524b8;
          lVar16 = lVar16 + 1;
          free(pdVar21);
          uVar28 = pep_def_file->num_exports;
          uVar37 = (uint)lVar16;
          bVar41 = uVar28 < uVar37;
          bVar40 = uVar28 == uVar37;
          pdVar32 = pep_def_file;
          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;
        } while( true );
      }
LAB_00152f50:
      lVar16 = 0;
      iVar15 = 0;
    }
    pdVar32->num_exports = iVar15;
    exported_symbol_offsets = (bfd_vma *)xmalloc(lVar16);
    exported_symbol_sections = (bfd_section **)xmalloc((long)pep_def_file->num_exports << 3);
    pdVar32 = pep_def_file;
    memset(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3);
    iVar15 = pdVar32->num_exports;
    max_ordinal = 0;
    min_ordinal = 0x10000;
    count_exported = 0;
    count_exported_byname = 0;
    count_with_ordinals = 0;
    if (0 < iVar15) {
      lVar16 = 0;
      do {
        pcVar17 = pdVar32->exports[lVar16].internal_name;
        lang_add_gc_name(pcVar17);
        sVar19 = strlen(pcVar17);
        pcVar20 = (char *)xmalloc(sVar19 + 2);
        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {
          strcpy(pcVar20,pcVar17);
        }
        else {
          *pcVar20 = '_';
          strcpy(pcVar20 + 1,pcVar17);
          pcVar22 = (char *)xstrdup(pcVar20);
          lang_add_gc_name(pcVar22);
        }
        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);
        pdVar32 = pep_def_file;
        if (lVar25 == 0) {
          pcVar17 = strchr(pcVar17,0x2e);
          if (pcVar17 != (char *)0x0) {
LAB_001528bb:
            pdVar32 = pep_def_file;
            count_exported = count_exported + 1;
            pdVar24 = pep_def_file->exports;
            if (pdVar24[lVar16].flag_noname == '\0') {
              count_exported_byname = count_exported_byname + 1;
            }
            iVar15 = pdVar24[lVar16].ordinal;
            pdVar24[lVar16].flag_forward = '\x01';
            goto joined_r0x001527c9;
          }
          pcVar22 = "%X%P: cannot export %s: symbol not found\n";
LAB_00152d02:
          pcVar17 = (char *)dcgettext(0,pcVar22,5);
          einfo(pcVar17);
          pdVar32 = pep_def_file;
        }
        else {
          bVar42 = *(byte *)(lVar25 + 0x18);
          if ((bVar42 - 3 & 0xfd) == 0) {
            count_exported = count_exported + 1;
            pdVar24 = pep_def_file->exports;
            if (pdVar24[lVar16].flag_noname == '\0') {
              count_exported_byname = count_exported_byname + 1;
            }
            pbVar27 = *(bfd_section **)(lVar25 + 0x28);
            if (bVar42 != 3) {
              pbVar27 = *(bfd_section **)&pbVar27->id;
            }
            exported_symbol_sections[lVar16] = pbVar27;
            iVar15 = pdVar24[lVar16].ordinal;
joined_r0x001527c9:
            if (iVar15 != -1) {
              if (max_ordinal < iVar15) {
                max_ordinal = iVar15;
              }
              if (iVar15 < min_ordinal) {
                min_ordinal = iVar15;
              }
              count_with_ordinals = count_with_ordinals + 1;
            }
          }
          else {
            pcVar22 = strchr(pcVar17,0x2e);
            if (pcVar22 != (char *)0x0) goto LAB_001528bb;
            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";
            if (bVar42 == 1) goto LAB_00152d02;
            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5
                                       );
            einfo(pcVar22,pcVar17,(ulong)bVar42);
            pdVar32 = pep_def_file;
          }
        }
        lVar16 = lVar16 + 1;
        free(pcVar20);
        iVar15 = pdVar32->num_exports;
      } while ((int)lVar16 < iVar15);
    }
joined_r0x00152ec1:
    if (iVar15 == 0) goto LAB_00152950;
  }
  dll_name = pdVar32->name;
  if (dll_name == (char *)0x0) {
    dll_name = abfd->filename;
    cVar4 = *dll_name;
    if (cVar4 != '\0') {
      bVar41 = false;
      pcVar17 = dll_name;
      pcVar20 = dll_name;
      do {
        pcVar17 = pcVar17 + 1;
        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&
           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {
          bVar41 = true;
          pcVar20 = pcVar17;
        }
        cVar4 = *pcVar17;
      } while (cVar4 != '\0');
      if (bVar41) {
        dll_name = pcVar20;
      }
    }
  }
  if ((count_with_ordinals == 0) || (max_ordinal <= count_exported)) {
    min_ordinal = 1;
    max_ordinal = count_exported;
  }
  else {
    iVar15 = (max_ordinal - count_exported) + 1;
    if (iVar15 < min_ordinal) {
      min_ordinal = iVar15;
    }
  }
  export_table_size = (max_ordinal - min_ordinal) + 1;
  piVar23 = (int *)xmalloc((long)export_table_size << 2);
  exported_symbols = piVar23;
  if (0 < export_table_size) {
    piVar26 = piVar23 + (ulong)(export_table_size - 1) + 1;
    do {
      *piVar23 = -1;
      piVar23 = piVar23 + 1;
    } while (piVar26 != piVar23);
  }
  iVar15 = 0;
  local_68 = min_ordinal;
  uVar28 = min_ordinal;
  if (pep_def_file->num_exports < 1) goto LAB_00152b30;
  pdVar24 = pep_def_file->exports;
  lVar16 = 0;
  iVar15 = 0;
  pdVar32 = pep_def_file;
  do {
    pdVar30 = pdVar24 + lVar16;
    if ((exported_symbol_sections[lVar16] == (bfd_section *)0x0) && (pdVar30->flag_forward == '\0'))
    {
      pdVar24 = pdVar32->exports;
      pdVar30 = pdVar24 + lVar16;
    }
    else {
      iVar31 = pdVar30->ordinal;
      if (iVar31 != -1) {
        iVar38 = iVar31 - local_68;
        piVar23 = exported_symbols + iVar38;
        if (*piVar23 != -1) {
          pcVar17 = pdVar30->name;
          pcVar20 = pdVar24[*piVar23].name;
          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);
          einfo(pcVar22,iVar31,pcVar17,pcVar20);
          local_68 = min_ordinal;
          piVar23 = exported_symbols + iVar38;
          pdVar32 = pep_def_file;
        }
        *piVar23 = (int)lVar16;
      }
      pdVar24 = pdVar32->exports;
      pdVar30 = pdVar24 + lVar16;
      pcVar17 = pdVar30->its_name;
      if (pcVar17 == (char *)0x0) {
        pcVar17 = pdVar30->name;
      }
      sVar19 = strlen(pcVar17);
      iVar15 = iVar15 + 1 + (int)sVar19;
    }
    if (pdVar30->flag_forward != '\0') {
      sVar19 = strlen(pdVar30->internal_name);
      iVar15 = iVar15 + 1 + (int)sVar19;
    }
    ppbVar12 = exported_symbol_sections;
    piVar23 = exported_symbols;
    lVar16 = lVar16 + 1;
  } while ((int)lVar16 < pdVar32->num_exports);
  uVar28 = local_68;
  if (pdVar32->num_exports < 1) goto LAB_00152b30;
  piVar26 = &pdVar24->ordinal;
  lVar16 = 0;
  do {
    if (ppbVar12[lVar16] == (bfd_section *)0x0) {
      if (*(char *)(piVar26 + 3) != '\0') {
        uVar37 = *piVar26;
        goto joined_r0x00152c53;
      }
    }
    else {
      uVar37 = *piVar26;
joined_r0x00152c53:
      if (uVar37 == 0xffffffff) {
        piVar34 = piVar23 + (int)(uVar28 - local_68);
        if (*piVar34 != -1) {
          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);
          do {
            piVar34 = piVar13;
            uVar28 = uVar28 + 1;
            piVar13 = piVar34 + 1;
          } while (*piVar34 != -1);
        }
        *piVar34 = (int)lVar16;
        *piVar26 = uVar28;
      }
    }
    lVar16 = lVar16 + 1;
    piVar26 = piVar26 + 10;
    if (pdVar32->num_exports <= (int)lVar16) {
LAB_00152b30:
      iVar31 = max_ordinal;
      if ((0xffff < max_ordinal) || (0xffff < (int)uVar28)) {
        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);
        if ((int)uVar28 <= iVar31) {
          uVar28 = iVar31;
        }
        einfo(pcVar17,(ulong)uVar28);
      }
      iVar31 = count_exported_byname;
      sVar19 = strlen(dll_name);
      edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4);
      build_filler_bfd(1);
      pep_output_file_set_long_section_names(filler_bfd);
      return;
    }
  } while( true );
code_r0x001521e2:
  pdVar29 = pdVar29->next;
  **(uint **)(lVar16 + 0x28) = *puVar1;
  goto joined_r0x001521ab;
}



/* WARNING: Type propagation algorithm not settling */

void FUN_001520f0(undefined8 *param_1,byte *param_2)

{
  uint *puVar1;
  undefined8 *puVar2;
  long *plVar3;
  undefined4 *puVar4;
  char cVar5;
  ulong uVar6;
  long lVar7;
  int *piVar8;
  byte bVar9;
  int iVar10;
  long lVar11;
  void *pvVar12;
  size_t sVar13;
  char *pcVar14;
  char *pcVar15;
  undefined8 uVar16;
  long lVar17;
  char *pcVar18;
  undefined4 *puVar19;
  undefined8 uVar20;
  undefined8 uVar21;
  int iVar22;
  int *piVar23;
  long *plVar24;
  long lVar25;
  undefined8 *puVar26;
  int iVar27;
  byte *pbVar28;
  undefined8 *puVar29;
  uint uVar30;
  byte *pbVar31;
  int *piVar32;
  byte *pbVar33;
  uint uVar34;
  int iVar35;
  undefined8 *puVar36;
  bool bVar37;
  bool bVar38;
  byte bVar39;
  int local_68;
  int local_3c [3];
  
  bVar39 = 0;
  FUN_0014f0a0(*(undefined8 *)param_1[1]);
  FUN_00152090(param_1);
  if (DAT_002b5af8 == (undefined8 *)0x0) {
    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();
  }
  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {
    lVar11 = bfd_get_section_by_name(lVar25);
    if (lVar11 != 0) {
      uVar6 = *(ulong *)(lVar11 + 0x38);
      pvVar12 = (void *)xmalloc(uVar6);
      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);
      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);
      free(pvVar12);
    }
  }
  plVar24 = (long *)DAT_002b5af8[0xe];
joined_r0x001521ab:
  if (plVar24 != (long *)0x0) {
    do {
      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);
      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {
        puVar1 = (uint *)(plVar24 + 2);
        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;
      }
      plVar24 = (long *)*plVar24;
      if (plVar24 == (long *)0x0) break;
    } while( true );
  }
  bVar9 = *param_2;
  if ((bVar9 & 2) == 0) {
    if (*(int *)(DAT_002b5af8 + 8) != 0) {
      if (DAT_002b5af4 != 0) goto LAB_00152907;
      iVar10 = *(int *)(DAT_002b5af8 + 8);
      if (DAT_002b5aec != 0) goto LAB_001523cf;
      goto LAB_00152938;
    }
    puVar29 = DAT_002b5af8;
    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;
LAB_00152955:
    if ((bVar9 & 1) == 0) {
      return;
    }
  }
  else {
    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {
LAB_00152907:
      if (DAT_002b5af0 == 0) {
LAB_0015222e:
        lVar25 = *(long *)(param_2 + 0x60);
        while( true ) {
          if (lVar25 == 0) goto LAB_001523aa;
          iVar10 = bfd_generic_link_read_symbols(lVar25);
          if (iVar10 == 0) break;
          plVar24 = *(long **)(lVar25 + 0xb0);
          if (0 < *(int *)(lVar25 + 0xb8)) {
            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;
            do {
              lVar11 = *plVar24;
              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&
                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {
                bVar38 = DAT_002b6020 == 0;
                if (!bVar38) {
                  iVar10 = bfd_hide_sym_by_version();
                  bVar38 = iVar10 == 0;
                  if (!bVar38) goto LAB_00152388;
                  lVar11 = *plVar24;
                }
                bVar37 = false;
                pbVar28 = *(byte **)(lVar11 + 8);
                lVar11 = 6;
                pbVar31 = pbVar28;
                pbVar33 = (byte *)0x29f1f4;
                do {
                  if (lVar11 == 0) break;
                  lVar11 = lVar11 + -1;
                  bVar37 = *pbVar31 < *pbVar33;
                  bVar38 = *pbVar31 == *pbVar33;
                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;
                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;
                } while (bVar38);
                if ((!bVar37 && !bVar38) != bVar37) {
                  sVar13 = strlen((char *)pbVar28);
                  pcVar14 = (char *)xmalloc(sVar13 + 7);
                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);
                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);
                  free(pcVar14);
                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {
                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {
                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);
                    }
                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);
                    if (iVar10 != 0) {
                      local_3c[0] = 0;
                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);
                      if (local_3c[0] == 0) {
                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1
                        ;
                      }
                    }
                  }
                }
              }
LAB_00152388:
              plVar24 = plVar24 + 1;
            } while (plVar3 != plVar24);
          }
          lVar25 = *(long *)(lVar25 + 0xf0);
        }
        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);
        FUN_00129380(uVar16);
        iVar10 = *(int *)(DAT_002b5af8 + 8);
        puVar29 = DAT_002b5af8;
        goto joined_r0x00152ec1;
      }
LAB_001523aa:
      iVar10 = *(int *)(DAT_002b5af8 + 8);
      puVar29 = DAT_002b5af8;
      if (iVar10 != 0) goto LAB_001523bf;
LAB_00152950:
      bVar9 = *param_2;
      goto LAB_00152955;
    }
LAB_001523bf:
    if (DAT_002b5aec == 0) {
LAB_00152938:
      uVar30 = *(uint *)(DAT_002b5af8 + 8);
      puVar29 = DAT_002b5af8;
    }
    else {
LAB_001523cf:
      lVar25 = 0;
      bVar38 = false;
      puVar29 = DAT_002b5af8;
      if (iVar10 < 1) goto LAB_00152938;
      do {
        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);
        cVar5 = *pcVar14;
        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {
          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));
          pcVar15 = strrchr(pcVar14,0x40);
          if (pcVar15 == (char *)0x0) {
            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);
            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);
            FUN_00129380(uVar21,uVar16);
          }
          else {
            *pcVar15 = '\0';
          }
          puVar29 = DAT_002b5af8;
          bVar38 = true;
          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;
        }
        uVar30 = *(uint *)(puVar29 + 8);
        lVar25 = lVar25 + 1;
      } while ((int)lVar25 < (int)uVar30);
      if (bVar38) {
        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);
        goto LAB_00152938;
      }
    }
    if (DAT_002b5ae8 == 0) {
LAB_001525b0:
      puVar26 = (undefined8 *)puVar29[9];
      if ((int)uVar30 < 1) goto LAB_00152f50;
      iVar10 = 0;
      iVar27 = 0;
      puVar36 = puVar26;
      do {
        while (iVar27 != 0) {
          pcVar14 = (char *)*puVar36;
          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);
          if (iVar35 != 0) break;
          puVar29 = puVar26 + (long)iVar10 * 5 + -5;
          iVar35 = *(int *)(puVar29 + 3);
          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||
             (iVar35 == iVar22)) {
            if (DAT_002b5ae4 != 0) {
              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);
              FUN_00129380(uVar16);
              pcVar14 = (char *)*puVar36;
            }
LAB_00152cc8:
            iVar22 = *(int *)(puVar36 + 3);
            if (iVar22 != -1) goto LAB_00152636;
          }
          else {
            if (DAT_002b5ae4 != 0) {
              uVar16 = *puVar29;
              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)
              ;
              FUN_00129380(uVar21,uVar16,iVar35,iVar22);
              pcVar14 = (char *)*puVar36;
              goto LAB_00152cc8;
            }
LAB_00152636:
            *(int *)(puVar29 + 3) = iVar22;
          }
          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);
          *(byte *)((long)puVar29 + 0x21) =
               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);
          *(byte *)((long)puVar29 + 0x22) =
               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);
          *(byte *)((long)puVar29 + 0x23) =
               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);
          if (pcVar14 != (char *)0x0) {
            free(pcVar14);
          }
          if ((void *)puVar36[1] != (void *)0x0) {
            free((void *)puVar36[1]);
          }
          if ((void *)puVar36[2] != (void *)0x0) {
            free((void *)puVar36[2]);
          }
          iVar27 = iVar27 + 1;
          puVar36 = puVar36 + 5;
          puVar29 = DAT_002b5af8;
          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;
        }
        if (iVar10 != iVar27) {
          uVar16 = puVar36[1];
          puVar2 = puVar26 + (long)iVar10 * 5;
          *puVar2 = *puVar36;
          puVar2[1] = uVar16;
          uVar16 = puVar36[3];
          puVar2[2] = puVar36[2];
          puVar2[3] = uVar16;
          puVar2[4] = puVar36[4];
        }
        iVar10 = iVar10 + 1;
        iVar27 = iVar27 + 1;
        puVar36 = puVar36 + 5;
      } while (iVar27 < *(int *)(puVar29 + 8));
LAB_001526e4:
      lVar25 = (long)iVar10 << 3;
    }
    else {
      if (0 < (int)uVar30) {
        bVar38 = false;
        lVar25 = 0;
        bVar37 = true;
LAB_001524c9:
        do {
          lVar11 = 6;
          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);
          pbVar31 = pbVar28;
          pbVar33 = (byte *)0x29f1f4;
          do {
            if (lVar11 == 0) break;
            lVar11 = lVar11 + -1;
            bVar38 = *pbVar31 < *pbVar33;
            bVar37 = *pbVar31 == *pbVar33;
            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;
            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;
          } while (bVar37);
          if (((!bVar38 && !bVar37) == bVar38) ||
             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {
LAB_001524b8:
            uVar30 = *(uint *)(puVar29 + 8);
            lVar25 = lVar25 + 1;
            uVar34 = (uint)lVar25;
            bVar38 = uVar30 < uVar34;
            bVar37 = uVar30 == uVar34;
            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;
            goto LAB_001524c9;
          }
          local_3c[0] = 1;
          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));
          pcVar15 = strchr(pcVar14,0x40);
          puVar29 = DAT_002b5af8;
          *pcVar15 = '\0';
          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);
          puVar29 = DAT_002b5af8;
          if (iVar10 != 0) {
            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),
                         0xffffffff,0,local_3c);
            puVar29 = DAT_002b5af8;
          }
          DAT_002b5af8 = puVar29;
          if (local_3c[0] == 0) goto LAB_001524b8;
          lVar25 = lVar25 + 1;
          free(pcVar14);
          uVar30 = *(uint *)(DAT_002b5af8 + 8);
          uVar34 = (uint)lVar25;
          bVar38 = uVar30 < uVar34;
          bVar37 = uVar30 == uVar34;
          puVar29 = DAT_002b5af8;
          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;
        } while( true );
      }
LAB_00152f50:
      lVar25 = 0;
      iVar10 = 0;
    }
    *(int *)(puVar29 + 8) = iVar10;
    DAT_002b5b88 = xmalloc(lVar25);
    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);
    puVar29 = DAT_002b5af8;
    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);
    iVar10 = *(int *)(puVar29 + 8);
    DAT_002b5b60 = 0;
    DAT_002b5b64 = 0x10000;
    DAT_002b5b78 = 0;
    DAT_002b5b74 = 0;
    DAT_002b5b70 = 0;
    if (0 < iVar10) {
      lVar25 = 0;
      do {
        lVar11 = lVar25 * 0x28;
        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);
        FUN_0011e4b0(pcVar14);
        sVar13 = strlen(pcVar14);
        pcVar15 = (char *)xmalloc(sVar13 + 2);
        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {
          strcpy(pcVar15,pcVar14);
        }
        else {
          *pcVar15 = '_';
          strcpy(pcVar15 + 1,pcVar14);
          uVar16 = xstrdup(pcVar15);
          FUN_0011e4b0(uVar16);
        }
        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);
        puVar29 = DAT_002b5af8;
        if (lVar17 == 0) {
          pcVar14 = strchr(pcVar14,0x2e);
          if (pcVar14 != (char *)0x0) {
LAB_001528bb:
            puVar29 = DAT_002b5af8;
            DAT_002b5b78 = DAT_002b5b78 + 1;
            lVar11 = lVar11 + DAT_002b5af8[9];
            if (*(char *)(lVar11 + 0x22) == '\0') {
              DAT_002b5b74 = DAT_002b5b74 + 1;
            }
            iVar10 = *(int *)(lVar11 + 0x18);
            *(undefined1 *)(lVar11 + 0x24) = 1;
            goto joined_r0x001527c9;
          }
          pcVar18 = "%X%P: cannot export %s: symbol not found\n";
LAB_00152d02:
          uVar16 = dcgettext(0,pcVar18,5);
          FUN_00129380(uVar16);
          puVar29 = DAT_002b5af8;
        }
        else {
          cVar5 = *(char *)(lVar17 + 0x18);
          if ((cVar5 - 3U & 0xfd) == 0) {
            DAT_002b5b78 = DAT_002b5b78 + 1;
            lVar7 = DAT_002b5af8[9];
            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {
              DAT_002b5b74 = DAT_002b5b74 + 1;
            }
            lVar17 = *(long *)(lVar17 + 0x28);
            if (cVar5 != '\x03') {
              lVar17 = *(long *)(lVar17 + 8);
            }
            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;
            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);
joined_r0x001527c9:
            if (iVar10 != -1) {
              if (DAT_002b5b60 < iVar10) {
                DAT_002b5b60 = iVar10;
              }
              if (iVar10 < DAT_002b5b64) {
                DAT_002b5b64 = iVar10;
              }
              DAT_002b5b70 = DAT_002b5b70 + 1;
            }
          }
          else {
            pcVar18 = strchr(pcVar14,0x2e);
            if (pcVar18 != (char *)0x0) goto LAB_001528bb;
            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";
            if (cVar5 == '\x01') goto LAB_00152d02;
            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);
            FUN_00129380(uVar16,pcVar14,cVar5);
            puVar29 = DAT_002b5af8;
          }
        }
        lVar25 = lVar25 + 1;
        free(pcVar15);
        iVar10 = *(int *)(puVar29 + 8);
      } while ((int)lVar25 < iVar10);
    }
joined_r0x00152ec1:
    if (iVar10 == 0) goto LAB_00152950;
  }
  DAT_002b5b68 = (char *)*puVar29;
  if (DAT_002b5b68 == (char *)0x0) {
    DAT_002b5b68 = (char *)*param_1;
    cVar5 = *DAT_002b5b68;
    if (cVar5 != '\0') {
      bVar38 = false;
      pcVar14 = DAT_002b5b68;
      pcVar15 = DAT_002b5b68;
      do {
        pcVar14 = pcVar14 + 1;
        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&
           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {
          bVar38 = true;
          pcVar15 = pcVar14;
        }
        cVar5 = *pcVar14;
      } while (cVar5 != '\0');
      if (bVar38) {
        DAT_002b5b68 = pcVar15;
      }
    }
  }
  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {
    DAT_002b5b64 = 1;
    DAT_002b5b60 = DAT_002b5b78;
  }
  else {
    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;
    if (iVar10 < DAT_002b5b64) {
      DAT_002b5b64 = iVar10;
    }
  }
  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;
  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);
  DAT_002b5b58 = puVar19;
  if (0 < DAT_002b5b7c) {
    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;
    do {
      *puVar19 = 0xffffffff;
      puVar19 = puVar19 + 1;
    } while (puVar4 != puVar19);
  }
  iVar27 = 0;
  local_68 = DAT_002b5b64;
  iVar10 = DAT_002b5b64;
  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;
  lVar25 = DAT_002b5af8[9];
  lVar11 = 0;
  iVar27 = 0;
  puVar29 = DAT_002b5af8;
  do {
    lVar17 = lVar11 * 0x28;
    puVar26 = (undefined8 *)(lVar25 + lVar17);
    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&
       (*(char *)((long)puVar26 + 0x24) == '\0')) {
      lVar25 = puVar29[9];
      puVar26 = (undefined8 *)(lVar17 + lVar25);
    }
    else {
      iVar10 = *(int *)(puVar26 + 3);
      if (iVar10 != -1) {
        iVar35 = iVar10 - local_68;
        piVar23 = DAT_002b5b58 + iVar35;
        if (*piVar23 != -1) {
          uVar16 = *puVar26;
          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);
          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);
          FUN_00129380(uVar20,iVar10,uVar16,uVar21);
          local_68 = DAT_002b5b64;
          piVar23 = DAT_002b5b58 + iVar35;
          puVar29 = DAT_002b5af8;
        }
        *piVar23 = (int)lVar11;
      }
      lVar25 = puVar29[9];
      puVar26 = (undefined8 *)(lVar17 + lVar25);
      pcVar14 = (char *)puVar26[2];
      if (pcVar14 == (char *)0x0) {
        pcVar14 = (char *)*puVar26;
      }
      sVar13 = strlen(pcVar14);
      iVar27 = iVar27 + 1 + (int)sVar13;
    }
    if (*(char *)((long)puVar26 + 0x24) != '\0') {
      sVar13 = strlen((char *)puVar26[1]);
      iVar27 = iVar27 + 1 + (int)sVar13;
    }
    pvVar12 = DAT_002b5b80;
    puVar19 = DAT_002b5b58;
    lVar11 = lVar11 + 1;
  } while ((int)lVar11 < *(int *)(puVar29 + 8));
  iVar10 = local_68;
  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;
  piVar23 = (int *)(lVar25 + 0x18);
  lVar25 = 0;
  do {
    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {
      if ((char)piVar23[3] != '\0') {
        iVar35 = *piVar23;
        goto joined_r0x00152c53;
      }
    }
    else {
      iVar35 = *piVar23;
joined_r0x00152c53:
      if (iVar35 == -1) {
        piVar32 = puVar19 + (iVar10 - local_68);
        if (*piVar32 != -1) {
          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);
          do {
            piVar32 = piVar8;
            iVar10 = iVar10 + 1;
            piVar8 = piVar32 + 1;
          } while (*piVar32 != -1);
        }
        *piVar32 = (int)lVar25;
        *piVar23 = iVar10;
      }
    }
    lVar25 = lVar25 + 1;
    piVar23 = piVar23 + 10;
    if (*(int *)(puVar29 + 8) <= (int)lVar25) {
LAB_00152b30:
      iVar35 = DAT_002b5b60;
      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {
        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);
        if (iVar10 <= iVar35) {
          iVar10 = iVar35;
        }
        FUN_00129380(uVar16,iVar10);
      }
      iVar10 = DAT_002b5b74;
      sVar13 = strlen(DAT_002b5b68);
      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);
      FUN_0014d1c0(1);
      FUN_00152090(DAT_002b5bd0);
      return;
    }
  } while( true );
code_r0x001521e2:
  plVar24 = (long *)*plVar24;
  **(uint **)(lVar25 + 0x28) = *puVar1;
  goto joined_r0x001521ab;
}


PUSH R15
MOV R15,RDI
PUSH R14
PUSH R13
MOV R13,RSI
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV RAX,qword ptr [RDI + 0x8]
MOV RDI,qword ptr [RAX]
CALL 0x0014f0a0
MOV RDI,R15
CALL 0x00152090
CMP qword ptr [0x002b5af8],0x0
JZ 0x00152e78
MOV RBX,qword ptr [R13 + 0x60]
LEA R14,[0x29f405]
TEST RBX,RBX
JZ 0x0015219d
NOP word ptr CS:[RAX + RAX*0x1]
MOV RSI,R14
MOV RDI,RBX
CALL 0x0010d550
TEST RAX,RAX
JZ 0x00152191
MOV R12,qword ptr [RAX + 0x38]
MOV qword ptr [RSP],RAX
MOV RDI,R12
CALL 0x0010dda0
MOV RSI,qword ptr [RSP]
MOV R8,R12
XOR ECX,ECX
MOV RDX,RAX
MOV RDI,RBX
MOV RBP,RAX
CALL 0x0010d320
MOV RDI,qword ptr [0x002b5af8]
MOV EDX,R12D
MOV RSI,RBP
CALL 0x0014cba0
MOV RDI,RBP
CALL 0x0010dd90
MOV RBX,qword ptr [RBX + 0xf0]
TEST RBX,RBX
JNZ 0x00152140
MOV RAX,qword ptr [0x002b5af8]
MOV RBX,qword ptr [RAX + 0x70]
TEST RBX,RBX
JNZ 0x001521b8
JMP 0x001521f0
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JZ 0x001521f0
MOV RSI,qword ptr [RBX + 0x8]
MOV RDI,qword ptr [R13 + 0x28]
XOR R8D,R8D
XOR ECX,ECX
XOR EDX,EDX
CALL 0x0010d5e0
TEST RAX,RAX
JZ 0x001521b0
CMP byte ptr [RAX + 0x18],0x5
JNZ 0x001521b0
MOV RAX,qword ptr [RAX + 0x28]
MOV EDX,dword ptr [RBX + 0x10]
CMP dword ptr [RAX],EDX
JNC 0x001521b0
MOV RBX,qword ptr [RBX]
MOV dword ptr [RAX],EDX
TEST RBX,RBX
JNZ 0x001521b8
NOP dword ptr [RAX]
MOVZX EAX,byte ptr [R13]
MOV ECX,dword ptr [0x002b5af4]
TEST AL,0x2
JNZ 0x001528f0
MOV RBP,qword ptr [0x002b5af8]
MOV ESI,dword ptr [RBP + 0x40]
MOV R14,RBP
TEST ESI,ESI
JNZ 0x00152920
TEST ECX,ECX
JZ 0x00152955
MOV EDX,dword ptr [0x002b5af0]
TEST EDX,EDX
JNZ 0x00152955
MOV RBX,qword ptr [R13 + 0x60]
TEST RBX,RBX
JZ 0x001523aa
MOV qword ptr [RSP + 0x10],R15
MOV RDI,RBX
CALL 0x0010d1b0
TEST EAX,EAX
JZ 0x00152e90
MOV EAX,dword ptr [RBX + 0xb8]
MOV R10,qword ptr [RBX + 0xb0]
TEST EAX,EAX
JLE 0x00152395
SUB EAX,0x1
MOV R15,R10
LEA R14,[R10 + RAX*0x8 + 0x8]
LEA RAX,[RSP + 0x2c]
MOV qword ptr [RSP],RAX
NOP dword ptr [RAX]
MOV RAX,qword ptr [R15]
LEA RCX,[0x2b4598]
CMP qword ptr [RAX + 0x20],RCX
JZ 0x00152388
MOV EDX,dword ptr [RAX + 0x18]
TEST DL,0x2
JNZ 0x001522a4
TEST EDX,EDX
JNZ 0x00152388
MOV RDI,qword ptr [0x002b6020]
TEST RDI,RDI
JZ 0x001522c4
MOV RSI,qword ptr [RAX + 0x8]
CALL 0x0010d7c0
TEST EAX,EAX
JNZ 0x00152388
MOV RAX,qword ptr [R15]
MOV RBP,qword ptr [RAX + 0x8]
MOV ECX,0x6
LEA RDI,[0x29f1f4]
MOV RSI,RBP
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x00152388
MOV RDI,RBP
CALL 0x0010d330
LEA RDI,[RAX + 0x7]
CALL 0x0010dda0
MOV RCX,RBP
LEA RDX,[0x29f1f4]
LEA RSI,[0x16a971]
MOV R12,RAX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x0010dbc0
MOV RDI,qword ptr [R13 + 0x28]
XOR R8D,R8D
XOR ECX,ECX
XOR EDX,EDX
MOV RSI,R12
CALL 0x0010d5e0
MOV RDI,R12
MOV qword ptr [RSP + 0x8],RAX
CALL 0x0010dd90
MOV RAX,qword ptr [RSP + 0x8]
TEST RAX,RAX
JZ 0x00152345
CMP byte ptr [RAX + 0x18],0x3
JZ 0x00152388
MOV RAX,qword ptr [0x002b5b90]
MOV R12D,dword ptr [RAX + 0x1c]
TEST R12D,R12D
JZ 0x00152361
XOR EAX,EAX
CMP byte ptr [RBP],0x5f
SETZ AL
ADD RBP,RAX
MOV RSI,qword ptr [0x002b5af8]
MOV RCX,RBP
MOV RDI,RBX
LEA RDX,[RSI + 0x48]
ADD RSI,0x40
CALL 0x0014de10
TEST EAX,EAX
JNZ 0x00152bc8
NOP dword ptr [RAX + RAX*0x1]
ADD R15,0x8
CMP R14,R15
JNZ 0x00152280
MOV RBX,qword ptr [RBX + 0xf0]
TEST RBX,RBX
JNZ 0x00152240
MOV R15,qword ptr [RSP + 0x10]
MOV RBP,qword ptr [0x002b5af8]
MOV EAX,dword ptr [RBP + 0x40]
MOV R14,RBP
TEST EAX,EAX
JZ 0x00152950
MOV R10D,dword ptr [0x002b5aec]
TEST R10D,R10D
JZ 0x00152938
XOR EBX,EBX
MOV dword ptr [RSP],0x0
TEST EAX,EAX
JLE 0x00152938
MOV qword ptr [RSP + 0x8],R13
NOP dword ptr [RAX]
MOV RAX,qword ptr [R14 + 0x48]
LEA R12,[RBX + RBX*0x4]
MOV RBP,qword ptr [RAX + R12*0x8]
MOVZX R13D,byte ptr [RBP]
CMP R13B,0x3f
JZ 0x00152455
MOV ESI,0x40
MOV RDI,RBP
CALL 0x0010d3a0
TEST RAX,RAX
JZ 0x00152455
XOR EDI,EDI
CMP R13B,0x40
SETZ DIL
ADD RDI,RBP
CALL 0x0010d510
MOV ESI,0x40
MOV RDI,RAX
MOV RBP,RAX
CALL 0x0010d410
TEST RAX,RAX
JZ 0x00152ed0
MOV byte ptr [RAX],0x0
MOV R14,qword ptr [0x002b5af8]
MOV dword ptr [RSP],0x1
MOV RAX,qword ptr [R14 + 0x48]
MOV qword ptr [RAX + R12*0x8],RBP
MOVSXD RSI,dword ptr [R14 + 0x40]
ADD RBX,0x1
CMP ESI,EBX
JG 0x001523e8
MOV R9D,dword ptr [RSP]
MOV R13,qword ptr [RSP + 0x8]
TEST R9D,R9D
JNZ 0x00152e50
MOV R8D,dword ptr [0x002b5ae8]
TEST R8D,R8D
JZ 0x001525b0
TEST ESI,ESI
JLE 0x00152f50
LEA RAX,[RSP + 0x2c]
XOR R12D,R12D
MOV qword ptr [RSP],RAX
JMP 0x001524c9
MOV EDI,dword ptr [RSP + 0x2c]
MOV R14,qword ptr [0x002b5af8]
TEST EDI,EDI
JNZ 0x0015258d
NOP dword ptr [RAX + RAX*0x1]
MOV ESI,dword ptr [R14 + 0x40]
ADD R12,0x1
CMP ESI,R12D
JLE 0x001525b0
MOV RDX,qword ptr [R14 + 0x48]
LEA RAX,[R12 + R12*0x4]
MOV ECX,0x6
LEA RDI,[0x29f1f4]
LEA RBP,[RAX*0x8]
MOV RBX,qword ptr [RDX + RAX*0x8]
MOV RSI,RBX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x001524b8
MOV ESI,0x40
MOV RDI,RBX
CALL 0x0010d3a0
TEST RAX,RAX
JZ 0x001524b8
MOV dword ptr [RSP + 0x2c],0x1
XOR EDI,EDI
CMP byte ptr [RBX],0x40
SETZ DIL
ADD RDI,RBX
CALL 0x0010d510
MOV ESI,0x40
MOV RDI,RAX
MOV RBX,RAX
CALL 0x0010d3a0
MOV RSI,qword ptr [0x002b5af8]
XOR EDI,EDI
MOV RCX,RBX
MOV byte ptr [RAX],0x0
LEA RDX,[RSI + 0x48]
ADD RSI,0x40
CALL 0x0014de10
TEST EAX,EAX
JZ 0x001524a0
MOV R9,qword ptr [RSP]
XOR R8D,R8D
MOV ECX,0xffffffff
MOV RSI,RBX
MOV RDI,qword ptr [0x002b5af8]
MOV RAX,qword ptr [RDI + 0x48]
MOV RDX,qword ptr [RAX + RBP*0x1 + 0x8]
CALL 0x0014b140
MOV EDI,dword ptr [RSP + 0x2c]
MOV R14,qword ptr [0x002b5af8]
TEST EDI,EDI
JZ 0x001524b8
MOV RDI,RBX
ADD R12,0x1
CALL 0x0010dd90
MOV R14,qword ptr [0x002b5af8]
MOV ESI,dword ptr [R14 + 0x40]
CMP ESI,R12D
JG 0x001524c9
NOP dword ptr [RAX]
MOV RAX,qword ptr [R14 + 0x48]
TEST ESI,ESI
JLE 0x00152f50
MOV qword ptr [RSP],R15
MOV R12,RAX
XOR EBX,EBX
XOR EBP,EBP
MOV qword ptr [RSP + 0x8],R13
MOV R15,R14
MOV R13,RAX
JMP 0x001526a2
MOV R14,qword ptr [R13]
MOV RSI,qword ptr [R13 + -0x28]
MOV RDI,R14
CALL 0x0010d6a0
TEST EAX,EAX
JNZ 0x001526aa
MOVSXD RAX,EBX
LEA RAX,[RAX + RAX*0x4]
LEA R15,[R12 + RAX*0x8 + -0x28]
MOV EAX,dword ptr [0x002b5ae4]
MOV R10D,dword ptr [R15 + 0x18]
CMP R10D,-0x1
JZ 0x00152cc0
MOV ECX,dword ptr [R13 + 0x18]
CMP ECX,-0x1
JZ 0x00152cc0
CMP R10D,ECX
JZ 0x00152cc0
TEST EAX,EAX
JNZ 0x00152f08
MOV dword ptr [R15 + 0x18],ECX
MOVZX EAX,byte ptr [R13 + 0x20]
OR byte ptr [R15 + 0x20],AL
MOVZX EAX,byte ptr [R13 + 0x21]
OR byte ptr [R15 + 0x21],AL
MOVZX EAX,byte ptr [R13 + 0x22]
OR byte ptr [R15 + 0x22],AL
MOVZX EAX,byte ptr [R13 + 0x23]
OR byte ptr [R15 + 0x23],AL
TEST R14,R14
JZ 0x0015266b
MOV RDI,R14
CALL 0x0010dd90
MOV RDI,qword ptr [R13 + 0x8]
TEST RDI,RDI
JZ 0x00152679
CALL 0x0010dd90
MOV RDI,qword ptr [R13 + 0x10]
MOV R15,qword ptr [0x002b5af8]
TEST RDI,RDI
JZ 0x00152695
CALL 0x0010dd90
MOV R15,qword ptr [0x002b5af8]
ADD EBP,0x1
ADD R13,0x28
CMP EBP,dword ptr [R15 + 0x40]
JGE 0x001526e4
TEST EBP,EBP
JNZ 0x001525e0
CMP EBX,EBP
JZ 0x001526d4
MOVSXD RAX,EBX
MOVDQU XMM0,xmmword ptr [R13]
LEA RAX,[RAX + RAX*0x4]
LEA RAX,[R12 + RAX*0x8]
MOVUPS xmmword ptr [RAX],XMM0
MOVDQU XMM1,xmmword ptr [R13 + 0x10]
MOVUPS xmmword ptr [RAX + 0x10],XMM1
MOV RCX,qword ptr [R13 + 0x20]
MOV qword ptr [RAX + 0x20],RCX
ADD EBX,0x1
ADD EBP,0x1
ADD R13,0x28
CMP EBP,dword ptr [R15 + 0x40]
JL 0x001526a2
MOV R14,R15
MOVSXD RDI,EBX
MOV R13,qword ptr [RSP + 0x8]
MOV R15,qword ptr [RSP]
SHL RDI,0x3
MOV dword ptr [R14 + 0x40],EBX
CALL 0x0010dda0
MOV qword ptr [0x002b5b88],RAX
MOV RAX,qword ptr [0x002b5af8]
MOVSXD RDI,dword ptr [RAX + 0x40]
SHL RDI,0x3
CALL 0x0010dda0
MOV RBP,qword ptr [0x002b5af8]
XOR ESI,ESI
MOV RDI,RAX
MOV qword ptr [0x002b5b80],RAX
MOVSXD RDX,dword ptr [RBP + 0x40]
SHL RDX,0x3
CALL 0x0010d4a0
MOV EAX,dword ptr [RBP + 0x40]
MOV dword ptr [0x002b5b60],0x0
MOV dword ptr [0x002b5b64],0x10000
MOV dword ptr [0x002b5b78],0x0
MOV dword ptr [0x002b5b74],0x0
MOV dword ptr [0x002b5b70],0x0
TEST EAX,EAX
JLE 0x0015294c
XOR R14D,R14D
MOV qword ptr [RSP],R15
JMP 0x00152806
MOV RBP,qword ptr [0x002b5af8]
ADD dword ptr [0x002b5b78],0x1
ADD RBX,qword ptr [RBP + 0x48]
CMP byte ptr [RBX + 0x22],0x0
JNZ 0x001527a7
ADD dword ptr [0x002b5b74],0x1
MOV RDX,qword ptr [RAX + 0x28]
MOV RAX,qword ptr [0x002b5b80]
LEA RAX,[RAX + R14*0x8]
CMP R15B,0x3
JZ 0x001527c0
MOV RDX,qword ptr [RDX + 0x8]
MOV qword ptr [RAX],RDX
MOV EAX,dword ptr [RBX + 0x18]
CMP EAX,-0x1
JZ 0x001527ee
CMP EAX,dword ptr [0x002b5b60]
JLE 0x001527d9
MOV dword ptr [0x002b5b60],EAX
CMP EAX,dword ptr [0x002b5b64]
JGE 0x001527e7
MOV dword ptr [0x002b5b64],EAX
ADD dword ptr [0x002b5b70],0x1
MOV RDI,R12
ADD R14,0x1
CALL 0x0010dd90
MOV EAX,dword ptr [RBP + 0x40]
CMP EAX,R14D
JLE 0x00152948
MOV RAX,qword ptr [RBP + 0x48]
LEA RBX,[R14 + R14*0x4]
SHL RBX,0x3
MOV RBP,qword ptr [RAX + RBX*0x1 + 0x8]
MOV RDI,RBP
CALL 0x0011e4b0
MOV RDI,RBP
CALL 0x0010d330
LEA RDI,[RAX + 0x2]
CALL 0x0010dda0
MOV R12,RAX
MOV RAX,qword ptr [0x002b5b90]
MOV ESI,dword ptr [RAX + 0x1c]
TEST ESI,ESI
JZ 0x00152d28
CMP byte ptr [RBP],0x40
JZ 0x00152d28
MOV byte ptr [R12],0x5f
LEA RDI,[R12 + 0x1]
MOV RSI,RBP
CALL 0x0010d150
MOV RDI,R12
CALL 0x0010d510
MOV RDI,RAX
CALL 0x0011e4b0
MOV RDI,qword ptr [R13 + 0x28]
XOR ECX,ECX
XOR EDX,EDX
MOV R8D,0x1
MOV RSI,R12
CALL 0x0010d5e0
TEST RAX,RAX
JZ 0x00152ce0
MOVZX R15D,byte ptr [RAX + 0x18]
LEA EDX,[R15 + -0x3]
AND EDX,0xfd
JZ 0x00152788
MOV ESI,0x2e
MOV RDI,RBP
CALL 0x0010d3a0
TEST RAX,RAX
JZ 0x00152d40
MOV RBP,qword ptr [0x002b5af8]
ADD dword ptr [0x002b5b78],0x1
ADD RBX,qword ptr [RBP + 0x48]
CMP byte ptr [RBX + 0x22],0x0
JNZ 0x001528da
ADD dword ptr [0x002b5b74],0x1
MOV EAX,dword ptr [RBX + 0x18]
MOV byte ptr [RBX + 0x24],0x1
CMP EAX,-0x1
JNZ 0x001527cb
JMP 0x001527ee
TEST ECX,ECX
JNZ 0x00152907
MOV R14,qword ptr [0x002b5af8]
MOV EAX,dword ptr [R14 + 0x40]
TEST EAX,EAX
JNZ 0x001523bf
MOV R14D,dword ptr [0x002b5af0]
TEST R14D,R14D
JNZ 0x001523aa
JMP 0x0015222e
TEST ECX,ECX
JNZ 0x00152907
MOV R10D,dword ptr [0x002b5aec]
MOV EAX,dword ptr [R14 + 0x40]
TEST R10D,R10D
JNZ 0x001523cf
MOV ESI,dword ptr [R14 + 0x40]
JMP 0x00152473
MOV R15,qword ptr [RSP]
TEST EAX,EAX
JNZ 0x0015295d
MOVZX EAX,byte ptr [R13]
TEST AL,0x1
JZ 0x00152bb6
MOV RAX,qword ptr [RBP]
TEST RAX,RAX
JZ 0x00152db8
MOV qword ptr [0x002b5b68],RAX
MOV ECX,dword ptr [0x002b5b70]
MOV EDI,dword ptr [0x002b5b78]
TEST ECX,ECX
JZ 0x0015298f
MOV EDX,dword ptr [0x002b5b60]
CMP EDX,EDI
JG 0x00152e28
MOV dword ptr [0x002b5b64],0x1
MOV EAX,0x1
MOV dword ptr [0x002b5b60],EDI
SUB EDI,EAX
ADD EDI,0x1
MOV dword ptr [0x002b5b7c],EDI
MOVSXD RDI,EDI
SHL RDI,0x2
CALL 0x0010dda0
MOV EDX,dword ptr [0x002b5b7c]
MOV qword ptr [0x002b5b58],RAX
TEST EDX,EDX
JLE 0x001529e7
SUB EDX,0x1
LEA RDX,[RAX + RDX*0x4 + 0x4]
NOP dword ptr [RAX]
MOV dword ptr [RAX],0xffffffff
ADD RAX,0x4
CMP RDX,RAX
JNZ 0x001529d8
MOV R14,qword ptr [0x002b5af8]
MOV EAX,dword ptr [0x002b5b64]
XOR EBP,EBP
MOV EDX,dword ptr [R14 + 0x40]
MOV dword ptr [RSP],EAX
MOV EBX,EAX
TEST EDX,EDX
JLE 0x00152b30
MOV R13,qword ptr [R14 + 0x48]
XOR R12D,R12D
XOR EBP,EBP
MOV R15,R13
JMP 0x00152aee
MOV R8D,dword ptr [RSI + 0x18]
CMP R8D,-0x1
JZ 0x00152ab0
MOV R13D,R8D
SUB R13D,dword ptr [RSP]
MOV RCX,qword ptr [0x002b5b58]
MOV dword ptr [RSP + 0x10],R8D
MOVSXD R13,R13D
SHL R13,0x2
ADD RCX,R13
MOVSXD RAX,dword ptr [RCX]
CMP EAX,-0x1
JZ 0x00152aad
MOV R14,qword ptr [RSI]
LEA RAX,[RAX + RAX*0x4]
MOV EDX,0x5
XOR EDI,EDI
LEA RSI,[0x29fc20]
MOV dword ptr [RSP + 0x8],R9D
MOV R15,qword ptr [R15 + RAX*0x8]
CALL 0x0010d300
MOV R8D,dword ptr [RSP + 0x10]
MOV RDX,R14
MOV RCX,R15
MOV RDI,RAX
XOR EAX,EAX
MOV ESI,R8D
CALL 0x00129380
MOV EAX,dword ptr [0x002b5b64]
MOV R9D,dword ptr [RSP + 0x8]
MOV RCX,qword ptr [0x002b5b58]
MOV R14,qword ptr [0x002b5af8]
MOV dword ptr [RSP],EAX
ADD RCX,R13
MOV dword ptr [RCX],R9D
MOV R15,qword ptr [R14 + 0x48]
ADD EBP,0x1
ADD RBX,R15
MOV RDI,qword ptr [RBX + 0x10]
TEST RDI,RDI
JZ 0x00152b28
CALL 0x0010d330
ADD EBP,EAX
CMP byte ptr [RBX + 0x24],0x0
JZ 0x00152add
MOV RDI,qword ptr [RBX + 0x8]
CALL 0x0010d330
LEA EBP,[RBP + RAX*0x1 + 0x1]
MOV EAX,dword ptr [R14 + 0x40]
ADD R12,0x1
CMP EAX,R12D
JLE 0x00152c18
MOV RAX,qword ptr [0x002b5b80]
LEA RBX,[R12 + R12*0x4]
MOV R9D,R12D
SHL RBX,0x3
CMP qword ptr [RAX + R12*0x8],0x0
LEA RSI,[R15 + RBX*0x1]
JNZ 0x00152a20
CMP byte ptr [RSI + 0x24],0x0
JNZ 0x00152a20
MOV R15,qword ptr [R14 + 0x48]
ADD RBX,R15
JMP 0x00152aca
MOV RDI,qword ptr [RBX]
JMP 0x00152ac3
MOV EBX,dword ptr [RSP]
MOV R12D,dword ptr [0x002b5b60]
CMP R12D,0xffff
JG 0x00152b48
CMP EBX,0xffff
JLE 0x00152b6e
XOR EDI,EDI
LEA RSI,[0x29fc50]
MOV EDX,0x5
CALL 0x0010d300
CMP R12D,EBX
MOV ESI,EBX
CMOVGE ESI,R12D
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00129380
MOV RDI,qword ptr [0x002b5b68]
MOV EBX,dword ptr [0x002b5b74]
CALL 0x0010d330
MOV EDX,dword ptr [0x002b5b7c]
MOV EDI,0x1
LEA EDX,[RBX + RDX*0x1 + 0xa]
LEA EDX,[RBX + RDX*0x2]
LEA EDX,[RBP + RDX*0x2]
MOVSXD RDX,EDX
LEA RAX,[RAX + RDX*0x1 + 0x1]
MOV qword ptr [0x002b5ba8],RAX
CALL 0x0014d1c0
MOV RDI,qword ptr [0x002b5bd0]
CALL 0x00152090
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R9,qword ptr [RSP]
MOV RDI,qword ptr [0x002b5af8]
XOR R8D,R8D
XOR EDX,EDX
MOV ECX,0xffffffff
MOV RSI,RBP
MOV dword ptr [RSP + 0x2c],0x0
CALL 0x0014b140
MOV R11D,dword ptr [RSP + 0x2c]
TEST R11D,R11D
JNZ 0x00152388
MOV RDX,qword ptr [R15]
MOV EDX,dword ptr [RDX + 0x18]
SHR EDX,0x3
XOR EDX,0x1
AND EDX,0x1
MOV byte ptr [RAX + 0x23],DL
JMP 0x00152388
TEST EAX,EAX
JLE 0x00152b2d
MOVSXD RSI,dword ptr [RSP]
MOV R8D,0x1
LEA RCX,[R15 + 0x18]
XOR EAX,EAX
MOV R10,qword ptr [0x002b5b80]
MOV R9,qword ptr [0x002b5b58]
MOV R11,RSI
MOV EBX,ESI
SUB R8,RSI
JMP 0x00152c67
CMP dword ptr [RCX],-0x1
JZ 0x00152c80
ADD RAX,0x1
ADD RCX,0x28
CMP dword ptr [R14 + 0x40],EAX
JLE 0x00152b30
CMP qword ptr [R10 + RAX*0x8],0x0
MOV EDI,EAX
JNZ 0x00152c50
CMP byte ptr [RCX + 0xc],0x0
JZ 0x00152c55
CMP dword ptr [RCX],-0x1
JNZ 0x00152c55
NOP dword ptr [RAX + RAX*0x1]
MOV EDX,EBX
SUB EDX,R11D
MOVSXD RDX,EDX
LEA RSI,[R9 + RDX*0x4]
CMP dword ptr [RSI],-0x1
JZ 0x00152cb0
MOVSXD RDX,EBX
ADD RDX,R8
LEA RDX,[R9 + RDX*0x4]
NOP dword ptr [RAX + RAX*0x1]
MOV RSI,RDX
ADD RDX,0x4
ADD EBX,0x1
CMP dword ptr [RDX + -0x4],-0x1
JNZ 0x00152ca0
MOV dword ptr [RSI],EDI
MOV dword ptr [RCX],EBX
JMP 0x00152c55
TEST EAX,EAX
JNZ 0x00152d88
MOV ECX,dword ptr [R13 + 0x18]
CMP ECX,-0x1
JNZ 0x00152636
JMP 0x0015263a
MOV ESI,0x2e
MOV RDI,RBP
CALL 0x0010d3a0
TEST RAX,RAX
JNZ 0x001528bb
MOV EDX,0x5
LEA RSI,[0x29fbf0]
XOR EDI,EDI
CALL 0x0010d300
MOV RSI,RBP
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00129380
MOV RBP,qword ptr [0x002b5af8]
JMP 0x001527ee
MOV RSI,RBP
MOV RDI,R12
CALL 0x0010d150
JMP 0x00152871
MOV EDX,0x5
LEA RSI,[0x29fb88]
CMP R15B,0x1
JZ 0x00152d02
LEA RSI,[0x29fbb8]
XOR EDI,EDI
CALL 0x0010d300
MOV RSI,RBP
MOVZX EDX,R15B
MOV ECX,0x3
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00129380
MOV RBP,qword ptr [0x002b5af8]
JMP 0x001527ee
MOV R14,qword ptr [R15]
MOV EDX,0x5
LEA RSI,[0x29fb60]
XOR EDI,EDI
CALL 0x0010d300
MOV RDI,RAX
MOV RSI,R14
XOR EAX,EAX
CALL 0x00129380
MOV R14,qword ptr [R13]
JMP 0x00152cc8
MOV RAX,qword ptr [R15]
MOVZX ECX,byte ptr [RAX]
MOV qword ptr [0x002b5b68],RAX
TEST CL,CL
JZ 0x00152971
MOV RDI,RAX
XOR ESI,ESI
MOV R8D,0x1
MOV R9,0x200000000801
NOP word ptr [RAX + RAX*0x1]
SUB ECX,0x2f
ADD RAX,0x1
CMP CL,0x2d
JA 0x00152e08
MOV RDX,R9
SHR RDX,CL
NOT RDX
AND EDX,0x1
CMOVZ RDI,RAX
CMOVZ ESI,R8D
MOVZX ECX,byte ptr [RAX]
TEST CL,CL
JNZ 0x00152de8
TEST SIL,SIL
JZ 0x00152971
MOV qword ptr [0x002b5b68],RDI
JMP 0x00152971
MOV ECX,EDX
MOV EAX,dword ptr [0x002b5b64]
SUB ECX,EDI
MOV EDI,EDX
ADD ECX,0x1
CMP ECX,EAX
JGE 0x001529a4
MOV dword ptr [0x002b5b64],ECX
MOV EAX,ECX
JMP 0x001529a4
MOV RDI,qword ptr [R14 + 0x48]
LEA RCX,[0x14cf90]
MOV EDX,0x28
CALL 0x0010d1e0
MOV R14,qword ptr [0x002b5af8]
JMP 0x00152938
CALL 0x0014aee0
MOV qword ptr [0x002b5af8],RAX
JMP 0x00152126
MOV EDX,0x5
LEA RSI,[0x16d558]
XOR EDI,EDI
MOV R15,qword ptr [RSP + 0x10]
CALL 0x0010d300
MOV RSI,RBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00129380
MOV RBP,qword ptr [0x002b5af8]
MOV EAX,dword ptr [RBP + 0x40]
TEST EAX,EAX
JNZ 0x0015295d
JMP 0x00152950
MOV RAX,qword ptr [0x002b5af8]
XOR EDI,EDI
MOV EDX,0x5
LEA RSI,[0x29faf0]
MOV RAX,qword ptr [RAX + 0x48]
MOV R14,qword ptr [RAX + R12*0x8]
CALL 0x0010d300
MOV RDI,RAX
MOV RSI,R14
XOR EAX,EAX
CALL 0x00129380
JMP 0x0015243f
MOV EDX,0x5
XOR EDI,EDI
MOV R14,qword ptr [R15]
MOV dword ptr [RSP + 0x1c],R10D
LEA RSI,[0x29fb20]
MOV dword ptr [RSP + 0x10],ECX
CALL 0x0010d300
MOV R10D,dword ptr [RSP + 0x1c]
MOV ECX,dword ptr [RSP + 0x10]
MOV RSI,R14
MOV RDI,RAX
XOR EAX,EAX
MOV EDX,R10D
CALL 0x00129380
MOV R14,qword ptr [R13]
JMP 0x00152cc8
XOR EDI,EDI
XOR EBX,EBX
JMP 0x001526f7
(translation_unit "/* WARNING: Type propagation algorithm not settling */\n\nvoid FUN_001520f0(undefined8 *param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long *plVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  ulong uVar6;\n  long lVar7;\n  int *piVar8;\n  byte bVar9;\n  int iVar10;\n  long lVar11;\n  void *pvVar12;\n  size_t sVar13;\n  char *pcVar14;\n  char *pcVar15;\n  undefined8 uVar16;\n  long lVar17;\n  char *pcVar18;\n  undefined4 *puVar19;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  int iVar22;\n  int *piVar23;\n  long *plVar24;\n  long lVar25;\n  undefined8 *puVar26;\n  int iVar27;\n  byte *pbVar28;\n  undefined8 *puVar29;\n  uint uVar30;\n  byte *pbVar31;\n  int *piVar32;\n  byte *pbVar33;\n  uint uVar34;\n  int iVar35;\n  undefined8 *puVar36;\n  bool bVar37;\n  bool bVar38;\n  byte bVar39;\n  int local_68;\n  int local_3c [3];\n  \n  bVar39 = 0;\n  FUN_0014f0a0(*(undefined8 *)param_1[1]);\n  FUN_00152090(param_1);\n  if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }\n  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }\n  plVar24 = (long *)DAT_002b5af8[0xe];\njoined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }\n  bVar9 = *param_2;\n  if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }\n  DAT_002b5b68 = (char *)*puVar29;\n  if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }\n  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }\n  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;\n  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);\n  DAT_002b5b58 = puVar19;\n  if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }\n  iVar27 = 0;\n  local_68 = DAT_002b5b64;\n  iVar10 = DAT_002b5b64;\n  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;\n  lVar25 = DAT_002b5af8[9];\n  lVar11 = 0;\n  iVar27 = 0;\n  puVar29 = DAT_002b5af8;\n  do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));\n  iVar10 = local_68;\n  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;\n  piVar23 = (int *)(lVar25 + 0x18);\n  lVar25 = 0;\n  do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  plVar24 = (long *)*plVar24;\n  **(uint **)(lVar25 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}\n\n" comment (function_definition "void FUN_001520f0(undefined8 *param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long *plVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  ulong uVar6;\n  long lVar7;\n  int *piVar8;\n  byte bVar9;\n  int iVar10;\n  long lVar11;\n  void *pvVar12;\n  size_t sVar13;\n  char *pcVar14;\n  char *pcVar15;\n  undefined8 uVar16;\n  long lVar17;\n  char *pcVar18;\n  undefined4 *puVar19;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  int iVar22;\n  int *piVar23;\n  long *plVar24;\n  long lVar25;\n  undefined8 *puVar26;\n  int iVar27;\n  byte *pbVar28;\n  undefined8 *puVar29;\n  uint uVar30;\n  byte *pbVar31;\n  int *piVar32;\n  byte *pbVar33;\n  uint uVar34;\n  int iVar35;\n  undefined8 *puVar36;\n  bool bVar37;\n  bool bVar38;\n  byte bVar39;\n  int local_68;\n  int local_3c [3];\n  \n  bVar39 = 0;\n  FUN_0014f0a0(*(undefined8 *)param_1[1]);\n  FUN_00152090(param_1);\n  if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }\n  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }\n  plVar24 = (long *)DAT_002b5af8[0xe];\njoined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }\n  bVar9 = *param_2;\n  if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }\n  DAT_002b5b68 = (char *)*puVar29;\n  if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }\n  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }\n  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;\n  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);\n  DAT_002b5b58 = puVar19;\n  if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }\n  iVar27 = 0;\n  local_68 = DAT_002b5b64;\n  iVar10 = DAT_002b5b64;\n  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;\n  lVar25 = DAT_002b5af8[9];\n  lVar11 = 0;\n  iVar27 = 0;\n  puVar29 = DAT_002b5af8;\n  do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));\n  iVar10 = local_68;\n  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;\n  piVar23 = (int *)(lVar25 + 0x18);\n  lVar25 = 0;\n  do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  plVar24 = (long *)*plVar24;\n  **(uint **)(lVar25 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}" primitive_type (function_declarator "FUN_001520f0(undefined8 *param_1,byte *param_2)" identifier (parameter_list "(undefined8 *param_1,byte *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long *plVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  ulong uVar6;\n  long lVar7;\n  int *piVar8;\n  byte bVar9;\n  int iVar10;\n  long lVar11;\n  void *pvVar12;\n  size_t sVar13;\n  char *pcVar14;\n  char *pcVar15;\n  undefined8 uVar16;\n  long lVar17;\n  char *pcVar18;\n  undefined4 *puVar19;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  int iVar22;\n  int *piVar23;\n  long *plVar24;\n  long lVar25;\n  undefined8 *puVar26;\n  int iVar27;\n  byte *pbVar28;\n  undefined8 *puVar29;\n  uint uVar30;\n  byte *pbVar31;\n  int *piVar32;\n  byte *pbVar33;\n  uint uVar34;\n  int iVar35;\n  undefined8 *puVar36;\n  bool bVar37;\n  bool bVar38;\n  byte bVar39;\n  int local_68;\n  int local_3c [3];\n  \n  bVar39 = 0;\n  FUN_0014f0a0(*(undefined8 *)param_1[1]);\n  FUN_00152090(param_1);\n  if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }\n  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }\n  plVar24 = (long *)DAT_002b5af8[0xe];\njoined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }\n  bVar9 = *param_2;\n  if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }\n  DAT_002b5b68 = (char *)*puVar29;\n  if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }\n  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }\n  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;\n  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);\n  DAT_002b5b58 = puVar19;\n  if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }\n  iVar27 = 0;\n  local_68 = DAT_002b5b64;\n  iVar10 = DAT_002b5b64;\n  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;\n  lVar25 = DAT_002b5af8[9];\n  lVar11 = 0;\n  iVar27 = 0;\n  puVar29 = DAT_002b5af8;\n  do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));\n  iVar10 = local_68;\n  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;\n  piVar23 = (int *)(lVar25 + 0x18);\n  lVar25 = 0;\n  do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  plVar24 = (long *)*plVar24;\n  **(uint **)(lVar25 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "void *pvVar12;" primitive_type (pointer_declarator "*pvVar12" * identifier) ;) (declaration "size_t sVar13;" primitive_type identifier ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "char *pcVar15;" primitive_type (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined8 uVar20;" type_identifier identifier ;) (declaration "undefined8 uVar21;" type_identifier identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "long *plVar24;" (sized_type_specifier "long" long) (pointer_declarator "*plVar24" * identifier) ;) (declaration "long lVar25;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "byte *pbVar28;" type_identifier (pointer_declarator "*pbVar28" * identifier) ;) (declaration "undefined8 *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "uint uVar30;" type_identifier identifier ;) (declaration "byte *pbVar31;" type_identifier (pointer_declarator "*pbVar31" * identifier) ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "byte *pbVar33;" type_identifier (pointer_declarator "*pbVar33" * identifier) ;) (declaration "uint uVar34;" type_identifier identifier ;) (declaration "int iVar35;" primitive_type identifier ;) (declaration "undefined8 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "bool bVar37;" primitive_type identifier ;) (declaration "bool bVar38;" primitive_type identifier ;) (declaration "byte bVar39;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (expression_statement "bVar39 = 0;" (assignment_expression "bVar39 = 0" identifier = number_literal) ;) (expression_statement "FUN_0014f0a0(*(undefined8 *)param_1[1]);" (call_expression "FUN_0014f0a0(*(undefined8 *)param_1[1])" identifier (argument_list "(*(undefined8 *)param_1[1])" ( (pointer_expression "*(undefined8 *)param_1[1]" * (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ))) ;) (expression_statement "FUN_00152090(param_1);" (call_expression "FUN_00152090(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }" if (parenthesized_expression "(DAT_002b5af8 == (undefined8 *)0x0)" ( (binary_expression "DAT_002b5af8 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }" { (expression_statement "DAT_002b5af8 = (undefined8 *)FUN_0014aee0();" (assignment_expression "DAT_002b5af8 = (undefined8 *)FUN_0014aee0()" identifier = (cast_expression "(undefined8 *)FUN_0014aee0()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0014aee0()" identifier (argument_list "()" ( ))))) ;) })) (for_statement "for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }" for ( (assignment_expression "lVar25 = *(long *)(param_2 + 0x60)" identifier = (pointer_expression "*(long *)(param_2 + 0x60)" * (cast_expression "(long *)(param_2 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) ))))) ; (binary_expression "lVar25 != 0" identifier != number_literal) ; (assignment_expression "lVar25 = *(long *)(lVar25 + 0xf0)" identifier = (pointer_expression "*(long *)(lVar25 + 0xf0)" * (cast_expression "(long *)(lVar25 + 0xf0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0xf0)" ( (binary_expression "lVar25 + 0xf0" identifier + number_literal) ))))) ) (compound_statement "{\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }" { (expression_statement "lVar11 = bfd_get_section_by_name(lVar25);" (assignment_expression "lVar11 = bfd_get_section_by_name(lVar25)" identifier = (call_expression "bfd_get_section_by_name(lVar25)" identifier (argument_list "(lVar25)" ( identifier )))) ;) (if_statement "if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }" if (parenthesized_expression "(lVar11 != 0)" ( (binary_expression "lVar11 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }" { (expression_statement "uVar6 = *(ulong *)(lVar11 + 0x38);" (assignment_expression "uVar6 = *(ulong *)(lVar11 + 0x38)" identifier = (pointer_expression "*(ulong *)(lVar11 + 0x38)" * (cast_expression "(ulong *)(lVar11 + 0x38)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x38)" ( (binary_expression "lVar11 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "pvVar12 = (void *)xmalloc(uVar6);" (assignment_expression "pvVar12 = (void *)xmalloc(uVar6)" identifier = (cast_expression "(void *)xmalloc(uVar6)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))))) ;) (expression_statement "bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);" (call_expression "bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6)" identifier (argument_list "(lVar25,lVar11,pvVar12,0,uVar6)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);" (call_expression "FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff)" identifier (argument_list "(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff)" ( identifier , identifier , (binary_expression "uVar6 & 0xffffffff" identifier & number_literal) ))) ;) (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" identifier (argument_list "(pvVar12)" ( identifier ))) ;) })) })) (expression_statement "plVar24 = (long *)DAT_002b5af8[0xe];" (assignment_expression "plVar24 = (long *)DAT_002b5af8[0xe]" identifier = (cast_expression "(long *)DAT_002b5af8[0xe]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "DAT_002b5af8[0xe]" identifier [ number_literal ]))) ;) (labeled_statement "joined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }" if (parenthesized_expression "(plVar24 != (long *)0x0)" ( (binary_expression "plVar24 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }" { (do_statement "do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );" do (compound_statement "{\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    }" { (expression_statement "lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);" (assignment_expression "lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0)" identifier = (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0)" identifier (argument_list "(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0)" ( (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , (subscript_expression "plVar24[1]" identifier [ number_literal ]) , number_literal , number_literal , number_literal )))) ;) (if_statement "if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }" if (parenthesized_expression "((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05'))" ( (binary_expression "(lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')" (parenthesized_expression "(lVar25 != 0)" ( (binary_expression "lVar25 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(lVar25 + 0x18) == '\x05')" ( (binary_expression "*(char *)(lVar25 + 0x18) == '\x05'" (pointer_expression "*(char *)(lVar25 + 0x18)" * (cast_expression "(char *)(lVar25 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0x18)" ( (binary_expression "lVar25 + 0x18" identifier + number_literal) )))) == (char_literal "'\x05'" ' escape_sequence ')) ))) )) (compound_statement "{\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }" { (expression_statement "puVar1 = (uint *)(plVar24 + 2);" (assignment_expression "puVar1 = (uint *)(plVar24 + 2)" identifier = (cast_expression "(uint *)(plVar24 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar24 + 2)" ( (binary_expression "plVar24 + 2" identifier + number_literal) )))) ;) (if_statement "if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;" if (parenthesized_expression "(**(uint **)(lVar25 + 0x28) < *puVar1)" ( (binary_expression "**(uint **)(lVar25 + 0x28) < *puVar1" (pointer_expression "**(uint **)(lVar25 + 0x28)" * (pointer_expression "*(uint **)(lVar25 + 0x28)" * (cast_expression "(uint **)(lVar25 + 0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar25 + 0x28)" ( (binary_expression "lVar25 + 0x28" identifier + number_literal) ))))) < (pointer_expression "*puVar1" * identifier)) )) (goto_statement "goto code_r0x001521e2;" goto statement_identifier ;)) })) (expression_statement "plVar24 = (long *)*plVar24;" (assignment_expression "plVar24 = (long *)*plVar24" identifier = (cast_expression "(long *)*plVar24" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar24" * identifier))) ;) (if_statement "if (plVar24 == (long *)0x0) break;" if (parenthesized_expression "(plVar24 == (long *)0x0)" ( (binary_expression "plVar24 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "bVar9 = *param_2;" (assignment_expression "bVar9 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }" if (parenthesized_expression "((bVar9 & 2) == 0)" ( (binary_expression "(bVar9 & 2) == 0" (parenthesized_expression "(bVar9 & 2)" ( (binary_expression "bVar9 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }" { (if_statement "if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }" if (parenthesized_expression "(*(int *)(DAT_002b5af8 + 8) != 0)" ( (binary_expression "*(int *)(DAT_002b5af8 + 8) != 0" (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }" { (if_statement "if (DAT_002b5af4 != 0) goto LAB_00152907;" if (parenthesized_expression "(DAT_002b5af4 != 0)" ( (binary_expression "DAT_002b5af4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00152907;" goto statement_identifier ;)) (expression_statement "iVar10 = *(int *)(DAT_002b5af8 + 8);" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (DAT_002b5aec != 0) goto LAB_001523cf;" if (parenthesized_expression "(DAT_002b5aec != 0)" ( (binary_expression "DAT_002b5aec != 0" identifier != number_literal) )) (goto_statement "goto LAB_001523cf;" goto statement_identifier ;)) (goto_statement "goto LAB_00152938;" goto statement_identifier ;) })) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;" if (parenthesized_expression "((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0))" ( (binary_expression "(DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)" (parenthesized_expression "(DAT_002b5af4 != 0)" ( (binary_expression "DAT_002b5af4 != 0" identifier != number_literal) )) && (parenthesized_expression "(DAT_002b5af0 == 0)" ( (binary_expression "DAT_002b5af0 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_0015222e;" goto statement_identifier ;)) (labeled_statement "LAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }" statement_identifier : (if_statement "if ((bVar9 & 1) == 0) {\n      return;\n    }" if (parenthesized_expression "((bVar9 & 1) == 0)" ( (binary_expression "(bVar9 & 1) == 0" (parenthesized_expression "(bVar9 & 1)" ( (binary_expression "bVar9 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) }))) }) (else_clause "else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }" else (compound_statement "{\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }" { (if_statement "if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }" if (parenthesized_expression "((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0))" ( (binary_expression "(DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)" (parenthesized_expression "(DAT_002b5af4 != 0)" ( (binary_expression "DAT_002b5af4 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)" ( (comma_expression "iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }" { (labeled_statement "LAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }" statement_identifier : (if_statement "if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }" if (parenthesized_expression "(DAT_002b5af0 == 0)" ( (binary_expression "DAT_002b5af0 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }" { (labeled_statement "LAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);" statement_identifier : (expression_statement "lVar25 = *(long *)(param_2 + 0x60);" (assignment_expression "lVar25 = *(long *)(param_2 + 0x60)" identifier = (pointer_expression "*(long *)(param_2 + 0x60)" * (cast_expression "(long *)(param_2 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) ))))) ;)) (while_statement "while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }" { (if_statement "if (lVar25 == 0) goto LAB_001523aa;" if (parenthesized_expression "(lVar25 == 0)" ( (binary_expression "lVar25 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001523aa;" goto statement_identifier ;)) (expression_statement "iVar10 = bfd_generic_link_read_symbols(lVar25);" (assignment_expression "iVar10 = bfd_generic_link_read_symbols(lVar25)" identifier = (call_expression "bfd_generic_link_read_symbols(lVar25)" identifier (argument_list "(lVar25)" ( identifier )))) ;) (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "plVar24 = *(long **)(lVar25 + 0xb0);" (assignment_expression "plVar24 = *(long **)(lVar25 + 0xb0)" identifier = (pointer_expression "*(long **)(lVar25 + 0xb0)" * (cast_expression "(long **)(lVar25 + 0xb0)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar25 + 0xb0)" ( (binary_expression "lVar25 + 0xb0" identifier + number_literal) ))))) ;) (if_statement "if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }" if (parenthesized_expression "(0 < *(int *)(lVar25 + 0xb8))" ( (binary_expression "0 < *(int *)(lVar25 + 0xb8)" number_literal < (pointer_expression "*(int *)(lVar25 + 0xb8)" * (cast_expression "(int *)(lVar25 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0xb8)" ( (binary_expression "lVar25 + 0xb8" identifier + number_literal) ))))) )) (compound_statement "{\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }" { (expression_statement "plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;" (assignment_expression "plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1" identifier = (binary_expression "plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1" (binary_expression "plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1)" identifier + (call_expression "(ulong)(*(int *)(lVar25 + 0xb8) - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(int *)(lVar25 + 0xb8) - 1)" ( (binary_expression "*(int *)(lVar25 + 0xb8) - 1" (pointer_expression "*(int *)(lVar25 + 0xb8)" * (cast_expression "(int *)(lVar25 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0xb8)" ( (binary_expression "lVar25 + 0xb8" identifier + number_literal) )))) - number_literal) )))) + number_literal)) ;) (do_statement "do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);" do (compound_statement "{\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            }" { (expression_statement "lVar11 = *plVar24;" (assignment_expression "lVar11 = *plVar24" identifier = (pointer_expression "*plVar24" * identifier)) ;) (if_statement "if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }" if (parenthesized_expression "((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0))))" ( (binary_expression "(*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))" (parenthesized_expression "(*(long *)(lVar11 + 0x20) != 0x2b4598)" ( (binary_expression "*(long *)(lVar11 + 0x20) != 0x2b4598" (pointer_expression "*(long *)(lVar11 + 0x20)" * (cast_expression "(long *)(lVar11 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x20)" ( (binary_expression "lVar11 + 0x20" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))" ( (parenthesized_expression "((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0))" ( (binary_expression "(*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)" (binary_expression "(*(uint *)(lVar11 + 0x18) & 2) != 0" (parenthesized_expression "(*(uint *)(lVar11 + 0x18) & 2)" ( (binary_expression "*(uint *)(lVar11 + 0x18) & 2" (pointer_expression "*(uint *)(lVar11 + 0x18)" * (cast_expression "(uint *)(lVar11 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x18)" ( (binary_expression "lVar11 + 0x18" identifier + number_literal) )))) & number_literal) )) != number_literal) || (parenthesized_expression "(*(uint *)(lVar11 + 0x18) == 0)" ( (binary_expression "*(uint *)(lVar11 + 0x18) == 0" (pointer_expression "*(uint *)(lVar11 + 0x18)" * (cast_expression "(uint *)(lVar11 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x18)" ( (binary_expression "lVar11 + 0x18" identifier + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }" { (expression_statement "bVar38 = DAT_002b6020 == 0;" (assignment_expression "bVar38 = DAT_002b6020 == 0" identifier = (binary_expression "DAT_002b6020 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }" if (parenthesized_expression "(!bVar38)" ( (unary_expression "!bVar38" ! identifier) )) (compound_statement "{\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }" { (expression_statement "iVar10 = bfd_hide_sym_by_version();" (assignment_expression "iVar10 = bfd_hide_sym_by_version()" identifier = (call_expression "bfd_hide_sym_by_version()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar38 = iVar10 == 0;" (assignment_expression "bVar38 = iVar10 == 0" identifier = (binary_expression "iVar10 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar38) goto LAB_00152388;" if (parenthesized_expression "(!bVar38)" ( (unary_expression "!bVar38" ! identifier) )) (goto_statement "goto LAB_00152388;" goto statement_identifier ;)) (expression_statement "lVar11 = *plVar24;" (assignment_expression "lVar11 = *plVar24" identifier = (pointer_expression "*plVar24" * identifier)) ;) })) (expression_statement "bVar37 = false;" (assignment_expression "bVar37 = false" identifier = false) ;) (expression_statement "pbVar28 = *(byte **)(lVar11 + 8);" (assignment_expression "pbVar28 = *(byte **)(lVar11 + 8)" identifier = (pointer_expression "*(byte **)(lVar11 + 8)" * (cast_expression "(byte **)(lVar11 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar11 + 8)" ( (binary_expression "lVar11 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar11 = 6;" (assignment_expression "lVar11 = 6" identifier = number_literal) ;) (expression_statement "pbVar31 = pbVar28;" (assignment_expression "pbVar31 = pbVar28" identifier = identifier) ;) (expression_statement "pbVar33 = (byte *)0x29f1f4;" (assignment_expression "pbVar33 = (byte *)0x29f1f4" identifier = (cast_expression "(byte *)0x29f1f4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);" do (compound_statement "{\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar37 = *pbVar31 < *pbVar33;" (assignment_expression "bVar37 = *pbVar31 < *pbVar33" identifier = (binary_expression "*pbVar31 < *pbVar33" (pointer_expression "*pbVar31" * identifier) < (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "bVar38 = *pbVar31 == *pbVar33;" (assignment_expression "bVar38 = *pbVar31 == *pbVar33" identifier = (binary_expression "*pbVar31 == *pbVar33" (pointer_expression "*pbVar31" * identifier) == (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1" identifier = (binary_expression "pbVar31 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar31 + (ulong)bVar39 * -2" identifier + (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1" identifier = (binary_expression "pbVar33 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar33 + (ulong)bVar39 * -2" identifier + (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar38)" ( identifier )) ;) (if_statement "if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }" if (parenthesized_expression "((!bVar37 && !bVar38) != bVar37)" ( (binary_expression "(!bVar37 && !bVar38) != bVar37" (parenthesized_expression "(!bVar37 && !bVar38)" ( (binary_expression "!bVar37 && !bVar38" (unary_expression "!bVar37" ! identifier) && (unary_expression "!bVar38" ! identifier)) )) != identifier) )) (compound_statement "{\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }" { (expression_statement "sVar13 = strlen((char *)pbVar28);" (assignment_expression "sVar13 = strlen((char *)pbVar28)" identifier = (call_expression "strlen((char *)pbVar28)" identifier (argument_list "((char *)pbVar28)" ( (cast_expression "(char *)pbVar28" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pcVar14 = (char *)xmalloc(sVar13 + 7);" (assignment_expression "pcVar14 = (char *)xmalloc(sVar13 + 7)" identifier = (cast_expression "(char *)xmalloc(sVar13 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar13 + 7)" identifier (argument_list "(sVar13 + 7)" ( (binary_expression "sVar13 + 7" identifier + number_literal) ))))) ;) (expression_statement "sprintf(pcVar14,"%s%s","__imp_",pbVar28);" (call_expression "sprintf(pcVar14,"%s%s","__imp_",pbVar28)" identifier (argument_list "(pcVar14,"%s%s","__imp_",pbVar28)" ( identifier , (string_literal ""%s%s"" " string_content ") , (string_literal ""__imp_"" " string_content ") , identifier ))) ;) (expression_statement "lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);" (assignment_expression "lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0)" identifier = (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0)" identifier (argument_list "(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0)" ( (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , identifier , number_literal , number_literal , number_literal )))) ;) (expression_statement "free(pcVar14);" (call_expression "free(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier ))) ;) (if_statement "if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }" if (parenthesized_expression "((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03'))" ( (binary_expression "(lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')" (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(lVar11 + 0x18) != '\x03')" ( (binary_expression "*(char *)(lVar11 + 0x18) != '\x03'" (pointer_expression "*(char *)(lVar11 + 0x18)" * (cast_expression "(char *)(lVar11 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x18)" ( (binary_expression "lVar11 + 0x18" identifier + number_literal) )))) != (char_literal "'\x03'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }" { (if_statement "if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }" if (parenthesized_expression "(*(int *)(DAT_002b5b90 + 0x1c) != 0)" ( (binary_expression "*(int *)(DAT_002b5b90 + 0x1c) != 0" (pointer_expression "*(int *)(DAT_002b5b90 + 0x1c)" * (cast_expression "(int *)(DAT_002b5b90 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5b90 + 0x1c)" ( (binary_expression "DAT_002b5b90 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }" { (expression_statement "pbVar28 = pbVar28 + (*pbVar28 == 0x5f);" (assignment_expression "pbVar28 = pbVar28 + (*pbVar28 == 0x5f)" identifier = (binary_expression "pbVar28 + (*pbVar28 == 0x5f)" identifier + (parenthesized_expression "(*pbVar28 == 0x5f)" ( (binary_expression "*pbVar28 == 0x5f" (pointer_expression "*pbVar28" * identifier) == number_literal) )))) ;) })) (expression_statement "iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);" (assignment_expression "iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28)" identifier = (call_expression "FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28)" identifier (argument_list "(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28)" ( identifier , (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) , (binary_expression "DAT_002b5af8 + 9" identifier + number_literal) , identifier )))) ;) (if_statement "if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }" { (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);" (assignment_expression "lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c)" identifier = (call_expression "FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c)" identifier (argument_list "(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c)" ( identifier , identifier , number_literal , number_literal , number_literal , identifier )))) ;) (if_statement "if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }" if (parenthesized_expression "(local_3c[0] == 0)" ( (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }" { (expression_statement "*(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;" (assignment_expression "*(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1" (pointer_expression "*(byte *)(lVar11 + 0x23)" * (cast_expression "(byte *)(lVar11 + 0x23)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x23)" ( (binary_expression "lVar11 + 0x23" identifier + number_literal) )))) = (binary_expression "((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1" (parenthesized_expression "((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1)" ( (binary_expression "(byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1" (call_expression "(byte)(*(uint *)(*plVar24 + 0x18) >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(uint *)(*plVar24 + 0x18) >> 3)" ( (binary_expression "*(uint *)(*plVar24 + 0x18) >> 3" (pointer_expression "*(uint *)(*plVar24 + 0x18)" * (cast_expression "(uint *)(*plVar24 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar24 + 0x18)" ( (binary_expression "*plVar24 + 0x18" (pointer_expression "*plVar24" * identifier) + number_literal) )))) >> number_literal) ))) ^ number_literal) )) & number_literal)) ;) })) })) })) })) })) (labeled_statement "LAB_00152388:\n              plVar24 = plVar24 + 1;" statement_identifier : (expression_statement "plVar24 = plVar24 + 1;" (assignment_expression "plVar24 = plVar24 + 1" identifier = (binary_expression "plVar24 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(plVar3 != plVar24)" ( (binary_expression "plVar3 != plVar24" identifier != identifier) )) ;) })) (expression_statement "lVar25 = *(long *)(lVar25 + 0xf0);" (assignment_expression "lVar25 = *(long *)(lVar25 + 0xf0)" identifier = (pointer_expression "*(long *)(lVar25 + 0xf0)" * (cast_expression "(long *)(lVar25 + 0xf0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0xf0)" ( (binary_expression "lVar25 + 0xf0" identifier + number_literal) ))))) ;) })) (expression_statement "uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: could not read symbols: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: could not read symbols: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar16);" (call_expression "FUN_00129380(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) (expression_statement "iVar10 = *(int *)(DAT_002b5af8 + 8);" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (goto_statement "goto joined_r0x00152ec1;" goto statement_identifier ;) }))) (labeled_statement "LAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);" statement_identifier : (expression_statement "iVar10 = *(int *)(DAT_002b5af8 + 8);" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;)) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (iVar10 != 0) goto LAB_001523bf;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001523bf;" goto statement_identifier ;)) (labeled_statement "LAB_00152950:\n      bVar9 = *param_2;" statement_identifier : (expression_statement "bVar9 = *param_2;" (assignment_expression "bVar9 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) (goto_statement "goto LAB_00152955;" goto statement_identifier ;) })) (labeled_statement "LAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" statement_identifier : (if_statement "if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" if (parenthesized_expression "(DAT_002b5aec == 0)" ( (binary_expression "DAT_002b5aec == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }" { (labeled_statement "LAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);" statement_identifier : (expression_statement "uVar30 = *(uint *)(DAT_002b5af8 + 8);" (assignment_expression "uVar30 = *(uint *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(uint *)(DAT_002b5af8 + 8)" * (cast_expression "(uint *)(DAT_002b5af8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;)) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) }) (else_clause "else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" else (compound_statement "{\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" { (labeled_statement "LAB_001523cf:\n      lVar25 = 0;" statement_identifier : (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;)) (expression_statement "bVar38 = false;" (assignment_expression "bVar38 = false" identifier = false) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (iVar10 < 1) goto LAB_00152938;" if (parenthesized_expression "(iVar10 < 1)" ( (binary_expression "iVar10 < 1" identifier < number_literal) )) (goto_statement "goto LAB_00152938;" goto statement_identifier ;)) (do_statement "do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);" do (compound_statement "{\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      }" { (expression_statement "pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);" (assignment_expression "pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28)" identifier = (pointer_expression "*(char **)(puVar29[9] + lVar25 * 0x28)" * (cast_expression "(char **)(puVar29[9] + lVar25 * 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29[9] + lVar25 * 0x28)" ( (binary_expression "puVar29[9] + lVar25 * 0x28" (subscript_expression "puVar29[9]" identifier [ number_literal ]) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) ))))) ;) (expression_statement "cVar5 = *pcVar14;" (assignment_expression "cVar5 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) (if_statement "if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }" if (parenthesized_expression "((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0))" ( (binary_expression "(cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)" (parenthesized_expression "(cVar5 != '?')" ( (binary_expression "cVar5 != '?'" identifier != (char_literal "'?'" ' character ')) )) && (parenthesized_expression "(pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)" ( (comma_expression "pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0" (assignment_expression "pcVar15 = strchr(pcVar14,0x40)" identifier = (call_expression "strchr(pcVar14,0x40)" identifier (argument_list "(pcVar14,0x40)" ( identifier , number_literal )))) , (binary_expression "pcVar15 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }" { (expression_statement "pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));" (assignment_expression "pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'))" identifier = (cast_expression "(char *)xstrdup(pcVar14 + (cVar5 == '@'))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(pcVar14 + (cVar5 == '@'))" identifier (argument_list "(pcVar14 + (cVar5 == '@'))" ( (binary_expression "pcVar14 + (cVar5 == '@')" identifier + (parenthesized_expression "(cVar5 == '@')" ( (binary_expression "cVar5 == '@'" identifier == (char_literal "'@'" ' character ')) ))) ))))) ;) (expression_statement "pcVar15 = strrchr(pcVar14,0x40);" (assignment_expression "pcVar15 = strrchr(pcVar14,0x40)" identifier = (call_expression "strrchr(pcVar14,0x40)" identifier (argument_list "(pcVar14,0x40)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }" { (expression_statement "uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);" (assignment_expression "uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28)" identifier = (pointer_expression "*(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28)" * (cast_expression "(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8[9] + lVar25 * 0x28)" ( (binary_expression "DAT_002b5af8[9] + lVar25 * 0x28" (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ]) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) ))))) ;) (expression_statement "uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);" (assignment_expression "uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5)" identifier (argument_list "(0,"%X%P: cannot export %s: invalid export name\n",5)" ( number_literal , (string_literal ""%X%P: cannot export %s: invalid export name\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar21,uVar16);" (call_expression "FUN_00129380(uVar21,uVar16)" identifier (argument_list "(uVar21,uVar16)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            *pcVar15 = '\0';\n          }" else (compound_statement "{\n            *pcVar15 = '\0';\n          }" { (expression_statement "*pcVar15 = '\0';" (assignment_expression "*pcVar15 = '\0'" (pointer_expression "*pcVar15" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (expression_statement "bVar38 = true;" (assignment_expression "bVar38 = true" identifier = true) ;) (expression_statement "*(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;" (assignment_expression "*(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14" (pointer_expression "*(char **)(DAT_002b5af8[9] + lVar25 * 0x28)" * (cast_expression "(char **)(DAT_002b5af8[9] + lVar25 * 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_002b5af8[9] + lVar25 * 0x28)" ( (binary_expression "DAT_002b5af8[9] + lVar25 * 0x28" (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ]) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) )))) = identifier) ;) })) (expression_statement "uVar30 = *(uint *)(puVar29 + 8);" (assignment_expression "uVar30 = *(uint *)(puVar29 + 8)" identifier = (pointer_expression "*(uint *)(puVar29 + 8)" * (cast_expression "(uint *)(puVar29 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar25 < (int)uVar30)" ( (binary_expression "(int)lVar25 < (int)uVar30" (cast_expression "(int)lVar25" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (if_statement "if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }" if (parenthesized_expression "(bVar38)" ( identifier )) (compound_statement "{\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }" { (expression_statement "qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);" (call_expression "qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90)" identifier (argument_list "((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90)" ( (cast_expression "(void *)puVar29[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar29[9]" identifier [ number_literal ])) , (cast_expression "(long)(int)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) , number_literal , identifier ))) ;) (goto_statement "goto LAB_00152938;" goto statement_identifier ;) })) })))) (if_statement "if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }" if (parenthesized_expression "(DAT_002b5ae8 == 0)" ( (binary_expression "DAT_002b5ae8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }" { (labeled_statement "LAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];" statement_identifier : (expression_statement "puVar26 = (undefined8 *)puVar29[9];" (assignment_expression "puVar26 = (undefined8 *)puVar29[9]" identifier = (cast_expression "(undefined8 *)puVar29[9]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar29[9]" identifier [ number_literal ]))) ;)) (if_statement "if ((int)uVar30 < 1) goto LAB_00152f50;" if (parenthesized_expression "((int)uVar30 < 1)" ( (binary_expression "(int)uVar30 < 1" (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00152f50;" goto statement_identifier ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "puVar36 = puVar26;" (assignment_expression "puVar36 = puVar26" identifier = identifier) ;) (do_statement "do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));" do (compound_statement "{\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      }" { (while_statement "while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }" while (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (compound_statement "{\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }" { (expression_statement "pcVar14 = (char *)*puVar36;" (assignment_expression "pcVar14 = (char *)*puVar36" identifier = (cast_expression "(char *)*puVar36" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar36" * identifier))) ;) (expression_statement "iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);" (assignment_expression "iVar35 = strcmp(pcVar14,(char *)puVar36[-5])" identifier = (call_expression "strcmp(pcVar14,(char *)puVar36[-5])" identifier (argument_list "(pcVar14,(char *)puVar36[-5])" ( identifier , (cast_expression "(char *)puVar36[-5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[-5]" identifier [ number_literal ])) )))) ;) (if_statement "if (iVar35 != 0) break;" if (parenthesized_expression "(iVar35 != 0)" ( (binary_expression "iVar35 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar29 = puVar26 + (long)iVar10 * 5 + -5;" (assignment_expression "puVar29 = puVar26 + (long)iVar10 * 5 + -5" identifier = (binary_expression "puVar26 + (long)iVar10 * 5 + -5" (binary_expression "puVar26 + (long)iVar10 * 5" identifier + (binary_expression "(long)iVar10 * 5" (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "iVar35 = *(int *)(puVar29 + 3);" (assignment_expression "iVar35 = *(int *)(puVar29 + 3)" identifier = (pointer_expression "*(int *)(puVar29 + 3)" * (cast_expression "(int *)(puVar29 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 3)" ( (binary_expression "puVar29 + 3" identifier + number_literal) ))))) ;) (if_statement "if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }" if (parenthesized_expression "(((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22))" ( (binary_expression "((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)" (parenthesized_expression "((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1))" ( (binary_expression "(iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)" (parenthesized_expression "(iVar35 == -1)" ( (binary_expression "iVar35 == -1" identifier == number_literal) )) || (parenthesized_expression "(iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)" ( (comma_expression "iVar22 = *(int *)(puVar36 + 3), iVar22 == -1" (assignment_expression "iVar22 = *(int *)(puVar36 + 3)" identifier = (pointer_expression "*(int *)(puVar36 + 3)" * (cast_expression "(int *)(puVar36 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + 3)" ( (binary_expression "puVar36 + 3" identifier + number_literal) ))))) , (binary_expression "iVar22 == -1" identifier == number_literal)) ))) )) || (parenthesized_expression "(iVar35 == iVar22)" ( (binary_expression "iVar35 == iVar22" identifier == identifier) ))) )) (compound_statement "{\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }" { (if_statement "if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }" if (parenthesized_expression "(DAT_002b5ae4 != 0)" ( (binary_expression "DAT_002b5ae4 != 0" identifier != number_literal) )) (compound_statement "{\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }" { (expression_statement "uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5)" identifier = (call_expression "dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5)" identifier (argument_list "(0,"%P: warning, duplicate EXPORT: %s\n",5)" ( number_literal , (string_literal ""%P: warning, duplicate EXPORT: %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar16);" (call_expression "FUN_00129380(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) (expression_statement "pcVar14 = (char *)*puVar36;" (assignment_expression "pcVar14 = (char *)*puVar36" identifier = (cast_expression "(char *)*puVar36" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar36" * identifier))) ;) })) (labeled_statement "LAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);" statement_identifier : (expression_statement "iVar22 = *(int *)(puVar36 + 3);" (assignment_expression "iVar22 = *(int *)(puVar36 + 3)" identifier = (pointer_expression "*(int *)(puVar36 + 3)" * (cast_expression "(int *)(puVar36 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + 3)" ( (binary_expression "puVar36 + 3" identifier + number_literal) ))))) ;)) (if_statement "if (iVar22 != -1) goto LAB_00152636;" if (parenthesized_expression "(iVar22 != -1)" ( (binary_expression "iVar22 != -1" identifier != number_literal) )) (goto_statement "goto LAB_00152636;" goto statement_identifier ;)) }) (else_clause "else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }" else (compound_statement "{\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }" { (if_statement "if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }" if (parenthesized_expression "(DAT_002b5ae4 != 0)" ( (binary_expression "DAT_002b5ae4 != 0" identifier != number_literal) )) (compound_statement "{\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }" { (expression_statement "uVar16 = *puVar29;" (assignment_expression "uVar16 = *puVar29" identifier = (pointer_expression "*puVar29" * identifier)) ;) (expression_statement "uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;" (assignment_expression "uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)" identifier (argument_list "(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)" ( number_literal , (string_literal ""%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar21,uVar16,iVar35,iVar22);" (call_expression "FUN_00129380(uVar21,uVar16,iVar35,iVar22)" identifier (argument_list "(uVar21,uVar16,iVar35,iVar22)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "pcVar14 = (char *)*puVar36;" (assignment_expression "pcVar14 = (char *)*puVar36" identifier = (cast_expression "(char *)*puVar36" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar36" * identifier))) ;) (goto_statement "goto LAB_00152cc8;" goto statement_identifier ;) })) (labeled_statement "LAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;" statement_identifier : (expression_statement "*(int *)(puVar29 + 3) = iVar22;" (assignment_expression "*(int *)(puVar29 + 3) = iVar22" (pointer_expression "*(int *)(puVar29 + 3)" * (cast_expression "(int *)(puVar29 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 3)" ( (binary_expression "puVar29 + 3" identifier + number_literal) )))) = identifier) ;)) }))) (expression_statement "*(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);" (assignment_expression "*(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4)" (pointer_expression "*(byte *)(puVar29 + 4)" * (cast_expression "(byte *)(puVar29 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 4)" ( (binary_expression "puVar29 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4)" (pointer_expression "*(byte *)(puVar29 + 4)" * (cast_expression "(byte *)(puVar29 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 4)" ( (binary_expression "puVar29 + 4" identifier + number_literal) )))) | (pointer_expression "*(byte *)(puVar36 + 4)" * (cast_expression "(byte *)(puVar36 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + 4)" ( (binary_expression "puVar36 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);" (assignment_expression "*(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21)" (pointer_expression "*(byte *)((long)puVar29 + 0x21)" * (cast_expression "(byte *)((long)puVar29 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x21)" ( (binary_expression "(long)puVar29 + 0x21" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21)" (pointer_expression "*(byte *)((long)puVar29 + 0x21)" * (cast_expression "(byte *)((long)puVar29 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x21)" ( (binary_expression "(long)puVar29 + 0x21" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | (pointer_expression "*(byte *)((long)puVar36 + 0x21)" * (cast_expression "(byte *)((long)puVar36 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar36 + 0x21)" ( (binary_expression "(long)puVar36 + 0x21" (cast_expression "(long)puVar36" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (expression_statement "*(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);" (assignment_expression "*(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22)" (pointer_expression "*(byte *)((long)puVar29 + 0x22)" * (cast_expression "(byte *)((long)puVar29 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x22)" ( (binary_expression "(long)puVar29 + 0x22" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22)" (pointer_expression "*(byte *)((long)puVar29 + 0x22)" * (cast_expression "(byte *)((long)puVar29 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x22)" ( (binary_expression "(long)puVar29 + 0x22" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | (pointer_expression "*(byte *)((long)puVar36 + 0x22)" * (cast_expression "(byte *)((long)puVar36 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar36 + 0x22)" ( (binary_expression "(long)puVar36 + 0x22" (cast_expression "(long)puVar36" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (expression_statement "*(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);" (assignment_expression "*(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23)" (pointer_expression "*(byte *)((long)puVar29 + 0x23)" * (cast_expression "(byte *)((long)puVar29 + 0x23)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x23)" ( (binary_expression "(long)puVar29 + 0x23" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23)" (pointer_expression "*(byte *)((long)puVar29 + 0x23)" * (cast_expression "(byte *)((long)puVar29 + 0x23)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x23)" ( (binary_expression "(long)puVar29 + 0x23" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | (pointer_expression "*(byte *)((long)puVar36 + 0x23)" * (cast_expression "(byte *)((long)puVar36 + 0x23)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar36 + 0x23)" ( (binary_expression "(long)puVar36 + 0x23" (cast_expression "(long)puVar36" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (if_statement "if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }" if (parenthesized_expression "(pcVar14 != (char *)0x0)" ( (binary_expression "pcVar14 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(pcVar14);\n          }" { (expression_statement "free(pcVar14);" (call_expression "free(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier ))) ;) })) (if_statement "if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }" if (parenthesized_expression "((void *)puVar36[1] != (void *)0x0)" ( (binary_expression "(void *)puVar36[1] != (void *)0x0" (cast_expression "(void *)puVar36[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[1]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free((void *)puVar36[1]);\n          }" { (expression_statement "free((void *)puVar36[1]);" (call_expression "free((void *)puVar36[1])" identifier (argument_list "((void *)puVar36[1])" ( (cast_expression "(void *)puVar36[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[1]" identifier [ number_literal ])) ))) ;) })) (if_statement "if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }" if (parenthesized_expression "((void *)puVar36[2] != (void *)0x0)" ( (binary_expression "(void *)puVar36[2] != (void *)0x0" (cast_expression "(void *)puVar36[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[2]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free((void *)puVar36[2]);\n          }" { (expression_statement "free((void *)puVar36[2]);" (call_expression "free((void *)puVar36[2])" identifier (argument_list "((void *)puVar36[2])" ( (cast_expression "(void *)puVar36[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[2]" identifier [ number_literal ])) ))) ;) })) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar36 = puVar36 + 5;" (assignment_expression "puVar36 = puVar36 + 5" identifier = (binary_expression "puVar36 + 5" identifier + number_literal)) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;" if (parenthesized_expression "(*(int *)(DAT_002b5af8 + 8) <= iVar27)" ( (binary_expression "*(int *)(DAT_002b5af8 + 8) <= iVar27" (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto LAB_001526e4;" goto statement_identifier ;)) })) (if_statement "if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }" if (parenthesized_expression "(iVar10 != iVar27)" ( (binary_expression "iVar10 != iVar27" identifier != identifier) )) (compound_statement "{\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }" { (expression_statement "uVar16 = puVar36[1];" (assignment_expression "uVar16 = puVar36[1]" identifier = (subscript_expression "puVar36[1]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = puVar26 + (long)iVar10 * 5;" (assignment_expression "puVar2 = puVar26 + (long)iVar10 * 5" identifier = (binary_expression "puVar26 + (long)iVar10 * 5" identifier + (binary_expression "(long)iVar10 * 5" (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (expression_statement "*puVar2 = *puVar36;" (assignment_expression "*puVar2 = *puVar36" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*puVar36" * identifier)) ;) (expression_statement "puVar2[1] = uVar16;" (assignment_expression "puVar2[1] = uVar16" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar16 = puVar36[3];" (assignment_expression "uVar16 = puVar36[3]" identifier = (subscript_expression "puVar36[3]" identifier [ number_literal ])) ;) (expression_statement "puVar2[2] = puVar36[2];" (assignment_expression "puVar2[2] = puVar36[2]" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = (subscript_expression "puVar36[2]" identifier [ number_literal ])) ;) (expression_statement "puVar2[3] = uVar16;" (assignment_expression "puVar2[3] = uVar16" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[4] = puVar36[4];" (assignment_expression "puVar2[4] = puVar36[4]" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (subscript_expression "puVar36[4]" identifier [ number_literal ])) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar36 = puVar36 + 5;" (assignment_expression "puVar36 = puVar36 + 5" identifier = (binary_expression "puVar36 + 5" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 < *(int *)(puVar29 + 8))" ( (binary_expression "iVar27 < *(int *)(puVar29 + 8)" identifier < (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) )) ;) (labeled_statement "LAB_001526e4:\n      lVar25 = (long)iVar10 << 3;" statement_identifier : (expression_statement "lVar25 = (long)iVar10 << 3;" (assignment_expression "lVar25 = (long)iVar10 << 3" identifier = (binary_expression "(long)iVar10 << 3" (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal)) ;)) }) (else_clause "else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }" else (compound_statement "{\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }" { (if_statement "if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }" if (parenthesized_expression "(0 < (int)uVar30)" ( (binary_expression "0 < (int)uVar30" number_literal < (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }" { (expression_statement "bVar38 = false;" (assignment_expression "bVar38 = false" identifier = false) ;) (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (expression_statement "bVar37 = true;" (assignment_expression "bVar37 = true" identifier = true) ;) (labeled_statement "LAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );" statement_identifier : (do_statement "do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );" do (compound_statement "{\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        }" { (expression_statement "lVar11 = 6;" (assignment_expression "lVar11 = 6" identifier = number_literal) ;) (expression_statement "pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);" (assignment_expression "pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28)" identifier = (pointer_expression "*(byte **)(puVar29[9] + lVar25 * 0x28)" * (cast_expression "(byte **)(puVar29[9] + lVar25 * 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29[9] + lVar25 * 0x28)" ( (binary_expression "puVar29[9] + lVar25 * 0x28" (subscript_expression "puVar29[9]" identifier [ number_literal ]) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) ))))) ;) (expression_statement "pbVar31 = pbVar28;" (assignment_expression "pbVar31 = pbVar28" identifier = identifier) ;) (expression_statement "pbVar33 = (byte *)0x29f1f4;" (assignment_expression "pbVar33 = (byte *)0x29f1f4" identifier = (cast_expression "(byte *)0x29f1f4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);" do (compound_statement "{\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar38 = *pbVar31 < *pbVar33;" (assignment_expression "bVar38 = *pbVar31 < *pbVar33" identifier = (binary_expression "*pbVar31 < *pbVar33" (pointer_expression "*pbVar31" * identifier) < (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "bVar37 = *pbVar31 == *pbVar33;" (assignment_expression "bVar37 = *pbVar31 == *pbVar33" identifier = (binary_expression "*pbVar31 == *pbVar33" (pointer_expression "*pbVar31" * identifier) == (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1" identifier = (binary_expression "pbVar31 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar31 + (ulong)bVar39 * -2" identifier + (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1" identifier = (binary_expression "pbVar33 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar33 + (ulong)bVar39 * -2" identifier + (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar37)" ( identifier )) ;) (if_statement "if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }" if (parenthesized_expression "(((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0))" ( (binary_expression "((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)" (parenthesized_expression "((!bVar38 && !bVar37) == bVar38)" ( (binary_expression "(!bVar38 && !bVar37) == bVar38" (parenthesized_expression "(!bVar38 && !bVar37)" ( (binary_expression "!bVar38 && !bVar37" (unary_expression "!bVar38" ! identifier) && (unary_expression "!bVar37" ! identifier)) )) == identifier) )) || (parenthesized_expression "(pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)" ( (comma_expression "pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0" (assignment_expression "pcVar14 = strchr((char *)pbVar28,0x40)" identifier = (call_expression "strchr((char *)pbVar28,0x40)" identifier (argument_list "((char *)pbVar28,0x40)" ( (cast_expression "(char *)pbVar28" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) , (binary_expression "pcVar14 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }" { (labeled_statement "LAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);" statement_identifier : (expression_statement "uVar30 = *(uint *)(puVar29 + 8);" (assignment_expression "uVar30 = *(uint *)(puVar29 + 8)" identifier = (pointer_expression "*(uint *)(puVar29 + 8)" * (cast_expression "(uint *)(puVar29 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) ;)) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) (expression_statement "uVar34 = (uint)lVar25;" (assignment_expression "uVar34 = (uint)lVar25" identifier = (cast_expression "(uint)lVar25" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar38 = uVar30 < uVar34;" (assignment_expression "bVar38 = uVar30 < uVar34" identifier = (binary_expression "uVar30 < uVar34" identifier < identifier)) ;) (expression_statement "bVar37 = uVar30 == uVar34;" (assignment_expression "bVar37 = uVar30 == uVar34" identifier = (binary_expression "uVar30 == uVar34" identifier == identifier)) ;) (if_statement "if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;" if (parenthesized_expression "((int)uVar30 <= (int)uVar34)" ( (binary_expression "(int)uVar30 <= (int)uVar34" (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar34" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001525b0;" goto statement_identifier ;)) (goto_statement "goto LAB_001524c9;" goto statement_identifier ;) })) (expression_statement "local_3c[0] = 1;" (assignment_expression "local_3c[0] = 1" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));" (assignment_expression "pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40))" identifier = (cast_expression "(char *)xstrdup(pbVar28 + (*pbVar28 == 0x40))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(pbVar28 + (*pbVar28 == 0x40))" identifier (argument_list "(pbVar28 + (*pbVar28 == 0x40))" ( (binary_expression "pbVar28 + (*pbVar28 == 0x40)" identifier + (parenthesized_expression "(*pbVar28 == 0x40)" ( (binary_expression "*pbVar28 == 0x40" (pointer_expression "*pbVar28" * identifier) == number_literal) ))) ))))) ;) (expression_statement "pcVar15 = strchr(pcVar14,0x40);" (assignment_expression "pcVar15 = strchr(pcVar14,0x40)" identifier = (call_expression "strchr(pcVar14,0x40)" identifier (argument_list "(pcVar14,0x40)" ( identifier , number_literal )))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (expression_statement "*pcVar15 = '\0';" (assignment_expression "*pcVar15 = '\0'" (pointer_expression "*pcVar15" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);" (assignment_expression "iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14)" identifier = (call_expression "FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14)" identifier (argument_list "(0,puVar29 + 8,puVar29 + 9,pcVar14)" ( number_literal , (binary_expression "puVar29 + 8" identifier + number_literal) , (binary_expression "puVar29 + 9" identifier + number_literal) , identifier )))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }" { (expression_statement "FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);" (call_expression "FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c)" identifier (argument_list "(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c)" ( identifier , identifier , (pointer_expression "*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28)" * (cast_expression "(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8[9] + 8 + lVar25 * 0x28)" ( (binary_expression "DAT_002b5af8[9] + 8 + lVar25 * 0x28" (binary_expression "DAT_002b5af8[9] + 8" (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ]) + number_literal) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) )))) , number_literal , number_literal , identifier ))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) })) (expression_statement "DAT_002b5af8 = puVar29;" (assignment_expression "DAT_002b5af8 = puVar29" identifier = identifier) ;) (if_statement "if (local_3c[0] == 0) goto LAB_001524b8;" if (parenthesized_expression "(local_3c[0] == 0)" ( (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001524b8;" goto statement_identifier ;)) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) (expression_statement "free(pcVar14);" (call_expression "free(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier ))) ;) (expression_statement "uVar30 = *(uint *)(DAT_002b5af8 + 8);" (assignment_expression "uVar30 = *(uint *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(uint *)(DAT_002b5af8 + 8)" * (cast_expression "(uint *)(DAT_002b5af8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar34 = (uint)lVar25;" (assignment_expression "uVar34 = (uint)lVar25" identifier = (cast_expression "(uint)lVar25" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar38 = uVar30 < uVar34;" (assignment_expression "bVar38 = uVar30 < uVar34" identifier = (binary_expression "uVar30 < uVar34" identifier < identifier)) ;) (expression_statement "bVar37 = uVar30 == uVar34;" (assignment_expression "bVar37 = uVar30 == uVar34" identifier = (binary_expression "uVar30 == uVar34" identifier == identifier)) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;" if (parenthesized_expression "((int)uVar30 <= (int)uVar34)" ( (binary_expression "(int)uVar30 <= (int)uVar34" (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar34" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001525b0;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (labeled_statement "LAB_00152f50:\n      lVar25 = 0;" statement_identifier : (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) }))) (expression_statement "*(int *)(puVar29 + 8) = iVar10;" (assignment_expression "*(int *)(puVar29 + 8) = iVar10" (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "DAT_002b5b88 = xmalloc(lVar25);" (assignment_expression "DAT_002b5b88 = xmalloc(lVar25)" identifier = (call_expression "xmalloc(lVar25)" identifier (argument_list "(lVar25)" ( identifier )))) ;) (expression_statement "DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);" (assignment_expression "DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3)" identifier = (cast_expression "(void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3)" identifier (argument_list "((long)*(int *)(DAT_002b5af8 + 8) << 3)" ( (binary_expression "(long)*(int *)(DAT_002b5af8 + 8) << 3" (cast_expression "(long)*(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) << number_literal) ))))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (expression_statement "memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);" (call_expression "memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3)" identifier (argument_list "(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3)" ( identifier , number_literal , (binary_expression "(long)*(int *)(DAT_002b5af8 + 8) << 3" (cast_expression "(long)*(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) << number_literal) ))) ;) (expression_statement "iVar10 = *(int *)(puVar29 + 8);" (assignment_expression "iVar10 = *(int *)(puVar29 + 8)" identifier = (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) ;) (expression_statement "DAT_002b5b60 = 0;" (assignment_expression "DAT_002b5b60 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5b64 = 0x10000;" (assignment_expression "DAT_002b5b64 = 0x10000" identifier = number_literal) ;) (expression_statement "DAT_002b5b78 = 0;" (assignment_expression "DAT_002b5b78 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5b74 = 0;" (assignment_expression "DAT_002b5b74 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5b70 = 0;" (assignment_expression "DAT_002b5b70 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }" { (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);" do (compound_statement "{\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      }" { (expression_statement "lVar11 = lVar25 * 0x28;" (assignment_expression "lVar11 = lVar25 * 0x28" identifier = (binary_expression "lVar25 * 0x28" identifier * number_literal)) ;) (expression_statement "pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);" (assignment_expression "pcVar14 = *(char **)(puVar29[9] + 8 + lVar11)" identifier = (pointer_expression "*(char **)(puVar29[9] + 8 + lVar11)" * (cast_expression "(char **)(puVar29[9] + 8 + lVar11)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29[9] + 8 + lVar11)" ( (binary_expression "puVar29[9] + 8 + lVar11" (binary_expression "puVar29[9] + 8" (subscript_expression "puVar29[9]" identifier [ number_literal ]) + number_literal) + identifier) ))))) ;) (expression_statement "FUN_0011e4b0(pcVar14);" (call_expression "FUN_0011e4b0(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier ))) ;) (expression_statement "sVar13 = strlen(pcVar14);" (assignment_expression "sVar13 = strlen(pcVar14)" identifier = (call_expression "strlen(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier )))) ;) (expression_statement "pcVar15 = (char *)xmalloc(sVar13 + 2);" (assignment_expression "pcVar15 = (char *)xmalloc(sVar13 + 2)" identifier = (cast_expression "(char *)xmalloc(sVar13 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar13 + 2)" identifier (argument_list "(sVar13 + 2)" ( (binary_expression "sVar13 + 2" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }" if (parenthesized_expression "((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@'))" ( (binary_expression "(*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')" (parenthesized_expression "(*(int *)(DAT_002b5b90 + 0x1c) == 0)" ( (binary_expression "*(int *)(DAT_002b5b90 + 0x1c) == 0" (pointer_expression "*(int *)(DAT_002b5b90 + 0x1c)" * (cast_expression "(int *)(DAT_002b5b90 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5b90 + 0x1c)" ( (binary_expression "DAT_002b5b90 + 0x1c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*pcVar14 == '@')" ( (binary_expression "*pcVar14 == '@'" (pointer_expression "*pcVar14" * identifier) == (char_literal "'@'" ' character ')) ))) )) (compound_statement "{\n          strcpy(pcVar15,pcVar14);\n        }" { (expression_statement "strcpy(pcVar15,pcVar14);" (call_expression "strcpy(pcVar15,pcVar14)" identifier (argument_list "(pcVar15,pcVar14)" ( identifier , identifier ))) ;) }) (else_clause "else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }" else (compound_statement "{\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }" { (expression_statement "*pcVar15 = '_';" (assignment_expression "*pcVar15 = '_'" (pointer_expression "*pcVar15" * identifier) = (char_literal "'_'" ' character ')) ;) (expression_statement "strcpy(pcVar15 + 1,pcVar14);" (call_expression "strcpy(pcVar15 + 1,pcVar14)" identifier (argument_list "(pcVar15 + 1,pcVar14)" ( (binary_expression "pcVar15 + 1" identifier + number_literal) , identifier ))) ;) (expression_statement "uVar16 = xstrdup(pcVar15);" (assignment_expression "uVar16 = xstrdup(pcVar15)" identifier = (call_expression "xstrdup(pcVar15)" identifier (argument_list "(pcVar15)" ( identifier )))) ;) (expression_statement "FUN_0011e4b0(uVar16);" (call_expression "FUN_0011e4b0(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) }))) (expression_statement "lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);" (assignment_expression "lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1)" identifier = (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1)" identifier (argument_list "(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1)" ( (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , identifier , number_literal , number_literal , number_literal )))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }" if (parenthesized_expression "(lVar17 == 0)" ( (binary_expression "lVar17 == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }" { (expression_statement "pcVar14 = strchr(pcVar14,0x2e);" (assignment_expression "pcVar14 = strchr(pcVar14,0x2e)" identifier = (call_expression "strchr(pcVar14,0x2e)" identifier (argument_list "(pcVar14,0x2e)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }" if (parenthesized_expression "(pcVar14 != (char *)0x0)" ( (binary_expression "pcVar14 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }" { (labeled_statement "LAB_001528bb:\n            puVar29 = DAT_002b5af8;" statement_identifier : (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;)) (expression_statement "DAT_002b5b78 = DAT_002b5b78 + 1;" (assignment_expression "DAT_002b5b78 = DAT_002b5b78 + 1" identifier = (binary_expression "DAT_002b5b78 + 1" identifier + number_literal)) ;) (expression_statement "lVar11 = lVar11 + DAT_002b5af8[9];" (assignment_expression "lVar11 = lVar11 + DAT_002b5af8[9]" identifier = (binary_expression "lVar11 + DAT_002b5af8[9]" identifier + (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ]))) ;) (if_statement "if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" if (parenthesized_expression "(*(char *)(lVar11 + 0x22) == '\0')" ( (binary_expression "*(char *)(lVar11 + 0x22) == '\0'" (pointer_expression "*(char *)(lVar11 + 0x22)" * (cast_expression "(char *)(lVar11 + 0x22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x22)" ( (binary_expression "lVar11 + 0x22" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" { (expression_statement "DAT_002b5b74 = DAT_002b5b74 + 1;" (assignment_expression "DAT_002b5b74 = DAT_002b5b74 + 1" identifier = (binary_expression "DAT_002b5b74 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar10 = *(int *)(lVar11 + 0x18);" (assignment_expression "iVar10 = *(int *)(lVar11 + 0x18)" identifier = (pointer_expression "*(int *)(lVar11 + 0x18)" * (cast_expression "(int *)(lVar11 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x18)" ( (binary_expression "lVar11 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(lVar11 + 0x24) = 1;" (assignment_expression "*(undefined1 *)(lVar11 + 0x24) = 1" (pointer_expression "*(undefined1 *)(lVar11 + 0x24)" * (cast_expression "(undefined1 *)(lVar11 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x24)" ( (binary_expression "lVar11 + 0x24" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto joined_r0x001527c9;" goto statement_identifier ;) })) (expression_statement "pcVar18 = "%X%P: cannot export %s: symbol not found\n";" (assignment_expression "pcVar18 = "%X%P: cannot export %s: symbol not found\n"" identifier = (string_literal ""%X%P: cannot export %s: symbol not found\n"" " string_content escape_sequence ")) ;) (labeled_statement "LAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);" statement_identifier : (expression_statement "uVar16 = dcgettext(0,pcVar18,5);" (assignment_expression "uVar16 = dcgettext(0,pcVar18,5)" identifier = (call_expression "dcgettext(0,pcVar18,5)" identifier (argument_list "(0,pcVar18,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "FUN_00129380(uVar16);" (call_expression "FUN_00129380(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) }) (else_clause "else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }" else (compound_statement "{\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }" { (expression_statement "cVar5 = *(char *)(lVar17 + 0x18);" (assignment_expression "cVar5 = *(char *)(lVar17 + 0x18)" identifier = (pointer_expression "*(char *)(lVar17 + 0x18)" * (cast_expression "(char *)(lVar17 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 0x18)" ( (binary_expression "lVar17 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }" if (parenthesized_expression "((cVar5 - 3U & 0xfd) == 0)" ( (binary_expression "(cVar5 - 3U & 0xfd) == 0" (parenthesized_expression "(cVar5 - 3U & 0xfd)" ( (binary_expression "cVar5 - 3U & 0xfd" (binary_expression "cVar5 - 3U" identifier - number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }" { (expression_statement "DAT_002b5b78 = DAT_002b5b78 + 1;" (assignment_expression "DAT_002b5b78 = DAT_002b5b78 + 1" identifier = (binary_expression "DAT_002b5b78 + 1" identifier + number_literal)) ;) (expression_statement "lVar7 = DAT_002b5af8[9];" (assignment_expression "lVar7 = DAT_002b5af8[9]" identifier = (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" if (parenthesized_expression "(*(char *)(lVar11 + lVar7 + 0x22) == '\0')" ( (binary_expression "*(char *)(lVar11 + lVar7 + 0x22) == '\0'" (pointer_expression "*(char *)(lVar11 + lVar7 + 0x22)" * (cast_expression "(char *)(lVar11 + lVar7 + 0x22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + lVar7 + 0x22)" ( (binary_expression "lVar11 + lVar7 + 0x22" (binary_expression "lVar11 + lVar7" identifier + identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" { (expression_statement "DAT_002b5b74 = DAT_002b5b74 + 1;" (assignment_expression "DAT_002b5b74 = DAT_002b5b74 + 1" identifier = (binary_expression "DAT_002b5b74 + 1" identifier + number_literal)) ;) })) (expression_statement "lVar17 = *(long *)(lVar17 + 0x28);" (assignment_expression "lVar17 = *(long *)(lVar17 + 0x28)" identifier = (pointer_expression "*(long *)(lVar17 + 0x28)" * (cast_expression "(long *)(lVar17 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 0x28)" ( (binary_expression "lVar17 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }" if (parenthesized_expression "(cVar5 != '\x03')" ( (binary_expression "cVar5 != '\x03'" identifier != (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n              lVar17 = *(long *)(lVar17 + 8);\n            }" { (expression_statement "lVar17 = *(long *)(lVar17 + 8);" (assignment_expression "lVar17 = *(long *)(lVar17 + 8)" identifier = (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "*(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;" (assignment_expression "*(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17" (pointer_expression "*(long *)((long)DAT_002b5b80 + lVar25 * 8)" * (cast_expression "(long *)((long)DAT_002b5b80 + lVar25 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_002b5b80 + lVar25 * 8)" ( (binary_expression "(long)DAT_002b5b80 + lVar25 * 8" (cast_expression "(long)DAT_002b5b80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar25 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar10 = *(int *)(lVar11 + lVar7 + 0x18);" (assignment_expression "iVar10 = *(int *)(lVar11 + lVar7 + 0x18)" identifier = (pointer_expression "*(int *)(lVar11 + lVar7 + 0x18)" * (cast_expression "(int *)(lVar11 + lVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + lVar7 + 0x18)" ( (binary_expression "lVar11 + lVar7 + 0x18" (binary_expression "lVar11 + lVar7" identifier + identifier) + number_literal) ))))) ;) (labeled_statement "joined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }" statement_identifier : (if_statement "if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }" if (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) (compound_statement "{\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }" { (if_statement "if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }" if (parenthesized_expression "(DAT_002b5b60 < iVar10)" ( (binary_expression "DAT_002b5b60 < iVar10" identifier < identifier) )) (compound_statement "{\n                DAT_002b5b60 = iVar10;\n              }" { (expression_statement "DAT_002b5b60 = iVar10;" (assignment_expression "DAT_002b5b60 = iVar10" identifier = identifier) ;) })) (if_statement "if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }" if (parenthesized_expression "(iVar10 < DAT_002b5b64)" ( (binary_expression "iVar10 < DAT_002b5b64" identifier < identifier) )) (compound_statement "{\n                DAT_002b5b64 = iVar10;\n              }" { (expression_statement "DAT_002b5b64 = iVar10;" (assignment_expression "DAT_002b5b64 = iVar10" identifier = identifier) ;) })) (expression_statement "DAT_002b5b70 = DAT_002b5b70 + 1;" (assignment_expression "DAT_002b5b70 = DAT_002b5b70 + 1" identifier = (binary_expression "DAT_002b5b70 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }" else (compound_statement "{\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }" { (expression_statement "pcVar18 = strchr(pcVar14,0x2e);" (assignment_expression "pcVar18 = strchr(pcVar14,0x2e)" identifier = (call_expression "strchr(pcVar14,0x2e)" identifier (argument_list "(pcVar14,0x2e)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar18 != (char *)0x0) goto LAB_001528bb;" if (parenthesized_expression "(pcVar18 != (char *)0x0)" ( (binary_expression "pcVar18 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001528bb;" goto statement_identifier ;)) (expression_statement "pcVar18 = "%X%P: cannot export %s: symbol not defined\n";" (assignment_expression "pcVar18 = "%X%P: cannot export %s: symbol not defined\n"" identifier = (string_literal ""%X%P: cannot export %s: symbol not defined\n"" " string_content escape_sequence ")) ;) (if_statement "if (cVar5 == '\x01') goto LAB_00152d02;" if (parenthesized_expression "(cVar5 == '\x01')" ( (binary_expression "cVar5 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (goto_statement "goto LAB_00152d02;" goto statement_identifier ;)) (expression_statement "uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5)" identifier (argument_list "(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5)" ( number_literal , (string_literal ""%X%P: cannot export %s: symbol wrong type (%d vs %d)\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar16,pcVar14,cVar5);" (call_expression "FUN_00129380(uVar16,pcVar14,cVar5)" identifier (argument_list "(uVar16,pcVar14,cVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) }))) }))) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) (expression_statement "free(pcVar15);" (call_expression "free(pcVar15)" identifier (argument_list "(pcVar15)" ( identifier ))) ;) (expression_statement "iVar10 = *(int *)(puVar29 + 8);" (assignment_expression "iVar10 = *(int *)(puVar29 + 8)" identifier = (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "((int)lVar25 < iVar10)" ( (binary_expression "(int)lVar25 < iVar10" (cast_expression "(int)lVar25" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) (labeled_statement "joined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;" statement_identifier : (if_statement "if (iVar10 == 0) goto LAB_00152950;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00152950;" goto statement_identifier ;))) }))) (expression_statement "DAT_002b5b68 = (char *)*puVar29;" (assignment_expression "DAT_002b5b68 = (char *)*puVar29" identifier = (cast_expression "(char *)*puVar29" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar29" * identifier))) ;) (if_statement "if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }" if (parenthesized_expression "(DAT_002b5b68 == (char *)0x0)" ( (binary_expression "DAT_002b5b68 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }" { (expression_statement "DAT_002b5b68 = (char *)*param_1;" (assignment_expression "DAT_002b5b68 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "cVar5 = *DAT_002b5b68;" (assignment_expression "cVar5 = *DAT_002b5b68" identifier = (pointer_expression "*DAT_002b5b68" * identifier)) ;) (if_statement "if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }" { (expression_statement "bVar38 = false;" (assignment_expression "bVar38 = false" identifier = false) ;) (expression_statement "pcVar14 = DAT_002b5b68;" (assignment_expression "pcVar14 = DAT_002b5b68" identifier = identifier) ;) (expression_statement "pcVar15 = DAT_002b5b68;" (assignment_expression "pcVar15 = DAT_002b5b68" identifier = identifier) ;) (do_statement "do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');" do (compound_statement "{\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      }" { (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" identifier = (binary_expression "pcVar14 + 1" identifier + number_literal)) ;) (if_statement "if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }" if (parenthesized_expression "(((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0))" ( (binary_expression "((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)" (parenthesized_expression "((byte)(cVar5 - 0x2fU) < 0x2e)" ( (binary_expression "(byte)(cVar5 - 0x2fU) < 0x2e" (call_expression "(byte)(cVar5 - 0x2fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 - 0x2fU)" ( (binary_expression "cVar5 - 0x2fU" identifier - number_literal) ))) < number_literal) )) && (parenthesized_expression "((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)" ( (binary_expression "(~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0" (parenthesized_expression "(~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1)" ( (binary_expression "~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1" (unary_expression "~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f))" ~ (call_expression "(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x200000000801 >> (cVar5 - 0x2fU & 0x3f))" ( (binary_expression "0x200000000801 >> (cVar5 - 0x2fU & 0x3f)" number_literal >> (parenthesized_expression "(cVar5 - 0x2fU & 0x3f)" ( (binary_expression "cVar5 - 0x2fU & 0x3f" (binary_expression "cVar5 - 0x2fU" identifier - number_literal) & number_literal) ))) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }" { (expression_statement "bVar38 = true;" (assignment_expression "bVar38 = true" identifier = true) ;) (expression_statement "pcVar15 = pcVar14;" (assignment_expression "pcVar15 = pcVar14" identifier = identifier) ;) })) (expression_statement "cVar5 = *pcVar14;" (assignment_expression "cVar5 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) }) while (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }" if (parenthesized_expression "(bVar38)" ( identifier )) (compound_statement "{\n        DAT_002b5b68 = pcVar15;\n      }" { (expression_statement "DAT_002b5b68 = pcVar15;" (assignment_expression "DAT_002b5b68 = pcVar15" identifier = identifier) ;) })) })) })) (if_statement "if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }" if (parenthesized_expression "((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78))" ( (binary_expression "(DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)" (parenthesized_expression "(DAT_002b5b70 == 0)" ( (binary_expression "DAT_002b5b70 == 0" identifier == number_literal) )) || (parenthesized_expression "(DAT_002b5b60 <= DAT_002b5b78)" ( (binary_expression "DAT_002b5b60 <= DAT_002b5b78" identifier <= identifier) ))) )) (compound_statement "{\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }" { (expression_statement "DAT_002b5b64 = 1;" (assignment_expression "DAT_002b5b64 = 1" identifier = number_literal) ;) (expression_statement "DAT_002b5b60 = DAT_002b5b78;" (assignment_expression "DAT_002b5b60 = DAT_002b5b78" identifier = identifier) ;) }) (else_clause "else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }" else (compound_statement "{\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }" { (expression_statement "iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;" (assignment_expression "iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1" identifier = (binary_expression "(DAT_002b5b60 - DAT_002b5b78) + 1" (parenthesized_expression "(DAT_002b5b60 - DAT_002b5b78)" ( (binary_expression "DAT_002b5b60 - DAT_002b5b78" identifier - identifier) )) + number_literal)) ;) (if_statement "if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }" if (parenthesized_expression "(iVar10 < DAT_002b5b64)" ( (binary_expression "iVar10 < DAT_002b5b64" identifier < identifier) )) (compound_statement "{\n      DAT_002b5b64 = iVar10;\n    }" { (expression_statement "DAT_002b5b64 = iVar10;" (assignment_expression "DAT_002b5b64 = iVar10" identifier = identifier) ;) })) }))) (expression_statement "DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;" (assignment_expression "DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1" identifier = (binary_expression "(DAT_002b5b60 - DAT_002b5b64) + 1" (parenthesized_expression "(DAT_002b5b60 - DAT_002b5b64)" ( (binary_expression "DAT_002b5b60 - DAT_002b5b64" identifier - identifier) )) + number_literal)) ;) (expression_statement "puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);" (assignment_expression "puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2)" identifier = (cast_expression "(undefined4 *)xmalloc((long)DAT_002b5b7c << 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)DAT_002b5b7c << 2)" identifier (argument_list "((long)DAT_002b5b7c << 2)" ( (binary_expression "(long)DAT_002b5b7c << 2" (cast_expression "(long)DAT_002b5b7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "DAT_002b5b58 = puVar19;" (assignment_expression "DAT_002b5b58 = puVar19" identifier = identifier) ;) (if_statement "if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }" if (parenthesized_expression "(0 < DAT_002b5b7c)" ( (binary_expression "0 < DAT_002b5b7c" number_literal < identifier) )) (compound_statement "{\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }" { (expression_statement "puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;" (assignment_expression "puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1" identifier = (binary_expression "puVar19 + (ulong)(DAT_002b5b7c - 1) + 1" (binary_expression "puVar19 + (ulong)(DAT_002b5b7c - 1)" identifier + (call_expression "(ulong)(DAT_002b5b7c - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_002b5b7c - 1)" ( (binary_expression "DAT_002b5b7c - 1" identifier - number_literal) )))) + number_literal)) ;) (do_statement "do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);" do (compound_statement "{\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    }" { (expression_statement "*puVar19 = 0xffffffff;" (assignment_expression "*puVar19 = 0xffffffff" (pointer_expression "*puVar19" * identifier) = number_literal) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar19)" ( (binary_expression "puVar4 != puVar19" identifier != identifier) )) ;) })) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "local_68 = DAT_002b5b64;" (assignment_expression "local_68 = DAT_002b5b64" identifier = identifier) ;) (expression_statement "iVar10 = DAT_002b5b64;" (assignment_expression "iVar10 = DAT_002b5b64" identifier = identifier) ;) (if_statement "if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;" if (parenthesized_expression "(*(int *)(DAT_002b5af8 + 8) < 1)" ( (binary_expression "*(int *)(DAT_002b5af8 + 8) < 1" (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_00152b30;" goto statement_identifier ;)) (expression_statement "lVar25 = DAT_002b5af8[9];" (assignment_expression "lVar25 = DAT_002b5af8[9]" identifier = (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ])) ;) (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (do_statement "do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));" do (compound_statement "{\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  }" { (expression_statement "lVar17 = lVar11 * 0x28;" (assignment_expression "lVar17 = lVar11 * 0x28" identifier = (binary_expression "lVar11 * 0x28" identifier * number_literal)) ;) (expression_statement "puVar26 = (undefined8 *)(lVar25 + lVar17);" (assignment_expression "puVar26 = (undefined8 *)(lVar25 + lVar17)" identifier = (cast_expression "(undefined8 *)(lVar25 + lVar17)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + lVar17)" ( (binary_expression "lVar25 + lVar17" identifier + identifier) )))) ;) (if_statement "if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" if (parenthesized_expression "((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0'))" ( (binary_expression "(*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')" (parenthesized_expression "(*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0)" ( (binary_expression "*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0" (pointer_expression "*(long *)((long)DAT_002b5b80 + lVar11 * 8)" * (cast_expression "(long *)((long)DAT_002b5b80 + lVar11 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_002b5b80 + lVar11 * 8)" ( (binary_expression "(long)DAT_002b5b80 + lVar11 * 8" (cast_expression "(long)DAT_002b5b80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar11 * 8" identifier * number_literal)) )))) == number_literal) )) && (parenthesized_expression "(*(char *)((long)puVar26 + 0x24) == '\0')" ( (binary_expression "*(char *)((long)puVar26 + 0x24) == '\0'" (pointer_expression "*(char *)((long)puVar26 + 0x24)" * (cast_expression "(char *)((long)puVar26 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar26 + 0x24)" ( (binary_expression "(long)puVar26 + 0x24" (cast_expression "(long)puVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }" { (expression_statement "lVar25 = puVar29[9];" (assignment_expression "lVar25 = puVar29[9]" identifier = (subscript_expression "puVar29[9]" identifier [ number_literal ])) ;) (expression_statement "puVar26 = (undefined8 *)(lVar17 + lVar25);" (assignment_expression "puVar26 = (undefined8 *)(lVar17 + lVar25)" identifier = (cast_expression "(undefined8 *)(lVar17 + lVar25)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar25)" ( (binary_expression "lVar17 + lVar25" identifier + identifier) )))) ;) }) (else_clause "else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" else (compound_statement "{\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" { (expression_statement "iVar10 = *(int *)(puVar26 + 3);" (assignment_expression "iVar10 = *(int *)(puVar26 + 3)" identifier = (pointer_expression "*(int *)(puVar26 + 3)" * (cast_expression "(int *)(puVar26 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 3)" ( (binary_expression "puVar26 + 3" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }" if (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) (compound_statement "{\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }" { (expression_statement "iVar35 = iVar10 - local_68;" (assignment_expression "iVar35 = iVar10 - local_68" identifier = (binary_expression "iVar10 - local_68" identifier - identifier)) ;) (expression_statement "piVar23 = DAT_002b5b58 + iVar35;" (assignment_expression "piVar23 = DAT_002b5b58 + iVar35" identifier = (binary_expression "DAT_002b5b58 + iVar35" identifier + identifier)) ;) (if_statement "if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }" if (parenthesized_expression "(*piVar23 != -1)" ( (binary_expression "*piVar23 != -1" (pointer_expression "*piVar23" * identifier) != number_literal) )) (compound_statement "{\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }" { (expression_statement "uVar16 = *puVar26;" (assignment_expression "uVar16 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);" (assignment_expression "uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28)" identifier = (pointer_expression "*(undefined8 *)(lVar25 + (long)*piVar23 * 0x28)" * (cast_expression "(undefined8 *)(lVar25 + (long)*piVar23 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + (long)*piVar23 * 0x28)" ( (binary_expression "lVar25 + (long)*piVar23 * 0x28" identifier + (binary_expression "(long)*piVar23 * 0x28" (cast_expression "(long)*piVar23" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar23" * identifier)) * number_literal)) ))))) ;) (expression_statement "uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);" (assignment_expression "uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" identifier (argument_list "(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" ( number_literal , (string_literal ""%X%P: error: ordinal used twice: %d (%s vs %s)\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar20,iVar10,uVar16,uVar21);" (call_expression "FUN_00129380(uVar20,iVar10,uVar16,uVar21)" identifier (argument_list "(uVar20,iVar10,uVar16,uVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_68 = DAT_002b5b64;" (assignment_expression "local_68 = DAT_002b5b64" identifier = identifier) ;) (expression_statement "piVar23 = DAT_002b5b58 + iVar35;" (assignment_expression "piVar23 = DAT_002b5b58 + iVar35" identifier = (binary_expression "DAT_002b5b58 + iVar35" identifier + identifier)) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) })) (expression_statement "*piVar23 = (int)lVar11;" (assignment_expression "*piVar23 = (int)lVar11" (pointer_expression "*piVar23" * identifier) = (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "lVar25 = puVar29[9];" (assignment_expression "lVar25 = puVar29[9]" identifier = (subscript_expression "puVar29[9]" identifier [ number_literal ])) ;) (expression_statement "puVar26 = (undefined8 *)(lVar17 + lVar25);" (assignment_expression "puVar26 = (undefined8 *)(lVar17 + lVar25)" identifier = (cast_expression "(undefined8 *)(lVar17 + lVar25)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar25)" ( (binary_expression "lVar17 + lVar25" identifier + identifier) )))) ;) (expression_statement "pcVar14 = (char *)puVar26[2];" (assignment_expression "pcVar14 = (char *)puVar26[2]" identifier = (cast_expression "(char *)puVar26[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar26[2]" identifier [ number_literal ]))) ;) (if_statement "if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }" if (parenthesized_expression "(pcVar14 == (char *)0x0)" ( (binary_expression "pcVar14 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar14 = (char *)*puVar26;\n      }" { (expression_statement "pcVar14 = (char *)*puVar26;" (assignment_expression "pcVar14 = (char *)*puVar26" identifier = (cast_expression "(char *)*puVar26" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar26" * identifier))) ;) })) (expression_statement "sVar13 = strlen(pcVar14);" (assignment_expression "sVar13 = strlen(pcVar14)" identifier = (call_expression "strlen(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier )))) ;) (expression_statement "iVar27 = iVar27 + 1 + (int)sVar13;" (assignment_expression "iVar27 = iVar27 + 1 + (int)sVar13" identifier = (binary_expression "iVar27 + 1 + (int)sVar13" (binary_expression "iVar27 + 1" identifier + number_literal) + (cast_expression "(int)sVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (if_statement "if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" if (parenthesized_expression "(*(char *)((long)puVar26 + 0x24) != '\0')" ( (binary_expression "*(char *)((long)puVar26 + 0x24) != '\0'" (pointer_expression "*(char *)((long)puVar26 + 0x24)" * (cast_expression "(char *)((long)puVar26 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar26 + 0x24)" ( (binary_expression "(long)puVar26 + 0x24" (cast_expression "(long)puVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" { (expression_statement "sVar13 = strlen((char *)puVar26[1]);" (assignment_expression "sVar13 = strlen((char *)puVar26[1])" identifier = (call_expression "strlen((char *)puVar26[1])" identifier (argument_list "((char *)puVar26[1])" ( (cast_expression "(char *)puVar26[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar26[1]" identifier [ number_literal ])) )))) ;) (expression_statement "iVar27 = iVar27 + 1 + (int)sVar13;" (assignment_expression "iVar27 = iVar27 + 1 + (int)sVar13" identifier = (binary_expression "iVar27 + 1 + (int)sVar13" (binary_expression "iVar27 + 1" identifier + number_literal) + (cast_expression "(int)sVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "pvVar12 = DAT_002b5b80;" (assignment_expression "pvVar12 = DAT_002b5b80" identifier = identifier) ;) (expression_statement "puVar19 = DAT_002b5b58;" (assignment_expression "puVar19 = DAT_002b5b58" identifier = identifier) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar11 < *(int *)(puVar29 + 8))" ( (binary_expression "(int)lVar11 < *(int *)(puVar29 + 8)" (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) )) ;) (expression_statement "iVar10 = local_68;" (assignment_expression "iVar10 = local_68" identifier = identifier) ;) (if_statement "if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;" if (parenthesized_expression "(*(int *)(puVar29 + 8) < 1)" ( (binary_expression "*(int *)(puVar29 + 8) < 1" (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_00152b30;" goto statement_identifier ;)) (expression_statement "piVar23 = (int *)(lVar25 + 0x18);" (assignment_expression "piVar23 = (int *)(lVar25 + 0x18)" identifier = (cast_expression "(int *)(lVar25 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0x18)" ( (binary_expression "lVar25 + 0x18" identifier + number_literal) )))) ;) (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  }" { (if_statement "if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }" if (parenthesized_expression "(*(long *)((long)pvVar12 + lVar25 * 8) == 0)" ( (binary_expression "*(long *)((long)pvVar12 + lVar25 * 8) == 0" (pointer_expression "*(long *)((long)pvVar12 + lVar25 * 8)" * (cast_expression "(long *)((long)pvVar12 + lVar25 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar12 + lVar25 * 8)" ( (binary_expression "(long)pvVar12 + lVar25 * 8" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar25 * 8" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }" { (if_statement "if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }" if (parenthesized_expression "((char)piVar23[3] != '\0')" ( (binary_expression "(char)piVar23[3] != '\0'" (cast_expression "(char)piVar23[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar23[3]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }" { (expression_statement "iVar35 = *piVar23;" (assignment_expression "iVar35 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (goto_statement "goto joined_r0x00152c53;" goto statement_identifier ;) })) }) (else_clause "else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }" else (compound_statement "{\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }" { (expression_statement "iVar35 = *piVar23;" (assignment_expression "iVar35 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (labeled_statement "joined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }" statement_identifier : (if_statement "if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }" if (parenthesized_expression "(iVar35 == -1)" ( (binary_expression "iVar35 == -1" identifier == number_literal) )) (compound_statement "{\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }" { (expression_statement "piVar32 = puVar19 + (iVar10 - local_68);" (assignment_expression "piVar32 = puVar19 + (iVar10 - local_68)" identifier = (binary_expression "puVar19 + (iVar10 - local_68)" identifier + (parenthesized_expression "(iVar10 - local_68)" ( (binary_expression "iVar10 - local_68" identifier - identifier) )))) ;) (if_statement "if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }" if (parenthesized_expression "(*piVar32 != -1)" ( (binary_expression "*piVar32 != -1" (pointer_expression "*piVar32" * identifier) != number_literal) )) (compound_statement "{\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }" { (expression_statement "piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);" (assignment_expression "piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68)" identifier = (binary_expression "puVar19 + (long)iVar10 + (1 - (long)local_68)" (binary_expression "puVar19 + (long)iVar10" identifier + (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) + (parenthesized_expression "(1 - (long)local_68)" ( (binary_expression "1 - (long)local_68" number_literal - (cast_expression "(long)local_68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (do_statement "do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);" do (compound_statement "{\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          }" { (expression_statement "piVar32 = piVar8;" (assignment_expression "piVar32 = piVar8" identifier = identifier) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar32 + 1;" (assignment_expression "piVar8 = piVar32 + 1" identifier = (binary_expression "piVar32 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar32 != -1)" ( (binary_expression "*piVar32 != -1" (pointer_expression "*piVar32" * identifier) != number_literal) )) ;) })) (expression_statement "*piVar32 = (int)lVar25;" (assignment_expression "*piVar32 = (int)lVar25" (pointer_expression "*piVar32" * identifier) = (cast_expression "(int)lVar25" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar23 = iVar10;" (assignment_expression "*piVar23 = iVar10" (pointer_expression "*piVar23" * identifier) = identifier) ;) }))) }))) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 10;" (assignment_expression "piVar23 = piVar23 + 10" identifier = (binary_expression "piVar23 + 10" identifier + number_literal)) ;) (if_statement "if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }" if (parenthesized_expression "(*(int *)(puVar29 + 8) <= (int)lVar25)" ( (binary_expression "*(int *)(puVar29 + 8) <= (int)lVar25" (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) )))) <= (cast_expression "(int)lVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }" { (labeled_statement "LAB_00152b30:\n      iVar35 = DAT_002b5b60;" statement_identifier : (expression_statement "iVar35 = DAT_002b5b60;" (assignment_expression "iVar35 = DAT_002b5b60" identifier = identifier) ;)) (if_statement "if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }" if (parenthesized_expression "((0xffff < DAT_002b5b60) || (0xffff < iVar10))" ( (binary_expression "(0xffff < DAT_002b5b60) || (0xffff < iVar10)" (parenthesized_expression "(0xffff < DAT_002b5b60)" ( (binary_expression "0xffff < DAT_002b5b60" number_literal < identifier) )) || (parenthesized_expression "(0xffff < iVar10)" ( (binary_expression "0xffff < iVar10" number_literal < identifier) ))) )) (compound_statement "{\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }" { (expression_statement "uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5)" identifier (argument_list "(0,"%X%P: error: export ordinal too large: %d\n",5)" ( number_literal , (string_literal ""%X%P: error: export ordinal too large: %d\n"" " string_content escape_sequence ") , number_literal )))) ;) (if_statement "if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }" if (parenthesized_expression "(iVar10 <= iVar35)" ( (binary_expression "iVar10 <= iVar35" identifier <= identifier) )) (compound_statement "{\n          iVar10 = iVar35;\n        }" { (expression_statement "iVar10 = iVar35;" (assignment_expression "iVar10 = iVar35" identifier = identifier) ;) })) (expression_statement "FUN_00129380(uVar16,iVar10);" (call_expression "FUN_00129380(uVar16,iVar10)" identifier (argument_list "(uVar16,iVar10)" ( identifier , identifier ))) ;) })) (expression_statement "iVar10 = DAT_002b5b74;" (assignment_expression "iVar10 = DAT_002b5b74" identifier = identifier) ;) (expression_statement "sVar13 = strlen(DAT_002b5b68);" (assignment_expression "sVar13 = strlen(DAT_002b5b68)" identifier = (call_expression "strlen(DAT_002b5b68)" identifier (argument_list "(DAT_002b5b68)" ( identifier )))) ;) (expression_statement "DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);" (assignment_expression "DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" identifier = (binary_expression "sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" (binary_expression "sVar13 + 1" identifier + number_literal) + (cast_expression "(long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" ( (binary_expression "iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4" (binary_expression "iVar27 + iVar10 * 6 + 0x28" (binary_expression "iVar27 + iVar10 * 6" identifier + (binary_expression "iVar10 * 6" identifier * number_literal)) + number_literal) + (binary_expression "DAT_002b5b7c * 4" identifier * number_literal)) ))))) ;) (expression_statement "FUN_0014d1c0(1);" (call_expression "FUN_0014d1c0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "FUN_00152090(DAT_002b5bd0);" (call_expression "FUN_00152090(DAT_002b5bd0)" identifier (argument_list "(DAT_002b5bd0)" ( identifier ))) ;) (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x001521e2:\n  plVar24 = (long *)*plVar24;" statement_identifier : (expression_statement "plVar24 = (long *)*plVar24;" (assignment_expression "plVar24 = (long *)*plVar24" identifier = (cast_expression "(long *)*plVar24" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar24" * identifier))) ;)) (expression_statement "**(uint **)(lVar25 + 0x28) = *puVar1;" (assignment_expression "**(uint **)(lVar25 + 0x28) = *puVar1" (pointer_expression "**(uint **)(lVar25 + 0x28)" * (pointer_expression "*(uint **)(lVar25 + 0x28)" * (cast_expression "(uint **)(lVar25 + 0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar25 + 0x28)" ( (binary_expression "lVar25 + 0x28" identifier + number_literal) ))))) = (pointer_expression "*puVar1" * identifier)) ;) (goto_statement "goto joined_r0x001521ab;" goto statement_identifier ;) })))
(translation_unit "void pep_dll_build_sections(bfd *abfd,bfd_link_info *info)\n\n{\n  uint *puVar1;\n  bfd_symbol **ppbVar2;\n  def_file_export *pdVar3;\n  char cVar4;\n  bfd *pbVar5;\n  undefined8 uVar6;\n  int iVar7;\n  char cVar8;\n  char cVar9;\n  char cVar10;\n  undefined3 uVar11;\n  bfd_section **ppbVar12;\n  int *piVar13;\n  byte bVar14;\n  int iVar15;\n  long lVar16;\n  char *pcVar17;\n  bfd_symbol *pbVar18;\n  size_t sVar19;\n  char *pcVar20;\n  def_file *pdVar21;\n  char *pcVar22;\n  int *piVar23;\n  def_file_export *pdVar24;\n  long lVar25;\n  int *piVar26;\n  bfd_section *pbVar27;\n  uint uVar28;\n  def_file_aligncomm *pdVar29;\n  def_file_export *pdVar30;\n  int iVar31;\n  def_file *pdVar32;\n  byte *pbVar33;\n  int *piVar34;\n  byte *pbVar35;\n  byte *pbVar36;\n  uint uVar37;\n  int iVar38;\n  bfd_symbol **ppbVar39;\n  bool bVar40;\n  bool bVar41;\n  byte bVar42;\n  uint local_68;\n  int is_dup;\n  \n  bVar42 = 0;\n  pep_dll_id_target(abfd->xvec->name);\n  pep_output_file_set_long_section_names(abfd);\n  if (pep_def_file == (def_file *)0x0) {\n    pep_def_file = def_file_empty();\n  }\n  for (pbVar5 = info->input_bfds; pbVar5 != (bfd *)0x0; pbVar5 = (pbVar5->link).next) {\n    lVar16 = bfd_get_section_by_name(pbVar5);\n    if (lVar16 != 0) {\n      uVar6 = *(undefined8 *)(lVar16 + 0x38);\n      pcVar17 = (char *)xmalloc(uVar6);\n      bfd_get_section_contents(pbVar5,lVar16,pcVar17,0);\n      def_file_add_directive(pep_def_file,pcVar17,(int)uVar6);\n      free(pcVar17);\n    }\n  }\n  pdVar29 = pep_def_file->aligncomms;\njoined_r0x001521ab:\n  if (pdVar29 != (def_file_aligncomm *)0x0) {\n    do {\n      lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);\n      if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      pdVar29 = pdVar29->next;\n      if (pdVar29 == (def_file_aligncomm *)0x0) break;\n    } while( true );\n  }\n  bVar14 = *(byte *)info;\n  if ((bVar14 & 2) == 0) {\n    if (pep_def_file->num_exports != 0) {\n      if (pep_dll_export_everything != 0) goto LAB_00152907;\n      iVar15 = pep_def_file->num_exports;\n      if (pep_dll_kill_ats != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    pdVar32 = pep_def_file;\n    if ((pep_dll_export_everything != 0) && (pep_dll_exclude_all_symbols == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar14 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0)) {\nLAB_00152907:\n      if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar15 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n      if (iVar15 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar14 = *(byte *)info;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (pep_dll_kill_ats == 0) {\nLAB_00152938:\n      uVar28 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n    }\n    else {\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }\n    if (pep_dll_stdcall_aliases == 0) {\nLAB_001525b0:\n      pdVar24 = pdVar32->exports;\n      if ((int)uVar28 < 1) goto LAB_00152f50;\n      iVar15 = 0;\n      iVar31 = 0;\n      pdVar30 = pdVar24;\n      do {\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      } while (iVar31 < pdVar32->num_exports);\nLAB_001526e4:\n      lVar16 = (long)iVar15 << 3;\n    }\n    else {\n      if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar16 = 0;\n      iVar15 = 0;\n    }\n    pdVar32->num_exports = iVar15;\n    exported_symbol_offsets = (bfd_vma *)xmalloc(lVar16);\n    exported_symbol_sections = (bfd_section **)xmalloc((long)pep_def_file->num_exports << 3);\n    pdVar32 = pep_def_file;\n    memset(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3);\n    iVar15 = pdVar32->num_exports;\n    max_ordinal = 0;\n    min_ordinal = 0x10000;\n    count_exported = 0;\n    count_exported_byname = 0;\n    count_with_ordinals = 0;\n    if (0 < iVar15) {\n      lVar16 = 0;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      } while ((int)lVar16 < iVar15);\n    }\njoined_r0x00152ec1:\n    if (iVar15 == 0) goto LAB_00152950;\n  }\n  dll_name = pdVar32->name;\n  if (dll_name == (char *)0x0) {\n    dll_name = abfd->filename;\n    cVar4 = *dll_name;\n    if (cVar4 != '\0') {\n      bVar41 = false;\n      pcVar17 = dll_name;\n      pcVar20 = dll_name;\n      do {\n        pcVar17 = pcVar17 + 1;\n        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }\n        cVar4 = *pcVar17;\n      } while (cVar4 != '\0');\n      if (bVar41) {\n        dll_name = pcVar20;\n      }\n    }\n  }\n  if ((count_with_ordinals == 0) || (max_ordinal <= count_exported)) {\n    min_ordinal = 1;\n    max_ordinal = count_exported;\n  }\n  else {\n    iVar15 = (max_ordinal - count_exported) + 1;\n    if (iVar15 < min_ordinal) {\n      min_ordinal = iVar15;\n    }\n  }\n  export_table_size = (max_ordinal - min_ordinal) + 1;\n  piVar23 = (int *)xmalloc((long)export_table_size << 2);\n  exported_symbols = piVar23;\n  if (0 < export_table_size) {\n    piVar26 = piVar23 + (ulong)(export_table_size - 1) + 1;\n    do {\n      *piVar23 = -1;\n      piVar23 = piVar23 + 1;\n    } while (piVar26 != piVar23);\n  }\n  iVar15 = 0;\n  local_68 = min_ordinal;\n  uVar28 = min_ordinal;\n  if (pep_def_file->num_exports < 1) goto LAB_00152b30;\n  pdVar24 = pep_def_file->exports;\n  lVar16 = 0;\n  iVar15 = 0;\n  pdVar32 = pep_def_file;\n  do {\n    pdVar30 = pdVar24 + lVar16;\n    if ((exported_symbol_sections[lVar16] == (bfd_section *)0x0) && (pdVar30->flag_forward == '\0'))\n    {\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n    }\n    else {\n      iVar31 = pdVar30->ordinal;\n      if (iVar31 != -1) {\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n      pcVar17 = pdVar30->its_name;\n      if (pcVar17 == (char *)0x0) {\n        pcVar17 = pdVar30->name;\n      }\n      sVar19 = strlen(pcVar17);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    if (pdVar30->flag_forward != '\0') {\n      sVar19 = strlen(pdVar30->internal_name);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    ppbVar12 = exported_symbol_sections;\n    piVar23 = exported_symbols;\n    lVar16 = lVar16 + 1;\n  } while ((int)lVar16 < pdVar32->num_exports);\n  uVar28 = local_68;\n  if (pdVar32->num_exports < 1) goto LAB_00152b30;\n  piVar26 = &pdVar24->ordinal;\n  lVar16 = 0;\n  do {\n    if (ppbVar12[lVar16] == (bfd_section *)0x0) {\n      if (*(char *)(piVar26 + 3) != '\0') {\n        uVar37 = *piVar26;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      uVar37 = *piVar26;\njoined_r0x00152c53:\n      if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }\n    }\n    lVar16 = lVar16 + 1;\n    piVar26 = piVar26 + 10;\n    if (pdVar32->num_exports <= (int)lVar16) {\nLAB_00152b30:\n      iVar31 = max_ordinal;\n      if ((0xffff < max_ordinal) || (0xffff < (int)uVar28)) {\n        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }\n        einfo(pcVar17,(ulong)uVar28);\n      }\n      iVar31 = count_exported_byname;\n      sVar19 = strlen(dll_name);\n      edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4);\n      build_filler_bfd(1);\n      pep_output_file_set_long_section_names(filler_bfd);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  pdVar29 = pdVar29->next;\n  **(uint **)(lVar16 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}\n\n" (function_definition "void pep_dll_build_sections(bfd *abfd,bfd_link_info *info)\n\n{\n  uint *puVar1;\n  bfd_symbol **ppbVar2;\n  def_file_export *pdVar3;\n  char cVar4;\n  bfd *pbVar5;\n  undefined8 uVar6;\n  int iVar7;\n  char cVar8;\n  char cVar9;\n  char cVar10;\n  undefined3 uVar11;\n  bfd_section **ppbVar12;\n  int *piVar13;\n  byte bVar14;\n  int iVar15;\n  long lVar16;\n  char *pcVar17;\n  bfd_symbol *pbVar18;\n  size_t sVar19;\n  char *pcVar20;\n  def_file *pdVar21;\n  char *pcVar22;\n  int *piVar23;\n  def_file_export *pdVar24;\n  long lVar25;\n  int *piVar26;\n  bfd_section *pbVar27;\n  uint uVar28;\n  def_file_aligncomm *pdVar29;\n  def_file_export *pdVar30;\n  int iVar31;\n  def_file *pdVar32;\n  byte *pbVar33;\n  int *piVar34;\n  byte *pbVar35;\n  byte *pbVar36;\n  uint uVar37;\n  int iVar38;\n  bfd_symbol **ppbVar39;\n  bool bVar40;\n  bool bVar41;\n  byte bVar42;\n  uint local_68;\n  int is_dup;\n  \n  bVar42 = 0;\n  pep_dll_id_target(abfd->xvec->name);\n  pep_output_file_set_long_section_names(abfd);\n  if (pep_def_file == (def_file *)0x0) {\n    pep_def_file = def_file_empty();\n  }\n  for (pbVar5 = info->input_bfds; pbVar5 != (bfd *)0x0; pbVar5 = (pbVar5->link).next) {\n    lVar16 = bfd_get_section_by_name(pbVar5);\n    if (lVar16 != 0) {\n      uVar6 = *(undefined8 *)(lVar16 + 0x38);\n      pcVar17 = (char *)xmalloc(uVar6);\n      bfd_get_section_contents(pbVar5,lVar16,pcVar17,0);\n      def_file_add_directive(pep_def_file,pcVar17,(int)uVar6);\n      free(pcVar17);\n    }\n  }\n  pdVar29 = pep_def_file->aligncomms;\njoined_r0x001521ab:\n  if (pdVar29 != (def_file_aligncomm *)0x0) {\n    do {\n      lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);\n      if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      pdVar29 = pdVar29->next;\n      if (pdVar29 == (def_file_aligncomm *)0x0) break;\n    } while( true );\n  }\n  bVar14 = *(byte *)info;\n  if ((bVar14 & 2) == 0) {\n    if (pep_def_file->num_exports != 0) {\n      if (pep_dll_export_everything != 0) goto LAB_00152907;\n      iVar15 = pep_def_file->num_exports;\n      if (pep_dll_kill_ats != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    pdVar32 = pep_def_file;\n    if ((pep_dll_export_everything != 0) && (pep_dll_exclude_all_symbols == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar14 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0)) {\nLAB_00152907:\n      if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar15 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n      if (iVar15 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar14 = *(byte *)info;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (pep_dll_kill_ats == 0) {\nLAB_00152938:\n      uVar28 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n    }\n    else {\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }\n    if (pep_dll_stdcall_aliases == 0) {\nLAB_001525b0:\n      pdVar24 = pdVar32->exports;\n      if ((int)uVar28 < 1) goto LAB_00152f50;\n      iVar15 = 0;\n      iVar31 = 0;\n      pdVar30 = pdVar24;\n      do {\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      } while (iVar31 < pdVar32->num_exports);\nLAB_001526e4:\n      lVar16 = (long)iVar15 << 3;\n    }\n    else {\n      if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar16 = 0;\n      iVar15 = 0;\n    }\n    pdVar32->num_exports = iVar15;\n    exported_symbol_offsets = (bfd_vma *)xmalloc(lVar16);\n    exported_symbol_sections = (bfd_section **)xmalloc((long)pep_def_file->num_exports << 3);\n    pdVar32 = pep_def_file;\n    memset(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3);\n    iVar15 = pdVar32->num_exports;\n    max_ordinal = 0;\n    min_ordinal = 0x10000;\n    count_exported = 0;\n    count_exported_byname = 0;\n    count_with_ordinals = 0;\n    if (0 < iVar15) {\n      lVar16 = 0;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      } while ((int)lVar16 < iVar15);\n    }\njoined_r0x00152ec1:\n    if (iVar15 == 0) goto LAB_00152950;\n  }\n  dll_name = pdVar32->name;\n  if (dll_name == (char *)0x0) {\n    dll_name = abfd->filename;\n    cVar4 = *dll_name;\n    if (cVar4 != '\0') {\n      bVar41 = false;\n      pcVar17 = dll_name;\n      pcVar20 = dll_name;\n      do {\n        pcVar17 = pcVar17 + 1;\n        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }\n        cVar4 = *pcVar17;\n      } while (cVar4 != '\0');\n      if (bVar41) {\n        dll_name = pcVar20;\n      }\n    }\n  }\n  if ((count_with_ordinals == 0) || (max_ordinal <= count_exported)) {\n    min_ordinal = 1;\n    max_ordinal = count_exported;\n  }\n  else {\n    iVar15 = (max_ordinal - count_exported) + 1;\n    if (iVar15 < min_ordinal) {\n      min_ordinal = iVar15;\n    }\n  }\n  export_table_size = (max_ordinal - min_ordinal) + 1;\n  piVar23 = (int *)xmalloc((long)export_table_size << 2);\n  exported_symbols = piVar23;\n  if (0 < export_table_size) {\n    piVar26 = piVar23 + (ulong)(export_table_size - 1) + 1;\n    do {\n      *piVar23 = -1;\n      piVar23 = piVar23 + 1;\n    } while (piVar26 != piVar23);\n  }\n  iVar15 = 0;\n  local_68 = min_ordinal;\n  uVar28 = min_ordinal;\n  if (pep_def_file->num_exports < 1) goto LAB_00152b30;\n  pdVar24 = pep_def_file->exports;\n  lVar16 = 0;\n  iVar15 = 0;\n  pdVar32 = pep_def_file;\n  do {\n    pdVar30 = pdVar24 + lVar16;\n    if ((exported_symbol_sections[lVar16] == (bfd_section *)0x0) && (pdVar30->flag_forward == '\0'))\n    {\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n    }\n    else {\n      iVar31 = pdVar30->ordinal;\n      if (iVar31 != -1) {\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n      pcVar17 = pdVar30->its_name;\n      if (pcVar17 == (char *)0x0) {\n        pcVar17 = pdVar30->name;\n      }\n      sVar19 = strlen(pcVar17);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    if (pdVar30->flag_forward != '\0') {\n      sVar19 = strlen(pdVar30->internal_name);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    ppbVar12 = exported_symbol_sections;\n    piVar23 = exported_symbols;\n    lVar16 = lVar16 + 1;\n  } while ((int)lVar16 < pdVar32->num_exports);\n  uVar28 = local_68;\n  if (pdVar32->num_exports < 1) goto LAB_00152b30;\n  piVar26 = &pdVar24->ordinal;\n  lVar16 = 0;\n  do {\n    if (ppbVar12[lVar16] == (bfd_section *)0x0) {\n      if (*(char *)(piVar26 + 3) != '\0') {\n        uVar37 = *piVar26;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      uVar37 = *piVar26;\njoined_r0x00152c53:\n      if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }\n    }\n    lVar16 = lVar16 + 1;\n    piVar26 = piVar26 + 10;\n    if (pdVar32->num_exports <= (int)lVar16) {\nLAB_00152b30:\n      iVar31 = max_ordinal;\n      if ((0xffff < max_ordinal) || (0xffff < (int)uVar28)) {\n        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }\n        einfo(pcVar17,(ulong)uVar28);\n      }\n      iVar31 = count_exported_byname;\n      sVar19 = strlen(dll_name);\n      edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4);\n      build_filler_bfd(1);\n      pep_output_file_set_long_section_names(filler_bfd);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  pdVar29 = pdVar29->next;\n  **(uint **)(lVar16 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}" primitive_type (function_declarator "pep_dll_build_sections(bfd *abfd,bfd_link_info *info)" identifier (parameter_list "(bfd *abfd,bfd_link_info *info)" ( (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) , (parameter_declaration "bfd_link_info *info" type_identifier (pointer_declarator "*info" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  bfd_symbol **ppbVar2;\n  def_file_export *pdVar3;\n  char cVar4;\n  bfd *pbVar5;\n  undefined8 uVar6;\n  int iVar7;\n  char cVar8;\n  char cVar9;\n  char cVar10;\n  undefined3 uVar11;\n  bfd_section **ppbVar12;\n  int *piVar13;\n  byte bVar14;\n  int iVar15;\n  long lVar16;\n  char *pcVar17;\n  bfd_symbol *pbVar18;\n  size_t sVar19;\n  char *pcVar20;\n  def_file *pdVar21;\n  char *pcVar22;\n  int *piVar23;\n  def_file_export *pdVar24;\n  long lVar25;\n  int *piVar26;\n  bfd_section *pbVar27;\n  uint uVar28;\n  def_file_aligncomm *pdVar29;\n  def_file_export *pdVar30;\n  int iVar31;\n  def_file *pdVar32;\n  byte *pbVar33;\n  int *piVar34;\n  byte *pbVar35;\n  byte *pbVar36;\n  uint uVar37;\n  int iVar38;\n  bfd_symbol **ppbVar39;\n  bool bVar40;\n  bool bVar41;\n  byte bVar42;\n  uint local_68;\n  int is_dup;\n  \n  bVar42 = 0;\n  pep_dll_id_target(abfd->xvec->name);\n  pep_output_file_set_long_section_names(abfd);\n  if (pep_def_file == (def_file *)0x0) {\n    pep_def_file = def_file_empty();\n  }\n  for (pbVar5 = info->input_bfds; pbVar5 != (bfd *)0x0; pbVar5 = (pbVar5->link).next) {\n    lVar16 = bfd_get_section_by_name(pbVar5);\n    if (lVar16 != 0) {\n      uVar6 = *(undefined8 *)(lVar16 + 0x38);\n      pcVar17 = (char *)xmalloc(uVar6);\n      bfd_get_section_contents(pbVar5,lVar16,pcVar17,0);\n      def_file_add_directive(pep_def_file,pcVar17,(int)uVar6);\n      free(pcVar17);\n    }\n  }\n  pdVar29 = pep_def_file->aligncomms;\njoined_r0x001521ab:\n  if (pdVar29 != (def_file_aligncomm *)0x0) {\n    do {\n      lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);\n      if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      pdVar29 = pdVar29->next;\n      if (pdVar29 == (def_file_aligncomm *)0x0) break;\n    } while( true );\n  }\n  bVar14 = *(byte *)info;\n  if ((bVar14 & 2) == 0) {\n    if (pep_def_file->num_exports != 0) {\n      if (pep_dll_export_everything != 0) goto LAB_00152907;\n      iVar15 = pep_def_file->num_exports;\n      if (pep_dll_kill_ats != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    pdVar32 = pep_def_file;\n    if ((pep_dll_export_everything != 0) && (pep_dll_exclude_all_symbols == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar14 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0)) {\nLAB_00152907:\n      if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar15 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n      if (iVar15 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar14 = *(byte *)info;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (pep_dll_kill_ats == 0) {\nLAB_00152938:\n      uVar28 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n    }\n    else {\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }\n    if (pep_dll_stdcall_aliases == 0) {\nLAB_001525b0:\n      pdVar24 = pdVar32->exports;\n      if ((int)uVar28 < 1) goto LAB_00152f50;\n      iVar15 = 0;\n      iVar31 = 0;\n      pdVar30 = pdVar24;\n      do {\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      } while (iVar31 < pdVar32->num_exports);\nLAB_001526e4:\n      lVar16 = (long)iVar15 << 3;\n    }\n    else {\n      if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar16 = 0;\n      iVar15 = 0;\n    }\n    pdVar32->num_exports = iVar15;\n    exported_symbol_offsets = (bfd_vma *)xmalloc(lVar16);\n    exported_symbol_sections = (bfd_section **)xmalloc((long)pep_def_file->num_exports << 3);\n    pdVar32 = pep_def_file;\n    memset(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3);\n    iVar15 = pdVar32->num_exports;\n    max_ordinal = 0;\n    min_ordinal = 0x10000;\n    count_exported = 0;\n    count_exported_byname = 0;\n    count_with_ordinals = 0;\n    if (0 < iVar15) {\n      lVar16 = 0;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      } while ((int)lVar16 < iVar15);\n    }\njoined_r0x00152ec1:\n    if (iVar15 == 0) goto LAB_00152950;\n  }\n  dll_name = pdVar32->name;\n  if (dll_name == (char *)0x0) {\n    dll_name = abfd->filename;\n    cVar4 = *dll_name;\n    if (cVar4 != '\0') {\n      bVar41 = false;\n      pcVar17 = dll_name;\n      pcVar20 = dll_name;\n      do {\n        pcVar17 = pcVar17 + 1;\n        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }\n        cVar4 = *pcVar17;\n      } while (cVar4 != '\0');\n      if (bVar41) {\n        dll_name = pcVar20;\n      }\n    }\n  }\n  if ((count_with_ordinals == 0) || (max_ordinal <= count_exported)) {\n    min_ordinal = 1;\n    max_ordinal = count_exported;\n  }\n  else {\n    iVar15 = (max_ordinal - count_exported) + 1;\n    if (iVar15 < min_ordinal) {\n      min_ordinal = iVar15;\n    }\n  }\n  export_table_size = (max_ordinal - min_ordinal) + 1;\n  piVar23 = (int *)xmalloc((long)export_table_size << 2);\n  exported_symbols = piVar23;\n  if (0 < export_table_size) {\n    piVar26 = piVar23 + (ulong)(export_table_size - 1) + 1;\n    do {\n      *piVar23 = -1;\n      piVar23 = piVar23 + 1;\n    } while (piVar26 != piVar23);\n  }\n  iVar15 = 0;\n  local_68 = min_ordinal;\n  uVar28 = min_ordinal;\n  if (pep_def_file->num_exports < 1) goto LAB_00152b30;\n  pdVar24 = pep_def_file->exports;\n  lVar16 = 0;\n  iVar15 = 0;\n  pdVar32 = pep_def_file;\n  do {\n    pdVar30 = pdVar24 + lVar16;\n    if ((exported_symbol_sections[lVar16] == (bfd_section *)0x0) && (pdVar30->flag_forward == '\0'))\n    {\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n    }\n    else {\n      iVar31 = pdVar30->ordinal;\n      if (iVar31 != -1) {\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n      pcVar17 = pdVar30->its_name;\n      if (pcVar17 == (char *)0x0) {\n        pcVar17 = pdVar30->name;\n      }\n      sVar19 = strlen(pcVar17);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    if (pdVar30->flag_forward != '\0') {\n      sVar19 = strlen(pdVar30->internal_name);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    ppbVar12 = exported_symbol_sections;\n    piVar23 = exported_symbols;\n    lVar16 = lVar16 + 1;\n  } while ((int)lVar16 < pdVar32->num_exports);\n  uVar28 = local_68;\n  if (pdVar32->num_exports < 1) goto LAB_00152b30;\n  piVar26 = &pdVar24->ordinal;\n  lVar16 = 0;\n  do {\n    if (ppbVar12[lVar16] == (bfd_section *)0x0) {\n      if (*(char *)(piVar26 + 3) != '\0') {\n        uVar37 = *piVar26;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      uVar37 = *piVar26;\njoined_r0x00152c53:\n      if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }\n    }\n    lVar16 = lVar16 + 1;\n    piVar26 = piVar26 + 10;\n    if (pdVar32->num_exports <= (int)lVar16) {\nLAB_00152b30:\n      iVar31 = max_ordinal;\n      if ((0xffff < max_ordinal) || (0xffff < (int)uVar28)) {\n        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }\n        einfo(pcVar17,(ulong)uVar28);\n      }\n      iVar31 = count_exported_byname;\n      sVar19 = strlen(dll_name);\n      edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4);\n      build_filler_bfd(1);\n      pep_output_file_set_long_section_names(filler_bfd);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  pdVar29 = pdVar29->next;\n  **(uint **)(lVar16 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "bfd_symbol **ppbVar2;" type_identifier (pointer_declarator "**ppbVar2" * (pointer_declarator "*ppbVar2" * identifier)) ;) (declaration "def_file_export *pdVar3;" type_identifier (pointer_declarator "*pdVar3" * identifier) ;) (declaration "char cVar4;" primitive_type identifier ;) (declaration "bfd *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "char cVar8;" primitive_type identifier ;) (declaration "char cVar9;" primitive_type identifier ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "undefined3 uVar11;" type_identifier identifier ;) (declaration "bfd_section **ppbVar12;" type_identifier (pointer_declarator "**ppbVar12" * (pointer_declarator "*ppbVar12" * identifier)) ;) (declaration "int *piVar13;" primitive_type (pointer_declarator "*piVar13" * identifier) ;) (declaration "byte bVar14;" type_identifier identifier ;) (declaration "int iVar15;" primitive_type identifier ;) (declaration "long lVar16;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar17;" primitive_type (pointer_declarator "*pcVar17" * identifier) ;) (declaration "bfd_symbol *pbVar18;" type_identifier (pointer_declarator "*pbVar18" * identifier) ;) (declaration "size_t sVar19;" primitive_type identifier ;) (declaration "char *pcVar20;" primitive_type (pointer_declarator "*pcVar20" * identifier) ;) (declaration "def_file *pdVar21;" type_identifier (pointer_declarator "*pdVar21" * identifier) ;) (declaration "char *pcVar22;" primitive_type (pointer_declarator "*pcVar22" * identifier) ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "def_file_export *pdVar24;" type_identifier (pointer_declarator "*pdVar24" * identifier) ;) (declaration "long lVar25;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar26;" primitive_type (pointer_declarator "*piVar26" * identifier) ;) (declaration "bfd_section *pbVar27;" type_identifier (pointer_declarator "*pbVar27" * identifier) ;) (declaration "uint uVar28;" type_identifier identifier ;) (declaration "def_file_aligncomm *pdVar29;" type_identifier (pointer_declarator "*pdVar29" * identifier) ;) (declaration "def_file_export *pdVar30;" type_identifier (pointer_declarator "*pdVar30" * identifier) ;) (declaration "int iVar31;" primitive_type identifier ;) (declaration "def_file *pdVar32;" type_identifier (pointer_declarator "*pdVar32" * identifier) ;) (declaration "byte *pbVar33;" type_identifier (pointer_declarator "*pbVar33" * identifier) ;) (declaration "int *piVar34;" primitive_type (pointer_declarator "*piVar34" * identifier) ;) (declaration "byte *pbVar35;" type_identifier (pointer_declarator "*pbVar35" * identifier) ;) (declaration "byte *pbVar36;" type_identifier (pointer_declarator "*pbVar36" * identifier) ;) (declaration "uint uVar37;" type_identifier identifier ;) (declaration "int iVar38;" primitive_type identifier ;) (declaration "bfd_symbol **ppbVar39;" type_identifier (pointer_declarator "**ppbVar39" * (pointer_declarator "*ppbVar39" * identifier)) ;) (declaration "bool bVar40;" primitive_type identifier ;) (declaration "bool bVar41;" primitive_type identifier ;) (declaration "byte bVar42;" type_identifier identifier ;) (declaration "uint local_68;" type_identifier identifier ;) (declaration "int is_dup;" primitive_type identifier ;) (expression_statement "bVar42 = 0;" (assignment_expression "bVar42 = 0" identifier = number_literal) ;) (expression_statement "pep_dll_id_target(abfd->xvec->name);" (call_expression "pep_dll_id_target(abfd->xvec->name)" identifier (argument_list "(abfd->xvec->name)" ( (field_expression "abfd->xvec->name" (field_expression "abfd->xvec" identifier -> field_identifier) -> field_identifier) ))) ;) (expression_statement "pep_output_file_set_long_section_names(abfd);" (call_expression "pep_output_file_set_long_section_names(abfd)" identifier (argument_list "(abfd)" ( identifier ))) ;) (if_statement "if (pep_def_file == (def_file *)0x0) {\n    pep_def_file = def_file_empty();\n  }" if (parenthesized_expression "(pep_def_file == (def_file *)0x0)" ( (binary_expression "pep_def_file == (def_file *)0x0" identifier == (cast_expression "(def_file *)0x0" ( (type_descriptor "def_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    pep_def_file = def_file_empty();\n  }" { (expression_statement "pep_def_file = def_file_empty();" (assignment_expression "pep_def_file = def_file_empty()" identifier = (call_expression "def_file_empty()" identifier (argument_list "()" ( )))) ;) })) (for_statement "for (pbVar5 = info->input_bfds; pbVar5 != (bfd *)0x0; pbVar5 = (pbVar5->link).next) {\n    lVar16 = bfd_get_section_by_name(pbVar5);\n    if (lVar16 != 0) {\n      uVar6 = *(undefined8 *)(lVar16 + 0x38);\n      pcVar17 = (char *)xmalloc(uVar6);\n      bfd_get_section_contents(pbVar5,lVar16,pcVar17,0);\n      def_file_add_directive(pep_def_file,pcVar17,(int)uVar6);\n      free(pcVar17);\n    }\n  }" for ( (assignment_expression "pbVar5 = info->input_bfds" identifier = (field_expression "info->input_bfds" identifier -> field_identifier)) ; (binary_expression "pbVar5 != (bfd *)0x0" identifier != (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pbVar5 = (pbVar5->link).next" identifier = (field_expression "(pbVar5->link).next" (parenthesized_expression "(pbVar5->link)" ( (field_expression "pbVar5->link" identifier -> field_identifier) )) . field_identifier)) ) (compound_statement "{\n    lVar16 = bfd_get_section_by_name(pbVar5);\n    if (lVar16 != 0) {\n      uVar6 = *(undefined8 *)(lVar16 + 0x38);\n      pcVar17 = (char *)xmalloc(uVar6);\n      bfd_get_section_contents(pbVar5,lVar16,pcVar17,0);\n      def_file_add_directive(pep_def_file,pcVar17,(int)uVar6);\n      free(pcVar17);\n    }\n  }" { (expression_statement "lVar16 = bfd_get_section_by_name(pbVar5);" (assignment_expression "lVar16 = bfd_get_section_by_name(pbVar5)" identifier = (call_expression "bfd_get_section_by_name(pbVar5)" identifier (argument_list "(pbVar5)" ( identifier )))) ;) (if_statement "if (lVar16 != 0) {\n      uVar6 = *(undefined8 *)(lVar16 + 0x38);\n      pcVar17 = (char *)xmalloc(uVar6);\n      bfd_get_section_contents(pbVar5,lVar16,pcVar17,0);\n      def_file_add_directive(pep_def_file,pcVar17,(int)uVar6);\n      free(pcVar17);\n    }" if (parenthesized_expression "(lVar16 != 0)" ( (binary_expression "lVar16 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar6 = *(undefined8 *)(lVar16 + 0x38);\n      pcVar17 = (char *)xmalloc(uVar6);\n      bfd_get_section_contents(pbVar5,lVar16,pcVar17,0);\n      def_file_add_directive(pep_def_file,pcVar17,(int)uVar6);\n      free(pcVar17);\n    }" { (expression_statement "uVar6 = *(undefined8 *)(lVar16 + 0x38);" (assignment_expression "uVar6 = *(undefined8 *)(lVar16 + 0x38)" identifier = (pointer_expression "*(undefined8 *)(lVar16 + 0x38)" * (cast_expression "(undefined8 *)(lVar16 + 0x38)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar16 + 0x38)" ( (binary_expression "lVar16 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "pcVar17 = (char *)xmalloc(uVar6);" (assignment_expression "pcVar17 = (char *)xmalloc(uVar6)" identifier = (cast_expression "(char *)xmalloc(uVar6)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))))) ;) (expression_statement "bfd_get_section_contents(pbVar5,lVar16,pcVar17,0);" (call_expression "bfd_get_section_contents(pbVar5,lVar16,pcVar17,0)" identifier (argument_list "(pbVar5,lVar16,pcVar17,0)" ( identifier , identifier , identifier , number_literal ))) ;) (expression_statement "def_file_add_directive(pep_def_file,pcVar17,(int)uVar6);" (call_expression "def_file_add_directive(pep_def_file,pcVar17,(int)uVar6)" identifier (argument_list "(pep_def_file,pcVar17,(int)uVar6)" ( identifier , identifier , (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) ))) ;) (expression_statement "free(pcVar17);" (call_expression "free(pcVar17)" identifier (argument_list "(pcVar17)" ( identifier ))) ;) })) })) (expression_statement "pdVar29 = pep_def_file->aligncomms;" (assignment_expression "pdVar29 = pep_def_file->aligncomms" identifier = (field_expression "pep_def_file->aligncomms" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x001521ab:\n  if (pdVar29 != (def_file_aligncomm *)0x0) {\n    do {\n      lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);\n      if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      pdVar29 = pdVar29->next;\n      if (pdVar29 == (def_file_aligncomm *)0x0) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (pdVar29 != (def_file_aligncomm *)0x0) {\n    do {\n      lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);\n      if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      pdVar29 = pdVar29->next;\n      if (pdVar29 == (def_file_aligncomm *)0x0) break;\n    } while( true );\n  }" if (parenthesized_expression "(pdVar29 != (def_file_aligncomm *)0x0)" ( (binary_expression "pdVar29 != (def_file_aligncomm *)0x0" identifier != (cast_expression "(def_file_aligncomm *)0x0" ( (type_descriptor "def_file_aligncomm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);\n      if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      pdVar29 = pdVar29->next;\n      if (pdVar29 == (def_file_aligncomm *)0x0) break;\n    } while( true );\n  }" { (do_statement "do {\n      lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);\n      if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      pdVar29 = pdVar29->next;\n      if (pdVar29 == (def_file_aligncomm *)0x0) break;\n    } while( true );" do (compound_statement "{\n      lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);\n      if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      pdVar29 = pdVar29->next;\n      if (pdVar29 == (def_file_aligncomm *)0x0) break;\n    }" { (expression_statement "lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0);" (assignment_expression "lVar16 = bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0)" identifier = (call_expression "bfd_link_hash_lookup(info->hash,pdVar29->symbol_name,0,0)" identifier (argument_list "(info->hash,pdVar29->symbol_name,0,0)" ( (field_expression "info->hash" identifier -> field_identifier) , (field_expression "pdVar29->symbol_name" identifier -> field_identifier) , number_literal , number_literal )))) ;) (if_statement "if ((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')) {\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }" if (parenthesized_expression "((lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05'))" ( (binary_expression "(lVar16 != 0) && (*(char *)(lVar16 + 0x18) == '\x05')" (parenthesized_expression "(lVar16 != 0)" ( (binary_expression "lVar16 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(lVar16 + 0x18) == '\x05')" ( (binary_expression "*(char *)(lVar16 + 0x18) == '\x05'" (pointer_expression "*(char *)(lVar16 + 0x18)" * (cast_expression "(char *)(lVar16 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar16 + 0x18)" ( (binary_expression "lVar16 + 0x18" identifier + number_literal) )))) == (char_literal "'\x05'" ' escape_sequence ')) ))) )) (compound_statement "{\n        puVar1 = &pdVar29->alignment;\n        if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }" { (expression_statement "puVar1 = &pdVar29->alignment;" (assignment_expression "puVar1 = &pdVar29->alignment" identifier = (pointer_expression "&pdVar29->alignment" & (field_expression "pdVar29->alignment" identifier -> field_identifier))) ;) (if_statement "if (**(uint **)(lVar16 + 0x28) < *puVar1) goto code_r0x001521e2;" if (parenthesized_expression "(**(uint **)(lVar16 + 0x28) < *puVar1)" ( (binary_expression "**(uint **)(lVar16 + 0x28) < *puVar1" (pointer_expression "**(uint **)(lVar16 + 0x28)" * (pointer_expression "*(uint **)(lVar16 + 0x28)" * (cast_expression "(uint **)(lVar16 + 0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar16 + 0x28)" ( (binary_expression "lVar16 + 0x28" identifier + number_literal) ))))) < (pointer_expression "*puVar1" * identifier)) )) (goto_statement "goto code_r0x001521e2;" goto statement_identifier ;)) })) (expression_statement "pdVar29 = pdVar29->next;" (assignment_expression "pdVar29 = pdVar29->next" identifier = (field_expression "pdVar29->next" identifier -> field_identifier)) ;) (if_statement "if (pdVar29 == (def_file_aligncomm *)0x0) break;" if (parenthesized_expression "(pdVar29 == (def_file_aligncomm *)0x0)" ( (binary_expression "pdVar29 == (def_file_aligncomm *)0x0" identifier == (cast_expression "(def_file_aligncomm *)0x0" ( (type_descriptor "def_file_aligncomm *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "bVar14 = *(byte *)info;" (assignment_expression "bVar14 = *(byte *)info" identifier = (pointer_expression "*(byte *)info" * (cast_expression "(byte *)info" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if ((bVar14 & 2) == 0) {\n    if (pep_def_file->num_exports != 0) {\n      if (pep_dll_export_everything != 0) goto LAB_00152907;\n      iVar15 = pep_def_file->num_exports;\n      if (pep_dll_kill_ats != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    pdVar32 = pep_def_file;\n    if ((pep_dll_export_everything != 0) && (pep_dll_exclude_all_symbols == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar14 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0)) {\nLAB_00152907:\n      if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar15 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n      if (iVar15 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar14 = *(byte *)info;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (pep_dll_kill_ats == 0) {\nLAB_00152938:\n      uVar28 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n    }\n    else {\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }\n    if (pep_dll_stdcall_aliases == 0) {\nLAB_001525b0:\n      pdVar24 = pdVar32->exports;\n      if ((int)uVar28 < 1) goto LAB_00152f50;\n      iVar15 = 0;\n      iVar31 = 0;\n      pdVar30 = pdVar24;\n      do {\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      } while (iVar31 < pdVar32->num_exports);\nLAB_001526e4:\n      lVar16 = (long)iVar15 << 3;\n    }\n    else {\n      if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar16 = 0;\n      iVar15 = 0;\n    }\n    pdVar32->num_exports = iVar15;\n    exported_symbol_offsets = (bfd_vma *)xmalloc(lVar16);\n    exported_symbol_sections = (bfd_section **)xmalloc((long)pep_def_file->num_exports << 3);\n    pdVar32 = pep_def_file;\n    memset(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3);\n    iVar15 = pdVar32->num_exports;\n    max_ordinal = 0;\n    min_ordinal = 0x10000;\n    count_exported = 0;\n    count_exported_byname = 0;\n    count_with_ordinals = 0;\n    if (0 < iVar15) {\n      lVar16 = 0;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      } while ((int)lVar16 < iVar15);\n    }\njoined_r0x00152ec1:\n    if (iVar15 == 0) goto LAB_00152950;\n  }" if (parenthesized_expression "((bVar14 & 2) == 0)" ( (binary_expression "(bVar14 & 2) == 0" (parenthesized_expression "(bVar14 & 2)" ( (binary_expression "bVar14 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (pep_def_file->num_exports != 0) {\n      if (pep_dll_export_everything != 0) goto LAB_00152907;\n      iVar15 = pep_def_file->num_exports;\n      if (pep_dll_kill_ats != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    pdVar32 = pep_def_file;\n    if ((pep_dll_export_everything != 0) && (pep_dll_exclude_all_symbols == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar14 & 1) == 0) {\n      return;\n    }\n  }" { (if_statement "if (pep_def_file->num_exports != 0) {\n      if (pep_dll_export_everything != 0) goto LAB_00152907;\n      iVar15 = pep_def_file->num_exports;\n      if (pep_dll_kill_ats != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }" if (parenthesized_expression "(pep_def_file->num_exports != 0)" ( (binary_expression "pep_def_file->num_exports != 0" (field_expression "pep_def_file->num_exports" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n      if (pep_dll_export_everything != 0) goto LAB_00152907;\n      iVar15 = pep_def_file->num_exports;\n      if (pep_dll_kill_ats != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }" { (if_statement "if (pep_dll_export_everything != 0) goto LAB_00152907;" if (parenthesized_expression "(pep_dll_export_everything != 0)" ( (binary_expression "pep_dll_export_everything != 0" identifier != number_literal) )) (goto_statement "goto LAB_00152907;" goto statement_identifier ;)) (expression_statement "iVar15 = pep_def_file->num_exports;" (assignment_expression "iVar15 = pep_def_file->num_exports" identifier = (field_expression "pep_def_file->num_exports" identifier -> field_identifier)) ;) (if_statement "if (pep_dll_kill_ats != 0) goto LAB_001523cf;" if (parenthesized_expression "(pep_dll_kill_ats != 0)" ( (binary_expression "pep_dll_kill_ats != 0" identifier != number_literal) )) (goto_statement "goto LAB_001523cf;" goto statement_identifier ;)) (goto_statement "goto LAB_00152938;" goto statement_identifier ;) })) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (if_statement "if ((pep_dll_export_everything != 0) && (pep_dll_exclude_all_symbols == 0)) goto LAB_0015222e;" if (parenthesized_expression "((pep_dll_export_everything != 0) && (pep_dll_exclude_all_symbols == 0))" ( (binary_expression "(pep_dll_export_everything != 0) && (pep_dll_exclude_all_symbols == 0)" (parenthesized_expression "(pep_dll_export_everything != 0)" ( (binary_expression "pep_dll_export_everything != 0" identifier != number_literal) )) && (parenthesized_expression "(pep_dll_exclude_all_symbols == 0)" ( (binary_expression "pep_dll_exclude_all_symbols == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_0015222e;" goto statement_identifier ;)) (labeled_statement "LAB_00152955:\n    if ((bVar14 & 1) == 0) {\n      return;\n    }" statement_identifier : (if_statement "if ((bVar14 & 1) == 0) {\n      return;\n    }" if (parenthesized_expression "((bVar14 & 1) == 0)" ( (binary_expression "(bVar14 & 1) == 0" (parenthesized_expression "(bVar14 & 1)" ( (binary_expression "bVar14 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) }))) }) (else_clause "else {\n    if ((pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0)) {\nLAB_00152907:\n      if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar15 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n      if (iVar15 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar14 = *(byte *)info;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (pep_dll_kill_ats == 0) {\nLAB_00152938:\n      uVar28 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n    }\n    else {\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }\n    if (pep_dll_stdcall_aliases == 0) {\nLAB_001525b0:\n      pdVar24 = pdVar32->exports;\n      if ((int)uVar28 < 1) goto LAB_00152f50;\n      iVar15 = 0;\n      iVar31 = 0;\n      pdVar30 = pdVar24;\n      do {\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      } while (iVar31 < pdVar32->num_exports);\nLAB_001526e4:\n      lVar16 = (long)iVar15 << 3;\n    }\n    else {\n      if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar16 = 0;\n      iVar15 = 0;\n    }\n    pdVar32->num_exports = iVar15;\n    exported_symbol_offsets = (bfd_vma *)xmalloc(lVar16);\n    exported_symbol_sections = (bfd_section **)xmalloc((long)pep_def_file->num_exports << 3);\n    pdVar32 = pep_def_file;\n    memset(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3);\n    iVar15 = pdVar32->num_exports;\n    max_ordinal = 0;\n    min_ordinal = 0x10000;\n    count_exported = 0;\n    count_exported_byname = 0;\n    count_with_ordinals = 0;\n    if (0 < iVar15) {\n      lVar16 = 0;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      } while ((int)lVar16 < iVar15);\n    }\njoined_r0x00152ec1:\n    if (iVar15 == 0) goto LAB_00152950;\n  }" else (compound_statement "{\n    if ((pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0)) {\nLAB_00152907:\n      if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar15 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n      if (iVar15 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar14 = *(byte *)info;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (pep_dll_kill_ats == 0) {\nLAB_00152938:\n      uVar28 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n    }\n    else {\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }\n    if (pep_dll_stdcall_aliases == 0) {\nLAB_001525b0:\n      pdVar24 = pdVar32->exports;\n      if ((int)uVar28 < 1) goto LAB_00152f50;\n      iVar15 = 0;\n      iVar31 = 0;\n      pdVar30 = pdVar24;\n      do {\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      } while (iVar31 < pdVar32->num_exports);\nLAB_001526e4:\n      lVar16 = (long)iVar15 << 3;\n    }\n    else {\n      if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar16 = 0;\n      iVar15 = 0;\n    }\n    pdVar32->num_exports = iVar15;\n    exported_symbol_offsets = (bfd_vma *)xmalloc(lVar16);\n    exported_symbol_sections = (bfd_section **)xmalloc((long)pep_def_file->num_exports << 3);\n    pdVar32 = pep_def_file;\n    memset(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3);\n    iVar15 = pdVar32->num_exports;\n    max_ordinal = 0;\n    min_ordinal = 0x10000;\n    count_exported = 0;\n    count_exported_byname = 0;\n    count_with_ordinals = 0;\n    if (0 < iVar15) {\n      lVar16 = 0;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      } while ((int)lVar16 < iVar15);\n    }\njoined_r0x00152ec1:\n    if (iVar15 == 0) goto LAB_00152950;\n  }" { (if_statement "if ((pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0)) {\nLAB_00152907:\n      if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar15 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n      if (iVar15 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar14 = *(byte *)info;\n      goto LAB_00152955;\n    }" if (parenthesized_expression "((pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0))" ( (binary_expression "(pep_dll_export_everything != 0) || (iVar15 = pep_def_file->num_exports, iVar15 == 0)" (parenthesized_expression "(pep_dll_export_everything != 0)" ( (binary_expression "pep_dll_export_everything != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar15 = pep_def_file->num_exports, iVar15 == 0)" ( (comma_expression "iVar15 = pep_def_file->num_exports, iVar15 == 0" (assignment_expression "iVar15 = pep_def_file->num_exports" identifier = (field_expression "pep_def_file->num_exports" identifier -> field_identifier)) , (binary_expression "iVar15 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_00152907:\n      if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar15 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n      if (iVar15 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar14 = *(byte *)info;\n      goto LAB_00152955;\n    }" { (labeled_statement "LAB_00152907:\n      if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }" statement_identifier : (if_statement "if (pep_dll_exclude_all_symbols == 0) {\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }" if (parenthesized_expression "(pep_dll_exclude_all_symbols == 0)" ( (binary_expression "pep_dll_exclude_all_symbols == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0015222e:\n        pbVar5 = info->input_bfds;\n        while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }\n        pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        einfo(pcVar17);\n        iVar15 = pep_def_file->num_exports;\n        pdVar32 = pep_def_file;\n        goto joined_r0x00152ec1;\n      }" { (labeled_statement "LAB_0015222e:\n        pbVar5 = info->input_bfds;" statement_identifier : (expression_statement "pbVar5 = info->input_bfds;" (assignment_expression "pbVar5 = info->input_bfds" identifier = (field_expression "info->input_bfds" identifier -> field_identifier)) ;)) (while_statement "while( true ) {\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;\n          iVar15 = bfd_generic_link_read_symbols(pbVar5);\n          if (iVar15 == 0) break;\n          ppbVar39 = pbVar5->outsymbols;\n          if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }\n          pbVar5 = (pbVar5->link).next;\n        }" { (if_statement "if (pbVar5 == (bfd *)0x0) goto LAB_001523aa;" if (parenthesized_expression "(pbVar5 == (bfd *)0x0)" ( (binary_expression "pbVar5 == (bfd *)0x0" identifier == (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001523aa;" goto statement_identifier ;)) (expression_statement "iVar15 = bfd_generic_link_read_symbols(pbVar5);" (assignment_expression "iVar15 = bfd_generic_link_read_symbols(pbVar5)" identifier = (call_expression "bfd_generic_link_read_symbols(pbVar5)" identifier (argument_list "(pbVar5)" ( identifier )))) ;) (if_statement "if (iVar15 == 0) break;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "ppbVar39 = pbVar5->outsymbols;" (assignment_expression "ppbVar39 = pbVar5->outsymbols" identifier = (field_expression "pbVar5->outsymbols" identifier -> field_identifier)) ;) (if_statement "if (0 < (int)pbVar5->symcount) {\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }" if (parenthesized_expression "(0 < (int)pbVar5->symcount)" ( (binary_expression "0 < (int)pbVar5->symcount" number_literal < (cast_expression "(int)pbVar5->symcount" ( (type_descriptor "int" primitive_type) ) (field_expression "pbVar5->symcount" identifier -> field_identifier))) )) (compound_statement "{\n            ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;\n            do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);\n          }" { (expression_statement "ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1;" (assignment_expression "ppbVar2 = ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1" identifier = (binary_expression "ppbVar39 + (ulong)(pbVar5->symcount - 1) + 1" (binary_expression "ppbVar39 + (ulong)(pbVar5->symcount - 1)" identifier + (call_expression "(ulong)(pbVar5->symcount - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pbVar5->symcount - 1)" ( (binary_expression "pbVar5->symcount - 1" (field_expression "pbVar5->symcount" identifier -> field_identifier) - number_literal) )))) + number_literal)) ;) (do_statement "do {\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            } while (ppbVar2 != ppbVar39);" do (compound_statement "{\n              pbVar18 = *ppbVar39;\n              if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              ppbVar39 = ppbVar39 + 1;\n            }" { (expression_statement "pbVar18 = *ppbVar39;" (assignment_expression "pbVar18 = *ppbVar39" identifier = (pointer_expression "*ppbVar39" * identifier)) ;) (if_statement "if ((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }" if (parenthesized_expression "((pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0))))" ( (binary_expression "(pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)) &&\n                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))" (parenthesized_expression "(pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118))" ( (binary_expression "pbVar18->section != (bfd_section *)(_bfd_std_section + 0x118)" (field_expression "pbVar18->section" identifier -> field_identifier) != (cast_expression "(bfd_section *)(_bfd_std_section + 0x118)" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) )))) )) && (parenthesized_expression "(((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))" ( (parenthesized_expression "((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0))" ( (binary_expression "(pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)" (binary_expression "(pbVar18->flags & 2) != 0" (parenthesized_expression "(pbVar18->flags & 2)" ( (binary_expression "pbVar18->flags & 2" (field_expression "pbVar18->flags" identifier -> field_identifier) & number_literal) )) != number_literal) || (parenthesized_expression "(pbVar18->flags == 0)" ( (binary_expression "pbVar18->flags == 0" (field_expression "pbVar18->flags" identifier -> field_identifier) == number_literal) ))) )) ))) )) (compound_statement "{\n                bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;\n                if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }\n                bVar40 = false;\n                pdVar32 = (def_file *)pbVar18->name;\n                lVar16 = 6;\n                pdVar21 = pdVar32;\n                pbVar35 = (byte *)0x29f1f4;\n                do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);\n                if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }\n              }" { (expression_statement "bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0;" (assignment_expression "bVar41 = link_info.version_info == (bfd_elf_version_tree *)0x0" identifier = (binary_expression "link_info.version_info == (bfd_elf_version_tree *)0x0" (field_expression "link_info.version_info" identifier . field_identifier) == (cast_expression "(bfd_elf_version_tree *)0x0" ( (type_descriptor "bfd_elf_version_tree *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (if_statement "if (!bVar41) {\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }" if (parenthesized_expression "(!bVar41)" ( (unary_expression "!bVar41" ! identifier) )) (compound_statement "{\n                  iVar15 = bfd_hide_sym_by_version();\n                  bVar41 = iVar15 == 0;\n                  if (!bVar41) goto LAB_00152388;\n                  pbVar18 = *ppbVar39;\n                }" { (expression_statement "iVar15 = bfd_hide_sym_by_version();" (assignment_expression "iVar15 = bfd_hide_sym_by_version()" identifier = (call_expression "bfd_hide_sym_by_version()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar41 = iVar15 == 0;" (assignment_expression "bVar41 = iVar15 == 0" identifier = (binary_expression "iVar15 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar41) goto LAB_00152388;" if (parenthesized_expression "(!bVar41)" ( (unary_expression "!bVar41" ! identifier) )) (goto_statement "goto LAB_00152388;" goto statement_identifier ;)) (expression_statement "pbVar18 = *ppbVar39;" (assignment_expression "pbVar18 = *ppbVar39" identifier = (pointer_expression "*ppbVar39" * identifier)) ;) })) (expression_statement "bVar40 = false;" (assignment_expression "bVar40 = false" identifier = false) ;) (expression_statement "pdVar32 = (def_file *)pbVar18->name;" (assignment_expression "pdVar32 = (def_file *)pbVar18->name" identifier = (cast_expression "(def_file *)pbVar18->name" ( (type_descriptor "def_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pbVar18->name" identifier -> field_identifier))) ;) (expression_statement "lVar16 = 6;" (assignment_expression "lVar16 = 6" identifier = number_literal) ;) (expression_statement "pdVar21 = pdVar32;" (assignment_expression "pdVar21 = pdVar32" identifier = identifier) ;) (expression_statement "pbVar35 = (byte *)0x29f1f4;" (assignment_expression "pbVar35 = (byte *)0x29f1f4" identifier = (cast_expression "(byte *)0x29f1f4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                } while (bVar41);" do (compound_statement "{\n                  if (lVar16 == 0) break;\n                  lVar16 = lVar16 + -1;\n                  bVar40 = *(byte *)&pdVar21->name < *pbVar35;\n                  bVar41 = *(byte *)&pdVar21->name == *pbVar35;\n                  pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);\n                  pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;\n                }" { (if_statement "if (lVar16 == 0) break;" if (parenthesized_expression "(lVar16 == 0)" ( (binary_expression "lVar16 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar16 = lVar16 + -1;" (assignment_expression "lVar16 = lVar16 + -1" identifier = (binary_expression "lVar16 + -1" identifier + number_literal)) ;) (expression_statement "bVar40 = *(byte *)&pdVar21->name < *pbVar35;" (assignment_expression "bVar40 = *(byte *)&pdVar21->name < *pbVar35" identifier = (binary_expression "*(byte *)&pdVar21->name < *pbVar35" (pointer_expression "*(byte *)&pdVar21->name" * (cast_expression "(byte *)&pdVar21->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar21->name" & (field_expression "pdVar21->name" identifier -> field_identifier)))) < (pointer_expression "*pbVar35" * identifier))) ;) (expression_statement "bVar41 = *(byte *)&pdVar21->name == *pbVar35;" (assignment_expression "bVar41 = *(byte *)&pdVar21->name == *pbVar35" identifier = (binary_expression "*(byte *)&pdVar21->name == *pbVar35" (pointer_expression "*(byte *)&pdVar21->name" * (cast_expression "(byte *)&pdVar21->name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar21->name" & (field_expression "pdVar21->name" identifier -> field_identifier)))) == (pointer_expression "*pbVar35" * identifier))) ;) (expression_statement "pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1);" (assignment_expression "pdVar21 = (def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1)" identifier = (cast_expression "(def_file *)((long)pdVar21 + (ulong)bVar42 * -2 + 1)" ( (type_descriptor "def_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pdVar21 + (ulong)bVar42 * -2 + 1)" ( (binary_expression "(long)pdVar21 + (ulong)bVar42 * -2 + 1" (binary_expression "(long)pdVar21 + (ulong)bVar42 * -2" (cast_expression "(long)pdVar21" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "(ulong)bVar42 * -2" (cast_expression "(ulong)bVar42" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) (expression_statement "pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1;" (assignment_expression "pbVar35 = pbVar35 + (ulong)bVar42 * -2 + 1" identifier = (binary_expression "pbVar35 + (ulong)bVar42 * -2 + 1" (binary_expression "pbVar35 + (ulong)bVar42 * -2" identifier + (binary_expression "(ulong)bVar42 * -2" (cast_expression "(ulong)bVar42" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar41)" ( identifier )) ;) (if_statement "if ((!bVar40 && !bVar41) != bVar40) {\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }" if (parenthesized_expression "((!bVar40 && !bVar41) != bVar40)" ( (binary_expression "(!bVar40 && !bVar41) != bVar40" (parenthesized_expression "(!bVar40 && !bVar41)" ( (binary_expression "!bVar40 && !bVar41" (unary_expression "!bVar40" ! identifier) && (unary_expression "!bVar41" ! identifier)) )) != identifier) )) (compound_statement "{\n                  sVar19 = strlen((char *)pdVar32);\n                  pcVar17 = (char *)xmalloc(sVar19 + 7);\n                  sprintf(pcVar17,"%s%s","__imp_",pdVar32);\n                  lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);\n                  free(pcVar17);\n                  if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }\n                }" { (expression_statement "sVar19 = strlen((char *)pdVar32);" (assignment_expression "sVar19 = strlen((char *)pdVar32)" identifier = (call_expression "strlen((char *)pdVar32)" identifier (argument_list "((char *)pdVar32)" ( (cast_expression "(char *)pdVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pcVar17 = (char *)xmalloc(sVar19 + 7);" (assignment_expression "pcVar17 = (char *)xmalloc(sVar19 + 7)" identifier = (cast_expression "(char *)xmalloc(sVar19 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar19 + 7)" identifier (argument_list "(sVar19 + 7)" ( (binary_expression "sVar19 + 7" identifier + number_literal) ))))) ;) (expression_statement "sprintf(pcVar17,"%s%s","__imp_",pdVar32);" (call_expression "sprintf(pcVar17,"%s%s","__imp_",pdVar32)" identifier (argument_list "(pcVar17,"%s%s","__imp_",pdVar32)" ( identifier , (string_literal ""%s%s"" " string_content ") , (string_literal ""__imp_"" " string_content ") , identifier ))) ;) (expression_statement "lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0);" (assignment_expression "lVar16 = bfd_link_hash_lookup(info->hash,pcVar17,0,0)" identifier = (call_expression "bfd_link_hash_lookup(info->hash,pcVar17,0,0)" identifier (argument_list "(info->hash,pcVar17,0,0)" ( (field_expression "info->hash" identifier -> field_identifier) , identifier , number_literal , number_literal )))) ;) (expression_statement "free(pcVar17);" (call_expression "free(pcVar17)" identifier (argument_list "(pcVar17)" ( identifier ))) ;) (if_statement "if ((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')) {\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }" if (parenthesized_expression "((lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03'))" ( (binary_expression "(lVar16 == 0) || (*(char *)(lVar16 + 0x18) != '\x03')" (parenthesized_expression "(lVar16 == 0)" ( (binary_expression "lVar16 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(lVar16 + 0x18) != '\x03')" ( (binary_expression "*(char *)(lVar16 + 0x18) != '\x03'" (pointer_expression "*(char *)(lVar16 + 0x18)" * (cast_expression "(char *)(lVar16 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar16 + 0x18)" ( (binary_expression "lVar16 + 0x18" identifier + number_literal) )))) != (char_literal "'\x03'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }\n                    iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);\n                    if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }\n                  }" { (if_statement "if (pep_details->underscored != 0) {\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }" if (parenthesized_expression "(pep_details->underscored != 0)" ( (binary_expression "pep_details->underscored != 0" (field_expression "pep_details->underscored" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n                      pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));\n                    }" { (expression_statement "pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'));" (assignment_expression "pdVar32 = (def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'))" identifier = (cast_expression "(def_file *)\n                                ((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'))" ( (type_descriptor "def_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_'))" ( (binary_expression "(long)&pdVar32->name + (ulong)(*(char *)&pdVar32->name == '_')" (cast_expression "(long)&pdVar32->name" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&pdVar32->name" & (field_expression "pdVar32->name" identifier -> field_identifier))) + (call_expression "(ulong)(*(char *)&pdVar32->name == '_')" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(char *)&pdVar32->name == '_')" ( (binary_expression "*(char *)&pdVar32->name == '_'" (pointer_expression "*(char *)&pdVar32->name" * (cast_expression "(char *)&pdVar32->name" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar32->name" & (field_expression "pdVar32->name" identifier -> field_identifier)))) == (char_literal "'_'" ' character ')) )))) )))) ;) })) (expression_statement "iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32);" (assignment_expression "iVar15 = auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32)" identifier = (call_expression "auto_export(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32)" identifier (argument_list "(pbVar5,(def_file *)&pep_def_file->num_exports,\n                                         (char *)&pep_def_file->exports,pdVar32)" ( identifier , (cast_expression "(def_file *)&pep_def_file->num_exports" ( (type_descriptor "def_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pep_def_file->num_exports" & (field_expression "pep_def_file->num_exports" identifier -> field_identifier))) , (cast_expression "(char *)&pep_def_file->exports" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pep_def_file->exports" & (field_expression "pep_def_file->exports" identifier -> field_identifier))) , identifier )))) ;) (if_statement "if (iVar15 != 0) {\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n                      is_dup = 0;\n                      pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);\n                      if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }\n                    }" { (expression_statement "is_dup = 0;" (assignment_expression "is_dup = 0" identifier = number_literal) ;) (expression_statement "pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup);" (assignment_expression "pdVar24 = def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup)" identifier = (call_expression "def_file_add_export(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup)" identifier (argument_list "(pep_def_file,(char *)pdVar32,(char *)0x0,-1,\n                                                    (char *)0x0,&is_dup)" ( identifier , (cast_expression "(char *)pdVar32" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&is_dup" & identifier) )))) ;) (if_statement "if (is_dup == 0) {\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }" if (parenthesized_expression "(is_dup == 0)" ( (binary_expression "is_dup == 0" identifier == number_literal) )) (compound_statement "{\n                        pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;\n                      }" { (expression_statement "pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1;" (assignment_expression "pdVar24->flag_data = ((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1" (field_expression "pdVar24->flag_data" identifier -> field_identifier) = (binary_expression "((byte)((*ppbVar39)->flags >> 3) ^ 1) & 1" (parenthesized_expression "((byte)((*ppbVar39)->flags >> 3) ^ 1)" ( (binary_expression "(byte)((*ppbVar39)->flags >> 3) ^ 1" (call_expression "(byte)((*ppbVar39)->flags >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "((*ppbVar39)->flags >> 3)" ( (binary_expression "(*ppbVar39)->flags >> 3" (field_expression "(*ppbVar39)->flags" (parenthesized_expression "(*ppbVar39)" ( (pointer_expression "*ppbVar39" * identifier) )) -> field_identifier) >> number_literal) ))) ^ number_literal) )) & number_literal)) ;) })) })) })) })) })) (labeled_statement "LAB_00152388:\n              ppbVar39 = ppbVar39 + 1;" statement_identifier : (expression_statement "ppbVar39 = ppbVar39 + 1;" (assignment_expression "ppbVar39 = ppbVar39 + 1" identifier = (binary_expression "ppbVar39 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(ppbVar2 != ppbVar39)" ( (binary_expression "ppbVar2 != ppbVar39" identifier != identifier) )) ;) })) (expression_statement "pbVar5 = (pbVar5->link).next;" (assignment_expression "pbVar5 = (pbVar5->link).next" identifier = (field_expression "(pbVar5->link).next" (parenthesized_expression "(pbVar5->link)" ( (field_expression "pbVar5->link" identifier -> field_identifier) )) . field_identifier)) ;) })) (expression_statement "pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);" (assignment_expression "pcVar17 = (char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: could not read symbols: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: could not read symbols: %E\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar17);" (call_expression "einfo(pcVar17)" identifier (argument_list "(pcVar17)" ( identifier ))) ;) (expression_statement "iVar15 = pep_def_file->num_exports;" (assignment_expression "iVar15 = pep_def_file->num_exports" identifier = (field_expression "pep_def_file->num_exports" identifier -> field_identifier)) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (goto_statement "goto joined_r0x00152ec1;" goto statement_identifier ;) }))) (labeled_statement "LAB_001523aa:\n      iVar15 = pep_def_file->num_exports;" statement_identifier : (expression_statement "iVar15 = pep_def_file->num_exports;" (assignment_expression "iVar15 = pep_def_file->num_exports" identifier = (field_expression "pep_def_file->num_exports" identifier -> field_identifier)) ;)) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (if_statement "if (iVar15 != 0) goto LAB_001523bf;" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001523bf;" goto statement_identifier ;)) (labeled_statement "LAB_00152950:\n      bVar14 = *(byte *)info;" statement_identifier : (expression_statement "bVar14 = *(byte *)info;" (assignment_expression "bVar14 = *(byte *)info" identifier = (pointer_expression "*(byte *)info" * (cast_expression "(byte *)info" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;)) (goto_statement "goto LAB_00152955;" goto statement_identifier ;) })) (labeled_statement "LAB_001523bf:\n    if (pep_dll_kill_ats == 0) {\nLAB_00152938:\n      uVar28 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n    }\n    else {\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }" statement_identifier : (if_statement "if (pep_dll_kill_ats == 0) {\nLAB_00152938:\n      uVar28 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n    }\n    else {\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }" if (parenthesized_expression "(pep_dll_kill_ats == 0)" ( (binary_expression "pep_dll_kill_ats == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00152938:\n      uVar28 = pep_def_file->num_exports;\n      pdVar32 = pep_def_file;\n    }" { (labeled_statement "LAB_00152938:\n      uVar28 = pep_def_file->num_exports;" statement_identifier : (expression_statement "uVar28 = pep_def_file->num_exports;" (assignment_expression "uVar28 = pep_def_file->num_exports" identifier = (field_expression "pep_def_file->num_exports" identifier -> field_identifier)) ;)) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) }) (else_clause "else {\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }" else (compound_statement "{\nLAB_001523cf:\n      lVar16 = 0;\n      bVar41 = false;\n      pdVar32 = pep_def_file;\n      if (iVar15 < 1) goto LAB_00152938;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);\n      if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }\n    }" { (labeled_statement "LAB_001523cf:\n      lVar16 = 0;" statement_identifier : (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;)) (expression_statement "bVar41 = false;" (assignment_expression "bVar41 = false" identifier = false) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (if_statement "if (iVar15 < 1) goto LAB_00152938;" if (parenthesized_expression "(iVar15 < 1)" ( (binary_expression "iVar15 < 1" identifier < number_literal) )) (goto_statement "goto LAB_00152938;" goto statement_identifier ;)) (do_statement "do {\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      } while ((int)lVar16 < (int)uVar28);" do (compound_statement "{\n        pcVar17 = pdVar32->exports[lVar16].name;\n        cVar4 = *pcVar17;\n        if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }\n        uVar28 = pdVar32->num_exports;\n        lVar16 = lVar16 + 1;\n      }" { (expression_statement "pcVar17 = pdVar32->exports[lVar16].name;" (assignment_expression "pcVar17 = pdVar32->exports[lVar16].name" identifier = (field_expression "pdVar32->exports[lVar16].name" (subscript_expression "pdVar32->exports[lVar16]" (field_expression "pdVar32->exports" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "cVar4 = *pcVar17;" (assignment_expression "cVar4 = *pcVar17" identifier = (pointer_expression "*pcVar17" * identifier)) ;) (if_statement "if ((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)) {\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }" if (parenthesized_expression "((cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0))" ( (binary_expression "(cVar4 != '?') && (pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)" (parenthesized_expression "(cVar4 != '?')" ( (binary_expression "cVar4 != '?'" identifier != (char_literal "'?'" ' character ')) )) && (parenthesized_expression "(pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0)" ( (comma_expression "pcVar20 = strchr(pcVar17,0x40), pcVar20 != (char *)0x0" (assignment_expression "pcVar20 = strchr(pcVar17,0x40)" identifier = (call_expression "strchr(pcVar17,0x40)" identifier (argument_list "(pcVar17,0x40)" ( identifier , number_literal )))) , (binary_expression "pcVar20 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));\n          pcVar20 = strrchr(pcVar17,0x40);\n          if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }\n          pdVar32 = pep_def_file;\n          bVar41 = true;\n          pep_def_file->exports[lVar16].name = pcVar17;\n        }" { (expression_statement "pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'));" (assignment_expression "pcVar17 = (char *)xstrdup(pcVar17 + (cVar4 == '@'))" identifier = (cast_expression "(char *)xstrdup(pcVar17 + (cVar4 == '@'))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(pcVar17 + (cVar4 == '@'))" identifier (argument_list "(pcVar17 + (cVar4 == '@'))" ( (binary_expression "pcVar17 + (cVar4 == '@')" identifier + (parenthesized_expression "(cVar4 == '@')" ( (binary_expression "cVar4 == '@'" identifier == (char_literal "'@'" ' character ')) ))) ))))) ;) (expression_statement "pcVar20 = strrchr(pcVar17,0x40);" (assignment_expression "pcVar20 = strrchr(pcVar17,0x40)" identifier = (call_expression "strrchr(pcVar17,0x40)" identifier (argument_list "(pcVar17,0x40)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar20 == (char *)0x0) {\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }\n          else {\n            *pcVar20 = '\0';\n          }" if (parenthesized_expression "(pcVar20 == (char *)0x0)" ( (binary_expression "pcVar20 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar20 = pep_def_file->exports[lVar16].name;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            einfo(pcVar22,pcVar20);\n          }" { (expression_statement "pcVar20 = pep_def_file->exports[lVar16].name;" (assignment_expression "pcVar20 = pep_def_file->exports[lVar16].name" identifier = (field_expression "pep_def_file->exports[lVar16].name" (subscript_expression "pep_def_file->exports[lVar16]" (field_expression "pep_def_file->exports" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);" (assignment_expression "pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5)" identifier (argument_list "(0,"%X%P: cannot export %s: invalid export name\n",5)" ( number_literal , (string_literal ""%X%P: cannot export %s: invalid export name\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar22,pcVar20);" (call_expression "einfo(pcVar22,pcVar20)" identifier (argument_list "(pcVar22,pcVar20)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            *pcVar20 = '\0';\n          }" else (compound_statement "{\n            *pcVar20 = '\0';\n          }" { (expression_statement "*pcVar20 = '\0';" (assignment_expression "*pcVar20 = '\0'" (pointer_expression "*pcVar20" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (expression_statement "bVar41 = true;" (assignment_expression "bVar41 = true" identifier = true) ;) (expression_statement "pep_def_file->exports[lVar16].name = pcVar17;" (assignment_expression "pep_def_file->exports[lVar16].name = pcVar17" (field_expression "pep_def_file->exports[lVar16].name" (subscript_expression "pep_def_file->exports[lVar16]" (field_expression "pep_def_file->exports" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) })) (expression_statement "uVar28 = pdVar32->num_exports;" (assignment_expression "uVar28 = pdVar32->num_exports" identifier = (field_expression "pdVar32->num_exports" identifier -> field_identifier)) ;) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar16 < (int)uVar28)" ( (binary_expression "(int)lVar16 < (int)uVar28" (cast_expression "(int)lVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (if_statement "if (bVar41) {\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }" if (parenthesized_expression "(bVar41)" ( identifier )) (compound_statement "{\n        qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);\n        goto LAB_00152938;\n      }" { (expression_statement "qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort);" (call_expression "qsort(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort)" identifier (argument_list "(pdVar32->exports,(long)(int)uVar28,0x28,pe_export_sort)" ( (field_expression "pdVar32->exports" identifier -> field_identifier) , (cast_expression "(long)(int)uVar28" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) , number_literal , identifier ))) ;) (goto_statement "goto LAB_00152938;" goto statement_identifier ;) })) })))) (if_statement "if (pep_dll_stdcall_aliases == 0) {\nLAB_001525b0:\n      pdVar24 = pdVar32->exports;\n      if ((int)uVar28 < 1) goto LAB_00152f50;\n      iVar15 = 0;\n      iVar31 = 0;\n      pdVar30 = pdVar24;\n      do {\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      } while (iVar31 < pdVar32->num_exports);\nLAB_001526e4:\n      lVar16 = (long)iVar15 << 3;\n    }\n    else {\n      if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar16 = 0;\n      iVar15 = 0;\n    }" if (parenthesized_expression "(pep_dll_stdcall_aliases == 0)" ( (binary_expression "pep_dll_stdcall_aliases == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001525b0:\n      pdVar24 = pdVar32->exports;\n      if ((int)uVar28 < 1) goto LAB_00152f50;\n      iVar15 = 0;\n      iVar31 = 0;\n      pdVar30 = pdVar24;\n      do {\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      } while (iVar31 < pdVar32->num_exports);\nLAB_001526e4:\n      lVar16 = (long)iVar15 << 3;\n    }" { (labeled_statement "LAB_001525b0:\n      pdVar24 = pdVar32->exports;" statement_identifier : (expression_statement "pdVar24 = pdVar32->exports;" (assignment_expression "pdVar24 = pdVar32->exports" identifier = (field_expression "pdVar32->exports" identifier -> field_identifier)) ;)) (if_statement "if ((int)uVar28 < 1) goto LAB_00152f50;" if (parenthesized_expression "((int)uVar28 < 1)" ( (binary_expression "(int)uVar28 < 1" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00152f50;" goto statement_identifier ;)) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "iVar31 = 0;" (assignment_expression "iVar31 = 0" identifier = number_literal) ;) (expression_statement "pdVar30 = pdVar24;" (assignment_expression "pdVar30 = pdVar24" identifier = identifier) ;) (do_statement "do {\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      } while (iVar31 < pdVar32->num_exports);" do (compound_statement "{\n        while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }\n        if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }\n        iVar15 = iVar15 + 1;\n        iVar31 = iVar31 + 1;\n        pdVar30 = pdVar30 + 1;\n      }" { (while_statement "while (iVar31 != 0) {\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }" while (parenthesized_expression "(iVar31 != 0)" ( (binary_expression "iVar31 != 0" identifier != number_literal) )) (compound_statement "{\n          pcVar17 = pdVar30->name;\n          iVar38 = strcmp(pcVar17,pdVar30[-1].name);\n          if (iVar38 != 0) break;\n          pdVar3 = pdVar24 + (long)iVar15 + -1;\n          uVar28 = pdVar3->ordinal;\n          if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }\n          pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;\n          pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;\n          pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;\n          pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;\n          if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }\n          if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }\n          if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }\n          iVar31 = iVar31 + 1;\n          pdVar30 = pdVar30 + 1;\n          pdVar32 = pep_def_file;\n          if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;\n        }" { (expression_statement "pcVar17 = pdVar30->name;" (assignment_expression "pcVar17 = pdVar30->name" identifier = (field_expression "pdVar30->name" identifier -> field_identifier)) ;) (expression_statement "iVar38 = strcmp(pcVar17,pdVar30[-1].name);" (assignment_expression "iVar38 = strcmp(pcVar17,pdVar30[-1].name)" identifier = (call_expression "strcmp(pcVar17,pdVar30[-1].name)" identifier (argument_list "(pcVar17,pdVar30[-1].name)" ( identifier , (field_expression "pdVar30[-1].name" (subscript_expression "pdVar30[-1]" identifier [ number_literal ]) . field_identifier) )))) ;) (if_statement "if (iVar38 != 0) break;" if (parenthesized_expression "(iVar38 != 0)" ( (binary_expression "iVar38 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "pdVar3 = pdVar24 + (long)iVar15 + -1;" (assignment_expression "pdVar3 = pdVar24 + (long)iVar15 + -1" identifier = (binary_expression "pdVar24 + (long)iVar15 + -1" (binary_expression "pdVar24 + (long)iVar15" identifier + (cast_expression "(long)iVar15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) + number_literal)) ;) (expression_statement "uVar28 = pdVar3->ordinal;" (assignment_expression "uVar28 = pdVar3->ordinal" identifier = (field_expression "pdVar3->ordinal" identifier -> field_identifier)) ;) (if_statement "if (((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)) {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }\n          else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }" if (parenthesized_expression "(((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37))" ( (binary_expression "((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)) ||\n             (uVar28 == uVar37)" (parenthesized_expression "((uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff))" ( (binary_expression "(uVar28 == 0xffffffff) || (uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)" (parenthesized_expression "(uVar28 == 0xffffffff)" ( (binary_expression "uVar28 == 0xffffffff" identifier == number_literal) )) || (parenthesized_expression "(uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff)" ( (comma_expression "uVar37 = pdVar30->ordinal, uVar37 == 0xffffffff" (assignment_expression "uVar37 = pdVar30->ordinal" identifier = (field_expression "pdVar30->ordinal" identifier -> field_identifier)) , (binary_expression "uVar37 == 0xffffffff" identifier == number_literal)) ))) )) || (parenthesized_expression "(uVar28 == uVar37)" ( (binary_expression "uVar28 == uVar37" identifier == identifier) ))) )) (compound_statement "{\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }\nLAB_00152cc8:\n            uVar37 = pdVar30->ordinal;\n            if (uVar37 != 0xffffffff) goto LAB_00152636;\n          }" { (if_statement "if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }" if (parenthesized_expression "(pep_dll_warn_dup_exports != 0)" ( (binary_expression "pep_dll_warn_dup_exports != 0" identifier != number_literal) )) (compound_statement "{\n              pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              einfo(pcVar17);\n              pcVar17 = pdVar30->name;\n            }" { (expression_statement "pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);" (assignment_expression "pcVar17 = (char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5)" identifier (argument_list "(0,"%P: warning, duplicate EXPORT: %s\n",5)" ( number_literal , (string_literal ""%P: warning, duplicate EXPORT: %s\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar17);" (call_expression "einfo(pcVar17)" identifier (argument_list "(pcVar17)" ( identifier ))) ;) (expression_statement "pcVar17 = pdVar30->name;" (assignment_expression "pcVar17 = pdVar30->name" identifier = (field_expression "pdVar30->name" identifier -> field_identifier)) ;) })) (labeled_statement "LAB_00152cc8:\n            uVar37 = pdVar30->ordinal;" statement_identifier : (expression_statement "uVar37 = pdVar30->ordinal;" (assignment_expression "uVar37 = pdVar30->ordinal" identifier = (field_expression "pdVar30->ordinal" identifier -> field_identifier)) ;)) (if_statement "if (uVar37 != 0xffffffff) goto LAB_00152636;" if (parenthesized_expression "(uVar37 != 0xffffffff)" ( (binary_expression "uVar37 != 0xffffffff" identifier != number_literal) )) (goto_statement "goto LAB_00152636;" goto statement_identifier ;)) }) (else_clause "else {\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }" else (compound_statement "{\n            if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            pdVar3->ordinal = uVar37;\n          }" { (if_statement "if (pep_dll_warn_dup_exports != 0) {\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }" if (parenthesized_expression "(pep_dll_warn_dup_exports != 0)" ( (binary_expression "pep_dll_warn_dup_exports != 0" identifier != number_literal) )) (compound_statement "{\n              pcVar17 = pdVar3->name;\n              pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);\n              einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);\n              pcVar17 = pdVar30->name;\n              goto LAB_00152cc8;\n            }" { (expression_statement "pcVar17 = pdVar3->name;" (assignment_expression "pcVar17 = pdVar3->name" identifier = (field_expression "pdVar3->name" identifier -> field_identifier)) ;) (expression_statement "pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5);" (assignment_expression "pcVar20 = (char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5)" identifier = (cast_expression "(char *)dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5)" identifier (argument_list "(0,\n                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"\n                                          ,5)" ( number_literal , (string_literal ""%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37);" (call_expression "einfo(pcVar20,pcVar17,(ulong)uVar28,uVar37)" identifier (argument_list "(pcVar20,pcVar17,(ulong)uVar28,uVar37)" ( identifier , identifier , (cast_expression "(ulong)uVar28" ( (type_descriptor "ulong" type_identifier) ) identifier) , identifier ))) ;) (expression_statement "pcVar17 = pdVar30->name;" (assignment_expression "pcVar17 = pdVar30->name" identifier = (field_expression "pdVar30->name" identifier -> field_identifier)) ;) (goto_statement "goto LAB_00152cc8;" goto statement_identifier ;) })) (labeled_statement "LAB_00152636:\n            pdVar3->ordinal = uVar37;" statement_identifier : (expression_statement "pdVar3->ordinal = uVar37;" (assignment_expression "pdVar3->ordinal = uVar37" (field_expression "pdVar3->ordinal" identifier -> field_identifier) = identifier) ;)) }))) (expression_statement "pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private;" (assignment_expression "pdVar3->flag_private = pdVar3->flag_private | pdVar30->flag_private" (field_expression "pdVar3->flag_private" identifier -> field_identifier) = (binary_expression "pdVar3->flag_private | pdVar30->flag_private" (field_expression "pdVar3->flag_private" identifier -> field_identifier) | (field_expression "pdVar30->flag_private" identifier -> field_identifier))) ;) (expression_statement "pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant;" (assignment_expression "pdVar3->flag_constant = pdVar3->flag_constant | pdVar30->flag_constant" (field_expression "pdVar3->flag_constant" identifier -> field_identifier) = (binary_expression "pdVar3->flag_constant | pdVar30->flag_constant" (field_expression "pdVar3->flag_constant" identifier -> field_identifier) | (field_expression "pdVar30->flag_constant" identifier -> field_identifier))) ;) (expression_statement "pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname;" (assignment_expression "pdVar3->flag_noname = pdVar3->flag_noname | pdVar30->flag_noname" (field_expression "pdVar3->flag_noname" identifier -> field_identifier) = (binary_expression "pdVar3->flag_noname | pdVar30->flag_noname" (field_expression "pdVar3->flag_noname" identifier -> field_identifier) | (field_expression "pdVar30->flag_noname" identifier -> field_identifier))) ;) (expression_statement "pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data;" (assignment_expression "pdVar3->flag_data = pdVar3->flag_data | pdVar30->flag_data" (field_expression "pdVar3->flag_data" identifier -> field_identifier) = (binary_expression "pdVar3->flag_data | pdVar30->flag_data" (field_expression "pdVar3->flag_data" identifier -> field_identifier) | (field_expression "pdVar30->flag_data" identifier -> field_identifier))) ;) (if_statement "if (pcVar17 != (char *)0x0) {\n            free(pcVar17);\n          }" if (parenthesized_expression "(pcVar17 != (char *)0x0)" ( (binary_expression "pcVar17 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(pcVar17);\n          }" { (expression_statement "free(pcVar17);" (call_expression "free(pcVar17)" identifier (argument_list "(pcVar17)" ( identifier ))) ;) })) (if_statement "if (pdVar30->internal_name != (char *)0x0) {\n            free(pdVar30->internal_name);\n          }" if (parenthesized_expression "(pdVar30->internal_name != (char *)0x0)" ( (binary_expression "pdVar30->internal_name != (char *)0x0" (field_expression "pdVar30->internal_name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(pdVar30->internal_name);\n          }" { (expression_statement "free(pdVar30->internal_name);" (call_expression "free(pdVar30->internal_name)" identifier (argument_list "(pdVar30->internal_name)" ( (field_expression "pdVar30->internal_name" identifier -> field_identifier) ))) ;) })) (if_statement "if (pdVar30->its_name != (char *)0x0) {\n            free(pdVar30->its_name);\n          }" if (parenthesized_expression "(pdVar30->its_name != (char *)0x0)" ( (binary_expression "pdVar30->its_name != (char *)0x0" (field_expression "pdVar30->its_name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(pdVar30->its_name);\n          }" { (expression_statement "free(pdVar30->its_name);" (call_expression "free(pdVar30->its_name)" identifier (argument_list "(pdVar30->its_name)" ( (field_expression "pdVar30->its_name" identifier -> field_identifier) ))) ;) })) (expression_statement "iVar31 = iVar31 + 1;" (assignment_expression "iVar31 = iVar31 + 1" identifier = (binary_expression "iVar31 + 1" identifier + number_literal)) ;) (expression_statement "pdVar30 = pdVar30 + 1;" (assignment_expression "pdVar30 = pdVar30 + 1" identifier = (binary_expression "pdVar30 + 1" identifier + number_literal)) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (if_statement "if (pep_def_file->num_exports <= iVar31) goto LAB_001526e4;" if (parenthesized_expression "(pep_def_file->num_exports <= iVar31)" ( (binary_expression "pep_def_file->num_exports <= iVar31" (field_expression "pep_def_file->num_exports" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_001526e4;" goto statement_identifier ;)) })) (if_statement "if (iVar15 != iVar31) {\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }" if (parenthesized_expression "(iVar15 != iVar31)" ( (binary_expression "iVar15 != iVar31" identifier != identifier) )) (compound_statement "{\n          pcVar17 = pdVar30->internal_name;\n          pdVar3 = pdVar24 + iVar15;\n          pdVar3->name = pdVar30->name;\n          pdVar3->internal_name = pcVar17;\n          iVar38 = pdVar30->ordinal;\n          iVar7 = pdVar30->hint;\n          pdVar3->its_name = pdVar30->its_name;\n          pdVar3->ordinal = iVar38;\n          pdVar3->hint = iVar7;\n          cVar4 = pdVar30->flag_constant;\n          cVar8 = pdVar30->flag_noname;\n          cVar9 = pdVar30->flag_data;\n          cVar10 = pdVar30->flag_forward;\n          uVar11 = *(undefined3 *)&pdVar30->field_0x25;\n          pdVar3->flag_private = pdVar30->flag_private;\n          pdVar3->flag_constant = cVar4;\n          pdVar3->flag_noname = cVar8;\n          pdVar3->flag_data = cVar9;\n          pdVar3->flag_forward = cVar10;\n          *(undefined3 *)&pdVar3->field_0x25 = uVar11;\n        }" { (expression_statement "pcVar17 = pdVar30->internal_name;" (assignment_expression "pcVar17 = pdVar30->internal_name" identifier = (field_expression "pdVar30->internal_name" identifier -> field_identifier)) ;) (expression_statement "pdVar3 = pdVar24 + iVar15;" (assignment_expression "pdVar3 = pdVar24 + iVar15" identifier = (binary_expression "pdVar24 + iVar15" identifier + identifier)) ;) (expression_statement "pdVar3->name = pdVar30->name;" (assignment_expression "pdVar3->name = pdVar30->name" (field_expression "pdVar3->name" identifier -> field_identifier) = (field_expression "pdVar30->name" identifier -> field_identifier)) ;) (expression_statement "pdVar3->internal_name = pcVar17;" (assignment_expression "pdVar3->internal_name = pcVar17" (field_expression "pdVar3->internal_name" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar38 = pdVar30->ordinal;" (assignment_expression "iVar38 = pdVar30->ordinal" identifier = (field_expression "pdVar30->ordinal" identifier -> field_identifier)) ;) (expression_statement "iVar7 = pdVar30->hint;" (assignment_expression "iVar7 = pdVar30->hint" identifier = (field_expression "pdVar30->hint" identifier -> field_identifier)) ;) (expression_statement "pdVar3->its_name = pdVar30->its_name;" (assignment_expression "pdVar3->its_name = pdVar30->its_name" (field_expression "pdVar3->its_name" identifier -> field_identifier) = (field_expression "pdVar30->its_name" identifier -> field_identifier)) ;) (expression_statement "pdVar3->ordinal = iVar38;" (assignment_expression "pdVar3->ordinal = iVar38" (field_expression "pdVar3->ordinal" identifier -> field_identifier) = identifier) ;) (expression_statement "pdVar3->hint = iVar7;" (assignment_expression "pdVar3->hint = iVar7" (field_expression "pdVar3->hint" identifier -> field_identifier) = identifier) ;) (expression_statement "cVar4 = pdVar30->flag_constant;" (assignment_expression "cVar4 = pdVar30->flag_constant" identifier = (field_expression "pdVar30->flag_constant" identifier -> field_identifier)) ;) (expression_statement "cVar8 = pdVar30->flag_noname;" (assignment_expression "cVar8 = pdVar30->flag_noname" identifier = (field_expression "pdVar30->flag_noname" identifier -> field_identifier)) ;) (expression_statement "cVar9 = pdVar30->flag_data;" (assignment_expression "cVar9 = pdVar30->flag_data" identifier = (field_expression "pdVar30->flag_data" identifier -> field_identifier)) ;) (expression_statement "cVar10 = pdVar30->flag_forward;" (assignment_expression "cVar10 = pdVar30->flag_forward" identifier = (field_expression "pdVar30->flag_forward" identifier -> field_identifier)) ;) (expression_statement "uVar11 = *(undefined3 *)&pdVar30->field_0x25;" (assignment_expression "uVar11 = *(undefined3 *)&pdVar30->field_0x25" identifier = (pointer_expression "*(undefined3 *)&pdVar30->field_0x25" * (cast_expression "(undefined3 *)&pdVar30->field_0x25" ( (type_descriptor "undefined3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar30->field_0x25" & (field_expression "pdVar30->field_0x25" identifier -> field_identifier))))) ;) (expression_statement "pdVar3->flag_private = pdVar30->flag_private;" (assignment_expression "pdVar3->flag_private = pdVar30->flag_private" (field_expression "pdVar3->flag_private" identifier -> field_identifier) = (field_expression "pdVar30->flag_private" identifier -> field_identifier)) ;) (expression_statement "pdVar3->flag_constant = cVar4;" (assignment_expression "pdVar3->flag_constant = cVar4" (field_expression "pdVar3->flag_constant" identifier -> field_identifier) = identifier) ;) (expression_statement "pdVar3->flag_noname = cVar8;" (assignment_expression "pdVar3->flag_noname = cVar8" (field_expression "pdVar3->flag_noname" identifier -> field_identifier) = identifier) ;) (expression_statement "pdVar3->flag_data = cVar9;" (assignment_expression "pdVar3->flag_data = cVar9" (field_expression "pdVar3->flag_data" identifier -> field_identifier) = identifier) ;) (expression_statement "pdVar3->flag_forward = cVar10;" (assignment_expression "pdVar3->flag_forward = cVar10" (field_expression "pdVar3->flag_forward" identifier -> field_identifier) = identifier) ;) (expression_statement "*(undefined3 *)&pdVar3->field_0x25 = uVar11;" (assignment_expression "*(undefined3 *)&pdVar3->field_0x25 = uVar11" (pointer_expression "*(undefined3 *)&pdVar3->field_0x25" * (cast_expression "(undefined3 *)&pdVar3->field_0x25" ( (type_descriptor "undefined3 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar3->field_0x25" & (field_expression "pdVar3->field_0x25" identifier -> field_identifier)))) = identifier) ;) })) (expression_statement "iVar15 = iVar15 + 1;" (assignment_expression "iVar15 = iVar15 + 1" identifier = (binary_expression "iVar15 + 1" identifier + number_literal)) ;) (expression_statement "iVar31 = iVar31 + 1;" (assignment_expression "iVar31 = iVar31 + 1" identifier = (binary_expression "iVar31 + 1" identifier + number_literal)) ;) (expression_statement "pdVar30 = pdVar30 + 1;" (assignment_expression "pdVar30 = pdVar30 + 1" identifier = (binary_expression "pdVar30 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar31 < pdVar32->num_exports)" ( (binary_expression "iVar31 < pdVar32->num_exports" identifier < (field_expression "pdVar32->num_exports" identifier -> field_identifier)) )) ;) (labeled_statement "LAB_001526e4:\n      lVar16 = (long)iVar15 << 3;" statement_identifier : (expression_statement "lVar16 = (long)iVar15 << 3;" (assignment_expression "lVar16 = (long)iVar15 << 3" identifier = (binary_expression "(long)iVar15 << 3" (cast_expression "(long)iVar15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal)) ;)) }) (else_clause "else {\n      if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar16 = 0;\n      iVar15 = 0;\n    }" else (compound_statement "{\n      if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar16 = 0;\n      iVar15 = 0;\n    }" { (if_statement "if (0 < (int)uVar28) {\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }" if (parenthesized_expression "(0 < (int)uVar28)" ( (binary_expression "0 < (int)uVar28" number_literal < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        bVar41 = false;\n        lVar16 = 0;\n        bVar40 = true;\nLAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );\n      }" { (expression_statement "bVar41 = false;" (assignment_expression "bVar41 = false" identifier = false) ;) (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (expression_statement "bVar40 = true;" (assignment_expression "bVar40 = true" identifier = true) ;) (labeled_statement "LAB_001524c9:\n        do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );" statement_identifier : (do_statement "do {\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        } while( true );" do (compound_statement "{\n          lVar25 = 6;\n          pbVar35 = (byte *)pdVar32->exports[lVar16].name;\n          pbVar33 = pbVar35;\n          pbVar36 = (byte *)0x29f1f4;\n          do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);\n          if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          is_dup = 1;\n          pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));\n          pcVar17 = strchr((char *)pdVar21,0x40);\n          pdVar32 = pep_def_file;\n          *pcVar17 = '\0';\n          iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);\n          pdVar32 = pep_def_file;\n          if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }\n          pep_def_file = pdVar32;\n          if (is_dup == 0) goto LAB_001524b8;\n          lVar16 = lVar16 + 1;\n          free(pdVar21);\n          uVar28 = pep_def_file->num_exports;\n          uVar37 = (uint)lVar16;\n          bVar41 = uVar28 < uVar37;\n          bVar40 = uVar28 == uVar37;\n          pdVar32 = pep_def_file;\n          if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n        }" { (expression_statement "lVar25 = 6;" (assignment_expression "lVar25 = 6" identifier = number_literal) ;) (expression_statement "pbVar35 = (byte *)pdVar32->exports[lVar16].name;" (assignment_expression "pbVar35 = (byte *)pdVar32->exports[lVar16].name" identifier = (cast_expression "(byte *)pdVar32->exports[lVar16].name" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pdVar32->exports[lVar16].name" (subscript_expression "pdVar32->exports[lVar16]" (field_expression "pdVar32->exports" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (expression_statement "pbVar33 = pbVar35;" (assignment_expression "pbVar33 = pbVar35" identifier = identifier) ;) (expression_statement "pbVar36 = (byte *)0x29f1f4;" (assignment_expression "pbVar36 = (byte *)0x29f1f4" identifier = (cast_expression "(byte *)0x29f1f4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          } while (bVar40);" do (compound_statement "{\n            if (lVar25 == 0) break;\n            lVar25 = lVar25 + -1;\n            bVar41 = *pbVar33 < *pbVar36;\n            bVar40 = *pbVar33 == *pbVar36;\n            pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;\n            pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;\n          }" { (if_statement "if (lVar25 == 0) break;" if (parenthesized_expression "(lVar25 == 0)" ( (binary_expression "lVar25 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar25 = lVar25 + -1;" (assignment_expression "lVar25 = lVar25 + -1" identifier = (binary_expression "lVar25 + -1" identifier + number_literal)) ;) (expression_statement "bVar41 = *pbVar33 < *pbVar36;" (assignment_expression "bVar41 = *pbVar33 < *pbVar36" identifier = (binary_expression "*pbVar33 < *pbVar36" (pointer_expression "*pbVar33" * identifier) < (pointer_expression "*pbVar36" * identifier))) ;) (expression_statement "bVar40 = *pbVar33 == *pbVar36;" (assignment_expression "bVar40 = *pbVar33 == *pbVar36" identifier = (binary_expression "*pbVar33 == *pbVar36" (pointer_expression "*pbVar33" * identifier) == (pointer_expression "*pbVar36" * identifier))) ;) (expression_statement "pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (ulong)bVar42 * -2 + 1" identifier = (binary_expression "pbVar33 + (ulong)bVar42 * -2 + 1" (binary_expression "pbVar33 + (ulong)bVar42 * -2" identifier + (binary_expression "(ulong)bVar42 * -2" (cast_expression "(ulong)bVar42" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1;" (assignment_expression "pbVar36 = pbVar36 + (ulong)bVar42 * -2 + 1" identifier = (binary_expression "pbVar36 + (ulong)bVar42 * -2 + 1" (binary_expression "pbVar36 + (ulong)bVar42 * -2" identifier + (binary_expression "(ulong)bVar42 * -2" (cast_expression "(ulong)bVar42" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar40)" ( identifier )) ;) (if_statement "if (((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)) {\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }" if (parenthesized_expression "(((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0))" ( (binary_expression "((!bVar41 && !bVar40) == bVar41) ||\n             (pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)" (parenthesized_expression "((!bVar41 && !bVar40) == bVar41)" ( (binary_expression "(!bVar41 && !bVar40) == bVar41" (parenthesized_expression "(!bVar41 && !bVar40)" ( (binary_expression "!bVar41 && !bVar40" (unary_expression "!bVar41" ! identifier) && (unary_expression "!bVar40" ! identifier)) )) == identifier) )) || (parenthesized_expression "(pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0)" ( (comma_expression "pcVar17 = strchr((char *)pbVar35,0x40), pcVar17 == (char *)0x0" (assignment_expression "pcVar17 = strchr((char *)pbVar35,0x40)" identifier = (call_expression "strchr((char *)pbVar35,0x40)" identifier (argument_list "((char *)pbVar35,0x40)" ( (cast_expression "(char *)pbVar35" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) , (binary_expression "pcVar17 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_001524b8:\n            uVar28 = pdVar32->num_exports;\n            lVar16 = lVar16 + 1;\n            uVar37 = (uint)lVar16;\n            bVar41 = uVar28 < uVar37;\n            bVar40 = uVar28 == uVar37;\n            if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }" { (labeled_statement "LAB_001524b8:\n            uVar28 = pdVar32->num_exports;" statement_identifier : (expression_statement "uVar28 = pdVar32->num_exports;" (assignment_expression "uVar28 = pdVar32->num_exports" identifier = (field_expression "pdVar32->num_exports" identifier -> field_identifier)) ;)) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "uVar37 = (uint)lVar16;" (assignment_expression "uVar37 = (uint)lVar16" identifier = (cast_expression "(uint)lVar16" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar41 = uVar28 < uVar37;" (assignment_expression "bVar41 = uVar28 < uVar37" identifier = (binary_expression "uVar28 < uVar37" identifier < identifier)) ;) (expression_statement "bVar40 = uVar28 == uVar37;" (assignment_expression "bVar40 = uVar28 == uVar37" identifier = (binary_expression "uVar28 == uVar37" identifier == identifier)) ;) (if_statement "if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;" if (parenthesized_expression "((int)uVar28 <= (int)uVar37)" ( (binary_expression "(int)uVar28 <= (int)uVar37" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001525b0;" goto statement_identifier ;)) (goto_statement "goto LAB_001524c9;" goto statement_identifier ;) })) (expression_statement "is_dup = 1;" (assignment_expression "is_dup = 1" identifier = number_literal) ;) (expression_statement "pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40));" (assignment_expression "pdVar21 = (def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40))" identifier = (cast_expression "(def_file *)xstrdup(pbVar35 + (*pbVar35 == 0x40))" ( (type_descriptor "def_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(pbVar35 + (*pbVar35 == 0x40))" identifier (argument_list "(pbVar35 + (*pbVar35 == 0x40))" ( (binary_expression "pbVar35 + (*pbVar35 == 0x40)" identifier + (parenthesized_expression "(*pbVar35 == 0x40)" ( (binary_expression "*pbVar35 == 0x40" (pointer_expression "*pbVar35" * identifier) == number_literal) ))) ))))) ;) (expression_statement "pcVar17 = strchr((char *)pdVar21,0x40);" (assignment_expression "pcVar17 = strchr((char *)pdVar21,0x40)" identifier = (call_expression "strchr((char *)pdVar21,0x40)" identifier (argument_list "((char *)pdVar21,0x40)" ( (cast_expression "(char *)pdVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (expression_statement "*pcVar17 = '\0';" (assignment_expression "*pcVar17 = '\0'" (pointer_expression "*pcVar17" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21);" (assignment_expression "iVar15 = auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21)" identifier = (call_expression "auto_export((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21)" identifier (argument_list "((bfd *)0x0,(def_file *)&pdVar32->num_exports,\n                               (char *)&pdVar32->exports,pdVar21)" ( (cast_expression "(bfd *)0x0" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , (cast_expression "(def_file *)&pdVar32->num_exports" ( (type_descriptor "def_file *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar32->num_exports" & (field_expression "pdVar32->num_exports" identifier -> field_identifier))) , (cast_expression "(char *)&pdVar32->exports" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar32->exports" & (field_expression "pdVar32->exports" identifier -> field_identifier))) , identifier )))) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (if_statement "if (iVar15 != 0) {\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }" if (parenthesized_expression "(iVar15 != 0)" ( (binary_expression "iVar15 != 0" identifier != number_literal) )) (compound_statement "{\n            def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);\n            pdVar32 = pep_def_file;\n          }" { (expression_statement "def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup);" (call_expression "def_file_add_export(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup)" identifier (argument_list "(pep_def_file,(char *)pdVar21,\n                                pep_def_file->exports[lVar16].internal_name,-1,(char *)0x0,&is_dup)" ( identifier , (cast_expression "(char *)pdVar21" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "pep_def_file->exports[lVar16].internal_name" (subscript_expression "pep_def_file->exports[lVar16]" (field_expression "pep_def_file->exports" identifier -> field_identifier) [ identifier ]) . field_identifier) , number_literal , (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , (pointer_expression "&is_dup" & identifier) ))) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) })) (expression_statement "pep_def_file = pdVar32;" (assignment_expression "pep_def_file = pdVar32" identifier = identifier) ;) (if_statement "if (is_dup == 0) goto LAB_001524b8;" if (parenthesized_expression "(is_dup == 0)" ( (binary_expression "is_dup == 0" identifier == number_literal) )) (goto_statement "goto LAB_001524b8;" goto statement_identifier ;)) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "free(pdVar21);" (call_expression "free(pdVar21)" identifier (argument_list "(pdVar21)" ( identifier ))) ;) (expression_statement "uVar28 = pep_def_file->num_exports;" (assignment_expression "uVar28 = pep_def_file->num_exports" identifier = (field_expression "pep_def_file->num_exports" identifier -> field_identifier)) ;) (expression_statement "uVar37 = (uint)lVar16;" (assignment_expression "uVar37 = (uint)lVar16" identifier = (cast_expression "(uint)lVar16" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar41 = uVar28 < uVar37;" (assignment_expression "bVar41 = uVar28 < uVar37" identifier = (binary_expression "uVar28 < uVar37" identifier < identifier)) ;) (expression_statement "bVar40 = uVar28 == uVar37;" (assignment_expression "bVar40 = uVar28 == uVar37" identifier = (binary_expression "uVar28 == uVar37" identifier == identifier)) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (if_statement "if ((int)uVar28 <= (int)uVar37) goto LAB_001525b0;" if (parenthesized_expression "((int)uVar28 <= (int)uVar37)" ( (binary_expression "(int)uVar28 <= (int)uVar37" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar37" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001525b0;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (labeled_statement "LAB_00152f50:\n      lVar16 = 0;" statement_identifier : (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;)) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) }))) (expression_statement "pdVar32->num_exports = iVar15;" (assignment_expression "pdVar32->num_exports = iVar15" (field_expression "pdVar32->num_exports" identifier -> field_identifier) = identifier) ;) (expression_statement "exported_symbol_offsets = (bfd_vma *)xmalloc(lVar16);" (assignment_expression "exported_symbol_offsets = (bfd_vma *)xmalloc(lVar16)" identifier = (cast_expression "(bfd_vma *)xmalloc(lVar16)" ( (type_descriptor "bfd_vma *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(lVar16)" identifier (argument_list "(lVar16)" ( identifier ))))) ;) (expression_statement "exported_symbol_sections = (bfd_section **)xmalloc((long)pep_def_file->num_exports << 3);" (assignment_expression "exported_symbol_sections = (bfd_section **)xmalloc((long)pep_def_file->num_exports << 3)" identifier = (cast_expression "(bfd_section **)xmalloc((long)pep_def_file->num_exports << 3)" ( (type_descriptor "bfd_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc((long)pep_def_file->num_exports << 3)" identifier (argument_list "((long)pep_def_file->num_exports << 3)" ( (binary_expression "(long)pep_def_file->num_exports << 3" (cast_expression "(long)pep_def_file->num_exports" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pep_def_file->num_exports" identifier -> field_identifier)) << number_literal) ))))) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (expression_statement "memset(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3);" (call_expression "memset(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3)" identifier (argument_list "(exported_symbol_sections,0,(long)pep_def_file->num_exports << 3)" ( identifier , number_literal , (binary_expression "(long)pep_def_file->num_exports << 3" (cast_expression "(long)pep_def_file->num_exports" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pep_def_file->num_exports" identifier -> field_identifier)) << number_literal) ))) ;) (expression_statement "iVar15 = pdVar32->num_exports;" (assignment_expression "iVar15 = pdVar32->num_exports" identifier = (field_expression "pdVar32->num_exports" identifier -> field_identifier)) ;) (expression_statement "max_ordinal = 0;" (assignment_expression "max_ordinal = 0" identifier = number_literal) ;) (expression_statement "min_ordinal = 0x10000;" (assignment_expression "min_ordinal = 0x10000" identifier = number_literal) ;) (expression_statement "count_exported = 0;" (assignment_expression "count_exported = 0" identifier = number_literal) ;) (expression_statement "count_exported_byname = 0;" (assignment_expression "count_exported_byname = 0" identifier = number_literal) ;) (expression_statement "count_with_ordinals = 0;" (assignment_expression "count_with_ordinals = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar15) {\n      lVar16 = 0;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      } while ((int)lVar16 < iVar15);\n    }" if (parenthesized_expression "(0 < iVar15)" ( (binary_expression "0 < iVar15" number_literal < identifier) )) (compound_statement "{\n      lVar16 = 0;\n      do {\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      } while ((int)lVar16 < iVar15);\n    }" { (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      } while ((int)lVar16 < iVar15);" do (compound_statement "{\n        pcVar17 = pdVar32->exports[lVar16].internal_name;\n        lang_add_gc_name(pcVar17);\n        sVar19 = strlen(pcVar17);\n        pcVar20 = (char *)xmalloc(sVar19 + 2);\n        if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }\n        lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);\n        pdVar32 = pep_def_file;\n        if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }\n        lVar16 = lVar16 + 1;\n        free(pcVar20);\n        iVar15 = pdVar32->num_exports;\n      }" { (expression_statement "pcVar17 = pdVar32->exports[lVar16].internal_name;" (assignment_expression "pcVar17 = pdVar32->exports[lVar16].internal_name" identifier = (field_expression "pdVar32->exports[lVar16].internal_name" (subscript_expression "pdVar32->exports[lVar16]" (field_expression "pdVar32->exports" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (expression_statement "lang_add_gc_name(pcVar17);" (call_expression "lang_add_gc_name(pcVar17)" identifier (argument_list "(pcVar17)" ( identifier ))) ;) (expression_statement "sVar19 = strlen(pcVar17);" (assignment_expression "sVar19 = strlen(pcVar17)" identifier = (call_expression "strlen(pcVar17)" identifier (argument_list "(pcVar17)" ( identifier )))) ;) (expression_statement "pcVar20 = (char *)xmalloc(sVar19 + 2);" (assignment_expression "pcVar20 = (char *)xmalloc(sVar19 + 2)" identifier = (cast_expression "(char *)xmalloc(sVar19 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar19 + 2)" identifier (argument_list "(sVar19 + 2)" ( (binary_expression "sVar19 + 2" identifier + number_literal) ))))) ;) (if_statement "if ((pep_details->underscored == 0) || (*pcVar17 == '@')) {\n          strcpy(pcVar20,pcVar17);\n        }\n        else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }" if (parenthesized_expression "((pep_details->underscored == 0) || (*pcVar17 == '@'))" ( (binary_expression "(pep_details->underscored == 0) || (*pcVar17 == '@')" (parenthesized_expression "(pep_details->underscored == 0)" ( (binary_expression "pep_details->underscored == 0" (field_expression "pep_details->underscored" identifier -> field_identifier) == number_literal) )) || (parenthesized_expression "(*pcVar17 == '@')" ( (binary_expression "*pcVar17 == '@'" (pointer_expression "*pcVar17" * identifier) == (char_literal "'@'" ' character ')) ))) )) (compound_statement "{\n          strcpy(pcVar20,pcVar17);\n        }" { (expression_statement "strcpy(pcVar20,pcVar17);" (call_expression "strcpy(pcVar20,pcVar17)" identifier (argument_list "(pcVar20,pcVar17)" ( identifier , identifier ))) ;) }) (else_clause "else {\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }" else (compound_statement "{\n          *pcVar20 = '_';\n          strcpy(pcVar20 + 1,pcVar17);\n          pcVar22 = (char *)xstrdup(pcVar20);\n          lang_add_gc_name(pcVar22);\n        }" { (expression_statement "*pcVar20 = '_';" (assignment_expression "*pcVar20 = '_'" (pointer_expression "*pcVar20" * identifier) = (char_literal "'_'" ' character ')) ;) (expression_statement "strcpy(pcVar20 + 1,pcVar17);" (call_expression "strcpy(pcVar20 + 1,pcVar17)" identifier (argument_list "(pcVar20 + 1,pcVar17)" ( (binary_expression "pcVar20 + 1" identifier + number_literal) , identifier ))) ;) (expression_statement "pcVar22 = (char *)xstrdup(pcVar20);" (assignment_expression "pcVar22 = (char *)xstrdup(pcVar20)" identifier = (cast_expression "(char *)xstrdup(pcVar20)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(pcVar20)" identifier (argument_list "(pcVar20)" ( identifier ))))) ;) (expression_statement "lang_add_gc_name(pcVar22);" (call_expression "lang_add_gc_name(pcVar22)" identifier (argument_list "(pcVar22)" ( identifier ))) ;) }))) (expression_statement "lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1);" (assignment_expression "lVar25 = bfd_link_hash_lookup(info->hash,pcVar20,0,0,1)" identifier = (call_expression "bfd_link_hash_lookup(info->hash,pcVar20,0,0,1)" identifier (argument_list "(info->hash,pcVar20,0,0,1)" ( (field_expression "info->hash" identifier -> field_identifier) , identifier , number_literal , number_literal , number_literal )))) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (if_statement "if (lVar25 == 0) {\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }\n        else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }" if (parenthesized_expression "(lVar25 == 0)" ( (binary_expression "lVar25 == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar17 = strchr(pcVar17,0x2e);\n          if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }\n          pcVar22 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);\n          einfo(pcVar17);\n          pdVar32 = pep_def_file;\n        }" { (expression_statement "pcVar17 = strchr(pcVar17,0x2e);" (assignment_expression "pcVar17 = strchr(pcVar17,0x2e)" identifier = (call_expression "strchr(pcVar17,0x2e)" identifier (argument_list "(pcVar17,0x2e)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar17 != (char *)0x0) {\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }" if (parenthesized_expression "(pcVar17 != (char *)0x0)" ( (binary_expression "pcVar17 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001528bb:\n            pdVar32 = pep_def_file;\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            iVar15 = pdVar24[lVar16].ordinal;\n            pdVar24[lVar16].flag_forward = '\x01';\n            goto joined_r0x001527c9;\n          }" { (labeled_statement "LAB_001528bb:\n            pdVar32 = pep_def_file;" statement_identifier : (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;)) (expression_statement "count_exported = count_exported + 1;" (assignment_expression "count_exported = count_exported + 1" identifier = (binary_expression "count_exported + 1" identifier + number_literal)) ;) (expression_statement "pdVar24 = pep_def_file->exports;" (assignment_expression "pdVar24 = pep_def_file->exports" identifier = (field_expression "pep_def_file->exports" identifier -> field_identifier)) ;) (if_statement "if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }" if (parenthesized_expression "(pdVar24[lVar16].flag_noname == '\0')" ( (binary_expression "pdVar24[lVar16].flag_noname == '\0'" (field_expression "pdVar24[lVar16].flag_noname" (subscript_expression "pdVar24[lVar16]" identifier [ identifier ]) . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              count_exported_byname = count_exported_byname + 1;\n            }" { (expression_statement "count_exported_byname = count_exported_byname + 1;" (assignment_expression "count_exported_byname = count_exported_byname + 1" identifier = (binary_expression "count_exported_byname + 1" identifier + number_literal)) ;) })) (expression_statement "iVar15 = pdVar24[lVar16].ordinal;" (assignment_expression "iVar15 = pdVar24[lVar16].ordinal" identifier = (field_expression "pdVar24[lVar16].ordinal" (subscript_expression "pdVar24[lVar16]" identifier [ identifier ]) . field_identifier)) ;) (expression_statement "pdVar24[lVar16].flag_forward = '\x01';" (assignment_expression "pdVar24[lVar16].flag_forward = '\x01'" (field_expression "pdVar24[lVar16].flag_forward" (subscript_expression "pdVar24[lVar16]" identifier [ identifier ]) . field_identifier) = (char_literal "'\x01'" ' escape_sequence ')) ;) (goto_statement "goto joined_r0x001527c9;" goto statement_identifier ;) })) (expression_statement "pcVar22 = "%X%P: cannot export %s: symbol not found\n";" (assignment_expression "pcVar22 = "%X%P: cannot export %s: symbol not found\n"" identifier = (string_literal ""%X%P: cannot export %s: symbol not found\n"" " string_content escape_sequence ")) ;) (labeled_statement "LAB_00152d02:\n          pcVar17 = (char *)dcgettext(0,pcVar22,5);" statement_identifier : (expression_statement "pcVar17 = (char *)dcgettext(0,pcVar22,5);" (assignment_expression "pcVar17 = (char *)dcgettext(0,pcVar22,5)" identifier = (cast_expression "(char *)dcgettext(0,pcVar22,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,pcVar22,5)" identifier (argument_list "(0,pcVar22,5)" ( number_literal , identifier , number_literal ))))) ;)) (expression_statement "einfo(pcVar17);" (call_expression "einfo(pcVar17)" identifier (argument_list "(pcVar17)" ( identifier ))) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) }) (else_clause "else {\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }" else (compound_statement "{\n          bVar42 = *(byte *)(lVar25 + 0x18);\n          if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }\n        }" { (expression_statement "bVar42 = *(byte *)(lVar25 + 0x18);" (assignment_expression "bVar42 = *(byte *)(lVar25 + 0x18)" identifier = (pointer_expression "*(byte *)(lVar25 + 0x18)" * (cast_expression "(byte *)(lVar25 + 0x18)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0x18)" ( (binary_expression "lVar25 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((bVar42 - 3 & 0xfd) == 0) {\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }\n          else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }" if (parenthesized_expression "((bVar42 - 3 & 0xfd) == 0)" ( (binary_expression "(bVar42 - 3 & 0xfd) == 0" (parenthesized_expression "(bVar42 - 3 & 0xfd)" ( (binary_expression "bVar42 - 3 & 0xfd" (binary_expression "bVar42 - 3" identifier - number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n            count_exported = count_exported + 1;\n            pdVar24 = pep_def_file->exports;\n            if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }\n            pbVar27 = *(bfd_section **)(lVar25 + 0x28);\n            if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }\n            exported_symbol_sections[lVar16] = pbVar27;\n            iVar15 = pdVar24[lVar16].ordinal;\njoined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }\n          }" { (expression_statement "count_exported = count_exported + 1;" (assignment_expression "count_exported = count_exported + 1" identifier = (binary_expression "count_exported + 1" identifier + number_literal)) ;) (expression_statement "pdVar24 = pep_def_file->exports;" (assignment_expression "pdVar24 = pep_def_file->exports" identifier = (field_expression "pep_def_file->exports" identifier -> field_identifier)) ;) (if_statement "if (pdVar24[lVar16].flag_noname == '\0') {\n              count_exported_byname = count_exported_byname + 1;\n            }" if (parenthesized_expression "(pdVar24[lVar16].flag_noname == '\0')" ( (binary_expression "pdVar24[lVar16].flag_noname == '\0'" (field_expression "pdVar24[lVar16].flag_noname" (subscript_expression "pdVar24[lVar16]" identifier [ identifier ]) . field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              count_exported_byname = count_exported_byname + 1;\n            }" { (expression_statement "count_exported_byname = count_exported_byname + 1;" (assignment_expression "count_exported_byname = count_exported_byname + 1" identifier = (binary_expression "count_exported_byname + 1" identifier + number_literal)) ;) })) (expression_statement "pbVar27 = *(bfd_section **)(lVar25 + 0x28);" (assignment_expression "pbVar27 = *(bfd_section **)(lVar25 + 0x28)" identifier = (pointer_expression "*(bfd_section **)(lVar25 + 0x28)" * (cast_expression "(bfd_section **)(lVar25 + 0x28)" ( (type_descriptor "bfd_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar25 + 0x28)" ( (binary_expression "lVar25 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (bVar42 != 3) {\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }" if (parenthesized_expression "(bVar42 != 3)" ( (binary_expression "bVar42 != 3" identifier != number_literal) )) (compound_statement "{\n              pbVar27 = *(bfd_section **)&pbVar27->id;\n            }" { (expression_statement "pbVar27 = *(bfd_section **)&pbVar27->id;" (assignment_expression "pbVar27 = *(bfd_section **)&pbVar27->id" identifier = (pointer_expression "*(bfd_section **)&pbVar27->id" * (cast_expression "(bfd_section **)&pbVar27->id" ( (type_descriptor "bfd_section **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "&pbVar27->id" & (field_expression "pbVar27->id" identifier -> field_identifier))))) ;) })) (expression_statement "exported_symbol_sections[lVar16] = pbVar27;" (assignment_expression "exported_symbol_sections[lVar16] = pbVar27" (subscript_expression "exported_symbol_sections[lVar16]" identifier [ identifier ]) = identifier) ;) (expression_statement "iVar15 = pdVar24[lVar16].ordinal;" (assignment_expression "iVar15 = pdVar24[lVar16].ordinal" identifier = (field_expression "pdVar24[lVar16].ordinal" (subscript_expression "pdVar24[lVar16]" identifier [ identifier ]) . field_identifier)) ;) (labeled_statement "joined_r0x001527c9:\n            if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }" statement_identifier : (if_statement "if (iVar15 != -1) {\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }" if (parenthesized_expression "(iVar15 != -1)" ( (binary_expression "iVar15 != -1" identifier != number_literal) )) (compound_statement "{\n              if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }\n              if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }\n              count_with_ordinals = count_with_ordinals + 1;\n            }" { (if_statement "if (max_ordinal < iVar15) {\n                max_ordinal = iVar15;\n              }" if (parenthesized_expression "(max_ordinal < iVar15)" ( (binary_expression "max_ordinal < iVar15" identifier < identifier) )) (compound_statement "{\n                max_ordinal = iVar15;\n              }" { (expression_statement "max_ordinal = iVar15;" (assignment_expression "max_ordinal = iVar15" identifier = identifier) ;) })) (if_statement "if (iVar15 < min_ordinal) {\n                min_ordinal = iVar15;\n              }" if (parenthesized_expression "(iVar15 < min_ordinal)" ( (binary_expression "iVar15 < min_ordinal" identifier < identifier) )) (compound_statement "{\n                min_ordinal = iVar15;\n              }" { (expression_statement "min_ordinal = iVar15;" (assignment_expression "min_ordinal = iVar15" identifier = identifier) ;) })) (expression_statement "count_with_ordinals = count_with_ordinals + 1;" (assignment_expression "count_with_ordinals = count_with_ordinals + 1" identifier = (binary_expression "count_with_ordinals + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }" else (compound_statement "{\n            pcVar22 = strchr(pcVar17,0x2e);\n            if (pcVar22 != (char *)0x0) goto LAB_001528bb;\n            pcVar22 = "%X%P: cannot export %s: symbol not defined\n";\n            if (bVar42 == 1) goto LAB_00152d02;\n            pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );\n            einfo(pcVar22,pcVar17,(ulong)bVar42);\n            pdVar32 = pep_def_file;\n          }" { (expression_statement "pcVar22 = strchr(pcVar17,0x2e);" (assignment_expression "pcVar22 = strchr(pcVar17,0x2e)" identifier = (call_expression "strchr(pcVar17,0x2e)" identifier (argument_list "(pcVar17,0x2e)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar22 != (char *)0x0) goto LAB_001528bb;" if (parenthesized_expression "(pcVar22 != (char *)0x0)" ( (binary_expression "pcVar22 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001528bb;" goto statement_identifier ;)) (expression_statement "pcVar22 = "%X%P: cannot export %s: symbol not defined\n";" (assignment_expression "pcVar22 = "%X%P: cannot export %s: symbol not defined\n"" identifier = (string_literal ""%X%P: cannot export %s: symbol not defined\n"" " string_content escape_sequence ")) ;) (if_statement "if (bVar42 == 1) goto LAB_00152d02;" if (parenthesized_expression "(bVar42 == 1)" ( (binary_expression "bVar42 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00152d02;" goto statement_identifier ;)) (expression_statement "pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       );" (assignment_expression "pcVar22 = (char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       )" identifier = (cast_expression "(char *)dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       )" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       )" identifier (argument_list "(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5\n                                       )" ( number_literal , (string_literal ""%X%P: cannot export %s: symbol wrong type (%d vs %d)\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar22,pcVar17,(ulong)bVar42);" (call_expression "einfo(pcVar22,pcVar17,(ulong)bVar42)" identifier (argument_list "(pcVar22,pcVar17,(ulong)bVar42)" ( identifier , identifier , (cast_expression "(ulong)bVar42" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) }))) }))) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "free(pcVar20);" (call_expression "free(pcVar20)" identifier (argument_list "(pcVar20)" ( identifier ))) ;) (expression_statement "iVar15 = pdVar32->num_exports;" (assignment_expression "iVar15 = pdVar32->num_exports" identifier = (field_expression "pdVar32->num_exports" identifier -> field_identifier)) ;) }) while (parenthesized_expression "((int)lVar16 < iVar15)" ( (binary_expression "(int)lVar16 < iVar15" (cast_expression "(int)lVar16" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) (labeled_statement "joined_r0x00152ec1:\n    if (iVar15 == 0) goto LAB_00152950;" statement_identifier : (if_statement "if (iVar15 == 0) goto LAB_00152950;" if (parenthesized_expression "(iVar15 == 0)" ( (binary_expression "iVar15 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00152950;" goto statement_identifier ;))) }))) (expression_statement "dll_name = pdVar32->name;" (assignment_expression "dll_name = pdVar32->name" identifier = (field_expression "pdVar32->name" identifier -> field_identifier)) ;) (if_statement "if (dll_name == (char *)0x0) {\n    dll_name = abfd->filename;\n    cVar4 = *dll_name;\n    if (cVar4 != '\0') {\n      bVar41 = false;\n      pcVar17 = dll_name;\n      pcVar20 = dll_name;\n      do {\n        pcVar17 = pcVar17 + 1;\n        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }\n        cVar4 = *pcVar17;\n      } while (cVar4 != '\0');\n      if (bVar41) {\n        dll_name = pcVar20;\n      }\n    }\n  }" if (parenthesized_expression "(dll_name == (char *)0x0)" ( (binary_expression "dll_name == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    dll_name = abfd->filename;\n    cVar4 = *dll_name;\n    if (cVar4 != '\0') {\n      bVar41 = false;\n      pcVar17 = dll_name;\n      pcVar20 = dll_name;\n      do {\n        pcVar17 = pcVar17 + 1;\n        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }\n        cVar4 = *pcVar17;\n      } while (cVar4 != '\0');\n      if (bVar41) {\n        dll_name = pcVar20;\n      }\n    }\n  }" { (expression_statement "dll_name = abfd->filename;" (assignment_expression "dll_name = abfd->filename" identifier = (field_expression "abfd->filename" identifier -> field_identifier)) ;) (expression_statement "cVar4 = *dll_name;" (assignment_expression "cVar4 = *dll_name" identifier = (pointer_expression "*dll_name" * identifier)) ;) (if_statement "if (cVar4 != '\0') {\n      bVar41 = false;\n      pcVar17 = dll_name;\n      pcVar20 = dll_name;\n      do {\n        pcVar17 = pcVar17 + 1;\n        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }\n        cVar4 = *pcVar17;\n      } while (cVar4 != '\0');\n      if (bVar41) {\n        dll_name = pcVar20;\n      }\n    }" if (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      bVar41 = false;\n      pcVar17 = dll_name;\n      pcVar20 = dll_name;\n      do {\n        pcVar17 = pcVar17 + 1;\n        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }\n        cVar4 = *pcVar17;\n      } while (cVar4 != '\0');\n      if (bVar41) {\n        dll_name = pcVar20;\n      }\n    }" { (expression_statement "bVar41 = false;" (assignment_expression "bVar41 = false" identifier = false) ;) (expression_statement "pcVar17 = dll_name;" (assignment_expression "pcVar17 = dll_name" identifier = identifier) ;) (expression_statement "pcVar20 = dll_name;" (assignment_expression "pcVar20 = dll_name" identifier = identifier) ;) (do_statement "do {\n        pcVar17 = pcVar17 + 1;\n        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }\n        cVar4 = *pcVar17;\n      } while (cVar4 != '\0');" do (compound_statement "{\n        pcVar17 = pcVar17 + 1;\n        if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }\n        cVar4 = *pcVar17;\n      }" { (expression_statement "pcVar17 = pcVar17 + 1;" (assignment_expression "pcVar17 = pcVar17 + 1" identifier = (binary_expression "pcVar17 + 1" identifier + number_literal)) ;) (if_statement "if (((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }" if (parenthesized_expression "(((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0))" ( (binary_expression "((byte)(cVar4 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)" (parenthesized_expression "((byte)(cVar4 - 0x2fU) < 0x2e)" ( (binary_expression "(byte)(cVar4 - 0x2fU) < 0x2e" (call_expression "(byte)(cVar4 - 0x2fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar4 - 0x2fU)" ( (binary_expression "cVar4 - 0x2fU" identifier - number_literal) ))) < number_literal) )) && (parenthesized_expression "((~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0)" ( (binary_expression "(~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1) == 0" (parenthesized_expression "(~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1)" ( (binary_expression "~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f)) & 1" (unary_expression "~(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f))" ~ (call_expression "(uint)(0x200000000801 >> (cVar4 - 0x2fU & 0x3f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x200000000801 >> (cVar4 - 0x2fU & 0x3f))" ( (binary_expression "0x200000000801 >> (cVar4 - 0x2fU & 0x3f)" number_literal >> (parenthesized_expression "(cVar4 - 0x2fU & 0x3f)" ( (binary_expression "cVar4 - 0x2fU & 0x3f" (binary_expression "cVar4 - 0x2fU" identifier - number_literal) & number_literal) ))) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          bVar41 = true;\n          pcVar20 = pcVar17;\n        }" { (expression_statement "bVar41 = true;" (assignment_expression "bVar41 = true" identifier = true) ;) (expression_statement "pcVar20 = pcVar17;" (assignment_expression "pcVar20 = pcVar17" identifier = identifier) ;) })) (expression_statement "cVar4 = *pcVar17;" (assignment_expression "cVar4 = *pcVar17" identifier = (pointer_expression "*pcVar17" * identifier)) ;) }) while (parenthesized_expression "(cVar4 != '\0')" ( (binary_expression "cVar4 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (bVar41) {\n        dll_name = pcVar20;\n      }" if (parenthesized_expression "(bVar41)" ( identifier )) (compound_statement "{\n        dll_name = pcVar20;\n      }" { (expression_statement "dll_name = pcVar20;" (assignment_expression "dll_name = pcVar20" identifier = identifier) ;) })) })) })) (if_statement "if ((count_with_ordinals == 0) || (max_ordinal <= count_exported)) {\n    min_ordinal = 1;\n    max_ordinal = count_exported;\n  }\n  else {\n    iVar15 = (max_ordinal - count_exported) + 1;\n    if (iVar15 < min_ordinal) {\n      min_ordinal = iVar15;\n    }\n  }" if (parenthesized_expression "((count_with_ordinals == 0) || (max_ordinal <= count_exported))" ( (binary_expression "(count_with_ordinals == 0) || (max_ordinal <= count_exported)" (parenthesized_expression "(count_with_ordinals == 0)" ( (binary_expression "count_with_ordinals == 0" identifier == number_literal) )) || (parenthesized_expression "(max_ordinal <= count_exported)" ( (binary_expression "max_ordinal <= count_exported" identifier <= identifier) ))) )) (compound_statement "{\n    min_ordinal = 1;\n    max_ordinal = count_exported;\n  }" { (expression_statement "min_ordinal = 1;" (assignment_expression "min_ordinal = 1" identifier = number_literal) ;) (expression_statement "max_ordinal = count_exported;" (assignment_expression "max_ordinal = count_exported" identifier = identifier) ;) }) (else_clause "else {\n    iVar15 = (max_ordinal - count_exported) + 1;\n    if (iVar15 < min_ordinal) {\n      min_ordinal = iVar15;\n    }\n  }" else (compound_statement "{\n    iVar15 = (max_ordinal - count_exported) + 1;\n    if (iVar15 < min_ordinal) {\n      min_ordinal = iVar15;\n    }\n  }" { (expression_statement "iVar15 = (max_ordinal - count_exported) + 1;" (assignment_expression "iVar15 = (max_ordinal - count_exported) + 1" identifier = (binary_expression "(max_ordinal - count_exported) + 1" (parenthesized_expression "(max_ordinal - count_exported)" ( (binary_expression "max_ordinal - count_exported" identifier - identifier) )) + number_literal)) ;) (if_statement "if (iVar15 < min_ordinal) {\n      min_ordinal = iVar15;\n    }" if (parenthesized_expression "(iVar15 < min_ordinal)" ( (binary_expression "iVar15 < min_ordinal" identifier < identifier) )) (compound_statement "{\n      min_ordinal = iVar15;\n    }" { (expression_statement "min_ordinal = iVar15;" (assignment_expression "min_ordinal = iVar15" identifier = identifier) ;) })) }))) (expression_statement "export_table_size = (max_ordinal - min_ordinal) + 1;" (assignment_expression "export_table_size = (max_ordinal - min_ordinal) + 1" identifier = (binary_expression "(max_ordinal - min_ordinal) + 1" (parenthesized_expression "(max_ordinal - min_ordinal)" ( (binary_expression "max_ordinal - min_ordinal" identifier - identifier) )) + number_literal)) ;) (expression_statement "piVar23 = (int *)xmalloc((long)export_table_size << 2);" (assignment_expression "piVar23 = (int *)xmalloc((long)export_table_size << 2)" identifier = (cast_expression "(int *)xmalloc((long)export_table_size << 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)export_table_size << 2)" identifier (argument_list "((long)export_table_size << 2)" ( (binary_expression "(long)export_table_size << 2" (cast_expression "(long)export_table_size" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "exported_symbols = piVar23;" (assignment_expression "exported_symbols = piVar23" identifier = identifier) ;) (if_statement "if (0 < export_table_size) {\n    piVar26 = piVar23 + (ulong)(export_table_size - 1) + 1;\n    do {\n      *piVar23 = -1;\n      piVar23 = piVar23 + 1;\n    } while (piVar26 != piVar23);\n  }" if (parenthesized_expression "(0 < export_table_size)" ( (binary_expression "0 < export_table_size" number_literal < identifier) )) (compound_statement "{\n    piVar26 = piVar23 + (ulong)(export_table_size - 1) + 1;\n    do {\n      *piVar23 = -1;\n      piVar23 = piVar23 + 1;\n    } while (piVar26 != piVar23);\n  }" { (expression_statement "piVar26 = piVar23 + (ulong)(export_table_size - 1) + 1;" (assignment_expression "piVar26 = piVar23 + (ulong)(export_table_size - 1) + 1" identifier = (binary_expression "piVar23 + (ulong)(export_table_size - 1) + 1" (binary_expression "piVar23 + (ulong)(export_table_size - 1)" identifier + (call_expression "(ulong)(export_table_size - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(export_table_size - 1)" ( (binary_expression "export_table_size - 1" identifier - number_literal) )))) + number_literal)) ;) (do_statement "do {\n      *piVar23 = -1;\n      piVar23 = piVar23 + 1;\n    } while (piVar26 != piVar23);" do (compound_statement "{\n      *piVar23 = -1;\n      piVar23 = piVar23 + 1;\n    }" { (expression_statement "*piVar23 = -1;" (assignment_expression "*piVar23 = -1" (pointer_expression "*piVar23" * identifier) = number_literal) ;) (expression_statement "piVar23 = piVar23 + 1;" (assignment_expression "piVar23 = piVar23 + 1" identifier = (binary_expression "piVar23 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(piVar26 != piVar23)" ( (binary_expression "piVar26 != piVar23" identifier != identifier) )) ;) })) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "local_68 = min_ordinal;" (assignment_expression "local_68 = min_ordinal" identifier = identifier) ;) (expression_statement "uVar28 = min_ordinal;" (assignment_expression "uVar28 = min_ordinal" identifier = identifier) ;) (if_statement "if (pep_def_file->num_exports < 1) goto LAB_00152b30;" if (parenthesized_expression "(pep_def_file->num_exports < 1)" ( (binary_expression "pep_def_file->num_exports < 1" (field_expression "pep_def_file->num_exports" identifier -> field_identifier) < number_literal) )) (goto_statement "goto LAB_00152b30;" goto statement_identifier ;)) (expression_statement "pdVar24 = pep_def_file->exports;" (assignment_expression "pdVar24 = pep_def_file->exports" identifier = (field_expression "pep_def_file->exports" identifier -> field_identifier)) ;) (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (expression_statement "iVar15 = 0;" (assignment_expression "iVar15 = 0" identifier = number_literal) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) (do_statement "do {\n    pdVar30 = pdVar24 + lVar16;\n    if ((exported_symbol_sections[lVar16] == (bfd_section *)0x0) && (pdVar30->flag_forward == '\0'))\n    {\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n    }\n    else {\n      iVar31 = pdVar30->ordinal;\n      if (iVar31 != -1) {\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n      pcVar17 = pdVar30->its_name;\n      if (pcVar17 == (char *)0x0) {\n        pcVar17 = pdVar30->name;\n      }\n      sVar19 = strlen(pcVar17);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    if (pdVar30->flag_forward != '\0') {\n      sVar19 = strlen(pdVar30->internal_name);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    ppbVar12 = exported_symbol_sections;\n    piVar23 = exported_symbols;\n    lVar16 = lVar16 + 1;\n  } while ((int)lVar16 < pdVar32->num_exports);" do (compound_statement "{\n    pdVar30 = pdVar24 + lVar16;\n    if ((exported_symbol_sections[lVar16] == (bfd_section *)0x0) && (pdVar30->flag_forward == '\0'))\n    {\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n    }\n    else {\n      iVar31 = pdVar30->ordinal;\n      if (iVar31 != -1) {\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n      pcVar17 = pdVar30->its_name;\n      if (pcVar17 == (char *)0x0) {\n        pcVar17 = pdVar30->name;\n      }\n      sVar19 = strlen(pcVar17);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    if (pdVar30->flag_forward != '\0') {\n      sVar19 = strlen(pdVar30->internal_name);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }\n    ppbVar12 = exported_symbol_sections;\n    piVar23 = exported_symbols;\n    lVar16 = lVar16 + 1;\n  }" { (expression_statement "pdVar30 = pdVar24 + lVar16;" (assignment_expression "pdVar30 = pdVar24 + lVar16" identifier = (binary_expression "pdVar24 + lVar16" identifier + identifier)) ;) (if_statement "if ((exported_symbol_sections[lVar16] == (bfd_section *)0x0) && (pdVar30->flag_forward == '\0'))\n    {\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n    }\n    else {\n      iVar31 = pdVar30->ordinal;\n      if (iVar31 != -1) {\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n      pcVar17 = pdVar30->its_name;\n      if (pcVar17 == (char *)0x0) {\n        pcVar17 = pdVar30->name;\n      }\n      sVar19 = strlen(pcVar17);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }" if (parenthesized_expression "((exported_symbol_sections[lVar16] == (bfd_section *)0x0) && (pdVar30->flag_forward == '\0'))" ( (binary_expression "(exported_symbol_sections[lVar16] == (bfd_section *)0x0) && (pdVar30->flag_forward == '\0')" (parenthesized_expression "(exported_symbol_sections[lVar16] == (bfd_section *)0x0)" ( (binary_expression "exported_symbol_sections[lVar16] == (bfd_section *)0x0" (subscript_expression "exported_symbol_sections[lVar16]" identifier [ identifier ]) == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pdVar30->flag_forward == '\0')" ( (binary_expression "pdVar30->flag_forward == '\0'" (field_expression "pdVar30->flag_forward" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n    }" { (expression_statement "pdVar24 = pdVar32->exports;" (assignment_expression "pdVar24 = pdVar32->exports" identifier = (field_expression "pdVar32->exports" identifier -> field_identifier)) ;) (expression_statement "pdVar30 = pdVar24 + lVar16;" (assignment_expression "pdVar30 = pdVar24 + lVar16" identifier = (binary_expression "pdVar24 + lVar16" identifier + identifier)) ;) }) (else_clause "else {\n      iVar31 = pdVar30->ordinal;\n      if (iVar31 != -1) {\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n      pcVar17 = pdVar30->its_name;\n      if (pcVar17 == (char *)0x0) {\n        pcVar17 = pdVar30->name;\n      }\n      sVar19 = strlen(pcVar17);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }" else (compound_statement "{\n      iVar31 = pdVar30->ordinal;\n      if (iVar31 != -1) {\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }\n      pdVar24 = pdVar32->exports;\n      pdVar30 = pdVar24 + lVar16;\n      pcVar17 = pdVar30->its_name;\n      if (pcVar17 == (char *)0x0) {\n        pcVar17 = pdVar30->name;\n      }\n      sVar19 = strlen(pcVar17);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }" { (expression_statement "iVar31 = pdVar30->ordinal;" (assignment_expression "iVar31 = pdVar30->ordinal" identifier = (field_expression "pdVar30->ordinal" identifier -> field_identifier)) ;) (if_statement "if (iVar31 != -1) {\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }" if (parenthesized_expression "(iVar31 != -1)" ( (binary_expression "iVar31 != -1" identifier != number_literal) )) (compound_statement "{\n        iVar38 = iVar31 - local_68;\n        piVar23 = exported_symbols + iVar38;\n        if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }\n        *piVar23 = (int)lVar16;\n      }" { (expression_statement "iVar38 = iVar31 - local_68;" (assignment_expression "iVar38 = iVar31 - local_68" identifier = (binary_expression "iVar31 - local_68" identifier - identifier)) ;) (expression_statement "piVar23 = exported_symbols + iVar38;" (assignment_expression "piVar23 = exported_symbols + iVar38" identifier = (binary_expression "exported_symbols + iVar38" identifier + identifier)) ;) (if_statement "if (*piVar23 != -1) {\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }" if (parenthesized_expression "(*piVar23 != -1)" ( (binary_expression "*piVar23 != -1" (pointer_expression "*piVar23" * identifier) != number_literal) )) (compound_statement "{\n          pcVar17 = pdVar30->name;\n          pcVar20 = pdVar24[*piVar23].name;\n          pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          einfo(pcVar22,iVar31,pcVar17,pcVar20);\n          local_68 = min_ordinal;\n          piVar23 = exported_symbols + iVar38;\n          pdVar32 = pep_def_file;\n        }" { (expression_statement "pcVar17 = pdVar30->name;" (assignment_expression "pcVar17 = pdVar30->name" identifier = (field_expression "pdVar30->name" identifier -> field_identifier)) ;) (expression_statement "pcVar20 = pdVar24[*piVar23].name;" (assignment_expression "pcVar20 = pdVar24[*piVar23].name" identifier = (field_expression "pdVar24[*piVar23].name" (subscript_expression "pdVar24[*piVar23]" identifier [ (pointer_expression "*piVar23" * identifier) ]) . field_identifier)) ;) (expression_statement "pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);" (assignment_expression "pcVar22 = (char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" identifier (argument_list "(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" ( number_literal , (string_literal ""%X%P: error: ordinal used twice: %d (%s vs %s)\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar22,iVar31,pcVar17,pcVar20);" (call_expression "einfo(pcVar22,iVar31,pcVar17,pcVar20)" identifier (argument_list "(pcVar22,iVar31,pcVar17,pcVar20)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_68 = min_ordinal;" (assignment_expression "local_68 = min_ordinal" identifier = identifier) ;) (expression_statement "piVar23 = exported_symbols + iVar38;" (assignment_expression "piVar23 = exported_symbols + iVar38" identifier = (binary_expression "exported_symbols + iVar38" identifier + identifier)) ;) (expression_statement "pdVar32 = pep_def_file;" (assignment_expression "pdVar32 = pep_def_file" identifier = identifier) ;) })) (expression_statement "*piVar23 = (int)lVar16;" (assignment_expression "*piVar23 = (int)lVar16" (pointer_expression "*piVar23" * identifier) = (cast_expression "(int)lVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "pdVar24 = pdVar32->exports;" (assignment_expression "pdVar24 = pdVar32->exports" identifier = (field_expression "pdVar32->exports" identifier -> field_identifier)) ;) (expression_statement "pdVar30 = pdVar24 + lVar16;" (assignment_expression "pdVar30 = pdVar24 + lVar16" identifier = (binary_expression "pdVar24 + lVar16" identifier + identifier)) ;) (expression_statement "pcVar17 = pdVar30->its_name;" (assignment_expression "pcVar17 = pdVar30->its_name" identifier = (field_expression "pdVar30->its_name" identifier -> field_identifier)) ;) (if_statement "if (pcVar17 == (char *)0x0) {\n        pcVar17 = pdVar30->name;\n      }" if (parenthesized_expression "(pcVar17 == (char *)0x0)" ( (binary_expression "pcVar17 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar17 = pdVar30->name;\n      }" { (expression_statement "pcVar17 = pdVar30->name;" (assignment_expression "pcVar17 = pdVar30->name" identifier = (field_expression "pdVar30->name" identifier -> field_identifier)) ;) })) (expression_statement "sVar19 = strlen(pcVar17);" (assignment_expression "sVar19 = strlen(pcVar17)" identifier = (call_expression "strlen(pcVar17)" identifier (argument_list "(pcVar17)" ( identifier )))) ;) (expression_statement "iVar15 = iVar15 + 1 + (int)sVar19;" (assignment_expression "iVar15 = iVar15 + 1 + (int)sVar19" identifier = (binary_expression "iVar15 + 1 + (int)sVar19" (binary_expression "iVar15 + 1" identifier + number_literal) + (cast_expression "(int)sVar19" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (if_statement "if (pdVar30->flag_forward != '\0') {\n      sVar19 = strlen(pdVar30->internal_name);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }" if (parenthesized_expression "(pdVar30->flag_forward != '\0')" ( (binary_expression "pdVar30->flag_forward != '\0'" (field_expression "pdVar30->flag_forward" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar19 = strlen(pdVar30->internal_name);\n      iVar15 = iVar15 + 1 + (int)sVar19;\n    }" { (expression_statement "sVar19 = strlen(pdVar30->internal_name);" (assignment_expression "sVar19 = strlen(pdVar30->internal_name)" identifier = (call_expression "strlen(pdVar30->internal_name)" identifier (argument_list "(pdVar30->internal_name)" ( (field_expression "pdVar30->internal_name" identifier -> field_identifier) )))) ;) (expression_statement "iVar15 = iVar15 + 1 + (int)sVar19;" (assignment_expression "iVar15 = iVar15 + 1 + (int)sVar19" identifier = (binary_expression "iVar15 + 1 + (int)sVar19" (binary_expression "iVar15 + 1" identifier + number_literal) + (cast_expression "(int)sVar19" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "ppbVar12 = exported_symbol_sections;" (assignment_expression "ppbVar12 = exported_symbol_sections" identifier = identifier) ;) (expression_statement "piVar23 = exported_symbols;" (assignment_expression "piVar23 = exported_symbols" identifier = identifier) ;) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar16 < pdVar32->num_exports)" ( (binary_expression "(int)lVar16 < pdVar32->num_exports" (cast_expression "(int)lVar16" ( (type_descriptor "int" primitive_type) ) identifier) < (field_expression "pdVar32->num_exports" identifier -> field_identifier)) )) ;) (expression_statement "uVar28 = local_68;" (assignment_expression "uVar28 = local_68" identifier = identifier) ;) (if_statement "if (pdVar32->num_exports < 1) goto LAB_00152b30;" if (parenthesized_expression "(pdVar32->num_exports < 1)" ( (binary_expression "pdVar32->num_exports < 1" (field_expression "pdVar32->num_exports" identifier -> field_identifier) < number_literal) )) (goto_statement "goto LAB_00152b30;" goto statement_identifier ;)) (expression_statement "piVar26 = &pdVar24->ordinal;" (assignment_expression "piVar26 = &pdVar24->ordinal" identifier = (pointer_expression "&pdVar24->ordinal" & (field_expression "pdVar24->ordinal" identifier -> field_identifier))) ;) (expression_statement "lVar16 = 0;" (assignment_expression "lVar16 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (ppbVar12[lVar16] == (bfd_section *)0x0) {\n      if (*(char *)(piVar26 + 3) != '\0') {\n        uVar37 = *piVar26;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      uVar37 = *piVar26;\njoined_r0x00152c53:\n      if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }\n    }\n    lVar16 = lVar16 + 1;\n    piVar26 = piVar26 + 10;\n    if (pdVar32->num_exports <= (int)lVar16) {\nLAB_00152b30:\n      iVar31 = max_ordinal;\n      if ((0xffff < max_ordinal) || (0xffff < (int)uVar28)) {\n        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }\n        einfo(pcVar17,(ulong)uVar28);\n      }\n      iVar31 = count_exported_byname;\n      sVar19 = strlen(dll_name);\n      edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4);\n      build_filler_bfd(1);\n      pep_output_file_set_long_section_names(filler_bfd);\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    if (ppbVar12[lVar16] == (bfd_section *)0x0) {\n      if (*(char *)(piVar26 + 3) != '\0') {\n        uVar37 = *piVar26;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      uVar37 = *piVar26;\njoined_r0x00152c53:\n      if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }\n    }\n    lVar16 = lVar16 + 1;\n    piVar26 = piVar26 + 10;\n    if (pdVar32->num_exports <= (int)lVar16) {\nLAB_00152b30:\n      iVar31 = max_ordinal;\n      if ((0xffff < max_ordinal) || (0xffff < (int)uVar28)) {\n        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }\n        einfo(pcVar17,(ulong)uVar28);\n      }\n      iVar31 = count_exported_byname;\n      sVar19 = strlen(dll_name);\n      edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4);\n      build_filler_bfd(1);\n      pep_output_file_set_long_section_names(filler_bfd);\n      return;\n    }\n  }" { (if_statement "if (ppbVar12[lVar16] == (bfd_section *)0x0) {\n      if (*(char *)(piVar26 + 3) != '\0') {\n        uVar37 = *piVar26;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      uVar37 = *piVar26;\njoined_r0x00152c53:\n      if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }\n    }" if (parenthesized_expression "(ppbVar12[lVar16] == (bfd_section *)0x0)" ( (binary_expression "ppbVar12[lVar16] == (bfd_section *)0x0" (subscript_expression "ppbVar12[lVar16]" identifier [ identifier ]) == (cast_expression "(bfd_section *)0x0" ( (type_descriptor "bfd_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if (*(char *)(piVar26 + 3) != '\0') {\n        uVar37 = *piVar26;\n        goto joined_r0x00152c53;\n      }\n    }" { (if_statement "if (*(char *)(piVar26 + 3) != '\0') {\n        uVar37 = *piVar26;\n        goto joined_r0x00152c53;\n      }" if (parenthesized_expression "(*(char *)(piVar26 + 3) != '\0')" ( (binary_expression "*(char *)(piVar26 + 3) != '\0'" (pointer_expression "*(char *)(piVar26 + 3)" * (cast_expression "(char *)(piVar26 + 3)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar26 + 3)" ( (binary_expression "piVar26 + 3" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        uVar37 = *piVar26;\n        goto joined_r0x00152c53;\n      }" { (expression_statement "uVar37 = *piVar26;" (assignment_expression "uVar37 = *piVar26" identifier = (pointer_expression "*piVar26" * identifier)) ;) (goto_statement "goto joined_r0x00152c53;" goto statement_identifier ;) })) }) (else_clause "else {\n      uVar37 = *piVar26;\njoined_r0x00152c53:\n      if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }\n    }" else (compound_statement "{\n      uVar37 = *piVar26;\njoined_r0x00152c53:\n      if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }\n    }" { (expression_statement "uVar37 = *piVar26;" (assignment_expression "uVar37 = *piVar26" identifier = (pointer_expression "*piVar26" * identifier)) ;) (labeled_statement "joined_r0x00152c53:\n      if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }" statement_identifier : (if_statement "if (uVar37 == 0xffffffff) {\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }" if (parenthesized_expression "(uVar37 == 0xffffffff)" ( (binary_expression "uVar37 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n        piVar34 = piVar23 + (int)(uVar28 - local_68);\n        if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }\n        *piVar34 = (int)lVar16;\n        *piVar26 = uVar28;\n      }" { (expression_statement "piVar34 = piVar23 + (int)(uVar28 - local_68);" (assignment_expression "piVar34 = piVar23 + (int)(uVar28 - local_68)" identifier = (binary_expression "piVar23 + (int)(uVar28 - local_68)" identifier + (cast_expression "(int)(uVar28 - local_68)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(uVar28 - local_68)" ( (binary_expression "uVar28 - local_68" identifier - identifier) ))))) ;) (if_statement "if (*piVar34 != -1) {\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }" if (parenthesized_expression "(*piVar34 != -1)" ( (binary_expression "*piVar34 != -1" (pointer_expression "*piVar34" * identifier) != number_literal) )) (compound_statement "{\n          piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);\n          do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);\n        }" { (expression_statement "piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68);" (assignment_expression "piVar13 = piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68)" identifier = (binary_expression "piVar23 + (long)(int)uVar28 + (1 - (long)(int)local_68)" (binary_expression "piVar23 + (long)(int)uVar28" identifier + (cast_expression "(long)(int)uVar28" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier))) + (parenthesized_expression "(1 - (long)(int)local_68)" ( (binary_expression "1 - (long)(int)local_68" number_literal - (cast_expression "(long)(int)local_68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)local_68" ( (type_descriptor "int" primitive_type) ) identifier))) )))) ;) (do_statement "do {\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          } while (*piVar34 != -1);" do (compound_statement "{\n            piVar34 = piVar13;\n            uVar28 = uVar28 + 1;\n            piVar13 = piVar34 + 1;\n          }" { (expression_statement "piVar34 = piVar13;" (assignment_expression "piVar34 = piVar13" identifier = identifier) ;) (expression_statement "uVar28 = uVar28 + 1;" (assignment_expression "uVar28 = uVar28 + 1" identifier = (binary_expression "uVar28 + 1" identifier + number_literal)) ;) (expression_statement "piVar13 = piVar34 + 1;" (assignment_expression "piVar13 = piVar34 + 1" identifier = (binary_expression "piVar34 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar34 != -1)" ( (binary_expression "*piVar34 != -1" (pointer_expression "*piVar34" * identifier) != number_literal) )) ;) })) (expression_statement "*piVar34 = (int)lVar16;" (assignment_expression "*piVar34 = (int)lVar16" (pointer_expression "*piVar34" * identifier) = (cast_expression "(int)lVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar26 = uVar28;" (assignment_expression "*piVar26 = uVar28" (pointer_expression "*piVar26" * identifier) = identifier) ;) }))) }))) (expression_statement "lVar16 = lVar16 + 1;" (assignment_expression "lVar16 = lVar16 + 1" identifier = (binary_expression "lVar16 + 1" identifier + number_literal)) ;) (expression_statement "piVar26 = piVar26 + 10;" (assignment_expression "piVar26 = piVar26 + 10" identifier = (binary_expression "piVar26 + 10" identifier + number_literal)) ;) (if_statement "if (pdVar32->num_exports <= (int)lVar16) {\nLAB_00152b30:\n      iVar31 = max_ordinal;\n      if ((0xffff < max_ordinal) || (0xffff < (int)uVar28)) {\n        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }\n        einfo(pcVar17,(ulong)uVar28);\n      }\n      iVar31 = count_exported_byname;\n      sVar19 = strlen(dll_name);\n      edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4);\n      build_filler_bfd(1);\n      pep_output_file_set_long_section_names(filler_bfd);\n      return;\n    }" if (parenthesized_expression "(pdVar32->num_exports <= (int)lVar16)" ( (binary_expression "pdVar32->num_exports <= (int)lVar16" (field_expression "pdVar32->num_exports" identifier -> field_identifier) <= (cast_expression "(int)lVar16" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00152b30:\n      iVar31 = max_ordinal;\n      if ((0xffff < max_ordinal) || (0xffff < (int)uVar28)) {\n        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }\n        einfo(pcVar17,(ulong)uVar28);\n      }\n      iVar31 = count_exported_byname;\n      sVar19 = strlen(dll_name);\n      edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4);\n      build_filler_bfd(1);\n      pep_output_file_set_long_section_names(filler_bfd);\n      return;\n    }" { (labeled_statement "LAB_00152b30:\n      iVar31 = max_ordinal;" statement_identifier : (expression_statement "iVar31 = max_ordinal;" (assignment_expression "iVar31 = max_ordinal" identifier = identifier) ;)) (if_statement "if ((0xffff < max_ordinal) || (0xffff < (int)uVar28)) {\n        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }\n        einfo(pcVar17,(ulong)uVar28);\n      }" if (parenthesized_expression "((0xffff < max_ordinal) || (0xffff < (int)uVar28))" ( (binary_expression "(0xffff < max_ordinal) || (0xffff < (int)uVar28)" (parenthesized_expression "(0xffff < max_ordinal)" ( (binary_expression "0xffff < max_ordinal" number_literal < identifier) )) || (parenthesized_expression "(0xffff < (int)uVar28)" ( (binary_expression "0xffff < (int)uVar28" number_literal < (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )) (compound_statement "{\n        pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }\n        einfo(pcVar17,(ulong)uVar28);\n      }" { (expression_statement "pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);" (assignment_expression "pcVar17 = (char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5)" identifier (argument_list "(0,"%X%P: error: export ordinal too large: %d\n",5)" ( number_literal , (string_literal ""%X%P: error: export ordinal too large: %d\n"" " string_content escape_sequence ") , number_literal ))))) ;) (if_statement "if ((int)uVar28 <= iVar31) {\n          uVar28 = iVar31;\n        }" if (parenthesized_expression "((int)uVar28 <= iVar31)" ( (binary_expression "(int)uVar28 <= iVar31" (cast_expression "(int)uVar28" ( (type_descriptor "int" primitive_type) ) identifier) <= identifier) )) (compound_statement "{\n          uVar28 = iVar31;\n        }" { (expression_statement "uVar28 = iVar31;" (assignment_expression "uVar28 = iVar31" identifier = identifier) ;) })) (expression_statement "einfo(pcVar17,(ulong)uVar28);" (call_expression "einfo(pcVar17,(ulong)uVar28)" identifier (argument_list "(pcVar17,(ulong)uVar28)" ( identifier , (cast_expression "(ulong)uVar28" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) })) (expression_statement "iVar31 = count_exported_byname;" (assignment_expression "iVar31 = count_exported_byname" identifier = identifier) ;) (expression_statement "sVar19 = strlen(dll_name);" (assignment_expression "sVar19 = strlen(dll_name)" identifier = (call_expression "strlen(dll_name)" identifier (argument_list "(dll_name)" ( identifier )))) ;) (expression_statement "edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4);" (assignment_expression "edata_sz = sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4)" identifier = (binary_expression "sVar19 + 1 + (long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4)" (binary_expression "sVar19 + 1" identifier + number_literal) + (cast_expression "(long)(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4)" ( (binary_expression "iVar15 + iVar31 * 6 + 0x28 + export_table_size * 4" (binary_expression "iVar15 + iVar31 * 6 + 0x28" (binary_expression "iVar15 + iVar31 * 6" identifier + (binary_expression "iVar31 * 6" identifier * number_literal)) + number_literal) + (binary_expression "export_table_size * 4" identifier * number_literal)) ))))) ;) (expression_statement "build_filler_bfd(1);" (call_expression "build_filler_bfd(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "pep_output_file_set_long_section_names(filler_bfd);" (call_expression "pep_output_file_set_long_section_names(filler_bfd)" identifier (argument_list "(filler_bfd)" ( identifier ))) ;) (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x001521e2:\n  pdVar29 = pdVar29->next;" statement_identifier : (expression_statement "pdVar29 = pdVar29->next;" (assignment_expression "pdVar29 = pdVar29->next" identifier = (field_expression "pdVar29->next" identifier -> field_identifier)) ;)) (expression_statement "**(uint **)(lVar16 + 0x28) = *puVar1;" (assignment_expression "**(uint **)(lVar16 + 0x28) = *puVar1" (pointer_expression "**(uint **)(lVar16 + 0x28)" * (pointer_expression "*(uint **)(lVar16 + 0x28)" * (cast_expression "(uint **)(lVar16 + 0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar16 + 0x28)" ( (binary_expression "lVar16 + 0x28" identifier + number_literal) ))))) = (pointer_expression "*puVar1" * identifier)) ;) (goto_statement "goto joined_r0x001521ab;" goto statement_identifier ;) })))
(translation_unit "void FUN_001520f0(undefined8 *param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long *plVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  ulong uVar6;\n  long lVar7;\n  int *piVar8;\n  byte bVar9;\n  int iVar10;\n  long lVar11;\n  void *pvVar12;\n  size_t sVar13;\n  char *pcVar14;\n  char *pcVar15;\n  undefined8 uVar16;\n  long lVar17;\n  char *pcVar18;\n  undefined4 *puVar19;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  int iVar22;\n  int *piVar23;\n  long *plVar24;\n  long lVar25;\n  undefined8 *puVar26;\n  int iVar27;\n  byte *pbVar28;\n  undefined8 *puVar29;\n  uint uVar30;\n  byte *pbVar31;\n  int *piVar32;\n  byte *pbVar33;\n  uint uVar34;\n  int iVar35;\n  undefined8 *puVar36;\n  bool bVar37;\n  bool bVar38;\n  byte bVar39;\n  int local_68;\n  int local_3c [3];\n  \n  bVar39 = 0;\n  FUN_0014f0a0(*(undefined8 *)param_1[1]);\n  FUN_00152090(param_1);\n  if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }\n  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }\n  plVar24 = (long *)DAT_002b5af8[0xe];\njoined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }\n  bVar9 = *param_2;\n  if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }\n  DAT_002b5b68 = (char *)*puVar29;\n  if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }\n  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }\n  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;\n  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);\n  DAT_002b5b58 = puVar19;\n  if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }\n  iVar27 = 0;\n  local_68 = DAT_002b5b64;\n  iVar10 = DAT_002b5b64;\n  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;\n  lVar25 = DAT_002b5af8[9];\n  lVar11 = 0;\n  iVar27 = 0;\n  puVar29 = DAT_002b5af8;\n  do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));\n  iVar10 = local_68;\n  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;\n  piVar23 = (int *)(lVar25 + 0x18);\n  lVar25 = 0;\n  do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  plVar24 = (long *)*plVar24;\n  **(uint **)(lVar25 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}\n\n" (function_definition "void FUN_001520f0(undefined8 *param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long *plVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  ulong uVar6;\n  long lVar7;\n  int *piVar8;\n  byte bVar9;\n  int iVar10;\n  long lVar11;\n  void *pvVar12;\n  size_t sVar13;\n  char *pcVar14;\n  char *pcVar15;\n  undefined8 uVar16;\n  long lVar17;\n  char *pcVar18;\n  undefined4 *puVar19;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  int iVar22;\n  int *piVar23;\n  long *plVar24;\n  long lVar25;\n  undefined8 *puVar26;\n  int iVar27;\n  byte *pbVar28;\n  undefined8 *puVar29;\n  uint uVar30;\n  byte *pbVar31;\n  int *piVar32;\n  byte *pbVar33;\n  uint uVar34;\n  int iVar35;\n  undefined8 *puVar36;\n  bool bVar37;\n  bool bVar38;\n  byte bVar39;\n  int local_68;\n  int local_3c [3];\n  \n  bVar39 = 0;\n  FUN_0014f0a0(*(undefined8 *)param_1[1]);\n  FUN_00152090(param_1);\n  if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }\n  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }\n  plVar24 = (long *)DAT_002b5af8[0xe];\njoined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }\n  bVar9 = *param_2;\n  if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }\n  DAT_002b5b68 = (char *)*puVar29;\n  if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }\n  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }\n  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;\n  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);\n  DAT_002b5b58 = puVar19;\n  if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }\n  iVar27 = 0;\n  local_68 = DAT_002b5b64;\n  iVar10 = DAT_002b5b64;\n  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;\n  lVar25 = DAT_002b5af8[9];\n  lVar11 = 0;\n  iVar27 = 0;\n  puVar29 = DAT_002b5af8;\n  do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));\n  iVar10 = local_68;\n  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;\n  piVar23 = (int *)(lVar25 + 0x18);\n  lVar25 = 0;\n  do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  plVar24 = (long *)*plVar24;\n  **(uint **)(lVar25 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}" primitive_type (function_declarator "FUN_001520f0(undefined8 *param_1,byte *param_2)" identifier (parameter_list "(undefined8 *param_1,byte *param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long *plVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  ulong uVar6;\n  long lVar7;\n  int *piVar8;\n  byte bVar9;\n  int iVar10;\n  long lVar11;\n  void *pvVar12;\n  size_t sVar13;\n  char *pcVar14;\n  char *pcVar15;\n  undefined8 uVar16;\n  long lVar17;\n  char *pcVar18;\n  undefined4 *puVar19;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  int iVar22;\n  int *piVar23;\n  long *plVar24;\n  long lVar25;\n  undefined8 *puVar26;\n  int iVar27;\n  byte *pbVar28;\n  undefined8 *puVar29;\n  uint uVar30;\n  byte *pbVar31;\n  int *piVar32;\n  byte *pbVar33;\n  uint uVar34;\n  int iVar35;\n  undefined8 *puVar36;\n  bool bVar37;\n  bool bVar38;\n  byte bVar39;\n  int local_68;\n  int local_3c [3];\n  \n  bVar39 = 0;\n  FUN_0014f0a0(*(undefined8 *)param_1[1]);\n  FUN_00152090(param_1);\n  if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }\n  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }\n  plVar24 = (long *)DAT_002b5af8[0xe];\njoined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }\n  bVar9 = *param_2;\n  if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }\n  DAT_002b5b68 = (char *)*puVar29;\n  if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }\n  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }\n  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;\n  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);\n  DAT_002b5b58 = puVar19;\n  if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }\n  iVar27 = 0;\n  local_68 = DAT_002b5b64;\n  iVar10 = DAT_002b5b64;\n  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;\n  lVar25 = DAT_002b5af8[9];\n  lVar11 = 0;\n  iVar27 = 0;\n  puVar29 = DAT_002b5af8;\n  do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));\n  iVar10 = local_68;\n  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;\n  piVar23 = (int *)(lVar25 + 0x18);\n  lVar25 = 0;\n  do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  plVar24 = (long *)*plVar24;\n  **(uint **)(lVar25 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}" { (declaration "uint *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char cVar5;" primitive_type identifier ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "byte bVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "void *pvVar12;" primitive_type (pointer_declarator "*pvVar12" * identifier) ;) (declaration "size_t sVar13;" primitive_type identifier ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "char *pcVar15;" primitive_type (pointer_declarator "*pcVar15" * identifier) ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "long lVar17;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "undefined4 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "undefined8 uVar20;" type_identifier identifier ;) (declaration "undefined8 uVar21;" type_identifier identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "long *plVar24;" (sized_type_specifier "long" long) (pointer_declarator "*plVar24" * identifier) ;) (declaration "long lVar25;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "int iVar27;" primitive_type identifier ;) (declaration "byte *pbVar28;" type_identifier (pointer_declarator "*pbVar28" * identifier) ;) (declaration "undefined8 *puVar29;" type_identifier (pointer_declarator "*puVar29" * identifier) ;) (declaration "uint uVar30;" type_identifier identifier ;) (declaration "byte *pbVar31;" type_identifier (pointer_declarator "*pbVar31" * identifier) ;) (declaration "int *piVar32;" primitive_type (pointer_declarator "*piVar32" * identifier) ;) (declaration "byte *pbVar33;" type_identifier (pointer_declarator "*pbVar33" * identifier) ;) (declaration "uint uVar34;" type_identifier identifier ;) (declaration "int iVar35;" primitive_type identifier ;) (declaration "undefined8 *puVar36;" type_identifier (pointer_declarator "*puVar36" * identifier) ;) (declaration "bool bVar37;" primitive_type identifier ;) (declaration "bool bVar38;" primitive_type identifier ;) (declaration "byte bVar39;" type_identifier identifier ;) (declaration "int local_68;" primitive_type identifier ;) (declaration "int local_3c [3];" primitive_type (array_declarator "local_3c [3]" identifier [ number_literal ]) ;) (expression_statement "bVar39 = 0;" (assignment_expression "bVar39 = 0" identifier = number_literal) ;) (expression_statement "FUN_0014f0a0(*(undefined8 *)param_1[1]);" (call_expression "FUN_0014f0a0(*(undefined8 *)param_1[1])" identifier (argument_list "(*(undefined8 *)param_1[1])" ( (pointer_expression "*(undefined8 *)param_1[1]" * (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ))) ;) (expression_statement "FUN_00152090(param_1);" (call_expression "FUN_00152090(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }" if (parenthesized_expression "(DAT_002b5af8 == (undefined8 *)0x0)" ( (binary_expression "DAT_002b5af8 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }" { (expression_statement "DAT_002b5af8 = (undefined8 *)FUN_0014aee0();" (assignment_expression "DAT_002b5af8 = (undefined8 *)FUN_0014aee0()" identifier = (cast_expression "(undefined8 *)FUN_0014aee0()" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0014aee0()" identifier (argument_list "()" ( ))))) ;) })) (for_statement "for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }" for ( (assignment_expression "lVar25 = *(long *)(param_2 + 0x60)" identifier = (pointer_expression "*(long *)(param_2 + 0x60)" * (cast_expression "(long *)(param_2 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) ))))) ; (binary_expression "lVar25 != 0" identifier != number_literal) ; (assignment_expression "lVar25 = *(long *)(lVar25 + 0xf0)" identifier = (pointer_expression "*(long *)(lVar25 + 0xf0)" * (cast_expression "(long *)(lVar25 + 0xf0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0xf0)" ( (binary_expression "lVar25 + 0xf0" identifier + number_literal) ))))) ) (compound_statement "{\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }" { (expression_statement "lVar11 = bfd_get_section_by_name(lVar25);" (assignment_expression "lVar11 = bfd_get_section_by_name(lVar25)" identifier = (call_expression "bfd_get_section_by_name(lVar25)" identifier (argument_list "(lVar25)" ( identifier )))) ;) (if_statement "if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }" if (parenthesized_expression "(lVar11 != 0)" ( (binary_expression "lVar11 != 0" identifier != number_literal) )) (compound_statement "{\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }" { (expression_statement "uVar6 = *(ulong *)(lVar11 + 0x38);" (assignment_expression "uVar6 = *(ulong *)(lVar11 + 0x38)" identifier = (pointer_expression "*(ulong *)(lVar11 + 0x38)" * (cast_expression "(ulong *)(lVar11 + 0x38)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x38)" ( (binary_expression "lVar11 + 0x38" identifier + number_literal) ))))) ;) (expression_statement "pvVar12 = (void *)xmalloc(uVar6);" (assignment_expression "pvVar12 = (void *)xmalloc(uVar6)" identifier = (cast_expression "(void *)xmalloc(uVar6)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))))) ;) (expression_statement "bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);" (call_expression "bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6)" identifier (argument_list "(lVar25,lVar11,pvVar12,0,uVar6)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);" (call_expression "FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff)" identifier (argument_list "(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff)" ( identifier , identifier , (binary_expression "uVar6 & 0xffffffff" identifier & number_literal) ))) ;) (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" identifier (argument_list "(pvVar12)" ( identifier ))) ;) })) })) (expression_statement "plVar24 = (long *)DAT_002b5af8[0xe];" (assignment_expression "plVar24 = (long *)DAT_002b5af8[0xe]" identifier = (cast_expression "(long *)DAT_002b5af8[0xe]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "DAT_002b5af8[0xe]" identifier [ number_literal ]))) ;) (labeled_statement "joined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }" if (parenthesized_expression "(plVar24 != (long *)0x0)" ( (binary_expression "plVar24 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }" { (do_statement "do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );" do (compound_statement "{\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    }" { (expression_statement "lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);" (assignment_expression "lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0)" identifier = (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0)" identifier (argument_list "(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0)" ( (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , (subscript_expression "plVar24[1]" identifier [ number_literal ]) , number_literal , number_literal , number_literal )))) ;) (if_statement "if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }" if (parenthesized_expression "((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05'))" ( (binary_expression "(lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')" (parenthesized_expression "(lVar25 != 0)" ( (binary_expression "lVar25 != 0" identifier != number_literal) )) && (parenthesized_expression "(*(char *)(lVar25 + 0x18) == '\x05')" ( (binary_expression "*(char *)(lVar25 + 0x18) == '\x05'" (pointer_expression "*(char *)(lVar25 + 0x18)" * (cast_expression "(char *)(lVar25 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0x18)" ( (binary_expression "lVar25 + 0x18" identifier + number_literal) )))) == (char_literal "'\x05'" ' escape_sequence ')) ))) )) (compound_statement "{\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }" { (expression_statement "puVar1 = (uint *)(plVar24 + 2);" (assignment_expression "puVar1 = (uint *)(plVar24 + 2)" identifier = (cast_expression "(uint *)(plVar24 + 2)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar24 + 2)" ( (binary_expression "plVar24 + 2" identifier + number_literal) )))) ;) (if_statement "if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;" if (parenthesized_expression "(**(uint **)(lVar25 + 0x28) < *puVar1)" ( (binary_expression "**(uint **)(lVar25 + 0x28) < *puVar1" (pointer_expression "**(uint **)(lVar25 + 0x28)" * (pointer_expression "*(uint **)(lVar25 + 0x28)" * (cast_expression "(uint **)(lVar25 + 0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar25 + 0x28)" ( (binary_expression "lVar25 + 0x28" identifier + number_literal) ))))) < (pointer_expression "*puVar1" * identifier)) )) (goto_statement "goto code_r0x001521e2;" goto statement_identifier ;)) })) (expression_statement "plVar24 = (long *)*plVar24;" (assignment_expression "plVar24 = (long *)*plVar24" identifier = (cast_expression "(long *)*plVar24" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar24" * identifier))) ;) (if_statement "if (plVar24 == (long *)0x0) break;" if (parenthesized_expression "(plVar24 == (long *)0x0)" ( (binary_expression "plVar24 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "bVar9 = *param_2;" (assignment_expression "bVar9 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }" if (parenthesized_expression "((bVar9 & 2) == 0)" ( (binary_expression "(bVar9 & 2) == 0" (parenthesized_expression "(bVar9 & 2)" ( (binary_expression "bVar9 & 2" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }" { (if_statement "if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }" if (parenthesized_expression "(*(int *)(DAT_002b5af8 + 8) != 0)" ( (binary_expression "*(int *)(DAT_002b5af8 + 8) != 0" (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }" { (if_statement "if (DAT_002b5af4 != 0) goto LAB_00152907;" if (parenthesized_expression "(DAT_002b5af4 != 0)" ( (binary_expression "DAT_002b5af4 != 0" identifier != number_literal) )) (goto_statement "goto LAB_00152907;" goto statement_identifier ;)) (expression_statement "iVar10 = *(int *)(DAT_002b5af8 + 8);" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;) (if_statement "if (DAT_002b5aec != 0) goto LAB_001523cf;" if (parenthesized_expression "(DAT_002b5aec != 0)" ( (binary_expression "DAT_002b5aec != 0" identifier != number_literal) )) (goto_statement "goto LAB_001523cf;" goto statement_identifier ;)) (goto_statement "goto LAB_00152938;" goto statement_identifier ;) })) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;" if (parenthesized_expression "((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0))" ( (binary_expression "(DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)" (parenthesized_expression "(DAT_002b5af4 != 0)" ( (binary_expression "DAT_002b5af4 != 0" identifier != number_literal) )) && (parenthesized_expression "(DAT_002b5af0 == 0)" ( (binary_expression "DAT_002b5af0 == 0" identifier == number_literal) ))) )) (goto_statement "goto LAB_0015222e;" goto statement_identifier ;)) (labeled_statement "LAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }" statement_identifier : (if_statement "if ((bVar9 & 1) == 0) {\n      return;\n    }" if (parenthesized_expression "((bVar9 & 1) == 0)" ( (binary_expression "(bVar9 & 1) == 0" (parenthesized_expression "(bVar9 & 1)" ( (binary_expression "bVar9 & 1" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) }))) }) (else_clause "else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }" else (compound_statement "{\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }" { (if_statement "if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }" if (parenthesized_expression "((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0))" ( (binary_expression "(DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)" (parenthesized_expression "(DAT_002b5af4 != 0)" ( (binary_expression "DAT_002b5af4 != 0" identifier != number_literal) )) || (parenthesized_expression "(iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)" ( (comma_expression "iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) , (binary_expression "iVar10 == 0" identifier == number_literal)) ))) )) (compound_statement "{\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }" { (labeled_statement "LAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }" statement_identifier : (if_statement "if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }" if (parenthesized_expression "(DAT_002b5af0 == 0)" ( (binary_expression "DAT_002b5af0 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }" { (labeled_statement "LAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);" statement_identifier : (expression_statement "lVar25 = *(long *)(param_2 + 0x60);" (assignment_expression "lVar25 = *(long *)(param_2 + 0x60)" identifier = (pointer_expression "*(long *)(param_2 + 0x60)" * (cast_expression "(long *)(param_2 + 0x60)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x60)" ( (binary_expression "param_2 + 0x60" identifier + number_literal) ))))) ;)) (while_statement "while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }" { (if_statement "if (lVar25 == 0) goto LAB_001523aa;" if (parenthesized_expression "(lVar25 == 0)" ( (binary_expression "lVar25 == 0" identifier == number_literal) )) (goto_statement "goto LAB_001523aa;" goto statement_identifier ;)) (expression_statement "iVar10 = bfd_generic_link_read_symbols(lVar25);" (assignment_expression "iVar10 = bfd_generic_link_read_symbols(lVar25)" identifier = (call_expression "bfd_generic_link_read_symbols(lVar25)" identifier (argument_list "(lVar25)" ( identifier )))) ;) (if_statement "if (iVar10 == 0) break;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "plVar24 = *(long **)(lVar25 + 0xb0);" (assignment_expression "plVar24 = *(long **)(lVar25 + 0xb0)" identifier = (pointer_expression "*(long **)(lVar25 + 0xb0)" * (cast_expression "(long **)(lVar25 + 0xb0)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar25 + 0xb0)" ( (binary_expression "lVar25 + 0xb0" identifier + number_literal) ))))) ;) (if_statement "if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }" if (parenthesized_expression "(0 < *(int *)(lVar25 + 0xb8))" ( (binary_expression "0 < *(int *)(lVar25 + 0xb8)" number_literal < (pointer_expression "*(int *)(lVar25 + 0xb8)" * (cast_expression "(int *)(lVar25 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0xb8)" ( (binary_expression "lVar25 + 0xb8" identifier + number_literal) ))))) )) (compound_statement "{\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }" { (expression_statement "plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;" (assignment_expression "plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1" identifier = (binary_expression "plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1" (binary_expression "plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1)" identifier + (call_expression "(ulong)(*(int *)(lVar25 + 0xb8) - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(*(int *)(lVar25 + 0xb8) - 1)" ( (binary_expression "*(int *)(lVar25 + 0xb8) - 1" (pointer_expression "*(int *)(lVar25 + 0xb8)" * (cast_expression "(int *)(lVar25 + 0xb8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0xb8)" ( (binary_expression "lVar25 + 0xb8" identifier + number_literal) )))) - number_literal) )))) + number_literal)) ;) (do_statement "do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);" do (compound_statement "{\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            }" { (expression_statement "lVar11 = *plVar24;" (assignment_expression "lVar11 = *plVar24" identifier = (pointer_expression "*plVar24" * identifier)) ;) (if_statement "if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }" if (parenthesized_expression "((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0))))" ( (binary_expression "(*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))" (parenthesized_expression "(*(long *)(lVar11 + 0x20) != 0x2b4598)" ( (binary_expression "*(long *)(lVar11 + 0x20) != 0x2b4598" (pointer_expression "*(long *)(lVar11 + 0x20)" * (cast_expression "(long *)(lVar11 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x20)" ( (binary_expression "lVar11 + 0x20" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))" ( (parenthesized_expression "((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0))" ( (binary_expression "(*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)" (binary_expression "(*(uint *)(lVar11 + 0x18) & 2) != 0" (parenthesized_expression "(*(uint *)(lVar11 + 0x18) & 2)" ( (binary_expression "*(uint *)(lVar11 + 0x18) & 2" (pointer_expression "*(uint *)(lVar11 + 0x18)" * (cast_expression "(uint *)(lVar11 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x18)" ( (binary_expression "lVar11 + 0x18" identifier + number_literal) )))) & number_literal) )) != number_literal) || (parenthesized_expression "(*(uint *)(lVar11 + 0x18) == 0)" ( (binary_expression "*(uint *)(lVar11 + 0x18) == 0" (pointer_expression "*(uint *)(lVar11 + 0x18)" * (cast_expression "(uint *)(lVar11 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x18)" ( (binary_expression "lVar11 + 0x18" identifier + number_literal) )))) == number_literal) ))) )) ))) )) (compound_statement "{\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }" { (expression_statement "bVar38 = DAT_002b6020 == 0;" (assignment_expression "bVar38 = DAT_002b6020 == 0" identifier = (binary_expression "DAT_002b6020 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }" if (parenthesized_expression "(!bVar38)" ( (unary_expression "!bVar38" ! identifier) )) (compound_statement "{\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }" { (expression_statement "iVar10 = bfd_hide_sym_by_version();" (assignment_expression "iVar10 = bfd_hide_sym_by_version()" identifier = (call_expression "bfd_hide_sym_by_version()" identifier (argument_list "()" ( )))) ;) (expression_statement "bVar38 = iVar10 == 0;" (assignment_expression "bVar38 = iVar10 == 0" identifier = (binary_expression "iVar10 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar38) goto LAB_00152388;" if (parenthesized_expression "(!bVar38)" ( (unary_expression "!bVar38" ! identifier) )) (goto_statement "goto LAB_00152388;" goto statement_identifier ;)) (expression_statement "lVar11 = *plVar24;" (assignment_expression "lVar11 = *plVar24" identifier = (pointer_expression "*plVar24" * identifier)) ;) })) (expression_statement "bVar37 = false;" (assignment_expression "bVar37 = false" identifier = false) ;) (expression_statement "pbVar28 = *(byte **)(lVar11 + 8);" (assignment_expression "pbVar28 = *(byte **)(lVar11 + 8)" identifier = (pointer_expression "*(byte **)(lVar11 + 8)" * (cast_expression "(byte **)(lVar11 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar11 + 8)" ( (binary_expression "lVar11 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar11 = 6;" (assignment_expression "lVar11 = 6" identifier = number_literal) ;) (expression_statement "pbVar31 = pbVar28;" (assignment_expression "pbVar31 = pbVar28" identifier = identifier) ;) (expression_statement "pbVar33 = (byte *)0x29f1f4;" (assignment_expression "pbVar33 = (byte *)0x29f1f4" identifier = (cast_expression "(byte *)0x29f1f4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);" do (compound_statement "{\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar37 = *pbVar31 < *pbVar33;" (assignment_expression "bVar37 = *pbVar31 < *pbVar33" identifier = (binary_expression "*pbVar31 < *pbVar33" (pointer_expression "*pbVar31" * identifier) < (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "bVar38 = *pbVar31 == *pbVar33;" (assignment_expression "bVar38 = *pbVar31 == *pbVar33" identifier = (binary_expression "*pbVar31 == *pbVar33" (pointer_expression "*pbVar31" * identifier) == (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1" identifier = (binary_expression "pbVar31 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar31 + (ulong)bVar39 * -2" identifier + (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1" identifier = (binary_expression "pbVar33 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar33 + (ulong)bVar39 * -2" identifier + (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar38)" ( identifier )) ;) (if_statement "if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }" if (parenthesized_expression "((!bVar37 && !bVar38) != bVar37)" ( (binary_expression "(!bVar37 && !bVar38) != bVar37" (parenthesized_expression "(!bVar37 && !bVar38)" ( (binary_expression "!bVar37 && !bVar38" (unary_expression "!bVar37" ! identifier) && (unary_expression "!bVar38" ! identifier)) )) != identifier) )) (compound_statement "{\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }" { (expression_statement "sVar13 = strlen((char *)pbVar28);" (assignment_expression "sVar13 = strlen((char *)pbVar28)" identifier = (call_expression "strlen((char *)pbVar28)" identifier (argument_list "((char *)pbVar28)" ( (cast_expression "(char *)pbVar28" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pcVar14 = (char *)xmalloc(sVar13 + 7);" (assignment_expression "pcVar14 = (char *)xmalloc(sVar13 + 7)" identifier = (cast_expression "(char *)xmalloc(sVar13 + 7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar13 + 7)" identifier (argument_list "(sVar13 + 7)" ( (binary_expression "sVar13 + 7" identifier + number_literal) ))))) ;) (expression_statement "sprintf(pcVar14,"%s%s","__imp_",pbVar28);" (call_expression "sprintf(pcVar14,"%s%s","__imp_",pbVar28)" identifier (argument_list "(pcVar14,"%s%s","__imp_",pbVar28)" ( identifier , (string_literal ""%s%s"" " string_content ") , (string_literal ""__imp_"" " string_content ") , identifier ))) ;) (expression_statement "lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);" (assignment_expression "lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0)" identifier = (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0)" identifier (argument_list "(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0)" ( (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , identifier , number_literal , number_literal , number_literal )))) ;) (expression_statement "free(pcVar14);" (call_expression "free(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier ))) ;) (if_statement "if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }" if (parenthesized_expression "((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03'))" ( (binary_expression "(lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')" (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(lVar11 + 0x18) != '\x03')" ( (binary_expression "*(char *)(lVar11 + 0x18) != '\x03'" (pointer_expression "*(char *)(lVar11 + 0x18)" * (cast_expression "(char *)(lVar11 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x18)" ( (binary_expression "lVar11 + 0x18" identifier + number_literal) )))) != (char_literal "'\x03'" ' escape_sequence ')) ))) )) (compound_statement "{\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }" { (if_statement "if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }" if (parenthesized_expression "(*(int *)(DAT_002b5b90 + 0x1c) != 0)" ( (binary_expression "*(int *)(DAT_002b5b90 + 0x1c) != 0" (pointer_expression "*(int *)(DAT_002b5b90 + 0x1c)" * (cast_expression "(int *)(DAT_002b5b90 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5b90 + 0x1c)" ( (binary_expression "DAT_002b5b90 + 0x1c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }" { (expression_statement "pbVar28 = pbVar28 + (*pbVar28 == 0x5f);" (assignment_expression "pbVar28 = pbVar28 + (*pbVar28 == 0x5f)" identifier = (binary_expression "pbVar28 + (*pbVar28 == 0x5f)" identifier + (parenthesized_expression "(*pbVar28 == 0x5f)" ( (binary_expression "*pbVar28 == 0x5f" (pointer_expression "*pbVar28" * identifier) == number_literal) )))) ;) })) (expression_statement "iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);" (assignment_expression "iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28)" identifier = (call_expression "FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28)" identifier (argument_list "(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28)" ( identifier , (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) , (binary_expression "DAT_002b5af8 + 9" identifier + number_literal) , identifier )))) ;) (if_statement "if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }" { (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);" (assignment_expression "lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c)" identifier = (call_expression "FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c)" identifier (argument_list "(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c)" ( identifier , identifier , number_literal , number_literal , number_literal , identifier )))) ;) (if_statement "if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }" if (parenthesized_expression "(local_3c[0] == 0)" ( (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }" { (expression_statement "*(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;" (assignment_expression "*(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1" (pointer_expression "*(byte *)(lVar11 + 0x23)" * (cast_expression "(byte *)(lVar11 + 0x23)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x23)" ( (binary_expression "lVar11 + 0x23" identifier + number_literal) )))) = (binary_expression "((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1" (parenthesized_expression "((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1)" ( (binary_expression "(byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1" (call_expression "(byte)(*(uint *)(*plVar24 + 0x18) >> 3)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(*(uint *)(*plVar24 + 0x18) >> 3)" ( (binary_expression "*(uint *)(*plVar24 + 0x18) >> 3" (pointer_expression "*(uint *)(*plVar24 + 0x18)" * (cast_expression "(uint *)(*plVar24 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar24 + 0x18)" ( (binary_expression "*plVar24 + 0x18" (pointer_expression "*plVar24" * identifier) + number_literal) )))) >> number_literal) ))) ^ number_literal) )) & number_literal)) ;) })) })) })) })) })) (labeled_statement "LAB_00152388:\n              plVar24 = plVar24 + 1;" statement_identifier : (expression_statement "plVar24 = plVar24 + 1;" (assignment_expression "plVar24 = plVar24 + 1" identifier = (binary_expression "plVar24 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(plVar3 != plVar24)" ( (binary_expression "plVar3 != plVar24" identifier != identifier) )) ;) })) (expression_statement "lVar25 = *(long *)(lVar25 + 0xf0);" (assignment_expression "lVar25 = *(long *)(lVar25 + 0xf0)" identifier = (pointer_expression "*(long *)(lVar25 + 0xf0)" * (cast_expression "(long *)(lVar25 + 0xf0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0xf0)" ( (binary_expression "lVar25 + 0xf0" identifier + number_literal) ))))) ;) })) (expression_statement "uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5)" identifier = (call_expression "dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5)" identifier (argument_list "(0,"%F%P: %pB: could not read symbols: %E\n",5)" ( number_literal , (string_literal ""%F%P: %pB: could not read symbols: %E\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar16);" (call_expression "FUN_00129380(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) (expression_statement "iVar10 = *(int *)(DAT_002b5af8 + 8);" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (goto_statement "goto joined_r0x00152ec1;" goto statement_identifier ;) }))) (labeled_statement "LAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);" statement_identifier : (expression_statement "iVar10 = *(int *)(DAT_002b5af8 + 8);" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;)) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (iVar10 != 0) goto LAB_001523bf;" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (goto_statement "goto LAB_001523bf;" goto statement_identifier ;)) (labeled_statement "LAB_00152950:\n      bVar9 = *param_2;" statement_identifier : (expression_statement "bVar9 = *param_2;" (assignment_expression "bVar9 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;)) (goto_statement "goto LAB_00152955;" goto statement_identifier ;) })) (labeled_statement "LAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" statement_identifier : (if_statement "if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" if (parenthesized_expression "(DAT_002b5aec == 0)" ( (binary_expression "DAT_002b5aec == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }" { (labeled_statement "LAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);" statement_identifier : (expression_statement "uVar30 = *(uint *)(DAT_002b5af8 + 8);" (assignment_expression "uVar30 = *(uint *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(uint *)(DAT_002b5af8 + 8)" * (cast_expression "(uint *)(DAT_002b5af8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;)) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) }) (else_clause "else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" else (compound_statement "{\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" { (labeled_statement "LAB_001523cf:\n      lVar25 = 0;" statement_identifier : (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;)) (expression_statement "bVar38 = false;" (assignment_expression "bVar38 = false" identifier = false) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (iVar10 < 1) goto LAB_00152938;" if (parenthesized_expression "(iVar10 < 1)" ( (binary_expression "iVar10 < 1" identifier < number_literal) )) (goto_statement "goto LAB_00152938;" goto statement_identifier ;)) (do_statement "do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);" do (compound_statement "{\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      }" { (expression_statement "pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);" (assignment_expression "pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28)" identifier = (pointer_expression "*(char **)(puVar29[9] + lVar25 * 0x28)" * (cast_expression "(char **)(puVar29[9] + lVar25 * 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29[9] + lVar25 * 0x28)" ( (binary_expression "puVar29[9] + lVar25 * 0x28" (subscript_expression "puVar29[9]" identifier [ number_literal ]) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) ))))) ;) (expression_statement "cVar5 = *pcVar14;" (assignment_expression "cVar5 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) (if_statement "if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }" if (parenthesized_expression "((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0))" ( (binary_expression "(cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)" (parenthesized_expression "(cVar5 != '?')" ( (binary_expression "cVar5 != '?'" identifier != (char_literal "'?'" ' character ')) )) && (parenthesized_expression "(pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)" ( (comma_expression "pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0" (assignment_expression "pcVar15 = strchr(pcVar14,0x40)" identifier = (call_expression "strchr(pcVar14,0x40)" identifier (argument_list "(pcVar14,0x40)" ( identifier , number_literal )))) , (binary_expression "pcVar15 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }" { (expression_statement "pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));" (assignment_expression "pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'))" identifier = (cast_expression "(char *)xstrdup(pcVar14 + (cVar5 == '@'))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(pcVar14 + (cVar5 == '@'))" identifier (argument_list "(pcVar14 + (cVar5 == '@'))" ( (binary_expression "pcVar14 + (cVar5 == '@')" identifier + (parenthesized_expression "(cVar5 == '@')" ( (binary_expression "cVar5 == '@'" identifier == (char_literal "'@'" ' character ')) ))) ))))) ;) (expression_statement "pcVar15 = strrchr(pcVar14,0x40);" (assignment_expression "pcVar15 = strrchr(pcVar14,0x40)" identifier = (call_expression "strrchr(pcVar14,0x40)" identifier (argument_list "(pcVar14,0x40)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }" if (parenthesized_expression "(pcVar15 == (char *)0x0)" ( (binary_expression "pcVar15 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }" { (expression_statement "uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);" (assignment_expression "uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28)" identifier = (pointer_expression "*(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28)" * (cast_expression "(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8[9] + lVar25 * 0x28)" ( (binary_expression "DAT_002b5af8[9] + lVar25 * 0x28" (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ]) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) ))))) ;) (expression_statement "uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);" (assignment_expression "uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5)" identifier (argument_list "(0,"%X%P: cannot export %s: invalid export name\n",5)" ( number_literal , (string_literal ""%X%P: cannot export %s: invalid export name\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar21,uVar16);" (call_expression "FUN_00129380(uVar21,uVar16)" identifier (argument_list "(uVar21,uVar16)" ( identifier , identifier ))) ;) }) (else_clause "else {\n            *pcVar15 = '\0';\n          }" else (compound_statement "{\n            *pcVar15 = '\0';\n          }" { (expression_statement "*pcVar15 = '\0';" (assignment_expression "*pcVar15 = '\0'" (pointer_expression "*pcVar15" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) }))) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (expression_statement "bVar38 = true;" (assignment_expression "bVar38 = true" identifier = true) ;) (expression_statement "*(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;" (assignment_expression "*(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14" (pointer_expression "*(char **)(DAT_002b5af8[9] + lVar25 * 0x28)" * (cast_expression "(char **)(DAT_002b5af8[9] + lVar25 * 0x28)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(DAT_002b5af8[9] + lVar25 * 0x28)" ( (binary_expression "DAT_002b5af8[9] + lVar25 * 0x28" (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ]) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) )))) = identifier) ;) })) (expression_statement "uVar30 = *(uint *)(puVar29 + 8);" (assignment_expression "uVar30 = *(uint *)(puVar29 + 8)" identifier = (pointer_expression "*(uint *)(puVar29 + 8)" * (cast_expression "(uint *)(puVar29 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) ;) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar25 < (int)uVar30)" ( (binary_expression "(int)lVar25 < (int)uVar30" (cast_expression "(int)lVar25" ( (type_descriptor "int" primitive_type) ) identifier) < (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) )) ;) (if_statement "if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }" if (parenthesized_expression "(bVar38)" ( identifier )) (compound_statement "{\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }" { (expression_statement "qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);" (call_expression "qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90)" identifier (argument_list "((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90)" ( (cast_expression "(void *)puVar29[9]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar29[9]" identifier [ number_literal ])) , (cast_expression "(long)(int)uVar30" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) , number_literal , identifier ))) ;) (goto_statement "goto LAB_00152938;" goto statement_identifier ;) })) })))) (if_statement "if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }" if (parenthesized_expression "(DAT_002b5ae8 == 0)" ( (binary_expression "DAT_002b5ae8 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }" { (labeled_statement "LAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];" statement_identifier : (expression_statement "puVar26 = (undefined8 *)puVar29[9];" (assignment_expression "puVar26 = (undefined8 *)puVar29[9]" identifier = (cast_expression "(undefined8 *)puVar29[9]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar29[9]" identifier [ number_literal ]))) ;)) (if_statement "if ((int)uVar30 < 1) goto LAB_00152f50;" if (parenthesized_expression "((int)uVar30 < 1)" ( (binary_expression "(int)uVar30 < 1" (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (goto_statement "goto LAB_00152f50;" goto statement_identifier ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "puVar36 = puVar26;" (assignment_expression "puVar36 = puVar26" identifier = identifier) ;) (do_statement "do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));" do (compound_statement "{\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      }" { (while_statement "while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }" while (parenthesized_expression "(iVar27 != 0)" ( (binary_expression "iVar27 != 0" identifier != number_literal) )) (compound_statement "{\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }" { (expression_statement "pcVar14 = (char *)*puVar36;" (assignment_expression "pcVar14 = (char *)*puVar36" identifier = (cast_expression "(char *)*puVar36" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar36" * identifier))) ;) (expression_statement "iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);" (assignment_expression "iVar35 = strcmp(pcVar14,(char *)puVar36[-5])" identifier = (call_expression "strcmp(pcVar14,(char *)puVar36[-5])" identifier (argument_list "(pcVar14,(char *)puVar36[-5])" ( identifier , (cast_expression "(char *)puVar36[-5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[-5]" identifier [ number_literal ])) )))) ;) (if_statement "if (iVar35 != 0) break;" if (parenthesized_expression "(iVar35 != 0)" ( (binary_expression "iVar35 != 0" identifier != number_literal) )) (break_statement "break;" break ;)) (expression_statement "puVar29 = puVar26 + (long)iVar10 * 5 + -5;" (assignment_expression "puVar29 = puVar26 + (long)iVar10 * 5 + -5" identifier = (binary_expression "puVar26 + (long)iVar10 * 5 + -5" (binary_expression "puVar26 + (long)iVar10 * 5" identifier + (binary_expression "(long)iVar10 * 5" (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "iVar35 = *(int *)(puVar29 + 3);" (assignment_expression "iVar35 = *(int *)(puVar29 + 3)" identifier = (pointer_expression "*(int *)(puVar29 + 3)" * (cast_expression "(int *)(puVar29 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 3)" ( (binary_expression "puVar29 + 3" identifier + number_literal) ))))) ;) (if_statement "if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }" if (parenthesized_expression "(((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22))" ( (binary_expression "((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)" (parenthesized_expression "((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1))" ( (binary_expression "(iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)" (parenthesized_expression "(iVar35 == -1)" ( (binary_expression "iVar35 == -1" identifier == number_literal) )) || (parenthesized_expression "(iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)" ( (comma_expression "iVar22 = *(int *)(puVar36 + 3), iVar22 == -1" (assignment_expression "iVar22 = *(int *)(puVar36 + 3)" identifier = (pointer_expression "*(int *)(puVar36 + 3)" * (cast_expression "(int *)(puVar36 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + 3)" ( (binary_expression "puVar36 + 3" identifier + number_literal) ))))) , (binary_expression "iVar22 == -1" identifier == number_literal)) ))) )) || (parenthesized_expression "(iVar35 == iVar22)" ( (binary_expression "iVar35 == iVar22" identifier == identifier) ))) )) (compound_statement "{\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }" { (if_statement "if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }" if (parenthesized_expression "(DAT_002b5ae4 != 0)" ( (binary_expression "DAT_002b5ae4 != 0" identifier != number_literal) )) (compound_statement "{\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }" { (expression_statement "uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5)" identifier = (call_expression "dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5)" identifier (argument_list "(0,"%P: warning, duplicate EXPORT: %s\n",5)" ( number_literal , (string_literal ""%P: warning, duplicate EXPORT: %s\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar16);" (call_expression "FUN_00129380(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) (expression_statement "pcVar14 = (char *)*puVar36;" (assignment_expression "pcVar14 = (char *)*puVar36" identifier = (cast_expression "(char *)*puVar36" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar36" * identifier))) ;) })) (labeled_statement "LAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);" statement_identifier : (expression_statement "iVar22 = *(int *)(puVar36 + 3);" (assignment_expression "iVar22 = *(int *)(puVar36 + 3)" identifier = (pointer_expression "*(int *)(puVar36 + 3)" * (cast_expression "(int *)(puVar36 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + 3)" ( (binary_expression "puVar36 + 3" identifier + number_literal) ))))) ;)) (if_statement "if (iVar22 != -1) goto LAB_00152636;" if (parenthesized_expression "(iVar22 != -1)" ( (binary_expression "iVar22 != -1" identifier != number_literal) )) (goto_statement "goto LAB_00152636;" goto statement_identifier ;)) }) (else_clause "else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }" else (compound_statement "{\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }" { (if_statement "if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }" if (parenthesized_expression "(DAT_002b5ae4 != 0)" ( (binary_expression "DAT_002b5ae4 != 0" identifier != number_literal) )) (compound_statement "{\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }" { (expression_statement "uVar16 = *puVar29;" (assignment_expression "uVar16 = *puVar29" identifier = (pointer_expression "*puVar29" * identifier)) ;) (expression_statement "uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;" (assignment_expression "uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)" identifier (argument_list "(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)" ( number_literal , (string_literal ""%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar21,uVar16,iVar35,iVar22);" (call_expression "FUN_00129380(uVar21,uVar16,iVar35,iVar22)" identifier (argument_list "(uVar21,uVar16,iVar35,iVar22)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "pcVar14 = (char *)*puVar36;" (assignment_expression "pcVar14 = (char *)*puVar36" identifier = (cast_expression "(char *)*puVar36" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar36" * identifier))) ;) (goto_statement "goto LAB_00152cc8;" goto statement_identifier ;) })) (labeled_statement "LAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;" statement_identifier : (expression_statement "*(int *)(puVar29 + 3) = iVar22;" (assignment_expression "*(int *)(puVar29 + 3) = iVar22" (pointer_expression "*(int *)(puVar29 + 3)" * (cast_expression "(int *)(puVar29 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 3)" ( (binary_expression "puVar29 + 3" identifier + number_literal) )))) = identifier) ;)) }))) (expression_statement "*(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);" (assignment_expression "*(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4)" (pointer_expression "*(byte *)(puVar29 + 4)" * (cast_expression "(byte *)(puVar29 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 4)" ( (binary_expression "puVar29 + 4" identifier + number_literal) )))) = (binary_expression "*(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4)" (pointer_expression "*(byte *)(puVar29 + 4)" * (cast_expression "(byte *)(puVar29 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 4)" ( (binary_expression "puVar29 + 4" identifier + number_literal) )))) | (pointer_expression "*(byte *)(puVar36 + 4)" * (cast_expression "(byte *)(puVar36 + 4)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar36 + 4)" ( (binary_expression "puVar36 + 4" identifier + number_literal) )))))) ;) (expression_statement "*(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);" (assignment_expression "*(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21)" (pointer_expression "*(byte *)((long)puVar29 + 0x21)" * (cast_expression "(byte *)((long)puVar29 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x21)" ( (binary_expression "(long)puVar29 + 0x21" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21)" (pointer_expression "*(byte *)((long)puVar29 + 0x21)" * (cast_expression "(byte *)((long)puVar29 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x21)" ( (binary_expression "(long)puVar29 + 0x21" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | (pointer_expression "*(byte *)((long)puVar36 + 0x21)" * (cast_expression "(byte *)((long)puVar36 + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar36 + 0x21)" ( (binary_expression "(long)puVar36 + 0x21" (cast_expression "(long)puVar36" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (expression_statement "*(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);" (assignment_expression "*(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22)" (pointer_expression "*(byte *)((long)puVar29 + 0x22)" * (cast_expression "(byte *)((long)puVar29 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x22)" ( (binary_expression "(long)puVar29 + 0x22" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22)" (pointer_expression "*(byte *)((long)puVar29 + 0x22)" * (cast_expression "(byte *)((long)puVar29 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x22)" ( (binary_expression "(long)puVar29 + 0x22" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | (pointer_expression "*(byte *)((long)puVar36 + 0x22)" * (cast_expression "(byte *)((long)puVar36 + 0x22)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar36 + 0x22)" ( (binary_expression "(long)puVar36 + 0x22" (cast_expression "(long)puVar36" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (expression_statement "*(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);" (assignment_expression "*(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23)" (pointer_expression "*(byte *)((long)puVar29 + 0x23)" * (cast_expression "(byte *)((long)puVar29 + 0x23)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x23)" ( (binary_expression "(long)puVar29 + 0x23" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = (binary_expression "*(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23)" (pointer_expression "*(byte *)((long)puVar29 + 0x23)" * (cast_expression "(byte *)((long)puVar29 + 0x23)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar29 + 0x23)" ( (binary_expression "(long)puVar29 + 0x23" (cast_expression "(long)puVar29" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) | (pointer_expression "*(byte *)((long)puVar36 + 0x23)" * (cast_expression "(byte *)((long)puVar36 + 0x23)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar36 + 0x23)" ( (binary_expression "(long)puVar36 + 0x23" (cast_expression "(long)puVar36" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) ;) (if_statement "if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }" if (parenthesized_expression "(pcVar14 != (char *)0x0)" ( (binary_expression "pcVar14 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free(pcVar14);\n          }" { (expression_statement "free(pcVar14);" (call_expression "free(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier ))) ;) })) (if_statement "if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }" if (parenthesized_expression "((void *)puVar36[1] != (void *)0x0)" ( (binary_expression "(void *)puVar36[1] != (void *)0x0" (cast_expression "(void *)puVar36[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[1]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free((void *)puVar36[1]);\n          }" { (expression_statement "free((void *)puVar36[1]);" (call_expression "free((void *)puVar36[1])" identifier (argument_list "((void *)puVar36[1])" ( (cast_expression "(void *)puVar36[1]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[1]" identifier [ number_literal ])) ))) ;) })) (if_statement "if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }" if (parenthesized_expression "((void *)puVar36[2] != (void *)0x0)" ( (binary_expression "(void *)puVar36[2] != (void *)0x0" (cast_expression "(void *)puVar36[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[2]" identifier [ number_literal ])) != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            free((void *)puVar36[2]);\n          }" { (expression_statement "free((void *)puVar36[2]);" (call_expression "free((void *)puVar36[2])" identifier (argument_list "((void *)puVar36[2])" ( (cast_expression "(void *)puVar36[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar36[2]" identifier [ number_literal ])) ))) ;) })) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar36 = puVar36 + 5;" (assignment_expression "puVar36 = puVar36 + 5" identifier = (binary_expression "puVar36 + 5" identifier + number_literal)) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;" if (parenthesized_expression "(*(int *)(DAT_002b5af8 + 8) <= iVar27)" ( (binary_expression "*(int *)(DAT_002b5af8 + 8) <= iVar27" (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto LAB_001526e4;" goto statement_identifier ;)) })) (if_statement "if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }" if (parenthesized_expression "(iVar10 != iVar27)" ( (binary_expression "iVar10 != iVar27" identifier != identifier) )) (compound_statement "{\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }" { (expression_statement "uVar16 = puVar36[1];" (assignment_expression "uVar16 = puVar36[1]" identifier = (subscript_expression "puVar36[1]" identifier [ number_literal ])) ;) (expression_statement "puVar2 = puVar26 + (long)iVar10 * 5;" (assignment_expression "puVar2 = puVar26 + (long)iVar10 * 5" identifier = (binary_expression "puVar26 + (long)iVar10 * 5" identifier + (binary_expression "(long)iVar10 * 5" (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal))) ;) (expression_statement "*puVar2 = *puVar36;" (assignment_expression "*puVar2 = *puVar36" (pointer_expression "*puVar2" * identifier) = (pointer_expression "*puVar36" * identifier)) ;) (expression_statement "puVar2[1] = uVar16;" (assignment_expression "puVar2[1] = uVar16" (subscript_expression "puVar2[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar16 = puVar36[3];" (assignment_expression "uVar16 = puVar36[3]" identifier = (subscript_expression "puVar36[3]" identifier [ number_literal ])) ;) (expression_statement "puVar2[2] = puVar36[2];" (assignment_expression "puVar2[2] = puVar36[2]" (subscript_expression "puVar2[2]" identifier [ number_literal ]) = (subscript_expression "puVar36[2]" identifier [ number_literal ])) ;) (expression_statement "puVar2[3] = uVar16;" (assignment_expression "puVar2[3] = uVar16" (subscript_expression "puVar2[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar2[4] = puVar36[4];" (assignment_expression "puVar2[4] = puVar36[4]" (subscript_expression "puVar2[4]" identifier [ number_literal ]) = (subscript_expression "puVar36[4]" identifier [ number_literal ])) ;) })) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" identifier = (binary_expression "iVar27 + 1" identifier + number_literal)) ;) (expression_statement "puVar36 = puVar36 + 5;" (assignment_expression "puVar36 = puVar36 + 5" identifier = (binary_expression "puVar36 + 5" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar27 < *(int *)(puVar29 + 8))" ( (binary_expression "iVar27 < *(int *)(puVar29 + 8)" identifier < (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) )) ;) (labeled_statement "LAB_001526e4:\n      lVar25 = (long)iVar10 << 3;" statement_identifier : (expression_statement "lVar25 = (long)iVar10 << 3;" (assignment_expression "lVar25 = (long)iVar10 << 3" identifier = (binary_expression "(long)iVar10 << 3" (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal)) ;)) }) (else_clause "else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }" else (compound_statement "{\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }" { (if_statement "if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }" if (parenthesized_expression "(0 < (int)uVar30)" ( (binary_expression "0 < (int)uVar30" number_literal < (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }" { (expression_statement "bVar38 = false;" (assignment_expression "bVar38 = false" identifier = false) ;) (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (expression_statement "bVar37 = true;" (assignment_expression "bVar37 = true" identifier = true) ;) (labeled_statement "LAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );" statement_identifier : (do_statement "do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );" do (compound_statement "{\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        }" { (expression_statement "lVar11 = 6;" (assignment_expression "lVar11 = 6" identifier = number_literal) ;) (expression_statement "pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);" (assignment_expression "pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28)" identifier = (pointer_expression "*(byte **)(puVar29[9] + lVar25 * 0x28)" * (cast_expression "(byte **)(puVar29[9] + lVar25 * 0x28)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29[9] + lVar25 * 0x28)" ( (binary_expression "puVar29[9] + lVar25 * 0x28" (subscript_expression "puVar29[9]" identifier [ number_literal ]) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) ))))) ;) (expression_statement "pbVar31 = pbVar28;" (assignment_expression "pbVar31 = pbVar28" identifier = identifier) ;) (expression_statement "pbVar33 = (byte *)0x29f1f4;" (assignment_expression "pbVar33 = (byte *)0x29f1f4" identifier = (cast_expression "(byte *)0x29f1f4" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);" do (compound_statement "{\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          }" { (if_statement "if (lVar11 == 0) break;" if (parenthesized_expression "(lVar11 == 0)" ( (binary_expression "lVar11 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" identifier = (binary_expression "lVar11 + -1" identifier + number_literal)) ;) (expression_statement "bVar38 = *pbVar31 < *pbVar33;" (assignment_expression "bVar38 = *pbVar31 < *pbVar33" identifier = (binary_expression "*pbVar31 < *pbVar33" (pointer_expression "*pbVar31" * identifier) < (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "bVar37 = *pbVar31 == *pbVar33;" (assignment_expression "bVar37 = *pbVar31 == *pbVar33" identifier = (binary_expression "*pbVar31 == *pbVar33" (pointer_expression "*pbVar31" * identifier) == (pointer_expression "*pbVar33" * identifier))) ;) (expression_statement "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1" identifier = (binary_expression "pbVar31 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar31 + (ulong)bVar39 * -2" identifier + (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1" identifier = (binary_expression "pbVar33 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar33 + (ulong)bVar39 * -2" identifier + (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar37)" ( identifier )) ;) (if_statement "if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }" if (parenthesized_expression "(((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0))" ( (binary_expression "((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)" (parenthesized_expression "((!bVar38 && !bVar37) == bVar38)" ( (binary_expression "(!bVar38 && !bVar37) == bVar38" (parenthesized_expression "(!bVar38 && !bVar37)" ( (binary_expression "!bVar38 && !bVar37" (unary_expression "!bVar38" ! identifier) && (unary_expression "!bVar37" ! identifier)) )) == identifier) )) || (parenthesized_expression "(pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)" ( (comma_expression "pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0" (assignment_expression "pcVar14 = strchr((char *)pbVar28,0x40)" identifier = (call_expression "strchr((char *)pbVar28,0x40)" identifier (argument_list "((char *)pbVar28,0x40)" ( (cast_expression "(char *)pbVar28" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , number_literal )))) , (binary_expression "pcVar14 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }" { (labeled_statement "LAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);" statement_identifier : (expression_statement "uVar30 = *(uint *)(puVar29 + 8);" (assignment_expression "uVar30 = *(uint *)(puVar29 + 8)" identifier = (pointer_expression "*(uint *)(puVar29 + 8)" * (cast_expression "(uint *)(puVar29 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) ;)) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) (expression_statement "uVar34 = (uint)lVar25;" (assignment_expression "uVar34 = (uint)lVar25" identifier = (cast_expression "(uint)lVar25" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar38 = uVar30 < uVar34;" (assignment_expression "bVar38 = uVar30 < uVar34" identifier = (binary_expression "uVar30 < uVar34" identifier < identifier)) ;) (expression_statement "bVar37 = uVar30 == uVar34;" (assignment_expression "bVar37 = uVar30 == uVar34" identifier = (binary_expression "uVar30 == uVar34" identifier == identifier)) ;) (if_statement "if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;" if (parenthesized_expression "((int)uVar30 <= (int)uVar34)" ( (binary_expression "(int)uVar30 <= (int)uVar34" (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar34" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001525b0;" goto statement_identifier ;)) (goto_statement "goto LAB_001524c9;" goto statement_identifier ;) })) (expression_statement "local_3c[0] = 1;" (assignment_expression "local_3c[0] = 1" (subscript_expression "local_3c[0]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));" (assignment_expression "pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40))" identifier = (cast_expression "(char *)xstrdup(pbVar28 + (*pbVar28 == 0x40))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xstrdup(pbVar28 + (*pbVar28 == 0x40))" identifier (argument_list "(pbVar28 + (*pbVar28 == 0x40))" ( (binary_expression "pbVar28 + (*pbVar28 == 0x40)" identifier + (parenthesized_expression "(*pbVar28 == 0x40)" ( (binary_expression "*pbVar28 == 0x40" (pointer_expression "*pbVar28" * identifier) == number_literal) ))) ))))) ;) (expression_statement "pcVar15 = strchr(pcVar14,0x40);" (assignment_expression "pcVar15 = strchr(pcVar14,0x40)" identifier = (call_expression "strchr(pcVar14,0x40)" identifier (argument_list "(pcVar14,0x40)" ( identifier , number_literal )))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (expression_statement "*pcVar15 = '\0';" (assignment_expression "*pcVar15 = '\0'" (pointer_expression "*pcVar15" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);" (assignment_expression "iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14)" identifier = (call_expression "FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14)" identifier (argument_list "(0,puVar29 + 8,puVar29 + 9,pcVar14)" ( number_literal , (binary_expression "puVar29 + 8" identifier + number_literal) , (binary_expression "puVar29 + 9" identifier + number_literal) , identifier )))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }" { (expression_statement "FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);" (call_expression "FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c)" identifier (argument_list "(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c)" ( identifier , identifier , (pointer_expression "*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28)" * (cast_expression "(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8[9] + 8 + lVar25 * 0x28)" ( (binary_expression "DAT_002b5af8[9] + 8 + lVar25 * 0x28" (binary_expression "DAT_002b5af8[9] + 8" (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ]) + number_literal) + (binary_expression "lVar25 * 0x28" identifier * number_literal)) )))) , number_literal , number_literal , identifier ))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) })) (expression_statement "DAT_002b5af8 = puVar29;" (assignment_expression "DAT_002b5af8 = puVar29" identifier = identifier) ;) (if_statement "if (local_3c[0] == 0) goto LAB_001524b8;" if (parenthesized_expression "(local_3c[0] == 0)" ( (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_001524b8;" goto statement_identifier ;)) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) (expression_statement "free(pcVar14);" (call_expression "free(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier ))) ;) (expression_statement "uVar30 = *(uint *)(DAT_002b5af8 + 8);" (assignment_expression "uVar30 = *(uint *)(DAT_002b5af8 + 8)" identifier = (pointer_expression "*(uint *)(DAT_002b5af8 + 8)" * (cast_expression "(uint *)(DAT_002b5af8 + 8)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) ;) (expression_statement "uVar34 = (uint)lVar25;" (assignment_expression "uVar34 = (uint)lVar25" identifier = (cast_expression "(uint)lVar25" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "bVar38 = uVar30 < uVar34;" (assignment_expression "bVar38 = uVar30 < uVar34" identifier = (binary_expression "uVar30 < uVar34" identifier < identifier)) ;) (expression_statement "bVar37 = uVar30 == uVar34;" (assignment_expression "bVar37 = uVar30 == uVar34" identifier = (binary_expression "uVar30 == uVar34" identifier == identifier)) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;" if (parenthesized_expression "((int)uVar30 <= (int)uVar34)" ( (binary_expression "(int)uVar30 <= (int)uVar34" (cast_expression "(int)uVar30" ( (type_descriptor "int" primitive_type) ) identifier) <= (cast_expression "(int)uVar34" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_001525b0;" goto statement_identifier ;)) }) while (parenthesized_expression "( true )" ( true )) ;)) })) (labeled_statement "LAB_00152f50:\n      lVar25 = 0;" statement_identifier : (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;)) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) }))) (expression_statement "*(int *)(puVar29 + 8) = iVar10;" (assignment_expression "*(int *)(puVar29 + 8) = iVar10" (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "DAT_002b5b88 = xmalloc(lVar25);" (assignment_expression "DAT_002b5b88 = xmalloc(lVar25)" identifier = (call_expression "xmalloc(lVar25)" identifier (argument_list "(lVar25)" ( identifier )))) ;) (expression_statement "DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);" (assignment_expression "DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3)" identifier = (cast_expression "(void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3)" identifier (argument_list "((long)*(int *)(DAT_002b5af8 + 8) << 3)" ( (binary_expression "(long)*(int *)(DAT_002b5af8 + 8) << 3" (cast_expression "(long)*(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) << number_literal) ))))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (expression_statement "memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);" (call_expression "memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3)" identifier (argument_list "(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3)" ( identifier , number_literal , (binary_expression "(long)*(int *)(DAT_002b5af8 + 8) << 3" (cast_expression "(long)*(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) ))))) << number_literal) ))) ;) (expression_statement "iVar10 = *(int *)(puVar29 + 8);" (assignment_expression "iVar10 = *(int *)(puVar29 + 8)" identifier = (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) ;) (expression_statement "DAT_002b5b60 = 0;" (assignment_expression "DAT_002b5b60 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5b64 = 0x10000;" (assignment_expression "DAT_002b5b64 = 0x10000" identifier = number_literal) ;) (expression_statement "DAT_002b5b78 = 0;" (assignment_expression "DAT_002b5b78 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5b74 = 0;" (assignment_expression "DAT_002b5b74 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5b70 = 0;" (assignment_expression "DAT_002b5b70 = 0" identifier = number_literal) ;) (if_statement "if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }" { (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);" do (compound_statement "{\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      }" { (expression_statement "lVar11 = lVar25 * 0x28;" (assignment_expression "lVar11 = lVar25 * 0x28" identifier = (binary_expression "lVar25 * 0x28" identifier * number_literal)) ;) (expression_statement "pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);" (assignment_expression "pcVar14 = *(char **)(puVar29[9] + 8 + lVar11)" identifier = (pointer_expression "*(char **)(puVar29[9] + 8 + lVar11)" * (cast_expression "(char **)(puVar29[9] + 8 + lVar11)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar29[9] + 8 + lVar11)" ( (binary_expression "puVar29[9] + 8 + lVar11" (binary_expression "puVar29[9] + 8" (subscript_expression "puVar29[9]" identifier [ number_literal ]) + number_literal) + identifier) ))))) ;) (expression_statement "FUN_0011e4b0(pcVar14);" (call_expression "FUN_0011e4b0(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier ))) ;) (expression_statement "sVar13 = strlen(pcVar14);" (assignment_expression "sVar13 = strlen(pcVar14)" identifier = (call_expression "strlen(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier )))) ;) (expression_statement "pcVar15 = (char *)xmalloc(sVar13 + 2);" (assignment_expression "pcVar15 = (char *)xmalloc(sVar13 + 2)" identifier = (cast_expression "(char *)xmalloc(sVar13 + 2)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(sVar13 + 2)" identifier (argument_list "(sVar13 + 2)" ( (binary_expression "sVar13 + 2" identifier + number_literal) ))))) ;) (if_statement "if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }" if (parenthesized_expression "((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@'))" ( (binary_expression "(*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')" (parenthesized_expression "(*(int *)(DAT_002b5b90 + 0x1c) == 0)" ( (binary_expression "*(int *)(DAT_002b5b90 + 0x1c) == 0" (pointer_expression "*(int *)(DAT_002b5b90 + 0x1c)" * (cast_expression "(int *)(DAT_002b5b90 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5b90 + 0x1c)" ( (binary_expression "DAT_002b5b90 + 0x1c" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "(*pcVar14 == '@')" ( (binary_expression "*pcVar14 == '@'" (pointer_expression "*pcVar14" * identifier) == (char_literal "'@'" ' character ')) ))) )) (compound_statement "{\n          strcpy(pcVar15,pcVar14);\n        }" { (expression_statement "strcpy(pcVar15,pcVar14);" (call_expression "strcpy(pcVar15,pcVar14)" identifier (argument_list "(pcVar15,pcVar14)" ( identifier , identifier ))) ;) }) (else_clause "else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }" else (compound_statement "{\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }" { (expression_statement "*pcVar15 = '_';" (assignment_expression "*pcVar15 = '_'" (pointer_expression "*pcVar15" * identifier) = (char_literal "'_'" ' character ')) ;) (expression_statement "strcpy(pcVar15 + 1,pcVar14);" (call_expression "strcpy(pcVar15 + 1,pcVar14)" identifier (argument_list "(pcVar15 + 1,pcVar14)" ( (binary_expression "pcVar15 + 1" identifier + number_literal) , identifier ))) ;) (expression_statement "uVar16 = xstrdup(pcVar15);" (assignment_expression "uVar16 = xstrdup(pcVar15)" identifier = (call_expression "xstrdup(pcVar15)" identifier (argument_list "(pcVar15)" ( identifier )))) ;) (expression_statement "FUN_0011e4b0(uVar16);" (call_expression "FUN_0011e4b0(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) }))) (expression_statement "lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);" (assignment_expression "lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1)" identifier = (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1)" identifier (argument_list "(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1)" ( (pointer_expression "*(undefined8 *)(param_2 + 0x28)" * (cast_expression "(undefined8 *)(param_2 + 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x28)" ( (binary_expression "param_2 + 0x28" identifier + number_literal) )))) , identifier , number_literal , number_literal , number_literal )))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (if_statement "if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }" if (parenthesized_expression "(lVar17 == 0)" ( (binary_expression "lVar17 == 0" identifier == number_literal) )) (compound_statement "{\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }" { (expression_statement "pcVar14 = strchr(pcVar14,0x2e);" (assignment_expression "pcVar14 = strchr(pcVar14,0x2e)" identifier = (call_expression "strchr(pcVar14,0x2e)" identifier (argument_list "(pcVar14,0x2e)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }" if (parenthesized_expression "(pcVar14 != (char *)0x0)" ( (binary_expression "pcVar14 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }" { (labeled_statement "LAB_001528bb:\n            puVar29 = DAT_002b5af8;" statement_identifier : (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;)) (expression_statement "DAT_002b5b78 = DAT_002b5b78 + 1;" (assignment_expression "DAT_002b5b78 = DAT_002b5b78 + 1" identifier = (binary_expression "DAT_002b5b78 + 1" identifier + number_literal)) ;) (expression_statement "lVar11 = lVar11 + DAT_002b5af8[9];" (assignment_expression "lVar11 = lVar11 + DAT_002b5af8[9]" identifier = (binary_expression "lVar11 + DAT_002b5af8[9]" identifier + (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ]))) ;) (if_statement "if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" if (parenthesized_expression "(*(char *)(lVar11 + 0x22) == '\0')" ( (binary_expression "*(char *)(lVar11 + 0x22) == '\0'" (pointer_expression "*(char *)(lVar11 + 0x22)" * (cast_expression "(char *)(lVar11 + 0x22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x22)" ( (binary_expression "lVar11 + 0x22" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" { (expression_statement "DAT_002b5b74 = DAT_002b5b74 + 1;" (assignment_expression "DAT_002b5b74 = DAT_002b5b74 + 1" identifier = (binary_expression "DAT_002b5b74 + 1" identifier + number_literal)) ;) })) (expression_statement "iVar10 = *(int *)(lVar11 + 0x18);" (assignment_expression "iVar10 = *(int *)(lVar11 + 0x18)" identifier = (pointer_expression "*(int *)(lVar11 + 0x18)" * (cast_expression "(int *)(lVar11 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x18)" ( (binary_expression "lVar11 + 0x18" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(lVar11 + 0x24) = 1;" (assignment_expression "*(undefined1 *)(lVar11 + 0x24) = 1" (pointer_expression "*(undefined1 *)(lVar11 + 0x24)" * (cast_expression "(undefined1 *)(lVar11 + 0x24)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + 0x24)" ( (binary_expression "lVar11 + 0x24" identifier + number_literal) )))) = number_literal) ;) (goto_statement "goto joined_r0x001527c9;" goto statement_identifier ;) })) (expression_statement "pcVar18 = "%X%P: cannot export %s: symbol not found\n";" (assignment_expression "pcVar18 = "%X%P: cannot export %s: symbol not found\n"" identifier = (string_literal ""%X%P: cannot export %s: symbol not found\n"" " string_content escape_sequence ")) ;) (labeled_statement "LAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);" statement_identifier : (expression_statement "uVar16 = dcgettext(0,pcVar18,5);" (assignment_expression "uVar16 = dcgettext(0,pcVar18,5)" identifier = (call_expression "dcgettext(0,pcVar18,5)" identifier (argument_list "(0,pcVar18,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "FUN_00129380(uVar16);" (call_expression "FUN_00129380(uVar16)" identifier (argument_list "(uVar16)" ( identifier ))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) }) (else_clause "else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }" else (compound_statement "{\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }" { (expression_statement "cVar5 = *(char *)(lVar17 + 0x18);" (assignment_expression "cVar5 = *(char *)(lVar17 + 0x18)" identifier = (pointer_expression "*(char *)(lVar17 + 0x18)" * (cast_expression "(char *)(lVar17 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 0x18)" ( (binary_expression "lVar17 + 0x18" identifier + number_literal) ))))) ;) (if_statement "if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }" if (parenthesized_expression "((cVar5 - 3U & 0xfd) == 0)" ( (binary_expression "(cVar5 - 3U & 0xfd) == 0" (parenthesized_expression "(cVar5 - 3U & 0xfd)" ( (binary_expression "cVar5 - 3U & 0xfd" (binary_expression "cVar5 - 3U" identifier - number_literal) & number_literal) )) == number_literal) )) (compound_statement "{\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }" { (expression_statement "DAT_002b5b78 = DAT_002b5b78 + 1;" (assignment_expression "DAT_002b5b78 = DAT_002b5b78 + 1" identifier = (binary_expression "DAT_002b5b78 + 1" identifier + number_literal)) ;) (expression_statement "lVar7 = DAT_002b5af8[9];" (assignment_expression "lVar7 = DAT_002b5af8[9]" identifier = (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ])) ;) (if_statement "if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" if (parenthesized_expression "(*(char *)(lVar11 + lVar7 + 0x22) == '\0')" ( (binary_expression "*(char *)(lVar11 + lVar7 + 0x22) == '\0'" (pointer_expression "*(char *)(lVar11 + lVar7 + 0x22)" * (cast_expression "(char *)(lVar11 + lVar7 + 0x22)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + lVar7 + 0x22)" ( (binary_expression "lVar11 + lVar7 + 0x22" (binary_expression "lVar11 + lVar7" identifier + identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" { (expression_statement "DAT_002b5b74 = DAT_002b5b74 + 1;" (assignment_expression "DAT_002b5b74 = DAT_002b5b74 + 1" identifier = (binary_expression "DAT_002b5b74 + 1" identifier + number_literal)) ;) })) (expression_statement "lVar17 = *(long *)(lVar17 + 0x28);" (assignment_expression "lVar17 = *(long *)(lVar17 + 0x28)" identifier = (pointer_expression "*(long *)(lVar17 + 0x28)" * (cast_expression "(long *)(lVar17 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 0x28)" ( (binary_expression "lVar17 + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }" if (parenthesized_expression "(cVar5 != '\x03')" ( (binary_expression "cVar5 != '\x03'" identifier != (char_literal "'\x03'" ' escape_sequence ')) )) (compound_statement "{\n              lVar17 = *(long *)(lVar17 + 8);\n            }" { (expression_statement "lVar17 = *(long *)(lVar17 + 8);" (assignment_expression "lVar17 = *(long *)(lVar17 + 8)" identifier = (pointer_expression "*(long *)(lVar17 + 8)" * (cast_expression "(long *)(lVar17 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + 8)" ( (binary_expression "lVar17 + 8" identifier + number_literal) ))))) ;) })) (expression_statement "*(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;" (assignment_expression "*(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17" (pointer_expression "*(long *)((long)DAT_002b5b80 + lVar25 * 8)" * (cast_expression "(long *)((long)DAT_002b5b80 + lVar25 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_002b5b80 + lVar25 * 8)" ( (binary_expression "(long)DAT_002b5b80 + lVar25 * 8" (cast_expression "(long)DAT_002b5b80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar25 * 8" identifier * number_literal)) )))) = identifier) ;) (expression_statement "iVar10 = *(int *)(lVar11 + lVar7 + 0x18);" (assignment_expression "iVar10 = *(int *)(lVar11 + lVar7 + 0x18)" identifier = (pointer_expression "*(int *)(lVar11 + lVar7 + 0x18)" * (cast_expression "(int *)(lVar11 + lVar7 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar11 + lVar7 + 0x18)" ( (binary_expression "lVar11 + lVar7 + 0x18" (binary_expression "lVar11 + lVar7" identifier + identifier) + number_literal) ))))) ;) (labeled_statement "joined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }" statement_identifier : (if_statement "if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }" if (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) (compound_statement "{\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }" { (if_statement "if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }" if (parenthesized_expression "(DAT_002b5b60 < iVar10)" ( (binary_expression "DAT_002b5b60 < iVar10" identifier < identifier) )) (compound_statement "{\n                DAT_002b5b60 = iVar10;\n              }" { (expression_statement "DAT_002b5b60 = iVar10;" (assignment_expression "DAT_002b5b60 = iVar10" identifier = identifier) ;) })) (if_statement "if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }" if (parenthesized_expression "(iVar10 < DAT_002b5b64)" ( (binary_expression "iVar10 < DAT_002b5b64" identifier < identifier) )) (compound_statement "{\n                DAT_002b5b64 = iVar10;\n              }" { (expression_statement "DAT_002b5b64 = iVar10;" (assignment_expression "DAT_002b5b64 = iVar10" identifier = identifier) ;) })) (expression_statement "DAT_002b5b70 = DAT_002b5b70 + 1;" (assignment_expression "DAT_002b5b70 = DAT_002b5b70 + 1" identifier = (binary_expression "DAT_002b5b70 + 1" identifier + number_literal)) ;) }))) }) (else_clause "else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }" else (compound_statement "{\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }" { (expression_statement "pcVar18 = strchr(pcVar14,0x2e);" (assignment_expression "pcVar18 = strchr(pcVar14,0x2e)" identifier = (call_expression "strchr(pcVar14,0x2e)" identifier (argument_list "(pcVar14,0x2e)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar18 != (char *)0x0) goto LAB_001528bb;" if (parenthesized_expression "(pcVar18 != (char *)0x0)" ( (binary_expression "pcVar18 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_001528bb;" goto statement_identifier ;)) (expression_statement "pcVar18 = "%X%P: cannot export %s: symbol not defined\n";" (assignment_expression "pcVar18 = "%X%P: cannot export %s: symbol not defined\n"" identifier = (string_literal ""%X%P: cannot export %s: symbol not defined\n"" " string_content escape_sequence ")) ;) (if_statement "if (cVar5 == '\x01') goto LAB_00152d02;" if (parenthesized_expression "(cVar5 == '\x01')" ( (binary_expression "cVar5 == '\x01'" identifier == (char_literal "'\x01'" ' escape_sequence ')) )) (goto_statement "goto LAB_00152d02;" goto statement_identifier ;)) (expression_statement "uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5)" identifier (argument_list "(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5)" ( number_literal , (string_literal ""%X%P: cannot export %s: symbol wrong type (%d vs %d)\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar16,pcVar14,cVar5);" (call_expression "FUN_00129380(uVar16,pcVar14,cVar5)" identifier (argument_list "(uVar16,pcVar14,cVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) }))) }))) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) (expression_statement "free(pcVar15);" (call_expression "free(pcVar15)" identifier (argument_list "(pcVar15)" ( identifier ))) ;) (expression_statement "iVar10 = *(int *)(puVar29 + 8);" (assignment_expression "iVar10 = *(int *)(puVar29 + 8)" identifier = (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "((int)lVar25 < iVar10)" ( (binary_expression "(int)lVar25 < iVar10" (cast_expression "(int)lVar25" ( (type_descriptor "int" primitive_type) ) identifier) < identifier) )) ;) })) (labeled_statement "joined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;" statement_identifier : (if_statement "if (iVar10 == 0) goto LAB_00152950;" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (goto_statement "goto LAB_00152950;" goto statement_identifier ;))) }))) (expression_statement "DAT_002b5b68 = (char *)*puVar29;" (assignment_expression "DAT_002b5b68 = (char *)*puVar29" identifier = (cast_expression "(char *)*puVar29" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar29" * identifier))) ;) (if_statement "if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }" if (parenthesized_expression "(DAT_002b5b68 == (char *)0x0)" ( (binary_expression "DAT_002b5b68 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }" { (expression_statement "DAT_002b5b68 = (char *)*param_1;" (assignment_expression "DAT_002b5b68 = (char *)*param_1" identifier = (cast_expression "(char *)*param_1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "cVar5 = *DAT_002b5b68;" (assignment_expression "cVar5 = *DAT_002b5b68" identifier = (pointer_expression "*DAT_002b5b68" * identifier)) ;) (if_statement "if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }" if (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }" { (expression_statement "bVar38 = false;" (assignment_expression "bVar38 = false" identifier = false) ;) (expression_statement "pcVar14 = DAT_002b5b68;" (assignment_expression "pcVar14 = DAT_002b5b68" identifier = identifier) ;) (expression_statement "pcVar15 = DAT_002b5b68;" (assignment_expression "pcVar15 = DAT_002b5b68" identifier = identifier) ;) (do_statement "do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');" do (compound_statement "{\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      }" { (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" identifier = (binary_expression "pcVar14 + 1" identifier + number_literal)) ;) (if_statement "if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }" if (parenthesized_expression "(((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0))" ( (binary_expression "((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)" (parenthesized_expression "((byte)(cVar5 - 0x2fU) < 0x2e)" ( (binary_expression "(byte)(cVar5 - 0x2fU) < 0x2e" (call_expression "(byte)(cVar5 - 0x2fU)" (parenthesized_expression "(byte)" ( identifier )) (argument_list "(cVar5 - 0x2fU)" ( (binary_expression "cVar5 - 0x2fU" identifier - number_literal) ))) < number_literal) )) && (parenthesized_expression "((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)" ( (binary_expression "(~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0" (parenthesized_expression "(~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1)" ( (binary_expression "~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1" (unary_expression "~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f))" ~ (call_expression "(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f))" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(0x200000000801 >> (cVar5 - 0x2fU & 0x3f))" ( (binary_expression "0x200000000801 >> (cVar5 - 0x2fU & 0x3f)" number_literal >> (parenthesized_expression "(cVar5 - 0x2fU & 0x3f)" ( (binary_expression "cVar5 - 0x2fU & 0x3f" (binary_expression "cVar5 - 0x2fU" identifier - number_literal) & number_literal) ))) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }" { (expression_statement "bVar38 = true;" (assignment_expression "bVar38 = true" identifier = true) ;) (expression_statement "pcVar15 = pcVar14;" (assignment_expression "pcVar15 = pcVar14" identifier = identifier) ;) })) (expression_statement "cVar5 = *pcVar14;" (assignment_expression "cVar5 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) }) while (parenthesized_expression "(cVar5 != '\0')" ( (binary_expression "cVar5 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) ;) (if_statement "if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }" if (parenthesized_expression "(bVar38)" ( identifier )) (compound_statement "{\n        DAT_002b5b68 = pcVar15;\n      }" { (expression_statement "DAT_002b5b68 = pcVar15;" (assignment_expression "DAT_002b5b68 = pcVar15" identifier = identifier) ;) })) })) })) (if_statement "if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }" if (parenthesized_expression "((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78))" ( (binary_expression "(DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)" (parenthesized_expression "(DAT_002b5b70 == 0)" ( (binary_expression "DAT_002b5b70 == 0" identifier == number_literal) )) || (parenthesized_expression "(DAT_002b5b60 <= DAT_002b5b78)" ( (binary_expression "DAT_002b5b60 <= DAT_002b5b78" identifier <= identifier) ))) )) (compound_statement "{\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }" { (expression_statement "DAT_002b5b64 = 1;" (assignment_expression "DAT_002b5b64 = 1" identifier = number_literal) ;) (expression_statement "DAT_002b5b60 = DAT_002b5b78;" (assignment_expression "DAT_002b5b60 = DAT_002b5b78" identifier = identifier) ;) }) (else_clause "else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }" else (compound_statement "{\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }" { (expression_statement "iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;" (assignment_expression "iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1" identifier = (binary_expression "(DAT_002b5b60 - DAT_002b5b78) + 1" (parenthesized_expression "(DAT_002b5b60 - DAT_002b5b78)" ( (binary_expression "DAT_002b5b60 - DAT_002b5b78" identifier - identifier) )) + number_literal)) ;) (if_statement "if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }" if (parenthesized_expression "(iVar10 < DAT_002b5b64)" ( (binary_expression "iVar10 < DAT_002b5b64" identifier < identifier) )) (compound_statement "{\n      DAT_002b5b64 = iVar10;\n    }" { (expression_statement "DAT_002b5b64 = iVar10;" (assignment_expression "DAT_002b5b64 = iVar10" identifier = identifier) ;) })) }))) (expression_statement "DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;" (assignment_expression "DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1" identifier = (binary_expression "(DAT_002b5b60 - DAT_002b5b64) + 1" (parenthesized_expression "(DAT_002b5b60 - DAT_002b5b64)" ( (binary_expression "DAT_002b5b60 - DAT_002b5b64" identifier - identifier) )) + number_literal)) ;) (expression_statement "puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);" (assignment_expression "puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2)" identifier = (cast_expression "(undefined4 *)xmalloc((long)DAT_002b5b7c << 2)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)DAT_002b5b7c << 2)" identifier (argument_list "((long)DAT_002b5b7c << 2)" ( (binary_expression "(long)DAT_002b5b7c << 2" (cast_expression "(long)DAT_002b5b7c" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) << number_literal) ))))) ;) (expression_statement "DAT_002b5b58 = puVar19;" (assignment_expression "DAT_002b5b58 = puVar19" identifier = identifier) ;) (if_statement "if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }" if (parenthesized_expression "(0 < DAT_002b5b7c)" ( (binary_expression "0 < DAT_002b5b7c" number_literal < identifier) )) (compound_statement "{\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }" { (expression_statement "puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;" (assignment_expression "puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1" identifier = (binary_expression "puVar19 + (ulong)(DAT_002b5b7c - 1) + 1" (binary_expression "puVar19 + (ulong)(DAT_002b5b7c - 1)" identifier + (call_expression "(ulong)(DAT_002b5b7c - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(DAT_002b5b7c - 1)" ( (binary_expression "DAT_002b5b7c - 1" identifier - number_literal) )))) + number_literal)) ;) (do_statement "do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);" do (compound_statement "{\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    }" { (expression_statement "*puVar19 = 0xffffffff;" (assignment_expression "*puVar19 = 0xffffffff" (pointer_expression "*puVar19" * identifier) = number_literal) ;) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar4 != puVar19)" ( (binary_expression "puVar4 != puVar19" identifier != identifier) )) ;) })) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "local_68 = DAT_002b5b64;" (assignment_expression "local_68 = DAT_002b5b64" identifier = identifier) ;) (expression_statement "iVar10 = DAT_002b5b64;" (assignment_expression "iVar10 = DAT_002b5b64" identifier = identifier) ;) (if_statement "if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;" if (parenthesized_expression "(*(int *)(DAT_002b5af8 + 8) < 1)" ( (binary_expression "*(int *)(DAT_002b5af8 + 8) < 1" (pointer_expression "*(int *)(DAT_002b5af8 + 8)" * (cast_expression "(int *)(DAT_002b5af8 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5af8 + 8)" ( (binary_expression "DAT_002b5af8 + 8" identifier + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_00152b30;" goto statement_identifier ;)) (expression_statement "lVar25 = DAT_002b5af8[9];" (assignment_expression "lVar25 = DAT_002b5af8[9]" identifier = (subscript_expression "DAT_002b5af8[9]" identifier [ number_literal ])) ;) (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" identifier = number_literal) ;) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" identifier = number_literal) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) (do_statement "do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));" do (compound_statement "{\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  }" { (expression_statement "lVar17 = lVar11 * 0x28;" (assignment_expression "lVar17 = lVar11 * 0x28" identifier = (binary_expression "lVar11 * 0x28" identifier * number_literal)) ;) (expression_statement "puVar26 = (undefined8 *)(lVar25 + lVar17);" (assignment_expression "puVar26 = (undefined8 *)(lVar25 + lVar17)" identifier = (cast_expression "(undefined8 *)(lVar25 + lVar17)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + lVar17)" ( (binary_expression "lVar25 + lVar17" identifier + identifier) )))) ;) (if_statement "if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" if (parenthesized_expression "((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0'))" ( (binary_expression "(*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')" (parenthesized_expression "(*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0)" ( (binary_expression "*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0" (pointer_expression "*(long *)((long)DAT_002b5b80 + lVar11 * 8)" * (cast_expression "(long *)((long)DAT_002b5b80 + lVar11 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)DAT_002b5b80 + lVar11 * 8)" ( (binary_expression "(long)DAT_002b5b80 + lVar11 * 8" (cast_expression "(long)DAT_002b5b80" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar11 * 8" identifier * number_literal)) )))) == number_literal) )) && (parenthesized_expression "(*(char *)((long)puVar26 + 0x24) == '\0')" ( (binary_expression "*(char *)((long)puVar26 + 0x24) == '\0'" (pointer_expression "*(char *)((long)puVar26 + 0x24)" * (cast_expression "(char *)((long)puVar26 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar26 + 0x24)" ( (binary_expression "(long)puVar26 + 0x24" (cast_expression "(long)puVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }" { (expression_statement "lVar25 = puVar29[9];" (assignment_expression "lVar25 = puVar29[9]" identifier = (subscript_expression "puVar29[9]" identifier [ number_literal ])) ;) (expression_statement "puVar26 = (undefined8 *)(lVar17 + lVar25);" (assignment_expression "puVar26 = (undefined8 *)(lVar17 + lVar25)" identifier = (cast_expression "(undefined8 *)(lVar17 + lVar25)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar25)" ( (binary_expression "lVar17 + lVar25" identifier + identifier) )))) ;) }) (else_clause "else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" else (compound_statement "{\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" { (expression_statement "iVar10 = *(int *)(puVar26 + 3);" (assignment_expression "iVar10 = *(int *)(puVar26 + 3)" identifier = (pointer_expression "*(int *)(puVar26 + 3)" * (cast_expression "(int *)(puVar26 + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar26 + 3)" ( (binary_expression "puVar26 + 3" identifier + number_literal) ))))) ;) (if_statement "if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }" if (parenthesized_expression "(iVar10 != -1)" ( (binary_expression "iVar10 != -1" identifier != number_literal) )) (compound_statement "{\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }" { (expression_statement "iVar35 = iVar10 - local_68;" (assignment_expression "iVar35 = iVar10 - local_68" identifier = (binary_expression "iVar10 - local_68" identifier - identifier)) ;) (expression_statement "piVar23 = DAT_002b5b58 + iVar35;" (assignment_expression "piVar23 = DAT_002b5b58 + iVar35" identifier = (binary_expression "DAT_002b5b58 + iVar35" identifier + identifier)) ;) (if_statement "if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }" if (parenthesized_expression "(*piVar23 != -1)" ( (binary_expression "*piVar23 != -1" (pointer_expression "*piVar23" * identifier) != number_literal) )) (compound_statement "{\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }" { (expression_statement "uVar16 = *puVar26;" (assignment_expression "uVar16 = *puVar26" identifier = (pointer_expression "*puVar26" * identifier)) ;) (expression_statement "uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);" (assignment_expression "uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28)" identifier = (pointer_expression "*(undefined8 *)(lVar25 + (long)*piVar23 * 0x28)" * (cast_expression "(undefined8 *)(lVar25 + (long)*piVar23 * 0x28)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + (long)*piVar23 * 0x28)" ( (binary_expression "lVar25 + (long)*piVar23 * 0x28" identifier + (binary_expression "(long)*piVar23 * 0x28" (cast_expression "(long)*piVar23" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar23" * identifier)) * number_literal)) ))))) ;) (expression_statement "uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);" (assignment_expression "uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" identifier (argument_list "(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" ( number_literal , (string_literal ""%X%P: error: ordinal used twice: %d (%s vs %s)\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar20,iVar10,uVar16,uVar21);" (call_expression "FUN_00129380(uVar20,iVar10,uVar16,uVar21)" identifier (argument_list "(uVar20,iVar10,uVar16,uVar21)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "local_68 = DAT_002b5b64;" (assignment_expression "local_68 = DAT_002b5b64" identifier = identifier) ;) (expression_statement "piVar23 = DAT_002b5b58 + iVar35;" (assignment_expression "piVar23 = DAT_002b5b58 + iVar35" identifier = (binary_expression "DAT_002b5b58 + iVar35" identifier + identifier)) ;) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" identifier = identifier) ;) })) (expression_statement "*piVar23 = (int)lVar11;" (assignment_expression "*piVar23 = (int)lVar11" (pointer_expression "*piVar23" * identifier) = (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "lVar25 = puVar29[9];" (assignment_expression "lVar25 = puVar29[9]" identifier = (subscript_expression "puVar29[9]" identifier [ number_literal ])) ;) (expression_statement "puVar26 = (undefined8 *)(lVar17 + lVar25);" (assignment_expression "puVar26 = (undefined8 *)(lVar17 + lVar25)" identifier = (cast_expression "(undefined8 *)(lVar17 + lVar25)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar17 + lVar25)" ( (binary_expression "lVar17 + lVar25" identifier + identifier) )))) ;) (expression_statement "pcVar14 = (char *)puVar26[2];" (assignment_expression "pcVar14 = (char *)puVar26[2]" identifier = (cast_expression "(char *)puVar26[2]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar26[2]" identifier [ number_literal ]))) ;) (if_statement "if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }" if (parenthesized_expression "(pcVar14 == (char *)0x0)" ( (binary_expression "pcVar14 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pcVar14 = (char *)*puVar26;\n      }" { (expression_statement "pcVar14 = (char *)*puVar26;" (assignment_expression "pcVar14 = (char *)*puVar26" identifier = (cast_expression "(char *)*puVar26" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar26" * identifier))) ;) })) (expression_statement "sVar13 = strlen(pcVar14);" (assignment_expression "sVar13 = strlen(pcVar14)" identifier = (call_expression "strlen(pcVar14)" identifier (argument_list "(pcVar14)" ( identifier )))) ;) (expression_statement "iVar27 = iVar27 + 1 + (int)sVar13;" (assignment_expression "iVar27 = iVar27 + 1 + (int)sVar13" identifier = (binary_expression "iVar27 + 1 + (int)sVar13" (binary_expression "iVar27 + 1" identifier + number_literal) + (cast_expression "(int)sVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) }))) (if_statement "if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" if (parenthesized_expression "(*(char *)((long)puVar26 + 0x24) != '\0')" ( (binary_expression "*(char *)((long)puVar26 + 0x24) != '\0'" (pointer_expression "*(char *)((long)puVar26 + 0x24)" * (cast_expression "(char *)((long)puVar26 + 0x24)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar26 + 0x24)" ( (binary_expression "(long)puVar26 + 0x24" (cast_expression "(long)puVar26" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" { (expression_statement "sVar13 = strlen((char *)puVar26[1]);" (assignment_expression "sVar13 = strlen((char *)puVar26[1])" identifier = (call_expression "strlen((char *)puVar26[1])" identifier (argument_list "((char *)puVar26[1])" ( (cast_expression "(char *)puVar26[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar26[1]" identifier [ number_literal ])) )))) ;) (expression_statement "iVar27 = iVar27 + 1 + (int)sVar13;" (assignment_expression "iVar27 = iVar27 + 1 + (int)sVar13" identifier = (binary_expression "iVar27 + 1 + (int)sVar13" (binary_expression "iVar27 + 1" identifier + number_literal) + (cast_expression "(int)sVar13" ( (type_descriptor "int" primitive_type) ) identifier))) ;) })) (expression_statement "pvVar12 = DAT_002b5b80;" (assignment_expression "pvVar12 = DAT_002b5b80" identifier = identifier) ;) (expression_statement "puVar19 = DAT_002b5b58;" (assignment_expression "puVar19 = DAT_002b5b58" identifier = identifier) ;) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" identifier = (binary_expression "lVar11 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((int)lVar11 < *(int *)(puVar29 + 8))" ( (binary_expression "(int)lVar11 < *(int *)(puVar29 + 8)" (cast_expression "(int)lVar11" ( (type_descriptor "int" primitive_type) ) identifier) < (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) ))))) )) ;) (expression_statement "iVar10 = local_68;" (assignment_expression "iVar10 = local_68" identifier = identifier) ;) (if_statement "if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;" if (parenthesized_expression "(*(int *)(puVar29 + 8) < 1)" ( (binary_expression "*(int *)(puVar29 + 8) < 1" (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_00152b30;" goto statement_identifier ;)) (expression_statement "piVar23 = (int *)(lVar25 + 0x18);" (assignment_expression "piVar23 = (int *)(lVar25 + 0x18)" identifier = (cast_expression "(int *)(lVar25 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar25 + 0x18)" ( (binary_expression "lVar25 + 0x18" identifier + number_literal) )))) ;) (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" identifier = number_literal) ;) (do_statement "do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );" do (compound_statement "{\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  }" { (if_statement "if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }" if (parenthesized_expression "(*(long *)((long)pvVar12 + lVar25 * 8) == 0)" ( (binary_expression "*(long *)((long)pvVar12 + lVar25 * 8) == 0" (pointer_expression "*(long *)((long)pvVar12 + lVar25 * 8)" * (cast_expression "(long *)((long)pvVar12 + lVar25 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar12 + lVar25 * 8)" ( (binary_expression "(long)pvVar12 + lVar25 * 8" (cast_expression "(long)pvVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (binary_expression "lVar25 * 8" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }" { (if_statement "if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }" if (parenthesized_expression "((char)piVar23[3] != '\0')" ( (binary_expression "(char)piVar23[3] != '\0'" (cast_expression "(char)piVar23[3]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar23[3]" identifier [ number_literal ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }" { (expression_statement "iVar35 = *piVar23;" (assignment_expression "iVar35 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (goto_statement "goto joined_r0x00152c53;" goto statement_identifier ;) })) }) (else_clause "else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }" else (compound_statement "{\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }" { (expression_statement "iVar35 = *piVar23;" (assignment_expression "iVar35 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (labeled_statement "joined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }" statement_identifier : (if_statement "if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }" if (parenthesized_expression "(iVar35 == -1)" ( (binary_expression "iVar35 == -1" identifier == number_literal) )) (compound_statement "{\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }" { (expression_statement "piVar32 = puVar19 + (iVar10 - local_68);" (assignment_expression "piVar32 = puVar19 + (iVar10 - local_68)" identifier = (binary_expression "puVar19 + (iVar10 - local_68)" identifier + (parenthesized_expression "(iVar10 - local_68)" ( (binary_expression "iVar10 - local_68" identifier - identifier) )))) ;) (if_statement "if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }" if (parenthesized_expression "(*piVar32 != -1)" ( (binary_expression "*piVar32 != -1" (pointer_expression "*piVar32" * identifier) != number_literal) )) (compound_statement "{\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }" { (expression_statement "piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);" (assignment_expression "piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68)" identifier = (binary_expression "puVar19 + (long)iVar10 + (1 - (long)local_68)" (binary_expression "puVar19 + (long)iVar10" identifier + (cast_expression "(long)iVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) + (parenthesized_expression "(1 - (long)local_68)" ( (binary_expression "1 - (long)local_68" number_literal - (cast_expression "(long)local_68" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (do_statement "do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);" do (compound_statement "{\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          }" { (expression_statement "piVar32 = piVar8;" (assignment_expression "piVar32 = piVar8" identifier = identifier) ;) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" identifier = (binary_expression "iVar10 + 1" identifier + number_literal)) ;) (expression_statement "piVar8 = piVar32 + 1;" (assignment_expression "piVar8 = piVar32 + 1" identifier = (binary_expression "piVar32 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar32 != -1)" ( (binary_expression "*piVar32 != -1" (pointer_expression "*piVar32" * identifier) != number_literal) )) ;) })) (expression_statement "*piVar32 = (int)lVar25;" (assignment_expression "*piVar32 = (int)lVar25" (pointer_expression "*piVar32" * identifier) = (cast_expression "(int)lVar25" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "*piVar23 = iVar10;" (assignment_expression "*piVar23 = iVar10" (pointer_expression "*piVar23" * identifier) = identifier) ;) }))) }))) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" identifier = (binary_expression "lVar25 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 10;" (assignment_expression "piVar23 = piVar23 + 10" identifier = (binary_expression "piVar23 + 10" identifier + number_literal)) ;) (if_statement "if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }" if (parenthesized_expression "(*(int *)(puVar29 + 8) <= (int)lVar25)" ( (binary_expression "*(int *)(puVar29 + 8) <= (int)lVar25" (pointer_expression "*(int *)(puVar29 + 8)" * (cast_expression "(int *)(puVar29 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar29 + 8)" ( (binary_expression "puVar29 + 8" identifier + number_literal) )))) <= (cast_expression "(int)lVar25" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }" { (labeled_statement "LAB_00152b30:\n      iVar35 = DAT_002b5b60;" statement_identifier : (expression_statement "iVar35 = DAT_002b5b60;" (assignment_expression "iVar35 = DAT_002b5b60" identifier = identifier) ;)) (if_statement "if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }" if (parenthesized_expression "((0xffff < DAT_002b5b60) || (0xffff < iVar10))" ( (binary_expression "(0xffff < DAT_002b5b60) || (0xffff < iVar10)" (parenthesized_expression "(0xffff < DAT_002b5b60)" ( (binary_expression "0xffff < DAT_002b5b60" number_literal < identifier) )) || (parenthesized_expression "(0xffff < iVar10)" ( (binary_expression "0xffff < iVar10" number_literal < identifier) ))) )) (compound_statement "{\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }" { (expression_statement "uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5)" identifier = (call_expression "dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5)" identifier (argument_list "(0,"%X%P: error: export ordinal too large: %d\n",5)" ( number_literal , (string_literal ""%X%P: error: export ordinal too large: %d\n"" " string_content escape_sequence ") , number_literal )))) ;) (if_statement "if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }" if (parenthesized_expression "(iVar10 <= iVar35)" ( (binary_expression "iVar10 <= iVar35" identifier <= identifier) )) (compound_statement "{\n          iVar10 = iVar35;\n        }" { (expression_statement "iVar10 = iVar35;" (assignment_expression "iVar10 = iVar35" identifier = identifier) ;) })) (expression_statement "FUN_00129380(uVar16,iVar10);" (call_expression "FUN_00129380(uVar16,iVar10)" identifier (argument_list "(uVar16,iVar10)" ( identifier , identifier ))) ;) })) (expression_statement "iVar10 = DAT_002b5b74;" (assignment_expression "iVar10 = DAT_002b5b74" identifier = identifier) ;) (expression_statement "sVar13 = strlen(DAT_002b5b68);" (assignment_expression "sVar13 = strlen(DAT_002b5b68)" identifier = (call_expression "strlen(DAT_002b5b68)" identifier (argument_list "(DAT_002b5b68)" ( identifier )))) ;) (expression_statement "DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);" (assignment_expression "DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" identifier = (binary_expression "sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" (binary_expression "sVar13 + 1" identifier + number_literal) + (cast_expression "(long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" ( (binary_expression "iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4" (binary_expression "iVar27 + iVar10 * 6 + 0x28" (binary_expression "iVar27 + iVar10 * 6" identifier + (binary_expression "iVar10 * 6" identifier * number_literal)) + number_literal) + (binary_expression "DAT_002b5b7c * 4" identifier * number_literal)) ))))) ;) (expression_statement "FUN_0014d1c0(1);" (call_expression "FUN_0014d1c0(1)" identifier (argument_list "(1)" ( number_literal ))) ;) (expression_statement "FUN_00152090(DAT_002b5bd0);" (call_expression "FUN_00152090(DAT_002b5bd0)" identifier (argument_list "(DAT_002b5bd0)" ( identifier ))) ;) (return_statement "return;" return ;) })) }) while (parenthesized_expression "( true )" ( true )) ;) (labeled_statement "code_r0x001521e2:\n  plVar24 = (long *)*plVar24;" statement_identifier : (expression_statement "plVar24 = (long *)*plVar24;" (assignment_expression "plVar24 = (long *)*plVar24" identifier = (cast_expression "(long *)*plVar24" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar24" * identifier))) ;)) (expression_statement "**(uint **)(lVar25 + 0x28) = *puVar1;" (assignment_expression "**(uint **)(lVar25 + 0x28) = *puVar1" (pointer_expression "**(uint **)(lVar25 + 0x28)" * (pointer_expression "*(uint **)(lVar25 + 0x28)" * (cast_expression "(uint **)(lVar25 + 0x28)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar25 + 0x28)" ( (binary_expression "lVar25 + 0x28" identifier + number_literal) ))))) = (pointer_expression "*puVar1" * identifier)) ;) (goto_statement "goto joined_r0x001521ab;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) })) (for_statement for ( (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT & LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (subscript_expression IDENT [ LIT ]) , LIT , LIT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) < (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (return_statement return ;) }))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (labeled_statement statement_identifier : (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 (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) )))) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_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) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) })) (expression_statement (assignment_expression IDENT = BOOL) ;) (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 = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (string_literal " string_content ") , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT , LIT , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , LIT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_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 (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) >> LIT) ))) ^ LIT) )) & LIT)) ;) })) })) })) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( 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) ;) (goto_statement goto statement_identifier ;) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (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) ))))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (char_literal ' character ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) , (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 *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) )))) = 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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) IDENT)) , LIT , IDENT ))) ;) (goto_statement goto statement_identifier ;) })) })))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression IDENT == LIT)) ))) )) || (parenthesized_expression ( (binary_expression IDENT == IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) }))) (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) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) << LIT)) ;)) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , LIT )))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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) ))))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' escape_sequence ')) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + (binary_expression IDENT * LIT)) )))) , LIT , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( 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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT < IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( BOOL )) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) << LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) << 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 = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) + IDENT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (char_literal ' character ')) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT , LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (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 (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 = (string_literal " string_content escape_sequence ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , LIT )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( 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 IDENT = (string_literal " string_content escape_sequence ")) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < IDENT) )) ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;))) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) < LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ~ (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression LIT >> (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) & LIT) ))) )))) & LIT) )) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT <= IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) << LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) )))) + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == (char_literal ' escape_sequence ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (binary_expression IDENT * LIT)) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (parenthesized_expression ( (binary_expression IDENT - IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < IDENT) )) || (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) }) while (parenthesized_expression ( BOOL )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;)) (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "void FUN_001520f0(undefined8 *param_1,byte *param_2)\n\n{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long *plVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  ulong uVar6;\n  long lVar7;\n  int *piVar8;\n  byte bVar9;\n  int iVar10;\n  long lVar11;\n  void *pvVar12;\n  size_t sVar13;\n  char *pcVar14;\n  char *pcVar15;\n  undefined8 uVar16;\n  long lVar17;\n  char *pcVar18;\n  undefined4 *puVar19;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  int iVar22;\n  int *piVar23;\n  long *plVar24;\n  long lVar25;\n  undefined8 *puVar26;\n  int iVar27;\n  byte *pbVar28;\n  undefined8 *puVar29;\n  uint uVar30;\n  byte *pbVar31;\n  int *piVar32;\n  byte *pbVar33;\n  uint uVar34;\n  int iVar35;\n  undefined8 *puVar36;\n  bool bVar37;\n  bool bVar38;\n  byte bVar39;\n  int local_68;\n  int local_3c [3];\n  \n  bVar39 = 0;\n  FUN_0014f0a0(*(undefined8 *)param_1[1]);\n  FUN_00152090(param_1);\n  if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }\n  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }\n  plVar24 = (long *)DAT_002b5af8[0xe];\njoined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }\n  bVar9 = *param_2;\n  if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }\n  DAT_002b5b68 = (char *)*puVar29;\n  if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }\n  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }\n  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;\n  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);\n  DAT_002b5b58 = puVar19;\n  if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }\n  iVar27 = 0;\n  local_68 = DAT_002b5b64;\n  iVar10 = DAT_002b5b64;\n  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;\n  lVar25 = DAT_002b5af8[9];\n  lVar11 = 0;\n  iVar27 = 0;\n  puVar29 = DAT_002b5af8;\n  do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));\n  iVar10 = local_68;\n  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;\n  piVar23 = (int *)(lVar25 + 0x18);\n  lVar25 = 0;\n  do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  plVar24 = (long *)*plVar24;\n  **(uint **)(lVar25 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}" (primitive_type "void") (function_declarator "FUN_001520f0(undefined8 *param_1,byte *param_2)" (identifier "FUN_001520f0") (parameter_list "(undefined8 *param_1,byte *param_2)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte *param_2" (type_identifier "byte") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  uint *puVar1;\n  undefined8 *puVar2;\n  long *plVar3;\n  undefined4 *puVar4;\n  char cVar5;\n  ulong uVar6;\n  long lVar7;\n  int *piVar8;\n  byte bVar9;\n  int iVar10;\n  long lVar11;\n  void *pvVar12;\n  size_t sVar13;\n  char *pcVar14;\n  char *pcVar15;\n  undefined8 uVar16;\n  long lVar17;\n  char *pcVar18;\n  undefined4 *puVar19;\n  undefined8 uVar20;\n  undefined8 uVar21;\n  int iVar22;\n  int *piVar23;\n  long *plVar24;\n  long lVar25;\n  undefined8 *puVar26;\n  int iVar27;\n  byte *pbVar28;\n  undefined8 *puVar29;\n  uint uVar30;\n  byte *pbVar31;\n  int *piVar32;\n  byte *pbVar33;\n  uint uVar34;\n  int iVar35;\n  undefined8 *puVar36;\n  bool bVar37;\n  bool bVar38;\n  byte bVar39;\n  int local_68;\n  int local_3c [3];\n  \n  bVar39 = 0;\n  FUN_0014f0a0(*(undefined8 *)param_1[1]);\n  FUN_00152090(param_1);\n  if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }\n  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }\n  plVar24 = (long *)DAT_002b5af8[0xe];\njoined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }\n  bVar9 = *param_2;\n  if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }\n  DAT_002b5b68 = (char *)*puVar29;\n  if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }\n  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }\n  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;\n  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);\n  DAT_002b5b58 = puVar19;\n  if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }\n  iVar27 = 0;\n  local_68 = DAT_002b5b64;\n  iVar10 = DAT_002b5b64;\n  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;\n  lVar25 = DAT_002b5af8[9];\n  lVar11 = 0;\n  iVar27 = 0;\n  puVar29 = DAT_002b5af8;\n  do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));\n  iVar10 = local_68;\n  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;\n  piVar23 = (int *)(lVar25 + 0x18);\n  lVar25 = 0;\n  do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );\ncode_r0x001521e2:\n  plVar24 = (long *)*plVar24;\n  **(uint **)(lVar25 + 0x28) = *puVar1;\n  goto joined_r0x001521ab;\n}" ({ "{") (declaration "uint *puVar1;" (type_identifier "uint") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char cVar5;" (primitive_type "char") (identifier "cVar5") (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "long lVar7;" (sized_type_specifier "long" (long "long")) (identifier "lVar7") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "byte bVar9;" (type_identifier "byte") (identifier "bVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "void *pvVar12;" (primitive_type "void") (pointer_declarator "*pvVar12" (* "*") (identifier "pvVar12")) (; ";")) (declaration "size_t sVar13;" (primitive_type "size_t") (identifier "sVar13") (; ";")) (declaration "char *pcVar14;" (primitive_type "char") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "char *pcVar15;" (primitive_type "char") (pointer_declarator "*pcVar15" (* "*") (identifier "pcVar15")) (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "long lVar17;" (sized_type_specifier "long" (long "long")) (identifier "lVar17") (; ";")) (declaration "char *pcVar18;" (primitive_type "char") (pointer_declarator "*pcVar18" (* "*") (identifier "pcVar18")) (; ";")) (declaration "undefined4 *puVar19;" (type_identifier "undefined4") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "undefined8 uVar20;" (type_identifier "undefined8") (identifier "uVar20") (; ";")) (declaration "undefined8 uVar21;" (type_identifier "undefined8") (identifier "uVar21") (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "int *piVar23;" (primitive_type "int") (pointer_declarator "*piVar23" (* "*") (identifier "piVar23")) (; ";")) (declaration "long *plVar24;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar24" (* "*") (identifier "plVar24")) (; ";")) (declaration "long lVar25;" (sized_type_specifier "long" (long "long")) (identifier "lVar25") (; ";")) (declaration "undefined8 *puVar26;" (type_identifier "undefined8") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "int iVar27;" (primitive_type "int") (identifier "iVar27") (; ";")) (declaration "byte *pbVar28;" (type_identifier "byte") (pointer_declarator "*pbVar28" (* "*") (identifier "pbVar28")) (; ";")) (declaration "undefined8 *puVar29;" (type_identifier "undefined8") (pointer_declarator "*puVar29" (* "*") (identifier "puVar29")) (; ";")) (declaration "uint uVar30;" (type_identifier "uint") (identifier "uVar30") (; ";")) (declaration "byte *pbVar31;" (type_identifier "byte") (pointer_declarator "*pbVar31" (* "*") (identifier "pbVar31")) (; ";")) (declaration "int *piVar32;" (primitive_type "int") (pointer_declarator "*piVar32" (* "*") (identifier "piVar32")) (; ";")) (declaration "byte *pbVar33;" (type_identifier "byte") (pointer_declarator "*pbVar33" (* "*") (identifier "pbVar33")) (; ";")) (declaration "uint uVar34;" (type_identifier "uint") (identifier "uVar34") (; ";")) (declaration "int iVar35;" (primitive_type "int") (identifier "iVar35") (; ";")) (declaration "undefined8 *puVar36;" (type_identifier "undefined8") (pointer_declarator "*puVar36" (* "*") (identifier "puVar36")) (; ";")) (declaration "bool bVar37;" (primitive_type "bool") (identifier "bVar37") (; ";")) (declaration "bool bVar38;" (primitive_type "bool") (identifier "bVar38") (; ";")) (declaration "byte bVar39;" (type_identifier "byte") (identifier "bVar39") (; ";")) (declaration "int local_68;" (primitive_type "int") (identifier "local_68") (; ";")) (declaration "int local_3c [3];" (primitive_type "int") (array_declarator "local_3c [3]" (identifier "local_3c") ([ "[") (number_literal "3") (] "]")) (; ";")) (expression_statement "bVar39 = 0;" (assignment_expression "bVar39 = 0" (identifier "bVar39") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_0014f0a0(*(undefined8 *)param_1[1]);" (call_expression "FUN_0014f0a0(*(undefined8 *)param_1[1])" (identifier "FUN_0014f0a0") (argument_list "(*(undefined8 *)param_1[1])" (( "(") (pointer_expression "*(undefined8 *)param_1[1]" (* "*") (cast_expression "(undefined8 *)param_1[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) () ")"))) (; ";")) (expression_statement "FUN_00152090(param_1);" (call_expression "FUN_00152090(param_1)" (identifier "FUN_00152090") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (DAT_002b5af8 == (undefined8 *)0x0) {\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }" (if "if") (parenthesized_expression "(DAT_002b5af8 == (undefined8 *)0x0)" (( "(") (binary_expression "DAT_002b5af8 == (undefined8 *)0x0" (identifier "DAT_002b5af8") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();\n  }" ({ "{") (expression_statement "DAT_002b5af8 = (undefined8 *)FUN_0014aee0();" (assignment_expression "DAT_002b5af8 = (undefined8 *)FUN_0014aee0()" (identifier "DAT_002b5af8") (= "=") (cast_expression "(undefined8 *)FUN_0014aee0()" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0014aee0()" (identifier "FUN_0014aee0") (argument_list "()" (( "(") () ")"))))) (; ";")) (} "}"))) (for_statement "for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }" (for "for") (( "(") (assignment_expression "lVar25 = *(long *)(param_2 + 0x60)" (identifier "lVar25") (= "=") (pointer_expression "*(long *)(param_2 + 0x60)" (* "*") (cast_expression "(long *)(param_2 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x60)" (( "(") (binary_expression "param_2 + 0x60" (identifier "param_2") (+ "+") (number_literal "0x60")) () ")"))))) (; ";") (binary_expression "lVar25 != 0" (identifier "lVar25") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "lVar25 = *(long *)(lVar25 + 0xf0)" (identifier "lVar25") (= "=") (pointer_expression "*(long *)(lVar25 + 0xf0)" (* "*") (cast_expression "(long *)(lVar25 + 0xf0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + 0xf0)" (( "(") (binary_expression "lVar25 + 0xf0" (identifier "lVar25") (+ "+") (number_literal "0xf0")) () ")"))))) () ")") (compound_statement "{\n    lVar11 = bfd_get_section_by_name(lVar25);\n    if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }\n  }" ({ "{") (expression_statement "lVar11 = bfd_get_section_by_name(lVar25);" (assignment_expression "lVar11 = bfd_get_section_by_name(lVar25)" (identifier "lVar11") (= "=") (call_expression "bfd_get_section_by_name(lVar25)" (identifier "bfd_get_section_by_name") (argument_list "(lVar25)" (( "(") (identifier "lVar25") () ")")))) (; ";")) (if_statement "if (lVar11 != 0) {\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }" (if "if") (parenthesized_expression "(lVar11 != 0)" (( "(") (binary_expression "lVar11 != 0" (identifier "lVar11") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      uVar6 = *(ulong *)(lVar11 + 0x38);\n      pvVar12 = (void *)xmalloc(uVar6);\n      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);\n      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);\n      free(pvVar12);\n    }" ({ "{") (expression_statement "uVar6 = *(ulong *)(lVar11 + 0x38);" (assignment_expression "uVar6 = *(ulong *)(lVar11 + 0x38)" (identifier "uVar6") (= "=") (pointer_expression "*(ulong *)(lVar11 + 0x38)" (* "*") (cast_expression "(ulong *)(lVar11 + 0x38)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x38)" (( "(") (binary_expression "lVar11 + 0x38" (identifier "lVar11") (+ "+") (number_literal "0x38")) () ")"))))) (; ";")) (expression_statement "pvVar12 = (void *)xmalloc(uVar6);" (assignment_expression "pvVar12 = (void *)xmalloc(uVar6)" (identifier "pvVar12") (= "=") (cast_expression "(void *)xmalloc(uVar6)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(uVar6)" (identifier "xmalloc") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))))) (; ";")) (expression_statement "bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);" (call_expression "bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6)" (identifier "bfd_get_section_contents") (argument_list "(lVar25,lVar11,pvVar12,0,uVar6)" (( "(") (identifier "lVar25") (, ",") (identifier "lVar11") (, ",") (identifier "pvVar12") (, ",") (number_literal "0") (, ",") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);" (call_expression "FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff)" (identifier "FUN_0014cba0") (argument_list "(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff)" (( "(") (identifier "DAT_002b5af8") (, ",") (identifier "pvVar12") (, ",") (binary_expression "uVar6 & 0xffffffff" (identifier "uVar6") (& "&") (number_literal "0xffffffff")) () ")"))) (; ";")) (expression_statement "free(pvVar12);" (call_expression "free(pvVar12)" (identifier "free") (argument_list "(pvVar12)" (( "(") (identifier "pvVar12") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "plVar24 = (long *)DAT_002b5af8[0xe];" (assignment_expression "plVar24 = (long *)DAT_002b5af8[0xe]" (identifier "plVar24") (= "=") (cast_expression "(long *)DAT_002b5af8[0xe]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "DAT_002b5af8[0xe]" (identifier "DAT_002b5af8") ([ "[") (number_literal "0xe") (] "]")))) (; ";")) (labeled_statement "joined_r0x001521ab:\n  if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }" (statement_identifier "joined_r0x001521ab") (: ":") (if_statement "if (plVar24 != (long *)0x0) {\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }" (if "if") (parenthesized_expression "(plVar24 != (long *)0x0)" (( "(") (binary_expression "plVar24 != (long *)0x0" (identifier "plVar24") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );\n  }" ({ "{") (do_statement "do {\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    } while( true );" (do "do") (compound_statement "{\n      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);\n      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }\n      plVar24 = (long *)*plVar24;\n      if (plVar24 == (long *)0x0) break;\n    }" ({ "{") (expression_statement "lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);" (assignment_expression "lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0)" (identifier "lVar25") (= "=") (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0)" (identifier "bfd_link_hash_lookup") (argument_list "(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0)" (( "(") (pointer_expression "*(undefined8 *)(param_2 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (subscript_expression "plVar24[1]" (identifier "plVar24") ([ "[") (number_literal "1") (] "]")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }" (if "if") (parenthesized_expression "((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05'))" (( "(") (binary_expression "(lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')" (parenthesized_expression "(lVar25 != 0)" (( "(") (binary_expression "lVar25 != 0" (identifier "lVar25") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(lVar25 + 0x18) == '\x05')" (( "(") (binary_expression "*(char *)(lVar25 + 0x18) == '\x05'" (pointer_expression "*(char *)(lVar25 + 0x18)" (* "*") (cast_expression "(char *)(lVar25 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + 0x18)" (( "(") (binary_expression "lVar25 + 0x18" (identifier "lVar25") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (char_literal "'\x05'" (' "'") (escape_sequence "\x05") (' "'"))) () ")"))) () ")")) (compound_statement "{\n        puVar1 = (uint *)(plVar24 + 2);\n        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;\n      }" ({ "{") (expression_statement "puVar1 = (uint *)(plVar24 + 2);" (assignment_expression "puVar1 = (uint *)(plVar24 + 2)" (identifier "puVar1") (= "=") (cast_expression "(uint *)(plVar24 + 2)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar24 + 2)" (( "(") (binary_expression "plVar24 + 2" (identifier "plVar24") (+ "+") (number_literal "2")) () ")")))) (; ";")) (if_statement "if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;" (if "if") (parenthesized_expression "(**(uint **)(lVar25 + 0x28) < *puVar1)" (( "(") (binary_expression "**(uint **)(lVar25 + 0x28) < *puVar1" (pointer_expression "**(uint **)(lVar25 + 0x28)" (* "*") (pointer_expression "*(uint **)(lVar25 + 0x28)" (* "*") (cast_expression "(uint **)(lVar25 + 0x28)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar25 + 0x28)" (( "(") (binary_expression "lVar25 + 0x28" (identifier "lVar25") (+ "+") (number_literal "0x28")) () ")"))))) (< "<") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) () ")")) (goto_statement "goto code_r0x001521e2;" (goto "goto") (statement_identifier "code_r0x001521e2") (; ";"))) (} "}"))) (expression_statement "plVar24 = (long *)*plVar24;" (assignment_expression "plVar24 = (long *)*plVar24" (identifier "plVar24") (= "=") (cast_expression "(long *)*plVar24" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar24" (* "*") (identifier "plVar24")))) (; ";")) (if_statement "if (plVar24 == (long *)0x0) break;" (if "if") (parenthesized_expression "(plVar24 == (long *)0x0)" (( "(") (binary_expression "plVar24 == (long *)0x0" (identifier "plVar24") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (expression_statement "bVar9 = *param_2;" (assignment_expression "bVar9 = *param_2" (identifier "bVar9") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if ((bVar9 & 2) == 0) {\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }\n  else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }" (if "if") (parenthesized_expression "((bVar9 & 2) == 0)" (( "(") (binary_expression "(bVar9 & 2) == 0" (parenthesized_expression "(bVar9 & 2)" (( "(") (binary_expression "bVar9 & 2" (identifier "bVar9") (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }\n    puVar29 = DAT_002b5af8;\n    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;\nLAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }\n  }" ({ "{") (if_statement "if (*(int *)(DAT_002b5af8 + 8) != 0) {\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }" (if "if") (parenthesized_expression "(*(int *)(DAT_002b5af8 + 8) != 0)" (( "(") (binary_expression "*(int *)(DAT_002b5af8 + 8) != 0" (pointer_expression "*(int *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (DAT_002b5af4 != 0) goto LAB_00152907;\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      if (DAT_002b5aec != 0) goto LAB_001523cf;\n      goto LAB_00152938;\n    }" ({ "{") (if_statement "if (DAT_002b5af4 != 0) goto LAB_00152907;" (if "if") (parenthesized_expression "(DAT_002b5af4 != 0)" (( "(") (binary_expression "DAT_002b5af4 != 0" (identifier "DAT_002b5af4") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00152907;" (goto "goto") (statement_identifier "LAB_00152907") (; ";"))) (expression_statement "iVar10 = *(int *)(DAT_002b5af8 + 8);" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (DAT_002b5aec != 0) goto LAB_001523cf;" (if "if") (parenthesized_expression "(DAT_002b5aec != 0)" (( "(") (binary_expression "DAT_002b5aec != 0" (identifier "DAT_002b5aec") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001523cf;" (goto "goto") (statement_identifier "LAB_001523cf") (; ";"))) (goto_statement "goto LAB_00152938;" (goto "goto") (statement_identifier "LAB_00152938") (; ";")) (} "}"))) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (if_statement "if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;" (if "if") (parenthesized_expression "((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0))" (( "(") (binary_expression "(DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)" (parenthesized_expression "(DAT_002b5af4 != 0)" (( "(") (binary_expression "DAT_002b5af4 != 0" (identifier "DAT_002b5af4") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(DAT_002b5af0 == 0)" (( "(") (binary_expression "DAT_002b5af0 == 0" (identifier "DAT_002b5af0") (== "==") (number_literal "0")) () ")"))) () ")")) (goto_statement "goto LAB_0015222e;" (goto "goto") (statement_identifier "LAB_0015222e") (; ";"))) (labeled_statement "LAB_00152955:\n    if ((bVar9 & 1) == 0) {\n      return;\n    }" (statement_identifier "LAB_00152955") (: ":") (if_statement "if ((bVar9 & 1) == 0) {\n      return;\n    }" (if "if") (parenthesized_expression "((bVar9 & 1) == 0)" (( "(") (binary_expression "(bVar9 & 1) == 0" (parenthesized_expression "(bVar9 & 1)" (( "(") (binary_expression "bVar9 & 1" (identifier "bVar9") (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }" (else "else") (compound_statement "{\n    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }\nLAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }\n    if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }\n    *(int *)(puVar29 + 8) = iVar10;\n    DAT_002b5b88 = xmalloc(lVar25);\n    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);\n    puVar29 = DAT_002b5af8;\n    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);\n    iVar10 = *(int *)(puVar29 + 8);\n    DAT_002b5b60 = 0;\n    DAT_002b5b64 = 0x10000;\n    DAT_002b5b78 = 0;\n    DAT_002b5b74 = 0;\n    DAT_002b5b70 = 0;\n    if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }\njoined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;\n  }" ({ "{") (if_statement "if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }" (if "if") (parenthesized_expression "((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0))" (( "(") (binary_expression "(DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)" (parenthesized_expression "(DAT_002b5af4 != 0)" (( "(") (binary_expression "DAT_002b5af4 != 0" (identifier "DAT_002b5af4") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)" (( "(") (comma_expression "iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")"))))) (, ",") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\nLAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }\nLAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n      if (iVar10 != 0) goto LAB_001523bf;\nLAB_00152950:\n      bVar9 = *param_2;\n      goto LAB_00152955;\n    }" ({ "{") (labeled_statement "LAB_00152907:\n      if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }" (statement_identifier "LAB_00152907") (: ":") (if_statement "if (DAT_002b5af0 == 0) {\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }" (if "if") (parenthesized_expression "(DAT_002b5af0 == 0)" (( "(") (binary_expression "DAT_002b5af0 == 0" (identifier "DAT_002b5af0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);\n        while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }\n        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);\n        FUN_00129380(uVar16);\n        iVar10 = *(int *)(DAT_002b5af8 + 8);\n        puVar29 = DAT_002b5af8;\n        goto joined_r0x00152ec1;\n      }" ({ "{") (labeled_statement "LAB_0015222e:\n        lVar25 = *(long *)(param_2 + 0x60);" (statement_identifier "LAB_0015222e") (: ":") (expression_statement "lVar25 = *(long *)(param_2 + 0x60);" (assignment_expression "lVar25 = *(long *)(param_2 + 0x60)" (identifier "lVar25") (= "=") (pointer_expression "*(long *)(param_2 + 0x60)" (* "*") (cast_expression "(long *)(param_2 + 0x60)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x60)" (( "(") (binary_expression "param_2 + 0x60" (identifier "param_2") (+ "+") (number_literal "0x60")) () ")"))))) (; ";"))) (while_statement "while( true ) {\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          if (lVar25 == 0) goto LAB_001523aa;\n          iVar10 = bfd_generic_link_read_symbols(lVar25);\n          if (iVar10 == 0) break;\n          plVar24 = *(long **)(lVar25 + 0xb0);\n          if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }\n          lVar25 = *(long *)(lVar25 + 0xf0);\n        }" ({ "{") (if_statement "if (lVar25 == 0) goto LAB_001523aa;" (if "if") (parenthesized_expression "(lVar25 == 0)" (( "(") (binary_expression "lVar25 == 0" (identifier "lVar25") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001523aa;" (goto "goto") (statement_identifier "LAB_001523aa") (; ";"))) (expression_statement "iVar10 = bfd_generic_link_read_symbols(lVar25);" (assignment_expression "iVar10 = bfd_generic_link_read_symbols(lVar25)" (identifier "iVar10") (= "=") (call_expression "bfd_generic_link_read_symbols(lVar25)" (identifier "bfd_generic_link_read_symbols") (argument_list "(lVar25)" (( "(") (identifier "lVar25") () ")")))) (; ";")) (if_statement "if (iVar10 == 0) break;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "plVar24 = *(long **)(lVar25 + 0xb0);" (assignment_expression "plVar24 = *(long **)(lVar25 + 0xb0)" (identifier "plVar24") (= "=") (pointer_expression "*(long **)(lVar25 + 0xb0)" (* "*") (cast_expression "(long **)(lVar25 + 0xb0)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar25 + 0xb0)" (( "(") (binary_expression "lVar25 + 0xb0" (identifier "lVar25") (+ "+") (number_literal "0xb0")) () ")"))))) (; ";")) (if_statement "if (0 < *(int *)(lVar25 + 0xb8)) {\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }" (if "if") (parenthesized_expression "(0 < *(int *)(lVar25 + 0xb8))" (( "(") (binary_expression "0 < *(int *)(lVar25 + 0xb8)" (number_literal "0") (< "<") (pointer_expression "*(int *)(lVar25 + 0xb8)" (* "*") (cast_expression "(int *)(lVar25 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + 0xb8)" (( "(") (binary_expression "lVar25 + 0xb8" (identifier "lVar25") (+ "+") (number_literal "0xb8")) () ")"))))) () ")")) (compound_statement "{\n            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;\n            do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);\n          }" ({ "{") (expression_statement "plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;" (assignment_expression "plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1" (identifier "plVar3") (= "=") (binary_expression "plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1" (binary_expression "plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1)" (identifier "plVar24") (+ "+") (call_expression "(ulong)(*(int *)(lVar25 + 0xb8) - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(*(int *)(lVar25 + 0xb8) - 1)" (( "(") (binary_expression "*(int *)(lVar25 + 0xb8) - 1" (pointer_expression "*(int *)(lVar25 + 0xb8)" (* "*") (cast_expression "(int *)(lVar25 + 0xb8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + 0xb8)" (( "(") (binary_expression "lVar25 + 0xb8" (identifier "lVar25") (+ "+") (number_literal "0xb8")) () ")")))) (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            } while (plVar3 != plVar24);" (do "do") (compound_statement "{\n              lVar11 = *plVar24;\n              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }\nLAB_00152388:\n              plVar24 = plVar24 + 1;\n            }" ({ "{") (expression_statement "lVar11 = *plVar24;" (assignment_expression "lVar11 = *plVar24" (identifier "lVar11") (= "=") (pointer_expression "*plVar24" (* "*") (identifier "plVar24"))) (; ";")) (if_statement "if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }" (if "if") (parenthesized_expression "((*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0))))" (( "(") (binary_expression "(*(long *)(lVar11 + 0x20) != 0x2b4598) &&\n                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))" (parenthesized_expression "(*(long *)(lVar11 + 0x20) != 0x2b4598)" (( "(") (binary_expression "*(long *)(lVar11 + 0x20) != 0x2b4598" (pointer_expression "*(long *)(lVar11 + 0x20)" (* "*") (cast_expression "(long *)(lVar11 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x20)" (( "(") (binary_expression "lVar11 + 0x20" (identifier "lVar11") (+ "+") (number_literal "0x20")) () ")")))) (!= "!=") (number_literal "0x2b4598")) () ")")) (&& "&&") (parenthesized_expression "(((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))" (( "(") (parenthesized_expression "((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0))" (( "(") (binary_expression "(*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)" (binary_expression "(*(uint *)(lVar11 + 0x18) & 2) != 0" (parenthesized_expression "(*(uint *)(lVar11 + 0x18) & 2)" (( "(") (binary_expression "*(uint *)(lVar11 + 0x18) & 2" (pointer_expression "*(uint *)(lVar11 + 0x18)" (* "*") (cast_expression "(uint *)(lVar11 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x18)" (( "(") (binary_expression "lVar11 + 0x18" (identifier "lVar11") (+ "+") (number_literal "0x18")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(*(uint *)(lVar11 + 0x18) == 0)" (( "(") (binary_expression "*(uint *)(lVar11 + 0x18) == 0" (pointer_expression "*(uint *)(lVar11 + 0x18)" (* "*") (cast_expression "(uint *)(lVar11 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x18)" (( "(") (binary_expression "lVar11 + 0x18" (identifier "lVar11") (+ "+") (number_literal "0x18")) () ")")))) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n                bVar38 = DAT_002b6020 == 0;\n                if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }\n                bVar37 = false;\n                pbVar28 = *(byte **)(lVar11 + 8);\n                lVar11 = 6;\n                pbVar31 = pbVar28;\n                pbVar33 = (byte *)0x29f1f4;\n                do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);\n                if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }\n              }" ({ "{") (expression_statement "bVar38 = DAT_002b6020 == 0;" (assignment_expression "bVar38 = DAT_002b6020 == 0" (identifier "bVar38") (= "=") (binary_expression "DAT_002b6020 == 0" (identifier "DAT_002b6020") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar38) {\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }" (if "if") (parenthesized_expression "(!bVar38)" (( "(") (unary_expression "!bVar38" (! "!") (identifier "bVar38")) () ")")) (compound_statement "{\n                  iVar10 = bfd_hide_sym_by_version();\n                  bVar38 = iVar10 == 0;\n                  if (!bVar38) goto LAB_00152388;\n                  lVar11 = *plVar24;\n                }" ({ "{") (expression_statement "iVar10 = bfd_hide_sym_by_version();" (assignment_expression "iVar10 = bfd_hide_sym_by_version()" (identifier "iVar10") (= "=") (call_expression "bfd_hide_sym_by_version()" (identifier "bfd_hide_sym_by_version") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "bVar38 = iVar10 == 0;" (assignment_expression "bVar38 = iVar10 == 0" (identifier "bVar38") (= "=") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar38) goto LAB_00152388;" (if "if") (parenthesized_expression "(!bVar38)" (( "(") (unary_expression "!bVar38" (! "!") (identifier "bVar38")) () ")")) (goto_statement "goto LAB_00152388;" (goto "goto") (statement_identifier "LAB_00152388") (; ";"))) (expression_statement "lVar11 = *plVar24;" (assignment_expression "lVar11 = *plVar24" (identifier "lVar11") (= "=") (pointer_expression "*plVar24" (* "*") (identifier "plVar24"))) (; ";")) (} "}"))) (expression_statement "bVar37 = false;" (assignment_expression "bVar37 = false" (identifier "bVar37") (= "=") (false "false")) (; ";")) (expression_statement "pbVar28 = *(byte **)(lVar11 + 8);" (assignment_expression "pbVar28 = *(byte **)(lVar11 + 8)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(lVar11 + 8)" (* "*") (cast_expression "(byte **)(lVar11 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar11 + 8)" (( "(") (binary_expression "lVar11 + 8" (identifier "lVar11") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar11 = 6;" (assignment_expression "lVar11 = 6" (identifier "lVar11") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar31 = pbVar28;" (assignment_expression "pbVar31 = pbVar28" (identifier "pbVar31") (= "=") (identifier "pbVar28")) (; ";")) (expression_statement "pbVar33 = (byte *)0x29f1f4;" (assignment_expression "pbVar33 = (byte *)0x29f1f4" (identifier "pbVar33") (= "=") (cast_expression "(byte *)0x29f1f4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x29f1f4"))) (; ";")) (do_statement "do {\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                } while (bVar38);" (do "do") (compound_statement "{\n                  if (lVar11 == 0) break;\n                  lVar11 = lVar11 + -1;\n                  bVar37 = *pbVar31 < *pbVar33;\n                  bVar38 = *pbVar31 == *pbVar33;\n                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n                }" ({ "{") (if_statement "if (lVar11 == 0) break;" (if "if") (parenthesized_expression "(lVar11 == 0)" (( "(") (binary_expression "lVar11 == 0" (identifier "lVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + -1" (identifier "lVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar37 = *pbVar31 < *pbVar33;" (assignment_expression "bVar37 = *pbVar31 < *pbVar33" (identifier "bVar37") (= "=") (binary_expression "*pbVar31 < *pbVar33" (pointer_expression "*pbVar31" (* "*") (identifier "pbVar31")) (< "<") (pointer_expression "*pbVar33" (* "*") (identifier "pbVar33")))) (; ";")) (expression_statement "bVar38 = *pbVar31 == *pbVar33;" (assignment_expression "bVar38 = *pbVar31 == *pbVar33" (identifier "bVar38") (= "=") (binary_expression "*pbVar31 == *pbVar33" (pointer_expression "*pbVar31" (* "*") (identifier "pbVar31")) (== "==") (pointer_expression "*pbVar33" (* "*") (identifier "pbVar33")))) (; ";")) (expression_statement "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1" (identifier "pbVar31") (= "=") (binary_expression "pbVar31 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar31 + (ulong)bVar39 * -2" (identifier "pbVar31") (+ "+") (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar39")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1" (identifier "pbVar33") (= "=") (binary_expression "pbVar33 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar33 + (ulong)bVar39 * -2" (identifier "pbVar33") (+ "+") (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar39")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar38)" (( "(") (identifier "bVar38") () ")")) (; ";")) (if_statement "if ((!bVar37 && !bVar38) != bVar37) {\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }" (if "if") (parenthesized_expression "((!bVar37 && !bVar38) != bVar37)" (( "(") (binary_expression "(!bVar37 && !bVar38) != bVar37" (parenthesized_expression "(!bVar37 && !bVar38)" (( "(") (binary_expression "!bVar37 && !bVar38" (unary_expression "!bVar37" (! "!") (identifier "bVar37")) (&& "&&") (unary_expression "!bVar38" (! "!") (identifier "bVar38"))) () ")")) (!= "!=") (identifier "bVar37")) () ")")) (compound_statement "{\n                  sVar13 = strlen((char *)pbVar28);\n                  pcVar14 = (char *)xmalloc(sVar13 + 7);\n                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);\n                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);\n                  free(pcVar14);\n                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }\n                }" ({ "{") (expression_statement "sVar13 = strlen((char *)pbVar28);" (assignment_expression "sVar13 = strlen((char *)pbVar28)" (identifier "sVar13") (= "=") (call_expression "strlen((char *)pbVar28)" (identifier "strlen") (argument_list "((char *)pbVar28)" (( "(") (cast_expression "(char *)pbVar28" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar28")) () ")")))) (; ";")) (expression_statement "pcVar14 = (char *)xmalloc(sVar13 + 7);" (assignment_expression "pcVar14 = (char *)xmalloc(sVar13 + 7)" (identifier "pcVar14") (= "=") (cast_expression "(char *)xmalloc(sVar13 + 7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar13 + 7)" (identifier "xmalloc") (argument_list "(sVar13 + 7)" (( "(") (binary_expression "sVar13 + 7" (identifier "sVar13") (+ "+") (number_literal "7")) () ")"))))) (; ";")) (expression_statement "sprintf(pcVar14,"%s%s","__imp_",pbVar28);" (call_expression "sprintf(pcVar14,"%s%s","__imp_",pbVar28)" (identifier "sprintf") (argument_list "(pcVar14,"%s%s","__imp_",pbVar28)" (( "(") (identifier "pcVar14") (, ",") (string_literal ""%s%s"" (" """) (string_content "%s%s") (" """)) (, ",") (string_literal ""__imp_"" (" """) (string_content "__imp_") (" """)) (, ",") (identifier "pbVar28") () ")"))) (; ";")) (expression_statement "lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);" (assignment_expression "lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0)" (identifier "lVar11") (= "=") (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0)" (identifier "bfd_link_hash_lookup") (argument_list "(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0)" (( "(") (pointer_expression "*(undefined8 *)(param_2 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (identifier "pcVar14") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "free(pcVar14);" (call_expression "free(pcVar14)" (identifier "free") (argument_list "(pcVar14)" (( "(") (identifier "pcVar14") () ")"))) (; ";")) (if_statement "if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }" (if "if") (parenthesized_expression "((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03'))" (( "(") (binary_expression "(lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')" (parenthesized_expression "(lVar11 == 0)" (( "(") (binary_expression "lVar11 == 0" (identifier "lVar11") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(lVar11 + 0x18) != '\x03')" (( "(") (binary_expression "*(char *)(lVar11 + 0x18) != '\x03'" (pointer_expression "*(char *)(lVar11 + 0x18)" (* "*") (cast_expression "(char *)(lVar11 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x18)" (( "(") (binary_expression "lVar11 + 0x18" (identifier "lVar11") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'"))) () ")"))) () ")")) (compound_statement "{\n                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }\n                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);\n                    if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }\n                  }" ({ "{") (if_statement "if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }" (if "if") (parenthesized_expression "(*(int *)(DAT_002b5b90 + 0x1c) != 0)" (( "(") (binary_expression "*(int *)(DAT_002b5b90 + 0x1c) != 0" (pointer_expression "*(int *)(DAT_002b5b90 + 0x1c)" (* "*") (cast_expression "(int *)(DAT_002b5b90 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5b90 + 0x1c)" (( "(") (binary_expression "DAT_002b5b90 + 0x1c" (identifier "DAT_002b5b90") (+ "+") (number_literal "0x1c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);\n                    }" ({ "{") (expression_statement "pbVar28 = pbVar28 + (*pbVar28 == 0x5f);" (assignment_expression "pbVar28 = pbVar28 + (*pbVar28 == 0x5f)" (identifier "pbVar28") (= "=") (binary_expression "pbVar28 + (*pbVar28 == 0x5f)" (identifier "pbVar28") (+ "+") (parenthesized_expression "(*pbVar28 == 0x5f)" (( "(") (binary_expression "*pbVar28 == 0x5f" (pointer_expression "*pbVar28" (* "*") (identifier "pbVar28")) (== "==") (number_literal "0x5f")) () ")")))) (; ";")) (} "}"))) (expression_statement "iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);" (assignment_expression "iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28)" (identifier "iVar10") (= "=") (call_expression "FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28)" (identifier "FUN_0014de10") (argument_list "(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28)" (( "(") (identifier "lVar25") (, ",") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) (, ",") (binary_expression "DAT_002b5af8 + 9" (identifier "DAT_002b5af8") (+ "+") (number_literal "9")) (, ",") (identifier "pbVar28") () ")")))) (; ";")) (if_statement "if (iVar10 != 0) {\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      local_3c[0] = 0;\n                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);\n                      if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }\n                    }" ({ "{") (expression_statement "local_3c[0] = 0;" (assignment_expression "local_3c[0] = 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);" (assignment_expression "lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c)" (identifier "lVar11") (= "=") (call_expression "FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c)" (identifier "FUN_0014b140") (argument_list "(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c)" (( "(") (identifier "DAT_002b5af8") (, ",") (identifier "pbVar28") (, ",") (number_literal "0") (, ",") (number_literal "0xffffffff") (, ",") (number_literal "0") (, ",") (identifier "local_3c") () ")")))) (; ";")) (if_statement "if (local_3c[0] == 0) {\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }" (if "if") (parenthesized_expression "(local_3c[0] == 0)" (( "(") (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;\n                      }" ({ "{") (expression_statement "*(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1\n                        ;" (assignment_expression "*(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1" (pointer_expression "*(byte *)(lVar11 + 0x23)" (* "*") (cast_expression "(byte *)(lVar11 + 0x23)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x23)" (( "(") (binary_expression "lVar11 + 0x23" (identifier "lVar11") (+ "+") (number_literal "0x23")) () ")")))) (= "=") (binary_expression "((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1" (parenthesized_expression "((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1)" (( "(") (binary_expression "(byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1" (call_expression "(byte)(*(uint *)(*plVar24 + 0x18) >> 3)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(*(uint *)(*plVar24 + 0x18) >> 3)" (( "(") (binary_expression "*(uint *)(*plVar24 + 0x18) >> 3" (pointer_expression "*(uint *)(*plVar24 + 0x18)" (* "*") (cast_expression "(uint *)(*plVar24 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*plVar24 + 0x18)" (( "(") (binary_expression "*plVar24 + 0x18" (pointer_expression "*plVar24" (* "*") (identifier "plVar24")) (+ "+") (number_literal "0x18")) () ")")))) (>> ">>") (number_literal "3")) () ")"))) (^ "^") (number_literal "1")) () ")")) (& "&") (number_literal "1"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (labeled_statement "LAB_00152388:\n              plVar24 = plVar24 + 1;" (statement_identifier "LAB_00152388") (: ":") (expression_statement "plVar24 = plVar24 + 1;" (assignment_expression "plVar24 = plVar24 + 1" (identifier "plVar24") (= "=") (binary_expression "plVar24 + 1" (identifier "plVar24") (+ "+") (number_literal "1"))) (; ";"))) (} "}")) (while "while") (parenthesized_expression "(plVar3 != plVar24)" (( "(") (binary_expression "plVar3 != plVar24" (identifier "plVar3") (!= "!=") (identifier "plVar24")) () ")")) (; ";")) (} "}"))) (expression_statement "lVar25 = *(long *)(lVar25 + 0xf0);" (assignment_expression "lVar25 = *(long *)(lVar25 + 0xf0)" (identifier "lVar25") (= "=") (pointer_expression "*(long *)(lVar25 + 0xf0)" (* "*") (cast_expression "(long *)(lVar25 + 0xf0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + 0xf0)" (( "(") (binary_expression "lVar25 + 0xf0" (identifier "lVar25") (+ "+") (number_literal "0xf0")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5)" (identifier "uVar16") (= "=") (call_expression "dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5)" (identifier "dcgettext") (argument_list "(0,"%F%P: %pB: could not read symbols: %E\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%F%P: %pB: could not read symbols: %E\n"" (" """) (string_content "%F%P: %pB: could not read symbols: %E") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129380(uVar16);" (call_expression "FUN_00129380(uVar16)" (identifier "FUN_00129380") (argument_list "(uVar16)" (( "(") (identifier "uVar16") () ")"))) (; ";")) (expression_statement "iVar10 = *(int *)(DAT_002b5af8 + 8);" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (goto_statement "goto joined_r0x00152ec1;" (goto "goto") (statement_identifier "joined_r0x00152ec1") (; ";")) (} "}")))) (labeled_statement "LAB_001523aa:\n      iVar10 = *(int *)(DAT_002b5af8 + 8);" (statement_identifier "LAB_001523aa") (: ":") (expression_statement "iVar10 = *(int *)(DAT_002b5af8 + 8);" (assignment_expression "iVar10 = *(int *)(DAT_002b5af8 + 8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (if_statement "if (iVar10 != 0) goto LAB_001523bf;" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_001523bf;" (goto "goto") (statement_identifier "LAB_001523bf") (; ";"))) (labeled_statement "LAB_00152950:\n      bVar9 = *param_2;" (statement_identifier "LAB_00152950") (: ":") (expression_statement "bVar9 = *param_2;" (assignment_expression "bVar9 = *param_2" (identifier "bVar9") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";"))) (goto_statement "goto LAB_00152955;" (goto "goto") (statement_identifier "LAB_00152955") (; ";")) (} "}"))) (labeled_statement "LAB_001523bf:\n    if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" (statement_identifier "LAB_001523bf") (: ":") (if_statement "if (DAT_002b5aec == 0) {\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }\n    else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" (if "if") (parenthesized_expression "(DAT_002b5aec == 0)" (( "(") (binary_expression "DAT_002b5aec == 0" (identifier "DAT_002b5aec") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);\n      puVar29 = DAT_002b5af8;\n    }" ({ "{") (labeled_statement "LAB_00152938:\n      uVar30 = *(uint *)(DAT_002b5af8 + 8);" (statement_identifier "LAB_00152938") (: ":") (expression_statement "uVar30 = *(uint *)(DAT_002b5af8 + 8);" (assignment_expression "uVar30 = *(uint *)(DAT_002b5af8 + 8)" (identifier "uVar30") (= "=") (pointer_expression "*(uint *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(uint *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (} "}")) (else_clause "else {\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" (else "else") (compound_statement "{\nLAB_001523cf:\n      lVar25 = 0;\n      bVar38 = false;\n      puVar29 = DAT_002b5af8;\n      if (iVar10 < 1) goto LAB_00152938;\n      do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);\n      if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }\n    }" ({ "{") (labeled_statement "LAB_001523cf:\n      lVar25 = 0;" (statement_identifier "LAB_001523cf") (: ":") (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" (identifier "lVar25") (= "=") (number_literal "0")) (; ";"))) (expression_statement "bVar38 = false;" (assignment_expression "bVar38 = false" (identifier "bVar38") (= "=") (false "false")) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (if_statement "if (iVar10 < 1) goto LAB_00152938;" (if "if") (parenthesized_expression "(iVar10 < 1)" (( "(") (binary_expression "iVar10 < 1" (identifier "iVar10") (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00152938;" (goto "goto") (statement_identifier "LAB_00152938") (; ";"))) (do_statement "do {\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      } while ((int)lVar25 < (int)uVar30);" (do "do") (compound_statement "{\n        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);\n        cVar5 = *pcVar14;\n        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }\n        uVar30 = *(uint *)(puVar29 + 8);\n        lVar25 = lVar25 + 1;\n      }" ({ "{") (expression_statement "pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);" (assignment_expression "pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28)" (identifier "pcVar14") (= "=") (pointer_expression "*(char **)(puVar29[9] + lVar25 * 0x28)" (* "*") (cast_expression "(char **)(puVar29[9] + lVar25 * 0x28)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29[9] + lVar25 * 0x28)" (( "(") (binary_expression "puVar29[9] + lVar25 * 0x28" (subscript_expression "puVar29[9]" (identifier "puVar29") ([ "[") (number_literal "9") (] "]")) (+ "+") (binary_expression "lVar25 * 0x28" (identifier "lVar25") (* "*") (number_literal "0x28"))) () ")"))))) (; ";")) (expression_statement "cVar5 = *pcVar14;" (assignment_expression "cVar5 = *pcVar14" (identifier "cVar5") (= "=") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14"))) (; ";")) (if_statement "if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }" (if "if") (parenthesized_expression "((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0))" (( "(") (binary_expression "(cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)" (parenthesized_expression "(cVar5 != '?')" (( "(") (binary_expression "cVar5 != '?'" (identifier "cVar5") (!= "!=") (char_literal "'?'" (' "'") (character "?") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)" (( "(") (comma_expression "pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0" (assignment_expression "pcVar15 = strchr(pcVar14,0x40)" (identifier "pcVar15") (= "=") (call_expression "strchr(pcVar14,0x40)" (identifier "strchr") (argument_list "(pcVar14,0x40)" (( "(") (identifier "pcVar14") (, ",") (number_literal "0x40") () ")")))) (, ",") (binary_expression "pcVar15 != (char *)0x0" (identifier "pcVar15") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));\n          pcVar15 = strrchr(pcVar14,0x40);\n          if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }\n          puVar29 = DAT_002b5af8;\n          bVar38 = true;\n          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;\n        }" ({ "{") (expression_statement "pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));" (assignment_expression "pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'))" (identifier "pcVar14") (= "=") (cast_expression "(char *)xstrdup(pcVar14 + (cVar5 == '@'))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xstrdup(pcVar14 + (cVar5 == '@'))" (identifier "xstrdup") (argument_list "(pcVar14 + (cVar5 == '@'))" (( "(") (binary_expression "pcVar14 + (cVar5 == '@')" (identifier "pcVar14") (+ "+") (parenthesized_expression "(cVar5 == '@')" (( "(") (binary_expression "cVar5 == '@'" (identifier "cVar5") (== "==") (char_literal "'@'" (' "'") (character "@") (' "'"))) () ")"))) () ")"))))) (; ";")) (expression_statement "pcVar15 = strrchr(pcVar14,0x40);" (assignment_expression "pcVar15 = strrchr(pcVar14,0x40)" (identifier "pcVar15") (= "=") (call_expression "strrchr(pcVar14,0x40)" (identifier "strrchr") (argument_list "(pcVar14,0x40)" (( "(") (identifier "pcVar14") (, ",") (number_literal "0x40") () ")")))) (; ";")) (if_statement "if (pcVar15 == (char *)0x0) {\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }\n          else {\n            *pcVar15 = '\0';\n          }" (if "if") (parenthesized_expression "(pcVar15 == (char *)0x0)" (( "(") (binary_expression "pcVar15 == (char *)0x0" (identifier "pcVar15") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);\n            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);\n            FUN_00129380(uVar21,uVar16);\n          }" ({ "{") (expression_statement "uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);" (assignment_expression "uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28)" (* "*") (cast_expression "(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8[9] + lVar25 * 0x28)" (( "(") (binary_expression "DAT_002b5af8[9] + lVar25 * 0x28" (subscript_expression "DAT_002b5af8[9]" (identifier "DAT_002b5af8") ([ "[") (number_literal "9") (] "]")) (+ "+") (binary_expression "lVar25 * 0x28" (identifier "lVar25") (* "*") (number_literal "0x28"))) () ")"))))) (; ";")) (expression_statement "uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);" (assignment_expression "uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5)" (identifier "uVar21") (= "=") (call_expression "dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5)" (identifier "dcgettext") (argument_list "(0,"%X%P: cannot export %s: invalid export name\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%X%P: cannot export %s: invalid export name\n"" (" """) (string_content "%X%P: cannot export %s: invalid export name") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129380(uVar21,uVar16);" (call_expression "FUN_00129380(uVar21,uVar16)" (identifier "FUN_00129380") (argument_list "(uVar21,uVar16)" (( "(") (identifier "uVar21") (, ",") (identifier "uVar16") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            *pcVar15 = '\0';\n          }" (else "else") (compound_statement "{\n            *pcVar15 = '\0';\n          }" ({ "{") (expression_statement "*pcVar15 = '\0';" (assignment_expression "*pcVar15 = '\0'" (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (} "}")))) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (expression_statement "bVar38 = true;" (assignment_expression "bVar38 = true" (identifier "bVar38") (= "=") (true "true")) (; ";")) (expression_statement "*(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;" (assignment_expression "*(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14" (pointer_expression "*(char **)(DAT_002b5af8[9] + lVar25 * 0x28)" (* "*") (cast_expression "(char **)(DAT_002b5af8[9] + lVar25 * 0x28)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(DAT_002b5af8[9] + lVar25 * 0x28)" (( "(") (binary_expression "DAT_002b5af8[9] + lVar25 * 0x28" (subscript_expression "DAT_002b5af8[9]" (identifier "DAT_002b5af8") ([ "[") (number_literal "9") (] "]")) (+ "+") (binary_expression "lVar25 * 0x28" (identifier "lVar25") (* "*") (number_literal "0x28"))) () ")")))) (= "=") (identifier "pcVar14")) (; ";")) (} "}"))) (expression_statement "uVar30 = *(uint *)(puVar29 + 8);" (assignment_expression "uVar30 = *(uint *)(puVar29 + 8)" (identifier "uVar30") (= "=") (pointer_expression "*(uint *)(puVar29 + 8)" (* "*") (cast_expression "(uint *)(puVar29 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 8)" (( "(") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" (identifier "lVar25") (= "=") (binary_expression "lVar25 + 1" (identifier "lVar25") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar25 < (int)uVar30)" (( "(") (binary_expression "(int)lVar25 < (int)uVar30" (cast_expression "(int)lVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar25")) (< "<") (cast_expression "(int)uVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar30"))) () ")")) (; ";")) (if_statement "if (bVar38) {\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }" (if "if") (parenthesized_expression "(bVar38)" (( "(") (identifier "bVar38") () ")")) (compound_statement "{\n        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);\n        goto LAB_00152938;\n      }" ({ "{") (expression_statement "qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);" (call_expression "qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90)" (identifier "qsort") (argument_list "((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90)" (( "(") (cast_expression "(void *)puVar29[9]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar29[9]" (identifier "puVar29") ([ "[") (number_literal "9") (] "]"))) (, ",") (cast_expression "(long)(int)uVar30" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)uVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar30"))) (, ",") (number_literal "0x28") (, ",") (identifier "FUN_0014cf90") () ")"))) (; ";")) (goto_statement "goto LAB_00152938;" (goto "goto") (statement_identifier "LAB_00152938") (; ";")) (} "}"))) (} "}"))))) (if_statement "if (DAT_002b5ae8 == 0) {\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }\n    else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }" (if "if") (parenthesized_expression "(DAT_002b5ae8 == 0)" (( "(") (binary_expression "DAT_002b5ae8 == 0" (identifier "DAT_002b5ae8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];\n      if ((int)uVar30 < 1) goto LAB_00152f50;\n      iVar10 = 0;\n      iVar27 = 0;\n      puVar36 = puVar26;\n      do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));\nLAB_001526e4:\n      lVar25 = (long)iVar10 << 3;\n    }" ({ "{") (labeled_statement "LAB_001525b0:\n      puVar26 = (undefined8 *)puVar29[9];" (statement_identifier "LAB_001525b0") (: ":") (expression_statement "puVar26 = (undefined8 *)puVar29[9];" (assignment_expression "puVar26 = (undefined8 *)puVar29[9]" (identifier "puVar26") (= "=") (cast_expression "(undefined8 *)puVar29[9]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar29[9]" (identifier "puVar29") ([ "[") (number_literal "9") (] "]")))) (; ";"))) (if_statement "if ((int)uVar30 < 1) goto LAB_00152f50;" (if "if") (parenthesized_expression "((int)uVar30 < 1)" (( "(") (binary_expression "(int)uVar30 < 1" (cast_expression "(int)uVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar30")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00152f50;" (goto "goto") (statement_identifier "LAB_00152f50") (; ";"))) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar36 = puVar26;" (assignment_expression "puVar36 = puVar26" (identifier "puVar36") (= "=") (identifier "puVar26")) (; ";")) (do_statement "do {\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      } while (iVar27 < *(int *)(puVar29 + 8));" (do "do") (compound_statement "{\n        while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }\n        if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }\n        iVar10 = iVar10 + 1;\n        iVar27 = iVar27 + 1;\n        puVar36 = puVar36 + 5;\n      }" ({ "{") (while_statement "while (iVar27 != 0) {\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }" (while "while") (parenthesized_expression "(iVar27 != 0)" (( "(") (binary_expression "iVar27 != 0" (identifier "iVar27") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pcVar14 = (char *)*puVar36;\n          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);\n          if (iVar35 != 0) break;\n          puVar29 = puVar26 + (long)iVar10 * 5 + -5;\n          iVar35 = *(int *)(puVar29 + 3);\n          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }\n          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);\n          *(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);\n          *(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);\n          *(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);\n          if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }\n          if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }\n          if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }\n          iVar27 = iVar27 + 1;\n          puVar36 = puVar36 + 5;\n          puVar29 = DAT_002b5af8;\n          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;\n        }" ({ "{") (expression_statement "pcVar14 = (char *)*puVar36;" (assignment_expression "pcVar14 = (char *)*puVar36" (identifier "pcVar14") (= "=") (cast_expression "(char *)*puVar36" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar36" (* "*") (identifier "puVar36")))) (; ";")) (expression_statement "iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);" (assignment_expression "iVar35 = strcmp(pcVar14,(char *)puVar36[-5])" (identifier "iVar35") (= "=") (call_expression "strcmp(pcVar14,(char *)puVar36[-5])" (identifier "strcmp") (argument_list "(pcVar14,(char *)puVar36[-5])" (( "(") (identifier "pcVar14") (, ",") (cast_expression "(char *)puVar36[-5]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar36[-5]" (identifier "puVar36") ([ "[") (number_literal "-5") (] "]"))) () ")")))) (; ";")) (if_statement "if (iVar35 != 0) break;" (if "if") (parenthesized_expression "(iVar35 != 0)" (( "(") (binary_expression "iVar35 != 0" (identifier "iVar35") (!= "!=") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "puVar29 = puVar26 + (long)iVar10 * 5 + -5;" (assignment_expression "puVar29 = puVar26 + (long)iVar10 * 5 + -5" (identifier "puVar29") (= "=") (binary_expression "puVar26 + (long)iVar10 * 5 + -5" (binary_expression "puVar26 + (long)iVar10 * 5" (identifier "puVar26") (+ "+") (binary_expression "(long)iVar10 * 5" (cast_expression "(long)iVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar10")) (* "*") (number_literal "5"))) (+ "+") (number_literal "-5"))) (; ";")) (expression_statement "iVar35 = *(int *)(puVar29 + 3);" (assignment_expression "iVar35 = *(int *)(puVar29 + 3)" (identifier "iVar35") (= "=") (pointer_expression "*(int *)(puVar29 + 3)" (* "*") (cast_expression "(int *)(puVar29 + 3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 3)" (( "(") (binary_expression "puVar29 + 3" (identifier "puVar29") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (if_statement "if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)) {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }\n          else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }" (if "if") (parenthesized_expression "(((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22))" (( "(") (binary_expression "((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||\n             (iVar35 == iVar22)" (parenthesized_expression "((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1))" (( "(") (binary_expression "(iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)" (parenthesized_expression "(iVar35 == -1)" (( "(") (binary_expression "iVar35 == -1" (identifier "iVar35") (== "==") (number_literal "-1")) () ")")) (|| "||") (parenthesized_expression "(iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)" (( "(") (comma_expression "iVar22 = *(int *)(puVar36 + 3), iVar22 == -1" (assignment_expression "iVar22 = *(int *)(puVar36 + 3)" (identifier "iVar22") (= "=") (pointer_expression "*(int *)(puVar36 + 3)" (* "*") (cast_expression "(int *)(puVar36 + 3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + 3)" (( "(") (binary_expression "puVar36 + 3" (identifier "puVar36") (+ "+") (number_literal "3")) () ")"))))) (, ",") (binary_expression "iVar22 == -1" (identifier "iVar22") (== "==") (number_literal "-1"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar35 == iVar22)" (( "(") (binary_expression "iVar35 == iVar22" (identifier "iVar35") (== "==") (identifier "iVar22")) () ")"))) () ")")) (compound_statement "{\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }\nLAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);\n            if (iVar22 != -1) goto LAB_00152636;\n          }" ({ "{") (if_statement "if (DAT_002b5ae4 != 0) {\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }" (if "if") (parenthesized_expression "(DAT_002b5ae4 != 0)" (( "(") (binary_expression "DAT_002b5ae4 != 0" (identifier "DAT_002b5ae4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);\n              FUN_00129380(uVar16);\n              pcVar14 = (char *)*puVar36;\n            }" ({ "{") (expression_statement "uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5)" (identifier "uVar16") (= "=") (call_expression "dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5)" (identifier "dcgettext") (argument_list "(0,"%P: warning, duplicate EXPORT: %s\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%P: warning, duplicate EXPORT: %s\n"" (" """) (string_content "%P: warning, duplicate EXPORT: %s") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129380(uVar16);" (call_expression "FUN_00129380(uVar16)" (identifier "FUN_00129380") (argument_list "(uVar16)" (( "(") (identifier "uVar16") () ")"))) (; ";")) (expression_statement "pcVar14 = (char *)*puVar36;" (assignment_expression "pcVar14 = (char *)*puVar36" (identifier "pcVar14") (= "=") (cast_expression "(char *)*puVar36" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar36" (* "*") (identifier "puVar36")))) (; ";")) (} "}"))) (labeled_statement "LAB_00152cc8:\n            iVar22 = *(int *)(puVar36 + 3);" (statement_identifier "LAB_00152cc8") (: ":") (expression_statement "iVar22 = *(int *)(puVar36 + 3);" (assignment_expression "iVar22 = *(int *)(puVar36 + 3)" (identifier "iVar22") (= "=") (pointer_expression "*(int *)(puVar36 + 3)" (* "*") (cast_expression "(int *)(puVar36 + 3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + 3)" (( "(") (binary_expression "puVar36 + 3" (identifier "puVar36") (+ "+") (number_literal "3")) () ")"))))) (; ";"))) (if_statement "if (iVar22 != -1) goto LAB_00152636;" (if "if") (parenthesized_expression "(iVar22 != -1)" (( "(") (binary_expression "iVar22 != -1" (identifier "iVar22") (!= "!=") (number_literal "-1")) () ")")) (goto_statement "goto LAB_00152636;" (goto "goto") (statement_identifier "LAB_00152636") (; ";"))) (} "}")) (else_clause "else {\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }" (else "else") (compound_statement "{\n            if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }\nLAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;\n          }" ({ "{") (if_statement "if (DAT_002b5ae4 != 0) {\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }" (if "if") (parenthesized_expression "(DAT_002b5ae4 != 0)" (( "(") (binary_expression "DAT_002b5ae4 != 0" (identifier "DAT_002b5ae4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              uVar16 = *puVar29;\n              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;\n              FUN_00129380(uVar21,uVar16,iVar35,iVar22);\n              pcVar14 = (char *)*puVar36;\n              goto LAB_00152cc8;\n            }" ({ "{") (expression_statement "uVar16 = *puVar29;" (assignment_expression "uVar16 = *puVar29" (identifier "uVar16") (= "=") (pointer_expression "*puVar29" (* "*") (identifier "puVar29"))) (; ";")) (expression_statement "uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)\n              ;" (assignment_expression "uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)" (identifier "uVar21") (= "=") (call_expression "dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)" (identifier "dcgettext") (argument_list "(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"" (" """) (string_content "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129380(uVar21,uVar16,iVar35,iVar22);" (call_expression "FUN_00129380(uVar21,uVar16,iVar35,iVar22)" (identifier "FUN_00129380") (argument_list "(uVar21,uVar16,iVar35,iVar22)" (( "(") (identifier "uVar21") (, ",") (identifier "uVar16") (, ",") (identifier "iVar35") (, ",") (identifier "iVar22") () ")"))) (; ";")) (expression_statement "pcVar14 = (char *)*puVar36;" (assignment_expression "pcVar14 = (char *)*puVar36" (identifier "pcVar14") (= "=") (cast_expression "(char *)*puVar36" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar36" (* "*") (identifier "puVar36")))) (; ";")) (goto_statement "goto LAB_00152cc8;" (goto "goto") (statement_identifier "LAB_00152cc8") (; ";")) (} "}"))) (labeled_statement "LAB_00152636:\n            *(int *)(puVar29 + 3) = iVar22;" (statement_identifier "LAB_00152636") (: ":") (expression_statement "*(int *)(puVar29 + 3) = iVar22;" (assignment_expression "*(int *)(puVar29 + 3) = iVar22" (pointer_expression "*(int *)(puVar29 + 3)" (* "*") (cast_expression "(int *)(puVar29 + 3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 3)" (( "(") (binary_expression "puVar29 + 3" (identifier "puVar29") (+ "+") (number_literal "3")) () ")")))) (= "=") (identifier "iVar22")) (; ";"))) (} "}")))) (expression_statement "*(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);" (assignment_expression "*(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4)" (pointer_expression "*(byte *)(puVar29 + 4)" (* "*") (cast_expression "(byte *)(puVar29 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 4)" (( "(") (binary_expression "puVar29 + 4" (identifier "puVar29") (+ "+") (number_literal "4")) () ")")))) (= "=") (binary_expression "*(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4)" (pointer_expression "*(byte *)(puVar29 + 4)" (* "*") (cast_expression "(byte *)(puVar29 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 4)" (( "(") (binary_expression "puVar29 + 4" (identifier "puVar29") (+ "+") (number_literal "4")) () ")")))) (| "|") (pointer_expression "*(byte *)(puVar36 + 4)" (* "*") (cast_expression "(byte *)(puVar36 + 4)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar36 + 4)" (( "(") (binary_expression "puVar36 + 4" (identifier "puVar36") (+ "+") (number_literal "4")) () ")")))))) (; ";")) (expression_statement "*(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);" (assignment_expression "*(byte *)((long)puVar29 + 0x21) =\n               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21)" (pointer_expression "*(byte *)((long)puVar29 + 0x21)" (* "*") (cast_expression "(byte *)((long)puVar29 + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar29 + 0x21)" (( "(") (binary_expression "(long)puVar29 + 0x21" (cast_expression "(long)puVar29" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar29")) (+ "+") (number_literal "0x21")) () ")")))) (= "=") (binary_expression "*(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21)" (pointer_expression "*(byte *)((long)puVar29 + 0x21)" (* "*") (cast_expression "(byte *)((long)puVar29 + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar29 + 0x21)" (( "(") (binary_expression "(long)puVar29 + 0x21" (cast_expression "(long)puVar29" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar29")) (+ "+") (number_literal "0x21")) () ")")))) (| "|") (pointer_expression "*(byte *)((long)puVar36 + 0x21)" (* "*") (cast_expression "(byte *)((long)puVar36 + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar36 + 0x21)" (( "(") (binary_expression "(long)puVar36 + 0x21" (cast_expression "(long)puVar36" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar36")) (+ "+") (number_literal "0x21")) () ")")))))) (; ";")) (expression_statement "*(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);" (assignment_expression "*(byte *)((long)puVar29 + 0x22) =\n               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22)" (pointer_expression "*(byte *)((long)puVar29 + 0x22)" (* "*") (cast_expression "(byte *)((long)puVar29 + 0x22)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar29 + 0x22)" (( "(") (binary_expression "(long)puVar29 + 0x22" (cast_expression "(long)puVar29" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar29")) (+ "+") (number_literal "0x22")) () ")")))) (= "=") (binary_expression "*(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22)" (pointer_expression "*(byte *)((long)puVar29 + 0x22)" (* "*") (cast_expression "(byte *)((long)puVar29 + 0x22)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar29 + 0x22)" (( "(") (binary_expression "(long)puVar29 + 0x22" (cast_expression "(long)puVar29" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar29")) (+ "+") (number_literal "0x22")) () ")")))) (| "|") (pointer_expression "*(byte *)((long)puVar36 + 0x22)" (* "*") (cast_expression "(byte *)((long)puVar36 + 0x22)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar36 + 0x22)" (( "(") (binary_expression "(long)puVar36 + 0x22" (cast_expression "(long)puVar36" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar36")) (+ "+") (number_literal "0x22")) () ")")))))) (; ";")) (expression_statement "*(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);" (assignment_expression "*(byte *)((long)puVar29 + 0x23) =\n               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23)" (pointer_expression "*(byte *)((long)puVar29 + 0x23)" (* "*") (cast_expression "(byte *)((long)puVar29 + 0x23)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar29 + 0x23)" (( "(") (binary_expression "(long)puVar29 + 0x23" (cast_expression "(long)puVar29" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar29")) (+ "+") (number_literal "0x23")) () ")")))) (= "=") (binary_expression "*(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23)" (pointer_expression "*(byte *)((long)puVar29 + 0x23)" (* "*") (cast_expression "(byte *)((long)puVar29 + 0x23)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar29 + 0x23)" (( "(") (binary_expression "(long)puVar29 + 0x23" (cast_expression "(long)puVar29" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar29")) (+ "+") (number_literal "0x23")) () ")")))) (| "|") (pointer_expression "*(byte *)((long)puVar36 + 0x23)" (* "*") (cast_expression "(byte *)((long)puVar36 + 0x23)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar36 + 0x23)" (( "(") (binary_expression "(long)puVar36 + 0x23" (cast_expression "(long)puVar36" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar36")) (+ "+") (number_literal "0x23")) () ")")))))) (; ";")) (if_statement "if (pcVar14 != (char *)0x0) {\n            free(pcVar14);\n          }" (if "if") (parenthesized_expression "(pcVar14 != (char *)0x0)" (( "(") (binary_expression "pcVar14 != (char *)0x0" (identifier "pcVar14") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            free(pcVar14);\n          }" ({ "{") (expression_statement "free(pcVar14);" (call_expression "free(pcVar14)" (identifier "free") (argument_list "(pcVar14)" (( "(") (identifier "pcVar14") () ")"))) (; ";")) (} "}"))) (if_statement "if ((void *)puVar36[1] != (void *)0x0) {\n            free((void *)puVar36[1]);\n          }" (if "if") (parenthesized_expression "((void *)puVar36[1] != (void *)0x0)" (( "(") (binary_expression "(void *)puVar36[1] != (void *)0x0" (cast_expression "(void *)puVar36[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar36[1]" (identifier "puVar36") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            free((void *)puVar36[1]);\n          }" ({ "{") (expression_statement "free((void *)puVar36[1]);" (call_expression "free((void *)puVar36[1])" (identifier "free") (argument_list "((void *)puVar36[1])" (( "(") (cast_expression "(void *)puVar36[1]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar36[1]" (identifier "puVar36") ([ "[") (number_literal "1") (] "]"))) () ")"))) (; ";")) (} "}"))) (if_statement "if ((void *)puVar36[2] != (void *)0x0) {\n            free((void *)puVar36[2]);\n          }" (if "if") (parenthesized_expression "((void *)puVar36[2] != (void *)0x0)" (( "(") (binary_expression "(void *)puVar36[2] != (void *)0x0" (cast_expression "(void *)puVar36[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar36[2]" (identifier "puVar36") ([ "[") (number_literal "2") (] "]"))) (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            free((void *)puVar36[2]);\n          }" ({ "{") (expression_statement "free((void *)puVar36[2]);" (call_expression "free((void *)puVar36[2])" (identifier "free") (argument_list "((void *)puVar36[2])" (( "(") (cast_expression "(void *)puVar36[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar36[2]" (identifier "puVar36") ([ "[") (number_literal "2") (] "]"))) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar36 = puVar36 + 5;" (assignment_expression "puVar36 = puVar36 + 5" (identifier "puVar36") (= "=") (binary_expression "puVar36 + 5" (identifier "puVar36") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (if_statement "if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;" (if "if") (parenthesized_expression "(*(int *)(DAT_002b5af8 + 8) <= iVar27)" (( "(") (binary_expression "*(int *)(DAT_002b5af8 + 8) <= iVar27" (pointer_expression "*(int *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")")))) (<= "<=") (identifier "iVar27")) () ")")) (goto_statement "goto LAB_001526e4;" (goto "goto") (statement_identifier "LAB_001526e4") (; ";"))) (} "}"))) (if_statement "if (iVar10 != iVar27) {\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }" (if "if") (parenthesized_expression "(iVar10 != iVar27)" (( "(") (binary_expression "iVar10 != iVar27" (identifier "iVar10") (!= "!=") (identifier "iVar27")) () ")")) (compound_statement "{\n          uVar16 = puVar36[1];\n          puVar2 = puVar26 + (long)iVar10 * 5;\n          *puVar2 = *puVar36;\n          puVar2[1] = uVar16;\n          uVar16 = puVar36[3];\n          puVar2[2] = puVar36[2];\n          puVar2[3] = uVar16;\n          puVar2[4] = puVar36[4];\n        }" ({ "{") (expression_statement "uVar16 = puVar36[1];" (assignment_expression "uVar16 = puVar36[1]" (identifier "uVar16") (= "=") (subscript_expression "puVar36[1]" (identifier "puVar36") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "puVar2 = puVar26 + (long)iVar10 * 5;" (assignment_expression "puVar2 = puVar26 + (long)iVar10 * 5" (identifier "puVar2") (= "=") (binary_expression "puVar26 + (long)iVar10 * 5" (identifier "puVar26") (+ "+") (binary_expression "(long)iVar10 * 5" (cast_expression "(long)iVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar10")) (* "*") (number_literal "5")))) (; ";")) (expression_statement "*puVar2 = *puVar36;" (assignment_expression "*puVar2 = *puVar36" (pointer_expression "*puVar2" (* "*") (identifier "puVar2")) (= "=") (pointer_expression "*puVar36" (* "*") (identifier "puVar36"))) (; ";")) (expression_statement "puVar2[1] = uVar16;" (assignment_expression "puVar2[1] = uVar16" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "uVar16 = puVar36[3];" (assignment_expression "uVar16 = puVar36[3]" (identifier "uVar16") (= "=") (subscript_expression "puVar36[3]" (identifier "puVar36") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "puVar2[2] = puVar36[2];" (assignment_expression "puVar2[2] = puVar36[2]" (subscript_expression "puVar2[2]" (identifier "puVar2") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "puVar36[2]" (identifier "puVar36") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "puVar2[3] = uVar16;" (assignment_expression "puVar2[3] = uVar16" (subscript_expression "puVar2[3]" (identifier "puVar2") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "puVar2[4] = puVar36[4];" (assignment_expression "puVar2[4] = puVar36[4]" (subscript_expression "puVar2[4]" (identifier "puVar2") ([ "[") (number_literal "4") (] "]")) (= "=") (subscript_expression "puVar36[4]" (identifier "puVar36") ([ "[") (number_literal "4") (] "]"))) (; ";")) (} "}"))) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar27 = iVar27 + 1;" (assignment_expression "iVar27 = iVar27 + 1" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar36 = puVar36 + 5;" (assignment_expression "puVar36 = puVar36 + 5" (identifier "puVar36") (= "=") (binary_expression "puVar36 + 5" (identifier "puVar36") (+ "+") (number_literal "5"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar27 < *(int *)(puVar29 + 8))" (( "(") (binary_expression "iVar27 < *(int *)(puVar29 + 8)" (identifier "iVar27") (< "<") (pointer_expression "*(int *)(puVar29 + 8)" (* "*") (cast_expression "(int *)(puVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 8)" (( "(") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) () ")"))))) () ")")) (; ";")) (labeled_statement "LAB_001526e4:\n      lVar25 = (long)iVar10 << 3;" (statement_identifier "LAB_001526e4") (: ":") (expression_statement "lVar25 = (long)iVar10 << 3;" (assignment_expression "lVar25 = (long)iVar10 << 3" (identifier "lVar25") (= "=") (binary_expression "(long)iVar10 << 3" (cast_expression "(long)iVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar10")) (<< "<<") (number_literal "3"))) (; ";"))) (} "}")) (else_clause "else {\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }" (else "else") (compound_statement "{\n      if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }\nLAB_00152f50:\n      lVar25 = 0;\n      iVar10 = 0;\n    }" ({ "{") (if_statement "if (0 < (int)uVar30) {\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }" (if "if") (parenthesized_expression "(0 < (int)uVar30)" (( "(") (binary_expression "0 < (int)uVar30" (number_literal "0") (< "<") (cast_expression "(int)uVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar30"))) () ")")) (compound_statement "{\n        bVar38 = false;\n        lVar25 = 0;\n        bVar37 = true;\nLAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );\n      }" ({ "{") (expression_statement "bVar38 = false;" (assignment_expression "bVar38 = false" (identifier "bVar38") (= "=") (false "false")) (; ";")) (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" (identifier "lVar25") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar37 = true;" (assignment_expression "bVar37 = true" (identifier "bVar37") (= "=") (true "true")) (; ";")) (labeled_statement "LAB_001524c9:\n        do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );" (statement_identifier "LAB_001524c9") (: ":") (do_statement "do {\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        } while( true );" (do "do") (compound_statement "{\n          lVar11 = 6;\n          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);\n          pbVar31 = pbVar28;\n          pbVar33 = (byte *)0x29f1f4;\n          do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);\n          if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }\n          local_3c[0] = 1;\n          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));\n          pcVar15 = strchr(pcVar14,0x40);\n          puVar29 = DAT_002b5af8;\n          *pcVar15 = '\0';\n          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);\n          puVar29 = DAT_002b5af8;\n          if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }\n          DAT_002b5af8 = puVar29;\n          if (local_3c[0] == 0) goto LAB_001524b8;\n          lVar25 = lVar25 + 1;\n          free(pcVar14);\n          uVar30 = *(uint *)(DAT_002b5af8 + 8);\n          uVar34 = (uint)lVar25;\n          bVar38 = uVar30 < uVar34;\n          bVar37 = uVar30 == uVar34;\n          puVar29 = DAT_002b5af8;\n          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n        }" ({ "{") (expression_statement "lVar11 = 6;" (assignment_expression "lVar11 = 6" (identifier "lVar11") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);" (assignment_expression "pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28)" (identifier "pbVar28") (= "=") (pointer_expression "*(byte **)(puVar29[9] + lVar25 * 0x28)" (* "*") (cast_expression "(byte **)(puVar29[9] + lVar25 * 0x28)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29[9] + lVar25 * 0x28)" (( "(") (binary_expression "puVar29[9] + lVar25 * 0x28" (subscript_expression "puVar29[9]" (identifier "puVar29") ([ "[") (number_literal "9") (] "]")) (+ "+") (binary_expression "lVar25 * 0x28" (identifier "lVar25") (* "*") (number_literal "0x28"))) () ")"))))) (; ";")) (expression_statement "pbVar31 = pbVar28;" (assignment_expression "pbVar31 = pbVar28" (identifier "pbVar31") (= "=") (identifier "pbVar28")) (; ";")) (expression_statement "pbVar33 = (byte *)0x29f1f4;" (assignment_expression "pbVar33 = (byte *)0x29f1f4" (identifier "pbVar33") (= "=") (cast_expression "(byte *)0x29f1f4" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x29f1f4"))) (; ";")) (do_statement "do {\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          } while (bVar37);" (do "do") (compound_statement "{\n            if (lVar11 == 0) break;\n            lVar11 = lVar11 + -1;\n            bVar38 = *pbVar31 < *pbVar33;\n            bVar37 = *pbVar31 == *pbVar33;\n            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;\n            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar11 == 0) break;" (if "if") (parenthesized_expression "(lVar11 == 0)" (( "(") (binary_expression "lVar11 == 0" (identifier "lVar11") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar11 = lVar11 + -1;" (assignment_expression "lVar11 = lVar11 + -1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + -1" (identifier "lVar11") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar38 = *pbVar31 < *pbVar33;" (assignment_expression "bVar38 = *pbVar31 < *pbVar33" (identifier "bVar38") (= "=") (binary_expression "*pbVar31 < *pbVar33" (pointer_expression "*pbVar31" (* "*") (identifier "pbVar31")) (< "<") (pointer_expression "*pbVar33" (* "*") (identifier "pbVar33")))) (; ";")) (expression_statement "bVar37 = *pbVar31 == *pbVar33;" (assignment_expression "bVar37 = *pbVar31 == *pbVar33" (identifier "bVar37") (= "=") (binary_expression "*pbVar31 == *pbVar33" (pointer_expression "*pbVar31" (* "*") (identifier "pbVar31")) (== "==") (pointer_expression "*pbVar33" (* "*") (identifier "pbVar33")))) (; ";")) (expression_statement "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1" (identifier "pbVar31") (= "=") (binary_expression "pbVar31 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar31 + (ulong)bVar39 * -2" (identifier "pbVar31") (+ "+") (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar39")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;" (assignment_expression "pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1" (identifier "pbVar33") (= "=") (binary_expression "pbVar33 + (ulong)bVar39 * -2 + 1" (binary_expression "pbVar33 + (ulong)bVar39 * -2" (identifier "pbVar33") (+ "+") (binary_expression "(ulong)bVar39 * -2" (cast_expression "(ulong)bVar39" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar39")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar37)" (( "(") (identifier "bVar37") () ")")) (; ";")) (if_statement "if (((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }" (if "if") (parenthesized_expression "(((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0))" (( "(") (binary_expression "((!bVar38 && !bVar37) == bVar38) ||\n             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)" (parenthesized_expression "((!bVar38 && !bVar37) == bVar38)" (( "(") (binary_expression "(!bVar38 && !bVar37) == bVar38" (parenthesized_expression "(!bVar38 && !bVar37)" (( "(") (binary_expression "!bVar38 && !bVar37" (unary_expression "!bVar38" (! "!") (identifier "bVar38")) (&& "&&") (unary_expression "!bVar37" (! "!") (identifier "bVar37"))) () ")")) (== "==") (identifier "bVar38")) () ")")) (|| "||") (parenthesized_expression "(pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)" (( "(") (comma_expression "pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0" (assignment_expression "pcVar14 = strchr((char *)pbVar28,0x40)" (identifier "pcVar14") (= "=") (call_expression "strchr((char *)pbVar28,0x40)" (identifier "strchr") (argument_list "((char *)pbVar28,0x40)" (( "(") (cast_expression "(char *)pbVar28" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "pbVar28")) (, ",") (number_literal "0x40") () ")")))) (, ",") (binary_expression "pcVar14 == (char *)0x0" (identifier "pcVar14") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\nLAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);\n            lVar25 = lVar25 + 1;\n            uVar34 = (uint)lVar25;\n            bVar38 = uVar30 < uVar34;\n            bVar37 = uVar30 == uVar34;\n            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;\n            goto LAB_001524c9;\n          }" ({ "{") (labeled_statement "LAB_001524b8:\n            uVar30 = *(uint *)(puVar29 + 8);" (statement_identifier "LAB_001524b8") (: ":") (expression_statement "uVar30 = *(uint *)(puVar29 + 8);" (assignment_expression "uVar30 = *(uint *)(puVar29 + 8)" (identifier "uVar30") (= "=") (pointer_expression "*(uint *)(puVar29 + 8)" (* "*") (cast_expression "(uint *)(puVar29 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 8)" (( "(") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) () ")"))))) (; ";"))) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" (identifier "lVar25") (= "=") (binary_expression "lVar25 + 1" (identifier "lVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar34 = (uint)lVar25;" (assignment_expression "uVar34 = (uint)lVar25" (identifier "uVar34") (= "=") (cast_expression "(uint)lVar25" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar25"))) (; ";")) (expression_statement "bVar38 = uVar30 < uVar34;" (assignment_expression "bVar38 = uVar30 < uVar34" (identifier "bVar38") (= "=") (binary_expression "uVar30 < uVar34" (identifier "uVar30") (< "<") (identifier "uVar34"))) (; ";")) (expression_statement "bVar37 = uVar30 == uVar34;" (assignment_expression "bVar37 = uVar30 == uVar34" (identifier "bVar37") (= "=") (binary_expression "uVar30 == uVar34" (identifier "uVar30") (== "==") (identifier "uVar34"))) (; ";")) (if_statement "if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;" (if "if") (parenthesized_expression "((int)uVar30 <= (int)uVar34)" (( "(") (binary_expression "(int)uVar30 <= (int)uVar34" (cast_expression "(int)uVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar30")) (<= "<=") (cast_expression "(int)uVar34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar34"))) () ")")) (goto_statement "goto LAB_001525b0;" (goto "goto") (statement_identifier "LAB_001525b0") (; ";"))) (goto_statement "goto LAB_001524c9;" (goto "goto") (statement_identifier "LAB_001524c9") (; ";")) (} "}"))) (expression_statement "local_3c[0] = 1;" (assignment_expression "local_3c[0] = 1" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));" (assignment_expression "pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40))" (identifier "pcVar14") (= "=") (cast_expression "(char *)xstrdup(pbVar28 + (*pbVar28 == 0x40))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xstrdup(pbVar28 + (*pbVar28 == 0x40))" (identifier "xstrdup") (argument_list "(pbVar28 + (*pbVar28 == 0x40))" (( "(") (binary_expression "pbVar28 + (*pbVar28 == 0x40)" (identifier "pbVar28") (+ "+") (parenthesized_expression "(*pbVar28 == 0x40)" (( "(") (binary_expression "*pbVar28 == 0x40" (pointer_expression "*pbVar28" (* "*") (identifier "pbVar28")) (== "==") (number_literal "0x40")) () ")"))) () ")"))))) (; ";")) (expression_statement "pcVar15 = strchr(pcVar14,0x40);" (assignment_expression "pcVar15 = strchr(pcVar14,0x40)" (identifier "pcVar15") (= "=") (call_expression "strchr(pcVar14,0x40)" (identifier "strchr") (argument_list "(pcVar14,0x40)" (( "(") (identifier "pcVar14") (, ",") (number_literal "0x40") () ")")))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (expression_statement "*pcVar15 = '\0';" (assignment_expression "*pcVar15 = '\0'" (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (expression_statement "iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);" (assignment_expression "iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14)" (identifier "iVar10") (= "=") (call_expression "FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14)" (identifier "FUN_0014de10") (argument_list "(0,puVar29 + 8,puVar29 + 9,pcVar14)" (( "(") (number_literal "0") (, ",") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) (, ",") (binary_expression "puVar29 + 9" (identifier "puVar29") (+ "+") (number_literal "9")) (, ",") (identifier "pcVar14") () ")")))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (if_statement "if (iVar10 != 0) {\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);\n            puVar29 = DAT_002b5af8;\n          }" ({ "{") (expression_statement "FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c);" (call_expression "FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c)" (identifier "FUN_0014b140") (argument_list "(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),\n                         0xffffffff,0,local_3c)" (( "(") (identifier "DAT_002b5af8") (, ",") (identifier "pcVar14") (, ",") (pointer_expression "*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28)" (* "*") (cast_expression "(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8[9] + 8 + lVar25 * 0x28)" (( "(") (binary_expression "DAT_002b5af8[9] + 8 + lVar25 * 0x28" (binary_expression "DAT_002b5af8[9] + 8" (subscript_expression "DAT_002b5af8[9]" (identifier "DAT_002b5af8") ([ "[") (number_literal "9") (] "]")) (+ "+") (number_literal "8")) (+ "+") (binary_expression "lVar25 * 0x28" (identifier "lVar25") (* "*") (number_literal "0x28"))) () ")")))) (, ",") (number_literal "0xffffffff") (, ",") (number_literal "0") (, ",") (identifier "local_3c") () ")"))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (} "}"))) (expression_statement "DAT_002b5af8 = puVar29;" (assignment_expression "DAT_002b5af8 = puVar29" (identifier "DAT_002b5af8") (= "=") (identifier "puVar29")) (; ";")) (if_statement "if (local_3c[0] == 0) goto LAB_001524b8;" (if "if") (parenthesized_expression "(local_3c[0] == 0)" (( "(") (binary_expression "local_3c[0] == 0" (subscript_expression "local_3c[0]" (identifier "local_3c") ([ "[") (number_literal "0") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_001524b8;" (goto "goto") (statement_identifier "LAB_001524b8") (; ";"))) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" (identifier "lVar25") (= "=") (binary_expression "lVar25 + 1" (identifier "lVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "free(pcVar14);" (call_expression "free(pcVar14)" (identifier "free") (argument_list "(pcVar14)" (( "(") (identifier "pcVar14") () ")"))) (; ";")) (expression_statement "uVar30 = *(uint *)(DAT_002b5af8 + 8);" (assignment_expression "uVar30 = *(uint *)(DAT_002b5af8 + 8)" (identifier "uVar30") (= "=") (pointer_expression "*(uint *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(uint *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar34 = (uint)lVar25;" (assignment_expression "uVar34 = (uint)lVar25" (identifier "uVar34") (= "=") (cast_expression "(uint)lVar25" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "lVar25"))) (; ";")) (expression_statement "bVar38 = uVar30 < uVar34;" (assignment_expression "bVar38 = uVar30 < uVar34" (identifier "bVar38") (= "=") (binary_expression "uVar30 < uVar34" (identifier "uVar30") (< "<") (identifier "uVar34"))) (; ";")) (expression_statement "bVar37 = uVar30 == uVar34;" (assignment_expression "bVar37 = uVar30 == uVar34" (identifier "bVar37") (= "=") (binary_expression "uVar30 == uVar34" (identifier "uVar30") (== "==") (identifier "uVar34"))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (if_statement "if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;" (if "if") (parenthesized_expression "((int)uVar30 <= (int)uVar34)" (( "(") (binary_expression "(int)uVar30 <= (int)uVar34" (cast_expression "(int)uVar30" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar30")) (<= "<=") (cast_expression "(int)uVar34" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar34"))) () ")")) (goto_statement "goto LAB_001525b0;" (goto "goto") (statement_identifier "LAB_001525b0") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}"))) (labeled_statement "LAB_00152f50:\n      lVar25 = 0;" (statement_identifier "LAB_00152f50") (: ":") (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" (identifier "lVar25") (= "=") (number_literal "0")) (; ";"))) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "*(int *)(puVar29 + 8) = iVar10;" (assignment_expression "*(int *)(puVar29 + 8) = iVar10" (pointer_expression "*(int *)(puVar29 + 8)" (* "*") (cast_expression "(int *)(puVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 8)" (( "(") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "DAT_002b5b88 = xmalloc(lVar25);" (assignment_expression "DAT_002b5b88 = xmalloc(lVar25)" (identifier "DAT_002b5b88") (= "=") (call_expression "xmalloc(lVar25)" (identifier "xmalloc") (argument_list "(lVar25)" (( "(") (identifier "lVar25") () ")")))) (; ";")) (expression_statement "DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);" (assignment_expression "DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3)" (identifier "DAT_002b5b80") (= "=") (cast_expression "(void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3)" (identifier "xmalloc") (argument_list "((long)*(int *)(DAT_002b5af8 + 8) << 3)" (( "(") (binary_expression "(long)*(int *)(DAT_002b5af8 + 8) << 3" (cast_expression "(long)*(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*(int *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")"))))) (<< "<<") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (expression_statement "memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);" (call_expression "memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3)" (identifier "memset") (argument_list "(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3)" (( "(") (identifier "DAT_002b5b80") (, ",") (number_literal "0") (, ",") (binary_expression "(long)*(int *)(DAT_002b5af8 + 8) << 3" (cast_expression "(long)*(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*(int *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")"))))) (<< "<<") (number_literal "3")) () ")"))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar29 + 8);" (assignment_expression "iVar10 = *(int *)(puVar29 + 8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar29 + 8)" (* "*") (cast_expression "(int *)(puVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 8)" (( "(") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "DAT_002b5b60 = 0;" (assignment_expression "DAT_002b5b60 = 0" (identifier "DAT_002b5b60") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_002b5b64 = 0x10000;" (assignment_expression "DAT_002b5b64 = 0x10000" (identifier "DAT_002b5b64") (= "=") (number_literal "0x10000")) (; ";")) (expression_statement "DAT_002b5b78 = 0;" (assignment_expression "DAT_002b5b78 = 0" (identifier "DAT_002b5b78") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_002b5b74 = 0;" (assignment_expression "DAT_002b5b74 = 0" (identifier "DAT_002b5b74") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_002b5b70 = 0;" (assignment_expression "DAT_002b5b70 = 0" (identifier "DAT_002b5b70") (= "=") (number_literal "0")) (; ";")) (if_statement "if (0 < iVar10) {\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }" (if "if") (parenthesized_expression "(0 < iVar10)" (( "(") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n      lVar25 = 0;\n      do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);\n    }" ({ "{") (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" (identifier "lVar25") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      } while ((int)lVar25 < iVar10);" (do "do") (compound_statement "{\n        lVar11 = lVar25 * 0x28;\n        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);\n        FUN_0011e4b0(pcVar14);\n        sVar13 = strlen(pcVar14);\n        pcVar15 = (char *)xmalloc(sVar13 + 2);\n        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }\n        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);\n        puVar29 = DAT_002b5af8;\n        if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }\n        lVar25 = lVar25 + 1;\n        free(pcVar15);\n        iVar10 = *(int *)(puVar29 + 8);\n      }" ({ "{") (expression_statement "lVar11 = lVar25 * 0x28;" (assignment_expression "lVar11 = lVar25 * 0x28" (identifier "lVar11") (= "=") (binary_expression "lVar25 * 0x28" (identifier "lVar25") (* "*") (number_literal "0x28"))) (; ";")) (expression_statement "pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);" (assignment_expression "pcVar14 = *(char **)(puVar29[9] + 8 + lVar11)" (identifier "pcVar14") (= "=") (pointer_expression "*(char **)(puVar29[9] + 8 + lVar11)" (* "*") (cast_expression "(char **)(puVar29[9] + 8 + lVar11)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar29[9] + 8 + lVar11)" (( "(") (binary_expression "puVar29[9] + 8 + lVar11" (binary_expression "puVar29[9] + 8" (subscript_expression "puVar29[9]" (identifier "puVar29") ([ "[") (number_literal "9") (] "]")) (+ "+") (number_literal "8")) (+ "+") (identifier "lVar11")) () ")"))))) (; ";")) (expression_statement "FUN_0011e4b0(pcVar14);" (call_expression "FUN_0011e4b0(pcVar14)" (identifier "FUN_0011e4b0") (argument_list "(pcVar14)" (( "(") (identifier "pcVar14") () ")"))) (; ";")) (expression_statement "sVar13 = strlen(pcVar14);" (assignment_expression "sVar13 = strlen(pcVar14)" (identifier "sVar13") (= "=") (call_expression "strlen(pcVar14)" (identifier "strlen") (argument_list "(pcVar14)" (( "(") (identifier "pcVar14") () ")")))) (; ";")) (expression_statement "pcVar15 = (char *)xmalloc(sVar13 + 2);" (assignment_expression "pcVar15 = (char *)xmalloc(sVar13 + 2)" (identifier "pcVar15") (= "=") (cast_expression "(char *)xmalloc(sVar13 + 2)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(sVar13 + 2)" (identifier "xmalloc") (argument_list "(sVar13 + 2)" (( "(") (binary_expression "sVar13 + 2" (identifier "sVar13") (+ "+") (number_literal "2")) () ")"))))) (; ";")) (if_statement "if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {\n          strcpy(pcVar15,pcVar14);\n        }\n        else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }" (if "if") (parenthesized_expression "((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@'))" (( "(") (binary_expression "(*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')" (parenthesized_expression "(*(int *)(DAT_002b5b90 + 0x1c) == 0)" (( "(") (binary_expression "*(int *)(DAT_002b5b90 + 0x1c) == 0" (pointer_expression "*(int *)(DAT_002b5b90 + 0x1c)" (* "*") (cast_expression "(int *)(DAT_002b5b90 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5b90 + 0x1c)" (( "(") (binary_expression "DAT_002b5b90 + 0x1c" (identifier "DAT_002b5b90") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*pcVar14 == '@')" (( "(") (binary_expression "*pcVar14 == '@'" (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) (== "==") (char_literal "'@'" (' "'") (character "@") (' "'"))) () ")"))) () ")")) (compound_statement "{\n          strcpy(pcVar15,pcVar14);\n        }" ({ "{") (expression_statement "strcpy(pcVar15,pcVar14);" (call_expression "strcpy(pcVar15,pcVar14)" (identifier "strcpy") (argument_list "(pcVar15,pcVar14)" (( "(") (identifier "pcVar15") (, ",") (identifier "pcVar14") () ")"))) (; ";")) (} "}")) (else_clause "else {\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }" (else "else") (compound_statement "{\n          *pcVar15 = '_';\n          strcpy(pcVar15 + 1,pcVar14);\n          uVar16 = xstrdup(pcVar15);\n          FUN_0011e4b0(uVar16);\n        }" ({ "{") (expression_statement "*pcVar15 = '_';" (assignment_expression "*pcVar15 = '_'" (pointer_expression "*pcVar15" (* "*") (identifier "pcVar15")) (= "=") (char_literal "'_'" (' "'") (character "_") (' "'"))) (; ";")) (expression_statement "strcpy(pcVar15 + 1,pcVar14);" (call_expression "strcpy(pcVar15 + 1,pcVar14)" (identifier "strcpy") (argument_list "(pcVar15 + 1,pcVar14)" (( "(") (binary_expression "pcVar15 + 1" (identifier "pcVar15") (+ "+") (number_literal "1")) (, ",") (identifier "pcVar14") () ")"))) (; ";")) (expression_statement "uVar16 = xstrdup(pcVar15);" (assignment_expression "uVar16 = xstrdup(pcVar15)" (identifier "uVar16") (= "=") (call_expression "xstrdup(pcVar15)" (identifier "xstrdup") (argument_list "(pcVar15)" (( "(") (identifier "pcVar15") () ")")))) (; ";")) (expression_statement "FUN_0011e4b0(uVar16);" (call_expression "FUN_0011e4b0(uVar16)" (identifier "FUN_0011e4b0") (argument_list "(uVar16)" (( "(") (identifier "uVar16") () ")"))) (; ";")) (} "}")))) (expression_statement "lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);" (assignment_expression "lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1)" (identifier "lVar17") (= "=") (call_expression "bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1)" (identifier "bfd_link_hash_lookup") (argument_list "(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1)" (( "(") (pointer_expression "*(undefined8 *)(param_2 + 0x28)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x28)" (( "(") (binary_expression "param_2 + 0x28" (identifier "param_2") (+ "+") (number_literal "0x28")) () ")")))) (, ",") (identifier "pcVar15") (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (if_statement "if (lVar17 == 0) {\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }\n        else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }" (if "if") (parenthesized_expression "(lVar17 == 0)" (( "(") (binary_expression "lVar17 == 0" (identifier "lVar17") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          pcVar14 = strchr(pcVar14,0x2e);\n          if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }\n          pcVar18 = "%X%P: cannot export %s: symbol not found\n";\nLAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);\n          FUN_00129380(uVar16);\n          puVar29 = DAT_002b5af8;\n        }" ({ "{") (expression_statement "pcVar14 = strchr(pcVar14,0x2e);" (assignment_expression "pcVar14 = strchr(pcVar14,0x2e)" (identifier "pcVar14") (= "=") (call_expression "strchr(pcVar14,0x2e)" (identifier "strchr") (argument_list "(pcVar14,0x2e)" (( "(") (identifier "pcVar14") (, ",") (number_literal "0x2e") () ")")))) (; ";")) (if_statement "if (pcVar14 != (char *)0x0) {\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }" (if "if") (parenthesized_expression "(pcVar14 != (char *)0x0)" (( "(") (binary_expression "pcVar14 != (char *)0x0" (identifier "pcVar14") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_001528bb:\n            puVar29 = DAT_002b5af8;\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar11 = lVar11 + DAT_002b5af8[9];\n            if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            iVar10 = *(int *)(lVar11 + 0x18);\n            *(undefined1 *)(lVar11 + 0x24) = 1;\n            goto joined_r0x001527c9;\n          }" ({ "{") (labeled_statement "LAB_001528bb:\n            puVar29 = DAT_002b5af8;" (statement_identifier "LAB_001528bb") (: ":") (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";"))) (expression_statement "DAT_002b5b78 = DAT_002b5b78 + 1;" (assignment_expression "DAT_002b5b78 = DAT_002b5b78 + 1" (identifier "DAT_002b5b78") (= "=") (binary_expression "DAT_002b5b78 + 1" (identifier "DAT_002b5b78") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar11 = lVar11 + DAT_002b5af8[9];" (assignment_expression "lVar11 = lVar11 + DAT_002b5af8[9]" (identifier "lVar11") (= "=") (binary_expression "lVar11 + DAT_002b5af8[9]" (identifier "lVar11") (+ "+") (subscript_expression "DAT_002b5af8[9]" (identifier "DAT_002b5af8") ([ "[") (number_literal "9") (] "]")))) (; ";")) (if_statement "if (*(char *)(lVar11 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" (if "if") (parenthesized_expression "(*(char *)(lVar11 + 0x22) == '\0')" (( "(") (binary_expression "*(char *)(lVar11 + 0x22) == '\0'" (pointer_expression "*(char *)(lVar11 + 0x22)" (* "*") (cast_expression "(char *)(lVar11 + 0x22)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x22)" (( "(") (binary_expression "lVar11 + 0x22" (identifier "lVar11") (+ "+") (number_literal "0x22")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" ({ "{") (expression_statement "DAT_002b5b74 = DAT_002b5b74 + 1;" (assignment_expression "DAT_002b5b74 = DAT_002b5b74 + 1" (identifier "DAT_002b5b74") (= "=") (binary_expression "DAT_002b5b74 + 1" (identifier "DAT_002b5b74") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "iVar10 = *(int *)(lVar11 + 0x18);" (assignment_expression "iVar10 = *(int *)(lVar11 + 0x18)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(lVar11 + 0x18)" (* "*") (cast_expression "(int *)(lVar11 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x18)" (( "(") (binary_expression "lVar11 + 0x18" (identifier "lVar11") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)(lVar11 + 0x24) = 1;" (assignment_expression "*(undefined1 *)(lVar11 + 0x24) = 1" (pointer_expression "*(undefined1 *)(lVar11 + 0x24)" (* "*") (cast_expression "(undefined1 *)(lVar11 + 0x24)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + 0x24)" (( "(") (binary_expression "lVar11 + 0x24" (identifier "lVar11") (+ "+") (number_literal "0x24")) () ")")))) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto joined_r0x001527c9;" (goto "goto") (statement_identifier "joined_r0x001527c9") (; ";")) (} "}"))) (expression_statement "pcVar18 = "%X%P: cannot export %s: symbol not found\n";" (assignment_expression "pcVar18 = "%X%P: cannot export %s: symbol not found\n"" (identifier "pcVar18") (= "=") (string_literal ""%X%P: cannot export %s: symbol not found\n"" (" """) (string_content "%X%P: cannot export %s: symbol not found") (escape_sequence "\n") (" """))) (; ";")) (labeled_statement "LAB_00152d02:\n          uVar16 = dcgettext(0,pcVar18,5);" (statement_identifier "LAB_00152d02") (: ":") (expression_statement "uVar16 = dcgettext(0,pcVar18,5);" (assignment_expression "uVar16 = dcgettext(0,pcVar18,5)" (identifier "uVar16") (= "=") (call_expression "dcgettext(0,pcVar18,5)" (identifier "dcgettext") (argument_list "(0,pcVar18,5)" (( "(") (number_literal "0") (, ",") (identifier "pcVar18") (, ",") (number_literal "5") () ")")))) (; ";"))) (expression_statement "FUN_00129380(uVar16);" (call_expression "FUN_00129380(uVar16)" (identifier "FUN_00129380") (argument_list "(uVar16)" (( "(") (identifier "uVar16") () ")"))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (} "}")) (else_clause "else {\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }" (else "else") (compound_statement "{\n          cVar5 = *(char *)(lVar17 + 0x18);\n          if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }\n        }" ({ "{") (expression_statement "cVar5 = *(char *)(lVar17 + 0x18);" (assignment_expression "cVar5 = *(char *)(lVar17 + 0x18)" (identifier "cVar5") (= "=") (pointer_expression "*(char *)(lVar17 + 0x18)" (* "*") (cast_expression "(char *)(lVar17 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 0x18)" (( "(") (binary_expression "lVar17 + 0x18" (identifier "lVar17") (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (if_statement "if ((cVar5 - 3U & 0xfd) == 0) {\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }\n          else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }" (if "if") (parenthesized_expression "((cVar5 - 3U & 0xfd) == 0)" (( "(") (binary_expression "(cVar5 - 3U & 0xfd) == 0" (parenthesized_expression "(cVar5 - 3U & 0xfd)" (( "(") (binary_expression "cVar5 - 3U & 0xfd" (binary_expression "cVar5 - 3U" (identifier "cVar5") (- "-") (number_literal "3U")) (& "&") (number_literal "0xfd")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            DAT_002b5b78 = DAT_002b5b78 + 1;\n            lVar7 = DAT_002b5af8[9];\n            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }\n            lVar17 = *(long *)(lVar17 + 0x28);\n            if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }\n            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;\n            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);\njoined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }\n          }" ({ "{") (expression_statement "DAT_002b5b78 = DAT_002b5b78 + 1;" (assignment_expression "DAT_002b5b78 = DAT_002b5b78 + 1" (identifier "DAT_002b5b78") (= "=") (binary_expression "DAT_002b5b78 + 1" (identifier "DAT_002b5b78") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar7 = DAT_002b5af8[9];" (assignment_expression "lVar7 = DAT_002b5af8[9]" (identifier "lVar7") (= "=") (subscript_expression "DAT_002b5af8[9]" (identifier "DAT_002b5af8") ([ "[") (number_literal "9") (] "]"))) (; ";")) (if_statement "if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" (if "if") (parenthesized_expression "(*(char *)(lVar11 + lVar7 + 0x22) == '\0')" (( "(") (binary_expression "*(char *)(lVar11 + lVar7 + 0x22) == '\0'" (pointer_expression "*(char *)(lVar11 + lVar7 + 0x22)" (* "*") (cast_expression "(char *)(lVar11 + lVar7 + 0x22)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + lVar7 + 0x22)" (( "(") (binary_expression "lVar11 + lVar7 + 0x22" (binary_expression "lVar11 + lVar7" (identifier "lVar11") (+ "+") (identifier "lVar7")) (+ "+") (number_literal "0x22")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              DAT_002b5b74 = DAT_002b5b74 + 1;\n            }" ({ "{") (expression_statement "DAT_002b5b74 = DAT_002b5b74 + 1;" (assignment_expression "DAT_002b5b74 = DAT_002b5b74 + 1" (identifier "DAT_002b5b74") (= "=") (binary_expression "DAT_002b5b74 + 1" (identifier "DAT_002b5b74") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "lVar17 = *(long *)(lVar17 + 0x28);" (assignment_expression "lVar17 = *(long *)(lVar17 + 0x28)" (identifier "lVar17") (= "=") (pointer_expression "*(long *)(lVar17 + 0x28)" (* "*") (cast_expression "(long *)(lVar17 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 0x28)" (( "(") (binary_expression "lVar17 + 0x28" (identifier "lVar17") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (cVar5 != '\x03') {\n              lVar17 = *(long *)(lVar17 + 8);\n            }" (if "if") (parenthesized_expression "(cVar5 != '\x03')" (( "(") (binary_expression "cVar5 != '\x03'" (identifier "cVar5") (!= "!=") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'"))) () ")")) (compound_statement "{\n              lVar17 = *(long *)(lVar17 + 8);\n            }" ({ "{") (expression_statement "lVar17 = *(long *)(lVar17 + 8);" (assignment_expression "lVar17 = *(long *)(lVar17 + 8)" (identifier "lVar17") (= "=") (pointer_expression "*(long *)(lVar17 + 8)" (* "*") (cast_expression "(long *)(lVar17 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + 8)" (( "(") (binary_expression "lVar17 + 8" (identifier "lVar17") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;" (assignment_expression "*(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17" (pointer_expression "*(long *)((long)DAT_002b5b80 + lVar25 * 8)" (* "*") (cast_expression "(long *)((long)DAT_002b5b80 + lVar25 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)DAT_002b5b80 + lVar25 * 8)" (( "(") (binary_expression "(long)DAT_002b5b80 + lVar25 * 8" (cast_expression "(long)DAT_002b5b80" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_002b5b80")) (+ "+") (binary_expression "lVar25 * 8" (identifier "lVar25") (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "lVar17")) (; ";")) (expression_statement "iVar10 = *(int *)(lVar11 + lVar7 + 0x18);" (assignment_expression "iVar10 = *(int *)(lVar11 + lVar7 + 0x18)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(lVar11 + lVar7 + 0x18)" (* "*") (cast_expression "(int *)(lVar11 + lVar7 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar11 + lVar7 + 0x18)" (( "(") (binary_expression "lVar11 + lVar7 + 0x18" (binary_expression "lVar11 + lVar7" (identifier "lVar11") (+ "+") (identifier "lVar7")) (+ "+") (number_literal "0x18")) () ")"))))) (; ";")) (labeled_statement "joined_r0x001527c9:\n            if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }" (statement_identifier "joined_r0x001527c9") (: ":") (if_statement "if (iVar10 != -1) {\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }" (if "if") (parenthesized_expression "(iVar10 != -1)" (( "(") (binary_expression "iVar10 != -1" (identifier "iVar10") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n              if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }\n              if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }\n              DAT_002b5b70 = DAT_002b5b70 + 1;\n            }" ({ "{") (if_statement "if (DAT_002b5b60 < iVar10) {\n                DAT_002b5b60 = iVar10;\n              }" (if "if") (parenthesized_expression "(DAT_002b5b60 < iVar10)" (( "(") (binary_expression "DAT_002b5b60 < iVar10" (identifier "DAT_002b5b60") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n                DAT_002b5b60 = iVar10;\n              }" ({ "{") (expression_statement "DAT_002b5b60 = iVar10;" (assignment_expression "DAT_002b5b60 = iVar10" (identifier "DAT_002b5b60") (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (if_statement "if (iVar10 < DAT_002b5b64) {\n                DAT_002b5b64 = iVar10;\n              }" (if "if") (parenthesized_expression "(iVar10 < DAT_002b5b64)" (( "(") (binary_expression "iVar10 < DAT_002b5b64" (identifier "iVar10") (< "<") (identifier "DAT_002b5b64")) () ")")) (compound_statement "{\n                DAT_002b5b64 = iVar10;\n              }" ({ "{") (expression_statement "DAT_002b5b64 = iVar10;" (assignment_expression "DAT_002b5b64 = iVar10" (identifier "DAT_002b5b64") (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (expression_statement "DAT_002b5b70 = DAT_002b5b70 + 1;" (assignment_expression "DAT_002b5b70 = DAT_002b5b70 + 1" (identifier "DAT_002b5b70") (= "=") (binary_expression "DAT_002b5b70 + 1" (identifier "DAT_002b5b70") (+ "+") (number_literal "1"))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }" (else "else") (compound_statement "{\n            pcVar18 = strchr(pcVar14,0x2e);\n            if (pcVar18 != (char *)0x0) goto LAB_001528bb;\n            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";\n            if (cVar5 == '\x01') goto LAB_00152d02;\n            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);\n            FUN_00129380(uVar16,pcVar14,cVar5);\n            puVar29 = DAT_002b5af8;\n          }" ({ "{") (expression_statement "pcVar18 = strchr(pcVar14,0x2e);" (assignment_expression "pcVar18 = strchr(pcVar14,0x2e)" (identifier "pcVar18") (= "=") (call_expression "strchr(pcVar14,0x2e)" (identifier "strchr") (argument_list "(pcVar14,0x2e)" (( "(") (identifier "pcVar14") (, ",") (number_literal "0x2e") () ")")))) (; ";")) (if_statement "if (pcVar18 != (char *)0x0) goto LAB_001528bb;" (if "if") (parenthesized_expression "(pcVar18 != (char *)0x0)" (( "(") (binary_expression "pcVar18 != (char *)0x0" (identifier "pcVar18") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_001528bb;" (goto "goto") (statement_identifier "LAB_001528bb") (; ";"))) (expression_statement "pcVar18 = "%X%P: cannot export %s: symbol not defined\n";" (assignment_expression "pcVar18 = "%X%P: cannot export %s: symbol not defined\n"" (identifier "pcVar18") (= "=") (string_literal ""%X%P: cannot export %s: symbol not defined\n"" (" """) (string_content "%X%P: cannot export %s: symbol not defined") (escape_sequence "\n") (" """))) (; ";")) (if_statement "if (cVar5 == '\x01') goto LAB_00152d02;" (if "if") (parenthesized_expression "(cVar5 == '\x01')" (( "(") (binary_expression "cVar5 == '\x01'" (identifier "cVar5") (== "==") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (goto_statement "goto LAB_00152d02;" (goto "goto") (statement_identifier "LAB_00152d02") (; ";"))) (expression_statement "uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5)" (identifier "uVar16") (= "=") (call_expression "dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5)" (identifier "dcgettext") (argument_list "(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%X%P: cannot export %s: symbol wrong type (%d vs %d)\n"" (" """) (string_content "%X%P: cannot export %s: symbol wrong type (%d vs %d)") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129380(uVar16,pcVar14,cVar5);" (call_expression "FUN_00129380(uVar16,pcVar14,cVar5)" (identifier "FUN_00129380") (argument_list "(uVar16,pcVar14,cVar5)" (( "(") (identifier "uVar16") (, ",") (identifier "pcVar14") (, ",") (identifier "cVar5") () ")"))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (} "}")))) (} "}")))) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" (identifier "lVar25") (= "=") (binary_expression "lVar25 + 1" (identifier "lVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "free(pcVar15);" (call_expression "free(pcVar15)" (identifier "free") (argument_list "(pcVar15)" (( "(") (identifier "pcVar15") () ")"))) (; ";")) (expression_statement "iVar10 = *(int *)(puVar29 + 8);" (assignment_expression "iVar10 = *(int *)(puVar29 + 8)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar29 + 8)" (* "*") (cast_expression "(int *)(puVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 8)" (( "(") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar25 < iVar10)" (( "(") (binary_expression "(int)lVar25 < iVar10" (cast_expression "(int)lVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar25")) (< "<") (identifier "iVar10")) () ")")) (; ";")) (} "}"))) (labeled_statement "joined_r0x00152ec1:\n    if (iVar10 == 0) goto LAB_00152950;" (statement_identifier "joined_r0x00152ec1") (: ":") (if_statement "if (iVar10 == 0) goto LAB_00152950;" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00152950;" (goto "goto") (statement_identifier "LAB_00152950") (; ";")))) (} "}")))) (expression_statement "DAT_002b5b68 = (char *)*puVar29;" (assignment_expression "DAT_002b5b68 = (char *)*puVar29" (identifier "DAT_002b5b68") (= "=") (cast_expression "(char *)*puVar29" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar29" (* "*") (identifier "puVar29")))) (; ";")) (if_statement "if (DAT_002b5b68 == (char *)0x0) {\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }" (if "if") (parenthesized_expression "(DAT_002b5b68 == (char *)0x0)" (( "(") (binary_expression "DAT_002b5b68 == (char *)0x0" (identifier "DAT_002b5b68") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    DAT_002b5b68 = (char *)*param_1;\n    cVar5 = *DAT_002b5b68;\n    if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }\n  }" ({ "{") (expression_statement "DAT_002b5b68 = (char *)*param_1;" (assignment_expression "DAT_002b5b68 = (char *)*param_1" (identifier "DAT_002b5b68") (= "=") (cast_expression "(char *)*param_1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "cVar5 = *DAT_002b5b68;" (assignment_expression "cVar5 = *DAT_002b5b68" (identifier "cVar5") (= "=") (pointer_expression "*DAT_002b5b68" (* "*") (identifier "DAT_002b5b68"))) (; ";")) (if_statement "if (cVar5 != '\0') {\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }" (if "if") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      bVar38 = false;\n      pcVar14 = DAT_002b5b68;\n      pcVar15 = DAT_002b5b68;\n      do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');\n      if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }\n    }" ({ "{") (expression_statement "bVar38 = false;" (assignment_expression "bVar38 = false" (identifier "bVar38") (= "=") (false "false")) (; ";")) (expression_statement "pcVar14 = DAT_002b5b68;" (assignment_expression "pcVar14 = DAT_002b5b68" (identifier "pcVar14") (= "=") (identifier "DAT_002b5b68")) (; ";")) (expression_statement "pcVar15 = DAT_002b5b68;" (assignment_expression "pcVar15 = DAT_002b5b68" (identifier "pcVar15") (= "=") (identifier "DAT_002b5b68")) (; ";")) (do_statement "do {\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      } while (cVar5 != '\0');" (do "do") (compound_statement "{\n        pcVar14 = pcVar14 + 1;\n        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }\n        cVar5 = *pcVar14;\n      }" ({ "{") (expression_statement "pcVar14 = pcVar14 + 1;" (assignment_expression "pcVar14 = pcVar14 + 1" (identifier "pcVar14") (= "=") (binary_expression "pcVar14 + 1" (identifier "pcVar14") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }" (if "if") (parenthesized_expression "(((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0))" (( "(") (binary_expression "((byte)(cVar5 - 0x2fU) < 0x2e) &&\n           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)" (parenthesized_expression "((byte)(cVar5 - 0x2fU) < 0x2e)" (( "(") (binary_expression "(byte)(cVar5 - 0x2fU) < 0x2e" (call_expression "(byte)(cVar5 - 0x2fU)" (parenthesized_expression "(byte)" (( "(") (identifier "byte") () ")")) (argument_list "(cVar5 - 0x2fU)" (( "(") (binary_expression "cVar5 - 0x2fU" (identifier "cVar5") (- "-") (number_literal "0x2fU")) () ")"))) (< "<") (number_literal "0x2e")) () ")")) (&& "&&") (parenthesized_expression "((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)" (( "(") (binary_expression "(~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0" (parenthesized_expression "(~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1)" (( "(") (binary_expression "~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1" (unary_expression "~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f))" (~ "~") (call_expression "(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f))" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(0x200000000801 >> (cVar5 - 0x2fU & 0x3f))" (( "(") (binary_expression "0x200000000801 >> (cVar5 - 0x2fU & 0x3f)" (number_literal "0x200000000801") (>> ">>") (parenthesized_expression "(cVar5 - 0x2fU & 0x3f)" (( "(") (binary_expression "cVar5 - 0x2fU & 0x3f" (binary_expression "cVar5 - 0x2fU" (identifier "cVar5") (- "-") (number_literal "0x2fU")) (& "&") (number_literal "0x3f")) () ")"))) () ")")))) (& "&") (number_literal "1")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          bVar38 = true;\n          pcVar15 = pcVar14;\n        }" ({ "{") (expression_statement "bVar38 = true;" (assignment_expression "bVar38 = true" (identifier "bVar38") (= "=") (true "true")) (; ";")) (expression_statement "pcVar15 = pcVar14;" (assignment_expression "pcVar15 = pcVar14" (identifier "pcVar15") (= "=") (identifier "pcVar14")) (; ";")) (} "}"))) (expression_statement "cVar5 = *pcVar14;" (assignment_expression "cVar5 = *pcVar14" (identifier "cVar5") (= "=") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar5 != '\0')" (( "(") (binary_expression "cVar5 != '\0'" (identifier "cVar5") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (if_statement "if (bVar38) {\n        DAT_002b5b68 = pcVar15;\n      }" (if "if") (parenthesized_expression "(bVar38)" (( "(") (identifier "bVar38") () ")")) (compound_statement "{\n        DAT_002b5b68 = pcVar15;\n      }" ({ "{") (expression_statement "DAT_002b5b68 = pcVar15;" (assignment_expression "DAT_002b5b68 = pcVar15" (identifier "DAT_002b5b68") (= "=") (identifier "pcVar15")) (; ";")) (} "}"))) (} "}"))) (} "}"))) (if_statement "if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }\n  else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }" (if "if") (parenthesized_expression "((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78))" (( "(") (binary_expression "(DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)" (parenthesized_expression "(DAT_002b5b70 == 0)" (( "(") (binary_expression "DAT_002b5b70 == 0" (identifier "DAT_002b5b70") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(DAT_002b5b60 <= DAT_002b5b78)" (( "(") (binary_expression "DAT_002b5b60 <= DAT_002b5b78" (identifier "DAT_002b5b60") (<= "<=") (identifier "DAT_002b5b78")) () ")"))) () ")")) (compound_statement "{\n    DAT_002b5b64 = 1;\n    DAT_002b5b60 = DAT_002b5b78;\n  }" ({ "{") (expression_statement "DAT_002b5b64 = 1;" (assignment_expression "DAT_002b5b64 = 1" (identifier "DAT_002b5b64") (= "=") (number_literal "1")) (; ";")) (expression_statement "DAT_002b5b60 = DAT_002b5b78;" (assignment_expression "DAT_002b5b60 = DAT_002b5b78" (identifier "DAT_002b5b60") (= "=") (identifier "DAT_002b5b78")) (; ";")) (} "}")) (else_clause "else {\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }" (else "else") (compound_statement "{\n    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;\n    if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }\n  }" ({ "{") (expression_statement "iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;" (assignment_expression "iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1" (identifier "iVar10") (= "=") (binary_expression "(DAT_002b5b60 - DAT_002b5b78) + 1" (parenthesized_expression "(DAT_002b5b60 - DAT_002b5b78)" (( "(") (binary_expression "DAT_002b5b60 - DAT_002b5b78" (identifier "DAT_002b5b60") (- "-") (identifier "DAT_002b5b78")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar10 < DAT_002b5b64) {\n      DAT_002b5b64 = iVar10;\n    }" (if "if") (parenthesized_expression "(iVar10 < DAT_002b5b64)" (( "(") (binary_expression "iVar10 < DAT_002b5b64" (identifier "iVar10") (< "<") (identifier "DAT_002b5b64")) () ")")) (compound_statement "{\n      DAT_002b5b64 = iVar10;\n    }" ({ "{") (expression_statement "DAT_002b5b64 = iVar10;" (assignment_expression "DAT_002b5b64 = iVar10" (identifier "DAT_002b5b64") (= "=") (identifier "iVar10")) (; ";")) (} "}"))) (} "}")))) (expression_statement "DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;" (assignment_expression "DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1" (identifier "DAT_002b5b7c") (= "=") (binary_expression "(DAT_002b5b60 - DAT_002b5b64) + 1" (parenthesized_expression "(DAT_002b5b60 - DAT_002b5b64)" (( "(") (binary_expression "DAT_002b5b60 - DAT_002b5b64" (identifier "DAT_002b5b60") (- "-") (identifier "DAT_002b5b64")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);" (assignment_expression "puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2)" (identifier "puVar19") (= "=") (cast_expression "(undefined4 *)xmalloc((long)DAT_002b5b7c << 2)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc((long)DAT_002b5b7c << 2)" (identifier "xmalloc") (argument_list "((long)DAT_002b5b7c << 2)" (( "(") (binary_expression "(long)DAT_002b5b7c << 2" (cast_expression "(long)DAT_002b5b7c" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_002b5b7c")) (<< "<<") (number_literal "2")) () ")"))))) (; ";")) (expression_statement "DAT_002b5b58 = puVar19;" (assignment_expression "DAT_002b5b58 = puVar19" (identifier "DAT_002b5b58") (= "=") (identifier "puVar19")) (; ";")) (if_statement "if (0 < DAT_002b5b7c) {\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }" (if "if") (parenthesized_expression "(0 < DAT_002b5b7c)" (( "(") (binary_expression "0 < DAT_002b5b7c" (number_literal "0") (< "<") (identifier "DAT_002b5b7c")) () ")")) (compound_statement "{\n    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;\n    do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);\n  }" ({ "{") (expression_statement "puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;" (assignment_expression "puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1" (identifier "puVar4") (= "=") (binary_expression "puVar19 + (ulong)(DAT_002b5b7c - 1) + 1" (binary_expression "puVar19 + (ulong)(DAT_002b5b7c - 1)" (identifier "puVar19") (+ "+") (call_expression "(ulong)(DAT_002b5b7c - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(DAT_002b5b7c - 1)" (( "(") (binary_expression "DAT_002b5b7c - 1" (identifier "DAT_002b5b7c") (- "-") (number_literal "1")) () ")")))) (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    } while (puVar4 != puVar19);" (do "do") (compound_statement "{\n      *puVar19 = 0xffffffff;\n      puVar19 = puVar19 + 1;\n    }" ({ "{") (expression_statement "*puVar19 = 0xffffffff;" (assignment_expression "*puVar19 = 0xffffffff" (pointer_expression "*puVar19" (* "*") (identifier "puVar19")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar4 != puVar19)" (( "(") (binary_expression "puVar4 != puVar19" (identifier "puVar4") (!= "!=") (identifier "puVar19")) () ")")) (; ";")) (} "}"))) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_68 = DAT_002b5b64;" (assignment_expression "local_68 = DAT_002b5b64" (identifier "local_68") (= "=") (identifier "DAT_002b5b64")) (; ";")) (expression_statement "iVar10 = DAT_002b5b64;" (assignment_expression "iVar10 = DAT_002b5b64" (identifier "iVar10") (= "=") (identifier "DAT_002b5b64")) (; ";")) (if_statement "if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;" (if "if") (parenthesized_expression "(*(int *)(DAT_002b5af8 + 8) < 1)" (( "(") (binary_expression "*(int *)(DAT_002b5af8 + 8) < 1" (pointer_expression "*(int *)(DAT_002b5af8 + 8)" (* "*") (cast_expression "(int *)(DAT_002b5af8 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5af8 + 8)" (( "(") (binary_expression "DAT_002b5af8 + 8" (identifier "DAT_002b5af8") (+ "+") (number_literal "8")) () ")")))) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00152b30;" (goto "goto") (statement_identifier "LAB_00152b30") (; ";"))) (expression_statement "lVar25 = DAT_002b5af8[9];" (assignment_expression "lVar25 = DAT_002b5af8[9]" (identifier "lVar25") (= "=") (subscript_expression "DAT_002b5af8[9]" (identifier "DAT_002b5af8") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "lVar11 = 0;" (assignment_expression "lVar11 = 0" (identifier "lVar11") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar27 = 0;" (assignment_expression "iVar27 = 0" (identifier "iVar27") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (do_statement "do {\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  } while ((int)lVar11 < *(int *)(puVar29 + 8));" (do "do") (compound_statement "{\n    lVar17 = lVar11 * 0x28;\n    puVar26 = (undefined8 *)(lVar25 + lVar17);\n    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }\n    pvVar12 = DAT_002b5b80;\n    puVar19 = DAT_002b5b58;\n    lVar11 = lVar11 + 1;\n  }" ({ "{") (expression_statement "lVar17 = lVar11 * 0x28;" (assignment_expression "lVar17 = lVar11 * 0x28" (identifier "lVar17") (= "=") (binary_expression "lVar11 * 0x28" (identifier "lVar11") (* "*") (number_literal "0x28"))) (; ";")) (expression_statement "puVar26 = (undefined8 *)(lVar25 + lVar17);" (assignment_expression "puVar26 = (undefined8 *)(lVar25 + lVar17)" (identifier "puVar26") (= "=") (cast_expression "(undefined8 *)(lVar25 + lVar17)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + lVar17)" (( "(") (binary_expression "lVar25 + lVar17" (identifier "lVar25") (+ "+") (identifier "lVar17")) () ")")))) (; ";")) (if_statement "if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')) {\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }\n    else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" (if "if") (parenthesized_expression "((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0'))" (( "(") (binary_expression "(*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&\n       (*(char *)((long)puVar26 + 0x24) == '\0')" (parenthesized_expression "(*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0)" (( "(") (binary_expression "*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0" (pointer_expression "*(long *)((long)DAT_002b5b80 + lVar11 * 8)" (* "*") (cast_expression "(long *)((long)DAT_002b5b80 + lVar11 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)DAT_002b5b80 + lVar11 * 8)" (( "(") (binary_expression "(long)DAT_002b5b80 + lVar11 * 8" (cast_expression "(long)DAT_002b5b80" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "DAT_002b5b80")) (+ "+") (binary_expression "lVar11 * 8" (identifier "lVar11") (* "*") (number_literal "8"))) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)((long)puVar26 + 0x24) == '\0')" (( "(") (binary_expression "*(char *)((long)puVar26 + 0x24) == '\0'" (pointer_expression "*(char *)((long)puVar26 + 0x24)" (* "*") (cast_expression "(char *)((long)puVar26 + 0x24)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar26 + 0x24)" (( "(") (binary_expression "(long)puVar26 + 0x24" (cast_expression "(long)puVar26" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar26")) (+ "+") (number_literal "0x24")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n    }" ({ "{") (expression_statement "lVar25 = puVar29[9];" (assignment_expression "lVar25 = puVar29[9]" (identifier "lVar25") (= "=") (subscript_expression "puVar29[9]" (identifier "puVar29") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar26 = (undefined8 *)(lVar17 + lVar25);" (assignment_expression "puVar26 = (undefined8 *)(lVar17 + lVar25)" (identifier "puVar26") (= "=") (cast_expression "(undefined8 *)(lVar17 + lVar25)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + lVar25)" (( "(") (binary_expression "lVar17 + lVar25" (identifier "lVar17") (+ "+") (identifier "lVar25")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" (else "else") (compound_statement "{\n      iVar10 = *(int *)(puVar26 + 3);\n      if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }\n      lVar25 = puVar29[9];\n      puVar26 = (undefined8 *)(lVar17 + lVar25);\n      pcVar14 = (char *)puVar26[2];\n      if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }\n      sVar13 = strlen(pcVar14);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" ({ "{") (expression_statement "iVar10 = *(int *)(puVar26 + 3);" (assignment_expression "iVar10 = *(int *)(puVar26 + 3)" (identifier "iVar10") (= "=") (pointer_expression "*(int *)(puVar26 + 3)" (* "*") (cast_expression "(int *)(puVar26 + 3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar26 + 3)" (( "(") (binary_expression "puVar26 + 3" (identifier "puVar26") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (if_statement "if (iVar10 != -1) {\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }" (if "if") (parenthesized_expression "(iVar10 != -1)" (( "(") (binary_expression "iVar10 != -1" (identifier "iVar10") (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n        iVar35 = iVar10 - local_68;\n        piVar23 = DAT_002b5b58 + iVar35;\n        if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }\n        *piVar23 = (int)lVar11;\n      }" ({ "{") (expression_statement "iVar35 = iVar10 - local_68;" (assignment_expression "iVar35 = iVar10 - local_68" (identifier "iVar35") (= "=") (binary_expression "iVar10 - local_68" (identifier "iVar10") (- "-") (identifier "local_68"))) (; ";")) (expression_statement "piVar23 = DAT_002b5b58 + iVar35;" (assignment_expression "piVar23 = DAT_002b5b58 + iVar35" (identifier "piVar23") (= "=") (binary_expression "DAT_002b5b58 + iVar35" (identifier "DAT_002b5b58") (+ "+") (identifier "iVar35"))) (; ";")) (if_statement "if (*piVar23 != -1) {\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }" (if "if") (parenthesized_expression "(*piVar23 != -1)" (( "(") (binary_expression "*piVar23 != -1" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n          uVar16 = *puVar26;\n          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);\n          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);\n          FUN_00129380(uVar20,iVar10,uVar16,uVar21);\n          local_68 = DAT_002b5b64;\n          piVar23 = DAT_002b5b58 + iVar35;\n          puVar29 = DAT_002b5af8;\n        }" ({ "{") (expression_statement "uVar16 = *puVar26;" (assignment_expression "uVar16 = *puVar26" (identifier "uVar16") (= "=") (pointer_expression "*puVar26" (* "*") (identifier "puVar26"))) (; ";")) (expression_statement "uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);" (assignment_expression "uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28)" (identifier "uVar21") (= "=") (pointer_expression "*(undefined8 *)(lVar25 + (long)*piVar23 * 0x28)" (* "*") (cast_expression "(undefined8 *)(lVar25 + (long)*piVar23 * 0x28)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + (long)*piVar23 * 0x28)" (( "(") (binary_expression "lVar25 + (long)*piVar23 * 0x28" (identifier "lVar25") (+ "+") (binary_expression "(long)*piVar23 * 0x28" (cast_expression "(long)*piVar23" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (* "*") (number_literal "0x28"))) () ")"))))) (; ";")) (expression_statement "uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);" (assignment_expression "uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" (identifier "uVar20") (= "=") (call_expression "dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" (identifier "dcgettext") (argument_list "(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%X%P: error: ordinal used twice: %d (%s vs %s)\n"" (" """) (string_content "%X%P: error: ordinal used twice: %d (%s vs %s)") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129380(uVar20,iVar10,uVar16,uVar21);" (call_expression "FUN_00129380(uVar20,iVar10,uVar16,uVar21)" (identifier "FUN_00129380") (argument_list "(uVar20,iVar10,uVar16,uVar21)" (( "(") (identifier "uVar20") (, ",") (identifier "iVar10") (, ",") (identifier "uVar16") (, ",") (identifier "uVar21") () ")"))) (; ";")) (expression_statement "local_68 = DAT_002b5b64;" (assignment_expression "local_68 = DAT_002b5b64" (identifier "local_68") (= "=") (identifier "DAT_002b5b64")) (; ";")) (expression_statement "piVar23 = DAT_002b5b58 + iVar35;" (assignment_expression "piVar23 = DAT_002b5b58 + iVar35" (identifier "piVar23") (= "=") (binary_expression "DAT_002b5b58 + iVar35" (identifier "DAT_002b5b58") (+ "+") (identifier "iVar35"))) (; ";")) (expression_statement "puVar29 = DAT_002b5af8;" (assignment_expression "puVar29 = DAT_002b5af8" (identifier "puVar29") (= "=") (identifier "DAT_002b5af8")) (; ";")) (} "}"))) (expression_statement "*piVar23 = (int)lVar11;" (assignment_expression "*piVar23 = (int)lVar11" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (cast_expression "(int)lVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar11"))) (; ";")) (} "}"))) (expression_statement "lVar25 = puVar29[9];" (assignment_expression "lVar25 = puVar29[9]" (identifier "lVar25") (= "=") (subscript_expression "puVar29[9]" (identifier "puVar29") ([ "[") (number_literal "9") (] "]"))) (; ";")) (expression_statement "puVar26 = (undefined8 *)(lVar17 + lVar25);" (assignment_expression "puVar26 = (undefined8 *)(lVar17 + lVar25)" (identifier "puVar26") (= "=") (cast_expression "(undefined8 *)(lVar17 + lVar25)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar17 + lVar25)" (( "(") (binary_expression "lVar17 + lVar25" (identifier "lVar17") (+ "+") (identifier "lVar25")) () ")")))) (; ";")) (expression_statement "pcVar14 = (char *)puVar26[2];" (assignment_expression "pcVar14 = (char *)puVar26[2]" (identifier "pcVar14") (= "=") (cast_expression "(char *)puVar26[2]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar26[2]" (identifier "puVar26") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (pcVar14 == (char *)0x0) {\n        pcVar14 = (char *)*puVar26;\n      }" (if "if") (parenthesized_expression "(pcVar14 == (char *)0x0)" (( "(") (binary_expression "pcVar14 == (char *)0x0" (identifier "pcVar14") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        pcVar14 = (char *)*puVar26;\n      }" ({ "{") (expression_statement "pcVar14 = (char *)*puVar26;" (assignment_expression "pcVar14 = (char *)*puVar26" (identifier "pcVar14") (= "=") (cast_expression "(char *)*puVar26" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar26" (* "*") (identifier "puVar26")))) (; ";")) (} "}"))) (expression_statement "sVar13 = strlen(pcVar14);" (assignment_expression "sVar13 = strlen(pcVar14)" (identifier "sVar13") (= "=") (call_expression "strlen(pcVar14)" (identifier "strlen") (argument_list "(pcVar14)" (( "(") (identifier "pcVar14") () ")")))) (; ";")) (expression_statement "iVar27 = iVar27 + 1 + (int)sVar13;" (assignment_expression "iVar27 = iVar27 + 1 + (int)sVar13" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1 + (int)sVar13" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (+ "+") (cast_expression "(int)sVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar13")))) (; ";")) (} "}")))) (if_statement "if (*(char *)((long)puVar26 + 0x24) != '\0') {\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" (if "if") (parenthesized_expression "(*(char *)((long)puVar26 + 0x24) != '\0')" (( "(") (binary_expression "*(char *)((long)puVar26 + 0x24) != '\0'" (pointer_expression "*(char *)((long)puVar26 + 0x24)" (* "*") (cast_expression "(char *)((long)puVar26 + 0x24)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar26 + 0x24)" (( "(") (binary_expression "(long)puVar26 + 0x24" (cast_expression "(long)puVar26" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar26")) (+ "+") (number_literal "0x24")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      sVar13 = strlen((char *)puVar26[1]);\n      iVar27 = iVar27 + 1 + (int)sVar13;\n    }" ({ "{") (expression_statement "sVar13 = strlen((char *)puVar26[1]);" (assignment_expression "sVar13 = strlen((char *)puVar26[1])" (identifier "sVar13") (= "=") (call_expression "strlen((char *)puVar26[1])" (identifier "strlen") (argument_list "((char *)puVar26[1])" (( "(") (cast_expression "(char *)puVar26[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar26[1]" (identifier "puVar26") ([ "[") (number_literal "1") (] "]"))) () ")")))) (; ";")) (expression_statement "iVar27 = iVar27 + 1 + (int)sVar13;" (assignment_expression "iVar27 = iVar27 + 1 + (int)sVar13" (identifier "iVar27") (= "=") (binary_expression "iVar27 + 1 + (int)sVar13" (binary_expression "iVar27 + 1" (identifier "iVar27") (+ "+") (number_literal "1")) (+ "+") (cast_expression "(int)sVar13" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar13")))) (; ";")) (} "}"))) (expression_statement "pvVar12 = DAT_002b5b80;" (assignment_expression "pvVar12 = DAT_002b5b80" (identifier "pvVar12") (= "=") (identifier "DAT_002b5b80")) (; ";")) (expression_statement "puVar19 = DAT_002b5b58;" (assignment_expression "puVar19 = DAT_002b5b58" (identifier "puVar19") (= "=") (identifier "DAT_002b5b58")) (; ";")) (expression_statement "lVar11 = lVar11 + 1;" (assignment_expression "lVar11 = lVar11 + 1" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 1" (identifier "lVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((int)lVar11 < *(int *)(puVar29 + 8))" (( "(") (binary_expression "(int)lVar11 < *(int *)(puVar29 + 8)" (cast_expression "(int)lVar11" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar11")) (< "<") (pointer_expression "*(int *)(puVar29 + 8)" (* "*") (cast_expression "(int *)(puVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 8)" (( "(") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) () ")"))))) () ")")) (; ";")) (expression_statement "iVar10 = local_68;" (assignment_expression "iVar10 = local_68" (identifier "iVar10") (= "=") (identifier "local_68")) (; ";")) (if_statement "if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;" (if "if") (parenthesized_expression "(*(int *)(puVar29 + 8) < 1)" (( "(") (binary_expression "*(int *)(puVar29 + 8) < 1" (pointer_expression "*(int *)(puVar29 + 8)" (* "*") (cast_expression "(int *)(puVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 8)" (( "(") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) () ")")))) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00152b30;" (goto "goto") (statement_identifier "LAB_00152b30") (; ";"))) (expression_statement "piVar23 = (int *)(lVar25 + 0x18);" (assignment_expression "piVar23 = (int *)(lVar25 + 0x18)" (identifier "piVar23") (= "=") (cast_expression "(int *)(lVar25 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar25 + 0x18)" (( "(") (binary_expression "lVar25 + 0x18" (identifier "lVar25") (+ "+") (number_literal "0x18")) () ")")))) (; ";")) (expression_statement "lVar25 = 0;" (assignment_expression "lVar25 = 0" (identifier "lVar25") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }\n    lVar25 = lVar25 + 1;\n    piVar23 = piVar23 + 10;\n    if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }\n  }" ({ "{") (if_statement "if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }\n    else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }" (if "if") (parenthesized_expression "(*(long *)((long)pvVar12 + lVar25 * 8) == 0)" (( "(") (binary_expression "*(long *)((long)pvVar12 + lVar25 * 8) == 0" (pointer_expression "*(long *)((long)pvVar12 + lVar25 * 8)" (* "*") (cast_expression "(long *)((long)pvVar12 + lVar25 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)pvVar12 + lVar25 * 8)" (( "(") (binary_expression "(long)pvVar12 + lVar25 * 8" (cast_expression "(long)pvVar12" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pvVar12")) (+ "+") (binary_expression "lVar25 * 8" (identifier "lVar25") (* "*") (number_literal "8"))) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }\n    }" ({ "{") (if_statement "if ((char)piVar23[3] != '\0') {\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }" (if "if") (parenthesized_expression "((char)piVar23[3] != '\0')" (( "(") (binary_expression "(char)piVar23[3] != '\0'" (cast_expression "(char)piVar23[3]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar23[3]" (identifier "piVar23") ([ "[") (number_literal "3") (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        iVar35 = *piVar23;\n        goto joined_r0x00152c53;\n      }" ({ "{") (expression_statement "iVar35 = *piVar23;" (assignment_expression "iVar35 = *piVar23" (identifier "iVar35") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (goto_statement "goto joined_r0x00152c53;" (goto "goto") (statement_identifier "joined_r0x00152c53") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }" (else "else") (compound_statement "{\n      iVar35 = *piVar23;\njoined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }\n    }" ({ "{") (expression_statement "iVar35 = *piVar23;" (assignment_expression "iVar35 = *piVar23" (identifier "iVar35") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (labeled_statement "joined_r0x00152c53:\n      if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }" (statement_identifier "joined_r0x00152c53") (: ":") (if_statement "if (iVar35 == -1) {\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }" (if "if") (parenthesized_expression "(iVar35 == -1)" (( "(") (binary_expression "iVar35 == -1" (identifier "iVar35") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        piVar32 = puVar19 + (iVar10 - local_68);\n        if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }\n        *piVar32 = (int)lVar25;\n        *piVar23 = iVar10;\n      }" ({ "{") (expression_statement "piVar32 = puVar19 + (iVar10 - local_68);" (assignment_expression "piVar32 = puVar19 + (iVar10 - local_68)" (identifier "piVar32") (= "=") (binary_expression "puVar19 + (iVar10 - local_68)" (identifier "puVar19") (+ "+") (parenthesized_expression "(iVar10 - local_68)" (( "(") (binary_expression "iVar10 - local_68" (identifier "iVar10") (- "-") (identifier "local_68")) () ")")))) (; ";")) (if_statement "if (*piVar32 != -1) {\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }" (if "if") (parenthesized_expression "(*piVar32 != -1)" (( "(") (binary_expression "*piVar32 != -1" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (!= "!=") (number_literal "-1")) () ")")) (compound_statement "{\n          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);\n          do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);\n        }" ({ "{") (expression_statement "piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);" (assignment_expression "piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68)" (identifier "piVar8") (= "=") (binary_expression "puVar19 + (long)iVar10 + (1 - (long)local_68)" (binary_expression "puVar19 + (long)iVar10" (identifier "puVar19") (+ "+") (cast_expression "(long)iVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar10"))) (+ "+") (parenthesized_expression "(1 - (long)local_68)" (( "(") (binary_expression "1 - (long)local_68" (number_literal "1") (- "-") (cast_expression "(long)local_68" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_68"))) () ")")))) (; ";")) (do_statement "do {\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          } while (*piVar32 != -1);" (do "do") (compound_statement "{\n            piVar32 = piVar8;\n            iVar10 = iVar10 + 1;\n            piVar8 = piVar32 + 1;\n          }" ({ "{") (expression_statement "piVar32 = piVar8;" (assignment_expression "piVar32 = piVar8" (identifier "piVar32") (= "=") (identifier "piVar8")) (; ";")) (expression_statement "iVar10 = iVar10 + 1;" (assignment_expression "iVar10 = iVar10 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar10 + 1" (identifier "iVar10") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar8 = piVar32 + 1;" (assignment_expression "piVar8 = piVar32 + 1" (identifier "piVar8") (= "=") (binary_expression "piVar32 + 1" (identifier "piVar32") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar32 != -1)" (( "(") (binary_expression "*piVar32 != -1" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (!= "!=") (number_literal "-1")) () ")")) (; ";")) (} "}"))) (expression_statement "*piVar32 = (int)lVar25;" (assignment_expression "*piVar32 = (int)lVar25" (pointer_expression "*piVar32" (* "*") (identifier "piVar32")) (= "=") (cast_expression "(int)lVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar25"))) (; ";")) (expression_statement "*piVar23 = iVar10;" (assignment_expression "*piVar23 = iVar10" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (= "=") (identifier "iVar10")) (; ";")) (} "}")))) (} "}")))) (expression_statement "lVar25 = lVar25 + 1;" (assignment_expression "lVar25 = lVar25 + 1" (identifier "lVar25") (= "=") (binary_expression "lVar25 + 1" (identifier "lVar25") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar23 = piVar23 + 10;" (assignment_expression "piVar23 = piVar23 + 10" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 10" (identifier "piVar23") (+ "+") (number_literal "10"))) (; ";")) (if_statement "if (*(int *)(puVar29 + 8) <= (int)lVar25) {\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }" (if "if") (parenthesized_expression "(*(int *)(puVar29 + 8) <= (int)lVar25)" (( "(") (binary_expression "*(int *)(puVar29 + 8) <= (int)lVar25" (pointer_expression "*(int *)(puVar29 + 8)" (* "*") (cast_expression "(int *)(puVar29 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar29 + 8)" (( "(") (binary_expression "puVar29 + 8" (identifier "puVar29") (+ "+") (number_literal "8")) () ")")))) (<= "<=") (cast_expression "(int)lVar25" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar25"))) () ")")) (compound_statement "{\nLAB_00152b30:\n      iVar35 = DAT_002b5b60;\n      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }\n      iVar10 = DAT_002b5b74;\n      sVar13 = strlen(DAT_002b5b68);\n      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);\n      FUN_0014d1c0(1);\n      FUN_00152090(DAT_002b5bd0);\n      return;\n    }" ({ "{") (labeled_statement "LAB_00152b30:\n      iVar35 = DAT_002b5b60;" (statement_identifier "LAB_00152b30") (: ":") (expression_statement "iVar35 = DAT_002b5b60;" (assignment_expression "iVar35 = DAT_002b5b60" (identifier "iVar35") (= "=") (identifier "DAT_002b5b60")) (; ";"))) (if_statement "if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }" (if "if") (parenthesized_expression "((0xffff < DAT_002b5b60) || (0xffff < iVar10))" (( "(") (binary_expression "(0xffff < DAT_002b5b60) || (0xffff < iVar10)" (parenthesized_expression "(0xffff < DAT_002b5b60)" (( "(") (binary_expression "0xffff < DAT_002b5b60" (number_literal "0xffff") (< "<") (identifier "DAT_002b5b60")) () ")")) (|| "||") (parenthesized_expression "(0xffff < iVar10)" (( "(") (binary_expression "0xffff < iVar10" (number_literal "0xffff") (< "<") (identifier "iVar10")) () ")"))) () ")")) (compound_statement "{\n        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);\n        if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }\n        FUN_00129380(uVar16,iVar10);\n      }" ({ "{") (expression_statement "uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);" (assignment_expression "uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5)" (identifier "uVar16") (= "=") (call_expression "dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5)" (identifier "dcgettext") (argument_list "(0,"%X%P: error: export ordinal too large: %d\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%X%P: error: export ordinal too large: %d\n"" (" """) (string_content "%X%P: error: export ordinal too large: %d") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (if_statement "if (iVar10 <= iVar35) {\n          iVar10 = iVar35;\n        }" (if "if") (parenthesized_expression "(iVar10 <= iVar35)" (( "(") (binary_expression "iVar10 <= iVar35" (identifier "iVar10") (<= "<=") (identifier "iVar35")) () ")")) (compound_statement "{\n          iVar10 = iVar35;\n        }" ({ "{") (expression_statement "iVar10 = iVar35;" (assignment_expression "iVar10 = iVar35" (identifier "iVar10") (= "=") (identifier "iVar35")) (; ";")) (} "}"))) (expression_statement "FUN_00129380(uVar16,iVar10);" (call_expression "FUN_00129380(uVar16,iVar10)" (identifier "FUN_00129380") (argument_list "(uVar16,iVar10)" (( "(") (identifier "uVar16") (, ",") (identifier "iVar10") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar10 = DAT_002b5b74;" (assignment_expression "iVar10 = DAT_002b5b74" (identifier "iVar10") (= "=") (identifier "DAT_002b5b74")) (; ";")) (expression_statement "sVar13 = strlen(DAT_002b5b68);" (assignment_expression "sVar13 = strlen(DAT_002b5b68)" (identifier "sVar13") (= "=") (call_expression "strlen(DAT_002b5b68)" (identifier "strlen") (argument_list "(DAT_002b5b68)" (( "(") (identifier "DAT_002b5b68") () ")")))) (; ";")) (expression_statement "DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);" (assignment_expression "DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" (identifier "DAT_002b5ba8") (= "=") (binary_expression "sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" (binary_expression "sVar13 + 1" (identifier "sVar13") (+ "+") (number_literal "1")) (+ "+") (cast_expression "(long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4)" (( "(") (binary_expression "iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4" (binary_expression "iVar27 + iVar10 * 6 + 0x28" (binary_expression "iVar27 + iVar10 * 6" (identifier "iVar27") (+ "+") (binary_expression "iVar10 * 6" (identifier "iVar10") (* "*") (number_literal "6"))) (+ "+") (number_literal "0x28")) (+ "+") (binary_expression "DAT_002b5b7c * 4" (identifier "DAT_002b5b7c") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "FUN_0014d1c0(1);" (call_expression "FUN_0014d1c0(1)" (identifier "FUN_0014d1c0") (argument_list "(1)" (( "(") (number_literal "1") () ")"))) (; ";")) (expression_statement "FUN_00152090(DAT_002b5bd0);" (call_expression "FUN_00152090(DAT_002b5bd0)" (identifier "FUN_00152090") (argument_list "(DAT_002b5bd0)" (( "(") (identifier "DAT_002b5bd0") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (labeled_statement "code_r0x001521e2:\n  plVar24 = (long *)*plVar24;" (statement_identifier "code_r0x001521e2") (: ":") (expression_statement "plVar24 = (long *)*plVar24;" (assignment_expression "plVar24 = (long *)*plVar24" (identifier "plVar24") (= "=") (cast_expression "(long *)*plVar24" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar24" (* "*") (identifier "plVar24")))) (; ";"))) (expression_statement "**(uint **)(lVar25 + 0x28) = *puVar1;" (assignment_expression "**(uint **)(lVar25 + 0x28) = *puVar1" (pointer_expression "**(uint **)(lVar25 + 0x28)" (* "*") (pointer_expression "*(uint **)(lVar25 + 0x28)" (* "*") (cast_expression "(uint **)(lVar25 + 0x28)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar25 + 0x28)" (( "(") (binary_expression "lVar25 + 0x28" (identifier "lVar25") (+ "+") (number_literal "0x28")) () ")"))))) (= "=") (pointer_expression "*puVar1" (* "*") (identifier "puVar1"))) (; ";")) (goto_statement "goto joined_r0x001521ab;" (goto "goto") (statement_identifier "joined_r0x001521ab") (; ";")) (} "}")))

void function_1(type_1 *abfd,type_2 *info)

{
  type_3 *puVar1;
  type_4 **var_31;
  type_5 *pdVar3;
  char var_34;
  type_1 *var_5;
  type_6 uVar6;
  int iVar7;
  char cVar8;
  char cVar9;
  char cVar10;
  type_7 uVar11;
  type_8 **ppbVar12;
  int *piVar13;
  type_9 var_14;
  int var_18;
  long var_7;
  char *var_38;
  type_4 *pbVar18;
  size_t var_26;
  char *var_36;
  type_10 *pdVar21;
  char *var_63;
  int *var_66;
  type_5 *var_45;
  long var_50;
  int *var_67;
  type_8 *pbVar27;
  type_3 var_46;
  type_11 *var_12;
  type_5 *var_49;
  int var_42;
  type_10 *pdVar32;
  type_9 *var_51;
  int *var_70;
  type_9 *var_23;
  type_9 *var_52;
  type_3 var_47;
  int var_44;
  type_4 **var_20;
  bool var_24;
  bool var_53;
  type_9 var_59;
  type_3 var_68;
  int var_30;
  
  var_59 = 0;
  var_1(abfd->xvec->name);
  var_2(abfd);
  if (var_3 == (type_10 *)0x0) {
    var_3 = var_4();
  }
  for (var_5 = info->input_bfds; var_5 != (type_1 *)0x0; var_5 = (var_5->link).next) {
    var_7 = var_6(var_5);
    if (var_7 != 0) {
      uVar6 = *(type_6 *)(var_7 + 0x38);
      var_38 = (char *)var_8(uVar6);
      var_9(var_5,var_7,var_38,0);
      var_10(var_3,var_38,(int)uVar6);
      var_11(var_38);
    }
  }
  var_12 = var_3->aligncomms;
joined_r0x001521ab:
  if (var_12 != (type_11 *)0x0) {
    do {
      var_7 = var_13(info->hash,var_12->symbol_name,0,0);
      if ((var_7 != 0) && (*(char *)(var_7 + 0x18) == '\x05')) {
        puVar1 = &var_12->alignment;
        if (**(type_3 **)(var_7 + 0x28) < *puVar1) goto code_r0x001521e2;
      }
      var_12 = var_12->next;
      if (var_12 == (type_11 *)0x0) break;
    } while( true );
  }
  var_14 = *(type_9 *)info;
  if ((var_14 & 2) == 0) {
    if (var_3->num_exports != 0) {
      if (var_15 != 0) goto LAB_00152907;
      var_18 = var_3->num_exports;
      if (var_16 != 0) goto LAB_001523cf;
      goto LAB_00152938;
    }
    pdVar32 = var_3;
    if ((var_15 != 0) && (var_17 == 0)) goto LAB_0015222e;
LAB_00152955:
    if ((var_14 & 1) == 0) {
      return;
    }
  }
  else {
    if ((var_15 != 0) || (var_18 = var_3->num_exports, var_18 == 0)) {
LAB_00152907:
      if (var_17 == 0) {
LAB_0015222e:
        var_5 = info->input_bfds;
        while( true ) {
          if (var_5 == (type_1 *)0x0) goto LAB_001523aa;
          var_18 = var_19(var_5);
          if (var_18 == 0) break;
          var_20 = var_5->outsymbols;
          if (0 < (int)var_5->symcount) {
            var_31 = var_20 + (type_13)(var_5->symcount - 1) + 1;
            do {
              pbVar18 = *var_20;
              if ((pbVar18->section != (type_8 *)(var_21 + 0x118)) &&
                 (((pbVar18->flags & 2) != 0 || (pbVar18->flags == 0)))) {
                var_53 = link_info.version_info == (type_12 *)0x0;
                if (!var_53) {
                  var_18 = var_22();
                  var_53 = var_18 == 0;
                  if (!var_53) goto LAB_00152388;
                  pbVar18 = *var_20;
                }
                var_24 = false;
                pdVar32 = (type_10 *)pbVar18->name;
                var_7 = 6;
                pdVar21 = pdVar32;
                var_23 = (type_9 *)0x29f1f4;
                do {
                  if (var_7 == 0) break;
                  var_7 = var_7 + -1;
                  var_24 = *(type_9 *)&pdVar21->name < *var_23;
                  var_53 = *(type_9 *)&pdVar21->name == *var_23;
                  pdVar21 = (type_10 *)((long)pdVar21 + (type_13)var_59 * -2 + 1);
                  var_23 = var_23 + (type_13)var_59 * -2 + 1;
                } while (var_53);
                if ((!var_24 && !var_53) != var_24) {
                  var_26 = var_25((char *)pdVar32);
                  var_38 = (char *)var_8(var_26 + 7);
                  var_27(var_38,"%s%s","__imp_",pdVar32);
                  var_7 = var_13(info->hash,var_38,0,0);
                  var_11(var_38);
                  if ((var_7 == 0) || (*(char *)(var_7 + 0x18) != '\x03')) {
                    if (pep_details->underscored != 0) {
                      pdVar32 = (type_10 *)
                                ((long)&pdVar32->name + (type_13)(*(char *)&pdVar32->name == '_'));
                    }
                    var_18 = var_28(var_5,(type_10 *)&var_3->num_exports,
                                         (char *)&var_3->exports,pdVar32);
                    if (var_18 != 0) {
                      var_30 = 0;
                      var_45 = var_29(var_3,(char *)pdVar32,(char *)0x0,-1,
                                                    (char *)0x0,&var_30);
                      if (var_30 == 0) {
                        var_45->flag_data = ((type_9)((*var_20)->flags >> 3) ^ 1) & 1;
                      }
                    }
                  }
                }
              }
LAB_00152388:
              var_20 = var_20 + 1;
            } while (var_31 != var_20);
          }
          var_5 = (var_5->link).next;
        }
        var_38 = (char *)var_32(0,"%F%P: %pB: could not read symbols: %E\n",5);
        var_33(var_38);
        var_18 = var_3->num_exports;
        pdVar32 = var_3;
        goto joined_r0x00152ec1;
      }
LAB_001523aa:
      var_18 = var_3->num_exports;
      pdVar32 = var_3;
      if (var_18 != 0) goto LAB_001523bf;
LAB_00152950:
      var_14 = *(type_9 *)info;
      goto LAB_00152955;
    }
LAB_001523bf:
    if (var_16 == 0) {
LAB_00152938:
      var_46 = var_3->num_exports;
      pdVar32 = var_3;
    }
    else {
LAB_001523cf:
      var_7 = 0;
      var_53 = false;
      pdVar32 = var_3;
      if (var_18 < 1) goto LAB_00152938;
      do {
        var_38 = pdVar32->exports[var_7].name;
        var_34 = *var_38;
        if ((var_34 != '?') && (var_36 = var_35(var_38,0x40), var_36 != (char *)0x0)) {
          var_38 = (char *)var_37(var_38 + (var_34 == '@'));
          var_36 = var_39(var_38,0x40);
          if (var_36 == (char *)0x0) {
            var_36 = var_3->exports[var_7].name;
            var_63 = (char *)var_32(0,"%X%P: cannot export %s: invalid export name\n",5);
            var_33(var_63,var_36);
          }
          else {
            *var_36 = '\0';
          }
          pdVar32 = var_3;
          var_53 = true;
          var_3->exports[var_7].name = var_38;
        }
        var_46 = pdVar32->num_exports;
        var_7 = var_7 + 1;
      } while ((int)var_7 < (int)var_46);
      if (var_53) {
        var_40(pdVar32->exports,(long)(int)var_46,0x28,pe_export_sort);
        goto LAB_00152938;
      }
    }
    if (var_41 == 0) {
LAB_001525b0:
      var_45 = pdVar32->exports;
      if ((int)var_46 < 1) goto LAB_00152f50;
      var_18 = 0;
      var_42 = 0;
      var_49 = var_45;
      do {
        while (var_42 != 0) {
          var_38 = var_49->name;
          var_44 = var_43(var_38,var_49[-1].name);
          if (var_44 != 0) break;
          pdVar3 = var_45 + (long)var_18 + -1;
          var_46 = pdVar3->ordinal;
          if (((var_46 == 0xffffffff) || (var_47 = var_49->ordinal, var_47 == 0xffffffff)) ||
             (var_46 == var_47)) {
            if (var_48 != 0) {
              var_38 = (char *)var_32(0,"%P: warning, duplicate EXPORT: %s\n",5);
              var_33(var_38);
              var_38 = var_49->name;
            }
LAB_00152cc8:
            var_47 = var_49->ordinal;
            if (var_47 != 0xffffffff) goto LAB_00152636;
          }
          else {
            if (var_48 != 0) {
              var_38 = pdVar3->name;
              var_36 = (char *)var_32(0,
                                          "%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n"
                                          ,5);
              var_33(var_36,var_38,(type_13)var_46,var_47);
              var_38 = var_49->name;
              goto LAB_00152cc8;
            }
LAB_00152636:
            pdVar3->ordinal = var_47;
          }
          pdVar3->flag_private = pdVar3->flag_private | var_49->flag_private;
          pdVar3->flag_constant = pdVar3->flag_constant | var_49->flag_constant;
          pdVar3->flag_noname = pdVar3->flag_noname | var_49->flag_noname;
          pdVar3->flag_data = pdVar3->flag_data | var_49->flag_data;
          if (var_38 != (char *)0x0) {
            var_11(var_38);
          }
          if (var_49->internal_name != (char *)0x0) {
            var_11(var_49->internal_name);
          }
          if (var_49->its_name != (char *)0x0) {
            var_11(var_49->its_name);
          }
          var_42 = var_42 + 1;
          var_49 = var_49 + 1;
          pdVar32 = var_3;
          if (var_3->num_exports <= var_42) goto LAB_001526e4;
        }
        if (var_18 != var_42) {
          var_38 = var_49->internal_name;
          pdVar3 = var_45 + var_18;
          pdVar3->name = var_49->name;
          pdVar3->internal_name = var_38;
          var_44 = var_49->ordinal;
          iVar7 = var_49->hint;
          pdVar3->its_name = var_49->its_name;
          pdVar3->ordinal = var_44;
          pdVar3->hint = iVar7;
          var_34 = var_49->flag_constant;
          cVar8 = var_49->flag_noname;
          cVar9 = var_49->flag_data;
          cVar10 = var_49->flag_forward;
          uVar11 = *(type_7 *)&var_49->field_0x25;
          pdVar3->flag_private = var_49->flag_private;
          pdVar3->flag_constant = var_34;
          pdVar3->flag_noname = cVar8;
          pdVar3->flag_data = cVar9;
          pdVar3->flag_forward = cVar10;
          *(type_7 *)&pdVar3->field_0x25 = uVar11;
        }
        var_18 = var_18 + 1;
        var_42 = var_42 + 1;
        var_49 = var_49 + 1;
      } while (var_42 < pdVar32->num_exports);
LAB_001526e4:
      var_7 = (long)var_18 << 3;
    }
    else {
      if (0 < (int)var_46) {
        var_53 = false;
        var_7 = 0;
        var_24 = true;
LAB_001524c9:
        do {
          var_50 = 6;
          var_23 = (type_9 *)pdVar32->exports[var_7].name;
          var_51 = var_23;
          var_52 = (type_9 *)0x29f1f4;
          do {
            if (var_50 == 0) break;
            var_50 = var_50 + -1;
            var_53 = *var_51 < *var_52;
            var_24 = *var_51 == *var_52;
            var_51 = var_51 + (type_13)var_59 * -2 + 1;
            var_52 = var_52 + (type_13)var_59 * -2 + 1;
          } while (var_24);
          if (((!var_53 && !var_24) == var_53) ||
             (var_38 = var_35((char *)var_23,0x40), var_38 == (char *)0x0)) {
LAB_001524b8:
            var_46 = pdVar32->num_exports;
            var_7 = var_7 + 1;
            var_47 = (type_3)var_7;
            var_53 = var_46 < var_47;
            var_24 = var_46 == var_47;
            if ((int)var_46 <= (int)var_47) goto LAB_001525b0;
            goto LAB_001524c9;
          }
          var_30 = 1;
          pdVar21 = (type_10 *)var_37(var_23 + (*var_23 == 0x40));
          var_38 = var_35((char *)pdVar21,0x40);
          pdVar32 = var_3;
          *var_38 = '\0';
          var_18 = var_28((type_1 *)0x0,(type_10 *)&pdVar32->num_exports,
                               (char *)&pdVar32->exports,pdVar21);
          pdVar32 = var_3;
          if (var_18 != 0) {
            var_29(var_3,(char *)pdVar21,
                                var_3->exports[var_7].internal_name,-1,(char *)0x0,&var_30);
            pdVar32 = var_3;
          }
          var_3 = pdVar32;
          if (var_30 == 0) goto LAB_001524b8;
          var_7 = var_7 + 1;
          var_11(pdVar21);
          var_46 = var_3->num_exports;
          var_47 = (type_3)var_7;
          var_53 = var_46 < var_47;
          var_24 = var_46 == var_47;
          pdVar32 = var_3;
          if ((int)var_46 <= (int)var_47) goto LAB_001525b0;
        } while( true );
      }
LAB_00152f50:
      var_7 = 0;
      var_18 = 0;
    }
    pdVar32->num_exports = var_18;
    exported_symbol_offsets = (type_14 *)var_8(var_7);
    exported_symbol_sections = (type_8 **)var_8((long)var_3->num_exports << 3);
    pdVar32 = var_3;
    var_54(exported_symbol_sections,0,(long)var_3->num_exports << 3);
    var_18 = pdVar32->num_exports;
    var_60 = 0;
    var_61 = 0x10000;
    var_57 = 0;
    var_58 = 0;
    var_62 = 0;
    if (0 < var_18) {
      var_7 = 0;
      do {
        var_38 = pdVar32->exports[var_7].internal_name;
        var_55(var_38);
        var_26 = var_25(var_38);
        var_36 = (char *)var_8(var_26 + 2);
        if ((pep_details->underscored == 0) || (*var_38 == '@')) {
          var_56(var_36,var_38);
        }
        else {
          *var_36 = '_';
          var_56(var_36 + 1,var_38);
          var_63 = (char *)var_37(var_36);
          var_55(var_63);
        }
        var_50 = var_13(info->hash,var_36,0,0,1);
        pdVar32 = var_3;
        if (var_50 == 0) {
          var_38 = var_35(var_38,0x2e);
          if (var_38 != (char *)0x0) {
LAB_001528bb:
            pdVar32 = var_3;
            var_57 = var_57 + 1;
            var_45 = var_3->exports;
            if (var_45[var_7].flag_noname == '\0') {
              var_58 = var_58 + 1;
            }
            var_18 = var_45[var_7].ordinal;
            var_45[var_7].flag_forward = '\x01';
            goto joined_r0x001527c9;
          }
          var_63 = "%X%P: cannot export %s: symbol not found\n";
LAB_00152d02:
          var_38 = (char *)var_32(0,var_63,5);
          var_33(var_38);
          pdVar32 = var_3;
        }
        else {
          var_59 = *(type_9 *)(var_50 + 0x18);
          if ((var_59 - 3 & 0xfd) == 0) {
            var_57 = var_57 + 1;
            var_45 = var_3->exports;
            if (var_45[var_7].flag_noname == '\0') {
              var_58 = var_58 + 1;
            }
            pbVar27 = *(type_8 **)(var_50 + 0x28);
            if (var_59 != 3) {
              pbVar27 = *(type_8 **)&pbVar27->id;
            }
            exported_symbol_sections[var_7] = pbVar27;
            var_18 = var_45[var_7].ordinal;
joined_r0x001527c9:
            if (var_18 != -1) {
              if (var_60 < var_18) {
                var_60 = var_18;
              }
              if (var_18 < var_61) {
                var_61 = var_18;
              }
              var_62 = var_62 + 1;
            }
          }
          else {
            var_63 = var_35(var_38,0x2e);
            if (var_63 != (char *)0x0) goto LAB_001528bb;
            var_63 = "%X%P: cannot export %s: symbol not defined\n";
            if (var_59 == 1) goto LAB_00152d02;
            var_63 = (char *)var_32(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5
                                       );
            var_33(var_63,var_38,(type_13)var_59);
            pdVar32 = var_3;
          }
        }
        var_7 = var_7 + 1;
        var_11(var_36);
        var_18 = pdVar32->num_exports;
      } while ((int)var_7 < var_18);
    }
joined_r0x00152ec1:
    if (var_18 == 0) goto LAB_00152950;
  }
  var_64 = pdVar32->name;
  if (var_64 == (char *)0x0) {
    var_64 = abfd->filename;
    var_34 = *var_64;
    if (var_34 != '\0') {
      var_53 = false;
      var_38 = var_64;
      var_36 = var_64;
      do {
        var_38 = var_38 + 1;
        if (((type_9)(var_34 - 0x2fU) < 0x2e) &&
           ((~(type_3)(0x200000000801 >> (var_34 - 0x2fU & 0x3f)) & 1) == 0)) {
          var_53 = true;
          var_36 = var_38;
        }
        var_34 = *var_38;
      } while (var_34 != '\0');
      if (var_53) {
        var_64 = var_36;
      }
    }
  }
  if ((var_62 == 0) || (var_60 <= var_57)) {
    var_61 = 1;
    var_60 = var_57;
  }
  else {
    var_18 = (var_60 - var_57) + 1;
    if (var_18 < var_61) {
      var_61 = var_18;
    }
  }
  var_65 = (var_60 - var_61) + 1;
  var_66 = (int *)var_8((long)var_65 << 2);
  var_69 = var_66;
  if (0 < var_65) {
    var_67 = var_66 + (type_13)(var_65 - 1) + 1;
    do {
      *var_66 = -1;
      var_66 = var_66 + 1;
    } while (var_67 != var_66);
  }
  var_18 = 0;
  var_68 = var_61;
  var_46 = var_61;
  if (var_3->num_exports < 1) goto LAB_00152b30;
  var_45 = var_3->exports;
  var_7 = 0;
  var_18 = 0;
  pdVar32 = var_3;
  do {
    var_49 = var_45 + var_7;
    if ((exported_symbol_sections[var_7] == (type_8 *)0x0) && (var_49->flag_forward == '\0'))
    {
      var_45 = pdVar32->exports;
      var_49 = var_45 + var_7;
    }
    else {
      var_42 = var_49->ordinal;
      if (var_42 != -1) {
        var_44 = var_42 - var_68;
        var_66 = var_69 + var_44;
        if (*var_66 != -1) {
          var_38 = var_49->name;
          var_36 = var_45[*var_66].name;
          var_63 = (char *)var_32(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);
          var_33(var_63,var_42,var_38,var_36);
          var_68 = var_61;
          var_66 = var_69 + var_44;
          pdVar32 = var_3;
        }
        *var_66 = (int)var_7;
      }
      var_45 = pdVar32->exports;
      var_49 = var_45 + var_7;
      var_38 = var_49->its_name;
      if (var_38 == (char *)0x0) {
        var_38 = var_49->name;
      }
      var_26 = var_25(var_38);
      var_18 = var_18 + 1 + (int)var_26;
    }
    if (var_49->flag_forward != '\0') {
      var_26 = var_25(var_49->internal_name);
      var_18 = var_18 + 1 + (int)var_26;
    }
    ppbVar12 = exported_symbol_sections;
    var_66 = var_69;
    var_7 = var_7 + 1;
  } while ((int)var_7 < pdVar32->num_exports);
  var_46 = var_68;
  if (pdVar32->num_exports < 1) goto LAB_00152b30;
  var_67 = &var_45->ordinal;
  var_7 = 0;
  do {
    if (ppbVar12[var_7] == (type_8 *)0x0) {
      if (*(char *)(var_67 + 3) != '\0') {
        var_47 = *var_67;
        goto joined_r0x00152c53;
      }
    }
    else {
      var_47 = *var_67;
joined_r0x00152c53:
      if (var_47 == 0xffffffff) {
        var_70 = var_66 + (int)(var_46 - var_68);
        if (*var_70 != -1) {
          piVar13 = var_66 + (long)(int)var_46 + (1 - (long)(int)var_68);
          do {
            var_70 = piVar13;
            var_46 = var_46 + 1;
            piVar13 = var_70 + 1;
          } while (*var_70 != -1);
        }
        *var_70 = (int)var_7;
        *var_67 = var_46;
      }
    }
    var_7 = var_7 + 1;
    var_67 = var_67 + 10;
    if (pdVar32->num_exports <= (int)var_7) {
LAB_00152b30:
      var_42 = var_60;
      if ((0xffff < var_60) || (0xffff < (int)var_46)) {
        var_38 = (char *)var_32(0,"%X%P: error: export ordinal too large: %d\n",5);
        if ((int)var_46 <= var_42) {
          var_46 = var_42;
        }
        var_33(var_38,(type_13)var_46);
      }
      var_42 = var_58;
      var_26 = var_25(var_64);
      edata_sz = var_26 + 1 + (long)(var_18 + var_42 * 6 + 0x28 + var_65 * 4);
      var_71(1);
      var_2(filler_bfd);
      return;
    }
  } while( true );
code_r0x001521e2:
  var_12 = var_12->next;
  **(type_3 **)(var_7 + 0x28) = *puVar1;
  goto joined_r0x001521ab;
}


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

/* WARNING: Type propagation algorithm not settling */

void MASKED(undefined8 *param_1,byte *param_2)

{
  uint *puVar1;
  undefined8 *puVar2;
  long *plVar3;
  undefined4 *puVar4;
  char cVar5;
  ulong uVar6;
  long lVar7;
  int *piVar8;
  byte bVar9;
  int iVar10;
  long lVar11;
  void *pvVar12;
  size_t sVar13;
  char *pcVar14;
  char *pcVar15;
  undefined8 uVar16;
  long lVar17;
  char *pcVar18;
  undefined4 *puVar19;
  undefined8 uVar20;
  undefined8 uVar21;
  int iVar22;
  int *piVar23;
  long *plVar24;
  long lVar25;
  undefined8 *puVar26;
  int iVar27;
  byte *pbVar28;
  undefined8 *puVar29;
  uint uVar30;
  byte *pbVar31;
  int *piVar32;
  byte *pbVar33;
  uint uVar34;
  int iVar35;
  undefined8 *puVar36;
  bool bVar37;
  bool bVar38;
  byte bVar39;
  int local_68;
  int local_3c [3];
  
  bVar39 = 0;
  FUN_0014f0a0(*(undefined8 *)param_1[1]);
  FUN_00152090(param_1);
  if (DAT_002b5af8 == (undefined8 *)0x0) {
    DAT_002b5af8 = (undefined8 *)FUN_0014aee0();
  }
  for (lVar25 = *(long *)(param_2 + 0x60); lVar25 != 0; lVar25 = *(long *)(lVar25 + 0xf0)) {
    lVar11 = bfd_get_section_by_name(lVar25);
    if (lVar11 != 0) {
      uVar6 = *(ulong *)(lVar11 + 0x38);
      pvVar12 = (void *)xmalloc(uVar6);
      bfd_get_section_contents(lVar25,lVar11,pvVar12,0,uVar6);
      FUN_0014cba0(DAT_002b5af8,pvVar12,uVar6 & 0xffffffff);
      free(pvVar12);
    }
  }
  plVar24 = (long *)DAT_002b5af8[0xe];
joined_r0x001521ab:
  if (plVar24 != (long *)0x0) {
    do {
      lVar25 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),plVar24[1],0,0,0);
      if ((lVar25 != 0) && (*(char *)(lVar25 + 0x18) == '\x05')) {
        puVar1 = (uint *)(plVar24 + 2);
        if (**(uint **)(lVar25 + 0x28) < *puVar1) goto code_r0x001521e2;
      }
      plVar24 = (long *)*plVar24;
      if (plVar24 == (long *)0x0) break;
    } while( true );
  }
  bVar9 = *param_2;
  if ((bVar9 & 2) == 0) {
    if (*(int *)(DAT_002b5af8 + 8) != 0) {
      if (DAT_002b5af4 != 0) goto LAB_00152907;
      iVar10 = *(int *)(DAT_002b5af8 + 8);
      if (DAT_002b5aec != 0) goto LAB_001523cf;
      goto LAB_00152938;
    }
    puVar29 = DAT_002b5af8;
    if ((DAT_002b5af4 != 0) && (DAT_002b5af0 == 0)) goto LAB_0015222e;
LAB_00152955:
    if ((bVar9 & 1) == 0) {
      return;
    }
  }
  else {
    if ((DAT_002b5af4 != 0) || (iVar10 = *(int *)(DAT_002b5af8 + 8), iVar10 == 0)) {
LAB_00152907:
      if (DAT_002b5af0 == 0) {
LAB_0015222e:
        lVar25 = *(long *)(param_2 + 0x60);
        while( true ) {
          if (lVar25 == 0) goto LAB_001523aa;
          iVar10 = bfd_generic_link_read_symbols(lVar25);
          if (iVar10 == 0) break;
          plVar24 = *(long **)(lVar25 + 0xb0);
          if (0 < *(int *)(lVar25 + 0xb8)) {
            plVar3 = plVar24 + (ulong)(*(int *)(lVar25 + 0xb8) - 1) + 1;
            do {
              lVar11 = *plVar24;
              if ((*(long *)(lVar11 + 0x20) != 0x2b4598) &&
                 (((*(uint *)(lVar11 + 0x18) & 2) != 0 || (*(uint *)(lVar11 + 0x18) == 0)))) {
                bVar38 = DAT_002b6020 == 0;
                if (!bVar38) {
                  iVar10 = bfd_hide_sym_by_version();
                  bVar38 = iVar10 == 0;
                  if (!bVar38) goto LAB_00152388;
                  lVar11 = *plVar24;
                }
                bVar37 = false;
                pbVar28 = *(byte **)(lVar11 + 8);
                lVar11 = 6;
                pbVar31 = pbVar28;
                pbVar33 = (byte *)0x29f1f4;
                do {
                  if (lVar11 == 0) break;
                  lVar11 = lVar11 + -1;
                  bVar37 = *pbVar31 < *pbVar33;
                  bVar38 = *pbVar31 == *pbVar33;
                  pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;
                  pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;
                } while (bVar38);
                if ((!bVar37 && !bVar38) != bVar37) {
                  sVar13 = strlen((char *)pbVar28);
                  pcVar14 = (char *)xmalloc(sVar13 + 7);
                  sprintf(pcVar14,"%s%s","__imp_",pbVar28);
                  lVar11 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar14,0,0,0);
                  free(pcVar14);
                  if ((lVar11 == 0) || (*(char *)(lVar11 + 0x18) != '\x03')) {
                    if (*(int *)(DAT_002b5b90 + 0x1c) != 0) {
                      pbVar28 = pbVar28 + (*pbVar28 == 0x5f);
                    }
                    iVar10 = FUN_0014de10(lVar25,DAT_002b5af8 + 8,DAT_002b5af8 + 9,pbVar28);
                    if (iVar10 != 0) {
                      local_3c[0] = 0;
                      lVar11 = FUN_0014b140(DAT_002b5af8,pbVar28,0,0xffffffff,0,local_3c);
                      if (local_3c[0] == 0) {
                        *(byte *)(lVar11 + 0x23) = ((byte)(*(uint *)(*plVar24 + 0x18) >> 3) ^ 1) & 1
                        ;
                      }
                    }
                  }
                }
              }
LAB_00152388:
              plVar24 = plVar24 + 1;
            } while (plVar3 != plVar24);
          }
          lVar25 = *(long *)(lVar25 + 0xf0);
        }
        uVar16 = dcgettext(0,"%F%P: %pB: could not read symbols: %E\n",5);
        FUN_00129380(uVar16);
        iVar10 = *(int *)(DAT_002b5af8 + 8);
        puVar29 = DAT_002b5af8;
        goto joined_r0x00152ec1;
      }
LAB_001523aa:
      iVar10 = *(int *)(DAT_002b5af8 + 8);
      puVar29 = DAT_002b5af8;
      if (iVar10 != 0) goto LAB_001523bf;
LAB_00152950:
      bVar9 = *param_2;
      goto LAB_00152955;
    }
LAB_001523bf:
    if (DAT_002b5aec == 0) {
LAB_00152938:
      uVar30 = *(uint *)(DAT_002b5af8 + 8);
      puVar29 = DAT_002b5af8;
    }
    else {
LAB_001523cf:
      lVar25 = 0;
      bVar38 = false;
      puVar29 = DAT_002b5af8;
      if (iVar10 < 1) goto LAB_00152938;
      do {
        pcVar14 = *(char **)(puVar29[9] + lVar25 * 0x28);
        cVar5 = *pcVar14;
        if ((cVar5 != '?') && (pcVar15 = strchr(pcVar14,0x40), pcVar15 != (char *)0x0)) {
          pcVar14 = (char *)xstrdup(pcVar14 + (cVar5 == '@'));
          pcVar15 = strrchr(pcVar14,0x40);
          if (pcVar15 == (char *)0x0) {
            uVar16 = *(undefined8 *)(DAT_002b5af8[9] + lVar25 * 0x28);
            uVar21 = dcgettext(0,"%X%P: cannot export %s: invalid export name\n",5);
            FUN_00129380(uVar21,uVar16);
          }
          else {
            *pcVar15 = '\0';
          }
          puVar29 = DAT_002b5af8;
          bVar38 = true;
          *(char **)(DAT_002b5af8[9] + lVar25 * 0x28) = pcVar14;
        }
        uVar30 = *(uint *)(puVar29 + 8);
        lVar25 = lVar25 + 1;
      } while ((int)lVar25 < (int)uVar30);
      if (bVar38) {
        qsort((void *)puVar29[9],(long)(int)uVar30,0x28,FUN_0014cf90);
        goto LAB_00152938;
      }
    }
    if (DAT_002b5ae8 == 0) {
LAB_001525b0:
      puVar26 = (undefined8 *)puVar29[9];
      if ((int)uVar30 < 1) goto LAB_00152f50;
      iVar10 = 0;
      iVar27 = 0;
      puVar36 = puVar26;
      do {
        while (iVar27 != 0) {
          pcVar14 = (char *)*puVar36;
          iVar35 = strcmp(pcVar14,(char *)puVar36[-5]);
          if (iVar35 != 0) break;
          puVar29 = puVar26 + (long)iVar10 * 5 + -5;
          iVar35 = *(int *)(puVar29 + 3);
          if (((iVar35 == -1) || (iVar22 = *(int *)(puVar36 + 3), iVar22 == -1)) ||
             (iVar35 == iVar22)) {
            if (DAT_002b5ae4 != 0) {
              uVar16 = dcgettext(0,"%P: warning, duplicate EXPORT: %s\n",5);
              FUN_00129380(uVar16);
              pcVar14 = (char *)*puVar36;
            }
LAB_00152cc8:
            iVar22 = *(int *)(puVar36 + 3);
            if (iVar22 != -1) goto LAB_00152636;
          }
          else {
            if (DAT_002b5ae4 != 0) {
              uVar16 = *puVar29;
              uVar21 = dcgettext(0,"%X%P: error, duplicate EXPORT with ordinals: %s (%d vs %d)\n",5)
              ;
              FUN_00129380(uVar21,uVar16,iVar35,iVar22);
              pcVar14 = (char *)*puVar36;
              goto LAB_00152cc8;
            }
LAB_00152636:
            *(int *)(puVar29 + 3) = iVar22;
          }
          *(byte *)(puVar29 + 4) = *(byte *)(puVar29 + 4) | *(byte *)(puVar36 + 4);
          *(byte *)((long)puVar29 + 0x21) =
               *(byte *)((long)puVar29 + 0x21) | *(byte *)((long)puVar36 + 0x21);
          *(byte *)((long)puVar29 + 0x22) =
               *(byte *)((long)puVar29 + 0x22) | *(byte *)((long)puVar36 + 0x22);
          *(byte *)((long)puVar29 + 0x23) =
               *(byte *)((long)puVar29 + 0x23) | *(byte *)((long)puVar36 + 0x23);
          if (pcVar14 != (char *)0x0) {
            free(pcVar14);
          }
          if ((void *)puVar36[1] != (void *)0x0) {
            free((void *)puVar36[1]);
          }
          if ((void *)puVar36[2] != (void *)0x0) {
            free((void *)puVar36[2]);
          }
          iVar27 = iVar27 + 1;
          puVar36 = puVar36 + 5;
          puVar29 = DAT_002b5af8;
          if (*(int *)(DAT_002b5af8 + 8) <= iVar27) goto LAB_001526e4;
        }
        if (iVar10 != iVar27) {
          uVar16 = puVar36[1];
          puVar2 = puVar26 + (long)iVar10 * 5;
          *puVar2 = *puVar36;
          puVar2[1] = uVar16;
          uVar16 = puVar36[3];
          puVar2[2] = puVar36[2];
          puVar2[3] = uVar16;
          puVar2[4] = puVar36[4];
        }
        iVar10 = iVar10 + 1;
        iVar27 = iVar27 + 1;
        puVar36 = puVar36 + 5;
      } while (iVar27 < *(int *)(puVar29 + 8));
LAB_001526e4:
      lVar25 = (long)iVar10 << 3;
    }
    else {
      if (0 < (int)uVar30) {
        bVar38 = false;
        lVar25 = 0;
        bVar37 = true;
LAB_001524c9:
        do {
          lVar11 = 6;
          pbVar28 = *(byte **)(puVar29[9] + lVar25 * 0x28);
          pbVar31 = pbVar28;
          pbVar33 = (byte *)0x29f1f4;
          do {
            if (lVar11 == 0) break;
            lVar11 = lVar11 + -1;
            bVar38 = *pbVar31 < *pbVar33;
            bVar37 = *pbVar31 == *pbVar33;
            pbVar31 = pbVar31 + (ulong)bVar39 * -2 + 1;
            pbVar33 = pbVar33 + (ulong)bVar39 * -2 + 1;
          } while (bVar37);
          if (((!bVar38 && !bVar37) == bVar38) ||
             (pcVar14 = strchr((char *)pbVar28,0x40), pcVar14 == (char *)0x0)) {
LAB_001524b8:
            uVar30 = *(uint *)(puVar29 + 8);
            lVar25 = lVar25 + 1;
            uVar34 = (uint)lVar25;
            bVar38 = uVar30 < uVar34;
            bVar37 = uVar30 == uVar34;
            if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;
            goto LAB_001524c9;
          }
          local_3c[0] = 1;
          pcVar14 = (char *)xstrdup(pbVar28 + (*pbVar28 == 0x40));
          pcVar15 = strchr(pcVar14,0x40);
          puVar29 = DAT_002b5af8;
          *pcVar15 = '\0';
          iVar10 = FUN_0014de10(0,puVar29 + 8,puVar29 + 9,pcVar14);
          puVar29 = DAT_002b5af8;
          if (iVar10 != 0) {
            FUN_0014b140(DAT_002b5af8,pcVar14,*(undefined8 *)(DAT_002b5af8[9] + 8 + lVar25 * 0x28),
                         0xffffffff,0,local_3c);
            puVar29 = DAT_002b5af8;
          }
          DAT_002b5af8 = puVar29;
          if (local_3c[0] == 0) goto LAB_001524b8;
          lVar25 = lVar25 + 1;
          free(pcVar14);
          uVar30 = *(uint *)(DAT_002b5af8 + 8);
          uVar34 = (uint)lVar25;
          bVar38 = uVar30 < uVar34;
          bVar37 = uVar30 == uVar34;
          puVar29 = DAT_002b5af8;
          if ((int)uVar30 <= (int)uVar34) goto LAB_001525b0;
        } while( true );
      }
LAB_00152f50:
      lVar25 = 0;
      iVar10 = 0;
    }
    *(int *)(puVar29 + 8) = iVar10;
    DAT_002b5b88 = xmalloc(lVar25);
    DAT_002b5b80 = (void *)xmalloc((long)*(int *)(DAT_002b5af8 + 8) << 3);
    puVar29 = DAT_002b5af8;
    memset(DAT_002b5b80,0,(long)*(int *)(DAT_002b5af8 + 8) << 3);
    iVar10 = *(int *)(puVar29 + 8);
    DAT_002b5b60 = 0;
    DAT_002b5b64 = 0x10000;
    DAT_002b5b78 = 0;
    DAT_002b5b74 = 0;
    DAT_002b5b70 = 0;
    if (0 < iVar10) {
      lVar25 = 0;
      do {
        lVar11 = lVar25 * 0x28;
        pcVar14 = *(char **)(puVar29[9] + 8 + lVar11);
        FUN_0011e4b0(pcVar14);
        sVar13 = strlen(pcVar14);
        pcVar15 = (char *)xmalloc(sVar13 + 2);
        if ((*(int *)(DAT_002b5b90 + 0x1c) == 0) || (*pcVar14 == '@')) {
          strcpy(pcVar15,pcVar14);
        }
        else {
          *pcVar15 = '_';
          strcpy(pcVar15 + 1,pcVar14);
          uVar16 = xstrdup(pcVar15);
          FUN_0011e4b0(uVar16);
        }
        lVar17 = bfd_link_hash_lookup(*(undefined8 *)(param_2 + 0x28),pcVar15,0,0,1);
        puVar29 = DAT_002b5af8;
        if (lVar17 == 0) {
          pcVar14 = strchr(pcVar14,0x2e);
          if (pcVar14 != (char *)0x0) {
LAB_001528bb:
            puVar29 = DAT_002b5af8;
            DAT_002b5b78 = DAT_002b5b78 + 1;
            lVar11 = lVar11 + DAT_002b5af8[9];
            if (*(char *)(lVar11 + 0x22) == '\0') {
              DAT_002b5b74 = DAT_002b5b74 + 1;
            }
            iVar10 = *(int *)(lVar11 + 0x18);
            *(undefined1 *)(lVar11 + 0x24) = 1;
            goto joined_r0x001527c9;
          }
          pcVar18 = "%X%P: cannot export %s: symbol not found\n";
LAB_00152d02:
          uVar16 = dcgettext(0,pcVar18,5);
          FUN_00129380(uVar16);
          puVar29 = DAT_002b5af8;
        }
        else {
          cVar5 = *(char *)(lVar17 + 0x18);
          if ((cVar5 - 3U & 0xfd) == 0) {
            DAT_002b5b78 = DAT_002b5b78 + 1;
            lVar7 = DAT_002b5af8[9];
            if (*(char *)(lVar11 + lVar7 + 0x22) == '\0') {
              DAT_002b5b74 = DAT_002b5b74 + 1;
            }
            lVar17 = *(long *)(lVar17 + 0x28);
            if (cVar5 != '\x03') {
              lVar17 = *(long *)(lVar17 + 8);
            }
            *(long *)((long)DAT_002b5b80 + lVar25 * 8) = lVar17;
            iVar10 = *(int *)(lVar11 + lVar7 + 0x18);
joined_r0x001527c9:
            if (iVar10 != -1) {
              if (DAT_002b5b60 < iVar10) {
                DAT_002b5b60 = iVar10;
              }
              if (iVar10 < DAT_002b5b64) {
                DAT_002b5b64 = iVar10;
              }
              DAT_002b5b70 = DAT_002b5b70 + 1;
            }
          }
          else {
            pcVar18 = strchr(pcVar14,0x2e);
            if (pcVar18 != (char *)0x0) goto LAB_001528bb;
            pcVar18 = "%X%P: cannot export %s: symbol not defined\n";
            if (cVar5 == '\x01') goto LAB_00152d02;
            uVar16 = dcgettext(0,"%X%P: cannot export %s: symbol wrong type (%d vs %d)\n",5);
            FUN_00129380(uVar16,pcVar14,cVar5);
            puVar29 = DAT_002b5af8;
          }
        }
        lVar25 = lVar25 + 1;
        free(pcVar15);
        iVar10 = *(int *)(puVar29 + 8);
      } while ((int)lVar25 < iVar10);
    }
joined_r0x00152ec1:
    if (iVar10 == 0) goto LAB_00152950;
  }
  DAT_002b5b68 = (char *)*puVar29;
  if (DAT_002b5b68 == (char *)0x0) {
    DAT_002b5b68 = (char *)*param_1;
    cVar5 = *DAT_002b5b68;
    if (cVar5 != '\0') {
      bVar38 = false;
      pcVar14 = DAT_002b5b68;
      pcVar15 = DAT_002b5b68;
      do {
        pcVar14 = pcVar14 + 1;
        if (((byte)(cVar5 - 0x2fU) < 0x2e) &&
           ((~(uint)(0x200000000801 >> (cVar5 - 0x2fU & 0x3f)) & 1) == 0)) {
          bVar38 = true;
          pcVar15 = pcVar14;
        }
        cVar5 = *pcVar14;
      } while (cVar5 != '\0');
      if (bVar38) {
        DAT_002b5b68 = pcVar15;
      }
    }
  }
  if ((DAT_002b5b70 == 0) || (DAT_002b5b60 <= DAT_002b5b78)) {
    DAT_002b5b64 = 1;
    DAT_002b5b60 = DAT_002b5b78;
  }
  else {
    iVar10 = (DAT_002b5b60 - DAT_002b5b78) + 1;
    if (iVar10 < DAT_002b5b64) {
      DAT_002b5b64 = iVar10;
    }
  }
  DAT_002b5b7c = (DAT_002b5b60 - DAT_002b5b64) + 1;
  puVar19 = (undefined4 *)xmalloc((long)DAT_002b5b7c << 2);
  DAT_002b5b58 = puVar19;
  if (0 < DAT_002b5b7c) {
    puVar4 = puVar19 + (ulong)(DAT_002b5b7c - 1) + 1;
    do {
      *puVar19 = 0xffffffff;
      puVar19 = puVar19 + 1;
    } while (puVar4 != puVar19);
  }
  iVar27 = 0;
  local_68 = DAT_002b5b64;
  iVar10 = DAT_002b5b64;
  if (*(int *)(DAT_002b5af8 + 8) < 1) goto LAB_00152b30;
  lVar25 = DAT_002b5af8[9];
  lVar11 = 0;
  iVar27 = 0;
  puVar29 = DAT_002b5af8;
  do {
    lVar17 = lVar11 * 0x28;
    puVar26 = (undefined8 *)(lVar25 + lVar17);
    if ((*(long *)((long)DAT_002b5b80 + lVar11 * 8) == 0) &&
       (*(char *)((long)puVar26 + 0x24) == '\0')) {
      lVar25 = puVar29[9];
      puVar26 = (undefined8 *)(lVar17 + lVar25);
    }
    else {
      iVar10 = *(int *)(puVar26 + 3);
      if (iVar10 != -1) {
        iVar35 = iVar10 - local_68;
        piVar23 = DAT_002b5b58 + iVar35;
        if (*piVar23 != -1) {
          uVar16 = *puVar26;
          uVar21 = *(undefined8 *)(lVar25 + (long)*piVar23 * 0x28);
          uVar20 = dcgettext(0,"%X%P: error: ordinal used twice: %d (%s vs %s)\n",5);
          FUN_00129380(uVar20,iVar10,uVar16,uVar21);
          local_68 = DAT_002b5b64;
          piVar23 = DAT_002b5b58 + iVar35;
          puVar29 = DAT_002b5af8;
        }
        *piVar23 = (int)lVar11;
      }
      lVar25 = puVar29[9];
      puVar26 = (undefined8 *)(lVar17 + lVar25);
      pcVar14 = (char *)puVar26[2];
      if (pcVar14 == (char *)0x0) {
        pcVar14 = (char *)*puVar26;
      }
      sVar13 = strlen(pcVar14);
      iVar27 = iVar27 + 1 + (int)sVar13;
    }
    if (*(char *)((long)puVar26 + 0x24) != '\0') {
      sVar13 = strlen((char *)puVar26[1]);
      iVar27 = iVar27 + 1 + (int)sVar13;
    }
    pvVar12 = DAT_002b5b80;
    puVar19 = DAT_002b5b58;
    lVar11 = lVar11 + 1;
  } while ((int)lVar11 < *(int *)(puVar29 + 8));
  iVar10 = local_68;
  if (*(int *)(puVar29 + 8) < 1) goto LAB_00152b30;
  piVar23 = (int *)(lVar25 + 0x18);
  lVar25 = 0;
  do {
    if (*(long *)((long)pvVar12 + lVar25 * 8) == 0) {
      if ((char)piVar23[3] != '\0') {
        iVar35 = *piVar23;
        goto joined_r0x00152c53;
      }
    }
    else {
      iVar35 = *piVar23;
joined_r0x00152c53:
      if (iVar35 == -1) {
        piVar32 = puVar19 + (iVar10 - local_68);
        if (*piVar32 != -1) {
          piVar8 = puVar19 + (long)iVar10 + (1 - (long)local_68);
          do {
            piVar32 = piVar8;
            iVar10 = iVar10 + 1;
            piVar8 = piVar32 + 1;
          } while (*piVar32 != -1);
        }
        *piVar32 = (int)lVar25;
        *piVar23 = iVar10;
      }
    }
    lVar25 = lVar25 + 1;
    piVar23 = piVar23 + 10;
    if (*(int *)(puVar29 + 8) <= (int)lVar25) {
LAB_00152b30:
      iVar35 = DAT_002b5b60;
      if ((0xffff < DAT_002b5b60) || (0xffff < iVar10)) {
        uVar16 = dcgettext(0,"%X%P: error: export ordinal too large: %d\n",5);
        if (iVar10 <= iVar35) {
          iVar10 = iVar35;
        }
        FUN_00129380(uVar16,iVar10);
      }
      iVar10 = DAT_002b5b74;
      sVar13 = strlen(DAT_002b5b68);
      DAT_002b5ba8 = sVar13 + 1 + (long)(iVar27 + iVar10 * 6 + 0x28 + DAT_002b5b7c * 4);
      FUN_0014d1c0(1);
      FUN_00152090(DAT_002b5bd0);
      return;
    }
  } while( true );
code_r0x001521e2:
  plVar24 = (long *)*plVar24;
  **(uint **)(lVar25 + 0x28) = *puVar1;
  goto joined_r0x001521ab;
}

