
void pe_create_import_fixup(arelent *rel,asection *s,bfd_vma addend,char *name,char *symname)

{
  bfd_size_type bVar1;
  bfd_vma bVar2;
  uint *puVar3;
  uint *puVar4;
  char *pcVar5;
  long lVar6;
  bfd *pbVar7;
  asection *paVar8;
  uchar *puVar9;
  undefined1 (*pauVar10) [16];
  int iVar11;
  ulong uVar12;
  uint uVar13;
  uint uVar14;
  char *pcVar15;
  char cVar16;
  undefined8 uVar17;
  bool bVar18;
  bfd_link_hash_entry *bh;
  char buf [26];
  
  pbVar7 = (*rel->sym_ptr_ptr)->the_bfd;
  counter_12734 = counter_12734 + 1;
  sprintf(buf,"__fu%d_");
  puVar4 = (uint *)buf;
  do {
    puVar3 = puVar4;
    uVar13 = *puVar3 + 0xfefefeff & ~*puVar3;
    uVar14 = uVar13 & 0x80808080;
    puVar4 = puVar3 + 1;
  } while (uVar14 == 0);
  bVar18 = (uVar13 & 0x8080) == 0;
  if (bVar18) {
    uVar14 = uVar14 >> 0x10;
  }
  if (bVar18) {
    puVar4 = (uint *)((long)puVar3 + 6);
  }
  pcVar5 = (char *)((long)puVar4 + ((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf));
  pcVar15 = name + -(long)pcVar5;
  uVar14 = (uint)pcVar5;
  uVar12 = (ulong)pcVar5 & 0xffffffff;
  if (uVar14 < 8) {
    if (((ulong)pcVar5 & 4) == 0) {
      if (uVar14 != 0) {
        *pcVar15 = buf[0];
        if (((ulong)pcVar5 & 2) != 0) {
          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));
        }
      }
    }
    else {
      *(undefined4 *)pcVar15 = buf._0_4_;
      *(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));
    }
  }
  else {
    *(ulong *)pcVar15 = CONCAT44(buf._4_4_,buf._0_4_);
    *(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)) =
         *(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8));
    lVar6 = (long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8);
    uVar14 = (int)lVar6 + uVar14 & 0xfffffff8;
    if (7 < uVar14) {
      uVar13 = 0;
      do {
        uVar12 = (ulong)uVar13;
        uVar13 = uVar13 + 8;
        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =
             *(undefined8 *)((long)buf + (uVar12 - lVar6));
      } while (uVar13 < uVar14);
    }
  }
  bh = (bfd_link_hash_entry *)0x0;
  iVar11 = 2;
  (**(code **)((long)pbVar7->xvec->backend_data + 0x138))
            (&link_info,pbVar7,pcVar15,2,current_sec,rel->address,0,1,0,&bh);
  pcVar5 = (bh->root).string;
  if (link_info.pei386_runtime_pseudo_reloc == 2) goto LAB_0015682c;
  iVar11 = 0;
  builtin_strncpy(name + -10,"__nm_thnk_",10);
  lVar6 = bfd_link_hash_lookup(link_info.hash,name + -10,0,0,1);
  pbVar7 = link_info.output_bfd;
  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {
    pcVar15 = (char *)xmalloc(0x14);
    sprintf(pcVar15,"nmth%06d.o",(ulong)(uint)tmp_seq);
    tmp_seq = tmp_seq + 1;
    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);
    bfd_find_target(pe_details->object_target,pbVar7);
    bfd_make_writable(pbVar7);
    bfd_set_format(pbVar7,1);
    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);
    symptr = 0;
    symtab = (asymbol **)xmalloc(0x18);
    paVar8 = quick_section(pbVar7,".idata$4",0x100,iVar11);
    quick_symbol(pbVar7,"__nm_thnk_",name,"",paVar8,2,0);
    quick_symbol(pbVar7,"__nm_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);
    bfd_set_section_size(pbVar7,paVar8,8);
    puVar9 = (uchar *)xmalloc(8);
    paVar8->contents = puVar9;
    puVar9[0] = '\0';
    puVar9[1] = '\0';
    puVar9[2] = '\0';
    puVar9[3] = '\0';
    puVar9[4] = '\0';
    puVar9[5] = '\0';
    puVar9[6] = '\0';
    puVar9[7] = '\0';
    quick_reloc(pbVar7,0,0x3e,2);
    save_relocs(paVar8);
    bfd_set_symtab(pbVar7,symtab,symptr);
    iVar11 = 0;
    bfd_set_section_contents(pbVar7,paVar8,puVar9,0,8);
    bfd_make_readable(pbVar7);
    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);
    config.text_read_only = 0;
    *(uint *)&(link_info.output_bfd)->field_0x44 =
         *(uint *)&(link_info.output_bfd)->field_0x44 & 0xffffefff;
  }
  pbVar7 = link_info.output_bfd;
  if ((addend == 0) || (link_info.pei386_runtime_pseudo_reloc == 1)) {
    pcVar15 = (char *)xmalloc(0x14);
    sprintf(pcVar15,"fu%06d.o",(ulong)(uint)tmp_seq);
    tmp_seq = tmp_seq + 1;
    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);
    bfd_find_target(pe_details->object_target,pbVar7);
    bfd_make_writable(pbVar7);
    bfd_set_format(pbVar7,1);
    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);
    symptr = 0;
    symtab = (asymbol **)xmalloc(0x30);
    paVar8 = quick_section(pbVar7,".idata$2",0x100,iVar11);
    quick_symbol(pbVar7,"__nm_thnk_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);
    pcVar15 = "_";
    if (pe_details->underscored == 0) {
      pcVar15 = "";
    }
    quick_symbol(pbVar7,pcVar15,symname,"_iname",(asection *)(_bfd_std_section + 0x118),2,0);
    iVar11 = 0;
    quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);
    bfd_set_section_size(pbVar7,paVar8,0x14);
    pauVar10 = (undefined1 (*) [16])xmalloc(0x14);
    paVar8->contents = (uchar *)pauVar10;
    *(undefined4 *)pauVar10[1] = 0;
    *pauVar10 = (undefined1  [16])0x0;
    quick_reloc(pbVar7,0,0x3e,1);
    quick_reloc(pbVar7,0xc,0x3e,2);
    quick_reloc(pbVar7,0x10,0x3e,3);
    save_relocs(paVar8);
    bfd_set_symtab(pbVar7,symtab,symptr);
    bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,0x14);
    bfd_make_readable(pbVar7);
    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);
    if (addend == 0) {
      if (link_info.pei386_runtime_pseudo_reloc != 2) {
        return;
      }
      goto LAB_0015682c;
    }
    if (link_info.pei386_runtime_pseudo_reloc == 1) goto LAB_0015682c;
  }
  if (link_info.pei386_runtime_pseudo_reloc != 2) {
    bVar1 = rel->address;
    pbVar7 = s->owner;
    pcVar5 = (*rel->sym_ptr_ptr)->name;
    pcVar15 = (char *)dcgettext(0,
                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"
                                ,5);
    einfo(pcVar15,pbVar7,s,bVar1,pcVar5);
    return;
  }
LAB_0015682c:
  if (pe_dll_extra_pe_debug != 0) {
    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff);
  }
  pbVar7 = link_info.output_bfd;
  uVar14 = rel->howto->bitsize;
  pcVar15 = (char *)xmalloc(0x14);
  sprintf(pcVar15,"rtr%06d.o",(ulong)(uint)tmp_seq);
  tmp_seq = tmp_seq + 1;
  pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);
  bfd_find_target(pe_details->object_target,pbVar7);
  bfd_make_writable(pbVar7);
  bfd_set_format(pbVar7,1);
  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);
  cVar16 = '\x10';
  if (link_info.pei386_runtime_pseudo_reloc == 2) {
    cVar16 = (-(runtime_pseudp_reloc_v2_init == 0) & 0x18U) + 0x18;
  }
  symptr = 0;
  symtab = (asymbol **)xmalloc(cVar16);
  paVar8 = quick_section(pbVar7,".rdata_runtime_pseudo_reloc",0x100,iVar11);
  quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);
  if (link_info.pei386_runtime_pseudo_reloc == 2) {
    bVar2 = (bfd_vma)uVar14;
    if (runtime_pseudp_reloc_v2_init == 0) {
      uVar17 = 0x18;
      runtime_pseudp_reloc_v2_init = 1;
      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);
      bfd_set_section_size(pbVar7,paVar8,0x18);
      pauVar10 = (undefined1 (*) [16])xmalloc(0x18);
      paVar8->contents = (uchar *)pauVar10;
      *(undefined8 *)pauVar10[1] = 0;
      *pauVar10 = (undefined1  [16])0x0;
      quick_reloc(pbVar7,0x10,0x3e,1);
      quick_reloc(pbVar7,0xc,0x3e,2);
      (*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);
      (*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);
    }
    else {
      uVar17 = 0xc;
      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);
      bfd_set_section_size(pbVar7,paVar8,0xc);
      pauVar10 = (undefined1 (*) [16])xmalloc(0xc);
      paVar8->contents = (uchar *)pauVar10;
      *(undefined8 *)*pauVar10 = 0;
      *(undefined4 *)(*pauVar10 + 8) = 0;
      quick_reloc(pbVar7,4,0x3e,1);
      quick_reloc(pbVar7,0,0x3e,2);
      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);
    }
    save_relocs(paVar8);
    bfd_set_symtab(pbVar7,symtab,symptr);
  }
  else {
    bfd_set_section_size(pbVar7,paVar8,8);
    pauVar10 = (undefined1 (*) [16])xmalloc(8);
    paVar8->contents = (uchar *)pauVar10;
    *(undefined8 *)*pauVar10 = 0;
    (*pbVar7->xvec->bfd_putx32)(addend,pauVar10);
    quick_reloc(pbVar7,4,0x3e,1);
    save_relocs(paVar8);
    bfd_set_symtab(pbVar7,symtab,symptr);
    uVar17 = 8;
  }
  iVar11 = 0;
  bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,uVar17);
  bfd_make_readable(pbVar7);
  add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);
  pbVar7 = link_info.output_bfd;
  if (runtime_pseudo_relocs_created != 0) {
    runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;
    return;
  }
  runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;
  pcVar5 = (char *)xmalloc(0x14);
  sprintf(pcVar5,"ertr%06d.o",(ulong)(uint)tmp_seq);
  tmp_seq = tmp_seq + 1;
  pbVar7 = (bfd *)bfd_create(pcVar5,pbVar7);
  bfd_find_target(pe_details->object_target,pbVar7);
  bfd_make_writable(pbVar7);
  bfd_set_format(pbVar7,1);
  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);
  symptr = 0;
  symtab = (asymbol **)xmalloc(0x10);
  paVar8 = quick_section(pbVar7,".rdata",0x100,iVar11);
  pcVar5 = "__pei386_runtime_relocator";
  if (pe_details->underscored == 0) {
    pcVar5 = "_pei386_runtime_relocator";
  }
  quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),0,0);
  bfd_set_section_size(pbVar7,paVar8,4);
  puVar9 = (uchar *)xcalloc(1);
  paVar8->contents = puVar9;
  quick_reloc(pbVar7,0,0x3e,1);
  save_relocs(paVar8);
  bfd_set_symtab(pbVar7,symtab,symptr);
  bfd_set_section_contents(pbVar7,paVar8,puVar9,0,4);
  bfd_make_readable(pbVar7);
  add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);
  return;
}



void FUN_00156210(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)

{
  undefined4 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  uint *puVar4;
  char *pcVar5;
  long lVar6;
  undefined8 *puVar7;
  long lVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  undefined1 (*pauVar11) [16];
  uint uVar12;
  uint uVar13;
  uint *puVar14;
  char cVar15;
  undefined8 uVar16;
  bool bVar17;
  ulong uVar18;
  undefined8 local_60;
  uint local_58 [10];
  
  lVar8 = **(long **)*param_1;
  DAT_002b5c08 = DAT_002b5c08 + 1;
  sprintf((char *)local_58,"__fu%d_");
  puVar14 = local_58;
  do {
    puVar4 = puVar14;
    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;
    uVar13 = uVar12 & 0x80808080;
    puVar14 = puVar4 + 1;
  } while (uVar13 == 0);
  bVar17 = (uVar12 & 0x8080) == 0;
  if (bVar17) {
    uVar13 = uVar13 >> 0x10;
  }
  if (bVar17) {
    puVar14 = (uint *)((long)puVar4 + 6);
  }
  pcVar5 = (char *)((long)puVar14 +
                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));
  puVar14 = (uint *)(param_4 - (long)pcVar5);
  uVar13 = (uint)pcVar5;
  uVar18 = (ulong)pcVar5 & 0xffffffff;
  if (uVar13 < 8) {
    if (((ulong)pcVar5 & 4) == 0) {
      if (uVar13 != 0) {
        *(undefined1 *)puVar14 = (undefined1)local_58[0];
        if (((ulong)pcVar5 & 2) != 0) {
          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =
               *(undefined2 *)((long)local_58 + (uVar18 - 2));
        }
      }
    }
    else {
      *puVar14 = local_58[0];
      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))
      ;
    }
  }
  else {
    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);
    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =
         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));
    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);
    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;
    if (7 < uVar13) {
      uVar12 = 0;
      do {
        uVar18 = (ulong)uVar12;
        uVar12 = uVar12 + 8;
        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =
             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));
      } while (uVar12 < uVar13);
    }
  }
  local_60 = 0;
  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))
            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);
  uVar16 = *(undefined8 *)(local_60 + 8);
  if (DAT_002b5fec == 2) goto LAB_0015682c;
  *(undefined2 *)(param_4 + -2) = 0x5f6b;
  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;
  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);
  lVar8 = DAT_002b5f90;
  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {
    pcVar5 = (char *)xmalloc(0x14);
    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);
    DAT_002b5c40 = DAT_002b5c40 + 1;
    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);
    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);
    bfd_make_writable(puVar7);
    bfd_set_format(puVar7,1);
    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);
    DAT_002b5c44 = 0;
    DAT_002b5c48 = xmalloc(0x18);
    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);
    uVar18 = 0;
    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);
    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);
    bfd_set_section_size(puVar7,lVar8,8);
    puVar9 = (undefined8 *)xmalloc(8);
    *(undefined8 **)(lVar8 + 0xb0) = puVar9;
    *puVar9 = 0;
    FUN_00153440(puVar7,0,0x3e,2);
    FUN_001532d0(lVar8);
    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);
    bfd_make_readable(puVar7);
    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);
    DAT_002b60f0 = 0;
    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;
  }
  lVar8 = DAT_002b5f90;
  if ((param_3 == 0) || (DAT_002b5fec == 1)) {
    pcVar5 = (char *)xmalloc(0x14);
    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);
    DAT_002b5c40 = DAT_002b5c40 + 1;
    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);
    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);
    bfd_make_writable(puVar7);
    bfd_set_format(puVar7,1);
    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);
    DAT_002b5c44 = 0;
    DAT_002b5c48 = xmalloc(0x30);
    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);
    uVar18 = 0;
    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);
    pcVar5 = "_";
    uVar18 = uVar18 & 0xffffffff00000000;
    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {
      pcVar5 = "";
    }
    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);
    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);
    bfd_set_section_size(puVar7,lVar8,0x14);
    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);
    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;
    *(undefined4 *)pauVar11[1] = 0;
    *pauVar11 = (undefined1  [16])0x0;
    FUN_00153440(puVar7,0,0x3e,1);
    FUN_00153440(puVar7,0xc,0x3e,2);
    FUN_00153440(puVar7,0x10,0x3e,3);
    FUN_001532d0(lVar8);
    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);
    bfd_make_readable(puVar7);
    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);
    if (param_3 == 0) {
      if (DAT_002b5fec != 2) {
        return;
      }
      goto LAB_0015682c;
    }
    if (DAT_002b5fec == 1) goto LAB_0015682c;
  }
  if (DAT_002b5fec != 2) {
    uVar16 = param_1[1];
    uVar2 = *(undefined8 *)(param_2 + 0xf0);
    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);
    uVar10 = dcgettext(0,
                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"
                       ,5);
    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);
    return;
  }
LAB_0015682c:
  if (DAT_002b5be4 != 0) {
    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);
  }
  lVar8 = DAT_002b5f90;
  uVar1 = *(undefined4 *)(param_1[3] + 0xc);
  pcVar5 = (char *)xmalloc(0x14);
  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);
  DAT_002b5c40 = DAT_002b5c40 + 1;
  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);
  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);
  bfd_make_writable(puVar7);
  bfd_set_format(puVar7,1);
  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);
  cVar15 = '\x10';
  if (DAT_002b5fec == 2) {
    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;
  }
  DAT_002b5c44 = 0;
  DAT_002b5c48 = xmalloc(cVar15);
  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);
  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);
  if (DAT_002b5fec == 2) {
    if (DAT_002b5ca0 == 0) {
      uVar16 = 0x18;
      DAT_002b5ca0 = 1;
      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);
      bfd_set_section_size(puVar7,lVar8,0x18);
      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);
      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;
      *(undefined8 *)pauVar11[1] = 0;
      *pauVar11 = (undefined1  [16])0x0;
      FUN_00153440(puVar7,0x10,0x3e,1);
      FUN_00153440(puVar7,0xc,0x3e,2);
      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);
      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);
    }
    else {
      uVar16 = 0xc;
      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);
      bfd_set_section_size(puVar7,lVar8,0xc);
      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);
      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;
      *(undefined8 *)*pauVar11 = 0;
      *(undefined4 *)(*pauVar11 + 8) = 0;
      FUN_00153440(puVar7,4,0x3e,1);
      FUN_00153440(puVar7,0,0x3e,2);
      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);
    }
    FUN_001532d0(lVar8);
    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
  }
  else {
    bfd_set_section_size(puVar7,lVar8,8);
    pauVar11 = (undefined1 (*) [16])xmalloc(8);
    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;
    *(undefined8 *)*pauVar11 = 0;
    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);
    FUN_00153440(puVar7,4,0x3e,1);
    FUN_001532d0(lVar8);
    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
    uVar16 = 8;
  }
  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);
  bfd_make_readable(puVar7);
  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);
  lVar8 = DAT_002b5f90;
  if (DAT_002b5ca4 != 0) {
    DAT_002b5ca4 = DAT_002b5ca4 + 1;
    return;
  }
  DAT_002b5ca4 = DAT_002b5ca4 + 1;
  pcVar5 = (char *)xmalloc(0x14);
  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);
  DAT_002b5c40 = DAT_002b5c40 + 1;
  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);
  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);
  bfd_make_writable(puVar7);
  bfd_set_format(puVar7,1);
  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);
  DAT_002b5c44 = 0;
  DAT_002b5c48 = xmalloc(0x10);
  lVar8 = FUN_00154530(puVar7,".rdata",0x100);
  pcVar5 = "__pei386_runtime_relocator";
  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {
    pcVar5 = "_pei386_runtime_relocator";
  }
  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);
  bfd_set_section_size(puVar7,lVar8,4);
  uVar16 = xcalloc(1,4);
  *(undefined8 *)(lVar8 + 0xb0) = uVar16;
  FUN_00153440(puVar7,0,0x3e,1);
  FUN_001532d0(lVar8);
  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);
  bfd_make_readable(puVar7);
  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);
  return;
}


PUSH R15
MOV R15,R8
PUSH R14
PUSH R13
MOV R13,RDX
PUSH R12
MOV R12,RDI
PUSH RBP
MOV RBP,RCX
PUSH RBX
SUB RSP,0x58
MOV RAX,qword ptr [RDI]
MOV EDX,dword ptr [0x002b5c08]
LEA R14,[RSP + 0x30]
MOV qword ptr [RSP + 0x10],RSI
LEA RSI,[0x29f0b5]
MOV RAX,qword ptr [RAX]
MOV RDI,R14
MOV RBX,qword ptr [RAX]
LEA EAX,[RDX + 0x1]
MOV dword ptr [0x002b5c08],EAX
XOR EAX,EAX
CALL 0x0010dbc0
MOV RAX,R14
MOV ECX,dword ptr [RAX]
ADD RAX,0x4
LEA EDX,[RCX + -0x1010101]
NOT ECX
AND EDX,ECX
AND EDX,0x80808080
JZ 0x00156260
MOV ECX,EDX
SHR ECX,0x10
TEST EDX,0x8080
CMOVZ EDX,ECX
LEA RCX,[RAX + 0x2]
CMOVZ RAX,RCX
MOV ESI,EDX
ADD SIL,DL
MOV RDX,RBP
SBB RAX,0x3
SUB RAX,R14
SUB RDX,RAX
MOV ECX,EAX
CMP EAX,0x8
JNC 0x00156590
TEST AL,0x4
JNZ 0x00156d70
TEST ECX,ECX
JNZ 0x001565e0
MOV RAX,qword ptr [RBX + 0x8]
LEA RCX,[RSP + 0x28]
MOV R9,qword ptr [R12 + 0x8]
MOV RSI,RBX
MOV qword ptr [RSP + 0x28],0x0
MOV R8,qword ptr [0x002b5c50]
LEA RDI,[0x2b5f40]
MOV RAX,qword ptr [RAX + 0x368]
PUSH RCX
MOV ECX,0x2
PUSH 0x0
PUSH 0x1
PUSH 0x0
CALL qword ptr [RAX + 0x138]
MOV RAX,qword ptr [RSP + 0x48]
MOV RAX,qword ptr [RAX + 0x8]
MOV qword ptr [RSP + 0x28],RAX
ADD RSP,0x20
CMP dword ptr [0x002b5fec],0x2
JZ 0x0015682c
MOV R9D,0x5f6b
XOR ECX,ECX
XOR EDX,EDX
MOV R8D,0x1
MOV RAX,0x6e68745f6d6e5f5f
MOV word ptr [RBP + -0x2],R9W
LEA RSI,[RBP + -0xa]
MOV qword ptr [RBP + -0xa],RAX
MOV RDI,qword ptr [0x002b5f68]
CALL 0x0010d5e0
TEST RAX,RAX
JZ 0x0015635d
CMP byte ptr [RAX + 0x18],0x3
JZ 0x00156513
MOV EDI,0x14
MOV RBX,qword ptr [0x002b5f90]
CALL 0x0010dda0
MOV EDX,dword ptr [0x002b5c40]
LEA RSI,[0x29f0bd]
MOV R14,RAX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x0010dbc0
MOV RSI,RBX
MOV RDI,R14
ADD dword ptr [0x002b5c40],0x1
CALL 0x0010d5b0
MOV RBX,RAX
MOV RAX,qword ptr [0x002b5c98]
MOV RSI,RBX
MOV RDI,qword ptr [RAX + 0x8]
CALL 0x0010db90
MOV RDI,RBX
CALL 0x0010d110
MOV ESI,0x1
MOV RDI,RBX
CALL 0x0010d700
MOV RAX,qword ptr [0x002b5c98]
XOR EDX,EDX
MOV RDI,RBX
MOV ESI,dword ptr [RAX + 0x18]
MOV RAX,qword ptr [RBX + 0x8]
CALL qword ptr [RAX + 0x290]
MOV EDI,0x18
MOV dword ptr [0x002b5c44],0x0
CALL 0x0010dda0
MOV EDX,0x100
LEA RSI,[0x29ef5b]
MOV RDI,RBX
MOV qword ptr [0x002b5c48],RAX
CALL 0x00154530
SUB RSP,0x8
MOV RDX,RBP
MOV RDI,RBX
PUSH 0x0
MOV R8,RAX
MOV R9D,0x2
MOV R14,RAX
LEA RCX,[0x29f01b]
LEA RSI,[0x29f0c8]
CALL 0x00153370
MOV R9D,0x2
MOV RDX,RBP
MOV RDI,RBX
LEA R8,[0x2b4598]
LEA RCX,[0x29f01b]
MOV dword ptr [RSP],0x0
LEA RSI,[0x29ef6d]
CALL 0x00153370
MOV EDX,0x8
MOV RSI,R14
MOV RDI,RBX
CALL 0x0010d850
MOV EDI,0x8
CALL 0x0010dda0
MOV ECX,0x2
XOR ESI,ESI
MOV RDI,RBX
MOV qword ptr [R14 + 0xb0],RAX
MOV EDX,0x3e
MOV qword ptr [RAX],0x0
MOV qword ptr [RSP + 0x28],RAX
CALL 0x00153440
MOV RDI,R14
CALL 0x001532d0
MOV EDX,dword ptr [0x002b5c44]
MOV RSI,qword ptr [0x002b5c48]
MOV RDI,RBX
CALL 0x0010d690
MOV R9,qword ptr [RSP + 0x28]
XOR ECX,ECX
MOV RSI,R14
MOV R8D,0x8
MOV RDI,RBX
MOV RDX,R9
CALL 0x0010d470
MOV RDI,RBX
CALL 0x0010d170
MOV RSI,qword ptr [RBX]
MOV RDI,RBX
LEA RDX,[0x2b5f40]
CALL 0x001540f0
MOV RAX,qword ptr [0x002b5f90]
MOV dword ptr [0x002b60f0],0x0
AND dword ptr [RAX + 0x44],0xffffefff
POP RDI
POP R8
TEST R13,R13
JZ 0x00156600
MOV EAX,dword ptr [0x002b5fec]
CMP EAX,0x1
JZ 0x00156600
CMP EAX,0x2
JZ 0x0015682c
MOV RAX,qword ptr [R12]
MOV R15,qword ptr [RSP + 0x10]
MOV EDX,0x5
XOR EDI,EDI
MOV RBP,qword ptr [R12 + 0x8]
LEA RSI,[0x29f690]
MOV RAX,qword ptr [RAX]
MOV RBX,qword ptr [R15 + 0xf0]
MOV R13,qword ptr [RAX + 0x8]
CALL 0x0010d300
MOV RCX,RBP
MOV RDX,R15
MOV RSI,RBX
MOV R8,R13
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00129380
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RCX,qword ptr [RSP + 0x30]
MOV qword ptr [RDX],RCX
MOV ECX,EAX
MOV RSI,qword ptr [R14 + RCX*0x1 + -0x8]
MOV qword ptr [RDX + RCX*0x1 + -0x8],RSI
LEA RSI,[RDX + 0x8]
MOV RCX,RDX
AND RSI,-0x8
SUB RCX,RSI
SUB R14,RCX
ADD ECX,EAX
AND ECX,0xfffffff8
CMP ECX,0x8
JC 0x001562bb
AND ECX,0xfffffff8
XOR EAX,EAX
MOV EDI,EAX
ADD EAX,0x8
MOV R8,qword ptr [R14 + RDI*0x1]
MOV qword ptr [RSI + RDI*0x1],R8
CMP EAX,ECX
JC 0x001565c8
JMP 0x001562bb
MOVZX EAX,byte ptr [R14]
MOV byte ptr [RDX],AL
TEST CL,0x2
JZ 0x001562bb
MOVZX EAX,word ptr [R14 + RCX*0x1 + -0x2]
MOV word ptr [RDX + RCX*0x1 + -0x2],AX
JMP 0x001562bb
MOV EDI,0x14
MOV RBX,qword ptr [0x002b5f90]
CALL 0x0010dda0
MOV EDX,dword ptr [0x002b5c40]
LEA RSI,[0x29f0d3]
MOV R14,RAX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x0010dbc0
MOV RSI,RBX
MOV RDI,R14
ADD dword ptr [0x002b5c40],0x1
CALL 0x0010d5b0
MOV RBX,RAX
MOV RAX,qword ptr [0x002b5c98]
MOV RSI,RBX
MOV RDI,qword ptr [RAX + 0x8]
CALL 0x0010db90
MOV RDI,RBX
CALL 0x0010d110
MOV ESI,0x1
MOV RDI,RBX
CALL 0x0010d700
MOV RAX,qword ptr [0x002b5c98]
XOR EDX,EDX
MOV RDI,RBX
MOV ESI,dword ptr [RAX + 0x18]
MOV RAX,qword ptr [RBX + 0x8]
CALL qword ptr [RAX + 0x290]
MOV EDI,0x30
MOV dword ptr [0x002b5c44],0x0
CALL 0x0010dda0
MOV EDX,0x100
LEA RSI,[0x285024]
MOV RDI,RBX
MOV qword ptr [0x002b5c48],RAX
CALL 0x00154530
SUB RSP,0x8
MOV RDX,RBP
MOV RDI,RBX
PUSH 0x0
MOV R9D,0x2
LEA R8,[0x2b4598]
LEA RCX,[0x29f01b]
LEA RSI,[0x29f0c8]
MOV R14,RAX
CALL 0x00153370
MOV RDX,qword ptr [0x002b5c98]
MOV RDI,RBX
LEA RAX,[0x29f01b]
LEA RSI,[0x16d359]
MOV R9D,0x2
LEA R8,[0x2b4598]
MOV EDX,dword ptr [RDX + 0x1c]
LEA RCX,[0x29ef28]
MOV dword ptr [RSP],0x0
TEST EDX,EDX
MOV RDX,R15
CMOVZ RSI,RAX
CALL 0x00153370
LEA RAX,[0x29f01b]
MOV RDI,RBX
MOV RDX,qword ptr [RSP + 0x18]
MOV R9D,0x2
LEA R8,[0x2b4598]
MOV RCX,RAX
MOV RSI,RAX
MOV dword ptr [RSP],0x0
CALL 0x00153370
MOV EDX,0x14
MOV RSI,R14
MOV RDI,RBX
CALL 0x0010d850
MOV EDI,0x14
CALL 0x0010dda0
PXOR XMM0,XMM0
MOV ECX,0x1
XOR ESI,ESI
MOV qword ptr [R14 + 0xb0],RAX
MOV EDX,0x3e
MOV RDI,RBX
MOV R15,RAX
MOV dword ptr [RAX + 0x10],0x0
MOVUPS xmmword ptr [RAX],XMM0
CALL 0x00153440
MOV ECX,0x2
MOV EDX,0x3e
MOV RDI,RBX
MOV ESI,0xc
CALL 0x00153440
MOV ECX,0x3
MOV EDX,0x3e
MOV RDI,RBX
MOV ESI,0x10
CALL 0x00153440
MOV RDI,R14
CALL 0x001532d0
MOV EDX,dword ptr [0x002b5c44]
MOV RSI,qword ptr [0x002b5c48]
MOV RDI,RBX
CALL 0x0010d690
XOR ECX,ECX
MOV R8D,0x14
MOV RDX,R15
MOV RSI,R14
MOV RDI,RBX
CALL 0x0010d470
MOV RDI,RBX
CALL 0x0010d170
MOV RSI,qword ptr [RBX]
LEA RDX,[0x2b5f40]
MOV RDI,RBX
CALL 0x001540f0
POP RCX
POP RSI
TEST R13,R13
JZ 0x00156a40
MOV EAX,dword ptr [0x002b5fec]
CMP EAX,0x1
JNZ 0x0015652b
MOV EAX,dword ptr [0x002b5be4]
TEST EAX,EAX
JNZ 0x00156d50
MOV RAX,qword ptr [R12 + 0x18]
MOV EDI,0x14
MOV RBX,qword ptr [0x002b5f90]
MOV R14D,dword ptr [RAX + 0xc]
CALL 0x0010dda0
MOV EDX,dword ptr [0x002b5c40]
LEA RSI,[0x29f0f9]
MOV RDI,RAX
MOV R12,RAX
XOR EAX,EAX
CALL 0x0010dbc0
MOV RSI,RBX
MOV RDI,R12
ADD dword ptr [0x002b5c40],0x1
CALL 0x0010d5b0
MOV RBX,RAX
MOV RAX,qword ptr [0x002b5c98]
MOV RSI,RBX
MOV RDI,qword ptr [RAX + 0x8]
CALL 0x0010db90
MOV RDI,RBX
CALL 0x0010d110
MOV ESI,0x1
MOV RDI,RBX
CALL 0x0010d700
MOV RAX,qword ptr [0x002b5c98]
XOR EDX,EDX
MOV RDI,RBX
MOV ESI,dword ptr [RAX + 0x18]
MOV RAX,qword ptr [RBX + 0x8]
CALL qword ptr [RAX + 0x290]
CMP dword ptr [0x002b5fec],0x2
MOV EDI,0x10
JNZ 0x001568e3
CMP dword ptr [0x002b5ca0],0x1
SBB RDI,RDI
AND EDI,0x18
ADD RDI,0x18
MOV dword ptr [0x002b5c44],0x0
CALL 0x0010dda0
MOV EDX,0x100
LEA RSI,[0x29f0dc]
MOV RDI,RBX
MOV qword ptr [0x002b5c48],RAX
CALL 0x00154530
SUB RSP,0x8
MOV RDI,RBX
LEA RCX,[0x29f01b]
PUSH 0x0
MOV RDX,qword ptr [RSP + 0x18]
MOV R9D,0x2
MOV RSI,RCX
LEA R8,[0x2b4598]
MOV R12,RAX
CALL 0x00153370
CMP dword ptr [0x002b5fec],0x2
POP R11
POP R15
JNZ 0x00156a60
MOV R10D,dword ptr [0x002b5ca0]
TEST R10D,R10D
JNZ 0x00156ca8
SUB RSP,0x8
MOV R9D,0x2
MOV RDX,RBP
MOV RDI,RBX
PUSH 0x0
LEA R8,[0x2b4598]
LEA RCX,[0x29f01b]
MOV R13D,0x18
LEA RSI,[0x29ef74]
MOV dword ptr [0x002b5ca0],0x1
CALL 0x00153370
MOV EDX,0x18
MOV RSI,R12
MOV RDI,RBX
CALL 0x0010d850
MOV EDI,0x18
CALL 0x0010dda0
PXOR XMM0,XMM0
MOV ECX,0x1
MOV RDI,RBX
MOV qword ptr [R12 + 0xb0],RAX
MOV EDX,0x3e
MOV ESI,0x10
MOV RBP,RAX
MOV qword ptr [RAX + 0x10],0x0
MOVUPS xmmword ptr [RAX],XMM0
CALL 0x00153440
MOV ECX,0x2
MOV EDX,0x3e
MOV RDI,RBX
MOV ESI,0xc
CALL 0x00153440
MOV RAX,qword ptr [RBX + 0x8]
LEA RSI,[RBP + 0x14]
MOV RDI,R14
CALL qword ptr [RAX + 0x48]
MOV RAX,qword ptr [RBX + 0x8]
LEA RSI,[RBP + 0x8]
MOV EDI,0x1
CALL qword ptr [RAX + 0x48]
POP R8
POP R9
MOV RDI,R12
CALL 0x001532d0
MOV EDX,dword ptr [0x002b5c44]
MOV RSI,qword ptr [0x002b5c48]
MOV RDI,RBX
CALL 0x0010d690
MOV R8,R13
JMP 0x00156ad3
CMP dword ptr [0x002b5fec],0x2
JZ 0x0015682c
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDX,0x8
MOV RSI,R12
MOV RDI,RBX
CALL 0x0010d850
MOV EDI,0x8
CALL 0x0010dda0
MOV RDI,R13
MOV qword ptr [R12 + 0xb0],RAX
MOV RBP,RAX
MOV qword ptr [RAX],0x0
MOV RAX,qword ptr [RBX + 0x8]
MOV RSI,RBP
CALL qword ptr [RAX + 0x48]
MOV ECX,0x1
MOV EDX,0x3e
MOV RDI,RBX
MOV ESI,0x4
CALL 0x00153440
MOV RDI,R12
CALL 0x001532d0
MOV EDX,dword ptr [0x002b5c44]
MOV RSI,qword ptr [0x002b5c48]
MOV RDI,RBX
CALL 0x0010d690
MOV R8D,0x8
XOR ECX,ECX
MOV RDX,RBP
MOV RSI,R12
MOV RDI,RBX
CALL 0x0010d470
MOV RDI,RBX
CALL 0x0010d170
MOV RSI,qword ptr [RBX]
LEA RDX,[0x2b5f40]
MOV RDI,RBX
CALL 0x001540f0
MOV EAX,dword ptr [0x002b5ca4]
LEA EDX,[RAX + 0x1]
MOV dword ptr [0x002b5ca4],EDX
TEST EAX,EAX
JNZ 0x00156a4d
MOV EDI,0x14
MOV RBP,qword ptr [0x002b5f90]
CALL 0x0010dda0
MOV EDX,dword ptr [0x002b5c40]
LEA RSI,[0x29f0f8]
MOV RBX,RAX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x0010dbc0
MOV RSI,RBP
MOV RDI,RBX
ADD dword ptr [0x002b5c40],0x1
CALL 0x0010d5b0
MOV RBX,RAX
MOV RAX,qword ptr [0x002b5c98]
MOV RSI,RBX
MOV RDI,qword ptr [RAX + 0x8]
CALL 0x0010db90
MOV RDI,RBX
CALL 0x0010d110
MOV RDI,RBX
MOV ESI,0x1
CALL 0x0010d700
MOV RAX,qword ptr [0x002b5c98]
XOR EDX,EDX
MOV RDI,RBX
MOV ESI,dword ptr [RAX + 0x18]
MOV RAX,qword ptr [RBX + 0x8]
CALL qword ptr [RAX + 0x290]
MOV EDI,0x10
MOV dword ptr [0x002b5c44],0x0
CALL 0x0010dda0
MOV RDI,RBX
MOV EDX,0x100
LEA RSI,[0x2851d3]
MOV qword ptr [0x002b5c48],RAX
CALL 0x00154530
LEA RDX,[0x29f09a]
LEA R8,[0x2b4598]
MOV RDI,RBX
MOV RBP,RAX
MOV RAX,qword ptr [0x002b5c98]
MOV ECX,dword ptr [RAX + 0x1c]
LEA RAX,[0x29f09b]
TEST ECX,ECX
LEA RCX,[0x29f01b]
CMOVZ RDX,RAX
SUB RSP,0x8
XOR R9D,R9D
MOV RSI,RCX
PUSH 0x0
CALL 0x00153370
MOV EDX,0x4
MOV RSI,RBP
MOV RDI,RBX
CALL 0x0010d850
MOV ESI,0x4
MOV EDI,0x1
CALL 0x0010dd00
MOV ECX,0x1
XOR ESI,ESI
MOV RDI,RBX
MOV qword ptr [RBP + 0xb0],RAX
MOV EDX,0x3e
MOV R12,RAX
CALL 0x00153440
MOV RDI,RBP
CALL 0x001532d0
MOV EDX,dword ptr [0x002b5c44]
MOV RSI,qword ptr [0x002b5c48]
MOV RDI,RBX
CALL 0x0010d690
MOV RDX,R12
MOV RSI,RBP
XOR ECX,ECX
MOV R8D,0x4
MOV RDI,RBX
CALL 0x0010d470
MOV RDI,RBX
CALL 0x0010d170
MOV RSI,qword ptr [RBX]
MOV RDI,RBX
LEA RDX,[0x2b5f40]
CALL 0x001540f0
POP RSI
POP RDI
ADD RSP,0x58
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
SUB RSP,0x8
MOV R9D,0x2
MOV RDX,RBP
MOV RDI,RBX
PUSH 0x0
LEA R8,[0x2b4598]
LEA RCX,[0x29f01b]
MOV R13D,0xc
LEA RSI,[0x29ef74]
CALL 0x00153370
MOV EDX,0xc
MOV RSI,R12
MOV RDI,RBX
CALL 0x0010d850
MOV EDI,0xc
CALL 0x0010dda0
MOV ECX,0x1
MOV EDX,0x3e
MOV RDI,RBX
MOV qword ptr [R12 + 0xb0],RAX
MOV ESI,0x4
MOV RBP,RAX
MOV qword ptr [RAX],0x0
MOV dword ptr [RAX + 0x8],0x0
CALL 0x00153440
MOV EDX,0x3e
XOR ESI,ESI
MOV RDI,RBX
MOV ECX,0x2
CALL 0x00153440
MOV RAX,qword ptr [RBX + 0x8]
LEA RSI,[RBP + 0x8]
MOV RDI,R14
CALL qword ptr [RAX + 0x48]
POP RAX
POP RDX
JMP 0x00156a1b
MOV RSI,qword ptr [RSP + 0x8]
MOV EDX,R13D
LEA RDI,[0x29f658]
XOR EAX,EAX
CALL 0x0010d3b0
JMP 0x0015683a
MOV EAX,dword ptr [R14]
MOV dword ptr [RDX],EAX
MOV EAX,dword ptr [R14 + RCX*0x1 + -0x4]
MOV dword ptr [RDX + RCX*0x1 + -0x4],EAX
JMP 0x001562bb
(translation_unit "void FUN_00156210(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 uVar10;\n  undefined1 (*pauVar11) [16];\n  uint uVar12;\n  uint uVar13;\n  uint *puVar14;\n  char cVar15;\n  undefined8 uVar16;\n  bool bVar17;\n  ulong uVar18;\n  undefined8 local_60;\n  uint local_58 [10];\n  \n  lVar8 = **(long **)*param_1;\n  DAT_002b5c08 = DAT_002b5c08 + 1;\n  sprintf((char *)local_58,"__fu%d_");\n  puVar14 = local_58;\n  do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);\n  bVar17 = (uVar12 & 0x8080) == 0;\n  if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }\n  if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));\n  puVar14 = (uint *)(param_4 - (long)pcVar5);\n  uVar13 = (uint)pcVar5;\n  uVar18 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }\n  local_60 = 0;\n  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);\n  uVar16 = *(undefined8 *)(local_60 + 8);\n  if (DAT_002b5fec == 2) goto LAB_0015682c;\n  *(undefined2 *)(param_4 + -2) = 0x5f6b;\n  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;\n  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);\n  lVar8 = DAT_002b5f90;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }\n  lVar8 = DAT_002b5f90;\n  if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }\n  if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }\nLAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }\n  lVar8 = DAT_002b5f90;\n  uVar1 = *(undefined4 *)(param_1[3] + 0xc);\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  cVar15 = '\x10';\n  if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(cVar15);\n  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);\n  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);\n  if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }\n  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  lVar8 = DAT_002b5f90;\n  if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }\n  DAT_002b5ca4 = DAT_002b5ca4 + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(0x10);\n  lVar8 = FUN_00154530(puVar7,".rdata",0x100);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);\n  bfd_set_section_size(puVar7,lVar8,4);\n  uVar16 = xcalloc(1,4);\n  *(undefined8 *)(lVar8 + 0xb0) = uVar16;\n  FUN_00153440(puVar7,0,0x3e,1);\n  FUN_001532d0(lVar8);\n  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  return;\n}\n\n" (function_definition "void FUN_00156210(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 uVar10;\n  undefined1 (*pauVar11) [16];\n  uint uVar12;\n  uint uVar13;\n  uint *puVar14;\n  char cVar15;\n  undefined8 uVar16;\n  bool bVar17;\n  ulong uVar18;\n  undefined8 local_60;\n  uint local_58 [10];\n  \n  lVar8 = **(long **)*param_1;\n  DAT_002b5c08 = DAT_002b5c08 + 1;\n  sprintf((char *)local_58,"__fu%d_");\n  puVar14 = local_58;\n  do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);\n  bVar17 = (uVar12 & 0x8080) == 0;\n  if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }\n  if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));\n  puVar14 = (uint *)(param_4 - (long)pcVar5);\n  uVar13 = (uint)pcVar5;\n  uVar18 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }\n  local_60 = 0;\n  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);\n  uVar16 = *(undefined8 *)(local_60 + 8);\n  if (DAT_002b5fec == 2) goto LAB_0015682c;\n  *(undefined2 *)(param_4 + -2) = 0x5f6b;\n  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;\n  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);\n  lVar8 = DAT_002b5f90;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }\n  lVar8 = DAT_002b5f90;\n  if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }\n  if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }\nLAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }\n  lVar8 = DAT_002b5f90;\n  uVar1 = *(undefined4 *)(param_1[3] + 0xc);\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  cVar15 = '\x10';\n  if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(cVar15);\n  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);\n  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);\n  if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }\n  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  lVar8 = DAT_002b5f90;\n  if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }\n  DAT_002b5ca4 = DAT_002b5ca4 + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(0x10);\n  lVar8 = FUN_00154530(puVar7,".rdata",0x100);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);\n  bfd_set_section_size(puVar7,lVar8,4);\n  uVar16 = xcalloc(1,4);\n  *(undefined8 *)(lVar8 + 0xb0) = uVar16;\n  FUN_00153440(puVar7,0,0x3e,1);\n  FUN_001532d0(lVar8);\n  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  return;\n}" primitive_type (function_declarator "FUN_00156210(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)" identifier (parameter_list "(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_3" type_identifier identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 uVar10;\n  undefined1 (*pauVar11) [16];\n  uint uVar12;\n  uint uVar13;\n  uint *puVar14;\n  char cVar15;\n  undefined8 uVar16;\n  bool bVar17;\n  ulong uVar18;\n  undefined8 local_60;\n  uint local_58 [10];\n  \n  lVar8 = **(long **)*param_1;\n  DAT_002b5c08 = DAT_002b5c08 + 1;\n  sprintf((char *)local_58,"__fu%d_");\n  puVar14 = local_58;\n  do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);\n  bVar17 = (uVar12 & 0x8080) == 0;\n  if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }\n  if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));\n  puVar14 = (uint *)(param_4 - (long)pcVar5);\n  uVar13 = (uint)pcVar5;\n  uVar18 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }\n  local_60 = 0;\n  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);\n  uVar16 = *(undefined8 *)(local_60 + 8);\n  if (DAT_002b5fec == 2) goto LAB_0015682c;\n  *(undefined2 *)(param_4 + -2) = 0x5f6b;\n  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;\n  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);\n  lVar8 = DAT_002b5f90;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }\n  lVar8 = DAT_002b5f90;\n  if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }\n  if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }\nLAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }\n  lVar8 = DAT_002b5f90;\n  uVar1 = *(undefined4 *)(param_1[3] + 0xc);\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  cVar15 = '\x10';\n  if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(cVar15);\n  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);\n  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);\n  if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }\n  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  lVar8 = DAT_002b5f90;\n  if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }\n  DAT_002b5ca4 = DAT_002b5ca4 + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(0x10);\n  lVar8 = FUN_00154530(puVar7,".rdata",0x100);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);\n  bfd_set_section_size(puVar7,lVar8,4);\n  uVar16 = xcalloc(1,4);\n  *(undefined8 *)(lVar8 + 0xb0) = uVar16;\n  FUN_00153440(puVar7,0,0x3e,1);\n  FUN_001532d0(lVar8);\n  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (expression_statement "undefined1 (*pauVar11) [16];" (subscript_expression "undefined1 (*pauVar11) [16]" (call_expression "undefined1 (*pauVar11)" identifier (argument_list "(*pauVar11)" ( (pointer_expression "*pauVar11" * identifier) ))) [ number_literal ]) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "char cVar15;" primitive_type identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "uint local_58 [10];" type_identifier (array_declarator "local_58 [10]" identifier [ number_literal ]) ;) (expression_statement "lVar8 = **(long **)*param_1;" (assignment_expression "lVar8 = **(long **)*param_1" identifier = (pointer_expression "**(long **)*param_1" * (pointer_expression "*(long **)*param_1" * (cast_expression "(long **)*param_1" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*param_1" * identifier))))) ;) (expression_statement "DAT_002b5c08 = DAT_002b5c08 + 1;" (assignment_expression "DAT_002b5c08 = DAT_002b5c08 + 1" identifier = (binary_expression "DAT_002b5c08 + 1" identifier + number_literal)) ;) (expression_statement "sprintf((char *)local_58,"__fu%d_");" (call_expression "sprintf((char *)local_58,"__fu%d_")" identifier (argument_list "((char *)local_58,"__fu%d_")" ( (cast_expression "(char *)local_58" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""__fu%d_"" " string_content ") ))) ;) (expression_statement "puVar14 = local_58;" (assignment_expression "puVar14 = local_58" identifier = identifier) ;) (do_statement "do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);" do (compound_statement "{\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  }" { (expression_statement "puVar4 = puVar14;" (assignment_expression "puVar4 = puVar14" identifier = identifier) ;) (expression_statement "uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;" (assignment_expression "uVar12 = *puVar4 + 0xfefefeff & ~*puVar4" identifier = (binary_expression "*puVar4 + 0xfefefeff & ~*puVar4" (binary_expression "*puVar4 + 0xfefefeff" (pointer_expression "*puVar4" * identifier) + number_literal) & (unary_expression "~*puVar4" ~ (pointer_expression "*puVar4" * identifier)))) ;) (expression_statement "uVar13 = uVar12 & 0x80808080;" (assignment_expression "uVar13 = uVar12 & 0x80808080" identifier = (binary_expression "uVar12 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar14 = puVar4 + 1;" (assignment_expression "puVar14 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) ;) (expression_statement "bVar17 = (uVar12 & 0x8080) == 0;" (assignment_expression "bVar17 = (uVar12 & 0x8080) == 0" identifier = (binary_expression "(uVar12 & 0x8080) == 0" (parenthesized_expression "(uVar12 & 0x8080)" ( (binary_expression "uVar12 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n    uVar13 = uVar13 >> 0x10;\n  }" { (expression_statement "uVar13 = uVar13 >> 0x10;" (assignment_expression "uVar13 = uVar13 >> 0x10" identifier = (binary_expression "uVar13 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }" { (expression_statement "puVar14 = (uint *)((long)puVar4 + 6);" (assignment_expression "puVar14 = (uint *)((long)puVar4 + 6)" identifier = (cast_expression "(uint *)((long)puVar4 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + 6)" ( (binary_expression "(long)puVar4 + 6" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));" (assignment_expression "pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58))" identifier = (cast_expression "(char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58))" ( (binary_expression "(long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58)" ( (binary_expression "(-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13))" ( (binary_expression "-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar13,(byte)uVar13)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar13,(byte)uVar13)" identifier (argument_list "((byte)uVar13,(byte)uVar13)" ( (cast_expression "(byte)uVar13" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar13" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (expression_statement "puVar14 = (uint *)(param_4 - (long)pcVar5);" (assignment_expression "puVar14 = (uint *)(param_4 - (long)pcVar5)" identifier = (cast_expression "(uint *)(param_4 - (long)pcVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 - (long)pcVar5)" ( (binary_expression "param_4 - (long)pcVar5" identifier - (cast_expression "(long)pcVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "uVar13 = (uint)pcVar5;" (assignment_expression "uVar13 = (uint)pcVar5" identifier = (cast_expression "(uint)pcVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = (ulong)pcVar5 & 0xffffffff;" (assignment_expression "uVar18 = (ulong)pcVar5 & 0xffffffff" identifier = (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }" if (parenthesized_expression "(uVar13 < 8)" ( (binary_expression "uVar13 < 8" identifier < number_literal) )) (compound_statement "{\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }" { (if_statement "if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }" if (parenthesized_expression "(((ulong)pcVar5 & 4) == 0)" ( (binary_expression "((ulong)pcVar5 & 4) == 0" (parenthesized_expression "((ulong)pcVar5 & 4)" ( (binary_expression "(ulong)pcVar5 & 4" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }" { (if_statement "if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }" { (expression_statement "*(undefined1 *)puVar14 = (undefined1)local_58[0];" (assignment_expression "*(undefined1 *)puVar14 = (undefined1)local_58[0]" (pointer_expression "*(undefined1 *)puVar14" * (cast_expression "(undefined1 *)puVar14" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_58[0]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "local_58[0]" identifier [ number_literal ]))) ;) (if_statement "if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }" if (parenthesized_expression "(((ulong)pcVar5 & 2) != 0)" ( (binary_expression "((ulong)pcVar5 & 2) != 0" (parenthesized_expression "((ulong)pcVar5 & 2)" ( (binary_expression "(ulong)pcVar5 & 2" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }" { (expression_statement "*(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));" (assignment_expression "*(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2))" (pointer_expression "*(undefined2 *)((long)puVar14 + (uVar18 - 2))" * (cast_expression "(undefined2 *)((long)puVar14 + (uVar18 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + (uVar18 - 2))" ( (binary_expression "(long)puVar14 + (uVar18 - 2)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - 2)" ( (binary_expression "uVar18 - 2" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined2 *)((long)local_58 + (uVar18 - 2))" * (cast_expression "(undefined2 *)((long)local_58 + (uVar18 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + (uVar18 - 2))" ( (binary_expression "(long)local_58 + (uVar18 - 2)" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - 2)" ( (binary_expression "uVar18 - 2" identifier - number_literal) ))) ))))) ;) })) })) }) (else_clause "else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }" else (compound_statement "{\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }" { (expression_statement "*puVar14 = local_58[0];" (assignment_expression "*puVar14 = local_58[0]" (pointer_expression "*puVar14" * identifier) = (subscript_expression "local_58[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;" (assignment_expression "*(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))" (pointer_expression "*(undefined4 *)((long)puVar14 + (uVar18 - 4))" * (cast_expression "(undefined4 *)((long)puVar14 + (uVar18 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + (uVar18 - 4))" ( (binary_expression "(long)puVar14 + (uVar18 - 4)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - 4)" ( (binary_expression "uVar18 - 4" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined4 *)((long)local_58 + (uVar18 - 4))" * (cast_expression "(undefined4 *)((long)local_58 + (uVar18 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + (uVar18 - 4))" ( (binary_expression "(long)local_58 + (uVar18 - 4)" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - 4)" ( (binary_expression "uVar18 - 4" identifier - number_literal) ))) ))))) ;) }))) }) (else_clause "else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }" else (compound_statement "{\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }" { (expression_statement "*(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);" (assignment_expression "*(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0])" (pointer_expression "*(ulong *)puVar14" * (cast_expression "(ulong *)puVar14" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(local_58[1],local_58[0])" identifier (argument_list "(local_58[1],local_58[0])" ( (subscript_expression "local_58[1]" identifier [ number_literal ]) , (subscript_expression "local_58[0]" identifier [ number_literal ]) )))) ;) (expression_statement "*(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));" (assignment_expression "*(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" (pointer_expression "*(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8))" * (cast_expression "(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (binary_expression "(long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(((ulong)pcVar5 & 0xffffffff) - 8)" ( (binary_expression "((ulong)pcVar5 & 0xffffffff) - 8" (parenthesized_expression "((ulong)pcVar5 & 0xffffffff)" ( (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" * (cast_expression "(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (binary_expression "(long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8)" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(((ulong)pcVar5 & 0xffffffff) - 8)" ( (binary_expression "((ulong)pcVar5 & 0xffffffff) - 8" (parenthesized_expression "((ulong)pcVar5 & 0xffffffff)" ( (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) - number_literal) ))) ))))) ;) (expression_statement "lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);" (assignment_expression "lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (parenthesized_expression "((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar14 + 2) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar14 + 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar14 + 2)" ( (binary_expression "puVar14 + 2" identifier + number_literal) ))) & number_literal) )))) ;) (expression_statement "uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;" (assignment_expression "uVar13 = (int)lVar6 + uVar13 & 0xfffffff8" identifier = (binary_expression "(int)lVar6 + uVar13 & 0xfffffff8" (binary_expression "(int)lVar6 + uVar13" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) & number_literal)) ;) (if_statement "if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }" if (parenthesized_expression "(7 < uVar13)" ( (binary_expression "7 < uVar13" number_literal < identifier) )) (compound_statement "{\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);" do (compound_statement "{\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      }" { (expression_statement "uVar18 = (ulong)uVar12;" (assignment_expression "uVar18 = (ulong)uVar12" identifier = (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = uVar12 + 8;" (assignment_expression "uVar12 = uVar12 + 8" identifier = (binary_expression "uVar12 + 8" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));" (assignment_expression "*(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6))" (pointer_expression "*(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18)" * (cast_expression "(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18)" ( (binary_expression "((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18" (parenthesized_expression "((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar14 + 2) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar14 + 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar14 + 2)" ( (binary_expression "puVar14 + 2" identifier + number_literal) ))) & number_literal) )) + identifier) )))) = (pointer_expression "*(undefined8 *)((long)local_58 + (uVar18 - lVar6))" * (cast_expression "(undefined8 *)((long)local_58 + (uVar18 - lVar6))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + (uVar18 - lVar6))" ( (binary_expression "(long)local_58 + (uVar18 - lVar6)" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - lVar6)" ( (binary_expression "uVar18 - lVar6" identifier - identifier) ))) ))))) ;) }) while (parenthesized_expression "(uVar12 < uVar13)" ( (binary_expression "uVar12 < uVar13" identifier < identifier) )) ;) })) }))) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);" (call_expression "(**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60)" (parenthesized_expression "(**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))" ( (pointer_expression "**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" * (pointer_expression "*(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" * (cast_expression "(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" ( (binary_expression "*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138" (pointer_expression "*(long *)(*(long *)(lVar8 + 8) + 0x368)" * (cast_expression "(long *)(*(long *)(lVar8 + 8) + 0x368)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar8 + 8) + 0x368)" ( (binary_expression "*(long *)(lVar8 + 8) + 0x368" (pointer_expression "*(long *)(lVar8 + 8)" * (cast_expression "(long *)(lVar8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 8)" ( (binary_expression "lVar8 + 8" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) )) (argument_list "(&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60)" ( (pointer_expression "&DAT_002b5f40" & identifier) , identifier , identifier , number_literal , identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) , number_literal , number_literal , number_literal , (pointer_expression "&local_60" & identifier) ))) ;) (expression_statement "uVar16 = *(undefined8 *)(local_60 + 8);" (assignment_expression "uVar16 = *(undefined8 *)(local_60 + 8)" identifier = (pointer_expression "*(undefined8 *)(local_60 + 8)" * (cast_expression "(undefined8 *)(local_60 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + 8)" ( (binary_expression "local_60 + 8" identifier + number_literal) ))))) ;) (if_statement "if (DAT_002b5fec == 2) goto LAB_0015682c;" if (parenthesized_expression "(DAT_002b5fec == 2)" ( (binary_expression "DAT_002b5fec == 2" identifier == number_literal) )) (goto_statement "goto LAB_0015682c;" goto statement_identifier ;)) (expression_statement "*(undefined2 *)(param_4 + -2) = 0x5f6b;" (assignment_expression "*(undefined2 *)(param_4 + -2) = 0x5f6b" (pointer_expression "*(undefined2 *)(param_4 + -2)" * (cast_expression "(undefined2 *)(param_4 + -2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + -2)" ( (binary_expression "param_4 + -2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;" (assignment_expression "*(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f" (pointer_expression "*(undefined8 *)(param_4 + -10)" * (cast_expression "(undefined8 *)(param_4 + -10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + -10)" ( (binary_expression "param_4 + -10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);" (assignment_expression "lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1)" identifier = (call_expression "bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1)" identifier (argument_list "(DAT_002b5f68,param_4 + -10,0,0,1)" ( identifier , (binary_expression "param_4 + -10" identifier + number_literal) , number_literal , number_literal , number_literal )))) ;) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" identifier = identifier) ;) (if_statement "if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }" if (parenthesized_expression "((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03'))" ( (binary_expression "(lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')" (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(lVar6 + 0x18) != '\x03')" ( (binary_expression "*(char *)(lVar6 + 0x18) != '\x03'" (pointer_expression "*(char *)(lVar6 + 0x18)" * (cast_expression "(char *)(lVar6 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) != (char_literal "'\x03'" ' escape_sequence ')) ))) )) (compound_statement "{\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }" { (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40)" identifier (argument_list "(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40)" ( identifier , (string_literal ""nmth%06d.o"" " string_content ") , (cast_expression "(ulong)DAT_002b5c40" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" identifier = (binary_expression "DAT_002b5c40 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" identifier = (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar5,lVar8)" identifier (argument_list "(pcVar5,lVar8)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" identifier (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" * (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 8)" ( (binary_expression "DAT_002b5c98 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" identifier (argument_list "(puVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" ( (pointer_expression "**(code **)(puVar7[1] + 0x290)" * (pointer_expression "*(code **)(puVar7[1] + 0x290)" * (cast_expression "(code **)(puVar7[1] + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x290)" ( (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" * (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x18)" ( (binary_expression "DAT_002b5c98 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5c48 = xmalloc(0x18);" (assignment_expression "DAT_002b5c48 = xmalloc(0x18)" identifier = (call_expression "xmalloc(0x18)" identifier (argument_list "(0x18)" ( number_literal )))) ;) (expression_statement "lVar8 = FUN_00154530(puVar7,".idata$4",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".idata$4",0x100)" identifier = (call_expression "FUN_00154530(puVar7,".idata$4",0x100)" identifier (argument_list "(puVar7,".idata$4",0x100)" ( identifier , (string_literal "".idata$4"" " string_content ") , number_literal )))) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);" (call_expression "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0)" identifier (argument_list "(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0)" ( identifier , (string_literal ""__nm_thnk_"" " string_content ") , identifier , (string_literal """" " ") , identifier , number_literal , number_literal ))) ;) (expression_statement "FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);" (call_expression "FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" identifier (argument_list "(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" ( identifier , (string_literal ""__nm_"" " string_content ") , identifier , (string_literal """" " ") , number_literal , number_literal , (binary_expression "uVar18 & 0xffffffff00000000" identifier & number_literal) ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,8);" (call_expression "bfd_set_section_size(puVar7,lVar8,8)" identifier (argument_list "(puVar7,lVar8,8)" ( identifier , identifier , number_literal ))) ;) (expression_statement "puVar9 = (undefined8 *)xmalloc(8);" (assignment_expression "puVar9 = (undefined8 *)xmalloc(8)" identifier = (cast_expression "(undefined8 *)xmalloc(8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "*(undefined8 **)(lVar8 + 0xb0) = puVar9;" (assignment_expression "*(undefined8 **)(lVar8 + 0xb0) = puVar9" (pointer_expression "*(undefined8 **)(lVar8 + 0xb0)" * (cast_expression "(undefined8 **)(lVar8 + 0xb0)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "FUN_00153440(puVar7,0,0x3e,2);" (call_expression "FUN_00153440(puVar7,0,0x3e,2)" identifier (argument_list "(puVar7,0,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);" (call_expression "bfd_set_section_contents(puVar7,lVar8,puVar9,0,8)" identifier (argument_list "(puVar7,lVar8,puVar9,0,8)" ( identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" identifier (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" ( identifier , (pointer_expression "*puVar7" * identifier) , (pointer_expression "&DAT_002b5f40" & identifier) ))) ;) (expression_statement "DAT_002b60f0 = 0;" (assignment_expression "DAT_002b60f0 = 0" identifier = number_literal) ;) (expression_statement "*(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;" (assignment_expression "*(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff" (pointer_expression "*(uint *)(DAT_002b5f90 + 0x44)" * (cast_expression "(uint *)(DAT_002b5f90 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x44)" ( (binary_expression "DAT_002b5f90 + 0x44" identifier + number_literal) )))) = (binary_expression "*(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff" (pointer_expression "*(uint *)(DAT_002b5f90 + 0x44)" * (cast_expression "(uint *)(DAT_002b5f90 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x44)" ( (binary_expression "DAT_002b5f90 + 0x44" identifier + number_literal) )))) & number_literal)) ;) })) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" identifier = identifier) ;) (if_statement "if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }" if (parenthesized_expression "((param_3 == 0) || (DAT_002b5fec == 1))" ( (binary_expression "(param_3 == 0) || (DAT_002b5fec == 1)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(DAT_002b5fec == 1)" ( (binary_expression "DAT_002b5fec == 1" identifier == number_literal) ))) )) (compound_statement "{\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }" { (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40)" identifier (argument_list "(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40)" ( identifier , (string_literal ""fu%06d.o"" " string_content ") , (cast_expression "(ulong)DAT_002b5c40" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" identifier = (binary_expression "DAT_002b5c40 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" identifier = (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar5,lVar8)" identifier (argument_list "(pcVar5,lVar8)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" identifier (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" * (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 8)" ( (binary_expression "DAT_002b5c98 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" identifier (argument_list "(puVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" ( (pointer_expression "**(code **)(puVar7[1] + 0x290)" * (pointer_expression "*(code **)(puVar7[1] + 0x290)" * (cast_expression "(code **)(puVar7[1] + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x290)" ( (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" * (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x18)" ( (binary_expression "DAT_002b5c98 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5c48 = xmalloc(0x30);" (assignment_expression "DAT_002b5c48 = xmalloc(0x30)" identifier = (call_expression "xmalloc(0x30)" identifier (argument_list "(0x30)" ( number_literal )))) ;) (expression_statement "lVar8 = FUN_00154530(puVar7,".idata$2",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".idata$2",0x100)" identifier = (call_expression "FUN_00154530(puVar7,".idata$2",0x100)" identifier (argument_list "(puVar7,".idata$2",0x100)" ( identifier , (string_literal "".idata$2"" " string_content ") , number_literal )))) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0)" identifier (argument_list "(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0)" ( identifier , (string_literal ""__nm_thnk_"" " string_content ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (expression_statement "pcVar5 = "_";" (assignment_expression "pcVar5 = "_"" identifier = (string_literal ""_"" " string_content ")) ;) (expression_statement "uVar18 = uVar18 & 0xffffffff00000000;" (assignment_expression "uVar18 = uVar18 & 0xffffffff00000000" identifier = (binary_expression "uVar18 & 0xffffffff00000000" identifier & number_literal)) ;) (if_statement "if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }" if (parenthesized_expression "(*(int *)(DAT_002b5c98 + 0x1c) == 0)" ( (binary_expression "*(int *)(DAT_002b5c98 + 0x1c) == 0" (pointer_expression "*(int *)(DAT_002b5c98 + 0x1c)" * (cast_expression "(int *)(DAT_002b5c98 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x1c)" ( (binary_expression "DAT_002b5c98 + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      pcVar5 = "";\n    }" { (expression_statement "pcVar5 = "";" (assignment_expression "pcVar5 = """ identifier = (string_literal """" " ")) ;) })) (expression_statement "FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);" (call_expression "FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18)" identifier (argument_list "(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18)" ( identifier , identifier , identifier , (string_literal ""_iname"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);" (call_expression "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" identifier (argument_list "(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" ( identifier , (string_literal """" " ") , identifier , (string_literal """" " ") , number_literal , number_literal , (binary_expression "uVar18 & 0xffffffff00000000" identifier & number_literal) ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,0x14);" (call_expression "bfd_set_section_size(puVar7,lVar8,0x14)" identifier (argument_list "(puVar7,lVar8,0x14)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(0x14);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(0x14)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x14)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" * (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)pauVar11[1] = 0;" (assignment_expression "*(undefined4 *)pauVar11[1] = 0" (pointer_expression "*(undefined4 *)pauVar11[1]" * (cast_expression "(undefined4 *)pauVar11[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pauVar11[1]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*pauVar11 = (undefined1  [16])0x0;" (assignment_expression "*pauVar11 = (undefined1  [16])0x0" (pointer_expression "*pauVar11" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "FUN_00153440(puVar7,0,0x3e,1);" (call_expression "FUN_00153440(puVar7,0,0x3e,1)" identifier (argument_list "(puVar7,0,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_00153440(puVar7,0xc,0x3e,2);" (call_expression "FUN_00153440(puVar7,0xc,0x3e,2)" identifier (argument_list "(puVar7,0xc,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_00153440(puVar7,0x10,0x3e,3);" (call_expression "FUN_00153440(puVar7,0x10,0x3e,3)" identifier (argument_list "(puVar7,0x10,0x3e,3)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);" (call_expression "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14)" identifier (argument_list "(puVar7,lVar8,pauVar11,0,0x14)" ( identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" identifier (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" ( identifier , (pointer_expression "*puVar7" * identifier) , (pointer_expression "&DAT_002b5f40" & identifier) ))) ;) (if_statement "if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }" { (if_statement "if (DAT_002b5fec != 2) {\n        return;\n      }" if (parenthesized_expression "(DAT_002b5fec != 2)" ( (binary_expression "DAT_002b5fec != 2" identifier != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (goto_statement "goto LAB_0015682c;" goto statement_identifier ;) })) (if_statement "if (DAT_002b5fec == 1) goto LAB_0015682c;" if (parenthesized_expression "(DAT_002b5fec == 1)" ( (binary_expression "DAT_002b5fec == 1" identifier == number_literal) )) (goto_statement "goto LAB_0015682c;" goto statement_identifier ;)) })) (if_statement "if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }" if (parenthesized_expression "(DAT_002b5fec != 2)" ( (binary_expression "DAT_002b5fec != 2" identifier != number_literal) )) (compound_statement "{\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }" { (expression_statement "uVar16 = param_1[1];" (assignment_expression "uVar16 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *(undefined8 *)(param_2 + 0xf0);" (assignment_expression "uVar2 = *(undefined8 *)(param_2 + 0xf0)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" * (cast_expression "(undefined8 *)(param_2 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf0)" ( (binary_expression "param_2 + 0xf0" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(*(long *)*param_1 + 8)" identifier = (pointer_expression "*(undefined8 *)(*(long *)*param_1 + 8)" * (cast_expression "(undefined8 *)(*(long *)*param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)*param_1 + 8)" ( (binary_expression "*(long *)*param_1 + 8" (pointer_expression "*(long *)*param_1" * (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) + number_literal) ))))) ;) (expression_statement "uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);" (assignment_expression "uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5)" identifier = (call_expression "dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5)" identifier (argument_list "(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5)" ( number_literal , (string_literal ""%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);" (call_expression "FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3)" identifier (argument_list "(uVar10,uVar2,param_2,uVar16,uVar3)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }" statement_identifier : (if_statement "if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }" if (parenthesized_expression "(DAT_002b5be4 != 0)" ( (binary_expression "DAT_002b5be4 != 0" identifier != number_literal) )) (compound_statement "{\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }" { (expression_statement "printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);" (call_expression "printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff)" identifier (argument_list "("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff)" ( (string_literal ""creating runtime pseudo-reloc entry for %s (addend=%d)\n"" " string_content escape_sequence ") , identifier , (binary_expression "param_3 & 0xffffffff" identifier & number_literal) ))) ;) }))) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" identifier = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(param_1[3] + 0xc);" (assignment_expression "uVar1 = *(undefined4 *)(param_1[3] + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_1[3] + 0xc)" * (cast_expression "(undefined4 *)(param_1[3] + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[3] + 0xc)" ( (binary_expression "param_1[3] + 0xc" (subscript_expression "param_1[3]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40)" identifier (argument_list "(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40)" ( identifier , (string_literal ""rtr%06d.o"" " string_content ") , (cast_expression "(ulong)DAT_002b5c40" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" identifier = (binary_expression "DAT_002b5c40 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" identifier = (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar5,lVar8)" identifier (argument_list "(pcVar5,lVar8)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" identifier (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" * (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 8)" ( (binary_expression "DAT_002b5c98 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" identifier (argument_list "(puVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" ( (pointer_expression "**(code **)(puVar7[1] + 0x290)" * (pointer_expression "*(code **)(puVar7[1] + 0x290)" * (cast_expression "(code **)(puVar7[1] + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x290)" ( (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" * (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x18)" ( (binary_expression "DAT_002b5c98 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "cVar15 = '\x10';" (assignment_expression "cVar15 = '\x10'" identifier = (char_literal "'\x10'" ' escape_sequence ')) ;) (if_statement "if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }" if (parenthesized_expression "(DAT_002b5fec == 2)" ( (binary_expression "DAT_002b5fec == 2" identifier == number_literal) )) (compound_statement "{\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }" { (expression_statement "cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;" (assignment_expression "cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18" identifier = (binary_expression "(-(DAT_002b5ca0 == 0) & 0x18U) + 0x18" (parenthesized_expression "(-(DAT_002b5ca0 == 0) & 0x18U)" ( (binary_expression "-(DAT_002b5ca0 == 0) & 0x18U" (unary_expression "-(DAT_002b5ca0 == 0)" - (parenthesized_expression "(DAT_002b5ca0 == 0)" ( (binary_expression "DAT_002b5ca0 == 0" identifier == number_literal) ))) & number_literal) )) + number_literal)) ;) })) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5c48 = xmalloc(cVar15);" (assignment_expression "DAT_002b5c48 = xmalloc(cVar15)" identifier = (call_expression "xmalloc(cVar15)" identifier (argument_list "(cVar15)" ( identifier )))) ;) (expression_statement "lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100)" identifier = (call_expression "FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100)" identifier (argument_list "(puVar7,".rdata_runtime_pseudo_reloc",0x100)" ( identifier , (string_literal "".rdata_runtime_pseudo_reloc"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0)" identifier (argument_list "(puVar7,"",uVar16,"",0x2b4598,2,0)" ( identifier , (string_literal """" " ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (if_statement "if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }" if (parenthesized_expression "(DAT_002b5fec == 2)" ( (binary_expression "DAT_002b5fec == 2" identifier == number_literal) )) (compound_statement "{\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }" { (if_statement "if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }" if (parenthesized_expression "(DAT_002b5ca0 == 0)" ( (binary_expression "DAT_002b5ca0 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }" { (expression_statement "uVar16 = 0x18;" (assignment_expression "uVar16 = 0x18" identifier = number_literal) ;) (expression_statement "DAT_002b5ca0 = 1;" (assignment_expression "DAT_002b5ca0 = 1" identifier = number_literal) ;) (expression_statement "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" identifier (argument_list "(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" ( identifier , (string_literal ""__imp_"" " string_content ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,0x18);" (call_expression "bfd_set_section_size(puVar7,lVar8,0x18)" identifier (argument_list "(puVar7,lVar8,0x18)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(0x18);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(0x18)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x18)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" * (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)pauVar11[1] = 0;" (assignment_expression "*(undefined8 *)pauVar11[1] = 0" (pointer_expression "*(undefined8 *)pauVar11[1]" * (cast_expression "(undefined8 *)pauVar11[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pauVar11[1]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*pauVar11 = (undefined1  [16])0x0;" (assignment_expression "*pauVar11 = (undefined1  [16])0x0" (pointer_expression "*pauVar11" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "FUN_00153440(puVar7,0x10,0x3e,1);" (call_expression "FUN_00153440(puVar7,0x10,0x3e,1)" identifier (argument_list "(puVar7,0x10,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_00153440(puVar7,0xc,0x3e,2);" (call_expression "FUN_00153440(puVar7,0xc,0x3e,2)" identifier (argument_list "(puVar7,0xc,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);" (call_expression "(**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" ( (pointer_expression "**(code **)(puVar7[1] + 0x48)" * (pointer_expression "*(code **)(puVar7[1] + 0x48)" * (cast_expression "(code **)(puVar7[1] + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x48)" ( (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(uVar1,pauVar11[1] + 4)" ( identifier , (binary_expression "pauVar11[1] + 4" (subscript_expression "pauVar11[1]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);" (call_expression "(**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" ( (pointer_expression "**(code **)(puVar7[1] + 0x48)" * (pointer_expression "*(code **)(puVar7[1] + 0x48)" * (cast_expression "(code **)(puVar7[1] + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x48)" ( (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(1,*pauVar11 + 8)" ( number_literal , (binary_expression "*pauVar11 + 8" (pointer_expression "*pauVar11" * identifier) + number_literal) ))) ;) }) (else_clause "else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }" else (compound_statement "{\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }" { (expression_statement "uVar16 = 0xc;" (assignment_expression "uVar16 = 0xc" identifier = number_literal) ;) (expression_statement "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" identifier (argument_list "(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" ( identifier , (string_literal ""__imp_"" " string_content ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,0xc);" (call_expression "bfd_set_section_size(puVar7,lVar8,0xc)" identifier (argument_list "(puVar7,lVar8,0xc)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(0xc);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(0xc)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0xc)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" * (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)*pauVar11 = 0;" (assignment_expression "*(undefined8 *)*pauVar11 = 0" (pointer_expression "*(undefined8 *)*pauVar11" * (cast_expression "(undefined8 *)*pauVar11" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pauVar11" * identifier))) = number_literal) ;) (expression_statement "*(undefined4 *)(*pauVar11 + 8) = 0;" (assignment_expression "*(undefined4 *)(*pauVar11 + 8) = 0" (pointer_expression "*(undefined4 *)(*pauVar11 + 8)" * (cast_expression "(undefined4 *)(*pauVar11 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pauVar11 + 8)" ( (binary_expression "*pauVar11 + 8" (pointer_expression "*pauVar11" * identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00153440(puVar7,4,0x3e,1);" (call_expression "FUN_00153440(puVar7,4,0x3e,1)" identifier (argument_list "(puVar7,4,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_00153440(puVar7,0,0x3e,2);" (call_expression "FUN_00153440(puVar7,0,0x3e,2)" identifier (argument_list "(puVar7,0,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);" (call_expression "(**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" ( (pointer_expression "**(code **)(puVar7[1] + 0x48)" * (pointer_expression "*(code **)(puVar7[1] + 0x48)" * (cast_expression "(code **)(puVar7[1] + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x48)" ( (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(uVar1,*pauVar11 + 8)" ( identifier , (binary_expression "*pauVar11 + 8" (pointer_expression "*pauVar11" * identifier) + number_literal) ))) ;) }))) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }" else (compound_statement "{\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }" { (expression_statement "bfd_set_section_size(puVar7,lVar8,8);" (call_expression "bfd_set_section_size(puVar7,lVar8,8)" identifier (argument_list "(puVar7,lVar8,8)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(8);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(8)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(8)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" * (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)*pauVar11 = 0;" (assignment_expression "*(undefined8 *)*pauVar11 = 0" (pointer_expression "*(undefined8 *)*pauVar11" * (cast_expression "(undefined8 *)*pauVar11" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pauVar11" * identifier))) = number_literal) ;) (expression_statement "(**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);" (call_expression "(**(code **)(puVar7[1] + 0x48))(param_3,pauVar11)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" ( (pointer_expression "**(code **)(puVar7[1] + 0x48)" * (pointer_expression "*(code **)(puVar7[1] + 0x48)" * (cast_expression "(code **)(puVar7[1] + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x48)" ( (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_3,pauVar11)" ( identifier , identifier ))) ;) (expression_statement "FUN_00153440(puVar7,4,0x3e,1);" (call_expression "FUN_00153440(puVar7,4,0x3e,1)" identifier (argument_list "(puVar7,4,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar16 = 8;" (assignment_expression "uVar16 = 8" identifier = number_literal) ;) }))) (expression_statement "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);" (call_expression "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16)" identifier (argument_list "(puVar7,lVar8,pauVar11,0,uVar16)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" identifier (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" ( identifier , (pointer_expression "*puVar7" * identifier) , (pointer_expression "&DAT_002b5f40" & identifier) ))) ;) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" identifier = identifier) ;) (if_statement "if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }" if (parenthesized_expression "(DAT_002b5ca4 != 0)" ( (binary_expression "DAT_002b5ca4 != 0" identifier != number_literal) )) (compound_statement "{\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }" { (expression_statement "DAT_002b5ca4 = DAT_002b5ca4 + 1;" (assignment_expression "DAT_002b5ca4 = DAT_002b5ca4 + 1" identifier = (binary_expression "DAT_002b5ca4 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "DAT_002b5ca4 = DAT_002b5ca4 + 1;" (assignment_expression "DAT_002b5ca4 = DAT_002b5ca4 + 1" identifier = (binary_expression "DAT_002b5ca4 + 1" identifier + number_literal)) ;) (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40)" identifier (argument_list "(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40)" ( identifier , (string_literal ""ertr%06d.o"" " string_content ") , (cast_expression "(ulong)DAT_002b5c40" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" identifier = (binary_expression "DAT_002b5c40 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" identifier = (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar5,lVar8)" identifier (argument_list "(pcVar5,lVar8)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" identifier (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" * (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 8)" ( (binary_expression "DAT_002b5c98 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" identifier (argument_list "(puVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" ( (pointer_expression "**(code **)(puVar7[1] + 0x290)" * (pointer_expression "*(code **)(puVar7[1] + 0x290)" * (cast_expression "(code **)(puVar7[1] + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x290)" ( (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" * (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x18)" ( (binary_expression "DAT_002b5c98 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5c48 = xmalloc(0x10);" (assignment_expression "DAT_002b5c48 = xmalloc(0x10)" identifier = (call_expression "xmalloc(0x10)" identifier (argument_list "(0x10)" ( number_literal )))) ;) (expression_statement "lVar8 = FUN_00154530(puVar7,".rdata",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".rdata",0x100)" identifier = (call_expression "FUN_00154530(puVar7,".rdata",0x100)" identifier (argument_list "(puVar7,".rdata",0x100)" ( identifier , (string_literal "".rdata"" " string_content ") , number_literal )))) ;) (expression_statement "pcVar5 = "__pei386_runtime_relocator";" (assignment_expression "pcVar5 = "__pei386_runtime_relocator"" identifier = (string_literal ""__pei386_runtime_relocator"" " string_content ")) ;) (if_statement "if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }" if (parenthesized_expression "(*(int *)(DAT_002b5c98 + 0x1c) == 0)" ( (binary_expression "*(int *)(DAT_002b5c98 + 0x1c) == 0" (pointer_expression "*(int *)(DAT_002b5c98 + 0x1c)" * (cast_expression "(int *)(DAT_002b5c98 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x1c)" ( (binary_expression "DAT_002b5c98 + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    pcVar5 = "_pei386_runtime_relocator";\n  }" { (expression_statement "pcVar5 = "_pei386_runtime_relocator";" (assignment_expression "pcVar5 = "_pei386_runtime_relocator"" identifier = (string_literal ""_pei386_runtime_relocator"" " string_content ")) ;) })) (expression_statement "FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);" (call_expression "FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0)" identifier (argument_list "(puVar7,"",pcVar5,"",0x2b4598,0,0)" ( identifier , (string_literal """" " ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,4);" (call_expression "bfd_set_section_size(puVar7,lVar8,4)" identifier (argument_list "(puVar7,lVar8,4)" ( identifier , identifier , number_literal ))) ;) (expression_statement "uVar16 = xcalloc(1,4);" (assignment_expression "uVar16 = xcalloc(1,4)" identifier = (call_expression "xcalloc(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined8 *)(lVar8 + 0xb0) = uVar16;" (assignment_expression "*(undefined8 *)(lVar8 + 0xb0) = uVar16" (pointer_expression "*(undefined8 *)(lVar8 + 0xb0)" * (cast_expression "(undefined8 *)(lVar8 + 0xb0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00153440(puVar7,0,0x3e,1);" (call_expression "FUN_00153440(puVar7,0,0x3e,1)" identifier (argument_list "(puVar7,0,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);" (call_expression "bfd_set_section_contents(puVar7,lVar8,uVar16,0,4)" identifier (argument_list "(puVar7,lVar8,uVar16,0,4)" ( identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" identifier (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" ( identifier , (pointer_expression "*puVar7" * identifier) , (pointer_expression "&DAT_002b5f40" & identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void pe_create_import_fixup(arelent *rel,asection *s,bfd_vma addend,char *name,char *symname)\n\n{\n  bfd_size_type bVar1;\n  bfd_vma bVar2;\n  uint *puVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  bfd *pbVar7;\n  asection *paVar8;\n  uchar *puVar9;\n  undefined1 (*pauVar10) [16];\n  int iVar11;\n  ulong uVar12;\n  uint uVar13;\n  uint uVar14;\n  char *pcVar15;\n  char cVar16;\n  undefined8 uVar17;\n  bool bVar18;\n  bfd_link_hash_entry *bh;\n  char buf [26];\n  \n  pbVar7 = (*rel->sym_ptr_ptr)->the_bfd;\n  counter_12734 = counter_12734 + 1;\n  sprintf(buf,"__fu%d_");\n  puVar4 = (uint *)buf;\n  do {\n    puVar3 = puVar4;\n    uVar13 = *puVar3 + 0xfefefeff & ~*puVar3;\n    uVar14 = uVar13 & 0x80808080;\n    puVar4 = puVar3 + 1;\n  } while (uVar14 == 0);\n  bVar18 = (uVar13 & 0x8080) == 0;\n  if (bVar18) {\n    uVar14 = uVar14 >> 0x10;\n  }\n  if (bVar18) {\n    puVar4 = (uint *)((long)puVar3 + 6);\n  }\n  pcVar5 = (char *)((long)puVar4 + ((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf));\n  pcVar15 = name + -(long)pcVar5;\n  uVar14 = (uint)pcVar5;\n  uVar12 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar14 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar14 != 0) {\n        *pcVar15 = buf[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar15 = buf._0_4_;\n      *(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));\n    }\n  }\n  else {\n    *(ulong *)pcVar15 = CONCAT44(buf._4_4_,buf._0_4_);\n    *(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8);\n    uVar14 = (int)lVar6 + uVar14 & 0xfffffff8;\n    if (7 < uVar14) {\n      uVar13 = 0;\n      do {\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      } while (uVar13 < uVar14);\n    }\n  }\n  bh = (bfd_link_hash_entry *)0x0;\n  iVar11 = 2;\n  (**(code **)((long)pbVar7->xvec->backend_data + 0x138))\n            (&link_info,pbVar7,pcVar15,2,current_sec,rel->address,0,1,0,&bh);\n  pcVar5 = (bh->root).string;\n  if (link_info.pei386_runtime_pseudo_reloc == 2) goto LAB_0015682c;\n  iVar11 = 0;\n  builtin_strncpy(name + -10,"__nm_thnk_",10);\n  lVar6 = bfd_link_hash_lookup(link_info.hash,name + -10,0,0,1);\n  pbVar7 = link_info.output_bfd;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"nmth%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x18);\n    paVar8 = quick_section(pbVar7,".idata$4",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",paVar8,2,0);\n    quick_symbol(pbVar7,"__nm_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,8);\n    puVar9 = (uchar *)xmalloc(8);\n    paVar8->contents = puVar9;\n    puVar9[0] = '\0';\n    puVar9[1] = '\0';\n    puVar9[2] = '\0';\n    puVar9[3] = '\0';\n    puVar9[4] = '\0';\n    puVar9[5] = '\0';\n    puVar9[6] = '\0';\n    puVar9[7] = '\0';\n    quick_reloc(pbVar7,0,0x3e,2);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    iVar11 = 0;\n    bfd_set_section_contents(pbVar7,paVar8,puVar9,0,8);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    config.text_read_only = 0;\n    *(uint *)&(link_info.output_bfd)->field_0x44 =\n         *(uint *)&(link_info.output_bfd)->field_0x44 & 0xffffefff;\n  }\n  pbVar7 = link_info.output_bfd;\n  if ((addend == 0) || (link_info.pei386_runtime_pseudo_reloc == 1)) {\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"fu%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x30);\n    paVar8 = quick_section(pbVar7,".idata$2",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    pcVar15 = "_";\n    if (pe_details->underscored == 0) {\n      pcVar15 = "";\n    }\n    quick_symbol(pbVar7,pcVar15,symname,"_iname",(asection *)(_bfd_std_section + 0x118),2,0);\n    iVar11 = 0;\n    quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,0x14);\n    pauVar10 = (undefined1 (*) [16])xmalloc(0x14);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined4 *)pauVar10[1] = 0;\n    *pauVar10 = (undefined1  [16])0x0;\n    quick_reloc(pbVar7,0,0x3e,1);\n    quick_reloc(pbVar7,0xc,0x3e,2);\n    quick_reloc(pbVar7,0x10,0x3e,3);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,0x14);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    if (addend == 0) {\n      if (link_info.pei386_runtime_pseudo_reloc != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (link_info.pei386_runtime_pseudo_reloc == 1) goto LAB_0015682c;\n  }\n  if (link_info.pei386_runtime_pseudo_reloc != 2) {\n    bVar1 = rel->address;\n    pbVar7 = s->owner;\n    pcVar5 = (*rel->sym_ptr_ptr)->name;\n    pcVar15 = (char *)dcgettext(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5);\n    einfo(pcVar15,pbVar7,s,bVar1,pcVar5);\n    return;\n  }\nLAB_0015682c:\n  if (pe_dll_extra_pe_debug != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff);\n  }\n  pbVar7 = link_info.output_bfd;\n  uVar14 = rel->howto->bitsize;\n  pcVar15 = (char *)xmalloc(0x14);\n  sprintf(pcVar15,"rtr%06d.o",(ulong)(uint)tmp_seq);\n  tmp_seq = tmp_seq + 1;\n  pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n  bfd_find_target(pe_details->object_target,pbVar7);\n  bfd_make_writable(pbVar7);\n  bfd_set_format(pbVar7,1);\n  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n  cVar16 = '\x10';\n  if (link_info.pei386_runtime_pseudo_reloc == 2) {\n    cVar16 = (-(runtime_pseudp_reloc_v2_init == 0) & 0x18U) + 0x18;\n  }\n  symptr = 0;\n  symtab = (asymbol **)xmalloc(cVar16);\n  paVar8 = quick_section(pbVar7,".rdata_runtime_pseudo_reloc",0x100,iVar11);\n  quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);\n  if (link_info.pei386_runtime_pseudo_reloc == 2) {\n    bVar2 = (bfd_vma)uVar14;\n    if (runtime_pseudp_reloc_v2_init == 0) {\n      uVar17 = 0x18;\n      runtime_pseudp_reloc_v2_init = 1;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0x18);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0x18);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)pauVar10[1] = 0;\n      *pauVar10 = (undefined1  [16])0x0;\n      quick_reloc(pbVar7,0x10,0x3e,1);\n      quick_reloc(pbVar7,0xc,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);\n      (*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);\n    }\n    else {\n      uVar17 = 0xc;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0xc);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0xc);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)*pauVar10 = 0;\n      *(undefined4 *)(*pauVar10 + 8) = 0;\n      quick_reloc(pbVar7,4,0x3e,1);\n      quick_reloc(pbVar7,0,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);\n    }\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n  }\n  else {\n    bfd_set_section_size(pbVar7,paVar8,8);\n    pauVar10 = (undefined1 (*) [16])xmalloc(8);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined8 *)*pauVar10 = 0;\n    (*pbVar7->xvec->bfd_putx32)(addend,pauVar10);\n    quick_reloc(pbVar7,4,0x3e,1);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    uVar17 = 8;\n  }\n  iVar11 = 0;\n  bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,uVar17);\n  bfd_make_readable(pbVar7);\n  add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n  pbVar7 = link_info.output_bfd;\n  if (runtime_pseudo_relocs_created != 0) {\n    runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;\n    return;\n  }\n  runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)(uint)tmp_seq);\n  tmp_seq = tmp_seq + 1;\n  pbVar7 = (bfd *)bfd_create(pcVar5,pbVar7);\n  bfd_find_target(pe_details->object_target,pbVar7);\n  bfd_make_writable(pbVar7);\n  bfd_set_format(pbVar7,1);\n  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n  symptr = 0;\n  symtab = (asymbol **)xmalloc(0x10);\n  paVar8 = quick_section(pbVar7,".rdata",0x100,iVar11);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (pe_details->underscored == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),0,0);\n  bfd_set_section_size(pbVar7,paVar8,4);\n  puVar9 = (uchar *)xcalloc(1);\n  paVar8->contents = puVar9;\n  quick_reloc(pbVar7,0,0x3e,1);\n  save_relocs(paVar8);\n  bfd_set_symtab(pbVar7,symtab,symptr);\n  bfd_set_section_contents(pbVar7,paVar8,puVar9,0,4);\n  bfd_make_readable(pbVar7);\n  add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n  return;\n}\n\n" (function_definition "void pe_create_import_fixup(arelent *rel,asection *s,bfd_vma addend,char *name,char *symname)\n\n{\n  bfd_size_type bVar1;\n  bfd_vma bVar2;\n  uint *puVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  bfd *pbVar7;\n  asection *paVar8;\n  uchar *puVar9;\n  undefined1 (*pauVar10) [16];\n  int iVar11;\n  ulong uVar12;\n  uint uVar13;\n  uint uVar14;\n  char *pcVar15;\n  char cVar16;\n  undefined8 uVar17;\n  bool bVar18;\n  bfd_link_hash_entry *bh;\n  char buf [26];\n  \n  pbVar7 = (*rel->sym_ptr_ptr)->the_bfd;\n  counter_12734 = counter_12734 + 1;\n  sprintf(buf,"__fu%d_");\n  puVar4 = (uint *)buf;\n  do {\n    puVar3 = puVar4;\n    uVar13 = *puVar3 + 0xfefefeff & ~*puVar3;\n    uVar14 = uVar13 & 0x80808080;\n    puVar4 = puVar3 + 1;\n  } while (uVar14 == 0);\n  bVar18 = (uVar13 & 0x8080) == 0;\n  if (bVar18) {\n    uVar14 = uVar14 >> 0x10;\n  }\n  if (bVar18) {\n    puVar4 = (uint *)((long)puVar3 + 6);\n  }\n  pcVar5 = (char *)((long)puVar4 + ((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf));\n  pcVar15 = name + -(long)pcVar5;\n  uVar14 = (uint)pcVar5;\n  uVar12 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar14 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar14 != 0) {\n        *pcVar15 = buf[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar15 = buf._0_4_;\n      *(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));\n    }\n  }\n  else {\n    *(ulong *)pcVar15 = CONCAT44(buf._4_4_,buf._0_4_);\n    *(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8);\n    uVar14 = (int)lVar6 + uVar14 & 0xfffffff8;\n    if (7 < uVar14) {\n      uVar13 = 0;\n      do {\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      } while (uVar13 < uVar14);\n    }\n  }\n  bh = (bfd_link_hash_entry *)0x0;\n  iVar11 = 2;\n  (**(code **)((long)pbVar7->xvec->backend_data + 0x138))\n            (&link_info,pbVar7,pcVar15,2,current_sec,rel->address,0,1,0,&bh);\n  pcVar5 = (bh->root).string;\n  if (link_info.pei386_runtime_pseudo_reloc == 2) goto LAB_0015682c;\n  iVar11 = 0;\n  builtin_strncpy(name + -10,"__nm_thnk_",10);\n  lVar6 = bfd_link_hash_lookup(link_info.hash,name + -10,0,0,1);\n  pbVar7 = link_info.output_bfd;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"nmth%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x18);\n    paVar8 = quick_section(pbVar7,".idata$4",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",paVar8,2,0);\n    quick_symbol(pbVar7,"__nm_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,8);\n    puVar9 = (uchar *)xmalloc(8);\n    paVar8->contents = puVar9;\n    puVar9[0] = '\0';\n    puVar9[1] = '\0';\n    puVar9[2] = '\0';\n    puVar9[3] = '\0';\n    puVar9[4] = '\0';\n    puVar9[5] = '\0';\n    puVar9[6] = '\0';\n    puVar9[7] = '\0';\n    quick_reloc(pbVar7,0,0x3e,2);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    iVar11 = 0;\n    bfd_set_section_contents(pbVar7,paVar8,puVar9,0,8);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    config.text_read_only = 0;\n    *(uint *)&(link_info.output_bfd)->field_0x44 =\n         *(uint *)&(link_info.output_bfd)->field_0x44 & 0xffffefff;\n  }\n  pbVar7 = link_info.output_bfd;\n  if ((addend == 0) || (link_info.pei386_runtime_pseudo_reloc == 1)) {\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"fu%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x30);\n    paVar8 = quick_section(pbVar7,".idata$2",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    pcVar15 = "_";\n    if (pe_details->underscored == 0) {\n      pcVar15 = "";\n    }\n    quick_symbol(pbVar7,pcVar15,symname,"_iname",(asection *)(_bfd_std_section + 0x118),2,0);\n    iVar11 = 0;\n    quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,0x14);\n    pauVar10 = (undefined1 (*) [16])xmalloc(0x14);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined4 *)pauVar10[1] = 0;\n    *pauVar10 = (undefined1  [16])0x0;\n    quick_reloc(pbVar7,0,0x3e,1);\n    quick_reloc(pbVar7,0xc,0x3e,2);\n    quick_reloc(pbVar7,0x10,0x3e,3);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,0x14);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    if (addend == 0) {\n      if (link_info.pei386_runtime_pseudo_reloc != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (link_info.pei386_runtime_pseudo_reloc == 1) goto LAB_0015682c;\n  }\n  if (link_info.pei386_runtime_pseudo_reloc != 2) {\n    bVar1 = rel->address;\n    pbVar7 = s->owner;\n    pcVar5 = (*rel->sym_ptr_ptr)->name;\n    pcVar15 = (char *)dcgettext(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5);\n    einfo(pcVar15,pbVar7,s,bVar1,pcVar5);\n    return;\n  }\nLAB_0015682c:\n  if (pe_dll_extra_pe_debug != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff);\n  }\n  pbVar7 = link_info.output_bfd;\n  uVar14 = rel->howto->bitsize;\n  pcVar15 = (char *)xmalloc(0x14);\n  sprintf(pcVar15,"rtr%06d.o",(ulong)(uint)tmp_seq);\n  tmp_seq = tmp_seq + 1;\n  pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n  bfd_find_target(pe_details->object_target,pbVar7);\n  bfd_make_writable(pbVar7);\n  bfd_set_format(pbVar7,1);\n  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n  cVar16 = '\x10';\n  if (link_info.pei386_runtime_pseudo_reloc == 2) {\n    cVar16 = (-(runtime_pseudp_reloc_v2_init == 0) & 0x18U) + 0x18;\n  }\n  symptr = 0;\n  symtab = (asymbol **)xmalloc(cVar16);\n  paVar8 = quick_section(pbVar7,".rdata_runtime_pseudo_reloc",0x100,iVar11);\n  quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);\n  if (link_info.pei386_runtime_pseudo_reloc == 2) {\n    bVar2 = (bfd_vma)uVar14;\n    if (runtime_pseudp_reloc_v2_init == 0) {\n      uVar17 = 0x18;\n      runtime_pseudp_reloc_v2_init = 1;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0x18);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0x18);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)pauVar10[1] = 0;\n      *pauVar10 = (undefined1  [16])0x0;\n      quick_reloc(pbVar7,0x10,0x3e,1);\n      quick_reloc(pbVar7,0xc,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);\n      (*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);\n    }\n    else {\n      uVar17 = 0xc;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0xc);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0xc);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)*pauVar10 = 0;\n      *(undefined4 *)(*pauVar10 + 8) = 0;\n      quick_reloc(pbVar7,4,0x3e,1);\n      quick_reloc(pbVar7,0,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);\n    }\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n  }\n  else {\n    bfd_set_section_size(pbVar7,paVar8,8);\n    pauVar10 = (undefined1 (*) [16])xmalloc(8);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined8 *)*pauVar10 = 0;\n    (*pbVar7->xvec->bfd_putx32)(addend,pauVar10);\n    quick_reloc(pbVar7,4,0x3e,1);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    uVar17 = 8;\n  }\n  iVar11 = 0;\n  bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,uVar17);\n  bfd_make_readable(pbVar7);\n  add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n  pbVar7 = link_info.output_bfd;\n  if (runtime_pseudo_relocs_created != 0) {\n    runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;\n    return;\n  }\n  runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)(uint)tmp_seq);\n  tmp_seq = tmp_seq + 1;\n  pbVar7 = (bfd *)bfd_create(pcVar5,pbVar7);\n  bfd_find_target(pe_details->object_target,pbVar7);\n  bfd_make_writable(pbVar7);\n  bfd_set_format(pbVar7,1);\n  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n  symptr = 0;\n  symtab = (asymbol **)xmalloc(0x10);\n  paVar8 = quick_section(pbVar7,".rdata",0x100,iVar11);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (pe_details->underscored == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),0,0);\n  bfd_set_section_size(pbVar7,paVar8,4);\n  puVar9 = (uchar *)xcalloc(1);\n  paVar8->contents = puVar9;\n  quick_reloc(pbVar7,0,0x3e,1);\n  save_relocs(paVar8);\n  bfd_set_symtab(pbVar7,symtab,symptr);\n  bfd_set_section_contents(pbVar7,paVar8,puVar9,0,4);\n  bfd_make_readable(pbVar7);\n  add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n  return;\n}" primitive_type (function_declarator "pe_create_import_fixup(arelent *rel,asection *s,bfd_vma addend,char *name,char *symname)" identifier (parameter_list "(arelent *rel,asection *s,bfd_vma addend,char *name,char *symname)" ( (parameter_declaration "arelent *rel" type_identifier (pointer_declarator "*rel" * identifier)) , (parameter_declaration "asection *s" type_identifier (pointer_declarator "*s" * identifier)) , (parameter_declaration "bfd_vma addend" type_identifier identifier) , (parameter_declaration "char *name" primitive_type (pointer_declarator "*name" * identifier)) , (parameter_declaration "char *symname" primitive_type (pointer_declarator "*symname" * identifier)) ))) (compound_statement "{\n  bfd_size_type bVar1;\n  bfd_vma bVar2;\n  uint *puVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  bfd *pbVar7;\n  asection *paVar8;\n  uchar *puVar9;\n  undefined1 (*pauVar10) [16];\n  int iVar11;\n  ulong uVar12;\n  uint uVar13;\n  uint uVar14;\n  char *pcVar15;\n  char cVar16;\n  undefined8 uVar17;\n  bool bVar18;\n  bfd_link_hash_entry *bh;\n  char buf [26];\n  \n  pbVar7 = (*rel->sym_ptr_ptr)->the_bfd;\n  counter_12734 = counter_12734 + 1;\n  sprintf(buf,"__fu%d_");\n  puVar4 = (uint *)buf;\n  do {\n    puVar3 = puVar4;\n    uVar13 = *puVar3 + 0xfefefeff & ~*puVar3;\n    uVar14 = uVar13 & 0x80808080;\n    puVar4 = puVar3 + 1;\n  } while (uVar14 == 0);\n  bVar18 = (uVar13 & 0x8080) == 0;\n  if (bVar18) {\n    uVar14 = uVar14 >> 0x10;\n  }\n  if (bVar18) {\n    puVar4 = (uint *)((long)puVar3 + 6);\n  }\n  pcVar5 = (char *)((long)puVar4 + ((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf));\n  pcVar15 = name + -(long)pcVar5;\n  uVar14 = (uint)pcVar5;\n  uVar12 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar14 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar14 != 0) {\n        *pcVar15 = buf[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar15 = buf._0_4_;\n      *(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));\n    }\n  }\n  else {\n    *(ulong *)pcVar15 = CONCAT44(buf._4_4_,buf._0_4_);\n    *(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8);\n    uVar14 = (int)lVar6 + uVar14 & 0xfffffff8;\n    if (7 < uVar14) {\n      uVar13 = 0;\n      do {\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      } while (uVar13 < uVar14);\n    }\n  }\n  bh = (bfd_link_hash_entry *)0x0;\n  iVar11 = 2;\n  (**(code **)((long)pbVar7->xvec->backend_data + 0x138))\n            (&link_info,pbVar7,pcVar15,2,current_sec,rel->address,0,1,0,&bh);\n  pcVar5 = (bh->root).string;\n  if (link_info.pei386_runtime_pseudo_reloc == 2) goto LAB_0015682c;\n  iVar11 = 0;\n  builtin_strncpy(name + -10,"__nm_thnk_",10);\n  lVar6 = bfd_link_hash_lookup(link_info.hash,name + -10,0,0,1);\n  pbVar7 = link_info.output_bfd;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"nmth%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x18);\n    paVar8 = quick_section(pbVar7,".idata$4",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",paVar8,2,0);\n    quick_symbol(pbVar7,"__nm_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,8);\n    puVar9 = (uchar *)xmalloc(8);\n    paVar8->contents = puVar9;\n    puVar9[0] = '\0';\n    puVar9[1] = '\0';\n    puVar9[2] = '\0';\n    puVar9[3] = '\0';\n    puVar9[4] = '\0';\n    puVar9[5] = '\0';\n    puVar9[6] = '\0';\n    puVar9[7] = '\0';\n    quick_reloc(pbVar7,0,0x3e,2);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    iVar11 = 0;\n    bfd_set_section_contents(pbVar7,paVar8,puVar9,0,8);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    config.text_read_only = 0;\n    *(uint *)&(link_info.output_bfd)->field_0x44 =\n         *(uint *)&(link_info.output_bfd)->field_0x44 & 0xffffefff;\n  }\n  pbVar7 = link_info.output_bfd;\n  if ((addend == 0) || (link_info.pei386_runtime_pseudo_reloc == 1)) {\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"fu%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x30);\n    paVar8 = quick_section(pbVar7,".idata$2",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    pcVar15 = "_";\n    if (pe_details->underscored == 0) {\n      pcVar15 = "";\n    }\n    quick_symbol(pbVar7,pcVar15,symname,"_iname",(asection *)(_bfd_std_section + 0x118),2,0);\n    iVar11 = 0;\n    quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,0x14);\n    pauVar10 = (undefined1 (*) [16])xmalloc(0x14);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined4 *)pauVar10[1] = 0;\n    *pauVar10 = (undefined1  [16])0x0;\n    quick_reloc(pbVar7,0,0x3e,1);\n    quick_reloc(pbVar7,0xc,0x3e,2);\n    quick_reloc(pbVar7,0x10,0x3e,3);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,0x14);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    if (addend == 0) {\n      if (link_info.pei386_runtime_pseudo_reloc != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (link_info.pei386_runtime_pseudo_reloc == 1) goto LAB_0015682c;\n  }\n  if (link_info.pei386_runtime_pseudo_reloc != 2) {\n    bVar1 = rel->address;\n    pbVar7 = s->owner;\n    pcVar5 = (*rel->sym_ptr_ptr)->name;\n    pcVar15 = (char *)dcgettext(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5);\n    einfo(pcVar15,pbVar7,s,bVar1,pcVar5);\n    return;\n  }\nLAB_0015682c:\n  if (pe_dll_extra_pe_debug != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff);\n  }\n  pbVar7 = link_info.output_bfd;\n  uVar14 = rel->howto->bitsize;\n  pcVar15 = (char *)xmalloc(0x14);\n  sprintf(pcVar15,"rtr%06d.o",(ulong)(uint)tmp_seq);\n  tmp_seq = tmp_seq + 1;\n  pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n  bfd_find_target(pe_details->object_target,pbVar7);\n  bfd_make_writable(pbVar7);\n  bfd_set_format(pbVar7,1);\n  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n  cVar16 = '\x10';\n  if (link_info.pei386_runtime_pseudo_reloc == 2) {\n    cVar16 = (-(runtime_pseudp_reloc_v2_init == 0) & 0x18U) + 0x18;\n  }\n  symptr = 0;\n  symtab = (asymbol **)xmalloc(cVar16);\n  paVar8 = quick_section(pbVar7,".rdata_runtime_pseudo_reloc",0x100,iVar11);\n  quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);\n  if (link_info.pei386_runtime_pseudo_reloc == 2) {\n    bVar2 = (bfd_vma)uVar14;\n    if (runtime_pseudp_reloc_v2_init == 0) {\n      uVar17 = 0x18;\n      runtime_pseudp_reloc_v2_init = 1;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0x18);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0x18);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)pauVar10[1] = 0;\n      *pauVar10 = (undefined1  [16])0x0;\n      quick_reloc(pbVar7,0x10,0x3e,1);\n      quick_reloc(pbVar7,0xc,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);\n      (*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);\n    }\n    else {\n      uVar17 = 0xc;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0xc);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0xc);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)*pauVar10 = 0;\n      *(undefined4 *)(*pauVar10 + 8) = 0;\n      quick_reloc(pbVar7,4,0x3e,1);\n      quick_reloc(pbVar7,0,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);\n    }\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n  }\n  else {\n    bfd_set_section_size(pbVar7,paVar8,8);\n    pauVar10 = (undefined1 (*) [16])xmalloc(8);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined8 *)*pauVar10 = 0;\n    (*pbVar7->xvec->bfd_putx32)(addend,pauVar10);\n    quick_reloc(pbVar7,4,0x3e,1);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    uVar17 = 8;\n  }\n  iVar11 = 0;\n  bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,uVar17);\n  bfd_make_readable(pbVar7);\n  add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n  pbVar7 = link_info.output_bfd;\n  if (runtime_pseudo_relocs_created != 0) {\n    runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;\n    return;\n  }\n  runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)(uint)tmp_seq);\n  tmp_seq = tmp_seq + 1;\n  pbVar7 = (bfd *)bfd_create(pcVar5,pbVar7);\n  bfd_find_target(pe_details->object_target,pbVar7);\n  bfd_make_writable(pbVar7);\n  bfd_set_format(pbVar7,1);\n  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n  symptr = 0;\n  symtab = (asymbol **)xmalloc(0x10);\n  paVar8 = quick_section(pbVar7,".rdata",0x100,iVar11);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (pe_details->underscored == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),0,0);\n  bfd_set_section_size(pbVar7,paVar8,4);\n  puVar9 = (uchar *)xcalloc(1);\n  paVar8->contents = puVar9;\n  quick_reloc(pbVar7,0,0x3e,1);\n  save_relocs(paVar8);\n  bfd_set_symtab(pbVar7,symtab,symptr);\n  bfd_set_section_contents(pbVar7,paVar8,puVar9,0,4);\n  bfd_make_readable(pbVar7);\n  add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n  return;\n}" { (declaration "bfd_size_type bVar1;" type_identifier identifier ;) (declaration "bfd_vma bVar2;" type_identifier identifier ;) (declaration "uint *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "bfd *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "asection *paVar8;" type_identifier (pointer_declarator "*paVar8" * identifier) ;) (declaration "uchar *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (expression_statement "undefined1 (*pauVar10) [16];" (subscript_expression "undefined1 (*pauVar10) [16]" (call_expression "undefined1 (*pauVar10)" identifier (argument_list "(*pauVar10)" ( (pointer_expression "*pauVar10" * identifier) ))) [ number_literal ]) ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "char *pcVar15;" primitive_type (pointer_declarator "*pcVar15" * identifier) ;) (declaration "char cVar16;" primitive_type identifier ;) (declaration "undefined8 uVar17;" type_identifier identifier ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "bfd_link_hash_entry *bh;" type_identifier (pointer_declarator "*bh" * identifier) ;) (declaration "char buf [26];" primitive_type (array_declarator "buf [26]" identifier [ number_literal ]) ;) (expression_statement "pbVar7 = (*rel->sym_ptr_ptr)->the_bfd;" (assignment_expression "pbVar7 = (*rel->sym_ptr_ptr)->the_bfd" identifier = (field_expression "(*rel->sym_ptr_ptr)->the_bfd" (parenthesized_expression "(*rel->sym_ptr_ptr)" ( (pointer_expression "*rel->sym_ptr_ptr" * (field_expression "rel->sym_ptr_ptr" identifier -> field_identifier)) )) -> field_identifier)) ;) (expression_statement "counter_12734 = counter_12734 + 1;" (assignment_expression "counter_12734 = counter_12734 + 1" identifier = (binary_expression "counter_12734 + 1" identifier + number_literal)) ;) (expression_statement "sprintf(buf,"__fu%d_");" (call_expression "sprintf(buf,"__fu%d_")" identifier (argument_list "(buf,"__fu%d_")" ( identifier , (string_literal ""__fu%d_"" " string_content ") ))) ;) (expression_statement "puVar4 = (uint *)buf;" (assignment_expression "puVar4 = (uint *)buf" identifier = (cast_expression "(uint *)buf" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (do_statement "do {\n    puVar3 = puVar4;\n    uVar13 = *puVar3 + 0xfefefeff & ~*puVar3;\n    uVar14 = uVar13 & 0x80808080;\n    puVar4 = puVar3 + 1;\n  } while (uVar14 == 0);" do (compound_statement "{\n    puVar3 = puVar4;\n    uVar13 = *puVar3 + 0xfefefeff & ~*puVar3;\n    uVar14 = uVar13 & 0x80808080;\n    puVar4 = puVar3 + 1;\n  }" { (expression_statement "puVar3 = puVar4;" (assignment_expression "puVar3 = puVar4" identifier = identifier) ;) (expression_statement "uVar13 = *puVar3 + 0xfefefeff & ~*puVar3;" (assignment_expression "uVar13 = *puVar3 + 0xfefefeff & ~*puVar3" identifier = (binary_expression "*puVar3 + 0xfefefeff & ~*puVar3" (binary_expression "*puVar3 + 0xfefefeff" (pointer_expression "*puVar3" * identifier) + number_literal) & (unary_expression "~*puVar3" ~ (pointer_expression "*puVar3" * identifier)))) ;) (expression_statement "uVar14 = uVar13 & 0x80808080;" (assignment_expression "uVar14 = uVar13 & 0x80808080" identifier = (binary_expression "uVar13 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar4 = puVar3 + 1;" (assignment_expression "puVar4 = puVar3 + 1" identifier = (binary_expression "puVar3 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar14 == 0)" ( (binary_expression "uVar14 == 0" identifier == number_literal) )) ;) (expression_statement "bVar18 = (uVar13 & 0x8080) == 0;" (assignment_expression "bVar18 = (uVar13 & 0x8080) == 0" identifier = (binary_expression "(uVar13 & 0x8080) == 0" (parenthesized_expression "(uVar13 & 0x8080)" ( (binary_expression "uVar13 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar18) {\n    uVar14 = uVar14 >> 0x10;\n  }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n    uVar14 = uVar14 >> 0x10;\n  }" { (expression_statement "uVar14 = uVar14 >> 0x10;" (assignment_expression "uVar14 = uVar14 >> 0x10" identifier = (binary_expression "uVar14 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar18) {\n    puVar4 = (uint *)((long)puVar3 + 6);\n  }" if (parenthesized_expression "(bVar18)" ( identifier )) (compound_statement "{\n    puVar4 = (uint *)((long)puVar3 + 6);\n  }" { (expression_statement "puVar4 = (uint *)((long)puVar3 + 6);" (assignment_expression "puVar4 = (uint *)((long)puVar3 + 6)" identifier = (cast_expression "(uint *)((long)puVar3 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar3 + 6)" ( (binary_expression "(long)puVar3 + 6" (cast_expression "(long)puVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "pcVar5 = (char *)((long)puVar4 + ((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf));" (assignment_expression "pcVar5 = (char *)((long)puVar4 + ((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf))" identifier = (cast_expression "(char *)((long)puVar4 + ((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + ((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf))" ( (binary_expression "(long)puVar4 + ((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf)" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf)" ( (binary_expression "(-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)) - (long)buf" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14))" ( (binary_expression "-3 - (ulong)CARRY1((byte)uVar14,(byte)uVar14)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar14,(byte)uVar14)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar14,(byte)uVar14)" identifier (argument_list "((byte)uVar14,(byte)uVar14)" ( (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar14" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(long)buf" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (expression_statement "pcVar15 = name + -(long)pcVar5;" (assignment_expression "pcVar15 = name + -(long)pcVar5" identifier = (binary_expression "name + -(long)pcVar5" identifier + (unary_expression "-(long)pcVar5" - (cast_expression "(long)pcVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)))) ;) (expression_statement "uVar14 = (uint)pcVar5;" (assignment_expression "uVar14 = (uint)pcVar5" identifier = (cast_expression "(uint)pcVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = (ulong)pcVar5 & 0xffffffff;" (assignment_expression "uVar12 = (ulong)pcVar5 & 0xffffffff" identifier = (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if (uVar14 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar14 != 0) {\n        *pcVar15 = buf[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar15 = buf._0_4_;\n      *(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));\n    }\n  }\n  else {\n    *(ulong *)pcVar15 = CONCAT44(buf._4_4_,buf._0_4_);\n    *(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8);\n    uVar14 = (int)lVar6 + uVar14 & 0xfffffff8;\n    if (7 < uVar14) {\n      uVar13 = 0;\n      do {\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      } while (uVar13 < uVar14);\n    }\n  }" if (parenthesized_expression "(uVar14 < 8)" ( (binary_expression "uVar14 < 8" identifier < number_literal) )) (compound_statement "{\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar14 != 0) {\n        *pcVar15 = buf[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar15 = buf._0_4_;\n      *(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));\n    }\n  }" { (if_statement "if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar14 != 0) {\n        *pcVar15 = buf[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }\n      }\n    }\n    else {\n      *(undefined4 *)pcVar15 = buf._0_4_;\n      *(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));\n    }" if (parenthesized_expression "(((ulong)pcVar5 & 4) == 0)" ( (binary_expression "((ulong)pcVar5 & 4) == 0" (parenthesized_expression "((ulong)pcVar5 & 4)" ( (binary_expression "(ulong)pcVar5 & 4" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (uVar14 != 0) {\n        *pcVar15 = buf[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }\n      }\n    }" { (if_statement "if (uVar14 != 0) {\n        *pcVar15 = buf[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }\n      }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        *pcVar15 = buf[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }\n      }" { (expression_statement "*pcVar15 = buf[0];" (assignment_expression "*pcVar15 = buf[0]" (pointer_expression "*pcVar15" * identifier) = (subscript_expression "buf[0]" identifier [ number_literal ])) ;) (if_statement "if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }" if (parenthesized_expression "(((ulong)pcVar5 & 2) != 0)" ( (binary_expression "((ulong)pcVar5 & 2) != 0" (parenthesized_expression "((ulong)pcVar5 & 2)" ( (binary_expression "(ulong)pcVar5 & 2" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));\n        }" { (expression_statement "*(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2));" (assignment_expression "*(undefined2 *)(pcVar15 + (uVar12 - 2)) = *(undefined2 *)(buf + (uVar12 - 2))" (pointer_expression "*(undefined2 *)(pcVar15 + (uVar12 - 2))" * (cast_expression "(undefined2 *)(pcVar15 + (uVar12 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + (uVar12 - 2))" ( (binary_expression "pcVar15 + (uVar12 - 2)" identifier + (parenthesized_expression "(uVar12 - 2)" ( (binary_expression "uVar12 - 2" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined2 *)(buf + (uVar12 - 2))" * (cast_expression "(undefined2 *)(buf + (uVar12 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + (uVar12 - 2))" ( (binary_expression "buf + (uVar12 - 2)" identifier + (parenthesized_expression "(uVar12 - 2)" ( (binary_expression "uVar12 - 2" identifier - number_literal) ))) ))))) ;) })) })) }) (else_clause "else {\n      *(undefined4 *)pcVar15 = buf._0_4_;\n      *(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));\n    }" else (compound_statement "{\n      *(undefined4 *)pcVar15 = buf._0_4_;\n      *(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));\n    }" { (expression_statement "*(undefined4 *)pcVar15 = buf._0_4_;" (assignment_expression "*(undefined4 *)pcVar15 = buf._0_4_" (pointer_expression "*(undefined4 *)pcVar15" * (cast_expression "(undefined4 *)pcVar15" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (field_expression "buf._0_4_" identifier . field_identifier)) ;) (expression_statement "*(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4));" (assignment_expression "*(undefined4 *)(pcVar15 + (uVar12 - 4)) = *(undefined4 *)(buf + (uVar12 - 4))" (pointer_expression "*(undefined4 *)(pcVar15 + (uVar12 - 4))" * (cast_expression "(undefined4 *)(pcVar15 + (uVar12 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + (uVar12 - 4))" ( (binary_expression "pcVar15 + (uVar12 - 4)" identifier + (parenthesized_expression "(uVar12 - 4)" ( (binary_expression "uVar12 - 4" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined4 *)(buf + (uVar12 - 4))" * (cast_expression "(undefined4 *)(buf + (uVar12 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + (uVar12 - 4))" ( (binary_expression "buf + (uVar12 - 4)" identifier + (parenthesized_expression "(uVar12 - 4)" ( (binary_expression "uVar12 - 4" identifier - number_literal) ))) ))))) ;) }))) }) (else_clause "else {\n    *(ulong *)pcVar15 = CONCAT44(buf._4_4_,buf._0_4_);\n    *(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8);\n    uVar14 = (int)lVar6 + uVar14 & 0xfffffff8;\n    if (7 < uVar14) {\n      uVar13 = 0;\n      do {\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      } while (uVar13 < uVar14);\n    }\n  }" else (compound_statement "{\n    *(ulong *)pcVar15 = CONCAT44(buf._4_4_,buf._0_4_);\n    *(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8);\n    uVar14 = (int)lVar6 + uVar14 & 0xfffffff8;\n    if (7 < uVar14) {\n      uVar13 = 0;\n      do {\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      } while (uVar13 < uVar14);\n    }\n  }" { (expression_statement "*(ulong *)pcVar15 = CONCAT44(buf._4_4_,buf._0_4_);" (assignment_expression "*(ulong *)pcVar15 = CONCAT44(buf._4_4_,buf._0_4_)" (pointer_expression "*(ulong *)pcVar15" * (cast_expression "(ulong *)pcVar15" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(buf._4_4_,buf._0_4_)" identifier (argument_list "(buf._4_4_,buf._0_4_)" ( (field_expression "buf._4_4_" identifier . field_identifier) , (field_expression "buf._0_4_" identifier . field_identifier) )))) ;) (expression_statement "*(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8));" (assignment_expression "*(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8))" (pointer_expression "*(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8))" * (cast_expression "(undefined8 *)(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (binary_expression "pcVar15 + (((ulong)pcVar5 & 0xffffffff) - 8)" identifier + (parenthesized_expression "(((ulong)pcVar5 & 0xffffffff) - 8)" ( (binary_expression "((ulong)pcVar5 & 0xffffffff) - 8" (parenthesized_expression "((ulong)pcVar5 & 0xffffffff)" ( (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8))" * (cast_expression "(undefined8 *)(buf + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(buf + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (binary_expression "buf + (((ulong)pcVar5 & 0xffffffff) - 8)" identifier + (parenthesized_expression "(((ulong)pcVar5 & 0xffffffff) - 8)" ( (binary_expression "((ulong)pcVar5 & 0xffffffff) - 8" (parenthesized_expression "((ulong)pcVar5 & 0xffffffff)" ( (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) - number_literal) ))) ))))) ;) (expression_statement "lVar6 = (long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8);" (assignment_expression "lVar6 = (long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)pcVar15 - ((ulong)(pcVar15 + 8) & 0xfffffffffffffff8)" (cast_expression "(long)pcVar15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (parenthesized_expression "((ulong)(pcVar15 + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(pcVar15 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar15 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pcVar15 + 8)" ( (binary_expression "pcVar15 + 8" identifier + number_literal) ))) & number_literal) )))) ;) (expression_statement "uVar14 = (int)lVar6 + uVar14 & 0xfffffff8;" (assignment_expression "uVar14 = (int)lVar6 + uVar14 & 0xfffffff8" identifier = (binary_expression "(int)lVar6 + uVar14 & 0xfffffff8" (binary_expression "(int)lVar6 + uVar14" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) & number_literal)) ;) (if_statement "if (7 < uVar14) {\n      uVar13 = 0;\n      do {\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      } while (uVar13 < uVar14);\n    }" if (parenthesized_expression "(7 < uVar14)" ( (binary_expression "7 < uVar14" number_literal < identifier) )) (compound_statement "{\n      uVar13 = 0;\n      do {\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      } while (uVar13 < uVar14);\n    }" { (expression_statement "uVar13 = 0;" (assignment_expression "uVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      } while (uVar13 < uVar14);" do (compound_statement "{\n        uVar12 = (ulong)uVar13;\n        uVar13 = uVar13 + 8;\n        *(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));\n      }" { (expression_statement "uVar12 = (ulong)uVar13;" (assignment_expression "uVar12 = (ulong)uVar13" identifier = (cast_expression "(ulong)uVar13" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar13 = uVar13 + 8;" (assignment_expression "uVar13 = uVar13 + 8" identifier = (binary_expression "uVar13 + 8" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6));" (assignment_expression "*(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12) =\n             *(undefined8 *)((long)buf + (uVar12 - lVar6))" (pointer_expression "*(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12)" * (cast_expression "(undefined8 *)(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12)" ( (binary_expression "((ulong)(pcVar15 + 8) & 0xfffffffffffffff8) + uVar12" (parenthesized_expression "((ulong)(pcVar15 + 8) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(pcVar15 + 8) & 0xfffffffffffffff8" (call_expression "(ulong)(pcVar15 + 8)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(pcVar15 + 8)" ( (binary_expression "pcVar15 + 8" identifier + number_literal) ))) & number_literal) )) + identifier) )))) = (pointer_expression "*(undefined8 *)((long)buf + (uVar12 - lVar6))" * (cast_expression "(undefined8 *)((long)buf + (uVar12 - lVar6))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)buf + (uVar12 - lVar6))" ( (binary_expression "(long)buf + (uVar12 - lVar6)" (cast_expression "(long)buf" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar12 - lVar6)" ( (binary_expression "uVar12 - lVar6" identifier - identifier) ))) ))))) ;) }) while (parenthesized_expression "(uVar13 < uVar14)" ( (binary_expression "uVar13 < uVar14" identifier < identifier) )) ;) })) }))) (expression_statement "bh = (bfd_link_hash_entry *)0x0;" (assignment_expression "bh = (bfd_link_hash_entry *)0x0" identifier = (cast_expression "(bfd_link_hash_entry *)0x0" ( (type_descriptor "bfd_link_hash_entry *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar11 = 2;" (assignment_expression "iVar11 = 2" identifier = number_literal) ;) (expression_statement "(**(code **)((long)pbVar7->xvec->backend_data + 0x138))\n            (&link_info,pbVar7,pcVar15,2,current_sec,rel->address,0,1,0,&bh);" (call_expression "(**(code **)((long)pbVar7->xvec->backend_data + 0x138))\n            (&link_info,pbVar7,pcVar15,2,current_sec,rel->address,0,1,0,&bh)" (parenthesized_expression "(**(code **)((long)pbVar7->xvec->backend_data + 0x138))" ( (pointer_expression "**(code **)((long)pbVar7->xvec->backend_data + 0x138)" * (pointer_expression "*(code **)((long)pbVar7->xvec->backend_data + 0x138)" * (cast_expression "(code **)((long)pbVar7->xvec->backend_data + 0x138)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)pbVar7->xvec->backend_data + 0x138)" ( (binary_expression "(long)pbVar7->xvec->backend_data + 0x138" (cast_expression "(long)pbVar7->xvec->backend_data" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pbVar7->xvec->backend_data" (field_expression "pbVar7->xvec" identifier -> field_identifier) -> field_identifier)) + number_literal) ))))) )) (argument_list "(&link_info,pbVar7,pcVar15,2,current_sec,rel->address,0,1,0,&bh)" ( (pointer_expression "&link_info" & identifier) , identifier , identifier , number_literal , identifier , (field_expression "rel->address" identifier -> field_identifier) , number_literal , number_literal , number_literal , (pointer_expression "&bh" & identifier) ))) ;) (expression_statement "pcVar5 = (bh->root).string;" (assignment_expression "pcVar5 = (bh->root).string" identifier = (field_expression "(bh->root).string" (parenthesized_expression "(bh->root)" ( (field_expression "bh->root" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (link_info.pei386_runtime_pseudo_reloc == 2) goto LAB_0015682c;" if (parenthesized_expression "(link_info.pei386_runtime_pseudo_reloc == 2)" ( (binary_expression "link_info.pei386_runtime_pseudo_reloc == 2" (field_expression "link_info.pei386_runtime_pseudo_reloc" identifier . field_identifier) == number_literal) )) (goto_statement "goto LAB_0015682c;" goto statement_identifier ;)) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "builtin_strncpy(name + -10,"__nm_thnk_",10);" (call_expression "builtin_strncpy(name + -10,"__nm_thnk_",10)" identifier (argument_list "(name + -10,"__nm_thnk_",10)" ( (binary_expression "name + -10" identifier + number_literal) , (string_literal ""__nm_thnk_"" " string_content ") , number_literal ))) ;) (expression_statement "lVar6 = bfd_link_hash_lookup(link_info.hash,name + -10,0,0,1);" (assignment_expression "lVar6 = bfd_link_hash_lookup(link_info.hash,name + -10,0,0,1)" identifier = (call_expression "bfd_link_hash_lookup(link_info.hash,name + -10,0,0,1)" identifier (argument_list "(link_info.hash,name + -10,0,0,1)" ( (field_expression "link_info.hash" identifier . field_identifier) , (binary_expression "name + -10" identifier + number_literal) , number_literal , number_literal , number_literal )))) ;) (expression_statement "pbVar7 = link_info.output_bfd;" (assignment_expression "pbVar7 = link_info.output_bfd" identifier = (field_expression "link_info.output_bfd" identifier . field_identifier)) ;) (if_statement "if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"nmth%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x18);\n    paVar8 = quick_section(pbVar7,".idata$4",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",paVar8,2,0);\n    quick_symbol(pbVar7,"__nm_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,8);\n    puVar9 = (uchar *)xmalloc(8);\n    paVar8->contents = puVar9;\n    puVar9[0] = '\0';\n    puVar9[1] = '\0';\n    puVar9[2] = '\0';\n    puVar9[3] = '\0';\n    puVar9[4] = '\0';\n    puVar9[5] = '\0';\n    puVar9[6] = '\0';\n    puVar9[7] = '\0';\n    quick_reloc(pbVar7,0,0x3e,2);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    iVar11 = 0;\n    bfd_set_section_contents(pbVar7,paVar8,puVar9,0,8);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    config.text_read_only = 0;\n    *(uint *)&(link_info.output_bfd)->field_0x44 =\n         *(uint *)&(link_info.output_bfd)->field_0x44 & 0xffffefff;\n  }" if (parenthesized_expression "((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03'))" ( (binary_expression "(lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')" (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(lVar6 + 0x18) != '\x03')" ( (binary_expression "*(char *)(lVar6 + 0x18) != '\x03'" (pointer_expression "*(char *)(lVar6 + 0x18)" * (cast_expression "(char *)(lVar6 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) != (char_literal "'\x03'" ' escape_sequence ')) ))) )) (compound_statement "{\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"nmth%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x18);\n    paVar8 = quick_section(pbVar7,".idata$4",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",paVar8,2,0);\n    quick_symbol(pbVar7,"__nm_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,8);\n    puVar9 = (uchar *)xmalloc(8);\n    paVar8->contents = puVar9;\n    puVar9[0] = '\0';\n    puVar9[1] = '\0';\n    puVar9[2] = '\0';\n    puVar9[3] = '\0';\n    puVar9[4] = '\0';\n    puVar9[5] = '\0';\n    puVar9[6] = '\0';\n    puVar9[7] = '\0';\n    quick_reloc(pbVar7,0,0x3e,2);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    iVar11 = 0;\n    bfd_set_section_contents(pbVar7,paVar8,puVar9,0,8);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    config.text_read_only = 0;\n    *(uint *)&(link_info.output_bfd)->field_0x44 =\n         *(uint *)&(link_info.output_bfd)->field_0x44 & 0xffffefff;\n  }" { (expression_statement "pcVar15 = (char *)xmalloc(0x14);" (assignment_expression "pcVar15 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar15,"nmth%06d.o",(ulong)(uint)tmp_seq);" (call_expression "sprintf(pcVar15,"nmth%06d.o",(ulong)(uint)tmp_seq)" identifier (argument_list "(pcVar15,"nmth%06d.o",(ulong)(uint)tmp_seq)" ( identifier , (string_literal ""nmth%06d.o"" " string_content ") , (cast_expression "(ulong)(uint)tmp_seq" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)tmp_seq" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) ;) (expression_statement "tmp_seq = tmp_seq + 1;" (assignment_expression "tmp_seq = tmp_seq + 1" identifier = (binary_expression "tmp_seq + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);" (assignment_expression "pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7)" identifier = (cast_expression "(bfd *)bfd_create(pcVar15,pbVar7)" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar15,pbVar7)" identifier (argument_list "(pcVar15,pbVar7)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(pe_details->object_target,pbVar7);" (call_expression "bfd_find_target(pe_details->object_target,pbVar7)" identifier (argument_list "(pe_details->object_target,pbVar7)" ( (field_expression "pe_details->object_target" identifier -> field_identifier) , identifier ))) ;) (expression_statement "bfd_make_writable(pbVar7);" (call_expression "bfd_make_writable(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(pbVar7,1);" (call_expression "bfd_set_format(pbVar7,1)" identifier (argument_list "(pbVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);" (call_expression "(*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0)" (parenthesized_expression "(*pbVar7->xvec->_bfd_set_arch_mach)" ( (pointer_expression "*pbVar7->xvec->_bfd_set_arch_mach" * (field_expression "pbVar7->xvec->_bfd_set_arch_mach" (field_expression "pbVar7->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(pbVar7,pe_details->bfd_arch,0)" ( identifier , (field_expression "pe_details->bfd_arch" identifier -> field_identifier) , number_literal ))) ;) (expression_statement "symptr = 0;" (assignment_expression "symptr = 0" identifier = number_literal) ;) (expression_statement "symtab = (asymbol **)xmalloc(0x18);" (assignment_expression "symtab = (asymbol **)xmalloc(0x18)" identifier = (cast_expression "(asymbol **)xmalloc(0x18)" ( (type_descriptor "asymbol **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "paVar8 = quick_section(pbVar7,".idata$4",0x100,iVar11);" (assignment_expression "paVar8 = quick_section(pbVar7,".idata$4",0x100,iVar11)" identifier = (call_expression "quick_section(pbVar7,".idata$4",0x100,iVar11)" identifier (argument_list "(pbVar7,".idata$4",0x100,iVar11)" ( identifier , (string_literal "".idata$4"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "quick_symbol(pbVar7,"__nm_thnk_",name,"",paVar8,2,0);" (call_expression "quick_symbol(pbVar7,"__nm_thnk_",name,"",paVar8,2,0)" identifier (argument_list "(pbVar7,"__nm_thnk_",name,"",paVar8,2,0)" ( identifier , (string_literal ""__nm_thnk_"" " string_content ") , identifier , (string_literal """" " ") , identifier , number_literal , number_literal ))) ;) (expression_statement "quick_symbol(pbVar7,"__nm_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);" (call_expression "quick_symbol(pbVar7,"__nm_",name,"",(asection *)(_bfd_std_section + 0x118),2,0)" identifier (argument_list "(pbVar7,"__nm_",name,"",(asection *)(_bfd_std_section + 0x118),2,0)" ( identifier , (string_literal ""__nm_"" " string_content ") , identifier , (string_literal """" " ") , (cast_expression "(asection *)(_bfd_std_section + 0x118)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) ))) , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(pbVar7,paVar8,8);" (call_expression "bfd_set_section_size(pbVar7,paVar8,8)" identifier (argument_list "(pbVar7,paVar8,8)" ( identifier , identifier , number_literal ))) ;) (expression_statement "puVar9 = (uchar *)xmalloc(8);" (assignment_expression "puVar9 = (uchar *)xmalloc(8)" identifier = (cast_expression "(uchar *)xmalloc(8)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "paVar8->contents = puVar9;" (assignment_expression "paVar8->contents = puVar9" (field_expression "paVar8->contents" identifier -> field_identifier) = identifier) ;) (expression_statement "puVar9[0] = '\0';" (assignment_expression "puVar9[0] = '\0'" (subscript_expression "puVar9[0]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar9[1] = '\0';" (assignment_expression "puVar9[1] = '\0'" (subscript_expression "puVar9[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar9[2] = '\0';" (assignment_expression "puVar9[2] = '\0'" (subscript_expression "puVar9[2]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar9[3] = '\0';" (assignment_expression "puVar9[3] = '\0'" (subscript_expression "puVar9[3]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar9[4] = '\0';" (assignment_expression "puVar9[4] = '\0'" (subscript_expression "puVar9[4]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar9[5] = '\0';" (assignment_expression "puVar9[5] = '\0'" (subscript_expression "puVar9[5]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar9[6] = '\0';" (assignment_expression "puVar9[6] = '\0'" (subscript_expression "puVar9[6]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "puVar9[7] = '\0';" (assignment_expression "puVar9[7] = '\0'" (subscript_expression "puVar9[7]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "quick_reloc(pbVar7,0,0x3e,2);" (call_expression "quick_reloc(pbVar7,0,0x3e,2)" identifier (argument_list "(pbVar7,0,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "save_relocs(paVar8);" (call_expression "save_relocs(paVar8)" identifier (argument_list "(paVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(pbVar7,symtab,symptr);" (call_expression "bfd_set_symtab(pbVar7,symtab,symptr)" identifier (argument_list "(pbVar7,symtab,symptr)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "bfd_set_section_contents(pbVar7,paVar8,puVar9,0,8);" (call_expression "bfd_set_section_contents(pbVar7,paVar8,puVar9,0,8)" identifier (argument_list "(pbVar7,paVar8,puVar9,0,8)" ( identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_make_readable(pbVar7);" (call_expression "bfd_make_readable(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (expression_statement "add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);" (call_expression "add_bfd_to_link(pbVar7,pbVar7->filename,&link_info)" identifier (argument_list "(pbVar7,pbVar7->filename,&link_info)" ( identifier , (field_expression "pbVar7->filename" identifier -> field_identifier) , (pointer_expression "&link_info" & identifier) ))) ;) (expression_statement "config.text_read_only = 0;" (assignment_expression "config.text_read_only = 0" (field_expression "config.text_read_only" identifier . field_identifier) = number_literal) ;) (expression_statement "*(uint *)&(link_info.output_bfd)->field_0x44 =\n         *(uint *)&(link_info.output_bfd)->field_0x44 & 0xffffefff;" (assignment_expression "*(uint *)&(link_info.output_bfd)->field_0x44 =\n         *(uint *)&(link_info.output_bfd)->field_0x44 & 0xffffefff" (pointer_expression "*(uint *)&(link_info.output_bfd)->field_0x44" * (cast_expression "(uint *)&(link_info.output_bfd)->field_0x44" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(link_info.output_bfd)->field_0x44" & (field_expression "(link_info.output_bfd)->field_0x44" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier)))) = (binary_expression "*(uint *)&(link_info.output_bfd)->field_0x44 & 0xffffefff" (pointer_expression "*(uint *)&(link_info.output_bfd)->field_0x44" * (cast_expression "(uint *)&(link_info.output_bfd)->field_0x44" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&(link_info.output_bfd)->field_0x44" & (field_expression "(link_info.output_bfd)->field_0x44" (parenthesized_expression "(link_info.output_bfd)" ( (field_expression "link_info.output_bfd" identifier . field_identifier) )) -> field_identifier)))) & number_literal)) ;) })) (expression_statement "pbVar7 = link_info.output_bfd;" (assignment_expression "pbVar7 = link_info.output_bfd" identifier = (field_expression "link_info.output_bfd" identifier . field_identifier)) ;) (if_statement "if ((addend == 0) || (link_info.pei386_runtime_pseudo_reloc == 1)) {\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"fu%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x30);\n    paVar8 = quick_section(pbVar7,".idata$2",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    pcVar15 = "_";\n    if (pe_details->underscored == 0) {\n      pcVar15 = "";\n    }\n    quick_symbol(pbVar7,pcVar15,symname,"_iname",(asection *)(_bfd_std_section + 0x118),2,0);\n    iVar11 = 0;\n    quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,0x14);\n    pauVar10 = (undefined1 (*) [16])xmalloc(0x14);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined4 *)pauVar10[1] = 0;\n    *pauVar10 = (undefined1  [16])0x0;\n    quick_reloc(pbVar7,0,0x3e,1);\n    quick_reloc(pbVar7,0xc,0x3e,2);\n    quick_reloc(pbVar7,0x10,0x3e,3);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,0x14);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    if (addend == 0) {\n      if (link_info.pei386_runtime_pseudo_reloc != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (link_info.pei386_runtime_pseudo_reloc == 1) goto LAB_0015682c;\n  }" if (parenthesized_expression "((addend == 0) || (link_info.pei386_runtime_pseudo_reloc == 1))" ( (binary_expression "(addend == 0) || (link_info.pei386_runtime_pseudo_reloc == 1)" (parenthesized_expression "(addend == 0)" ( (binary_expression "addend == 0" identifier == number_literal) )) || (parenthesized_expression "(link_info.pei386_runtime_pseudo_reloc == 1)" ( (binary_expression "link_info.pei386_runtime_pseudo_reloc == 1" (field_expression "link_info.pei386_runtime_pseudo_reloc" identifier . field_identifier) == number_literal) ))) )) (compound_statement "{\n    pcVar15 = (char *)xmalloc(0x14);\n    sprintf(pcVar15,"fu%06d.o",(ulong)(uint)tmp_seq);\n    tmp_seq = tmp_seq + 1;\n    pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);\n    bfd_find_target(pe_details->object_target,pbVar7);\n    bfd_make_writable(pbVar7);\n    bfd_set_format(pbVar7,1);\n    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);\n    symptr = 0;\n    symtab = (asymbol **)xmalloc(0x30);\n    paVar8 = quick_section(pbVar7,".idata$2",0x100,iVar11);\n    quick_symbol(pbVar7,"__nm_thnk_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    pcVar15 = "_";\n    if (pe_details->underscored == 0) {\n      pcVar15 = "";\n    }\n    quick_symbol(pbVar7,pcVar15,symname,"_iname",(asection *)(_bfd_std_section + 0x118),2,0);\n    iVar11 = 0;\n    quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);\n    bfd_set_section_size(pbVar7,paVar8,0x14);\n    pauVar10 = (undefined1 (*) [16])xmalloc(0x14);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined4 *)pauVar10[1] = 0;\n    *pauVar10 = (undefined1  [16])0x0;\n    quick_reloc(pbVar7,0,0x3e,1);\n    quick_reloc(pbVar7,0xc,0x3e,2);\n    quick_reloc(pbVar7,0x10,0x3e,3);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,0x14);\n    bfd_make_readable(pbVar7);\n    add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);\n    if (addend == 0) {\n      if (link_info.pei386_runtime_pseudo_reloc != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (link_info.pei386_runtime_pseudo_reloc == 1) goto LAB_0015682c;\n  }" { (expression_statement "pcVar15 = (char *)xmalloc(0x14);" (assignment_expression "pcVar15 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar15,"fu%06d.o",(ulong)(uint)tmp_seq);" (call_expression "sprintf(pcVar15,"fu%06d.o",(ulong)(uint)tmp_seq)" identifier (argument_list "(pcVar15,"fu%06d.o",(ulong)(uint)tmp_seq)" ( identifier , (string_literal ""fu%06d.o"" " string_content ") , (cast_expression "(ulong)(uint)tmp_seq" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)tmp_seq" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) ;) (expression_statement "tmp_seq = tmp_seq + 1;" (assignment_expression "tmp_seq = tmp_seq + 1" identifier = (binary_expression "tmp_seq + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);" (assignment_expression "pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7)" identifier = (cast_expression "(bfd *)bfd_create(pcVar15,pbVar7)" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar15,pbVar7)" identifier (argument_list "(pcVar15,pbVar7)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(pe_details->object_target,pbVar7);" (call_expression "bfd_find_target(pe_details->object_target,pbVar7)" identifier (argument_list "(pe_details->object_target,pbVar7)" ( (field_expression "pe_details->object_target" identifier -> field_identifier) , identifier ))) ;) (expression_statement "bfd_make_writable(pbVar7);" (call_expression "bfd_make_writable(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(pbVar7,1);" (call_expression "bfd_set_format(pbVar7,1)" identifier (argument_list "(pbVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);" (call_expression "(*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0)" (parenthesized_expression "(*pbVar7->xvec->_bfd_set_arch_mach)" ( (pointer_expression "*pbVar7->xvec->_bfd_set_arch_mach" * (field_expression "pbVar7->xvec->_bfd_set_arch_mach" (field_expression "pbVar7->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(pbVar7,pe_details->bfd_arch,0)" ( identifier , (field_expression "pe_details->bfd_arch" identifier -> field_identifier) , number_literal ))) ;) (expression_statement "symptr = 0;" (assignment_expression "symptr = 0" identifier = number_literal) ;) (expression_statement "symtab = (asymbol **)xmalloc(0x30);" (assignment_expression "symtab = (asymbol **)xmalloc(0x30)" identifier = (cast_expression "(asymbol **)xmalloc(0x30)" ( (type_descriptor "asymbol **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc(0x30)" identifier (argument_list "(0x30)" ( number_literal ))))) ;) (expression_statement "paVar8 = quick_section(pbVar7,".idata$2",0x100,iVar11);" (assignment_expression "paVar8 = quick_section(pbVar7,".idata$2",0x100,iVar11)" identifier = (call_expression "quick_section(pbVar7,".idata$2",0x100,iVar11)" identifier (argument_list "(pbVar7,".idata$2",0x100,iVar11)" ( identifier , (string_literal "".idata$2"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "quick_symbol(pbVar7,"__nm_thnk_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);" (call_expression "quick_symbol(pbVar7,"__nm_thnk_",name,"",(asection *)(_bfd_std_section + 0x118),2,0)" identifier (argument_list "(pbVar7,"__nm_thnk_",name,"",(asection *)(_bfd_std_section + 0x118),2,0)" ( identifier , (string_literal ""__nm_thnk_"" " string_content ") , identifier , (string_literal """" " ") , (cast_expression "(asection *)(_bfd_std_section + 0x118)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) ))) , number_literal , number_literal ))) ;) (expression_statement "pcVar15 = "_";" (assignment_expression "pcVar15 = "_"" identifier = (string_literal ""_"" " string_content ")) ;) (if_statement "if (pe_details->underscored == 0) {\n      pcVar15 = "";\n    }" if (parenthesized_expression "(pe_details->underscored == 0)" ( (binary_expression "pe_details->underscored == 0" (field_expression "pe_details->underscored" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n      pcVar15 = "";\n    }" { (expression_statement "pcVar15 = "";" (assignment_expression "pcVar15 = """ identifier = (string_literal """" " ")) ;) })) (expression_statement "quick_symbol(pbVar7,pcVar15,symname,"_iname",(asection *)(_bfd_std_section + 0x118),2,0);" (call_expression "quick_symbol(pbVar7,pcVar15,symname,"_iname",(asection *)(_bfd_std_section + 0x118),2,0)" identifier (argument_list "(pbVar7,pcVar15,symname,"_iname",(asection *)(_bfd_std_section + 0x118),2,0)" ( identifier , identifier , identifier , (string_literal ""_iname"" " string_content ") , (cast_expression "(asection *)(_bfd_std_section + 0x118)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) ))) , number_literal , number_literal ))) ;) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);" (call_expression "quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0)" identifier (argument_list "(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0)" ( identifier , (string_literal """" " ") , identifier , (string_literal """" " ") , (cast_expression "(asection *)(_bfd_std_section + 0x118)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) ))) , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(pbVar7,paVar8,0x14);" (call_expression "bfd_set_section_size(pbVar7,paVar8,0x14)" identifier (argument_list "(pbVar7,paVar8,0x14)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar10 = (undefined1 (*) [16])xmalloc(0x14);" (assignment_expression "pauVar10 = (undefined1 (*) [16])xmalloc(0x14)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x14)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "paVar8->contents = (uchar *)pauVar10;" (assignment_expression "paVar8->contents = (uchar *)pauVar10" (field_expression "paVar8->contents" identifier -> field_identifier) = (cast_expression "(uchar *)pauVar10" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(undefined4 *)pauVar10[1] = 0;" (assignment_expression "*(undefined4 *)pauVar10[1] = 0" (pointer_expression "*(undefined4 *)pauVar10[1]" * (cast_expression "(undefined4 *)pauVar10[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pauVar10[1]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*pauVar10 = (undefined1  [16])0x0;" (assignment_expression "*pauVar10 = (undefined1  [16])0x0" (pointer_expression "*pauVar10" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "quick_reloc(pbVar7,0,0x3e,1);" (call_expression "quick_reloc(pbVar7,0,0x3e,1)" identifier (argument_list "(pbVar7,0,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "quick_reloc(pbVar7,0xc,0x3e,2);" (call_expression "quick_reloc(pbVar7,0xc,0x3e,2)" identifier (argument_list "(pbVar7,0xc,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "quick_reloc(pbVar7,0x10,0x3e,3);" (call_expression "quick_reloc(pbVar7,0x10,0x3e,3)" identifier (argument_list "(pbVar7,0x10,0x3e,3)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "save_relocs(paVar8);" (call_expression "save_relocs(paVar8)" identifier (argument_list "(paVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(pbVar7,symtab,symptr);" (call_expression "bfd_set_symtab(pbVar7,symtab,symptr)" identifier (argument_list "(pbVar7,symtab,symptr)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,0x14);" (call_expression "bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,0x14)" identifier (argument_list "(pbVar7,paVar8,pauVar10,0,0x14)" ( identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_make_readable(pbVar7);" (call_expression "bfd_make_readable(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (expression_statement "add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);" (call_expression "add_bfd_to_link(pbVar7,pbVar7->filename,&link_info)" identifier (argument_list "(pbVar7,pbVar7->filename,&link_info)" ( identifier , (field_expression "pbVar7->filename" identifier -> field_identifier) , (pointer_expression "&link_info" & identifier) ))) ;) (if_statement "if (addend == 0) {\n      if (link_info.pei386_runtime_pseudo_reloc != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }" if (parenthesized_expression "(addend == 0)" ( (binary_expression "addend == 0" identifier == number_literal) )) (compound_statement "{\n      if (link_info.pei386_runtime_pseudo_reloc != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }" { (if_statement "if (link_info.pei386_runtime_pseudo_reloc != 2) {\n        return;\n      }" if (parenthesized_expression "(link_info.pei386_runtime_pseudo_reloc != 2)" ( (binary_expression "link_info.pei386_runtime_pseudo_reloc != 2" (field_expression "link_info.pei386_runtime_pseudo_reloc" identifier . field_identifier) != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (goto_statement "goto LAB_0015682c;" goto statement_identifier ;) })) (if_statement "if (link_info.pei386_runtime_pseudo_reloc == 1) goto LAB_0015682c;" if (parenthesized_expression "(link_info.pei386_runtime_pseudo_reloc == 1)" ( (binary_expression "link_info.pei386_runtime_pseudo_reloc == 1" (field_expression "link_info.pei386_runtime_pseudo_reloc" identifier . field_identifier) == number_literal) )) (goto_statement "goto LAB_0015682c;" goto statement_identifier ;)) })) (if_statement "if (link_info.pei386_runtime_pseudo_reloc != 2) {\n    bVar1 = rel->address;\n    pbVar7 = s->owner;\n    pcVar5 = (*rel->sym_ptr_ptr)->name;\n    pcVar15 = (char *)dcgettext(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5);\n    einfo(pcVar15,pbVar7,s,bVar1,pcVar5);\n    return;\n  }" if (parenthesized_expression "(link_info.pei386_runtime_pseudo_reloc != 2)" ( (binary_expression "link_info.pei386_runtime_pseudo_reloc != 2" (field_expression "link_info.pei386_runtime_pseudo_reloc" identifier . field_identifier) != number_literal) )) (compound_statement "{\n    bVar1 = rel->address;\n    pbVar7 = s->owner;\n    pcVar5 = (*rel->sym_ptr_ptr)->name;\n    pcVar15 = (char *)dcgettext(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5);\n    einfo(pcVar15,pbVar7,s,bVar1,pcVar5);\n    return;\n  }" { (expression_statement "bVar1 = rel->address;" (assignment_expression "bVar1 = rel->address" identifier = (field_expression "rel->address" identifier -> field_identifier)) ;) (expression_statement "pbVar7 = s->owner;" (assignment_expression "pbVar7 = s->owner" identifier = (field_expression "s->owner" identifier -> field_identifier)) ;) (expression_statement "pcVar5 = (*rel->sym_ptr_ptr)->name;" (assignment_expression "pcVar5 = (*rel->sym_ptr_ptr)->name" identifier = (field_expression "(*rel->sym_ptr_ptr)->name" (parenthesized_expression "(*rel->sym_ptr_ptr)" ( (pointer_expression "*rel->sym_ptr_ptr" * (field_expression "rel->sym_ptr_ptr" identifier -> field_identifier)) )) -> field_identifier)) ;) (expression_statement "pcVar15 = (char *)dcgettext(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5);" (assignment_expression "pcVar15 = (char *)dcgettext(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5)" identifier = (cast_expression "(char *)dcgettext(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5)" identifier (argument_list "(0,\n                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                                ,5)" ( number_literal , (string_literal ""%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "einfo(pcVar15,pbVar7,s,bVar1,pcVar5);" (call_expression "einfo(pcVar15,pbVar7,s,bVar1,pcVar5)" identifier (argument_list "(pcVar15,pbVar7,s,bVar1,pcVar5)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_0015682c:\n  if (pe_dll_extra_pe_debug != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff);\n  }" statement_identifier : (if_statement "if (pe_dll_extra_pe_debug != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff);\n  }" if (parenthesized_expression "(pe_dll_extra_pe_debug != 0)" ( (binary_expression "pe_dll_extra_pe_debug != 0" identifier != number_literal) )) (compound_statement "{\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff);\n  }" { (expression_statement "printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff);" (call_expression "printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff)" identifier (argument_list "("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,addend & 0xffffffff)" ( (string_literal ""creating runtime pseudo-reloc entry for %s (addend=%d)\n"" " string_content escape_sequence ") , identifier , (binary_expression "addend & 0xffffffff" identifier & number_literal) ))) ;) }))) (expression_statement "pbVar7 = link_info.output_bfd;" (assignment_expression "pbVar7 = link_info.output_bfd" identifier = (field_expression "link_info.output_bfd" identifier . field_identifier)) ;) (expression_statement "uVar14 = rel->howto->bitsize;" (assignment_expression "uVar14 = rel->howto->bitsize" identifier = (field_expression "rel->howto->bitsize" (field_expression "rel->howto" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "pcVar15 = (char *)xmalloc(0x14);" (assignment_expression "pcVar15 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar15,"rtr%06d.o",(ulong)(uint)tmp_seq);" (call_expression "sprintf(pcVar15,"rtr%06d.o",(ulong)(uint)tmp_seq)" identifier (argument_list "(pcVar15,"rtr%06d.o",(ulong)(uint)tmp_seq)" ( identifier , (string_literal ""rtr%06d.o"" " string_content ") , (cast_expression "(ulong)(uint)tmp_seq" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)tmp_seq" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) ;) (expression_statement "tmp_seq = tmp_seq + 1;" (assignment_expression "tmp_seq = tmp_seq + 1" identifier = (binary_expression "tmp_seq + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7);" (assignment_expression "pbVar7 = (bfd *)bfd_create(pcVar15,pbVar7)" identifier = (cast_expression "(bfd *)bfd_create(pcVar15,pbVar7)" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar15,pbVar7)" identifier (argument_list "(pcVar15,pbVar7)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(pe_details->object_target,pbVar7);" (call_expression "bfd_find_target(pe_details->object_target,pbVar7)" identifier (argument_list "(pe_details->object_target,pbVar7)" ( (field_expression "pe_details->object_target" identifier -> field_identifier) , identifier ))) ;) (expression_statement "bfd_make_writable(pbVar7);" (call_expression "bfd_make_writable(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(pbVar7,1);" (call_expression "bfd_set_format(pbVar7,1)" identifier (argument_list "(pbVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);" (call_expression "(*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0)" (parenthesized_expression "(*pbVar7->xvec->_bfd_set_arch_mach)" ( (pointer_expression "*pbVar7->xvec->_bfd_set_arch_mach" * (field_expression "pbVar7->xvec->_bfd_set_arch_mach" (field_expression "pbVar7->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(pbVar7,pe_details->bfd_arch,0)" ( identifier , (field_expression "pe_details->bfd_arch" identifier -> field_identifier) , number_literal ))) ;) (expression_statement "cVar16 = '\x10';" (assignment_expression "cVar16 = '\x10'" identifier = (char_literal "'\x10'" ' escape_sequence ')) ;) (if_statement "if (link_info.pei386_runtime_pseudo_reloc == 2) {\n    cVar16 = (-(runtime_pseudp_reloc_v2_init == 0) & 0x18U) + 0x18;\n  }" if (parenthesized_expression "(link_info.pei386_runtime_pseudo_reloc == 2)" ( (binary_expression "link_info.pei386_runtime_pseudo_reloc == 2" (field_expression "link_info.pei386_runtime_pseudo_reloc" identifier . field_identifier) == number_literal) )) (compound_statement "{\n    cVar16 = (-(runtime_pseudp_reloc_v2_init == 0) & 0x18U) + 0x18;\n  }" { (expression_statement "cVar16 = (-(runtime_pseudp_reloc_v2_init == 0) & 0x18U) + 0x18;" (assignment_expression "cVar16 = (-(runtime_pseudp_reloc_v2_init == 0) & 0x18U) + 0x18" identifier = (binary_expression "(-(runtime_pseudp_reloc_v2_init == 0) & 0x18U) + 0x18" (parenthesized_expression "(-(runtime_pseudp_reloc_v2_init == 0) & 0x18U)" ( (binary_expression "-(runtime_pseudp_reloc_v2_init == 0) & 0x18U" (unary_expression "-(runtime_pseudp_reloc_v2_init == 0)" - (parenthesized_expression "(runtime_pseudp_reloc_v2_init == 0)" ( (binary_expression "runtime_pseudp_reloc_v2_init == 0" identifier == number_literal) ))) & number_literal) )) + number_literal)) ;) })) (expression_statement "symptr = 0;" (assignment_expression "symptr = 0" identifier = number_literal) ;) (expression_statement "symtab = (asymbol **)xmalloc(cVar16);" (assignment_expression "symtab = (asymbol **)xmalloc(cVar16)" identifier = (cast_expression "(asymbol **)xmalloc(cVar16)" ( (type_descriptor "asymbol **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc(cVar16)" identifier (argument_list "(cVar16)" ( identifier ))))) ;) (expression_statement "paVar8 = quick_section(pbVar7,".rdata_runtime_pseudo_reloc",0x100,iVar11);" (assignment_expression "paVar8 = quick_section(pbVar7,".rdata_runtime_pseudo_reloc",0x100,iVar11)" identifier = (call_expression "quick_section(pbVar7,".rdata_runtime_pseudo_reloc",0x100,iVar11)" identifier (argument_list "(pbVar7,".rdata_runtime_pseudo_reloc",0x100,iVar11)" ( identifier , (string_literal "".rdata_runtime_pseudo_reloc"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0);" (call_expression "quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0)" identifier (argument_list "(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),2,0)" ( identifier , (string_literal """" " ") , identifier , (string_literal """" " ") , (cast_expression "(asection *)(_bfd_std_section + 0x118)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) ))) , number_literal , number_literal ))) ;) (if_statement "if (link_info.pei386_runtime_pseudo_reloc == 2) {\n    bVar2 = (bfd_vma)uVar14;\n    if (runtime_pseudp_reloc_v2_init == 0) {\n      uVar17 = 0x18;\n      runtime_pseudp_reloc_v2_init = 1;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0x18);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0x18);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)pauVar10[1] = 0;\n      *pauVar10 = (undefined1  [16])0x0;\n      quick_reloc(pbVar7,0x10,0x3e,1);\n      quick_reloc(pbVar7,0xc,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);\n      (*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);\n    }\n    else {\n      uVar17 = 0xc;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0xc);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0xc);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)*pauVar10 = 0;\n      *(undefined4 *)(*pauVar10 + 8) = 0;\n      quick_reloc(pbVar7,4,0x3e,1);\n      quick_reloc(pbVar7,0,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);\n    }\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n  }\n  else {\n    bfd_set_section_size(pbVar7,paVar8,8);\n    pauVar10 = (undefined1 (*) [16])xmalloc(8);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined8 *)*pauVar10 = 0;\n    (*pbVar7->xvec->bfd_putx32)(addend,pauVar10);\n    quick_reloc(pbVar7,4,0x3e,1);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    uVar17 = 8;\n  }" if (parenthesized_expression "(link_info.pei386_runtime_pseudo_reloc == 2)" ( (binary_expression "link_info.pei386_runtime_pseudo_reloc == 2" (field_expression "link_info.pei386_runtime_pseudo_reloc" identifier . field_identifier) == number_literal) )) (compound_statement "{\n    bVar2 = (bfd_vma)uVar14;\n    if (runtime_pseudp_reloc_v2_init == 0) {\n      uVar17 = 0x18;\n      runtime_pseudp_reloc_v2_init = 1;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0x18);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0x18);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)pauVar10[1] = 0;\n      *pauVar10 = (undefined1  [16])0x0;\n      quick_reloc(pbVar7,0x10,0x3e,1);\n      quick_reloc(pbVar7,0xc,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);\n      (*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);\n    }\n    else {\n      uVar17 = 0xc;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0xc);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0xc);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)*pauVar10 = 0;\n      *(undefined4 *)(*pauVar10 + 8) = 0;\n      quick_reloc(pbVar7,4,0x3e,1);\n      quick_reloc(pbVar7,0,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);\n    }\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n  }" { (expression_statement "bVar2 = (bfd_vma)uVar14;" (assignment_expression "bVar2 = (bfd_vma)uVar14" identifier = (cast_expression "(bfd_vma)uVar14" ( (type_descriptor "bfd_vma" type_identifier) ) identifier)) ;) (if_statement "if (runtime_pseudp_reloc_v2_init == 0) {\n      uVar17 = 0x18;\n      runtime_pseudp_reloc_v2_init = 1;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0x18);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0x18);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)pauVar10[1] = 0;\n      *pauVar10 = (undefined1  [16])0x0;\n      quick_reloc(pbVar7,0x10,0x3e,1);\n      quick_reloc(pbVar7,0xc,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);\n      (*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);\n    }\n    else {\n      uVar17 = 0xc;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0xc);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0xc);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)*pauVar10 = 0;\n      *(undefined4 *)(*pauVar10 + 8) = 0;\n      quick_reloc(pbVar7,4,0x3e,1);\n      quick_reloc(pbVar7,0,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);\n    }" if (parenthesized_expression "(runtime_pseudp_reloc_v2_init == 0)" ( (binary_expression "runtime_pseudp_reloc_v2_init == 0" identifier == number_literal) )) (compound_statement "{\n      uVar17 = 0x18;\n      runtime_pseudp_reloc_v2_init = 1;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0x18);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0x18);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)pauVar10[1] = 0;\n      *pauVar10 = (undefined1  [16])0x0;\n      quick_reloc(pbVar7,0x10,0x3e,1);\n      quick_reloc(pbVar7,0xc,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);\n      (*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);\n    }" { (expression_statement "uVar17 = 0x18;" (assignment_expression "uVar17 = 0x18" identifier = number_literal) ;) (expression_statement "runtime_pseudp_reloc_v2_init = 1;" (assignment_expression "runtime_pseudp_reloc_v2_init = 1" identifier = number_literal) ;) (expression_statement "quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);" (call_expression "quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0)" identifier (argument_list "(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0)" ( identifier , (string_literal ""__imp_"" " string_content ") , identifier , (string_literal """" " ") , (cast_expression "(asection *)(_bfd_std_section + 0x118)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) ))) , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(pbVar7,paVar8,0x18);" (call_expression "bfd_set_section_size(pbVar7,paVar8,0x18)" identifier (argument_list "(pbVar7,paVar8,0x18)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar10 = (undefined1 (*) [16])xmalloc(0x18);" (assignment_expression "pauVar10 = (undefined1 (*) [16])xmalloc(0x18)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x18)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "paVar8->contents = (uchar *)pauVar10;" (assignment_expression "paVar8->contents = (uchar *)pauVar10" (field_expression "paVar8->contents" identifier -> field_identifier) = (cast_expression "(uchar *)pauVar10" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(undefined8 *)pauVar10[1] = 0;" (assignment_expression "*(undefined8 *)pauVar10[1] = 0" (pointer_expression "*(undefined8 *)pauVar10[1]" * (cast_expression "(undefined8 *)pauVar10[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pauVar10[1]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*pauVar10 = (undefined1  [16])0x0;" (assignment_expression "*pauVar10 = (undefined1  [16])0x0" (pointer_expression "*pauVar10" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "quick_reloc(pbVar7,0x10,0x3e,1);" (call_expression "quick_reloc(pbVar7,0x10,0x3e,1)" identifier (argument_list "(pbVar7,0x10,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "quick_reloc(pbVar7,0xc,0x3e,2);" (call_expression "quick_reloc(pbVar7,0xc,0x3e,2)" identifier (argument_list "(pbVar7,0xc,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "(*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);" (call_expression "(*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4)" (parenthesized_expression "(*pbVar7->xvec->bfd_putx32)" ( (pointer_expression "*pbVar7->xvec->bfd_putx32" * (field_expression "pbVar7->xvec->bfd_putx32" (field_expression "pbVar7->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(bVar2,pauVar10[1] + 4)" ( identifier , (binary_expression "pauVar10[1] + 4" (subscript_expression "pauVar10[1]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "(*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);" (call_expression "(*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8)" (parenthesized_expression "(*pbVar7->xvec->bfd_putx32)" ( (pointer_expression "*pbVar7->xvec->bfd_putx32" * (field_expression "pbVar7->xvec->bfd_putx32" (field_expression "pbVar7->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(1,*pauVar10 + 8)" ( number_literal , (binary_expression "*pauVar10 + 8" (pointer_expression "*pauVar10" * identifier) + number_literal) ))) ;) }) (else_clause "else {\n      uVar17 = 0xc;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0xc);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0xc);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)*pauVar10 = 0;\n      *(undefined4 *)(*pauVar10 + 8) = 0;\n      quick_reloc(pbVar7,4,0x3e,1);\n      quick_reloc(pbVar7,0,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);\n    }" else (compound_statement "{\n      uVar17 = 0xc;\n      quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);\n      bfd_set_section_size(pbVar7,paVar8,0xc);\n      pauVar10 = (undefined1 (*) [16])xmalloc(0xc);\n      paVar8->contents = (uchar *)pauVar10;\n      *(undefined8 *)*pauVar10 = 0;\n      *(undefined4 *)(*pauVar10 + 8) = 0;\n      quick_reloc(pbVar7,4,0x3e,1);\n      quick_reloc(pbVar7,0,0x3e,2);\n      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);\n    }" { (expression_statement "uVar17 = 0xc;" (assignment_expression "uVar17 = 0xc" identifier = number_literal) ;) (expression_statement "quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0);" (call_expression "quick_symbol(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0)" identifier (argument_list "(pbVar7,"__imp_",name,"",(asection *)(_bfd_std_section + 0x118),2,0)" ( identifier , (string_literal ""__imp_"" " string_content ") , identifier , (string_literal """" " ") , (cast_expression "(asection *)(_bfd_std_section + 0x118)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) ))) , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(pbVar7,paVar8,0xc);" (call_expression "bfd_set_section_size(pbVar7,paVar8,0xc)" identifier (argument_list "(pbVar7,paVar8,0xc)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar10 = (undefined1 (*) [16])xmalloc(0xc);" (assignment_expression "pauVar10 = (undefined1 (*) [16])xmalloc(0xc)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0xc)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "paVar8->contents = (uchar *)pauVar10;" (assignment_expression "paVar8->contents = (uchar *)pauVar10" (field_expression "paVar8->contents" identifier -> field_identifier) = (cast_expression "(uchar *)pauVar10" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(undefined8 *)*pauVar10 = 0;" (assignment_expression "*(undefined8 *)*pauVar10 = 0" (pointer_expression "*(undefined8 *)*pauVar10" * (cast_expression "(undefined8 *)*pauVar10" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pauVar10" * identifier))) = number_literal) ;) (expression_statement "*(undefined4 *)(*pauVar10 + 8) = 0;" (assignment_expression "*(undefined4 *)(*pauVar10 + 8) = 0" (pointer_expression "*(undefined4 *)(*pauVar10 + 8)" * (cast_expression "(undefined4 *)(*pauVar10 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pauVar10 + 8)" ( (binary_expression "*pauVar10 + 8" (pointer_expression "*pauVar10" * identifier) + number_literal) )))) = number_literal) ;) (expression_statement "quick_reloc(pbVar7,4,0x3e,1);" (call_expression "quick_reloc(pbVar7,4,0x3e,1)" identifier (argument_list "(pbVar7,4,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "quick_reloc(pbVar7,0,0x3e,2);" (call_expression "quick_reloc(pbVar7,0,0x3e,2)" identifier (argument_list "(pbVar7,0,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "(*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);" (call_expression "(*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8)" (parenthesized_expression "(*pbVar7->xvec->bfd_putx32)" ( (pointer_expression "*pbVar7->xvec->bfd_putx32" * (field_expression "pbVar7->xvec->bfd_putx32" (field_expression "pbVar7->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(bVar2,*pauVar10 + 8)" ( identifier , (binary_expression "*pauVar10 + 8" (pointer_expression "*pauVar10" * identifier) + number_literal) ))) ;) }))) (expression_statement "save_relocs(paVar8);" (call_expression "save_relocs(paVar8)" identifier (argument_list "(paVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(pbVar7,symtab,symptr);" (call_expression "bfd_set_symtab(pbVar7,symtab,symptr)" identifier (argument_list "(pbVar7,symtab,symptr)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    bfd_set_section_size(pbVar7,paVar8,8);\n    pauVar10 = (undefined1 (*) [16])xmalloc(8);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined8 *)*pauVar10 = 0;\n    (*pbVar7->xvec->bfd_putx32)(addend,pauVar10);\n    quick_reloc(pbVar7,4,0x3e,1);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    uVar17 = 8;\n  }" else (compound_statement "{\n    bfd_set_section_size(pbVar7,paVar8,8);\n    pauVar10 = (undefined1 (*) [16])xmalloc(8);\n    paVar8->contents = (uchar *)pauVar10;\n    *(undefined8 *)*pauVar10 = 0;\n    (*pbVar7->xvec->bfd_putx32)(addend,pauVar10);\n    quick_reloc(pbVar7,4,0x3e,1);\n    save_relocs(paVar8);\n    bfd_set_symtab(pbVar7,symtab,symptr);\n    uVar17 = 8;\n  }" { (expression_statement "bfd_set_section_size(pbVar7,paVar8,8);" (call_expression "bfd_set_section_size(pbVar7,paVar8,8)" identifier (argument_list "(pbVar7,paVar8,8)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar10 = (undefined1 (*) [16])xmalloc(8);" (assignment_expression "pauVar10 = (undefined1 (*) [16])xmalloc(8)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(8)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "paVar8->contents = (uchar *)pauVar10;" (assignment_expression "paVar8->contents = (uchar *)pauVar10" (field_expression "paVar8->contents" identifier -> field_identifier) = (cast_expression "(uchar *)pauVar10" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*(undefined8 *)*pauVar10 = 0;" (assignment_expression "*(undefined8 *)*pauVar10 = 0" (pointer_expression "*(undefined8 *)*pauVar10" * (cast_expression "(undefined8 *)*pauVar10" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pauVar10" * identifier))) = number_literal) ;) (expression_statement "(*pbVar7->xvec->bfd_putx32)(addend,pauVar10);" (call_expression "(*pbVar7->xvec->bfd_putx32)(addend,pauVar10)" (parenthesized_expression "(*pbVar7->xvec->bfd_putx32)" ( (pointer_expression "*pbVar7->xvec->bfd_putx32" * (field_expression "pbVar7->xvec->bfd_putx32" (field_expression "pbVar7->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(addend,pauVar10)" ( identifier , identifier ))) ;) (expression_statement "quick_reloc(pbVar7,4,0x3e,1);" (call_expression "quick_reloc(pbVar7,4,0x3e,1)" identifier (argument_list "(pbVar7,4,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "save_relocs(paVar8);" (call_expression "save_relocs(paVar8)" identifier (argument_list "(paVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(pbVar7,symtab,symptr);" (call_expression "bfd_set_symtab(pbVar7,symtab,symptr)" identifier (argument_list "(pbVar7,symtab,symptr)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar17 = 8;" (assignment_expression "uVar17 = 8" identifier = number_literal) ;) }))) (expression_statement "iVar11 = 0;" (assignment_expression "iVar11 = 0" identifier = number_literal) ;) (expression_statement "bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,uVar17);" (call_expression "bfd_set_section_contents(pbVar7,paVar8,pauVar10,0,uVar17)" identifier (argument_list "(pbVar7,paVar8,pauVar10,0,uVar17)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "bfd_make_readable(pbVar7);" (call_expression "bfd_make_readable(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (expression_statement "add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);" (call_expression "add_bfd_to_link(pbVar7,pbVar7->filename,&link_info)" identifier (argument_list "(pbVar7,pbVar7->filename,&link_info)" ( identifier , (field_expression "pbVar7->filename" identifier -> field_identifier) , (pointer_expression "&link_info" & identifier) ))) ;) (expression_statement "pbVar7 = link_info.output_bfd;" (assignment_expression "pbVar7 = link_info.output_bfd" identifier = (field_expression "link_info.output_bfd" identifier . field_identifier)) ;) (if_statement "if (runtime_pseudo_relocs_created != 0) {\n    runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;\n    return;\n  }" if (parenthesized_expression "(runtime_pseudo_relocs_created != 0)" ( (binary_expression "runtime_pseudo_relocs_created != 0" identifier != number_literal) )) (compound_statement "{\n    runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;\n    return;\n  }" { (expression_statement "runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;" (assignment_expression "runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1" identifier = (binary_expression "runtime_pseudo_relocs_created + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1;" (assignment_expression "runtime_pseudo_relocs_created = runtime_pseudo_relocs_created + 1" identifier = (binary_expression "runtime_pseudo_relocs_created + 1" identifier + number_literal)) ;) (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar5,"ertr%06d.o",(ulong)(uint)tmp_seq);" (call_expression "sprintf(pcVar5,"ertr%06d.o",(ulong)(uint)tmp_seq)" identifier (argument_list "(pcVar5,"ertr%06d.o",(ulong)(uint)tmp_seq)" ( identifier , (string_literal ""ertr%06d.o"" " string_content ") , (cast_expression "(ulong)(uint)tmp_seq" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)tmp_seq" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) ;) (expression_statement "tmp_seq = tmp_seq + 1;" (assignment_expression "tmp_seq = tmp_seq + 1" identifier = (binary_expression "tmp_seq + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = (bfd *)bfd_create(pcVar5,pbVar7);" (assignment_expression "pbVar7 = (bfd *)bfd_create(pcVar5,pbVar7)" identifier = (cast_expression "(bfd *)bfd_create(pcVar5,pbVar7)" ( (type_descriptor "bfd *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar5,pbVar7)" identifier (argument_list "(pcVar5,pbVar7)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(pe_details->object_target,pbVar7);" (call_expression "bfd_find_target(pe_details->object_target,pbVar7)" identifier (argument_list "(pe_details->object_target,pbVar7)" ( (field_expression "pe_details->object_target" identifier -> field_identifier) , identifier ))) ;) (expression_statement "bfd_make_writable(pbVar7);" (call_expression "bfd_make_writable(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(pbVar7,1);" (call_expression "bfd_set_format(pbVar7,1)" identifier (argument_list "(pbVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);" (call_expression "(*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0)" (parenthesized_expression "(*pbVar7->xvec->_bfd_set_arch_mach)" ( (pointer_expression "*pbVar7->xvec->_bfd_set_arch_mach" * (field_expression "pbVar7->xvec->_bfd_set_arch_mach" (field_expression "pbVar7->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(pbVar7,pe_details->bfd_arch,0)" ( identifier , (field_expression "pe_details->bfd_arch" identifier -> field_identifier) , number_literal ))) ;) (expression_statement "symptr = 0;" (assignment_expression "symptr = 0" identifier = number_literal) ;) (expression_statement "symtab = (asymbol **)xmalloc(0x10);" (assignment_expression "symtab = (asymbol **)xmalloc(0x10)" identifier = (cast_expression "(asymbol **)xmalloc(0x10)" ( (type_descriptor "asymbol **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc(0x10)" identifier (argument_list "(0x10)" ( number_literal ))))) ;) (expression_statement "paVar8 = quick_section(pbVar7,".rdata",0x100,iVar11);" (assignment_expression "paVar8 = quick_section(pbVar7,".rdata",0x100,iVar11)" identifier = (call_expression "quick_section(pbVar7,".rdata",0x100,iVar11)" identifier (argument_list "(pbVar7,".rdata",0x100,iVar11)" ( identifier , (string_literal "".rdata"" " string_content ") , number_literal , identifier )))) ;) (expression_statement "pcVar5 = "__pei386_runtime_relocator";" (assignment_expression "pcVar5 = "__pei386_runtime_relocator"" identifier = (string_literal ""__pei386_runtime_relocator"" " string_content ")) ;) (if_statement "if (pe_details->underscored == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }" if (parenthesized_expression "(pe_details->underscored == 0)" ( (binary_expression "pe_details->underscored == 0" (field_expression "pe_details->underscored" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    pcVar5 = "_pei386_runtime_relocator";\n  }" { (expression_statement "pcVar5 = "_pei386_runtime_relocator";" (assignment_expression "pcVar5 = "_pei386_runtime_relocator"" identifier = (string_literal ""_pei386_runtime_relocator"" " string_content ")) ;) })) (expression_statement "quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),0,0);" (call_expression "quick_symbol(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),0,0)" identifier (argument_list "(pbVar7,"",pcVar5,"",(asection *)(_bfd_std_section + 0x118),0,0)" ( identifier , (string_literal """" " ") , identifier , (string_literal """" " ") , (cast_expression "(asection *)(_bfd_std_section + 0x118)" ( (type_descriptor "asection *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(_bfd_std_section + 0x118)" ( (binary_expression "_bfd_std_section + 0x118" identifier + number_literal) ))) , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(pbVar7,paVar8,4);" (call_expression "bfd_set_section_size(pbVar7,paVar8,4)" identifier (argument_list "(pbVar7,paVar8,4)" ( identifier , identifier , number_literal ))) ;) (expression_statement "puVar9 = (uchar *)xcalloc(1);" (assignment_expression "puVar9 = (uchar *)xcalloc(1)" identifier = (cast_expression "(uchar *)xcalloc(1)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xcalloc(1)" identifier (argument_list "(1)" ( number_literal ))))) ;) (expression_statement "paVar8->contents = puVar9;" (assignment_expression "paVar8->contents = puVar9" (field_expression "paVar8->contents" identifier -> field_identifier) = identifier) ;) (expression_statement "quick_reloc(pbVar7,0,0x3e,1);" (call_expression "quick_reloc(pbVar7,0,0x3e,1)" identifier (argument_list "(pbVar7,0,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "save_relocs(paVar8);" (call_expression "save_relocs(paVar8)" identifier (argument_list "(paVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(pbVar7,symtab,symptr);" (call_expression "bfd_set_symtab(pbVar7,symtab,symptr)" identifier (argument_list "(pbVar7,symtab,symptr)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(pbVar7,paVar8,puVar9,0,4);" (call_expression "bfd_set_section_contents(pbVar7,paVar8,puVar9,0,4)" identifier (argument_list "(pbVar7,paVar8,puVar9,0,4)" ( identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_make_readable(pbVar7);" (call_expression "bfd_make_readable(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (expression_statement "add_bfd_to_link(pbVar7,pbVar7->filename,&link_info);" (call_expression "add_bfd_to_link(pbVar7,pbVar7->filename,&link_info)" identifier (argument_list "(pbVar7,pbVar7->filename,&link_info)" ( identifier , (field_expression "pbVar7->filename" identifier -> field_identifier) , (pointer_expression "&link_info" & identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00156210(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 uVar10;\n  undefined1 (*pauVar11) [16];\n  uint uVar12;\n  uint uVar13;\n  uint *puVar14;\n  char cVar15;\n  undefined8 uVar16;\n  bool bVar17;\n  ulong uVar18;\n  undefined8 local_60;\n  uint local_58 [10];\n  \n  lVar8 = **(long **)*param_1;\n  DAT_002b5c08 = DAT_002b5c08 + 1;\n  sprintf((char *)local_58,"__fu%d_");\n  puVar14 = local_58;\n  do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);\n  bVar17 = (uVar12 & 0x8080) == 0;\n  if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }\n  if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));\n  puVar14 = (uint *)(param_4 - (long)pcVar5);\n  uVar13 = (uint)pcVar5;\n  uVar18 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }\n  local_60 = 0;\n  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);\n  uVar16 = *(undefined8 *)(local_60 + 8);\n  if (DAT_002b5fec == 2) goto LAB_0015682c;\n  *(undefined2 *)(param_4 + -2) = 0x5f6b;\n  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;\n  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);\n  lVar8 = DAT_002b5f90;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }\n  lVar8 = DAT_002b5f90;\n  if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }\n  if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }\nLAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }\n  lVar8 = DAT_002b5f90;\n  uVar1 = *(undefined4 *)(param_1[3] + 0xc);\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  cVar15 = '\x10';\n  if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(cVar15);\n  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);\n  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);\n  if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }\n  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  lVar8 = DAT_002b5f90;\n  if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }\n  DAT_002b5ca4 = DAT_002b5ca4 + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(0x10);\n  lVar8 = FUN_00154530(puVar7,".rdata",0x100);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);\n  bfd_set_section_size(puVar7,lVar8,4);\n  uVar16 = xcalloc(1,4);\n  *(undefined8 *)(lVar8 + 0xb0) = uVar16;\n  FUN_00153440(puVar7,0,0x3e,1);\n  FUN_001532d0(lVar8);\n  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  return;\n}\n\n" (function_definition "void FUN_00156210(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 uVar10;\n  undefined1 (*pauVar11) [16];\n  uint uVar12;\n  uint uVar13;\n  uint *puVar14;\n  char cVar15;\n  undefined8 uVar16;\n  bool bVar17;\n  ulong uVar18;\n  undefined8 local_60;\n  uint local_58 [10];\n  \n  lVar8 = **(long **)*param_1;\n  DAT_002b5c08 = DAT_002b5c08 + 1;\n  sprintf((char *)local_58,"__fu%d_");\n  puVar14 = local_58;\n  do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);\n  bVar17 = (uVar12 & 0x8080) == 0;\n  if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }\n  if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));\n  puVar14 = (uint *)(param_4 - (long)pcVar5);\n  uVar13 = (uint)pcVar5;\n  uVar18 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }\n  local_60 = 0;\n  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);\n  uVar16 = *(undefined8 *)(local_60 + 8);\n  if (DAT_002b5fec == 2) goto LAB_0015682c;\n  *(undefined2 *)(param_4 + -2) = 0x5f6b;\n  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;\n  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);\n  lVar8 = DAT_002b5f90;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }\n  lVar8 = DAT_002b5f90;\n  if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }\n  if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }\nLAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }\n  lVar8 = DAT_002b5f90;\n  uVar1 = *(undefined4 *)(param_1[3] + 0xc);\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  cVar15 = '\x10';\n  if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(cVar15);\n  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);\n  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);\n  if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }\n  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  lVar8 = DAT_002b5f90;\n  if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }\n  DAT_002b5ca4 = DAT_002b5ca4 + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(0x10);\n  lVar8 = FUN_00154530(puVar7,".rdata",0x100);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);\n  bfd_set_section_size(puVar7,lVar8,4);\n  uVar16 = xcalloc(1,4);\n  *(undefined8 *)(lVar8 + 0xb0) = uVar16;\n  FUN_00153440(puVar7,0,0x3e,1);\n  FUN_001532d0(lVar8);\n  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  return;\n}" primitive_type (function_declarator "FUN_00156210(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)" identifier (parameter_list "(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "ulong param_3" type_identifier identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined8 param_5" type_identifier identifier) ))) (compound_statement "{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 uVar10;\n  undefined1 (*pauVar11) [16];\n  uint uVar12;\n  uint uVar13;\n  uint *puVar14;\n  char cVar15;\n  undefined8 uVar16;\n  bool bVar17;\n  ulong uVar18;\n  undefined8 local_60;\n  uint local_58 [10];\n  \n  lVar8 = **(long **)*param_1;\n  DAT_002b5c08 = DAT_002b5c08 + 1;\n  sprintf((char *)local_58,"__fu%d_");\n  puVar14 = local_58;\n  do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);\n  bVar17 = (uVar12 & 0x8080) == 0;\n  if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }\n  if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));\n  puVar14 = (uint *)(param_4 - (long)pcVar5);\n  uVar13 = (uint)pcVar5;\n  uVar18 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }\n  local_60 = 0;\n  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);\n  uVar16 = *(undefined8 *)(local_60 + 8);\n  if (DAT_002b5fec == 2) goto LAB_0015682c;\n  *(undefined2 *)(param_4 + -2) = 0x5f6b;\n  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;\n  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);\n  lVar8 = DAT_002b5f90;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }\n  lVar8 = DAT_002b5f90;\n  if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }\n  if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }\nLAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }\n  lVar8 = DAT_002b5f90;\n  uVar1 = *(undefined4 *)(param_1[3] + 0xc);\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  cVar15 = '\x10';\n  if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(cVar15);\n  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);\n  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);\n  if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }\n  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  lVar8 = DAT_002b5f90;\n  if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }\n  DAT_002b5ca4 = DAT_002b5ca4 + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(0x10);\n  lVar8 = FUN_00154530(puVar7,".rdata",0x100);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);\n  bfd_set_section_size(puVar7,lVar8,4);\n  uVar16 = xcalloc(1,4);\n  *(undefined8 *)(lVar8 + 0xb0) = uVar16;\n  FUN_00153440(puVar7,0,0x3e,1);\n  FUN_001532d0(lVar8);\n  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  return;\n}" { (declaration "undefined4 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "uint *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "undefined8 uVar10;" type_identifier identifier ;) (expression_statement "undefined1 (*pauVar11) [16];" (subscript_expression "undefined1 (*pauVar11) [16]" (call_expression "undefined1 (*pauVar11)" identifier (argument_list "(*pauVar11)" ( (pointer_expression "*pauVar11" * identifier) ))) [ number_literal ]) ;) (declaration "uint uVar12;" type_identifier identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "uint *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "char cVar15;" primitive_type identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "bool bVar17;" primitive_type identifier ;) (declaration "ulong uVar18;" type_identifier identifier ;) (declaration "undefined8 local_60;" type_identifier identifier ;) (declaration "uint local_58 [10];" type_identifier (array_declarator "local_58 [10]" identifier [ number_literal ]) ;) (expression_statement "lVar8 = **(long **)*param_1;" (assignment_expression "lVar8 = **(long **)*param_1" identifier = (pointer_expression "**(long **)*param_1" * (pointer_expression "*(long **)*param_1" * (cast_expression "(long **)*param_1" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "*param_1" * identifier))))) ;) (expression_statement "DAT_002b5c08 = DAT_002b5c08 + 1;" (assignment_expression "DAT_002b5c08 = DAT_002b5c08 + 1" identifier = (binary_expression "DAT_002b5c08 + 1" identifier + number_literal)) ;) (expression_statement "sprintf((char *)local_58,"__fu%d_");" (call_expression "sprintf((char *)local_58,"__fu%d_")" identifier (argument_list "((char *)local_58,"__fu%d_")" ( (cast_expression "(char *)local_58" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal ""__fu%d_"" " string_content ") ))) ;) (expression_statement "puVar14 = local_58;" (assignment_expression "puVar14 = local_58" identifier = identifier) ;) (do_statement "do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);" do (compound_statement "{\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  }" { (expression_statement "puVar4 = puVar14;" (assignment_expression "puVar4 = puVar14" identifier = identifier) ;) (expression_statement "uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;" (assignment_expression "uVar12 = *puVar4 + 0xfefefeff & ~*puVar4" identifier = (binary_expression "*puVar4 + 0xfefefeff & ~*puVar4" (binary_expression "*puVar4 + 0xfefefeff" (pointer_expression "*puVar4" * identifier) + number_literal) & (unary_expression "~*puVar4" ~ (pointer_expression "*puVar4" * identifier)))) ;) (expression_statement "uVar13 = uVar12 & 0x80808080;" (assignment_expression "uVar13 = uVar12 & 0x80808080" identifier = (binary_expression "uVar12 & 0x80808080" identifier & number_literal)) ;) (expression_statement "puVar14 = puVar4 + 1;" (assignment_expression "puVar14 = puVar4 + 1" identifier = (binary_expression "puVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar13 == 0)" ( (binary_expression "uVar13 == 0" identifier == number_literal) )) ;) (expression_statement "bVar17 = (uVar12 & 0x8080) == 0;" (assignment_expression "bVar17 = (uVar12 & 0x8080) == 0" identifier = (binary_expression "(uVar12 & 0x8080) == 0" (parenthesized_expression "(uVar12 & 0x8080)" ( (binary_expression "uVar12 & 0x8080" identifier & number_literal) )) == number_literal)) ;) (if_statement "if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n    uVar13 = uVar13 >> 0x10;\n  }" { (expression_statement "uVar13 = uVar13 >> 0x10;" (assignment_expression "uVar13 = uVar13 >> 0x10" identifier = (binary_expression "uVar13 >> 0x10" identifier >> number_literal)) ;) })) (if_statement "if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }" if (parenthesized_expression "(bVar17)" ( identifier )) (compound_statement "{\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }" { (expression_statement "puVar14 = (uint *)((long)puVar4 + 6);" (assignment_expression "puVar14 = (uint *)((long)puVar4 + 6)" identifier = (cast_expression "(uint *)((long)puVar4 + 6)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar4 + 6)" ( (binary_expression "(long)puVar4 + 6" (cast_expression "(long)puVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));" (assignment_expression "pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58))" identifier = (cast_expression "(char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58))" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58))" ( (binary_expression "(long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58)" ( (binary_expression "(-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13))" ( (binary_expression "-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)" number_literal - (cast_expression "(ulong)CARRY1((byte)uVar13,(byte)uVar13)" ( (type_descriptor "ulong" type_identifier) ) (call_expression "CARRY1((byte)uVar13,(byte)uVar13)" identifier (argument_list "((byte)uVar13,(byte)uVar13)" ( (cast_expression "(byte)uVar13" ( (type_descriptor "byte" type_identifier) ) identifier) , (cast_expression "(byte)uVar13" ( (type_descriptor "byte" type_identifier) ) identifier) ))))) )) - (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) ;) (expression_statement "puVar14 = (uint *)(param_4 - (long)pcVar5);" (assignment_expression "puVar14 = (uint *)(param_4 - (long)pcVar5)" identifier = (cast_expression "(uint *)(param_4 - (long)pcVar5)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 - (long)pcVar5)" ( (binary_expression "param_4 - (long)pcVar5" identifier - (cast_expression "(long)pcVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) ;) (expression_statement "uVar13 = (uint)pcVar5;" (assignment_expression "uVar13 = (uint)pcVar5" identifier = (cast_expression "(uint)pcVar5" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (expression_statement "uVar18 = (ulong)pcVar5 & 0xffffffff;" (assignment_expression "uVar18 = (ulong)pcVar5 & 0xffffffff" identifier = (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal)) ;) (if_statement "if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }" if (parenthesized_expression "(uVar13 < 8)" ( (binary_expression "uVar13 < 8" identifier < number_literal) )) (compound_statement "{\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }" { (if_statement "if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }" if (parenthesized_expression "(((ulong)pcVar5 & 4) == 0)" ( (binary_expression "((ulong)pcVar5 & 4) == 0" (parenthesized_expression "((ulong)pcVar5 & 4)" ( (binary_expression "(ulong)pcVar5 & 4" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }" { (if_statement "if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }" { (expression_statement "*(undefined1 *)puVar14 = (undefined1)local_58[0];" (assignment_expression "*(undefined1 *)puVar14 = (undefined1)local_58[0]" (pointer_expression "*(undefined1 *)puVar14" * (cast_expression "(undefined1 *)puVar14" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (cast_expression "(undefined1)local_58[0]" ( (type_descriptor "undefined1" type_identifier) ) (subscript_expression "local_58[0]" identifier [ number_literal ]))) ;) (if_statement "if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }" if (parenthesized_expression "(((ulong)pcVar5 & 2) != 0)" ( (binary_expression "((ulong)pcVar5 & 2) != 0" (parenthesized_expression "((ulong)pcVar5 & 2)" ( (binary_expression "(ulong)pcVar5 & 2" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }" { (expression_statement "*(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));" (assignment_expression "*(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2))" (pointer_expression "*(undefined2 *)((long)puVar14 + (uVar18 - 2))" * (cast_expression "(undefined2 *)((long)puVar14 + (uVar18 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + (uVar18 - 2))" ( (binary_expression "(long)puVar14 + (uVar18 - 2)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - 2)" ( (binary_expression "uVar18 - 2" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined2 *)((long)local_58 + (uVar18 - 2))" * (cast_expression "(undefined2 *)((long)local_58 + (uVar18 - 2))" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + (uVar18 - 2))" ( (binary_expression "(long)local_58 + (uVar18 - 2)" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - 2)" ( (binary_expression "uVar18 - 2" identifier - number_literal) ))) ))))) ;) })) })) }) (else_clause "else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }" else (compound_statement "{\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }" { (expression_statement "*puVar14 = local_58[0];" (assignment_expression "*puVar14 = local_58[0]" (pointer_expression "*puVar14" * identifier) = (subscript_expression "local_58[0]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;" (assignment_expression "*(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))" (pointer_expression "*(undefined4 *)((long)puVar14 + (uVar18 - 4))" * (cast_expression "(undefined4 *)((long)puVar14 + (uVar18 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + (uVar18 - 4))" ( (binary_expression "(long)puVar14 + (uVar18 - 4)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - 4)" ( (binary_expression "uVar18 - 4" identifier - number_literal) ))) )))) = (pointer_expression "*(undefined4 *)((long)local_58 + (uVar18 - 4))" * (cast_expression "(undefined4 *)((long)local_58 + (uVar18 - 4))" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + (uVar18 - 4))" ( (binary_expression "(long)local_58 + (uVar18 - 4)" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - 4)" ( (binary_expression "uVar18 - 4" identifier - number_literal) ))) ))))) ;) }))) }) (else_clause "else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }" else (compound_statement "{\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }" { (expression_statement "*(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);" (assignment_expression "*(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0])" (pointer_expression "*(ulong *)puVar14" * (cast_expression "(ulong *)puVar14" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (call_expression "CONCAT44(local_58[1],local_58[0])" identifier (argument_list "(local_58[1],local_58[0])" ( (subscript_expression "local_58[1]" identifier [ number_literal ]) , (subscript_expression "local_58[0]" identifier [ number_literal ]) )))) ;) (expression_statement "*(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));" (assignment_expression "*(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" (pointer_expression "*(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8))" * (cast_expression "(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (binary_expression "(long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(((ulong)pcVar5 & 0xffffffff) - 8)" ( (binary_expression "((ulong)pcVar5 & 0xffffffff) - 8" (parenthesized_expression "((ulong)pcVar5 & 0xffffffff)" ( (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) - number_literal) ))) )))) = (pointer_expression "*(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" * (cast_expression "(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" ( (binary_expression "(long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8)" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(((ulong)pcVar5 & 0xffffffff) - 8)" ( (binary_expression "((ulong)pcVar5 & 0xffffffff) - 8" (parenthesized_expression "((ulong)pcVar5 & 0xffffffff)" ( (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" ( (type_descriptor "ulong" type_identifier) ) identifier) & number_literal) )) - number_literal) ))) ))))) ;) (expression_statement "lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);" (assignment_expression "lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" (cast_expression "(long)puVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (parenthesized_expression "((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar14 + 2) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar14 + 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar14 + 2)" ( (binary_expression "puVar14 + 2" identifier + number_literal) ))) & number_literal) )))) ;) (expression_statement "uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;" (assignment_expression "uVar13 = (int)lVar6 + uVar13 & 0xfffffff8" identifier = (binary_expression "(int)lVar6 + uVar13 & 0xfffffff8" (binary_expression "(int)lVar6 + uVar13" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) & number_literal)) ;) (if_statement "if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }" if (parenthesized_expression "(7 < uVar13)" ( (binary_expression "7 < uVar13" number_literal < identifier) )) (compound_statement "{\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }" { (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);" do (compound_statement "{\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      }" { (expression_statement "uVar18 = (ulong)uVar12;" (assignment_expression "uVar18 = (ulong)uVar12" identifier = (cast_expression "(ulong)uVar12" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) (expression_statement "uVar12 = uVar12 + 8;" (assignment_expression "uVar12 = uVar12 + 8" identifier = (binary_expression "uVar12 + 8" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));" (assignment_expression "*(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6))" (pointer_expression "*(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18)" * (cast_expression "(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18)" ( (binary_expression "((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18" (parenthesized_expression "((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar14 + 2) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar14 + 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar14 + 2)" ( (binary_expression "puVar14 + 2" identifier + number_literal) ))) & number_literal) )) + identifier) )))) = (pointer_expression "*(undefined8 *)((long)local_58 + (uVar18 - lVar6))" * (cast_expression "(undefined8 *)((long)local_58 + (uVar18 - lVar6))" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)local_58 + (uVar18 - lVar6))" ( (binary_expression "(long)local_58 + (uVar18 - lVar6)" (cast_expression "(long)local_58" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(uVar18 - lVar6)" ( (binary_expression "uVar18 - lVar6" identifier - identifier) ))) ))))) ;) }) while (parenthesized_expression "(uVar12 < uVar13)" ( (binary_expression "uVar12 < uVar13" identifier < identifier) )) ;) })) }))) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "(**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);" (call_expression "(**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60)" (parenthesized_expression "(**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))" ( (pointer_expression "**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" * (pointer_expression "*(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" * (cast_expression "(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" ( (binary_expression "*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138" (pointer_expression "*(long *)(*(long *)(lVar8 + 8) + 0x368)" * (cast_expression "(long *)(*(long *)(lVar8 + 8) + 0x368)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar8 + 8) + 0x368)" ( (binary_expression "*(long *)(lVar8 + 8) + 0x368" (pointer_expression "*(long *)(lVar8 + 8)" * (cast_expression "(long *)(lVar8 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 8)" ( (binary_expression "lVar8 + 8" identifier + number_literal) )))) + number_literal) )))) + number_literal) ))))) )) (argument_list "(&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60)" ( (pointer_expression "&DAT_002b5f40" & identifier) , identifier , identifier , number_literal , identifier , (subscript_expression "param_1[1]" identifier [ number_literal ]) , number_literal , number_literal , number_literal , (pointer_expression "&local_60" & identifier) ))) ;) (expression_statement "uVar16 = *(undefined8 *)(local_60 + 8);" (assignment_expression "uVar16 = *(undefined8 *)(local_60 + 8)" identifier = (pointer_expression "*(undefined8 *)(local_60 + 8)" * (cast_expression "(undefined8 *)(local_60 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_60 + 8)" ( (binary_expression "local_60 + 8" identifier + number_literal) ))))) ;) (if_statement "if (DAT_002b5fec == 2) goto LAB_0015682c;" if (parenthesized_expression "(DAT_002b5fec == 2)" ( (binary_expression "DAT_002b5fec == 2" identifier == number_literal) )) (goto_statement "goto LAB_0015682c;" goto statement_identifier ;)) (expression_statement "*(undefined2 *)(param_4 + -2) = 0x5f6b;" (assignment_expression "*(undefined2 *)(param_4 + -2) = 0x5f6b" (pointer_expression "*(undefined2 *)(param_4 + -2)" * (cast_expression "(undefined2 *)(param_4 + -2)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + -2)" ( (binary_expression "param_4 + -2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;" (assignment_expression "*(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f" (pointer_expression "*(undefined8 *)(param_4 + -10)" * (cast_expression "(undefined8 *)(param_4 + -10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + -10)" ( (binary_expression "param_4 + -10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);" (assignment_expression "lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1)" identifier = (call_expression "bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1)" identifier (argument_list "(DAT_002b5f68,param_4 + -10,0,0,1)" ( identifier , (binary_expression "param_4 + -10" identifier + number_literal) , number_literal , number_literal , number_literal )))) ;) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" identifier = identifier) ;) (if_statement "if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }" if (parenthesized_expression "((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03'))" ( (binary_expression "(lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')" (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) || (parenthesized_expression "(*(char *)(lVar6 + 0x18) != '\x03')" ( (binary_expression "*(char *)(lVar6 + 0x18) != '\x03'" (pointer_expression "*(char *)(lVar6 + 0x18)" * (cast_expression "(char *)(lVar6 + 0x18)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar6 + 0x18)" ( (binary_expression "lVar6 + 0x18" identifier + number_literal) )))) != (char_literal "'\x03'" ' escape_sequence ')) ))) )) (compound_statement "{\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }" { (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40)" identifier (argument_list "(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40)" ( identifier , (string_literal ""nmth%06d.o"" " string_content ") , (cast_expression "(ulong)DAT_002b5c40" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" identifier = (binary_expression "DAT_002b5c40 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" identifier = (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar5,lVar8)" identifier (argument_list "(pcVar5,lVar8)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" identifier (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" * (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 8)" ( (binary_expression "DAT_002b5c98 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" identifier (argument_list "(puVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" ( (pointer_expression "**(code **)(puVar7[1] + 0x290)" * (pointer_expression "*(code **)(puVar7[1] + 0x290)" * (cast_expression "(code **)(puVar7[1] + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x290)" ( (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" * (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x18)" ( (binary_expression "DAT_002b5c98 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5c48 = xmalloc(0x18);" (assignment_expression "DAT_002b5c48 = xmalloc(0x18)" identifier = (call_expression "xmalloc(0x18)" identifier (argument_list "(0x18)" ( number_literal )))) ;) (expression_statement "lVar8 = FUN_00154530(puVar7,".idata$4",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".idata$4",0x100)" identifier = (call_expression "FUN_00154530(puVar7,".idata$4",0x100)" identifier (argument_list "(puVar7,".idata$4",0x100)" ( identifier , (string_literal "".idata$4"" " string_content ") , number_literal )))) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);" (call_expression "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0)" identifier (argument_list "(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0)" ( identifier , (string_literal ""__nm_thnk_"" " string_content ") , identifier , (string_literal """" " ") , identifier , number_literal , number_literal ))) ;) (expression_statement "FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);" (call_expression "FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" identifier (argument_list "(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" ( identifier , (string_literal ""__nm_"" " string_content ") , identifier , (string_literal """" " ") , number_literal , number_literal , (binary_expression "uVar18 & 0xffffffff00000000" identifier & number_literal) ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,8);" (call_expression "bfd_set_section_size(puVar7,lVar8,8)" identifier (argument_list "(puVar7,lVar8,8)" ( identifier , identifier , number_literal ))) ;) (expression_statement "puVar9 = (undefined8 *)xmalloc(8);" (assignment_expression "puVar9 = (undefined8 *)xmalloc(8)" identifier = (cast_expression "(undefined8 *)xmalloc(8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "*(undefined8 **)(lVar8 + 0xb0) = puVar9;" (assignment_expression "*(undefined8 **)(lVar8 + 0xb0) = puVar9" (pointer_expression "*(undefined8 **)(lVar8 + 0xb0)" * (cast_expression "(undefined8 **)(lVar8 + 0xb0)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" * identifier) = number_literal) ;) (expression_statement "FUN_00153440(puVar7,0,0x3e,2);" (call_expression "FUN_00153440(puVar7,0,0x3e,2)" identifier (argument_list "(puVar7,0,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);" (call_expression "bfd_set_section_contents(puVar7,lVar8,puVar9,0,8)" identifier (argument_list "(puVar7,lVar8,puVar9,0,8)" ( identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" identifier (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" ( identifier , (pointer_expression "*puVar7" * identifier) , (pointer_expression "&DAT_002b5f40" & identifier) ))) ;) (expression_statement "DAT_002b60f0 = 0;" (assignment_expression "DAT_002b60f0 = 0" identifier = number_literal) ;) (expression_statement "*(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;" (assignment_expression "*(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff" (pointer_expression "*(uint *)(DAT_002b5f90 + 0x44)" * (cast_expression "(uint *)(DAT_002b5f90 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x44)" ( (binary_expression "DAT_002b5f90 + 0x44" identifier + number_literal) )))) = (binary_expression "*(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff" (pointer_expression "*(uint *)(DAT_002b5f90 + 0x44)" * (cast_expression "(uint *)(DAT_002b5f90 + 0x44)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5f90 + 0x44)" ( (binary_expression "DAT_002b5f90 + 0x44" identifier + number_literal) )))) & number_literal)) ;) })) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" identifier = identifier) ;) (if_statement "if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }" if (parenthesized_expression "((param_3 == 0) || (DAT_002b5fec == 1))" ( (binary_expression "(param_3 == 0) || (DAT_002b5fec == 1)" (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) || (parenthesized_expression "(DAT_002b5fec == 1)" ( (binary_expression "DAT_002b5fec == 1" identifier == number_literal) ))) )) (compound_statement "{\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }" { (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40)" identifier (argument_list "(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40)" ( identifier , (string_literal ""fu%06d.o"" " string_content ") , (cast_expression "(ulong)DAT_002b5c40" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" identifier = (binary_expression "DAT_002b5c40 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" identifier = (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar5,lVar8)" identifier (argument_list "(pcVar5,lVar8)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" identifier (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" * (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 8)" ( (binary_expression "DAT_002b5c98 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" identifier (argument_list "(puVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" ( (pointer_expression "**(code **)(puVar7[1] + 0x290)" * (pointer_expression "*(code **)(puVar7[1] + 0x290)" * (cast_expression "(code **)(puVar7[1] + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x290)" ( (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" * (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x18)" ( (binary_expression "DAT_002b5c98 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5c48 = xmalloc(0x30);" (assignment_expression "DAT_002b5c48 = xmalloc(0x30)" identifier = (call_expression "xmalloc(0x30)" identifier (argument_list "(0x30)" ( number_literal )))) ;) (expression_statement "lVar8 = FUN_00154530(puVar7,".idata$2",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".idata$2",0x100)" identifier = (call_expression "FUN_00154530(puVar7,".idata$2",0x100)" identifier (argument_list "(puVar7,".idata$2",0x100)" ( identifier , (string_literal "".idata$2"" " string_content ") , number_literal )))) ;) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" identifier = number_literal) ;) (expression_statement "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0)" identifier (argument_list "(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0)" ( identifier , (string_literal ""__nm_thnk_"" " string_content ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (expression_statement "pcVar5 = "_";" (assignment_expression "pcVar5 = "_"" identifier = (string_literal ""_"" " string_content ")) ;) (expression_statement "uVar18 = uVar18 & 0xffffffff00000000;" (assignment_expression "uVar18 = uVar18 & 0xffffffff00000000" identifier = (binary_expression "uVar18 & 0xffffffff00000000" identifier & number_literal)) ;) (if_statement "if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }" if (parenthesized_expression "(*(int *)(DAT_002b5c98 + 0x1c) == 0)" ( (binary_expression "*(int *)(DAT_002b5c98 + 0x1c) == 0" (pointer_expression "*(int *)(DAT_002b5c98 + 0x1c)" * (cast_expression "(int *)(DAT_002b5c98 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x1c)" ( (binary_expression "DAT_002b5c98 + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      pcVar5 = "";\n    }" { (expression_statement "pcVar5 = "";" (assignment_expression "pcVar5 = """ identifier = (string_literal """" " ")) ;) })) (expression_statement "FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);" (call_expression "FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18)" identifier (argument_list "(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18)" ( identifier , identifier , identifier , (string_literal ""_iname"" " string_content ") , number_literal , number_literal , identifier ))) ;) (expression_statement "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);" (call_expression "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" identifier (argument_list "(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" ( identifier , (string_literal """" " ") , identifier , (string_literal """" " ") , number_literal , number_literal , (binary_expression "uVar18 & 0xffffffff00000000" identifier & number_literal) ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,0x14);" (call_expression "bfd_set_section_size(puVar7,lVar8,0x14)" identifier (argument_list "(puVar7,lVar8,0x14)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(0x14);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(0x14)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x14)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" * (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)pauVar11[1] = 0;" (assignment_expression "*(undefined4 *)pauVar11[1] = 0" (pointer_expression "*(undefined4 *)pauVar11[1]" * (cast_expression "(undefined4 *)pauVar11[1]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pauVar11[1]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*pauVar11 = (undefined1  [16])0x0;" (assignment_expression "*pauVar11 = (undefined1  [16])0x0" (pointer_expression "*pauVar11" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "FUN_00153440(puVar7,0,0x3e,1);" (call_expression "FUN_00153440(puVar7,0,0x3e,1)" identifier (argument_list "(puVar7,0,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_00153440(puVar7,0xc,0x3e,2);" (call_expression "FUN_00153440(puVar7,0xc,0x3e,2)" identifier (argument_list "(puVar7,0xc,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_00153440(puVar7,0x10,0x3e,3);" (call_expression "FUN_00153440(puVar7,0x10,0x3e,3)" identifier (argument_list "(puVar7,0x10,0x3e,3)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);" (call_expression "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14)" identifier (argument_list "(puVar7,lVar8,pauVar11,0,0x14)" ( identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" identifier (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" ( identifier , (pointer_expression "*puVar7" * identifier) , (pointer_expression "&DAT_002b5f40" & identifier) ))) ;) (if_statement "if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }" if (parenthesized_expression "(param_3 == 0)" ( (binary_expression "param_3 == 0" identifier == number_literal) )) (compound_statement "{\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }" { (if_statement "if (DAT_002b5fec != 2) {\n        return;\n      }" if (parenthesized_expression "(DAT_002b5fec != 2)" ( (binary_expression "DAT_002b5fec != 2" identifier != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (goto_statement "goto LAB_0015682c;" goto statement_identifier ;) })) (if_statement "if (DAT_002b5fec == 1) goto LAB_0015682c;" if (parenthesized_expression "(DAT_002b5fec == 1)" ( (binary_expression "DAT_002b5fec == 1" identifier == number_literal) )) (goto_statement "goto LAB_0015682c;" goto statement_identifier ;)) })) (if_statement "if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }" if (parenthesized_expression "(DAT_002b5fec != 2)" ( (binary_expression "DAT_002b5fec != 2" identifier != number_literal) )) (compound_statement "{\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }" { (expression_statement "uVar16 = param_1[1];" (assignment_expression "uVar16 = param_1[1]" identifier = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = *(undefined8 *)(param_2 + 0xf0);" (assignment_expression "uVar2 = *(undefined8 *)(param_2 + 0xf0)" identifier = (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" * (cast_expression "(undefined8 *)(param_2 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0xf0)" ( (binary_expression "param_2 + 0xf0" identifier + number_literal) ))))) ;) (expression_statement "uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(*(long *)*param_1 + 8)" identifier = (pointer_expression "*(undefined8 *)(*(long *)*param_1 + 8)" * (cast_expression "(undefined8 *)(*(long *)*param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)*param_1 + 8)" ( (binary_expression "*(long *)*param_1 + 8" (pointer_expression "*(long *)*param_1" * (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) + number_literal) ))))) ;) (expression_statement "uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);" (assignment_expression "uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5)" identifier = (call_expression "dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5)" identifier (argument_list "(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5)" ( number_literal , (string_literal ""%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"" " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);" (call_expression "FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3)" identifier (argument_list "(uVar10,uVar2,param_2,uVar16,uVar3)" ( identifier , identifier , identifier , identifier , identifier ))) ;) (return_statement "return;" return ;) })) (labeled_statement "LAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }" statement_identifier : (if_statement "if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }" if (parenthesized_expression "(DAT_002b5be4 != 0)" ( (binary_expression "DAT_002b5be4 != 0" identifier != number_literal) )) (compound_statement "{\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }" { (expression_statement "printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);" (call_expression "printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff)" identifier (argument_list "("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff)" ( (string_literal ""creating runtime pseudo-reloc entry for %s (addend=%d)\n"" " string_content escape_sequence ") , identifier , (binary_expression "param_3 & 0xffffffff" identifier & number_literal) ))) ;) }))) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" identifier = identifier) ;) (expression_statement "uVar1 = *(undefined4 *)(param_1[3] + 0xc);" (assignment_expression "uVar1 = *(undefined4 *)(param_1[3] + 0xc)" identifier = (pointer_expression "*(undefined4 *)(param_1[3] + 0xc)" * (cast_expression "(undefined4 *)(param_1[3] + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[3] + 0xc)" ( (binary_expression "param_1[3] + 0xc" (subscript_expression "param_1[3]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40)" identifier (argument_list "(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40)" ( identifier , (string_literal ""rtr%06d.o"" " string_content ") , (cast_expression "(ulong)DAT_002b5c40" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" identifier = (binary_expression "DAT_002b5c40 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" identifier = (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar5,lVar8)" identifier (argument_list "(pcVar5,lVar8)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" identifier (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" * (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 8)" ( (binary_expression "DAT_002b5c98 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" identifier (argument_list "(puVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" ( (pointer_expression "**(code **)(puVar7[1] + 0x290)" * (pointer_expression "*(code **)(puVar7[1] + 0x290)" * (cast_expression "(code **)(puVar7[1] + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x290)" ( (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" * (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x18)" ( (binary_expression "DAT_002b5c98 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "cVar15 = '\x10';" (assignment_expression "cVar15 = '\x10'" identifier = (char_literal "'\x10'" ' escape_sequence ')) ;) (if_statement "if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }" if (parenthesized_expression "(DAT_002b5fec == 2)" ( (binary_expression "DAT_002b5fec == 2" identifier == number_literal) )) (compound_statement "{\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }" { (expression_statement "cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;" (assignment_expression "cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18" identifier = (binary_expression "(-(DAT_002b5ca0 == 0) & 0x18U) + 0x18" (parenthesized_expression "(-(DAT_002b5ca0 == 0) & 0x18U)" ( (binary_expression "-(DAT_002b5ca0 == 0) & 0x18U" (unary_expression "-(DAT_002b5ca0 == 0)" - (parenthesized_expression "(DAT_002b5ca0 == 0)" ( (binary_expression "DAT_002b5ca0 == 0" identifier == number_literal) ))) & number_literal) )) + number_literal)) ;) })) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5c48 = xmalloc(cVar15);" (assignment_expression "DAT_002b5c48 = xmalloc(cVar15)" identifier = (call_expression "xmalloc(cVar15)" identifier (argument_list "(cVar15)" ( identifier )))) ;) (expression_statement "lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100)" identifier = (call_expression "FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100)" identifier (argument_list "(puVar7,".rdata_runtime_pseudo_reloc",0x100)" ( identifier , (string_literal "".rdata_runtime_pseudo_reloc"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0)" identifier (argument_list "(puVar7,"",uVar16,"",0x2b4598,2,0)" ( identifier , (string_literal """" " ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (if_statement "if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }" if (parenthesized_expression "(DAT_002b5fec == 2)" ( (binary_expression "DAT_002b5fec == 2" identifier == number_literal) )) (compound_statement "{\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }" { (if_statement "if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }" if (parenthesized_expression "(DAT_002b5ca0 == 0)" ( (binary_expression "DAT_002b5ca0 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }" { (expression_statement "uVar16 = 0x18;" (assignment_expression "uVar16 = 0x18" identifier = number_literal) ;) (expression_statement "DAT_002b5ca0 = 1;" (assignment_expression "DAT_002b5ca0 = 1" identifier = number_literal) ;) (expression_statement "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" identifier (argument_list "(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" ( identifier , (string_literal ""__imp_"" " string_content ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,0x18);" (call_expression "bfd_set_section_size(puVar7,lVar8,0x18)" identifier (argument_list "(puVar7,lVar8,0x18)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(0x18);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(0x18)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0x18)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0x18)" identifier (argument_list "(0x18)" ( number_literal ))))) ;) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" * (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)pauVar11[1] = 0;" (assignment_expression "*(undefined8 *)pauVar11[1] = 0" (pointer_expression "*(undefined8 *)pauVar11[1]" * (cast_expression "(undefined8 *)pauVar11[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "pauVar11[1]" identifier [ number_literal ]))) = number_literal) ;) (expression_statement "*pauVar11 = (undefined1  [16])0x0;" (assignment_expression "*pauVar11 = (undefined1  [16])0x0" (pointer_expression "*pauVar11" * identifier) = (cast_expression "(undefined1  [16])0x0" ( (type_descriptor "undefined1  [16]" type_identifier (abstract_array_declarator "[16]" [ number_literal ])) ) number_literal)) ;) (expression_statement "FUN_00153440(puVar7,0x10,0x3e,1);" (call_expression "FUN_00153440(puVar7,0x10,0x3e,1)" identifier (argument_list "(puVar7,0x10,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_00153440(puVar7,0xc,0x3e,2);" (call_expression "FUN_00153440(puVar7,0xc,0x3e,2)" identifier (argument_list "(puVar7,0xc,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);" (call_expression "(**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" ( (pointer_expression "**(code **)(puVar7[1] + 0x48)" * (pointer_expression "*(code **)(puVar7[1] + 0x48)" * (cast_expression "(code **)(puVar7[1] + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x48)" ( (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(uVar1,pauVar11[1] + 4)" ( identifier , (binary_expression "pauVar11[1] + 4" (subscript_expression "pauVar11[1]" identifier [ number_literal ]) + number_literal) ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);" (call_expression "(**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" ( (pointer_expression "**(code **)(puVar7[1] + 0x48)" * (pointer_expression "*(code **)(puVar7[1] + 0x48)" * (cast_expression "(code **)(puVar7[1] + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x48)" ( (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(1,*pauVar11 + 8)" ( number_literal , (binary_expression "*pauVar11 + 8" (pointer_expression "*pauVar11" * identifier) + number_literal) ))) ;) }) (else_clause "else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }" else (compound_statement "{\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }" { (expression_statement "uVar16 = 0xc;" (assignment_expression "uVar16 = 0xc" identifier = number_literal) ;) (expression_statement "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" identifier (argument_list "(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" ( identifier , (string_literal ""__imp_"" " string_content ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,0xc);" (call_expression "bfd_set_section_size(puVar7,lVar8,0xc)" identifier (argument_list "(puVar7,lVar8,0xc)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(0xc);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(0xc)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(0xc)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(0xc)" identifier (argument_list "(0xc)" ( number_literal ))))) ;) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" * (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)*pauVar11 = 0;" (assignment_expression "*(undefined8 *)*pauVar11 = 0" (pointer_expression "*(undefined8 *)*pauVar11" * (cast_expression "(undefined8 *)*pauVar11" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pauVar11" * identifier))) = number_literal) ;) (expression_statement "*(undefined4 *)(*pauVar11 + 8) = 0;" (assignment_expression "*(undefined4 *)(*pauVar11 + 8) = 0" (pointer_expression "*(undefined4 *)(*pauVar11 + 8)" * (cast_expression "(undefined4 *)(*pauVar11 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*pauVar11 + 8)" ( (binary_expression "*pauVar11 + 8" (pointer_expression "*pauVar11" * identifier) + number_literal) )))) = number_literal) ;) (expression_statement "FUN_00153440(puVar7,4,0x3e,1);" (call_expression "FUN_00153440(puVar7,4,0x3e,1)" identifier (argument_list "(puVar7,4,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_00153440(puVar7,0,0x3e,2);" (call_expression "FUN_00153440(puVar7,0,0x3e,2)" identifier (argument_list "(puVar7,0,0x3e,2)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);" (call_expression "(**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" ( (pointer_expression "**(code **)(puVar7[1] + 0x48)" * (pointer_expression "*(code **)(puVar7[1] + 0x48)" * (cast_expression "(code **)(puVar7[1] + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x48)" ( (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(uVar1,*pauVar11 + 8)" ( identifier , (binary_expression "*pauVar11 + 8" (pointer_expression "*pauVar11" * identifier) + number_literal) ))) ;) }))) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) }) (else_clause "else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }" else (compound_statement "{\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }" { (expression_statement "bfd_set_section_size(puVar7,lVar8,8);" (call_expression "bfd_set_section_size(puVar7,lVar8,8)" identifier (argument_list "(puVar7,lVar8,8)" ( identifier , identifier , number_literal ))) ;) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(8);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(8)" identifier = (cast_expression "(undefined1 (*) [16])xmalloc(8)" ( (type_descriptor "undefined1 (*) [16]" type_identifier (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" ( (abstract_pointer_declarator "*" *) )) [ number_literal ])) ) (call_expression "xmalloc(8)" identifier (argument_list "(8)" ( number_literal ))))) ;) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" * (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" ( (type_descriptor "undefined1 (**) [16]" type_identifier (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" ( (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)) )) [ number_literal ])) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)*pauVar11 = 0;" (assignment_expression "*(undefined8 *)*pauVar11 = 0" (pointer_expression "*(undefined8 *)*pauVar11" * (cast_expression "(undefined8 *)*pauVar11" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*pauVar11" * identifier))) = number_literal) ;) (expression_statement "(**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);" (call_expression "(**(code **)(puVar7[1] + 0x48))(param_3,pauVar11)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" ( (pointer_expression "**(code **)(puVar7[1] + 0x48)" * (pointer_expression "*(code **)(puVar7[1] + 0x48)" * (cast_expression "(code **)(puVar7[1] + 0x48)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x48)" ( (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_3,pauVar11)" ( identifier , identifier ))) ;) (expression_statement "FUN_00153440(puVar7,4,0x3e,1);" (call_expression "FUN_00153440(puVar7,4,0x3e,1)" identifier (argument_list "(puVar7,4,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar16 = 8;" (assignment_expression "uVar16 = 8" identifier = number_literal) ;) }))) (expression_statement "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);" (call_expression "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16)" identifier (argument_list "(puVar7,lVar8,pauVar11,0,uVar16)" ( identifier , identifier , identifier , number_literal , identifier ))) ;) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" identifier (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" ( identifier , (pointer_expression "*puVar7" * identifier) , (pointer_expression "&DAT_002b5f40" & identifier) ))) ;) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" identifier = identifier) ;) (if_statement "if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }" if (parenthesized_expression "(DAT_002b5ca4 != 0)" ( (binary_expression "DAT_002b5ca4 != 0" identifier != number_literal) )) (compound_statement "{\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }" { (expression_statement "DAT_002b5ca4 = DAT_002b5ca4 + 1;" (assignment_expression "DAT_002b5ca4 = DAT_002b5ca4 + 1" identifier = (binary_expression "DAT_002b5ca4 + 1" identifier + number_literal)) ;) (return_statement "return;" return ;) })) (expression_statement "DAT_002b5ca4 = DAT_002b5ca4 + 1;" (assignment_expression "DAT_002b5ca4 = DAT_002b5ca4 + 1" identifier = (binary_expression "DAT_002b5ca4 + 1" identifier + number_literal)) ;) (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" identifier = (cast_expression "(char *)xmalloc(0x14)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x14)" identifier (argument_list "(0x14)" ( number_literal ))))) ;) (expression_statement "sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40)" identifier (argument_list "(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40)" ( identifier , (string_literal ""ertr%06d.o"" " string_content ") , (cast_expression "(ulong)DAT_002b5c40" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" identifier = (binary_expression "DAT_002b5c40 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" identifier = (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_create(pcVar5,lVar8)" identifier (argument_list "(pcVar5,lVar8)" ( identifier , identifier ))))) ;) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" identifier (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" ( (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" * (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 8)" ( (binary_expression "DAT_002b5c98 + 8" identifier + number_literal) )))) , identifier ))) ;) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" identifier (argument_list "(puVar7,1)" ( identifier , number_literal ))) ;) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" ( (pointer_expression "**(code **)(puVar7[1] + 0x290)" * (pointer_expression "*(code **)(puVar7[1] + 0x290)" * (cast_expression "(code **)(puVar7[1] + 0x290)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar7[1] + 0x290)" ( (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" ( identifier , (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" * (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x18)" ( (binary_expression "DAT_002b5c98 + 0x18" identifier + number_literal) )))) , number_literal ))) ;) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" identifier = number_literal) ;) (expression_statement "DAT_002b5c48 = xmalloc(0x10);" (assignment_expression "DAT_002b5c48 = xmalloc(0x10)" identifier = (call_expression "xmalloc(0x10)" identifier (argument_list "(0x10)" ( number_literal )))) ;) (expression_statement "lVar8 = FUN_00154530(puVar7,".rdata",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".rdata",0x100)" identifier = (call_expression "FUN_00154530(puVar7,".rdata",0x100)" identifier (argument_list "(puVar7,".rdata",0x100)" ( identifier , (string_literal "".rdata"" " string_content ") , number_literal )))) ;) (expression_statement "pcVar5 = "__pei386_runtime_relocator";" (assignment_expression "pcVar5 = "__pei386_runtime_relocator"" identifier = (string_literal ""__pei386_runtime_relocator"" " string_content ")) ;) (if_statement "if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }" if (parenthesized_expression "(*(int *)(DAT_002b5c98 + 0x1c) == 0)" ( (binary_expression "*(int *)(DAT_002b5c98 + 0x1c) == 0" (pointer_expression "*(int *)(DAT_002b5c98 + 0x1c)" * (cast_expression "(int *)(DAT_002b5c98 + 0x1c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_002b5c98 + 0x1c)" ( (binary_expression "DAT_002b5c98 + 0x1c" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n    pcVar5 = "_pei386_runtime_relocator";\n  }" { (expression_statement "pcVar5 = "_pei386_runtime_relocator";" (assignment_expression "pcVar5 = "_pei386_runtime_relocator"" identifier = (string_literal ""_pei386_runtime_relocator"" " string_content ")) ;) })) (expression_statement "FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);" (call_expression "FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0)" identifier (argument_list "(puVar7,"",pcVar5,"",0x2b4598,0,0)" ( identifier , (string_literal """" " ") , identifier , (string_literal """" " ") , number_literal , number_literal , number_literal ))) ;) (expression_statement "bfd_set_section_size(puVar7,lVar8,4);" (call_expression "bfd_set_section_size(puVar7,lVar8,4)" identifier (argument_list "(puVar7,lVar8,4)" ( identifier , identifier , number_literal ))) ;) (expression_statement "uVar16 = xcalloc(1,4);" (assignment_expression "uVar16 = xcalloc(1,4)" identifier = (call_expression "xcalloc(1,4)" identifier (argument_list "(1,4)" ( number_literal , number_literal )))) ;) (expression_statement "*(undefined8 *)(lVar8 + 0xb0) = uVar16;" (assignment_expression "*(undefined8 *)(lVar8 + 0xb0) = uVar16" (pointer_expression "*(undefined8 *)(lVar8 + 0xb0)" * (cast_expression "(undefined8 *)(lVar8 + 0xb0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0xb0)" ( (binary_expression "lVar8 + 0xb0" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00153440(puVar7,0,0x3e,1);" (call_expression "FUN_00153440(puVar7,0,0x3e,1)" identifier (argument_list "(puVar7,0,0x3e,1)" ( identifier , number_literal , number_literal , number_literal ))) ;) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" identifier (argument_list "(lVar8)" ( identifier ))) ;) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" identifier (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" ( identifier , identifier , identifier ))) ;) (expression_statement "bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);" (call_expression "bfd_set_section_contents(puVar7,lVar8,uVar16,0,4)" identifier (argument_list "(puVar7,lVar8,uVar16,0,4)" ( identifier , identifier , identifier , number_literal , number_literal ))) ;) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" identifier (argument_list "(puVar7)" ( identifier ))) ;) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" identifier (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" ( identifier , (pointer_expression "*puVar7" * identifier) , (pointer_expression "&DAT_002b5f40" & identifier) ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (subscript_expression (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) [ LIT ]) ;) (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 IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT) , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (pointer_expression * IDENT) + LIT) & (unary_expression ~ (pointer_expression * IDENT)))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT == LIT) )) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT >> LIT)) ;) })) (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))))) )) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (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) + (parenthesized_expression ( (binary_expression 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) + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) ;) })) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_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) + (parenthesized_expression ( (binary_expression 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) + (parenthesized_expression ( (binary_expression IDENT - LIT) ))) ))))) ;) }))) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_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) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) - LIT) ))) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) - LIT) ))) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + 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 = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )) + IDENT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression IDENT - IDENT) ))) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) + LIT) ))))) )) (argument_list ( (pointer_expression & IDENT) , IDENT , IDENT , LIT , IDENT , (subscript_expression IDENT [ LIT ]) , LIT , LIT , LIT , (pointer_expression & IDENT) ))) ;) (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 ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , LIT , LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = 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 { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , (string_literal " ") , IDENT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , (string_literal " ") , LIT , LIT , (binary_expression IDENT & LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (pointer_expression & IDENT) ))) ;) (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) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT)) ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , (string_literal " ") , LIT , LIT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (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) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " ")) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , (string_literal " string_content ") , LIT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " ") , IDENT , (string_literal " ") , LIT , LIT , (binary_expression IDENT & LIT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator * (abstract_pointer_declarator *)) )) [ LIT ])) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (pointer_expression & IDENT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))) ;) (return_statement return ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , IDENT , (binary_expression IDENT & LIT) ))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression - (parenthesized_expression ( (binary_expression IDENT == LIT) ))) & LIT) )) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " ") , IDENT , (string_literal " ") , LIT , LIT , LIT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , (string_literal " ") , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator * (abstract_pointer_declarator *)) )) [ LIT ])) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator [ LIT ])) ) LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( LIT , (binary_expression (pointer_expression * IDENT) + LIT) ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , (string_literal " ") , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator * (abstract_pointer_declarator *)) )) [ LIT ])) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * IDENT) + LIT) ))) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator *) )) [ LIT ])) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_array_declarator (abstract_parenthesized_declarator ( (abstract_pointer_declarator * (abstract_pointer_declarator *)) )) [ LIT ])) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) = LIT) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (pointer_expression & IDENT) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (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 = (string_literal " string_content ")) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " ") , IDENT , (string_literal " ") , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , LIT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (pointer_expression & IDENT) ))) ;) (return_statement return ;) })))
(function_definition "void FUN_00156210(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)\n\n{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 uVar10;\n  undefined1 (*pauVar11) [16];\n  uint uVar12;\n  uint uVar13;\n  uint *puVar14;\n  char cVar15;\n  undefined8 uVar16;\n  bool bVar17;\n  ulong uVar18;\n  undefined8 local_60;\n  uint local_58 [10];\n  \n  lVar8 = **(long **)*param_1;\n  DAT_002b5c08 = DAT_002b5c08 + 1;\n  sprintf((char *)local_58,"__fu%d_");\n  puVar14 = local_58;\n  do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);\n  bVar17 = (uVar12 & 0x8080) == 0;\n  if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }\n  if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));\n  puVar14 = (uint *)(param_4 - (long)pcVar5);\n  uVar13 = (uint)pcVar5;\n  uVar18 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }\n  local_60 = 0;\n  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);\n  uVar16 = *(undefined8 *)(local_60 + 8);\n  if (DAT_002b5fec == 2) goto LAB_0015682c;\n  *(undefined2 *)(param_4 + -2) = 0x5f6b;\n  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;\n  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);\n  lVar8 = DAT_002b5f90;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }\n  lVar8 = DAT_002b5f90;\n  if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }\n  if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }\nLAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }\n  lVar8 = DAT_002b5f90;\n  uVar1 = *(undefined4 *)(param_1[3] + 0xc);\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  cVar15 = '\x10';\n  if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(cVar15);\n  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);\n  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);\n  if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }\n  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  lVar8 = DAT_002b5f90;\n  if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }\n  DAT_002b5ca4 = DAT_002b5ca4 + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(0x10);\n  lVar8 = FUN_00154530(puVar7,".rdata",0x100);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);\n  bfd_set_section_size(puVar7,lVar8,4);\n  uVar16 = xcalloc(1,4);\n  *(undefined8 *)(lVar8 + 0xb0) = uVar16;\n  FUN_00153440(puVar7,0,0x3e,1);\n  FUN_001532d0(lVar8);\n  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00156210(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)" (identifier "FUN_00156210") (parameter_list "(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "ulong param_3" (type_identifier "ulong") (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) (, ",") (parameter_declaration "undefined8 param_5" (type_identifier "undefined8") (identifier "param_5")) () ")"))) (compound_statement "{\n  undefined4 uVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  uint *puVar4;\n  char *pcVar5;\n  long lVar6;\n  undefined8 *puVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  undefined8 uVar10;\n  undefined1 (*pauVar11) [16];\n  uint uVar12;\n  uint uVar13;\n  uint *puVar14;\n  char cVar15;\n  undefined8 uVar16;\n  bool bVar17;\n  ulong uVar18;\n  undefined8 local_60;\n  uint local_58 [10];\n  \n  lVar8 = **(long **)*param_1;\n  DAT_002b5c08 = DAT_002b5c08 + 1;\n  sprintf((char *)local_58,"__fu%d_");\n  puVar14 = local_58;\n  do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);\n  bVar17 = (uVar12 & 0x8080) == 0;\n  if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }\n  if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }\n  pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));\n  puVar14 = (uint *)(param_4 - (long)pcVar5);\n  uVar13 = (uint)pcVar5;\n  uVar18 = (ulong)pcVar5 & 0xffffffff;\n  if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }\n  local_60 = 0;\n  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);\n  uVar16 = *(undefined8 *)(local_60 + 8);\n  if (DAT_002b5fec == 2) goto LAB_0015682c;\n  *(undefined2 *)(param_4 + -2) = 0x5f6b;\n  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;\n  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);\n  lVar8 = DAT_002b5f90;\n  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }\n  lVar8 = DAT_002b5f90;\n  if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }\n  if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }\nLAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }\n  lVar8 = DAT_002b5f90;\n  uVar1 = *(undefined4 *)(param_1[3] + 0xc);\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  cVar15 = '\x10';\n  if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(cVar15);\n  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);\n  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);\n  if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }\n  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  lVar8 = DAT_002b5f90;\n  if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }\n  DAT_002b5ca4 = DAT_002b5ca4 + 1;\n  pcVar5 = (char *)xmalloc(0x14);\n  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);\n  DAT_002b5c40 = DAT_002b5c40 + 1;\n  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n  bfd_make_writable(puVar7);\n  bfd_set_format(puVar7,1);\n  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n  DAT_002b5c44 = 0;\n  DAT_002b5c48 = xmalloc(0x10);\n  lVar8 = FUN_00154530(puVar7,".rdata",0x100);\n  pcVar5 = "__pei386_runtime_relocator";\n  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }\n  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);\n  bfd_set_section_size(puVar7,lVar8,4);\n  uVar16 = xcalloc(1,4);\n  *(undefined8 *)(lVar8 + 0xb0) = uVar16;\n  FUN_00153440(puVar7,0,0x3e,1);\n  FUN_001532d0(lVar8);\n  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);\n  bfd_make_readable(puVar7);\n  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n  return;\n}" ({ "{") (declaration "undefined4 uVar1;" (type_identifier "undefined4") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "undefined8 uVar3;" (type_identifier "undefined8") (identifier "uVar3") (; ";")) (declaration "uint *puVar4;" (type_identifier "uint") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "undefined8 *puVar7;" (type_identifier "undefined8") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "undefined8 uVar10;" (type_identifier "undefined8") (identifier "uVar10") (; ";")) (expression_statement "undefined1 (*pauVar11) [16];" (subscript_expression "undefined1 (*pauVar11) [16]" (call_expression "undefined1 (*pauVar11)" (identifier "undefined1") (argument_list "(*pauVar11)" (( "(") (pointer_expression "*pauVar11" (* "*") (identifier "pauVar11")) () ")"))) ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "uint uVar12;" (type_identifier "uint") (identifier "uVar12") (; ";")) (declaration "uint uVar13;" (type_identifier "uint") (identifier "uVar13") (; ";")) (declaration "uint *puVar14;" (type_identifier "uint") (pointer_declarator "*puVar14" (* "*") (identifier "puVar14")) (; ";")) (declaration "char cVar15;" (primitive_type "char") (identifier "cVar15") (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "bool bVar17;" (primitive_type "bool") (identifier "bVar17") (; ";")) (declaration "ulong uVar18;" (type_identifier "ulong") (identifier "uVar18") (; ";")) (declaration "undefined8 local_60;" (type_identifier "undefined8") (identifier "local_60") (; ";")) (declaration "uint local_58 [10];" (type_identifier "uint") (array_declarator "local_58 [10]" (identifier "local_58") ([ "[") (number_literal "10") (] "]")) (; ";")) (expression_statement "lVar8 = **(long **)*param_1;" (assignment_expression "lVar8 = **(long **)*param_1" (identifier "lVar8") (= "=") (pointer_expression "**(long **)*param_1" (* "*") (pointer_expression "*(long **)*param_1" (* "*") (cast_expression "(long **)*param_1" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))))) (; ";")) (expression_statement "DAT_002b5c08 = DAT_002b5c08 + 1;" (assignment_expression "DAT_002b5c08 = DAT_002b5c08 + 1" (identifier "DAT_002b5c08") (= "=") (binary_expression "DAT_002b5c08 + 1" (identifier "DAT_002b5c08") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "sprintf((char *)local_58,"__fu%d_");" (call_expression "sprintf((char *)local_58,"__fu%d_")" (identifier "sprintf") (argument_list "((char *)local_58,"__fu%d_")" (( "(") (cast_expression "(char *)local_58" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_58")) (, ",") (string_literal ""__fu%d_"" (" """) (string_content "__fu%d_") (" """)) () ")"))) (; ";")) (expression_statement "puVar14 = local_58;" (assignment_expression "puVar14 = local_58" (identifier "puVar14") (= "=") (identifier "local_58")) (; ";")) (do_statement "do {\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  } while (uVar13 == 0);" (do "do") (compound_statement "{\n    puVar4 = puVar14;\n    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;\n    uVar13 = uVar12 & 0x80808080;\n    puVar14 = puVar4 + 1;\n  }" ({ "{") (expression_statement "puVar4 = puVar14;" (assignment_expression "puVar4 = puVar14" (identifier "puVar4") (= "=") (identifier "puVar14")) (; ";")) (expression_statement "uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;" (assignment_expression "uVar12 = *puVar4 + 0xfefefeff & ~*puVar4" (identifier "uVar12") (= "=") (binary_expression "*puVar4 + 0xfefefeff & ~*puVar4" (binary_expression "*puVar4 + 0xfefefeff" (pointer_expression "*puVar4" (* "*") (identifier "puVar4")) (+ "+") (number_literal "0xfefefeff")) (& "&") (unary_expression "~*puVar4" (~ "~") (pointer_expression "*puVar4" (* "*") (identifier "puVar4"))))) (; ";")) (expression_statement "uVar13 = uVar12 & 0x80808080;" (assignment_expression "uVar13 = uVar12 & 0x80808080" (identifier "uVar13") (= "=") (binary_expression "uVar12 & 0x80808080" (identifier "uVar12") (& "&") (number_literal "0x80808080"))) (; ";")) (expression_statement "puVar14 = puVar4 + 1;" (assignment_expression "puVar14 = puVar4 + 1" (identifier "puVar14") (= "=") (binary_expression "puVar4 + 1" (identifier "puVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar13 == 0)" (( "(") (binary_expression "uVar13 == 0" (identifier "uVar13") (== "==") (number_literal "0")) () ")")) (; ";")) (expression_statement "bVar17 = (uVar12 & 0x8080) == 0;" (assignment_expression "bVar17 = (uVar12 & 0x8080) == 0" (identifier "bVar17") (= "=") (binary_expression "(uVar12 & 0x8080) == 0" (parenthesized_expression "(uVar12 & 0x8080)" (( "(") (binary_expression "uVar12 & 0x8080" (identifier "uVar12") (& "&") (number_literal "0x8080")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (bVar17) {\n    uVar13 = uVar13 >> 0x10;\n  }" (if "if") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")")) (compound_statement "{\n    uVar13 = uVar13 >> 0x10;\n  }" ({ "{") (expression_statement "uVar13 = uVar13 >> 0x10;" (assignment_expression "uVar13 = uVar13 >> 0x10" (identifier "uVar13") (= "=") (binary_expression "uVar13 >> 0x10" (identifier "uVar13") (>> ">>") (number_literal "0x10"))) (; ";")) (} "}"))) (if_statement "if (bVar17) {\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }" (if "if") (parenthesized_expression "(bVar17)" (( "(") (identifier "bVar17") () ")")) (compound_statement "{\n    puVar14 = (uint *)((long)puVar4 + 6);\n  }" ({ "{") (expression_statement "puVar14 = (uint *)((long)puVar4 + 6);" (assignment_expression "puVar14 = (uint *)((long)puVar4 + 6)" (identifier "puVar14") (= "=") (cast_expression "(uint *)((long)puVar4 + 6)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar4 + 6)" (( "(") (binary_expression "(long)puVar4 + 6" (cast_expression "(long)puVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar4")) (+ "+") (number_literal "6")) () ")")))) (; ";")) (} "}"))) (expression_statement "pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));" (assignment_expression "pcVar5 = (char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58))" (identifier "pcVar5") (= "=") (cast_expression "(char *)((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58))" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58))" (( "(") (binary_expression "(long)puVar14 +\n                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58)" (cast_expression "(long)puVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar14")) (+ "+") (parenthesized_expression "((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58)" (( "(") (binary_expression "(-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58" (parenthesized_expression "(-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13))" (( "(") (binary_expression "-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)" (number_literal "-3") (- "-") (cast_expression "(ulong)CARRY1((byte)uVar13,(byte)uVar13)" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (call_expression "CARRY1((byte)uVar13,(byte)uVar13)" (identifier "CARRY1") (argument_list "((byte)uVar13,(byte)uVar13)" (( "(") (cast_expression "(byte)uVar13" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar13")) (, ",") (cast_expression "(byte)uVar13" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar13")) () ")"))))) () ")")) (- "-") (cast_expression "(long)local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_58"))) () ")"))) () ")")))) (; ";")) (expression_statement "puVar14 = (uint *)(param_4 - (long)pcVar5);" (assignment_expression "puVar14 = (uint *)(param_4 - (long)pcVar5)" (identifier "puVar14") (= "=") (cast_expression "(uint *)(param_4 - (long)pcVar5)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 - (long)pcVar5)" (( "(") (binary_expression "param_4 - (long)pcVar5" (identifier "param_4") (- "-") (cast_expression "(long)pcVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "pcVar5"))) () ")")))) (; ";")) (expression_statement "uVar13 = (uint)pcVar5;" (assignment_expression "uVar13 = (uint)pcVar5" (identifier "uVar13") (= "=") (cast_expression "(uint)pcVar5" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pcVar5"))) (; ";")) (expression_statement "uVar18 = (ulong)pcVar5 & 0xffffffff;" (assignment_expression "uVar18 = (ulong)pcVar5 & 0xffffffff" (identifier "uVar18") (= "=") (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "pcVar5")) (& "&") (number_literal "0xffffffff"))) (; ";")) (if_statement "if (uVar13 < 8) {\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }\n  else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }" (if "if") (parenthesized_expression "(uVar13 < 8)" (( "(") (binary_expression "uVar13 < 8" (identifier "uVar13") (< "<") (number_literal "8")) () ")")) (compound_statement "{\n    if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }\n  }" ({ "{") (if_statement "if (((ulong)pcVar5 & 4) == 0) {\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }\n    else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }" (if "if") (parenthesized_expression "(((ulong)pcVar5 & 4) == 0)" (( "(") (binary_expression "((ulong)pcVar5 & 4) == 0" (parenthesized_expression "((ulong)pcVar5 & 4)" (( "(") (binary_expression "(ulong)pcVar5 & 4" (cast_expression "(ulong)pcVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "pcVar5")) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }\n    }" ({ "{") (if_statement "if (uVar13 != 0) {\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }" (if "if") (parenthesized_expression "(uVar13 != 0)" (( "(") (binary_expression "uVar13 != 0" (identifier "uVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        *(undefined1 *)puVar14 = (undefined1)local_58[0];\n        if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }\n      }" ({ "{") (expression_statement "*(undefined1 *)puVar14 = (undefined1)local_58[0];" (assignment_expression "*(undefined1 *)puVar14 = (undefined1)local_58[0]" (pointer_expression "*(undefined1 *)puVar14" (* "*") (cast_expression "(undefined1 *)puVar14" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar14"))) (= "=") (cast_expression "(undefined1)local_58[0]" (( "(") (type_descriptor "undefined1" (type_identifier "undefined1")) () ")") (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")))) (; ";")) (if_statement "if (((ulong)pcVar5 & 2) != 0) {\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }" (if "if") (parenthesized_expression "(((ulong)pcVar5 & 2) != 0)" (( "(") (binary_expression "((ulong)pcVar5 & 2) != 0" (parenthesized_expression "((ulong)pcVar5 & 2)" (( "(") (binary_expression "(ulong)pcVar5 & 2" (cast_expression "(ulong)pcVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "pcVar5")) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));\n        }" ({ "{") (expression_statement "*(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2));" (assignment_expression "*(undefined2 *)((long)puVar14 + (uVar18 - 2)) =\n               *(undefined2 *)((long)local_58 + (uVar18 - 2))" (pointer_expression "*(undefined2 *)((long)puVar14 + (uVar18 - 2))" (* "*") (cast_expression "(undefined2 *)((long)puVar14 + (uVar18 - 2))" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar14 + (uVar18 - 2))" (( "(") (binary_expression "(long)puVar14 + (uVar18 - 2)" (cast_expression "(long)puVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar14")) (+ "+") (parenthesized_expression "(uVar18 - 2)" (( "(") (binary_expression "uVar18 - 2" (identifier "uVar18") (- "-") (number_literal "2")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined2 *)((long)local_58 + (uVar18 - 2))" (* "*") (cast_expression "(undefined2 *)((long)local_58 + (uVar18 - 2))" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_58 + (uVar18 - 2))" (( "(") (binary_expression "(long)local_58 + (uVar18 - 2)" (cast_expression "(long)local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_58")) (+ "+") (parenthesized_expression "(uVar18 - 2)" (( "(") (binary_expression "uVar18 - 2" (identifier "uVar18") (- "-") (number_literal "2")) () ")"))) () ")"))))) (; ";")) (} "}"))) (} "}"))) (} "}")) (else_clause "else {\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }" (else "else") (compound_statement "{\n      *puVar14 = local_58[0];\n      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;\n    }" ({ "{") (expression_statement "*puVar14 = local_58[0];" (assignment_expression "*puVar14 = local_58[0]" (pointer_expression "*puVar14" (* "*") (identifier "puVar14")) (= "=") (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))\n      ;" (assignment_expression "*(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))" (pointer_expression "*(undefined4 *)((long)puVar14 + (uVar18 - 4))" (* "*") (cast_expression "(undefined4 *)((long)puVar14 + (uVar18 - 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar14 + (uVar18 - 4))" (( "(") (binary_expression "(long)puVar14 + (uVar18 - 4)" (cast_expression "(long)puVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar14")) (+ "+") (parenthesized_expression "(uVar18 - 4)" (( "(") (binary_expression "uVar18 - 4" (identifier "uVar18") (- "-") (number_literal "4")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined4 *)((long)local_58 + (uVar18 - 4))" (* "*") (cast_expression "(undefined4 *)((long)local_58 + (uVar18 - 4))" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_58 + (uVar18 - 4))" (( "(") (binary_expression "(long)local_58 + (uVar18 - 4)" (cast_expression "(long)local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_58")) (+ "+") (parenthesized_expression "(uVar18 - 4)" (( "(") (binary_expression "uVar18 - 4" (identifier "uVar18") (- "-") (number_literal "4")) () ")"))) () ")"))))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }" (else "else") (compound_statement "{\n    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);\n    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));\n    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);\n    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;\n    if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }\n  }" ({ "{") (expression_statement "*(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);" (assignment_expression "*(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0])" (pointer_expression "*(ulong *)puVar14" (* "*") (cast_expression "(ulong *)puVar14" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar14"))) (= "=") (call_expression "CONCAT44(local_58[1],local_58[0])" (identifier "CONCAT44") (argument_list "(local_58[1],local_58[0])" (( "(") (subscript_expression "local_58[1]" (identifier "local_58") ([ "[") (number_literal "1") (] "]")) (, ",") (subscript_expression "local_58[0]" (identifier "local_58") ([ "[") (number_literal "0") (] "]")) () ")")))) (; ";")) (expression_statement "*(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));" (assignment_expression "*(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =\n         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" (pointer_expression "*(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8))" (* "*") (cast_expression "(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8))" (( "(") (binary_expression "(long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)" (cast_expression "(long)puVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar14")) (+ "+") (parenthesized_expression "(((ulong)pcVar5 & 0xffffffff) - 8)" (( "(") (binary_expression "((ulong)pcVar5 & 0xffffffff) - 8" (parenthesized_expression "((ulong)pcVar5 & 0xffffffff)" (( "(") (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "pcVar5")) (& "&") (number_literal "0xffffffff")) () ")")) (- "-") (number_literal "8")) () ")"))) () ")")))) (= "=") (pointer_expression "*(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" (* "*") (cast_expression "(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8))" (( "(") (binary_expression "(long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8)" (cast_expression "(long)local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_58")) (+ "+") (parenthesized_expression "(((ulong)pcVar5 & 0xffffffff) - 8)" (( "(") (binary_expression "((ulong)pcVar5 & 0xffffffff) - 8" (parenthesized_expression "((ulong)pcVar5 & 0xffffffff)" (( "(") (binary_expression "(ulong)pcVar5 & 0xffffffff" (cast_expression "(ulong)pcVar5" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "pcVar5")) (& "&") (number_literal "0xffffffff")) () ")")) (- "-") (number_literal "8")) () ")"))) () ")"))))) (; ";")) (expression_statement "lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);" (assignment_expression "lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" (identifier "lVar6") (= "=") (binary_expression "(long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" (cast_expression "(long)puVar14" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar14")) (- "-") (parenthesized_expression "((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(puVar14 + 2) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar14 + 2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(puVar14 + 2)" (( "(") (binary_expression "puVar14 + 2" (identifier "puVar14") (+ "+") (number_literal "2")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")")))) (; ";")) (expression_statement "uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;" (assignment_expression "uVar13 = (int)lVar6 + uVar13 & 0xfffffff8" (identifier "uVar13") (= "=") (binary_expression "(int)lVar6 + uVar13 & 0xfffffff8" (binary_expression "(int)lVar6 + uVar13" (cast_expression "(int)lVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar6")) (+ "+") (identifier "uVar13")) (& "&") (number_literal "0xfffffff8"))) (; ";")) (if_statement "if (7 < uVar13) {\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }" (if "if") (parenthesized_expression "(7 < uVar13)" (( "(") (binary_expression "7 < uVar13" (number_literal "7") (< "<") (identifier "uVar13")) () ")")) (compound_statement "{\n      uVar12 = 0;\n      do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);\n    }" ({ "{") (expression_statement "uVar12 = 0;" (assignment_expression "uVar12 = 0" (identifier "uVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      } while (uVar12 < uVar13);" (do "do") (compound_statement "{\n        uVar18 = (ulong)uVar12;\n        uVar12 = uVar12 + 8;\n        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));\n      }" ({ "{") (expression_statement "uVar18 = (ulong)uVar12;" (assignment_expression "uVar18 = (ulong)uVar12" (identifier "uVar18") (= "=") (cast_expression "(ulong)uVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar12"))) (; ";")) (expression_statement "uVar12 = uVar12 + 8;" (assignment_expression "uVar12 = uVar12 + 8" (identifier "uVar12") (= "=") (binary_expression "uVar12 + 8" (identifier "uVar12") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "*(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));" (assignment_expression "*(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =\n             *(undefined8 *)((long)local_58 + (uVar18 - lVar6))" (pointer_expression "*(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18)" (* "*") (cast_expression "(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18)" (( "(") (binary_expression "((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18" (parenthesized_expression "((ulong)(puVar14 + 2) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(puVar14 + 2) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar14 + 2)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(puVar14 + 2)" (( "(") (binary_expression "puVar14 + 2" (identifier "puVar14") (+ "+") (number_literal "2")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")")) (+ "+") (identifier "uVar18")) () ")")))) (= "=") (pointer_expression "*(undefined8 *)((long)local_58 + (uVar18 - lVar6))" (* "*") (cast_expression "(undefined8 *)((long)local_58 + (uVar18 - lVar6))" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)local_58 + (uVar18 - lVar6))" (( "(") (binary_expression "(long)local_58 + (uVar18 - lVar6)" (cast_expression "(long)local_58" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_58")) (+ "+") (parenthesized_expression "(uVar18 - lVar6)" (( "(") (binary_expression "uVar18 - lVar6" (identifier "uVar18") (- "-") (identifier "lVar6")) () ")"))) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar12 < uVar13)" (( "(") (binary_expression "uVar12 < uVar13" (identifier "uVar12") (< "<") (identifier "uVar13")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);" (call_expression "(**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))\n            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60)" (parenthesized_expression "(**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))" (( "(") (pointer_expression "**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" (* "*") (pointer_expression "*(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" (* "*") (cast_expression "(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138)" (( "(") (binary_expression "*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138" (pointer_expression "*(long *)(*(long *)(lVar8 + 8) + 0x368)" (* "*") (cast_expression "(long *)(*(long *)(lVar8 + 8) + 0x368)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar8 + 8) + 0x368)" (( "(") (binary_expression "*(long *)(lVar8 + 8) + 0x368" (pointer_expression "*(long *)(lVar8 + 8)" (* "*") (cast_expression "(long *)(lVar8 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 8)" (( "(") (binary_expression "lVar8 + 8" (identifier "lVar8") (+ "+") (number_literal "8")) () ")")))) (+ "+") (number_literal "0x368")) () ")")))) (+ "+") (number_literal "0x138")) () ")"))))) () ")")) (argument_list "(&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60)" (( "(") (pointer_expression "&DAT_002b5f40" (& "&") (identifier "DAT_002b5f40")) (, ",") (identifier "lVar8") (, ",") (identifier "puVar14") (, ",") (number_literal "2") (, ",") (identifier "DAT_002b5c50") (, ",") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (, ",") (number_literal "0") (, ",") (number_literal "1") (, ",") (number_literal "0") (, ",") (pointer_expression "&local_60" (& "&") (identifier "local_60")) () ")"))) (; ";")) (expression_statement "uVar16 = *(undefined8 *)(local_60 + 8);" (assignment_expression "uVar16 = *(undefined8 *)(local_60 + 8)" (identifier "uVar16") (= "=") (pointer_expression "*(undefined8 *)(local_60 + 8)" (* "*") (cast_expression "(undefined8 *)(local_60 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_60 + 8)" (( "(") (binary_expression "local_60 + 8" (identifier "local_60") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (DAT_002b5fec == 2) goto LAB_0015682c;" (if "if") (parenthesized_expression "(DAT_002b5fec == 2)" (( "(") (binary_expression "DAT_002b5fec == 2" (identifier "DAT_002b5fec") (== "==") (number_literal "2")) () ")")) (goto_statement "goto LAB_0015682c;" (goto "goto") (statement_identifier "LAB_0015682c") (; ";"))) (expression_statement "*(undefined2 *)(param_4 + -2) = 0x5f6b;" (assignment_expression "*(undefined2 *)(param_4 + -2) = 0x5f6b" (pointer_expression "*(undefined2 *)(param_4 + -2)" (* "*") (cast_expression "(undefined2 *)(param_4 + -2)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + -2)" (( "(") (binary_expression "param_4 + -2" (identifier "param_4") (+ "+") (number_literal "-2")) () ")")))) (= "=") (number_literal "0x5f6b")) (; ";")) (expression_statement "*(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;" (assignment_expression "*(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f" (pointer_expression "*(undefined8 *)(param_4 + -10)" (* "*") (cast_expression "(undefined8 *)(param_4 + -10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + -10)" (( "(") (binary_expression "param_4 + -10" (identifier "param_4") (+ "+") (number_literal "-10")) () ")")))) (= "=") (number_literal "0x6e68745f6d6e5f5f")) (; ";")) (expression_statement "lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);" (assignment_expression "lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1)" (identifier "lVar6") (= "=") (call_expression "bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1)" (identifier "bfd_link_hash_lookup") (argument_list "(DAT_002b5f68,param_4 + -10,0,0,1)" (( "(") (identifier "DAT_002b5f68") (, ",") (binary_expression "param_4 + -10" (identifier "param_4") (+ "+") (number_literal "-10")) (, ",") (number_literal "0") (, ",") (number_literal "0") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" (identifier "lVar8") (= "=") (identifier "DAT_002b5f90")) (; ";")) (if_statement "if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }" (if "if") (parenthesized_expression "((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03'))" (( "(") (binary_expression "(lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')" (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(*(char *)(lVar6 + 0x18) != '\x03')" (( "(") (binary_expression "*(char *)(lVar6 + 0x18) != '\x03'" (pointer_expression "*(char *)(lVar6 + 0x18)" (* "*") (cast_expression "(char *)(lVar6 + 0x18)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar6 + 0x18)" (( "(") (binary_expression "lVar6 + 0x18" (identifier "lVar6") (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (char_literal "'\x03'" (' "'") (escape_sequence "\x03") (' "'"))) () ")"))) () ")")) (compound_statement "{\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x18);\n    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);\n    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,8);\n    puVar9 = (undefined8 *)xmalloc(8);\n    *(undefined8 **)(lVar8 + 0xb0) = puVar9;\n    *puVar9 = 0;\n    FUN_00153440(puVar7,0,0x3e,2);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    DAT_002b60f0 = 0;\n    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;\n  }" ({ "{") (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" (identifier "pcVar5") (= "=") (cast_expression "(char *)xmalloc(0x14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x14)" (identifier "xmalloc") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40)" (identifier "sprintf") (argument_list "(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40)" (( "(") (identifier "pcVar5") (, ",") (string_literal ""nmth%06d.o"" (" """) (string_content "nmth%06d.o") (" """)) (, ",") (cast_expression "(ulong)DAT_002b5c40" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_002b5c40")) () ")"))) (; ";")) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" (identifier "DAT_002b5c40") (= "=") (binary_expression "DAT_002b5c40 + 1" (identifier "DAT_002b5c40") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_create(pcVar5,lVar8)" (identifier "bfd_create") (argument_list "(pcVar5,lVar8)" (( "(") (identifier "pcVar5") (, ",") (identifier "lVar8") () ")"))))) (; ";")) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" (identifier "bfd_find_target") (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" (( "(") (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" (* "*") (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 8)" (( "(") (binary_expression "DAT_002b5c98 + 8" (identifier "DAT_002b5c98") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" (identifier "bfd_make_writable") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" (identifier "bfd_set_format") (argument_list "(puVar7,1)" (( "(") (identifier "puVar7") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" (( "(") (pointer_expression "**(code **)(puVar7[1] + 0x290)" (* "*") (pointer_expression "*(code **)(puVar7[1] + 0x290)" (* "*") (cast_expression "(code **)(puVar7[1] + 0x290)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7[1] + 0x290)" (( "(") (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x290")) () ")"))))) () ")")) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (( "(") (identifier "puVar7") (, ",") (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" (* "*") (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 0x18)" (( "(") (binary_expression "DAT_002b5c98 + 0x18" (identifier "DAT_002b5c98") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" (identifier "DAT_002b5c44") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_002b5c48 = xmalloc(0x18);" (assignment_expression "DAT_002b5c48 = xmalloc(0x18)" (identifier "DAT_002b5c48") (= "=") (call_expression "xmalloc(0x18)" (identifier "xmalloc") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")")))) (; ";")) (expression_statement "lVar8 = FUN_00154530(puVar7,".idata$4",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".idata$4",0x100)" (identifier "lVar8") (= "=") (call_expression "FUN_00154530(puVar7,".idata$4",0x100)" (identifier "FUN_00154530") (argument_list "(puVar7,".idata$4",0x100)" (( "(") (identifier "puVar7") (, ",") (string_literal "".idata$4"" (" """) (string_content ".idata$4") (" """)) (, ",") (number_literal "0x100") () ")")))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);" (call_expression "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0)" (identifier "FUN_00153370") (argument_list "(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0)" (( "(") (identifier "puVar7") (, ",") (string_literal ""__nm_thnk_"" (" """) (string_content "__nm_thnk_") (" """)) (, ",") (identifier "param_4") (, ",") (string_literal """" (" """) (" """)) (, ",") (identifier "lVar8") (, ",") (number_literal "2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);" (call_expression "FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" (identifier "FUN_00153370") (argument_list "(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" (( "(") (identifier "puVar7") (, ",") (string_literal ""__nm_"" (" """) (string_content "__nm_") (" """)) (, ",") (identifier "param_4") (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0x2b4598") (, ",") (number_literal "2") (, ",") (binary_expression "uVar18 & 0xffffffff00000000" (identifier "uVar18") (& "&") (number_literal "0xffffffff00000000")) () ")"))) (; ";")) (expression_statement "bfd_set_section_size(puVar7,lVar8,8);" (call_expression "bfd_set_section_size(puVar7,lVar8,8)" (identifier "bfd_set_section_size") (argument_list "(puVar7,lVar8,8)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (number_literal "8") () ")"))) (; ";")) (expression_statement "puVar9 = (undefined8 *)xmalloc(8);" (assignment_expression "puVar9 = (undefined8 *)xmalloc(8)" (identifier "puVar9") (= "=") (cast_expression "(undefined8 *)xmalloc(8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(8)" (identifier "xmalloc") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (expression_statement "*(undefined8 **)(lVar8 + 0xb0) = puVar9;" (assignment_expression "*(undefined8 **)(lVar8 + 0xb0) = puVar9" (pointer_expression "*(undefined8 **)(lVar8 + 0xb0)" (* "*") (cast_expression "(undefined8 **)(lVar8 + 0xb0)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar8 + 0xb0)" (( "(") (binary_expression "lVar8 + 0xb0" (identifier "lVar8") (+ "+") (number_literal "0xb0")) () ")")))) (= "=") (identifier "puVar9")) (; ";")) (expression_statement "*puVar9 = 0;" (assignment_expression "*puVar9 = 0" (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00153440(puVar7,0,0x3e,2);" (call_expression "FUN_00153440(puVar7,0,0x3e,2)" (identifier "FUN_00153440") (argument_list "(puVar7,0,0x3e,2)" (( "(") (identifier "puVar7") (, ",") (number_literal "0") (, ",") (number_literal "0x3e") (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" (identifier "FUN_001532d0") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))) (; ";")) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" (identifier "bfd_set_symtab") (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" (( "(") (identifier "puVar7") (, ",") (identifier "DAT_002b5c48") (, ",") (identifier "DAT_002b5c44") () ")"))) (; ";")) (expression_statement "bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);" (call_expression "bfd_set_section_contents(puVar7,lVar8,puVar9,0,8)" (identifier "bfd_set_section_contents") (argument_list "(puVar7,lVar8,puVar9,0,8)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (identifier "puVar9") (, ",") (number_literal "0") (, ",") (number_literal "8") () ")"))) (; ";")) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" (identifier "bfd_make_readable") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" (identifier "FUN_001540f0") (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" (( "(") (identifier "puVar7") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (, ",") (pointer_expression "&DAT_002b5f40" (& "&") (identifier "DAT_002b5f40")) () ")"))) (; ";")) (expression_statement "DAT_002b60f0 = 0;" (assignment_expression "DAT_002b60f0 = 0" (identifier "DAT_002b60f0") (= "=") (number_literal "0")) (; ";")) (expression_statement "*(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;" (assignment_expression "*(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff" (pointer_expression "*(uint *)(DAT_002b5f90 + 0x44)" (* "*") (cast_expression "(uint *)(DAT_002b5f90 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5f90 + 0x44)" (( "(") (binary_expression "DAT_002b5f90 + 0x44" (identifier "DAT_002b5f90") (+ "+") (number_literal "0x44")) () ")")))) (= "=") (binary_expression "*(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff" (pointer_expression "*(uint *)(DAT_002b5f90 + 0x44)" (* "*") (cast_expression "(uint *)(DAT_002b5f90 + 0x44)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5f90 + 0x44)" (( "(") (binary_expression "DAT_002b5f90 + 0x44" (identifier "DAT_002b5f90") (+ "+") (number_literal "0x44")) () ")")))) (& "&") (number_literal "0xffffefff"))) (; ";")) (} "}"))) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" (identifier "lVar8") (= "=") (identifier "DAT_002b5f90")) (; ";")) (if_statement "if ((param_3 == 0) || (DAT_002b5fec == 1)) {\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }" (if "if") (parenthesized_expression "((param_3 == 0) || (DAT_002b5fec == 1))" (( "(") (binary_expression "(param_3 == 0) || (DAT_002b5fec == 1)" (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(DAT_002b5fec == 1)" (( "(") (binary_expression "DAT_002b5fec == 1" (identifier "DAT_002b5fec") (== "==") (number_literal "1")) () ")"))) () ")")) (compound_statement "{\n    pcVar5 = (char *)xmalloc(0x14);\n    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);\n    DAT_002b5c40 = DAT_002b5c40 + 1;\n    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);\n    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);\n    bfd_make_writable(puVar7);\n    bfd_set_format(puVar7,1);\n    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);\n    DAT_002b5c44 = 0;\n    DAT_002b5c48 = xmalloc(0x30);\n    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);\n    uVar18 = 0;\n    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);\n    pcVar5 = "_";\n    uVar18 = uVar18 & 0xffffffff00000000;\n    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }\n    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);\n    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);\n    bfd_set_section_size(puVar7,lVar8,0x14);\n    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined4 *)pauVar11[1] = 0;\n    *pauVar11 = (undefined1  [16])0x0;\n    FUN_00153440(puVar7,0,0x3e,1);\n    FUN_00153440(puVar7,0xc,0x3e,2);\n    FUN_00153440(puVar7,0x10,0x3e,3);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);\n    bfd_make_readable(puVar7);\n    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);\n    if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }\n    if (DAT_002b5fec == 1) goto LAB_0015682c;\n  }" ({ "{") (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" (identifier "pcVar5") (= "=") (cast_expression "(char *)xmalloc(0x14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x14)" (identifier "xmalloc") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40)" (identifier "sprintf") (argument_list "(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40)" (( "(") (identifier "pcVar5") (, ",") (string_literal ""fu%06d.o"" (" """) (string_content "fu%06d.o") (" """)) (, ",") (cast_expression "(ulong)DAT_002b5c40" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_002b5c40")) () ")"))) (; ";")) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" (identifier "DAT_002b5c40") (= "=") (binary_expression "DAT_002b5c40 + 1" (identifier "DAT_002b5c40") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_create(pcVar5,lVar8)" (identifier "bfd_create") (argument_list "(pcVar5,lVar8)" (( "(") (identifier "pcVar5") (, ",") (identifier "lVar8") () ")"))))) (; ";")) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" (identifier "bfd_find_target") (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" (( "(") (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" (* "*") (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 8)" (( "(") (binary_expression "DAT_002b5c98 + 8" (identifier "DAT_002b5c98") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" (identifier "bfd_make_writable") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" (identifier "bfd_set_format") (argument_list "(puVar7,1)" (( "(") (identifier "puVar7") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" (( "(") (pointer_expression "**(code **)(puVar7[1] + 0x290)" (* "*") (pointer_expression "*(code **)(puVar7[1] + 0x290)" (* "*") (cast_expression "(code **)(puVar7[1] + 0x290)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7[1] + 0x290)" (( "(") (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x290")) () ")"))))) () ")")) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (( "(") (identifier "puVar7") (, ",") (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" (* "*") (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 0x18)" (( "(") (binary_expression "DAT_002b5c98 + 0x18" (identifier "DAT_002b5c98") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" (identifier "DAT_002b5c44") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_002b5c48 = xmalloc(0x30);" (assignment_expression "DAT_002b5c48 = xmalloc(0x30)" (identifier "DAT_002b5c48") (= "=") (call_expression "xmalloc(0x30)" (identifier "xmalloc") (argument_list "(0x30)" (( "(") (number_literal "0x30") () ")")))) (; ";")) (expression_statement "lVar8 = FUN_00154530(puVar7,".idata$2",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".idata$2",0x100)" (identifier "lVar8") (= "=") (call_expression "FUN_00154530(puVar7,".idata$2",0x100)" (identifier "FUN_00154530") (argument_list "(puVar7,".idata$2",0x100)" (( "(") (identifier "puVar7") (, ",") (string_literal "".idata$2"" (" """) (string_content ".idata$2") (" """)) (, ",") (number_literal "0x100") () ")")))) (; ";")) (expression_statement "uVar18 = 0;" (assignment_expression "uVar18 = 0" (identifier "uVar18") (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0)" (identifier "FUN_00153370") (argument_list "(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0)" (( "(") (identifier "puVar7") (, ",") (string_literal ""__nm_thnk_"" (" """) (string_content "__nm_thnk_") (" """)) (, ",") (identifier "param_4") (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0x2b4598") (, ",") (number_literal "2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "pcVar5 = "_";" (assignment_expression "pcVar5 = "_"" (identifier "pcVar5") (= "=") (string_literal ""_"" (" """) (string_content "_") (" """))) (; ";")) (expression_statement "uVar18 = uVar18 & 0xffffffff00000000;" (assignment_expression "uVar18 = uVar18 & 0xffffffff00000000" (identifier "uVar18") (= "=") (binary_expression "uVar18 & 0xffffffff00000000" (identifier "uVar18") (& "&") (number_literal "0xffffffff00000000"))) (; ";")) (if_statement "if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n      pcVar5 = "";\n    }" (if "if") (parenthesized_expression "(*(int *)(DAT_002b5c98 + 0x1c) == 0)" (( "(") (binary_expression "*(int *)(DAT_002b5c98 + 0x1c) == 0" (pointer_expression "*(int *)(DAT_002b5c98 + 0x1c)" (* "*") (cast_expression "(int *)(DAT_002b5c98 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 0x1c)" (( "(") (binary_expression "DAT_002b5c98 + 0x1c" (identifier "DAT_002b5c98") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar5 = "";\n    }" ({ "{") (expression_statement "pcVar5 = "";" (assignment_expression "pcVar5 = """ (identifier "pcVar5") (= "=") (string_literal """" (" """) (" """))) (; ";")) (} "}"))) (expression_statement "FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);" (call_expression "FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18)" (identifier "FUN_00153370") (argument_list "(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18)" (( "(") (identifier "puVar7") (, ",") (identifier "pcVar5") (, ",") (identifier "param_5") (, ",") (string_literal ""_iname"" (" """) (string_content "_iname") (" """)) (, ",") (number_literal "0x2b4598") (, ",") (number_literal "2") (, ",") (identifier "uVar18") () ")"))) (; ";")) (expression_statement "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);" (call_expression "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" (identifier "FUN_00153370") (argument_list "(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000)" (( "(") (identifier "puVar7") (, ",") (string_literal """" (" """) (" """)) (, ",") (identifier "uVar16") (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0x2b4598") (, ",") (number_literal "2") (, ",") (binary_expression "uVar18 & 0xffffffff00000000" (identifier "uVar18") (& "&") (number_literal "0xffffffff00000000")) () ")"))) (; ";")) (expression_statement "bfd_set_section_size(puVar7,lVar8,0x14);" (call_expression "bfd_set_section_size(puVar7,lVar8,0x14)" (identifier "bfd_set_section_size") (argument_list "(puVar7,lVar8,0x14)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (number_literal "0x14") () ")"))) (; ";")) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(0x14);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(0x14)" (identifier "pauVar11") (= "=") (cast_expression "(undefined1 (*) [16])xmalloc(0x14)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (call_expression "xmalloc(0x14)" (identifier "xmalloc") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" (* "*") (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" (( "(") (type_descriptor "undefined1 (**) [16]" (type_identifier "undefined1") (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" (( "(") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (parenthesized_expression "(lVar8 + 0xb0)" (( "(") (binary_expression "lVar8 + 0xb0" (identifier "lVar8") (+ "+") (number_literal "0xb0")) () ")")))) (= "=") (identifier "pauVar11")) (; ";")) (expression_statement "*(undefined4 *)pauVar11[1] = 0;" (assignment_expression "*(undefined4 *)pauVar11[1] = 0" (pointer_expression "*(undefined4 *)pauVar11[1]" (* "*") (cast_expression "(undefined4 *)pauVar11[1]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "pauVar11[1]" (identifier "pauVar11") ([ "[") (number_literal "1") (] "]")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*pauVar11 = (undefined1  [16])0x0;" (assignment_expression "*pauVar11 = (undefined1  [16])0x0" (pointer_expression "*pauVar11" (* "*") (identifier "pauVar11")) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_00153440(puVar7,0,0x3e,1);" (call_expression "FUN_00153440(puVar7,0,0x3e,1)" (identifier "FUN_00153440") (argument_list "(puVar7,0,0x3e,1)" (( "(") (identifier "puVar7") (, ",") (number_literal "0") (, ",") (number_literal "0x3e") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "FUN_00153440(puVar7,0xc,0x3e,2);" (call_expression "FUN_00153440(puVar7,0xc,0x3e,2)" (identifier "FUN_00153440") (argument_list "(puVar7,0xc,0x3e,2)" (( "(") (identifier "puVar7") (, ",") (number_literal "0xc") (, ",") (number_literal "0x3e") (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "FUN_00153440(puVar7,0x10,0x3e,3);" (call_expression "FUN_00153440(puVar7,0x10,0x3e,3)" (identifier "FUN_00153440") (argument_list "(puVar7,0x10,0x3e,3)" (( "(") (identifier "puVar7") (, ",") (number_literal "0x10") (, ",") (number_literal "0x3e") (, ",") (number_literal "3") () ")"))) (; ";")) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" (identifier "FUN_001532d0") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))) (; ";")) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" (identifier "bfd_set_symtab") (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" (( "(") (identifier "puVar7") (, ",") (identifier "DAT_002b5c48") (, ",") (identifier "DAT_002b5c44") () ")"))) (; ";")) (expression_statement "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);" (call_expression "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14)" (identifier "bfd_set_section_contents") (argument_list "(puVar7,lVar8,pauVar11,0,0x14)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (identifier "pauVar11") (, ",") (number_literal "0") (, ",") (number_literal "0x14") () ")"))) (; ";")) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" (identifier "bfd_make_readable") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" (identifier "FUN_001540f0") (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" (( "(") (identifier "puVar7") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (, ",") (pointer_expression "&DAT_002b5f40" (& "&") (identifier "DAT_002b5f40")) () ")"))) (; ";")) (if_statement "if (param_3 == 0) {\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }" (if "if") (parenthesized_expression "(param_3 == 0)" (( "(") (binary_expression "param_3 == 0" (identifier "param_3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (DAT_002b5fec != 2) {\n        return;\n      }\n      goto LAB_0015682c;\n    }" ({ "{") (if_statement "if (DAT_002b5fec != 2) {\n        return;\n      }" (if "if") (parenthesized_expression "(DAT_002b5fec != 2)" (( "(") (binary_expression "DAT_002b5fec != 2" (identifier "DAT_002b5fec") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (goto_statement "goto LAB_0015682c;" (goto "goto") (statement_identifier "LAB_0015682c") (; ";")) (} "}"))) (if_statement "if (DAT_002b5fec == 1) goto LAB_0015682c;" (if "if") (parenthesized_expression "(DAT_002b5fec == 1)" (( "(") (binary_expression "DAT_002b5fec == 1" (identifier "DAT_002b5fec") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_0015682c;" (goto "goto") (statement_identifier "LAB_0015682c") (; ";"))) (} "}"))) (if_statement "if (DAT_002b5fec != 2) {\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }" (if "if") (parenthesized_expression "(DAT_002b5fec != 2)" (( "(") (binary_expression "DAT_002b5fec != 2" (identifier "DAT_002b5fec") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    uVar16 = param_1[1];\n    uVar2 = *(undefined8 *)(param_2 + 0xf0);\n    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);\n    uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);\n    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);\n    return;\n  }" ({ "{") (expression_statement "uVar16 = param_1[1];" (assignment_expression "uVar16 = param_1[1]" (identifier "uVar16") (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar2 = *(undefined8 *)(param_2 + 0xf0);" (assignment_expression "uVar2 = *(undefined8 *)(param_2 + 0xf0)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(param_2 + 0xf0)" (* "*") (cast_expression "(undefined8 *)(param_2 + 0xf0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0xf0)" (( "(") (binary_expression "param_2 + 0xf0" (identifier "param_2") (+ "+") (number_literal "0xf0")) () ")"))))) (; ";")) (expression_statement "uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);" (assignment_expression "uVar3 = *(undefined8 *)(*(long *)*param_1 + 8)" (identifier "uVar3") (= "=") (pointer_expression "*(undefined8 *)(*(long *)*param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(*(long *)*param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)*param_1 + 8)" (( "(") (binary_expression "*(long *)*param_1 + 8" (pointer_expression "*(long *)*param_1" (* "*") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5);" (assignment_expression "uVar10 = dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5)" (identifier "uVar10") (= "=") (call_expression "dcgettext(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5)" (identifier "dcgettext") (argument_list "(0,\n                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"\n                       ,5)" (( "(") (number_literal "0") (, ",") (string_literal ""%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"" (" """) (string_content "%X%P: %C: variable ") (escape_sequence "\'") (string_content "%pT") (escape_sequence "\'") (string_content " can") (escape_sequence "\'") (string_content "t be auto-imported; please read the documentation for ld") (escape_sequence "\'") (string_content "s --enable-auto-import for details") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);" (call_expression "FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3)" (identifier "FUN_00129380") (argument_list "(uVar10,uVar2,param_2,uVar16,uVar3)" (( "(") (identifier "uVar10") (, ",") (identifier "uVar2") (, ",") (identifier "param_2") (, ",") (identifier "uVar16") (, ",") (identifier "uVar3") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_0015682c:\n  if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }" (statement_identifier "LAB_0015682c") (: ":") (if_statement "if (DAT_002b5be4 != 0) {\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }" (if "if") (parenthesized_expression "(DAT_002b5be4 != 0)" (( "(") (binary_expression "DAT_002b5be4 != 0" (identifier "DAT_002b5be4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);\n  }" ({ "{") (expression_statement "printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);" (call_expression "printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff)" (identifier "printf") (argument_list "("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff)" (( "(") (string_literal ""creating runtime pseudo-reloc entry for %s (addend=%d)\n"" (" """) (string_content "creating runtime pseudo-reloc entry for %s (addend=%d)") (escape_sequence "\n") (" """)) (, ",") (identifier "uVar16") (, ",") (binary_expression "param_3 & 0xffffffff" (identifier "param_3") (& "&") (number_literal "0xffffffff")) () ")"))) (; ";")) (} "}")))) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" (identifier "lVar8") (= "=") (identifier "DAT_002b5f90")) (; ";")) (expression_statement "uVar1 = *(undefined4 *)(param_1[3] + 0xc);" (assignment_expression "uVar1 = *(undefined4 *)(param_1[3] + 0xc)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined4 *)(param_1[3] + 0xc)" (* "*") (cast_expression "(undefined4 *)(param_1[3] + 0xc)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[3] + 0xc)" (( "(") (binary_expression "param_1[3] + 0xc" (subscript_expression "param_1[3]" (identifier "param_1") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" (identifier "pcVar5") (= "=") (cast_expression "(char *)xmalloc(0x14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x14)" (identifier "xmalloc") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40)" (identifier "sprintf") (argument_list "(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40)" (( "(") (identifier "pcVar5") (, ",") (string_literal ""rtr%06d.o"" (" """) (string_content "rtr%06d.o") (" """)) (, ",") (cast_expression "(ulong)DAT_002b5c40" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_002b5c40")) () ")"))) (; ";")) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" (identifier "DAT_002b5c40") (= "=") (binary_expression "DAT_002b5c40 + 1" (identifier "DAT_002b5c40") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_create(pcVar5,lVar8)" (identifier "bfd_create") (argument_list "(pcVar5,lVar8)" (( "(") (identifier "pcVar5") (, ",") (identifier "lVar8") () ")"))))) (; ";")) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" (identifier "bfd_find_target") (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" (( "(") (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" (* "*") (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 8)" (( "(") (binary_expression "DAT_002b5c98 + 8" (identifier "DAT_002b5c98") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" (identifier "bfd_make_writable") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" (identifier "bfd_set_format") (argument_list "(puVar7,1)" (( "(") (identifier "puVar7") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" (( "(") (pointer_expression "**(code **)(puVar7[1] + 0x290)" (* "*") (pointer_expression "*(code **)(puVar7[1] + 0x290)" (* "*") (cast_expression "(code **)(puVar7[1] + 0x290)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7[1] + 0x290)" (( "(") (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x290")) () ")"))))) () ")")) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (( "(") (identifier "puVar7") (, ",") (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" (* "*") (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 0x18)" (( "(") (binary_expression "DAT_002b5c98 + 0x18" (identifier "DAT_002b5c98") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "cVar15 = '\x10';" (assignment_expression "cVar15 = '\x10'" (identifier "cVar15") (= "=") (char_literal "'\x10'" (' "'") (escape_sequence "\x10") (' "'"))) (; ";")) (if_statement "if (DAT_002b5fec == 2) {\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }" (if "if") (parenthesized_expression "(DAT_002b5fec == 2)" (( "(") (binary_expression "DAT_002b5fec == 2" (identifier "DAT_002b5fec") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;\n  }" ({ "{") (expression_statement "cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;" (assignment_expression "cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18" (identifier "cVar15") (= "=") (binary_expression "(-(DAT_002b5ca0 == 0) & 0x18U) + 0x18" (parenthesized_expression "(-(DAT_002b5ca0 == 0) & 0x18U)" (( "(") (binary_expression "-(DAT_002b5ca0 == 0) & 0x18U" (unary_expression "-(DAT_002b5ca0 == 0)" (- "-") (parenthesized_expression "(DAT_002b5ca0 == 0)" (( "(") (binary_expression "DAT_002b5ca0 == 0" (identifier "DAT_002b5ca0") (== "==") (number_literal "0")) () ")"))) (& "&") (number_literal "0x18U")) () ")")) (+ "+") (number_literal "0x18"))) (; ";")) (} "}"))) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" (identifier "DAT_002b5c44") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_002b5c48 = xmalloc(cVar15);" (assignment_expression "DAT_002b5c48 = xmalloc(cVar15)" (identifier "DAT_002b5c48") (= "=") (call_expression "xmalloc(cVar15)" (identifier "xmalloc") (argument_list "(cVar15)" (( "(") (identifier "cVar15") () ")")))) (; ";")) (expression_statement "lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100)" (identifier "lVar8") (= "=") (call_expression "FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100)" (identifier "FUN_00154530") (argument_list "(puVar7,".rdata_runtime_pseudo_reloc",0x100)" (( "(") (identifier "puVar7") (, ",") (string_literal "".rdata_runtime_pseudo_reloc"" (" """) (string_content ".rdata_runtime_pseudo_reloc") (" """)) (, ",") (number_literal "0x100") () ")")))) (; ";")) (expression_statement "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0)" (identifier "FUN_00153370") (argument_list "(puVar7,"",uVar16,"",0x2b4598,2,0)" (( "(") (identifier "puVar7") (, ",") (string_literal """" (" """) (" """)) (, ",") (identifier "uVar16") (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0x2b4598") (, ",") (number_literal "2") (, ",") (number_literal "0") () ")"))) (; ";")) (if_statement "if (DAT_002b5fec == 2) {\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }\n  else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }" (if "if") (parenthesized_expression "(DAT_002b5fec == 2)" (( "(") (binary_expression "DAT_002b5fec == 2" (identifier "DAT_002b5fec") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n    if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n  }" ({ "{") (if_statement "if (DAT_002b5ca0 == 0) {\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }\n    else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }" (if "if") (parenthesized_expression "(DAT_002b5ca0 == 0)" (( "(") (binary_expression "DAT_002b5ca0 == 0" (identifier "DAT_002b5ca0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar16 = 0x18;\n      DAT_002b5ca0 = 1;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0x18);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)pauVar11[1] = 0;\n      *pauVar11 = (undefined1  [16])0x0;\n      FUN_00153440(puVar7,0x10,0x3e,1);\n      FUN_00153440(puVar7,0xc,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);\n      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);\n    }" ({ "{") (expression_statement "uVar16 = 0x18;" (assignment_expression "uVar16 = 0x18" (identifier "uVar16") (= "=") (number_literal "0x18")) (; ";")) (expression_statement "DAT_002b5ca0 = 1;" (assignment_expression "DAT_002b5ca0 = 1" (identifier "DAT_002b5ca0") (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" (identifier "FUN_00153370") (argument_list "(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" (( "(") (identifier "puVar7") (, ",") (string_literal ""__imp_"" (" """) (string_content "__imp_") (" """)) (, ",") (identifier "param_4") (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0x2b4598") (, ",") (number_literal "2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bfd_set_section_size(puVar7,lVar8,0x18);" (call_expression "bfd_set_section_size(puVar7,lVar8,0x18)" (identifier "bfd_set_section_size") (argument_list "(puVar7,lVar8,0x18)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (number_literal "0x18") () ")"))) (; ";")) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(0x18);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(0x18)" (identifier "pauVar11") (= "=") (cast_expression "(undefined1 (*) [16])xmalloc(0x18)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (call_expression "xmalloc(0x18)" (identifier "xmalloc") (argument_list "(0x18)" (( "(") (number_literal "0x18") () ")"))))) (; ";")) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" (* "*") (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" (( "(") (type_descriptor "undefined1 (**) [16]" (type_identifier "undefined1") (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" (( "(") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (parenthesized_expression "(lVar8 + 0xb0)" (( "(") (binary_expression "lVar8 + 0xb0" (identifier "lVar8") (+ "+") (number_literal "0xb0")) () ")")))) (= "=") (identifier "pauVar11")) (; ";")) (expression_statement "*(undefined8 *)pauVar11[1] = 0;" (assignment_expression "*(undefined8 *)pauVar11[1] = 0" (pointer_expression "*(undefined8 *)pauVar11[1]" (* "*") (cast_expression "(undefined8 *)pauVar11[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "pauVar11[1]" (identifier "pauVar11") ([ "[") (number_literal "1") (] "]")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*pauVar11 = (undefined1  [16])0x0;" (assignment_expression "*pauVar11 = (undefined1  [16])0x0" (pointer_expression "*pauVar11" (* "*") (identifier "pauVar11")) (= "=") (cast_expression "(undefined1  [16])0x0" (( "(") (type_descriptor "undefined1  [16]" (type_identifier "undefined1") (abstract_array_declarator "[16]" ([ "[") (number_literal "16") (] "]"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "FUN_00153440(puVar7,0x10,0x3e,1);" (call_expression "FUN_00153440(puVar7,0x10,0x3e,1)" (identifier "FUN_00153440") (argument_list "(puVar7,0x10,0x3e,1)" (( "(") (identifier "puVar7") (, ",") (number_literal "0x10") (, ",") (number_literal "0x3e") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "FUN_00153440(puVar7,0xc,0x3e,2);" (call_expression "FUN_00153440(puVar7,0xc,0x3e,2)" (identifier "FUN_00153440") (argument_list "(puVar7,0xc,0x3e,2)" (( "(") (identifier "puVar7") (, ",") (number_literal "0xc") (, ",") (number_literal "0x3e") (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);" (call_expression "(**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" (( "(") (pointer_expression "**(code **)(puVar7[1] + 0x48)" (* "*") (pointer_expression "*(code **)(puVar7[1] + 0x48)" (* "*") (cast_expression "(code **)(puVar7[1] + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7[1] + 0x48)" (( "(") (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(uVar1,pauVar11[1] + 4)" (( "(") (identifier "uVar1") (, ",") (binary_expression "pauVar11[1] + 4" (subscript_expression "pauVar11[1]" (identifier "pauVar11") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "4")) () ")"))) (; ";")) (expression_statement "(**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);" (call_expression "(**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" (( "(") (pointer_expression "**(code **)(puVar7[1] + 0x48)" (* "*") (pointer_expression "*(code **)(puVar7[1] + 0x48)" (* "*") (cast_expression "(code **)(puVar7[1] + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7[1] + 0x48)" (( "(") (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(1,*pauVar11 + 8)" (( "(") (number_literal "1") (, ",") (binary_expression "*pauVar11 + 8" (pointer_expression "*pauVar11" (* "*") (identifier "pauVar11")) (+ "+") (number_literal "8")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }" (else "else") (compound_statement "{\n      uVar16 = 0xc;\n      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);\n      bfd_set_section_size(puVar7,lVar8,0xc);\n      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);\n      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n      *(undefined8 *)*pauVar11 = 0;\n      *(undefined4 *)(*pauVar11 + 8) = 0;\n      FUN_00153440(puVar7,4,0x3e,1);\n      FUN_00153440(puVar7,0,0x3e,2);\n      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);\n    }" ({ "{") (expression_statement "uVar16 = 0xc;" (assignment_expression "uVar16 = 0xc" (identifier "uVar16") (= "=") (number_literal "0xc")) (; ";")) (expression_statement "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);" (call_expression "FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" (identifier "FUN_00153370") (argument_list "(puVar7,"__imp_",param_4,"",0x2b4598,2,0)" (( "(") (identifier "puVar7") (, ",") (string_literal ""__imp_"" (" """) (string_content "__imp_") (" """)) (, ",") (identifier "param_4") (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0x2b4598") (, ",") (number_literal "2") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bfd_set_section_size(puVar7,lVar8,0xc);" (call_expression "bfd_set_section_size(puVar7,lVar8,0xc)" (identifier "bfd_set_section_size") (argument_list "(puVar7,lVar8,0xc)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (number_literal "0xc") () ")"))) (; ";")) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(0xc);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(0xc)" (identifier "pauVar11") (= "=") (cast_expression "(undefined1 (*) [16])xmalloc(0xc)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (call_expression "xmalloc(0xc)" (identifier "xmalloc") (argument_list "(0xc)" (( "(") (number_literal "0xc") () ")"))))) (; ";")) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" (* "*") (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" (( "(") (type_descriptor "undefined1 (**) [16]" (type_identifier "undefined1") (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" (( "(") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (parenthesized_expression "(lVar8 + 0xb0)" (( "(") (binary_expression "lVar8 + 0xb0" (identifier "lVar8") (+ "+") (number_literal "0xb0")) () ")")))) (= "=") (identifier "pauVar11")) (; ";")) (expression_statement "*(undefined8 *)*pauVar11 = 0;" (assignment_expression "*(undefined8 *)*pauVar11 = 0" (pointer_expression "*(undefined8 *)*pauVar11" (* "*") (cast_expression "(undefined8 *)*pauVar11" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*pauVar11" (* "*") (identifier "pauVar11")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined4 *)(*pauVar11 + 8) = 0;" (assignment_expression "*(undefined4 *)(*pauVar11 + 8) = 0" (pointer_expression "*(undefined4 *)(*pauVar11 + 8)" (* "*") (cast_expression "(undefined4 *)(*pauVar11 + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*pauVar11 + 8)" (( "(") (binary_expression "*pauVar11 + 8" (pointer_expression "*pauVar11" (* "*") (identifier "pauVar11")) (+ "+") (number_literal "8")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "FUN_00153440(puVar7,4,0x3e,1);" (call_expression "FUN_00153440(puVar7,4,0x3e,1)" (identifier "FUN_00153440") (argument_list "(puVar7,4,0x3e,1)" (( "(") (identifier "puVar7") (, ",") (number_literal "4") (, ",") (number_literal "0x3e") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "FUN_00153440(puVar7,0,0x3e,2);" (call_expression "FUN_00153440(puVar7,0,0x3e,2)" (identifier "FUN_00153440") (argument_list "(puVar7,0,0x3e,2)" (( "(") (identifier "puVar7") (, ",") (number_literal "0") (, ",") (number_literal "0x3e") (, ",") (number_literal "2") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);" (call_expression "(**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" (( "(") (pointer_expression "**(code **)(puVar7[1] + 0x48)" (* "*") (pointer_expression "*(code **)(puVar7[1] + 0x48)" (* "*") (cast_expression "(code **)(puVar7[1] + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7[1] + 0x48)" (( "(") (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(uVar1,*pauVar11 + 8)" (( "(") (identifier "uVar1") (, ",") (binary_expression "*pauVar11 + 8" (pointer_expression "*pauVar11" (* "*") (identifier "pauVar11")) (+ "+") (number_literal "8")) () ")"))) (; ";")) (} "}")))) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" (identifier "FUN_001532d0") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))) (; ";")) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" (identifier "bfd_set_symtab") (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" (( "(") (identifier "puVar7") (, ",") (identifier "DAT_002b5c48") (, ",") (identifier "DAT_002b5c44") () ")"))) (; ";")) (} "}")) (else_clause "else {\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }" (else "else") (compound_statement "{\n    bfd_set_section_size(puVar7,lVar8,8);\n    pauVar11 = (undefined1 (*) [16])xmalloc(8);\n    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;\n    *(undefined8 *)*pauVar11 = 0;\n    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);\n    FUN_00153440(puVar7,4,0x3e,1);\n    FUN_001532d0(lVar8);\n    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);\n    uVar16 = 8;\n  }" ({ "{") (expression_statement "bfd_set_section_size(puVar7,lVar8,8);" (call_expression "bfd_set_section_size(puVar7,lVar8,8)" (identifier "bfd_set_section_size") (argument_list "(puVar7,lVar8,8)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (number_literal "8") () ")"))) (; ";")) (expression_statement "pauVar11 = (undefined1 (*) [16])xmalloc(8);" (assignment_expression "pauVar11 = (undefined1 (*) [16])xmalloc(8)" (identifier "pauVar11") (= "=") (cast_expression "(undefined1 (*) [16])xmalloc(8)" (( "(") (type_descriptor "undefined1 (*) [16]" (type_identifier "undefined1") (abstract_array_declarator "(*) [16]" (abstract_parenthesized_declarator "(*)" (( "(") (abstract_pointer_declarator "*" (* "*")) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (call_expression "xmalloc(8)" (identifier "xmalloc") (argument_list "(8)" (( "(") (number_literal "8") () ")"))))) (; ";")) (expression_statement "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;" (assignment_expression "*(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11" (pointer_expression "*(undefined1 (**) [16])(lVar8 + 0xb0)" (* "*") (cast_expression "(undefined1 (**) [16])(lVar8 + 0xb0)" (( "(") (type_descriptor "undefined1 (**) [16]" (type_identifier "undefined1") (abstract_array_declarator "(**) [16]" (abstract_parenthesized_declarator "(**)" (( "(") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))) () ")")) ([ "[") (number_literal "16") (] "]"))) () ")") (parenthesized_expression "(lVar8 + 0xb0)" (( "(") (binary_expression "lVar8 + 0xb0" (identifier "lVar8") (+ "+") (number_literal "0xb0")) () ")")))) (= "=") (identifier "pauVar11")) (; ";")) (expression_statement "*(undefined8 *)*pauVar11 = 0;" (assignment_expression "*(undefined8 *)*pauVar11 = 0" (pointer_expression "*(undefined8 *)*pauVar11" (* "*") (cast_expression "(undefined8 *)*pauVar11" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*pauVar11" (* "*") (identifier "pauVar11")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "(**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);" (call_expression "(**(code **)(puVar7[1] + 0x48))(param_3,pauVar11)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x48))" (( "(") (pointer_expression "**(code **)(puVar7[1] + 0x48)" (* "*") (pointer_expression "*(code **)(puVar7[1] + 0x48)" (* "*") (cast_expression "(code **)(puVar7[1] + 0x48)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7[1] + 0x48)" (( "(") (binary_expression "puVar7[1] + 0x48" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x48")) () ")"))))) () ")")) (argument_list "(param_3,pauVar11)" (( "(") (identifier "param_3") (, ",") (identifier "pauVar11") () ")"))) (; ";")) (expression_statement "FUN_00153440(puVar7,4,0x3e,1);" (call_expression "FUN_00153440(puVar7,4,0x3e,1)" (identifier "FUN_00153440") (argument_list "(puVar7,4,0x3e,1)" (( "(") (identifier "puVar7") (, ",") (number_literal "4") (, ",") (number_literal "0x3e") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" (identifier "FUN_001532d0") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))) (; ";")) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" (identifier "bfd_set_symtab") (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" (( "(") (identifier "puVar7") (, ",") (identifier "DAT_002b5c48") (, ",") (identifier "DAT_002b5c44") () ")"))) (; ";")) (expression_statement "uVar16 = 8;" (assignment_expression "uVar16 = 8" (identifier "uVar16") (= "=") (number_literal "8")) (; ";")) (} "}")))) (expression_statement "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);" (call_expression "bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16)" (identifier "bfd_set_section_contents") (argument_list "(puVar7,lVar8,pauVar11,0,uVar16)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (identifier "pauVar11") (, ",") (number_literal "0") (, ",") (identifier "uVar16") () ")"))) (; ";")) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" (identifier "bfd_make_readable") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" (identifier "FUN_001540f0") (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" (( "(") (identifier "puVar7") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (, ",") (pointer_expression "&DAT_002b5f40" (& "&") (identifier "DAT_002b5f40")) () ")"))) (; ";")) (expression_statement "lVar8 = DAT_002b5f90;" (assignment_expression "lVar8 = DAT_002b5f90" (identifier "lVar8") (= "=") (identifier "DAT_002b5f90")) (; ";")) (if_statement "if (DAT_002b5ca4 != 0) {\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }" (if "if") (parenthesized_expression "(DAT_002b5ca4 != 0)" (( "(") (binary_expression "DAT_002b5ca4 != 0" (identifier "DAT_002b5ca4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    DAT_002b5ca4 = DAT_002b5ca4 + 1;\n    return;\n  }" ({ "{") (expression_statement "DAT_002b5ca4 = DAT_002b5ca4 + 1;" (assignment_expression "DAT_002b5ca4 = DAT_002b5ca4 + 1" (identifier "DAT_002b5ca4") (= "=") (binary_expression "DAT_002b5ca4 + 1" (identifier "DAT_002b5ca4") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "DAT_002b5ca4 = DAT_002b5ca4 + 1;" (assignment_expression "DAT_002b5ca4 = DAT_002b5ca4 + 1" (identifier "DAT_002b5ca4") (= "=") (binary_expression "DAT_002b5ca4 + 1" (identifier "DAT_002b5ca4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar5 = (char *)xmalloc(0x14);" (assignment_expression "pcVar5 = (char *)xmalloc(0x14)" (identifier "pcVar5") (= "=") (cast_expression "(char *)xmalloc(0x14)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x14)" (identifier "xmalloc") (argument_list "(0x14)" (( "(") (number_literal "0x14") () ")"))))) (; ";")) (expression_statement "sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);" (call_expression "sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40)" (identifier "sprintf") (argument_list "(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40)" (( "(") (identifier "pcVar5") (, ",") (string_literal ""ertr%06d.o"" (" """) (string_content "ertr%06d.o") (" """)) (, ",") (cast_expression "(ulong)DAT_002b5c40" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "DAT_002b5c40")) () ")"))) (; ";")) (expression_statement "DAT_002b5c40 = DAT_002b5c40 + 1;" (assignment_expression "DAT_002b5c40 = DAT_002b5c40 + 1" (identifier "DAT_002b5c40") (= "=") (binary_expression "DAT_002b5c40 + 1" (identifier "DAT_002b5c40") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);" (assignment_expression "puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8)" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)bfd_create(pcVar5,lVar8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "bfd_create(pcVar5,lVar8)" (identifier "bfd_create") (argument_list "(pcVar5,lVar8)" (( "(") (identifier "pcVar5") (, ",") (identifier "lVar8") () ")"))))) (; ";")) (expression_statement "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);" (call_expression "bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" (identifier "bfd_find_target") (argument_list "(*(undefined8 *)(DAT_002b5c98 + 8),puVar7)" (( "(") (pointer_expression "*(undefined8 *)(DAT_002b5c98 + 8)" (* "*") (cast_expression "(undefined8 *)(DAT_002b5c98 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 8)" (( "(") (binary_expression "DAT_002b5c98 + 8" (identifier "DAT_002b5c98") (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "bfd_make_writable(puVar7);" (call_expression "bfd_make_writable(puVar7)" (identifier "bfd_make_writable") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "bfd_set_format(puVar7,1);" (call_expression "bfd_set_format(puVar7,1)" (identifier "bfd_set_format") (argument_list "(puVar7,1)" (( "(") (identifier "puVar7") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);" (call_expression "(**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (parenthesized_expression "(**(code **)(puVar7[1] + 0x290))" (( "(") (pointer_expression "**(code **)(puVar7[1] + 0x290)" (* "*") (pointer_expression "*(code **)(puVar7[1] + 0x290)" (* "*") (cast_expression "(code **)(puVar7[1] + 0x290)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar7[1] + 0x290)" (( "(") (binary_expression "puVar7[1] + 0x290" (subscript_expression "puVar7[1]" (identifier "puVar7") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x290")) () ")"))))) () ")")) (argument_list "(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0)" (( "(") (identifier "puVar7") (, ",") (pointer_expression "*(undefined4 *)(DAT_002b5c98 + 0x18)" (* "*") (cast_expression "(undefined4 *)(DAT_002b5c98 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 0x18)" (( "(") (binary_expression "DAT_002b5c98 + 0x18" (identifier "DAT_002b5c98") (+ "+") (number_literal "0x18")) () ")")))) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "DAT_002b5c44 = 0;" (assignment_expression "DAT_002b5c44 = 0" (identifier "DAT_002b5c44") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_002b5c48 = xmalloc(0x10);" (assignment_expression "DAT_002b5c48 = xmalloc(0x10)" (identifier "DAT_002b5c48") (= "=") (call_expression "xmalloc(0x10)" (identifier "xmalloc") (argument_list "(0x10)" (( "(") (number_literal "0x10") () ")")))) (; ";")) (expression_statement "lVar8 = FUN_00154530(puVar7,".rdata",0x100);" (assignment_expression "lVar8 = FUN_00154530(puVar7,".rdata",0x100)" (identifier "lVar8") (= "=") (call_expression "FUN_00154530(puVar7,".rdata",0x100)" (identifier "FUN_00154530") (argument_list "(puVar7,".rdata",0x100)" (( "(") (identifier "puVar7") (, ",") (string_literal "".rdata"" (" """) (string_content ".rdata") (" """)) (, ",") (number_literal "0x100") () ")")))) (; ";")) (expression_statement "pcVar5 = "__pei386_runtime_relocator";" (assignment_expression "pcVar5 = "__pei386_runtime_relocator"" (identifier "pcVar5") (= "=") (string_literal ""__pei386_runtime_relocator"" (" """) (string_content "__pei386_runtime_relocator") (" """))) (; ";")) (if_statement "if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {\n    pcVar5 = "_pei386_runtime_relocator";\n  }" (if "if") (parenthesized_expression "(*(int *)(DAT_002b5c98 + 0x1c) == 0)" (( "(") (binary_expression "*(int *)(DAT_002b5c98 + 0x1c) == 0" (pointer_expression "*(int *)(DAT_002b5c98 + 0x1c)" (* "*") (cast_expression "(int *)(DAT_002b5c98 + 0x1c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_002b5c98 + 0x1c)" (( "(") (binary_expression "DAT_002b5c98 + 0x1c" (identifier "DAT_002b5c98") (+ "+") (number_literal "0x1c")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    pcVar5 = "_pei386_runtime_relocator";\n  }" ({ "{") (expression_statement "pcVar5 = "_pei386_runtime_relocator";" (assignment_expression "pcVar5 = "_pei386_runtime_relocator"" (identifier "pcVar5") (= "=") (string_literal ""_pei386_runtime_relocator"" (" """) (string_content "_pei386_runtime_relocator") (" """))) (; ";")) (} "}"))) (expression_statement "FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);" (call_expression "FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0)" (identifier "FUN_00153370") (argument_list "(puVar7,"",pcVar5,"",0x2b4598,0,0)" (( "(") (identifier "puVar7") (, ",") (string_literal """" (" """) (" """)) (, ",") (identifier "pcVar5") (, ",") (string_literal """" (" """) (" """)) (, ",") (number_literal "0x2b4598") (, ",") (number_literal "0") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "bfd_set_section_size(puVar7,lVar8,4);" (call_expression "bfd_set_section_size(puVar7,lVar8,4)" (identifier "bfd_set_section_size") (argument_list "(puVar7,lVar8,4)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "uVar16 = xcalloc(1,4);" (assignment_expression "uVar16 = xcalloc(1,4)" (identifier "uVar16") (= "=") (call_expression "xcalloc(1,4)" (identifier "xcalloc") (argument_list "(1,4)" (( "(") (number_literal "1") (, ",") (number_literal "4") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(lVar8 + 0xb0) = uVar16;" (assignment_expression "*(undefined8 *)(lVar8 + 0xb0) = uVar16" (pointer_expression "*(undefined8 *)(lVar8 + 0xb0)" (* "*") (cast_expression "(undefined8 *)(lVar8 + 0xb0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0xb0)" (( "(") (binary_expression "lVar8 + 0xb0" (identifier "lVar8") (+ "+") (number_literal "0xb0")) () ")")))) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "FUN_00153440(puVar7,0,0x3e,1);" (call_expression "FUN_00153440(puVar7,0,0x3e,1)" (identifier "FUN_00153440") (argument_list "(puVar7,0,0x3e,1)" (( "(") (identifier "puVar7") (, ",") (number_literal "0") (, ",") (number_literal "0x3e") (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "FUN_001532d0(lVar8);" (call_expression "FUN_001532d0(lVar8)" (identifier "FUN_001532d0") (argument_list "(lVar8)" (( "(") (identifier "lVar8") () ")"))) (; ";")) (expression_statement "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);" (call_expression "bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44)" (identifier "bfd_set_symtab") (argument_list "(puVar7,DAT_002b5c48,DAT_002b5c44)" (( "(") (identifier "puVar7") (, ",") (identifier "DAT_002b5c48") (, ",") (identifier "DAT_002b5c44") () ")"))) (; ";")) (expression_statement "bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);" (call_expression "bfd_set_section_contents(puVar7,lVar8,uVar16,0,4)" (identifier "bfd_set_section_contents") (argument_list "(puVar7,lVar8,uVar16,0,4)" (( "(") (identifier "puVar7") (, ",") (identifier "lVar8") (, ",") (identifier "uVar16") (, ",") (number_literal "0") (, ",") (number_literal "4") () ")"))) (; ";")) (expression_statement "bfd_make_readable(puVar7);" (call_expression "bfd_make_readable(puVar7)" (identifier "bfd_make_readable") (argument_list "(puVar7)" (( "(") (identifier "puVar7") () ")"))) (; ";")) (expression_statement "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);" (call_expression "FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40)" (identifier "FUN_001540f0") (argument_list "(puVar7,*puVar7,&DAT_002b5f40)" (( "(") (identifier "puVar7") (, ",") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")) (, ",") (pointer_expression "&DAT_002b5f40" (& "&") (identifier "DAT_002b5f40")) () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *rel,type_2 *s,type_3 var_32,char *var_8,char *symname)

{
  type_4 bVar1;
  type_3 bVar2;
  type_5 *var_5;
  type_5 *puVar4;
  char *pcVar5;
  long var_13;
  type_6 *pbVar7;
  type_2 *paVar8;
  type_7 *puVar9;
  var_1 (*pauVar10) [16];
  int iVar11;
  type_8 var_10;
  type_5 var_4;
  type_5 var_6;
  char *var_9;
  char cVar16;
  type_9 uVar17;
  bool bVar18;
  type_10 *bh;
  char var_11 [26];
  
  pbVar7 = (*rel->sym_ptr_ptr)->the_bfd;
  var_2 = var_2 + 1;
  var_3(var_11,"__fu%d_");
  puVar4 = (type_5 *)var_11;
  do {
    var_5 = puVar4;
    var_4 = *var_5 + 0xfefefeff & ~*var_5;
    var_6 = var_4 & 0x80808080;
    puVar4 = var_5 + 1;
  } while (var_6 == 0);
  bVar18 = (var_4 & 0x8080) == 0;
  if (bVar18) {
    var_6 = var_6 >> 0x10;
  }
  if (bVar18) {
    puVar4 = (type_5 *)((long)var_5 + 6);
  }
  pcVar5 = (char *)((long)puVar4 + ((-3 - (type_8)var_7((type_11)var_6,(type_11)var_6)) - (long)var_11));
  var_9 = var_8 + -(long)pcVar5;
  var_6 = (type_5)pcVar5;
  var_10 = (type_8)pcVar5 & 0xffffffff;
  if (var_6 < 8) {
    if (((type_8)pcVar5 & 4) == 0) {
      if (var_6 != 0) {
        *var_9 = var_11[0];
        if (((type_8)pcVar5 & 2) != 0) {
          *(type_12 *)(var_9 + (var_10 - 2)) = *(type_12 *)(var_11 + (var_10 - 2));
        }
      }
    }
    else {
      *(type_13 *)var_9 = var_11._0_4_;
      *(type_13 *)(var_9 + (var_10 - 4)) = *(type_13 *)(var_11 + (var_10 - 4));
    }
  }
  else {
    *(type_8 *)var_9 = var_12(var_11._4_4_,var_11._0_4_);
    *(type_9 *)(var_9 + (((type_8)pcVar5 & 0xffffffff) - 8)) =
         *(type_9 *)(var_11 + (((type_8)pcVar5 & 0xffffffff) - 8));
    var_13 = (long)var_9 - ((type_8)(var_9 + 8) & 0xfffffffffffffff8);
    var_6 = (int)var_13 + var_6 & 0xfffffff8;
    if (7 < var_6) {
      var_4 = 0;
      do {
        var_10 = (type_8)var_4;
        var_4 = var_4 + 8;
        *(type_9 *)(((type_8)(var_9 + 8) & 0xfffffffffffffff8) + var_10) =
             *(type_9 *)((long)var_11 + (var_10 - var_13));
      } while (var_4 < var_6);
    }
  }
  bh = (type_10 *)0x0;
  iVar11 = 2;
  (**(type_14 **)((long)pbVar7->xvec->backend_data + 0x138))
            (&link_info,pbVar7,var_9,2,current_sec,rel->address,0,1,0,&bh);
  pcVar5 = (bh->root).string;
  if (link_info.pei386_runtime_pseudo_reloc == 2) goto LAB_0015682c;
  iVar11 = 0;
  var_14(var_8 + -10,"__nm_thnk_",10);
  var_13 = var_15(link_info.hash,var_8 + -10,0,0,1);
  pbVar7 = link_info.output_bfd;
  if ((var_13 == 0) || (*(char *)(var_13 + 0x18) != '\x03')) {
    var_9 = (char *)var_16(0x14);
    var_3(var_9,"nmth%06d.o",(type_8)(type_5)var_17);
    var_17 = var_17 + 1;
    pbVar7 = (type_6 *)var_18(var_9,pbVar7);
    var_19(pe_details->object_target,pbVar7);
    var_20(pbVar7);
    var_21(pbVar7,1);
    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);
    symptr = 0;
    symtab = (type_15 **)var_16(0x18);
    paVar8 = var_22(pbVar7,".idata$4",0x100,iVar11);
    var_23(pbVar7,"__nm_thnk_",var_8,"",paVar8,2,0);
    var_23(pbVar7,"__nm_",var_8,"",(type_2 *)(var_24 + 0x118),2,0);
    var_25(pbVar7,paVar8,8);
    puVar9 = (type_7 *)var_16(8);
    paVar8->contents = puVar9;
    puVar9[0] = '\0';
    puVar9[1] = '\0';
    puVar9[2] = '\0';
    puVar9[3] = '\0';
    puVar9[4] = '\0';
    puVar9[5] = '\0';
    puVar9[6] = '\0';
    puVar9[7] = '\0';
    var_26(pbVar7,0,0x3e,2);
    var_27(paVar8);
    var_28(pbVar7,symtab,symptr);
    iVar11 = 0;
    var_29(pbVar7,paVar8,puVar9,0,8);
    var_30(pbVar7);
    var_31(pbVar7,pbVar7->filename,&link_info);
    config.text_read_only = 0;
    *(type_5 *)&(link_info.output_bfd)->field_0x44 =
         *(type_5 *)&(link_info.output_bfd)->field_0x44 & 0xffffefff;
  }
  pbVar7 = link_info.output_bfd;
  if ((var_32 == 0) || (link_info.pei386_runtime_pseudo_reloc == 1)) {
    var_9 = (char *)var_16(0x14);
    var_3(var_9,"fu%06d.o",(type_8)(type_5)var_17);
    var_17 = var_17 + 1;
    pbVar7 = (type_6 *)var_18(var_9,pbVar7);
    var_19(pe_details->object_target,pbVar7);
    var_20(pbVar7);
    var_21(pbVar7,1);
    (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);
    symptr = 0;
    symtab = (type_15 **)var_16(0x30);
    paVar8 = var_22(pbVar7,".idata$2",0x100,iVar11);
    var_23(pbVar7,"__nm_thnk_",var_8,"",(type_2 *)(var_24 + 0x118),2,0);
    var_9 = "_";
    if (pe_details->underscored == 0) {
      var_9 = "";
    }
    var_23(pbVar7,var_9,symname,"_iname",(type_2 *)(var_24 + 0x118),2,0);
    iVar11 = 0;
    var_23(pbVar7,"",pcVar5,"",(type_2 *)(var_24 + 0x118),2,0);
    var_25(pbVar7,paVar8,0x14);
    pauVar10 = (var_1 (*) [16])var_16(0x14);
    paVar8->contents = (type_7 *)pauVar10;
    *(type_13 *)pauVar10[1] = 0;
    *pauVar10 = (var_1  [16])0x0;
    var_26(pbVar7,0,0x3e,1);
    var_26(pbVar7,0xc,0x3e,2);
    var_26(pbVar7,0x10,0x3e,3);
    var_27(paVar8);
    var_28(pbVar7,symtab,symptr);
    var_29(pbVar7,paVar8,pauVar10,0,0x14);
    var_30(pbVar7);
    var_31(pbVar7,pbVar7->filename,&link_info);
    if (var_32 == 0) {
      if (link_info.pei386_runtime_pseudo_reloc != 2) {
        return;
      }
      goto LAB_0015682c;
    }
    if (link_info.pei386_runtime_pseudo_reloc == 1) goto LAB_0015682c;
  }
  if (link_info.pei386_runtime_pseudo_reloc != 2) {
    bVar1 = rel->address;
    pbVar7 = s->owner;
    pcVar5 = (*rel->sym_ptr_ptr)->var_8;
    var_9 = (char *)var_33(0,
                                "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"
                                ,5);
    var_34(var_9,pbVar7,s,bVar1,pcVar5);
    return;
  }
LAB_0015682c:
  if (var_35 != 0) {
    var_36("creating runtime pseudo-reloc entry for %s (addend=%d)\n",pcVar5,var_32 & 0xffffffff);
  }
  pbVar7 = link_info.output_bfd;
  var_6 = rel->howto->bitsize;
  var_9 = (char *)var_16(0x14);
  var_3(var_9,"rtr%06d.o",(type_8)(type_5)var_17);
  var_17 = var_17 + 1;
  pbVar7 = (type_6 *)var_18(var_9,pbVar7);
  var_19(pe_details->object_target,pbVar7);
  var_20(pbVar7);
  var_21(pbVar7,1);
  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);
  cVar16 = '\x10';
  if (link_info.pei386_runtime_pseudo_reloc == 2) {
    cVar16 = (-(var_37 == 0) & 0x18U) + 0x18;
  }
  symptr = 0;
  symtab = (type_15 **)var_16(cVar16);
  paVar8 = var_22(pbVar7,".rdata_runtime_pseudo_reloc",0x100,iVar11);
  var_23(pbVar7,"",pcVar5,"",(type_2 *)(var_24 + 0x118),2,0);
  if (link_info.pei386_runtime_pseudo_reloc == 2) {
    bVar2 = (type_3)var_6;
    if (var_37 == 0) {
      uVar17 = 0x18;
      var_37 = 1;
      var_23(pbVar7,"__imp_",var_8,"",(type_2 *)(var_24 + 0x118),2,0);
      var_25(pbVar7,paVar8,0x18);
      pauVar10 = (var_1 (*) [16])var_16(0x18);
      paVar8->contents = (type_7 *)pauVar10;
      *(type_9 *)pauVar10[1] = 0;
      *pauVar10 = (var_1  [16])0x0;
      var_26(pbVar7,0x10,0x3e,1);
      var_26(pbVar7,0xc,0x3e,2);
      (*pbVar7->xvec->bfd_putx32)(bVar2,pauVar10[1] + 4);
      (*pbVar7->xvec->bfd_putx32)(1,*pauVar10 + 8);
    }
    else {
      uVar17 = 0xc;
      var_23(pbVar7,"__imp_",var_8,"",(type_2 *)(var_24 + 0x118),2,0);
      var_25(pbVar7,paVar8,0xc);
      pauVar10 = (var_1 (*) [16])var_16(0xc);
      paVar8->contents = (type_7 *)pauVar10;
      *(type_9 *)*pauVar10 = 0;
      *(type_13 *)(*pauVar10 + 8) = 0;
      var_26(pbVar7,4,0x3e,1);
      var_26(pbVar7,0,0x3e,2);
      (*pbVar7->xvec->bfd_putx32)(bVar2,*pauVar10 + 8);
    }
    var_27(paVar8);
    var_28(pbVar7,symtab,symptr);
  }
  else {
    var_25(pbVar7,paVar8,8);
    pauVar10 = (var_1 (*) [16])var_16(8);
    paVar8->contents = (type_7 *)pauVar10;
    *(type_9 *)*pauVar10 = 0;
    (*pbVar7->xvec->bfd_putx32)(var_32,pauVar10);
    var_26(pbVar7,4,0x3e,1);
    var_27(paVar8);
    var_28(pbVar7,symtab,symptr);
    uVar17 = 8;
  }
  iVar11 = 0;
  var_29(pbVar7,paVar8,pauVar10,0,uVar17);
  var_30(pbVar7);
  var_31(pbVar7,pbVar7->filename,&link_info);
  pbVar7 = link_info.output_bfd;
  if (var_38 != 0) {
    var_38 = var_38 + 1;
    return;
  }
  var_38 = var_38 + 1;
  pcVar5 = (char *)var_16(0x14);
  var_3(pcVar5,"ertr%06d.o",(type_8)(type_5)var_17);
  var_17 = var_17 + 1;
  pbVar7 = (type_6 *)var_18(pcVar5,pbVar7);
  var_19(pe_details->object_target,pbVar7);
  var_20(pbVar7);
  var_21(pbVar7,1);
  (*pbVar7->xvec->_bfd_set_arch_mach)(pbVar7,pe_details->bfd_arch,0);
  symptr = 0;
  symtab = (type_15 **)var_16(0x10);
  paVar8 = var_22(pbVar7,".rdata",0x100,iVar11);
  pcVar5 = "__pei386_runtime_relocator";
  if (pe_details->underscored == 0) {
    pcVar5 = "_pei386_runtime_relocator";
  }
  var_23(pbVar7,"",pcVar5,"",(type_2 *)(var_24 + 0x118),0,0);
  var_25(pbVar7,paVar8,4);
  puVar9 = (type_7 *)var_39(1);
  paVar8->contents = puVar9;
  var_26(pbVar7,0,0x3e,1);
  var_27(paVar8);
  var_28(pbVar7,symtab,symptr);
  var_29(pbVar7,paVar8,puVar9,0,4);
  var_30(pbVar7);
  var_31(pbVar7,pbVar7->filename,&link_info);
  return;
}


(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: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)) (parameter_declaration type: (type_identifier) declarator: (identifier)))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) 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: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (subscript_expression argument: (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier)))) index: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier)) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)) right: (unary_expression argument: (pointer_expression argument: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (identifier)) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))))))) (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (subscript_expression argument: (identifier) index: (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: (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (subscript_expression argument: (identifier) index: (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: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) 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: (parenthesized_expression (binary_expression left: (parenthesized_expression (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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: (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: (identifier))))) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (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: (number_literal))))))) arguments: (argument_list (pointer_expression argument: (identifier)) (identifier) (identifier) (number_literal) (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (number_literal) (number_literal) (number_literal) (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: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_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: (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))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (number_literal) (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (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))))) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (string_literal) (identifier) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (string_literal) (number_literal) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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 (number_literal)))))) (expression_statement (assignment_expression left: (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: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_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: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)))))) (expression_statement (assignment_expression left: (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: (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 (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (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))))) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (string_literal) (number_literal) (number_literal) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (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: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (string_literal (string_content)) (number_literal) (number_literal) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal) (identifier) (string_literal) (number_literal) (number_literal) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) size: (number_literal))) 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: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator size: (number_literal))) value: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (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: (number_literal))) consequence: (compound_statement (return_statement))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) 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) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content) (escape_sequence)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (identifier)))) (return_statement))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (string_literal (string_content) (escape_sequence)) (identifier) (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_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 (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (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))))) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (char_literal (escape_sequence)))) (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: (parenthesized_expression (binary_expression left: (unary_expression argument: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal) (identifier) (string_literal) (number_literal) (number_literal) (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (string_literal) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) size: (number_literal))) 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: (subscript_expression argument: (identifier) index: (number_literal)))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator size: (number_literal))) value: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (number_literal) (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (string_literal) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) size: (number_literal))) 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: (pointer_expression argument: (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: (pointer_expression argument: (identifier)) right: (number_literal))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator)) size: (number_literal))) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_array_declarator declarator: (abstract_parenthesized_declarator (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) size: (number_literal))) 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: (pointer_expression argument: (identifier)))) right: (number_literal))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (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)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (return_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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (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))))) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (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: (string_literal (string_content)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal) (identifier) (string_literal) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (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: (identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (number_literal) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)) (pointer_expression argument: (identifier))))) (return_statement))))

void MASKED(undefined8 *param_1,long param_2,ulong param_3,long param_4,undefined8 param_5)

{
  undefined4 uVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  uint *puVar4;
  char *pcVar5;
  long lVar6;
  undefined8 *puVar7;
  long lVar8;
  undefined8 *puVar9;
  undefined8 uVar10;
  undefined1 (*pauVar11) [16];
  uint uVar12;
  uint uVar13;
  uint *puVar14;
  char cVar15;
  undefined8 uVar16;
  bool bVar17;
  ulong uVar18;
  undefined8 local_60;
  uint local_58 [10];
  
  lVar8 = **(long **)*param_1;
  DAT_002b5c08 = DAT_002b5c08 + 1;
  sprintf((char *)local_58,"__fu%d_");
  puVar14 = local_58;
  do {
    puVar4 = puVar14;
    uVar12 = *puVar4 + 0xfefefeff & ~*puVar4;
    uVar13 = uVar12 & 0x80808080;
    puVar14 = puVar4 + 1;
  } while (uVar13 == 0);
  bVar17 = (uVar12 & 0x8080) == 0;
  if (bVar17) {
    uVar13 = uVar13 >> 0x10;
  }
  if (bVar17) {
    puVar14 = (uint *)((long)puVar4 + 6);
  }
  pcVar5 = (char *)((long)puVar14 +
                   ((-3 - (ulong)CARRY1((byte)uVar13,(byte)uVar13)) - (long)local_58));
  puVar14 = (uint *)(param_4 - (long)pcVar5);
  uVar13 = (uint)pcVar5;
  uVar18 = (ulong)pcVar5 & 0xffffffff;
  if (uVar13 < 8) {
    if (((ulong)pcVar5 & 4) == 0) {
      if (uVar13 != 0) {
        *(undefined1 *)puVar14 = (undefined1)local_58[0];
        if (((ulong)pcVar5 & 2) != 0) {
          *(undefined2 *)((long)puVar14 + (uVar18 - 2)) =
               *(undefined2 *)((long)local_58 + (uVar18 - 2));
        }
      }
    }
    else {
      *puVar14 = local_58[0];
      *(undefined4 *)((long)puVar14 + (uVar18 - 4)) = *(undefined4 *)((long)local_58 + (uVar18 - 4))
      ;
    }
  }
  else {
    *(ulong *)puVar14 = CONCAT44(local_58[1],local_58[0]);
    *(undefined8 *)((long)puVar14 + (((ulong)pcVar5 & 0xffffffff) - 8)) =
         *(undefined8 *)((long)local_58 + (((ulong)pcVar5 & 0xffffffff) - 8));
    lVar6 = (long)puVar14 - ((ulong)(puVar14 + 2) & 0xfffffffffffffff8);
    uVar13 = (int)lVar6 + uVar13 & 0xfffffff8;
    if (7 < uVar13) {
      uVar12 = 0;
      do {
        uVar18 = (ulong)uVar12;
        uVar12 = uVar12 + 8;
        *(undefined8 *)(((ulong)(puVar14 + 2) & 0xfffffffffffffff8) + uVar18) =
             *(undefined8 *)((long)local_58 + (uVar18 - lVar6));
      } while (uVar12 < uVar13);
    }
  }
  local_60 = 0;
  (**(code **)(*(long *)(*(long *)(lVar8 + 8) + 0x368) + 0x138))
            (&DAT_002b5f40,lVar8,puVar14,2,DAT_002b5c50,param_1[1],0,1,0,&local_60);
  uVar16 = *(undefined8 *)(local_60 + 8);
  if (DAT_002b5fec == 2) goto LAB_0015682c;
  *(undefined2 *)(param_4 + -2) = 0x5f6b;
  *(undefined8 *)(param_4 + -10) = 0x6e68745f6d6e5f5f;
  lVar6 = bfd_link_hash_lookup(DAT_002b5f68,param_4 + -10,0,0,1);
  lVar8 = DAT_002b5f90;
  if ((lVar6 == 0) || (*(char *)(lVar6 + 0x18) != '\x03')) {
    pcVar5 = (char *)xmalloc(0x14);
    sprintf(pcVar5,"nmth%06d.o",(ulong)DAT_002b5c40);
    DAT_002b5c40 = DAT_002b5c40 + 1;
    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);
    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);
    bfd_make_writable(puVar7);
    bfd_set_format(puVar7,1);
    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);
    DAT_002b5c44 = 0;
    DAT_002b5c48 = xmalloc(0x18);
    lVar8 = FUN_00154530(puVar7,".idata$4",0x100);
    uVar18 = 0;
    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",lVar8,2,0);
    FUN_00153370(puVar7,"__nm_",param_4,"",0x2b4598,2,uVar18 & 0xffffffff00000000);
    bfd_set_section_size(puVar7,lVar8,8);
    puVar9 = (undefined8 *)xmalloc(8);
    *(undefined8 **)(lVar8 + 0xb0) = puVar9;
    *puVar9 = 0;
    FUN_00153440(puVar7,0,0x3e,2);
    FUN_001532d0(lVar8);
    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
    bfd_set_section_contents(puVar7,lVar8,puVar9,0,8);
    bfd_make_readable(puVar7);
    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);
    DAT_002b60f0 = 0;
    *(uint *)(DAT_002b5f90 + 0x44) = *(uint *)(DAT_002b5f90 + 0x44) & 0xffffefff;
  }
  lVar8 = DAT_002b5f90;
  if ((param_3 == 0) || (DAT_002b5fec == 1)) {
    pcVar5 = (char *)xmalloc(0x14);
    sprintf(pcVar5,"fu%06d.o",(ulong)DAT_002b5c40);
    DAT_002b5c40 = DAT_002b5c40 + 1;
    puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);
    bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);
    bfd_make_writable(puVar7);
    bfd_set_format(puVar7,1);
    (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);
    DAT_002b5c44 = 0;
    DAT_002b5c48 = xmalloc(0x30);
    lVar8 = FUN_00154530(puVar7,".idata$2",0x100);
    uVar18 = 0;
    FUN_00153370(puVar7,"__nm_thnk_",param_4,"",0x2b4598,2,0);
    pcVar5 = "_";
    uVar18 = uVar18 & 0xffffffff00000000;
    if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {
      pcVar5 = "";
    }
    FUN_00153370(puVar7,pcVar5,param_5,"_iname",0x2b4598,2,uVar18);
    FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,uVar18 & 0xffffffff00000000);
    bfd_set_section_size(puVar7,lVar8,0x14);
    pauVar11 = (undefined1 (*) [16])xmalloc(0x14);
    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;
    *(undefined4 *)pauVar11[1] = 0;
    *pauVar11 = (undefined1  [16])0x0;
    FUN_00153440(puVar7,0,0x3e,1);
    FUN_00153440(puVar7,0xc,0x3e,2);
    FUN_00153440(puVar7,0x10,0x3e,3);
    FUN_001532d0(lVar8);
    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
    bfd_set_section_contents(puVar7,lVar8,pauVar11,0,0x14);
    bfd_make_readable(puVar7);
    FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);
    if (param_3 == 0) {
      if (DAT_002b5fec != 2) {
        return;
      }
      goto LAB_0015682c;
    }
    if (DAT_002b5fec == 1) goto LAB_0015682c;
  }
  if (DAT_002b5fec != 2) {
    uVar16 = param_1[1];
    uVar2 = *(undefined8 *)(param_2 + 0xf0);
    uVar3 = *(undefined8 *)(*(long *)*param_1 + 8);
    uVar10 = dcgettext(0,
                       "%X%P: %C: variable \'%pT\' can\'t be auto-imported; please read the documentation for ld\'s --enable-auto-import for details\n"
                       ,5);
    FUN_00129380(uVar10,uVar2,param_2,uVar16,uVar3);
    return;
  }
LAB_0015682c:
  if (DAT_002b5be4 != 0) {
    printf("creating runtime pseudo-reloc entry for %s (addend=%d)\n",uVar16,param_3 & 0xffffffff);
  }
  lVar8 = DAT_002b5f90;
  uVar1 = *(undefined4 *)(param_1[3] + 0xc);
  pcVar5 = (char *)xmalloc(0x14);
  sprintf(pcVar5,"rtr%06d.o",(ulong)DAT_002b5c40);
  DAT_002b5c40 = DAT_002b5c40 + 1;
  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);
  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);
  bfd_make_writable(puVar7);
  bfd_set_format(puVar7,1);
  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);
  cVar15 = '\x10';
  if (DAT_002b5fec == 2) {
    cVar15 = (-(DAT_002b5ca0 == 0) & 0x18U) + 0x18;
  }
  DAT_002b5c44 = 0;
  DAT_002b5c48 = xmalloc(cVar15);
  lVar8 = FUN_00154530(puVar7,".rdata_runtime_pseudo_reloc",0x100);
  FUN_00153370(puVar7,"",uVar16,"",0x2b4598,2,0);
  if (DAT_002b5fec == 2) {
    if (DAT_002b5ca0 == 0) {
      uVar16 = 0x18;
      DAT_002b5ca0 = 1;
      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);
      bfd_set_section_size(puVar7,lVar8,0x18);
      pauVar11 = (undefined1 (*) [16])xmalloc(0x18);
      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;
      *(undefined8 *)pauVar11[1] = 0;
      *pauVar11 = (undefined1  [16])0x0;
      FUN_00153440(puVar7,0x10,0x3e,1);
      FUN_00153440(puVar7,0xc,0x3e,2);
      (**(code **)(puVar7[1] + 0x48))(uVar1,pauVar11[1] + 4);
      (**(code **)(puVar7[1] + 0x48))(1,*pauVar11 + 8);
    }
    else {
      uVar16 = 0xc;
      FUN_00153370(puVar7,"__imp_",param_4,"",0x2b4598,2,0);
      bfd_set_section_size(puVar7,lVar8,0xc);
      pauVar11 = (undefined1 (*) [16])xmalloc(0xc);
      *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;
      *(undefined8 *)*pauVar11 = 0;
      *(undefined4 *)(*pauVar11 + 8) = 0;
      FUN_00153440(puVar7,4,0x3e,1);
      FUN_00153440(puVar7,0,0x3e,2);
      (**(code **)(puVar7[1] + 0x48))(uVar1,*pauVar11 + 8);
    }
    FUN_001532d0(lVar8);
    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
  }
  else {
    bfd_set_section_size(puVar7,lVar8,8);
    pauVar11 = (undefined1 (*) [16])xmalloc(8);
    *(undefined1 (**) [16])(lVar8 + 0xb0) = pauVar11;
    *(undefined8 *)*pauVar11 = 0;
    (**(code **)(puVar7[1] + 0x48))(param_3,pauVar11);
    FUN_00153440(puVar7,4,0x3e,1);
    FUN_001532d0(lVar8);
    bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
    uVar16 = 8;
  }
  bfd_set_section_contents(puVar7,lVar8,pauVar11,0,uVar16);
  bfd_make_readable(puVar7);
  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);
  lVar8 = DAT_002b5f90;
  if (DAT_002b5ca4 != 0) {
    DAT_002b5ca4 = DAT_002b5ca4 + 1;
    return;
  }
  DAT_002b5ca4 = DAT_002b5ca4 + 1;
  pcVar5 = (char *)xmalloc(0x14);
  sprintf(pcVar5,"ertr%06d.o",(ulong)DAT_002b5c40);
  DAT_002b5c40 = DAT_002b5c40 + 1;
  puVar7 = (undefined8 *)bfd_create(pcVar5,lVar8);
  bfd_find_target(*(undefined8 *)(DAT_002b5c98 + 8),puVar7);
  bfd_make_writable(puVar7);
  bfd_set_format(puVar7,1);
  (**(code **)(puVar7[1] + 0x290))(puVar7,*(undefined4 *)(DAT_002b5c98 + 0x18),0);
  DAT_002b5c44 = 0;
  DAT_002b5c48 = xmalloc(0x10);
  lVar8 = FUN_00154530(puVar7,".rdata",0x100);
  pcVar5 = "__pei386_runtime_relocator";
  if (*(int *)(DAT_002b5c98 + 0x1c) == 0) {
    pcVar5 = "_pei386_runtime_relocator";
  }
  FUN_00153370(puVar7,"",pcVar5,"",0x2b4598,0,0);
  bfd_set_section_size(puVar7,lVar8,4);
  uVar16 = xcalloc(1,4);
  *(undefined8 *)(lVar8 + 0xb0) = uVar16;
  FUN_00153440(puVar7,0,0x3e,1);
  FUN_001532d0(lVar8);
  bfd_set_symtab(puVar7,DAT_002b5c48,DAT_002b5c44);
  bfd_set_section_contents(puVar7,lVar8,uVar16,0,4);
  bfd_make_readable(puVar7);
  FUN_001540f0(puVar7,*puVar7,&DAT_002b5f40);
  return;
}

