
void disassemble_data(bfd *abfd)

{
  bfd_endian bVar1;
  long lVar2;
  bfd_target *pbVar3;
  undefined4 uVar4;
  long *__base;
  long *plVar5;
  bfd_arch_info *pbVar6;
  bfd_target *pbVar7;
  undefined8 uVar8;
  char *pcVar9;
  char *format;
  long lVar10;
  ulong uVar11;
  asymbol *paVar12;
  long lVar13;
  asymbol **__src;
  byte *pbVar14;
  byte *pbVar15;
  undefined8 *puVar16;
  byte *pbVar17;
  undefined8 *puVar18;
  long *plVar19;
  long *plVar20;
  bool bVar21;
  bool bVar22;
  bool bVar23;
  byte bVar24;
  objdump_disasm_info aux;
  disassemble_info disasm_info;
  
  bVar24 = 0;
  print_files = (print_file_list *)0x0;
  prev_functionname = (char *)0x0;
  prev_line = 0xffffffff;
  sorted_symcount = symcount;
  if (symcount == 0) {
    sorted_symcount = dynsymcount;
  }
  prev_discriminator = 0;
  sorted_syms = (asymbol **)xmalloc((sorted_symcount + synthcount) * 8);
  lVar13 = sorted_symcount;
  __src = dynsyms;
  if (symcount != 0) {
    __src = syms;
  }
  __base = (long *)memcpy(sorted_syms,__src,sorted_symcount * 8);
  plVar5 = __base;
  plVar19 = __base;
LAB_00109890:
  lVar13 = lVar13 + -1;
  plVar20 = plVar19;
  if (-1 < lVar13) {
    while( true ) {
      plVar19 = plVar20 + 1;
      lVar2 = *plVar20;
      pbVar15 = *(byte **)(lVar2 + 8);
      if ((pbVar15 == (byte *)0x0) || (*pbVar15 == 0)) break;
      bVar21 = false;
      bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0;
      if (!bVar23) {
        lVar10 = 4;
        pbVar14 = pbVar15;
        pbVar17 = &DAT_0013d5f3;
        do {
          if (lVar10 == 0) break;
          lVar10 = lVar10 + -1;
          bVar21 = *pbVar14 < *pbVar17;
          bVar23 = *pbVar14 == *pbVar17;
          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;
          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;
        } while (bVar23);
        bVar22 = false;
        bVar21 = (!bVar21 && !bVar23) == bVar21;
        if (!bVar21) {
          lVar10 = 5;
          pbVar14 = &DAT_0013d5f8;
          do {
            if (lVar10 == 0) break;
            lVar10 = lVar10 + -1;
            bVar22 = *pbVar15 < *pbVar14;
            bVar21 = *pbVar15 == *pbVar14;
            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;
            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;
          } while (bVar21);
          if ((!bVar22 && !bVar21) != bVar22) break;
        }
      }
      if ((*(long *)(lVar2 + 0x20) == 0x156ed8) ||
         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)) break;
      *plVar5 = lVar2;
      plVar5 = plVar5 + 1;
      lVar13 = lVar13 + -1;
      plVar20 = plVar19;
      if (lVar13 < 0) goto LAB_00109904;
    }
    goto LAB_00109890;
  }
LAB_00109904:
  sorted_symcount = (long)plVar5 - (long)__base >> 3;
  if (0 < synthcount) {
    sorted_symcount = synthcount + sorted_symcount;
    paVar12 = synthsyms;
    do {
      *plVar5 = (long)paVar12;
      plVar5 = plVar5 + 1;
      paVar12 = paVar12 + 1;
    } while (plVar5 != __base + sorted_symcount);
  }
  qsort(__base,sorted_symcount,8,compare_symbols);
  init_disassemble_info(&disasm_info,stdout,PTR_fprintf_00154fa8);
  disasm_info.print_address_func = objdump_print_address;
  aux.require_sec = 0;
  aux.dynrelbuf = (arelent **)0x0;
  aux.dynrelcount = 0;
  aux.reloc = (arelent *)0x0;
  disasm_info.symbol_at_address_func = objdump_symbol_at_address;
  aux.abfd = abfd;
  disasm_info.application_data = &aux;
  if (machine != (char *)0x0) {
    disasm_info.application_data = &aux;
    pbVar6 = (bfd_arch_info *)bfd_scan_arch();
    pcVar9 = machine;
    if (pbVar6 == (bfd_arch_info *)0x0) {
      format = (char *)dcgettext(0,"can\'t use supplied machine %s",5);
                    /* WARNING: Subroutine does not return */
      fatal(format,pcVar9);
    }
    abfd->arch_info = pbVar6;
  }
  if (endian != BFD_ENDIAN_UNKNOWN) {
    pbVar7 = (bfd_target *)xmalloc(0x370);
    pbVar3 = abfd->xvec;
    puVar18 = (undefined8 *)((ulong)&pbVar7->flavour & 0xfffffffffffffff8);
    pbVar7->name = pbVar3->name;
    pbVar7->backend_data = pbVar3->backend_data;
    lVar13 = (long)pbVar7 - (long)puVar18;
    puVar16 = (undefined8 *)((long)pbVar3 - lVar13);
    for (uVar11 = (ulong)((int)lVar13 + 0x370U >> 3); uVar11 != 0; uVar11 = uVar11 - 1) {
      *puVar18 = *puVar16;
      puVar16 = puVar16 + (ulong)bVar24 * -2 + 1;
      puVar18 = puVar18 + (ulong)bVar24 * -2 + 1;
    }
    abfd->xvec = pbVar7;
    pbVar7->byteorder = endian;
  }
  uVar8 = bfd_get_mach(abfd);
  bVar1 = abfd->xvec->byteorder;
  uVar4 = bfd_get_arch(abfd);
  aux.disassemble_fn = (disassembler_ftype)disassembler(uVar4,bVar1 == BFD_ENDIAN_BIG,uVar8,abfd);
  if (aux.disassemble_fn == (disassembler_ftype)0x0) {
    uVar4 = bfd_get_arch(abfd);
    uVar8 = bfd_printable_arch_mach(uVar4,0);
    pcVar9 = (char *)dcgettext(0,"can\'t disassemble for architecture %s\n",5);
    non_fatal(pcVar9,uVar8);
    exit_status = 1;
    return;
  }
  disasm_info.flavour = abfd->xvec->flavour;
  disasm_info.arch = bfd_get_arch(abfd);
  disasm_info.mach = bfd_get_mach(abfd);
  disasm_info.disassembler_options = disassembler_options;
  disasm_info.octets_per_byte = bfd_octets_per_byte(abfd);
  disasm_info.disassembler_needs_relocs = 0;
  disasm_info.skip_zeroes = 8;
  disasm_info.skip_zeroes_at_end = 3;
  bVar1 = abfd->xvec->byteorder;
  if (bVar1 == BFD_ENDIAN_BIG) {
    disasm_info.endian = BFD_ENDIAN_BIG;
    disasm_info.display_endian = BFD_ENDIAN_BIG;
  }
  else if (bVar1 == BFD_ENDIAN_LITTLE) {
    disasm_info.endian = BFD_ENDIAN_LITTLE;
    disasm_info.display_endian = BFD_ENDIAN_LITTLE;
  }
  else {
    disasm_info.endian = BFD_ENDIAN_UNKNOWN;
  }
  disassemble_init_for_target(&disasm_info);
  lVar13 = (*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound)(abfd);
  if (lVar13 < 0) {
    if (dump_dynamic_reloc_info != 0) {
LAB_00109bee:
                    /* WARNING: Subroutine does not return */
      bfd_fatal(abfd->filename);
    }
  }
  else if (lVar13 != 0) {
    aux.dynrelbuf = (arelent **)xmalloc(lVar13);
    aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);
    if (aux.dynrelcount < 0) goto LAB_00109bee;
    qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);
  }
  disasm_info.symtab = sorted_syms;
  disasm_info.symtab_size = (int)sorted_symcount;
  bfd_map_over_sections(abfd,disassemble_section,&disasm_info);
  if (aux.dynrelbuf != (arelent **)0x0) {
    free(aux.dynrelbuf);
  }
  free(sorted_syms);
  return;
}



void FUN_001097d0(undefined8 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  long *__base;
  long *plVar3;
  long lVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  ulong uVar9;
  long lVar10;
  void *__src;
  byte *pbVar11;
  byte *pbVar12;
  undefined8 *puVar13;
  byte *pbVar14;
  undefined8 *puVar15;
  long *plVar16;
  long *plVar17;
  bool bVar18;
  bool bVar19;
  bool bVar20;
  byte bVar21;
  undefined8 *local_168 [2];
  undefined4 local_158;
  void *local_150;
  size_t local_148;
  long local_140;
  undefined8 local_138;
  undefined1 local_128 [16];
  undefined1 *local_118;
  undefined4 local_110;
  undefined4 local_10c;
  undefined8 local_108;
  undefined4 local_100;
  void *local_d8;
  undefined4 local_cc;
  code *local_a8;
  code *local_a0;
  undefined4 local_70;
  undefined4 local_6c;
  undefined8 local_68;
  undefined4 local_60;
  undefined8 local_40;
  
  bVar21 = 0;
  DAT_00157238 = 0;
  DAT_00157248 = 0;
  DAT_00157244 = 0xffffffff;
  DAT_00157298 = DAT_001572a8;
  if (DAT_001572a8 == 0) {
    DAT_00157298 = DAT_00157278;
  }
  DAT_00157240 = 0;
  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);
  lVar10 = DAT_00157298;
  __src = DAT_00157290;
  if (DAT_001572a8 != 0) {
    __src = DAT_001572b0;
  }
  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);
  plVar3 = __base;
  plVar16 = __base;
LAB_00109890:
  lVar10 = lVar10 + -1;
  plVar17 = plVar16;
  if (-1 < lVar10) {
    while( true ) {
      plVar16 = plVar17 + 1;
      lVar4 = *plVar17;
      pbVar12 = *(byte **)(lVar4 + 8);
      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;
      bVar18 = false;
      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;
      if (!bVar20) {
        lVar8 = 4;
        pbVar11 = pbVar12;
        pbVar14 = &DAT_0013d5f3;
        do {
          if (lVar8 == 0) break;
          lVar8 = lVar8 + -1;
          bVar18 = *pbVar11 < *pbVar14;
          bVar20 = *pbVar11 == *pbVar14;
          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;
          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;
        } while (bVar20);
        bVar19 = false;
        bVar18 = (!bVar18 && !bVar20) == bVar18;
        if (!bVar18) {
          lVar8 = 5;
          pbVar11 = &DAT_0013d5f8;
          do {
            if (lVar8 == 0) break;
            lVar8 = lVar8 + -1;
            bVar19 = *pbVar12 < *pbVar11;
            bVar18 = *pbVar12 == *pbVar11;
            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;
            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;
          } while (bVar18);
          if ((!bVar19 && !bVar18) != bVar19) break;
        }
      }
      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||
         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;
      *plVar3 = lVar4;
      plVar3 = plVar3 + 1;
      lVar10 = lVar10 + -1;
      plVar17 = plVar16;
      if (lVar10 < 0) goto LAB_00109904;
    }
    goto LAB_00109890;
  }
LAB_00109904:
  DAT_00157298 = (long)plVar3 - (long)__base >> 3;
  if (0 < DAT_00157280) {
    DAT_00157298 = DAT_00157280 + DAT_00157298;
    lVar10 = DAT_00157288;
    do {
      *plVar3 = lVar10;
      plVar3 = plVar3 + 1;
      lVar10 = lVar10 + 0x30;
    } while (plVar3 != __base + DAT_00157298);
  }
  qsort(__base,DAT_00157298,8,FUN_00109c90);
  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);
  local_a8 = FUN_001091e0;
  local_158 = 0;
  local_150 = (void *)0x0;
  local_148 = 0;
  local_138 = 0;
  local_a0 = FUN_00108a80;
  local_168[0] = param_1;
  local_118 = (undefined1 *)local_168;
  if (DAT_001572c0 != 0) {
    local_118 = (undefined1 *)local_168;
    lVar4 = bfd_scan_arch();
    lVar10 = DAT_001572c0;
    if (lVar4 == 0) {
      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);
                    /* WARNING: Subroutine does not return */
      FUN_00136590(uVar6,lVar10);
    }
    param_1[0x18] = lVar4;
  }
  if (DAT_00155450 != 2) {
    puVar5 = (undefined8 *)xmalloc(0x370);
    puVar13 = (undefined8 *)param_1[1];
    *puVar5 = *puVar13;
    puVar5[0x6d] = puVar13[0x6d];
    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);
    puVar13 = (undefined8 *)((long)puVar13 - lVar10);
    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);
    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {
      *puVar15 = *puVar13;
      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;
      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;
    }
    param_1[1] = puVar5;
    *(int *)((long)puVar5 + 0xc) = DAT_00155450;
  }
  uVar6 = bfd_get_mach(param_1);
  iVar1 = *(int *)(param_1[1] + 0xc);
  uVar2 = bfd_get_arch(param_1);
  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);
  if (local_140 == 0) {
    uVar2 = bfd_get_arch(param_1);
    uVar6 = bfd_printable_arch_mach(uVar2,0);
    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);
    FUN_00136630(uVar7,uVar6);
    DAT_00157388 = 1;
    return;
  }
  local_110 = *(undefined4 *)(param_1[1] + 8);
  local_10c = bfd_get_arch(param_1);
  local_108 = bfd_get_mach(param_1);
  local_40 = DAT_001572b8;
  local_6c = bfd_octets_per_byte(param_1);
  local_60 = 0;
  local_68 = 0x300000008;
  if (*(int *)(param_1[1] + 0xc) == 0) {
    local_100 = 0;
    local_70 = 0;
  }
  else if (*(int *)(param_1[1] + 0xc) == 1) {
    local_100 = 1;
    local_70 = 1;
  }
  else {
    local_100 = 2;
  }
  disassemble_init_for_target(local_128);
  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);
  if (lVar10 < 0) {
    if (DAT_00157368 != 0) {
LAB_00109bee:
                    /* WARNING: Subroutine does not return */
      FUN_00136510(*param_1);
    }
  }
  else if (lVar10 != 0) {
    local_150 = (void *)xmalloc(lVar10);
    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);
    if ((long)local_148 < 0) goto LAB_00109bee;
    qsort(local_150,local_148,8,FUN_00108380);
  }
  local_d8 = DAT_001572a0;
  local_cc = (undefined4)DAT_00157298;
  bfd_map_over_sections(param_1,FUN_0010d910,local_128);
  if (local_150 != (void *)0x0) {
    free(local_150);
  }
  free(DAT_001572a0);
  return;
}


PUSH R13
PUSH R12
PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x148
MOV RDI,qword ptr [0x001572a8]
MOV qword ptr [0x00157238],0x0
MOV qword ptr [0x00157248],0x0
MOV dword ptr [0x00157244],0xffffffff
TEST RDI,RDI
CMOVZ RDI,qword ptr [0x00157278]
MOV dword ptr [0x00157240],0x0
MOV qword ptr [0x00157298],RDI
ADD RDI,qword ptr [0x00157280]
SHL RDI,0x3
CALL 0x00107350
MOV RBX,qword ptr [0x00157298]
CMP qword ptr [0x001572a8],0x0
MOV R10,RAX
MOV qword ptr [0x001572a0],RAX
MOV RSI,qword ptr [0x00157290]
LEA RDX,[RBX*0x8]
JZ 0x00109864
MOV RSI,qword ptr [0x001572b0]
MOV RDI,R10
LEA R12,[0x13d5f3]
LEA R13,[0x13d5f8]
CALL 0x001074b0
LEA R11,[0x156ed8]
MOV R10,RAX
MOV R9,RAX
NOP word ptr [RAX + RAX*0x1]
SUB RBX,0x1
JS 0x00109904
ADD R9,0x8
MOV R8,qword ptr [R9 + -0x8]
MOV RDX,qword ptr [R8 + 0x8]
TEST RDX,RDX
JZ 0x00109890
CMP byte ptr [RDX],0x0
JZ 0x00109890
TEST dword ptr [R8 + 0x18],0x104
JZ 0x001098e8
MOV ECX,0x4
MOV RSI,RDX
MOV RDI,R12
CMPSB.REPE RDI,RSI
SETA CL
SBB CL,0x0
TEST CL,CL
JZ 0x001098e8
MOV RSI,RDX
MOV ECX,0x5
MOV RDI,R13
CMPSB.REPE RDI,RSI
SETA DL
SBB DL,0x0
TEST DL,DL
JNZ 0x00109890
NOP dword ptr [RAX]
MOV RDX,qword ptr [R8 + 0x20]
CMP RDX,R11
JZ 0x00109890
TEST byte ptr [RDX + 0x21],0x10
JNZ 0x00109890
MOV qword ptr [RAX],R8
ADD RAX,0x8
SUB RBX,0x1
JNS 0x00109896
MOV RSI,RAX
MOV RDI,qword ptr [0x00157280]
SUB RSI,R10
SAR RSI,0x3
MOV qword ptr [0x00157298],RSI
TEST RDI,RDI
JLE 0x00109947
LEA RSI,[RDI + RSI*0x1]
MOV RDX,qword ptr [0x00157288]
LEA RCX,[R10 + RSI*0x8]
MOV qword ptr [RAX],RDX
ADD RAX,0x8
ADD RDX,0x30
CMP RAX,RCX
JNZ 0x00109930
MOV qword ptr [0x00157298],RSI
MOV RDI,R10
MOV EDX,0x8
LEA RBX,[RSP + 0x40]
LEA RCX,[0x109c90]
CALL 0x00107140
MOV RDX,qword ptr [0x00154fa8]
MOV RSI,qword ptr [0x00156da0]
MOV RDI,RBX
CALL 0x00107800
MOV RAX,RSP
MOV RDI,qword ptr [0x001572c0]
MOV qword ptr [RSP],RBP
MOV qword ptr [RSP + 0x50],RAX
LEA RAX,[0x1091e0]
MOV qword ptr [RSP + 0xc0],RAX
LEA RAX,[0x108a80]
MOV dword ptr [RSP + 0x10],0x0
MOV qword ptr [RSP + 0x18],0x0
MOV qword ptr [RSP + 0x20],0x0
MOV qword ptr [RSP + 0x30],0x0
MOV qword ptr [RSP + 0xc8],RAX
TEST RDI,RDI
JZ 0x001099e4
CALL 0x00107660
TEST RAX,RAX
JZ 0x00109c68
MOV qword ptr [RBP + 0xc0],RAX
CMP dword ptr [0x00155450],0x2
JZ 0x00109a39
MOV EDI,0x370
CALL 0x00107350
MOV RSI,qword ptr [RBP + 0x8]
LEA RDI,[RAX + 0x8]
MOV RDX,qword ptr [RSI]
AND RDI,-0x8
MOV qword ptr [RAX],RDX
MOV RDX,qword ptr [RSI + 0x368]
MOV qword ptr [RAX + 0x368],RDX
MOV RDX,RAX
SUB RDX,RDI
LEA ECX,[RDX + 0x370]
SUB RSI,RDX
SHR ECX,0x3
MOVSQ.REP RDI,RSI
MOV qword ptr [RBP + 0x8],RAX
MOV EDX,dword ptr [0x00155450]
MOV dword ptr [RAX + 0xc],EDX
MOV RDI,RBP
XOR R12D,R12D
CALL 0x001075b0
MOV RDI,RBP
MOV R13,RAX
MOV RAX,qword ptr [RBP + 0x8]
MOV EDX,dword ptr [RAX + 0xc]
TEST EDX,EDX
SETZ R12B
CALL 0x001074f0
MOV RCX,RBP
MOV RDX,R13
MOV ESI,R12D
MOV EDI,EAX
CALL 0x001075a0
MOV qword ptr [RSP + 0x28],RAX
TEST RAX,RAX
JZ 0x00109c00
MOV RAX,qword ptr [RBP + 0x8]
MOV RDI,RBP
MOV EAX,dword ptr [RAX + 0x8]
MOV dword ptr [RSP + 0x58],EAX
CALL 0x001074f0
MOV RDI,RBP
MOV dword ptr [RSP + 0x5c],EAX
CALL 0x001075b0
MOV RDI,RBP
MOV qword ptr [RSP + 0x60],RAX
MOV RAX,qword ptr [0x001572b8]
MOV qword ptr [RSP + 0x128],RAX
CALL 0x001074a0
MOV dword ptr [RSP + 0x108],0x0
MOV dword ptr [RSP + 0xfc],EAX
MOV RAX,0x300000008
MOV qword ptr [RSP + 0x100],RAX
MOV RAX,qword ptr [RBP + 0x8]
MOV EAX,dword ptr [RAX + 0xc]
TEST EAX,EAX
JZ 0x00109bc0
CMP EAX,0x1
JZ 0x00109c50
MOV dword ptr [RSP + 0x68],0x2
MOV RDI,RBX
CALL 0x00107330
MOV RAX,qword ptr [RBP + 0x8]
MOV RDI,RBP
CALL qword ptr [RAX + 0x350]
TEST RAX,RAX
JS 0x00109be0
JZ 0x00109b64
MOV RDI,RAX
CALL 0x00107350
MOV RCX,qword ptr [RBP + 0x8]
MOV RDX,qword ptr [0x00157290]
MOV RDI,RBP
MOV qword ptr [RSP + 0x18],RAX
MOV RSI,RAX
CALL qword ptr [RCX + 0x358]
MOV qword ptr [RSP + 0x20],RAX
TEST RAX,RAX
JS 0x00109bee
MOV RDI,qword ptr [RSP + 0x18]
LEA RCX,[0x108380]
MOV EDX,0x8
MOV RSI,RAX
CALL 0x00107140
MOV RAX,qword ptr [0x001572a0]
MOV RDI,RBP
MOV RDX,RBX
LEA RSI,[0x10d910]
MOV qword ptr [RSP + 0x90],RAX
MOV RAX,qword ptr [0x00157298]
MOV dword ptr [RSP + 0x9c],EAX
CALL 0x001077d0
MOV RDI,qword ptr [RSP + 0x18]
TEST RDI,RDI
JZ 0x00109ba2
CALL 0x00107070
MOV RDI,qword ptr [0x001572a0]
CALL 0x00107070
ADD RSP,0x148
POP RBX
POP RBP
POP R12
POP R13
RET
MOV dword ptr [RSP + 0x68],0x0
MOV dword ptr [RSP + 0xf8],0x0
JMP 0x00109af9
MOV EAX,dword ptr [0x00157368]
TEST EAX,EAX
JZ 0x00109b64
MOV RDI,qword ptr [RBP]
CALL 0x00136510
MOV RDI,RBP
CALL 0x001074f0
XOR ESI,ESI
MOV EDI,EAX
CALL 0x00107520
MOV EDX,0x5
LEA RSI,[0x13d0d0]
XOR EDI,EDI
MOV RBX,RAX
CALL 0x00107230
MOV RSI,RBX
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00136630
MOV dword ptr [0x00157388],0x1
ADD RSP,0x148
POP RBX
POP RBP
POP R12
POP R13
RET
MOV dword ptr [RSP + 0x68],0x1
MOV dword ptr [RSP + 0xf8],0x1
JMP 0x00109af9
MOV RBX,qword ptr [0x001572c0]
LEA RSI,[0x13d5fd]
XOR EDI,EDI
MOV EDX,0x5
CALL 0x00107230
MOV RDI,RAX
MOV RSI,RBX
XOR EAX,EAX
CALL 0x00136590
(translation_unit "void FUN_001097d0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long *__base;\n  long *plVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  ulong uVar9;\n  long lVar10;\n  void *__src;\n  byte *pbVar11;\n  byte *pbVar12;\n  undefined8 *puVar13;\n  byte *pbVar14;\n  undefined8 *puVar15;\n  long *plVar16;\n  long *plVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  undefined8 *local_168 [2];\n  undefined4 local_158;\n  void *local_150;\n  size_t local_148;\n  long local_140;\n  undefined8 local_138;\n  undefined1 local_128 [16];\n  undefined1 *local_118;\n  undefined4 local_110;\n  undefined4 local_10c;\n  undefined8 local_108;\n  undefined4 local_100;\n  void *local_d8;\n  undefined4 local_cc;\n  code *local_a8;\n  code *local_a0;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined8 local_68;\n  undefined4 local_60;\n  undefined8 local_40;\n  \n  bVar21 = 0;\n  DAT_00157238 = 0;\n  DAT_00157248 = 0;\n  DAT_00157244 = 0xffffffff;\n  DAT_00157298 = DAT_001572a8;\n  if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }\n  DAT_00157240 = 0;\n  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);\n  lVar10 = DAT_00157298;\n  __src = DAT_00157290;\n  if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }\n  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);\n  plVar3 = __base;\n  plVar16 = __base;\nLAB_00109890:\n  lVar10 = lVar10 + -1;\n  plVar17 = plVar16;\n  if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;\n  if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }\n  qsort(__base,DAT_00157298,8,FUN_00109c90);\n  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);\n  local_a8 = FUN_001091e0;\n  local_158 = 0;\n  local_150 = (void *)0x0;\n  local_148 = 0;\n  local_138 = 0;\n  local_a0 = FUN_00108a80;\n  local_168[0] = param_1;\n  local_118 = (undefined1 *)local_168;\n  if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }\n  if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }\n  uVar6 = bfd_get_mach(param_1);\n  iVar1 = *(int *)(param_1[1] + 0xc);\n  uVar2 = bfd_get_arch(param_1);\n  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);\n  if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }\n  local_110 = *(undefined4 *)(param_1[1] + 8);\n  local_10c = bfd_get_arch(param_1);\n  local_108 = bfd_get_mach(param_1);\n  local_40 = DAT_001572b8;\n  local_6c = bfd_octets_per_byte(param_1);\n  local_60 = 0;\n  local_68 = 0x300000008;\n  if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }\n  disassemble_init_for_target(local_128);\n  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);\n  if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }\n  local_d8 = DAT_001572a0;\n  local_cc = (undefined4)DAT_00157298;\n  bfd_map_over_sections(param_1,FUN_0010d910,local_128);\n  if (local_150 != (void *)0x0) {\n    free(local_150);\n  }\n  free(DAT_001572a0);\n  return;\n}\n\n" (function_definition "void FUN_001097d0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long *__base;\n  long *plVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  ulong uVar9;\n  long lVar10;\n  void *__src;\n  byte *pbVar11;\n  byte *pbVar12;\n  undefined8 *puVar13;\n  byte *pbVar14;\n  undefined8 *puVar15;\n  long *plVar16;\n  long *plVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  undefined8 *local_168 [2];\n  undefined4 local_158;\n  void *local_150;\n  size_t local_148;\n  long local_140;\n  undefined8 local_138;\n  undefined1 local_128 [16];\n  undefined1 *local_118;\n  undefined4 local_110;\n  undefined4 local_10c;\n  undefined8 local_108;\n  undefined4 local_100;\n  void *local_d8;\n  undefined4 local_cc;\n  code *local_a8;\n  code *local_a0;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined8 local_68;\n  undefined4 local_60;\n  undefined8 local_40;\n  \n  bVar21 = 0;\n  DAT_00157238 = 0;\n  DAT_00157248 = 0;\n  DAT_00157244 = 0xffffffff;\n  DAT_00157298 = DAT_001572a8;\n  if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }\n  DAT_00157240 = 0;\n  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);\n  lVar10 = DAT_00157298;\n  __src = DAT_00157290;\n  if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }\n  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);\n  plVar3 = __base;\n  plVar16 = __base;\nLAB_00109890:\n  lVar10 = lVar10 + -1;\n  plVar17 = plVar16;\n  if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;\n  if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }\n  qsort(__base,DAT_00157298,8,FUN_00109c90);\n  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);\n  local_a8 = FUN_001091e0;\n  local_158 = 0;\n  local_150 = (void *)0x0;\n  local_148 = 0;\n  local_138 = 0;\n  local_a0 = FUN_00108a80;\n  local_168[0] = param_1;\n  local_118 = (undefined1 *)local_168;\n  if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }\n  if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }\n  uVar6 = bfd_get_mach(param_1);\n  iVar1 = *(int *)(param_1[1] + 0xc);\n  uVar2 = bfd_get_arch(param_1);\n  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);\n  if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }\n  local_110 = *(undefined4 *)(param_1[1] + 8);\n  local_10c = bfd_get_arch(param_1);\n  local_108 = bfd_get_mach(param_1);\n  local_40 = DAT_001572b8;\n  local_6c = bfd_octets_per_byte(param_1);\n  local_60 = 0;\n  local_68 = 0x300000008;\n  if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }\n  disassemble_init_for_target(local_128);\n  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);\n  if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }\n  local_d8 = DAT_001572a0;\n  local_cc = (undefined4)DAT_00157298;\n  bfd_map_over_sections(param_1,FUN_0010d910,local_128);\n  if (local_150 != (void *)0x0) {\n    free(local_150);\n  }\n  free(DAT_001572a0);\n  return;\n}" primitive_type (function_declarator "FUN_001097d0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  long *__base;\n  long *plVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  ulong uVar9;\n  long lVar10;\n  void *__src;\n  byte *pbVar11;\n  byte *pbVar12;\n  undefined8 *puVar13;\n  byte *pbVar14;\n  undefined8 *puVar15;\n  long *plVar16;\n  long *plVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  undefined8 *local_168 [2];\n  undefined4 local_158;\n  void *local_150;\n  size_t local_148;\n  long local_140;\n  undefined8 local_138;\n  undefined1 local_128 [16];\n  undefined1 *local_118;\n  undefined4 local_110;\n  undefined4 local_10c;\n  undefined8 local_108;\n  undefined4 local_100;\n  void *local_d8;\n  undefined4 local_cc;\n  code *local_a8;\n  code *local_a0;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined8 local_68;\n  undefined4 local_60;\n  undefined8 local_40;\n  \n  bVar21 = 0;\n  DAT_00157238 = 0;\n  DAT_00157248 = 0;\n  DAT_00157244 = 0xffffffff;\n  DAT_00157298 = DAT_001572a8;\n  if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }\n  DAT_00157240 = 0;\n  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);\n  lVar10 = DAT_00157298;\n  __src = DAT_00157290;\n  if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }\n  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);\n  plVar3 = __base;\n  plVar16 = __base;\nLAB_00109890:\n  lVar10 = lVar10 + -1;\n  plVar17 = plVar16;\n  if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;\n  if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }\n  qsort(__base,DAT_00157298,8,FUN_00109c90);\n  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);\n  local_a8 = FUN_001091e0;\n  local_158 = 0;\n  local_150 = (void *)0x0;\n  local_148 = 0;\n  local_138 = 0;\n  local_a0 = FUN_00108a80;\n  local_168[0] = param_1;\n  local_118 = (undefined1 *)local_168;\n  if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }\n  if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }\n  uVar6 = bfd_get_mach(param_1);\n  iVar1 = *(int *)(param_1[1] + 0xc);\n  uVar2 = bfd_get_arch(param_1);\n  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);\n  if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }\n  local_110 = *(undefined4 *)(param_1[1] + 8);\n  local_10c = bfd_get_arch(param_1);\n  local_108 = bfd_get_mach(param_1);\n  local_40 = DAT_001572b8;\n  local_6c = bfd_octets_per_byte(param_1);\n  local_60 = 0;\n  local_68 = 0x300000008;\n  if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }\n  disassemble_init_for_target(local_128);\n  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);\n  if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }\n  local_d8 = DAT_001572a0;\n  local_cc = (undefined4)DAT_00157298;\n  bfd_map_over_sections(param_1,FUN_0010d910,local_128);\n  if (local_150 != (void *)0x0) {\n    free(local_150);\n  }\n  free(DAT_001572a0);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "long *__base;" (sized_type_specifier "long" long) (pointer_declarator "*__base" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "undefined8 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "long *plVar16;" (sized_type_specifier "long" long) (pointer_declarator "*plVar16" * identifier) ;) (declaration "long *plVar17;" (sized_type_specifier "long" long) (pointer_declarator "*plVar17" * identifier) ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "undefined8 *local_168 [2];" type_identifier (pointer_declarator "*local_168 [2]" * (array_declarator "local_168 [2]" identifier [ number_literal ])) ;) (declaration "undefined4 local_158;" type_identifier identifier ;) (declaration "void *local_150;" primitive_type (pointer_declarator "*local_150" * identifier) ;) (declaration "size_t local_148;" primitive_type identifier ;) (declaration "long local_140;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_138;" type_identifier identifier ;) (declaration "undefined1 local_128 [16];" type_identifier (array_declarator "local_128 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_118;" type_identifier (pointer_declarator "*local_118" * identifier) ;) (declaration "undefined4 local_110;" type_identifier identifier ;) (declaration "undefined4 local_10c;" type_identifier identifier ;) (declaration "undefined8 local_108;" type_identifier identifier ;) (declaration "undefined4 local_100;" type_identifier identifier ;) (declaration "void *local_d8;" primitive_type (pointer_declarator "*local_d8" * identifier) ;) (declaration "undefined4 local_cc;" type_identifier identifier ;) (declaration "code *local_a8;" type_identifier (pointer_declarator "*local_a8" * identifier) ;) (declaration "code *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "DAT_00157238 = 0;" (assignment_expression "DAT_00157238 = 0" identifier = number_literal) ;) (expression_statement "DAT_00157248 = 0;" (assignment_expression "DAT_00157248 = 0" identifier = number_literal) ;) (expression_statement "DAT_00157244 = 0xffffffff;" (assignment_expression "DAT_00157244 = 0xffffffff" identifier = number_literal) ;) (expression_statement "DAT_00157298 = DAT_001572a8;" (assignment_expression "DAT_00157298 = DAT_001572a8" identifier = identifier) ;) (if_statement "if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }" if (parenthesized_expression "(DAT_001572a8 == 0)" ( (binary_expression "DAT_001572a8 == 0" identifier == number_literal) )) (compound_statement "{\n    DAT_00157298 = DAT_00157278;\n  }" { (expression_statement "DAT_00157298 = DAT_00157278;" (assignment_expression "DAT_00157298 = DAT_00157278" identifier = identifier) ;) })) (expression_statement "DAT_00157240 = 0;" (assignment_expression "DAT_00157240 = 0" identifier = number_literal) ;) (expression_statement "DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);" (assignment_expression "DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8)" identifier = (cast_expression "(void *)xmalloc((DAT_00157298 + DAT_00157280) * 8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((DAT_00157298 + DAT_00157280) * 8)" identifier (argument_list "((DAT_00157298 + DAT_00157280) * 8)" ( (binary_expression "(DAT_00157298 + DAT_00157280) * 8" (parenthesized_expression "(DAT_00157298 + DAT_00157280)" ( (binary_expression "DAT_00157298 + DAT_00157280" identifier + identifier) )) * number_literal) ))))) ;) (expression_statement "lVar10 = DAT_00157298;" (assignment_expression "lVar10 = DAT_00157298" identifier = identifier) ;) (expression_statement "__src = DAT_00157290;" (assignment_expression "__src = DAT_00157290" identifier = identifier) ;) (if_statement "if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }" if (parenthesized_expression "(DAT_001572a8 != 0)" ( (binary_expression "DAT_001572a8 != 0" identifier != number_literal) )) (compound_statement "{\n    __src = DAT_001572b0;\n  }" { (expression_statement "__src = DAT_001572b0;" (assignment_expression "__src = DAT_001572b0" identifier = identifier) ;) })) (expression_statement "__base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);" (assignment_expression "__base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8)" identifier = (cast_expression "(long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(DAT_001572a0,__src,DAT_00157298 * 8)" identifier (argument_list "(DAT_001572a0,__src,DAT_00157298 * 8)" ( identifier , identifier , (binary_expression "DAT_00157298 * 8" identifier * number_literal) ))))) ;) (expression_statement "plVar3 = __base;" (assignment_expression "plVar3 = __base" identifier = identifier) ;) (expression_statement "plVar16 = __base;" (assignment_expression "plVar16 = __base" identifier = identifier) ;) (labeled_statement "LAB_00109890:\n  lVar10 = lVar10 + -1;" statement_identifier : (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;)) (expression_statement "plVar17 = plVar16;" (assignment_expression "plVar17 = plVar16" identifier = identifier) ;) (if_statement "if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }" if (parenthesized_expression "(-1 < lVar10)" ( (binary_expression "-1 < lVar10" number_literal < identifier) )) (compound_statement "{\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }" { (while_statement "while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }" { (expression_statement "plVar16 = plVar17 + 1;" (assignment_expression "plVar16 = plVar17 + 1" identifier = (binary_expression "plVar17 + 1" identifier + number_literal)) ;) (expression_statement "lVar4 = *plVar17;" (assignment_expression "lVar4 = *plVar17" identifier = (pointer_expression "*plVar17" * identifier)) ;) (expression_statement "pbVar12 = *(byte **)(lVar4 + 8);" (assignment_expression "pbVar12 = *(byte **)(lVar4 + 8)" identifier = (pointer_expression "*(byte **)(lVar4 + 8)" * (cast_expression "(byte **)(lVar4 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;" if (parenthesized_expression "((pbVar12 == (byte *)0x0) || (*pbVar12 == 0))" ( (binary_expression "(pbVar12 == (byte *)0x0) || (*pbVar12 == 0)" (parenthesized_expression "(pbVar12 == (byte *)0x0)" ( (binary_expression "pbVar12 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pbVar12 == 0)" ( (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" * identifier) == number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;" (assignment_expression "bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0" identifier = (binary_expression "(*(uint *)(lVar4 + 0x18) & 0x104) == 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x18) & 0x104)" ( (binary_expression "*(uint *)(lVar4 + 0x18) & 0x104" (pointer_expression "*(uint *)(lVar4 + 0x18)" * (cast_expression "(uint *)(lVar4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }" { (expression_statement "lVar8 = 4;" (assignment_expression "lVar8 = 4" identifier = number_literal) ;) (expression_statement "pbVar11 = pbVar12;" (assignment_expression "pbVar11 = pbVar12" identifier = identifier) ;) (expression_statement "pbVar14 = &DAT_0013d5f3;" (assignment_expression "pbVar14 = &DAT_0013d5f3" identifier = (pointer_expression "&DAT_0013d5f3" & identifier)) ;) (do_statement "do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);" do (compound_statement "{\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar11 < *pbVar14;" (assignment_expression "bVar18 = *pbVar11 < *pbVar14" identifier = (binary_expression "*pbVar11 < *pbVar14" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar20 = *pbVar11 == *pbVar14;" (assignment_expression "bVar20 = *pbVar11 == *pbVar14" identifier = (binary_expression "*pbVar11 == *pbVar14" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "pbVar14 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar14 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar18 && !bVar20) == bVar18;" (assignment_expression "bVar18 = (!bVar18 && !bVar20) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar20) == bVar18" (parenthesized_expression "(!bVar18 && !bVar20)" ( (binary_expression "!bVar18 && !bVar20" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (compound_statement "{\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }" { (expression_statement "lVar8 = 5;" (assignment_expression "lVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = &DAT_0013d5f8;" (assignment_expression "pbVar11 = &DAT_0013d5f8" identifier = (pointer_expression "&DAT_0013d5f8" & identifier)) ;) (do_statement "do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);" do (compound_statement "{\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar12 < *pbVar11;" (assignment_expression "bVar19 = *pbVar12 < *pbVar11" identifier = (binary_expression "*pbVar12 < *pbVar11" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar11;" (assignment_expression "bVar18 = *pbVar12 == *pbVar11" identifier = (binary_expression "*pbVar12 == *pbVar11" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (if_statement "if ((!bVar19 && !bVar18) != bVar19) break;" if (parenthesized_expression "((!bVar19 && !bVar18) != bVar19)" ( (binary_expression "(!bVar19 && !bVar18) != bVar19" (parenthesized_expression "(!bVar19 && !bVar18)" ( (binary_expression "!bVar19 && !bVar18" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) != identifier) )) (break_statement "break;" break ;)) })) })) (if_statement "if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;" if (parenthesized_expression "((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0))" ( (binary_expression "(*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)" (parenthesized_expression "(*(long *)(lVar4 + 0x20) == 0x156ed8)" ( (binary_expression "*(long *)(lVar4 + 0x20) == 0x156ed8" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)" ( (binary_expression "(*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10)" ( (binary_expression "*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10" (pointer_expression "*(byte *)(*(long *)(lVar4 + 0x20) + 0x21)" * (cast_expression "(byte *)(*(long *)(lVar4 + 0x20) + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x20) + 0x21)" ( (binary_expression "*(long *)(lVar4 + 0x20) + 0x21" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "*plVar3 = lVar4;" (assignment_expression "*plVar3 = lVar4" (pointer_expression "*plVar3" * identifier) = identifier) ;) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" identifier = (binary_expression "plVar3 + 1" identifier + number_literal)) ;) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "plVar17 = plVar16;" (assignment_expression "plVar17 = plVar16" identifier = identifier) ;) (if_statement "if (lVar10 < 0) goto LAB_00109904;" if (parenthesized_expression "(lVar10 < 0)" ( (binary_expression "lVar10 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00109904;" goto statement_identifier ;)) })) (goto_statement "goto LAB_00109890;" goto statement_identifier ;) })) (labeled_statement "LAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;" statement_identifier : (expression_statement "DAT_00157298 = (long)plVar3 - (long)__base >> 3;" (assignment_expression "DAT_00157298 = (long)plVar3 - (long)__base >> 3" identifier = (binary_expression "(long)plVar3 - (long)__base >> 3" (binary_expression "(long)plVar3 - (long)__base" (cast_expression "(long)plVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;)) (if_statement "if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }" if (parenthesized_expression "(0 < DAT_00157280)" ( (binary_expression "0 < DAT_00157280" number_literal < identifier) )) (compound_statement "{\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }" { (expression_statement "DAT_00157298 = DAT_00157280 + DAT_00157298;" (assignment_expression "DAT_00157298 = DAT_00157280 + DAT_00157298" identifier = (binary_expression "DAT_00157280 + DAT_00157298" identifier + identifier)) ;) (expression_statement "lVar10 = DAT_00157288;" (assignment_expression "lVar10 = DAT_00157288" identifier = identifier) ;) (do_statement "do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);" do (compound_statement "{\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    }" { (expression_statement "*plVar3 = lVar10;" (assignment_expression "*plVar3 = lVar10" (pointer_expression "*plVar3" * identifier) = identifier) ;) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" identifier = (binary_expression "plVar3 + 1" identifier + number_literal)) ;) (expression_statement "lVar10 = lVar10 + 0x30;" (assignment_expression "lVar10 = lVar10 + 0x30" identifier = (binary_expression "lVar10 + 0x30" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar3 != __base + DAT_00157298)" ( (binary_expression "plVar3 != __base + DAT_00157298" identifier != (binary_expression "__base + DAT_00157298" identifier + identifier)) )) ;) })) (expression_statement "qsort(__base,DAT_00157298,8,FUN_00109c90);" (call_expression "qsort(__base,DAT_00157298,8,FUN_00109c90)" identifier (argument_list "(__base,DAT_00157298,8,FUN_00109c90)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);" (call_expression "init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8)" identifier (argument_list "(local_128,stdout,PTR_fprintf_00154fa8)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_a8 = FUN_001091e0;" (assignment_expression "local_a8 = FUN_001091e0" identifier = identifier) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_150 = (void *)0x0;" (assignment_expression "local_150 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_148 = 0;" (assignment_expression "local_148 = 0" identifier = number_literal) ;) (expression_statement "local_138 = 0;" (assignment_expression "local_138 = 0" identifier = number_literal) ;) (expression_statement "local_a0 = FUN_00108a80;" (assignment_expression "local_a0 = FUN_00108a80" identifier = identifier) ;) (expression_statement "local_168[0] = param_1;" (assignment_expression "local_168[0] = param_1" (subscript_expression "local_168[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_118 = (undefined1 *)local_168;" (assignment_expression "local_118 = (undefined1 *)local_168" identifier = (cast_expression "(undefined1 *)local_168" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }" if (parenthesized_expression "(DAT_001572c0 != 0)" ( (binary_expression "DAT_001572c0 != 0" identifier != number_literal) )) (compound_statement "{\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }" { (expression_statement "local_118 = (undefined1 *)local_168;" (assignment_expression "local_118 = (undefined1 *)local_168" identifier = (cast_expression "(undefined1 *)local_168" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "lVar4 = bfd_scan_arch();" (assignment_expression "lVar4 = bfd_scan_arch()" identifier = (call_expression "bfd_scan_arch()" identifier (argument_list "()" ( )))) ;) (expression_statement "lVar10 = DAT_001572c0;" (assignment_expression "lVar10 = DAT_001572c0" identifier = identifier) ;) (if_statement "if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00136590(uVar6,lVar10);\n    }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      FUN_00136590(uVar6,lVar10);\n    }" { (expression_statement "uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);" (assignment_expression "uVar6 = dcgettext(0,"can\'t use supplied machine %s",5)" identifier = (call_expression "dcgettext(0,"can\'t use supplied machine %s",5)" identifier (argument_list "(0,"can\'t use supplied machine %s",5)" ( number_literal , (string_literal ""can\'t use supplied machine %s"" " string_content escape_sequence string_content ") , number_literal )))) ;) comment (expression_statement "FUN_00136590(uVar6,lVar10);" (call_expression "FUN_00136590(uVar6,lVar10)" identifier (argument_list "(uVar6,lVar10)" ( identifier , identifier ))) ;) })) (expression_statement "param_1[0x18] = lVar4;" (assignment_expression "param_1[0x18] = lVar4" (subscript_expression "param_1[0x18]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }" if (parenthesized_expression "(DAT_00155450 != 2)" ( (binary_expression "DAT_00155450 != 2" identifier != number_literal) )) (compound_statement "{\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }" { (expression_statement "puVar5 = (undefined8 *)xmalloc(0x370);" (assignment_expression "puVar5 = (undefined8 *)xmalloc(0x370)" identifier = (cast_expression "(undefined8 *)xmalloc(0x370)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x370)" identifier (argument_list "(0x370)" ( number_literal ))))) ;) (expression_statement "puVar13 = (undefined8 *)param_1[1];" (assignment_expression "puVar13 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "*puVar5 = *puVar13;" (assignment_expression "*puVar5 = *puVar13" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar5[0x6d] = puVar13[0x6d];" (assignment_expression "puVar5[0x6d] = puVar13[0x6d]" (subscript_expression "puVar5[0x6d]" identifier [ number_literal ]) = (subscript_expression "puVar13[0x6d]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);" (assignment_expression "lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar5 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar13 = (undefined8 *)((long)puVar13 - lVar10);" (assignment_expression "puVar13 = (undefined8 *)((long)puVar13 - lVar10)" identifier = (cast_expression "(undefined8 *)((long)puVar13 - lVar10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar13 - lVar10)" ( (binary_expression "(long)puVar13 - lVar10" (cast_expression "(long)puVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier) )))) ;) (expression_statement "puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);" (assignment_expression "puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" identifier = (cast_expression "(undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar5 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }" for ( (assignment_expression "uVar9 = (ulong)((int)lVar10 + 0x370U >> 3)" identifier = (call_expression "(ulong)((int)lVar10 + 0x370U >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)lVar10 + 0x370U >> 3)" ( (binary_expression "(int)lVar10 + 0x370U >> 3" (binary_expression "(int)lVar10 + 0x370U" (cast_expression "(int)lVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal) )))) ; (binary_expression "uVar9 != 0" identifier != number_literal) ; (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ) (compound_statement "{\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }" { (expression_statement "*puVar15 = *puVar13;" (assignment_expression "*puVar15 = *puVar13" (pointer_expression "*puVar15" * identifier) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "puVar13 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar13 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar15 = puVar15 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "puVar15 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar15 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "param_1[1] = puVar5;" (assignment_expression "param_1[1] = puVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)((long)puVar5 + 0xc) = DAT_00155450;" (assignment_expression "*(int *)((long)puVar5 + 0xc) = DAT_00155450" (pointer_expression "*(int *)((long)puVar5 + 0xc)" * (cast_expression "(int *)((long)puVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0xc)" ( (binary_expression "(long)puVar5 + 0xc" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) })) (expression_statement "uVar6 = bfd_get_mach(param_1);" (assignment_expression "uVar6 = bfd_get_mach(param_1)" identifier = (call_expression "bfd_get_mach(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar1 = *(int *)(param_1[1] + 0xc);" (assignment_expression "iVar1 = *(int *)(param_1[1] + 0xc)" identifier = (pointer_expression "*(int *)(param_1[1] + 0xc)" * (cast_expression "(int *)(param_1[1] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar2 = bfd_get_arch(param_1);" (assignment_expression "uVar2 = bfd_get_arch(param_1)" identifier = (call_expression "bfd_get_arch(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);" (assignment_expression "local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1)" identifier = (call_expression "disassembler(uVar2,iVar1 == 0,uVar6,param_1)" identifier (argument_list "(uVar2,iVar1 == 0,uVar6,param_1)" ( identifier , (binary_expression "iVar1 == 0" identifier == number_literal) , identifier , identifier )))) ;) (if_statement "if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }" if (parenthesized_expression "(local_140 == 0)" ( (binary_expression "local_140 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }" { (expression_statement "uVar2 = bfd_get_arch(param_1);" (assignment_expression "uVar2 = bfd_get_arch(param_1)" identifier = (call_expression "bfd_get_arch(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar6 = bfd_printable_arch_mach(uVar2,0);" (assignment_expression "uVar6 = bfd_printable_arch_mach(uVar2,0)" identifier = (call_expression "bfd_printable_arch_mach(uVar2,0)" identifier (argument_list "(uVar2,0)" ( identifier , number_literal )))) ;) (expression_statement "uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);" (assignment_expression "uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5)" identifier = (call_expression "dcgettext(0,"can\'t disassemble for architecture %s\n",5)" identifier (argument_list "(0,"can\'t disassemble for architecture %s\n",5)" ( number_literal , (string_literal ""can\'t disassemble for architecture %s\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00136630(uVar7,uVar6);" (call_expression "FUN_00136630(uVar7,uVar6)" identifier (argument_list "(uVar7,uVar6)" ( identifier , identifier ))) ;) (expression_statement "DAT_00157388 = 1;" (assignment_expression "DAT_00157388 = 1" identifier = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "local_110 = *(undefined4 *)(param_1[1] + 8);" (assignment_expression "local_110 = *(undefined4 *)(param_1[1] + 8)" identifier = (pointer_expression "*(undefined4 *)(param_1[1] + 8)" * (cast_expression "(undefined4 *)(param_1[1] + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 8)" ( (binary_expression "param_1[1] + 8" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_10c = bfd_get_arch(param_1);" (assignment_expression "local_10c = bfd_get_arch(param_1)" identifier = (call_expression "bfd_get_arch(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_108 = bfd_get_mach(param_1);" (assignment_expression "local_108 = bfd_get_mach(param_1)" identifier = (call_expression "bfd_get_mach(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_40 = DAT_001572b8;" (assignment_expression "local_40 = DAT_001572b8" identifier = identifier) ;) (expression_statement "local_6c = bfd_octets_per_byte(param_1);" (assignment_expression "local_6c = bfd_octets_per_byte(param_1)" identifier = (call_expression "bfd_octets_per_byte(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_68 = 0x300000008;" (assignment_expression "local_68 = 0x300000008" identifier = number_literal) ;) (if_statement "if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }" if (parenthesized_expression "(*(int *)(param_1[1] + 0xc) == 0)" ( (binary_expression "*(int *)(param_1[1] + 0xc) == 0" (pointer_expression "*(int *)(param_1[1] + 0xc)" * (cast_expression "(int *)(param_1[1] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_100 = 0;\n    local_70 = 0;\n  }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) }) (else_clause "else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }" else (if_statement "if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }" if (parenthesized_expression "(*(int *)(param_1[1] + 0xc) == 1)" ( (binary_expression "*(int *)(param_1[1] + 0xc) == 1" (pointer_expression "*(int *)(param_1[1] + 0xc)" * (cast_expression "(int *)(param_1[1] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_100 = 1;\n    local_70 = 1;\n  }" { (expression_statement "local_100 = 1;" (assignment_expression "local_100 = 1" identifier = number_literal) ;) (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_100 = 2;\n  }" else (compound_statement "{\n    local_100 = 2;\n  }" { (expression_statement "local_100 = 2;" (assignment_expression "local_100 = 2" identifier = number_literal) ;) }))))) (expression_statement "disassemble_init_for_target(local_128);" (call_expression "disassemble_init_for_target(local_128)" identifier (argument_list "(local_128)" ( identifier ))) ;) (expression_statement "lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);" (assignment_expression "lVar10 = (**(code **)(param_1[1] + 0x350))(param_1)" identifier = (call_expression "(**(code **)(param_1[1] + 0x350))(param_1)" (parenthesized_expression "(**(code **)(param_1[1] + 0x350))" ( (pointer_expression "**(code **)(param_1[1] + 0x350)" * (pointer_expression "*(code **)(param_1[1] + 0x350)" * (cast_expression "(code **)(param_1[1] + 0x350)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 0x350)" ( (binary_expression "param_1[1] + 0x350" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" if (parenthesized_expression "(lVar10 < 0)" ( (binary_expression "lVar10 < 0" identifier < number_literal) )) (compound_statement "{\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00136510(*param_1);\n    }\n  }" { (if_statement "if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00136510(*param_1);\n    }" if (parenthesized_expression "(DAT_00157368 != 0)" ( (binary_expression "DAT_00157368 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00136510(*param_1);\n    }" { (labeled_statement "LAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      FUN_00136510(*param_1);" statement_identifier : comment (expression_statement "FUN_00136510(*param_1);" (call_expression "FUN_00136510(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;)) })) }) (else_clause "else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" else (if_statement "if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" { (expression_statement "local_150 = (void *)xmalloc(lVar10);" (assignment_expression "local_150 = (void *)xmalloc(lVar10)" identifier = (cast_expression "(void *)xmalloc(lVar10)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(lVar10)" identifier (argument_list "(lVar10)" ( identifier ))))) ;) (expression_statement "local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);" (assignment_expression "local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290)" identifier = (call_expression "(**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290)" (parenthesized_expression "(**(code **)(param_1[1] + 0x358))" ( (pointer_expression "**(code **)(param_1[1] + 0x358)" * (pointer_expression "*(code **)(param_1[1] + 0x358)" * (cast_expression "(code **)(param_1[1] + 0x358)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 0x358)" ( (binary_expression "param_1[1] + 0x358" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1,local_150,DAT_00157290)" ( identifier , identifier , identifier )))) ;) (if_statement "if ((long)local_148 < 0) goto LAB_00109bee;" if (parenthesized_expression "((long)local_148 < 0)" ( (binary_expression "(long)local_148 < 0" (cast_expression "(long)local_148" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (goto_statement "goto LAB_00109bee;" goto statement_identifier ;)) (expression_statement "qsort(local_150,local_148,8,FUN_00108380);" (call_expression "qsort(local_150,local_148,8,FUN_00108380)" identifier (argument_list "(local_150,local_148,8,FUN_00108380)" ( identifier , identifier , number_literal , identifier ))) ;) })))) (expression_statement "local_d8 = DAT_001572a0;" (assignment_expression "local_d8 = DAT_001572a0" identifier = identifier) ;) (expression_statement "local_cc = (undefined4)DAT_00157298;" (assignment_expression "local_cc = (undefined4)DAT_00157298" identifier = (cast_expression "(undefined4)DAT_00157298" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "bfd_map_over_sections(param_1,FUN_0010d910,local_128);" (call_expression "bfd_map_over_sections(param_1,FUN_0010d910,local_128)" identifier (argument_list "(param_1,FUN_0010d910,local_128)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_150 != (void *)0x0) {\n    free(local_150);\n  }" if (parenthesized_expression "(local_150 != (void *)0x0)" ( (binary_expression "local_150 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(local_150);\n  }" { (expression_statement "free(local_150);" (call_expression "free(local_150)" identifier (argument_list "(local_150)" ( identifier ))) ;) })) (expression_statement "free(DAT_001572a0);" (call_expression "free(DAT_001572a0)" identifier (argument_list "(DAT_001572a0)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void disassemble_data(bfd *abfd)\n\n{\n  bfd_endian bVar1;\n  long lVar2;\n  bfd_target *pbVar3;\n  undefined4 uVar4;\n  long *__base;\n  long *plVar5;\n  bfd_arch_info *pbVar6;\n  bfd_target *pbVar7;\n  undefined8 uVar8;\n  char *pcVar9;\n  char *format;\n  long lVar10;\n  ulong uVar11;\n  asymbol *paVar12;\n  long lVar13;\n  asymbol **__src;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined8 *puVar16;\n  byte *pbVar17;\n  undefined8 *puVar18;\n  long *plVar19;\n  long *plVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  objdump_disasm_info aux;\n  disassemble_info disasm_info;\n  \n  bVar24 = 0;\n  print_files = (print_file_list *)0x0;\n  prev_functionname = (char *)0x0;\n  prev_line = 0xffffffff;\n  sorted_symcount = symcount;\n  if (symcount == 0) {\n    sorted_symcount = dynsymcount;\n  }\n  prev_discriminator = 0;\n  sorted_syms = (asymbol **)xmalloc((sorted_symcount + synthcount) * 8);\n  lVar13 = sorted_symcount;\n  __src = dynsyms;\n  if (symcount != 0) {\n    __src = syms;\n  }\n  __base = (long *)memcpy(sorted_syms,__src,sorted_symcount * 8);\n  plVar5 = __base;\n  plVar19 = __base;\nLAB_00109890:\n  lVar13 = lVar13 + -1;\n  plVar20 = plVar19;\n  if (-1 < lVar13) {\n    while( true ) {\n      plVar19 = plVar20 + 1;\n      lVar2 = *plVar20;\n      pbVar15 = *(byte **)(lVar2 + 8);\n      if ((pbVar15 == (byte *)0x0) || (*pbVar15 == 0)) break;\n      bVar21 = false;\n      bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0;\n      if (!bVar23) {\n        lVar10 = 4;\n        pbVar14 = pbVar15;\n        pbVar17 = &DAT_0013d5f3;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar22 = false;\n        bVar21 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }\n      }\n      if ((*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar5 = lVar2;\n      plVar5 = plVar5 + 1;\n      lVar13 = lVar13 + -1;\n      plVar20 = plVar19;\n      if (lVar13 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  sorted_symcount = (long)plVar5 - (long)__base >> 3;\n  if (0 < synthcount) {\n    sorted_symcount = synthcount + sorted_symcount;\n    paVar12 = synthsyms;\n    do {\n      *plVar5 = (long)paVar12;\n      plVar5 = plVar5 + 1;\n      paVar12 = paVar12 + 1;\n    } while (plVar5 != __base + sorted_symcount);\n  }\n  qsort(__base,sorted_symcount,8,compare_symbols);\n  init_disassemble_info(&disasm_info,stdout,PTR_fprintf_00154fa8);\n  disasm_info.print_address_func = objdump_print_address;\n  aux.require_sec = 0;\n  aux.dynrelbuf = (arelent **)0x0;\n  aux.dynrelcount = 0;\n  aux.reloc = (arelent *)0x0;\n  disasm_info.symbol_at_address_func = objdump_symbol_at_address;\n  aux.abfd = abfd;\n  disasm_info.application_data = &aux;\n  if (machine != (char *)0x0) {\n    disasm_info.application_data = &aux;\n    pbVar6 = (bfd_arch_info *)bfd_scan_arch();\n    pcVar9 = machine;\n    if (pbVar6 == (bfd_arch_info *)0x0) {\n      format = (char *)dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      fatal(format,pcVar9);\n    }\n    abfd->arch_info = pbVar6;\n  }\n  if (endian != BFD_ENDIAN_UNKNOWN) {\n    pbVar7 = (bfd_target *)xmalloc(0x370);\n    pbVar3 = abfd->xvec;\n    puVar18 = (undefined8 *)((ulong)&pbVar7->flavour & 0xfffffffffffffff8);\n    pbVar7->name = pbVar3->name;\n    pbVar7->backend_data = pbVar3->backend_data;\n    lVar13 = (long)pbVar7 - (long)puVar18;\n    puVar16 = (undefined8 *)((long)pbVar3 - lVar13);\n    for (uVar11 = (ulong)((int)lVar13 + 0x370U >> 3); uVar11 != 0; uVar11 = uVar11 - 1) {\n      *puVar18 = *puVar16;\n      puVar16 = puVar16 + (ulong)bVar24 * -2 + 1;\n      puVar18 = puVar18 + (ulong)bVar24 * -2 + 1;\n    }\n    abfd->xvec = pbVar7;\n    pbVar7->byteorder = endian;\n  }\n  uVar8 = bfd_get_mach(abfd);\n  bVar1 = abfd->xvec->byteorder;\n  uVar4 = bfd_get_arch(abfd);\n  aux.disassemble_fn = (disassembler_ftype)disassembler(uVar4,bVar1 == BFD_ENDIAN_BIG,uVar8,abfd);\n  if (aux.disassemble_fn == (disassembler_ftype)0x0) {\n    uVar4 = bfd_get_arch(abfd);\n    uVar8 = bfd_printable_arch_mach(uVar4,0);\n    pcVar9 = (char *)dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    non_fatal(pcVar9,uVar8);\n    exit_status = 1;\n    return;\n  }\n  disasm_info.flavour = abfd->xvec->flavour;\n  disasm_info.arch = bfd_get_arch(abfd);\n  disasm_info.mach = bfd_get_mach(abfd);\n  disasm_info.disassembler_options = disassembler_options;\n  disasm_info.octets_per_byte = bfd_octets_per_byte(abfd);\n  disasm_info.disassembler_needs_relocs = 0;\n  disasm_info.skip_zeroes = 8;\n  disasm_info.skip_zeroes_at_end = 3;\n  bVar1 = abfd->xvec->byteorder;\n  if (bVar1 == BFD_ENDIAN_BIG) {\n    disasm_info.endian = BFD_ENDIAN_BIG;\n    disasm_info.display_endian = BFD_ENDIAN_BIG;\n  }\n  else if (bVar1 == BFD_ENDIAN_LITTLE) {\n    disasm_info.endian = BFD_ENDIAN_LITTLE;\n    disasm_info.display_endian = BFD_ENDIAN_LITTLE;\n  }\n  else {\n    disasm_info.endian = BFD_ENDIAN_UNKNOWN;\n  }\n  disassemble_init_for_target(&disasm_info);\n  lVar13 = (*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound)(abfd);\n  if (lVar13 < 0) {\n    if (dump_dynamic_reloc_info != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      bfd_fatal(abfd->filename);\n    }\n  }\n  else if (lVar13 != 0) {\n    aux.dynrelbuf = (arelent **)xmalloc(lVar13);\n    aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);\n    if (aux.dynrelcount < 0) goto LAB_00109bee;\n    qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);\n  }\n  disasm_info.symtab = sorted_syms;\n  disasm_info.symtab_size = (int)sorted_symcount;\n  bfd_map_over_sections(abfd,disassemble_section,&disasm_info);\n  if (aux.dynrelbuf != (arelent **)0x0) {\n    free(aux.dynrelbuf);\n  }\n  free(sorted_syms);\n  return;\n}\n\n" (function_definition "void disassemble_data(bfd *abfd)\n\n{\n  bfd_endian bVar1;\n  long lVar2;\n  bfd_target *pbVar3;\n  undefined4 uVar4;\n  long *__base;\n  long *plVar5;\n  bfd_arch_info *pbVar6;\n  bfd_target *pbVar7;\n  undefined8 uVar8;\n  char *pcVar9;\n  char *format;\n  long lVar10;\n  ulong uVar11;\n  asymbol *paVar12;\n  long lVar13;\n  asymbol **__src;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined8 *puVar16;\n  byte *pbVar17;\n  undefined8 *puVar18;\n  long *plVar19;\n  long *plVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  objdump_disasm_info aux;\n  disassemble_info disasm_info;\n  \n  bVar24 = 0;\n  print_files = (print_file_list *)0x0;\n  prev_functionname = (char *)0x0;\n  prev_line = 0xffffffff;\n  sorted_symcount = symcount;\n  if (symcount == 0) {\n    sorted_symcount = dynsymcount;\n  }\n  prev_discriminator = 0;\n  sorted_syms = (asymbol **)xmalloc((sorted_symcount + synthcount) * 8);\n  lVar13 = sorted_symcount;\n  __src = dynsyms;\n  if (symcount != 0) {\n    __src = syms;\n  }\n  __base = (long *)memcpy(sorted_syms,__src,sorted_symcount * 8);\n  plVar5 = __base;\n  plVar19 = __base;\nLAB_00109890:\n  lVar13 = lVar13 + -1;\n  plVar20 = plVar19;\n  if (-1 < lVar13) {\n    while( true ) {\n      plVar19 = plVar20 + 1;\n      lVar2 = *plVar20;\n      pbVar15 = *(byte **)(lVar2 + 8);\n      if ((pbVar15 == (byte *)0x0) || (*pbVar15 == 0)) break;\n      bVar21 = false;\n      bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0;\n      if (!bVar23) {\n        lVar10 = 4;\n        pbVar14 = pbVar15;\n        pbVar17 = &DAT_0013d5f3;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar22 = false;\n        bVar21 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }\n      }\n      if ((*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar5 = lVar2;\n      plVar5 = plVar5 + 1;\n      lVar13 = lVar13 + -1;\n      plVar20 = plVar19;\n      if (lVar13 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  sorted_symcount = (long)plVar5 - (long)__base >> 3;\n  if (0 < synthcount) {\n    sorted_symcount = synthcount + sorted_symcount;\n    paVar12 = synthsyms;\n    do {\n      *plVar5 = (long)paVar12;\n      plVar5 = plVar5 + 1;\n      paVar12 = paVar12 + 1;\n    } while (plVar5 != __base + sorted_symcount);\n  }\n  qsort(__base,sorted_symcount,8,compare_symbols);\n  init_disassemble_info(&disasm_info,stdout,PTR_fprintf_00154fa8);\n  disasm_info.print_address_func = objdump_print_address;\n  aux.require_sec = 0;\n  aux.dynrelbuf = (arelent **)0x0;\n  aux.dynrelcount = 0;\n  aux.reloc = (arelent *)0x0;\n  disasm_info.symbol_at_address_func = objdump_symbol_at_address;\n  aux.abfd = abfd;\n  disasm_info.application_data = &aux;\n  if (machine != (char *)0x0) {\n    disasm_info.application_data = &aux;\n    pbVar6 = (bfd_arch_info *)bfd_scan_arch();\n    pcVar9 = machine;\n    if (pbVar6 == (bfd_arch_info *)0x0) {\n      format = (char *)dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      fatal(format,pcVar9);\n    }\n    abfd->arch_info = pbVar6;\n  }\n  if (endian != BFD_ENDIAN_UNKNOWN) {\n    pbVar7 = (bfd_target *)xmalloc(0x370);\n    pbVar3 = abfd->xvec;\n    puVar18 = (undefined8 *)((ulong)&pbVar7->flavour & 0xfffffffffffffff8);\n    pbVar7->name = pbVar3->name;\n    pbVar7->backend_data = pbVar3->backend_data;\n    lVar13 = (long)pbVar7 - (long)puVar18;\n    puVar16 = (undefined8 *)((long)pbVar3 - lVar13);\n    for (uVar11 = (ulong)((int)lVar13 + 0x370U >> 3); uVar11 != 0; uVar11 = uVar11 - 1) {\n      *puVar18 = *puVar16;\n      puVar16 = puVar16 + (ulong)bVar24 * -2 + 1;\n      puVar18 = puVar18 + (ulong)bVar24 * -2 + 1;\n    }\n    abfd->xvec = pbVar7;\n    pbVar7->byteorder = endian;\n  }\n  uVar8 = bfd_get_mach(abfd);\n  bVar1 = abfd->xvec->byteorder;\n  uVar4 = bfd_get_arch(abfd);\n  aux.disassemble_fn = (disassembler_ftype)disassembler(uVar4,bVar1 == BFD_ENDIAN_BIG,uVar8,abfd);\n  if (aux.disassemble_fn == (disassembler_ftype)0x0) {\n    uVar4 = bfd_get_arch(abfd);\n    uVar8 = bfd_printable_arch_mach(uVar4,0);\n    pcVar9 = (char *)dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    non_fatal(pcVar9,uVar8);\n    exit_status = 1;\n    return;\n  }\n  disasm_info.flavour = abfd->xvec->flavour;\n  disasm_info.arch = bfd_get_arch(abfd);\n  disasm_info.mach = bfd_get_mach(abfd);\n  disasm_info.disassembler_options = disassembler_options;\n  disasm_info.octets_per_byte = bfd_octets_per_byte(abfd);\n  disasm_info.disassembler_needs_relocs = 0;\n  disasm_info.skip_zeroes = 8;\n  disasm_info.skip_zeroes_at_end = 3;\n  bVar1 = abfd->xvec->byteorder;\n  if (bVar1 == BFD_ENDIAN_BIG) {\n    disasm_info.endian = BFD_ENDIAN_BIG;\n    disasm_info.display_endian = BFD_ENDIAN_BIG;\n  }\n  else if (bVar1 == BFD_ENDIAN_LITTLE) {\n    disasm_info.endian = BFD_ENDIAN_LITTLE;\n    disasm_info.display_endian = BFD_ENDIAN_LITTLE;\n  }\n  else {\n    disasm_info.endian = BFD_ENDIAN_UNKNOWN;\n  }\n  disassemble_init_for_target(&disasm_info);\n  lVar13 = (*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound)(abfd);\n  if (lVar13 < 0) {\n    if (dump_dynamic_reloc_info != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      bfd_fatal(abfd->filename);\n    }\n  }\n  else if (lVar13 != 0) {\n    aux.dynrelbuf = (arelent **)xmalloc(lVar13);\n    aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);\n    if (aux.dynrelcount < 0) goto LAB_00109bee;\n    qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);\n  }\n  disasm_info.symtab = sorted_syms;\n  disasm_info.symtab_size = (int)sorted_symcount;\n  bfd_map_over_sections(abfd,disassemble_section,&disasm_info);\n  if (aux.dynrelbuf != (arelent **)0x0) {\n    free(aux.dynrelbuf);\n  }\n  free(sorted_syms);\n  return;\n}" primitive_type (function_declarator "disassemble_data(bfd *abfd)" identifier (parameter_list "(bfd *abfd)" ( (parameter_declaration "bfd *abfd" type_identifier (pointer_declarator "*abfd" * identifier)) ))) (compound_statement "{\n  bfd_endian bVar1;\n  long lVar2;\n  bfd_target *pbVar3;\n  undefined4 uVar4;\n  long *__base;\n  long *plVar5;\n  bfd_arch_info *pbVar6;\n  bfd_target *pbVar7;\n  undefined8 uVar8;\n  char *pcVar9;\n  char *format;\n  long lVar10;\n  ulong uVar11;\n  asymbol *paVar12;\n  long lVar13;\n  asymbol **__src;\n  byte *pbVar14;\n  byte *pbVar15;\n  undefined8 *puVar16;\n  byte *pbVar17;\n  undefined8 *puVar18;\n  long *plVar19;\n  long *plVar20;\n  bool bVar21;\n  bool bVar22;\n  bool bVar23;\n  byte bVar24;\n  objdump_disasm_info aux;\n  disassemble_info disasm_info;\n  \n  bVar24 = 0;\n  print_files = (print_file_list *)0x0;\n  prev_functionname = (char *)0x0;\n  prev_line = 0xffffffff;\n  sorted_symcount = symcount;\n  if (symcount == 0) {\n    sorted_symcount = dynsymcount;\n  }\n  prev_discriminator = 0;\n  sorted_syms = (asymbol **)xmalloc((sorted_symcount + synthcount) * 8);\n  lVar13 = sorted_symcount;\n  __src = dynsyms;\n  if (symcount != 0) {\n    __src = syms;\n  }\n  __base = (long *)memcpy(sorted_syms,__src,sorted_symcount * 8);\n  plVar5 = __base;\n  plVar19 = __base;\nLAB_00109890:\n  lVar13 = lVar13 + -1;\n  plVar20 = plVar19;\n  if (-1 < lVar13) {\n    while( true ) {\n      plVar19 = plVar20 + 1;\n      lVar2 = *plVar20;\n      pbVar15 = *(byte **)(lVar2 + 8);\n      if ((pbVar15 == (byte *)0x0) || (*pbVar15 == 0)) break;\n      bVar21 = false;\n      bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0;\n      if (!bVar23) {\n        lVar10 = 4;\n        pbVar14 = pbVar15;\n        pbVar17 = &DAT_0013d5f3;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar22 = false;\n        bVar21 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }\n      }\n      if ((*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar5 = lVar2;\n      plVar5 = plVar5 + 1;\n      lVar13 = lVar13 + -1;\n      plVar20 = plVar19;\n      if (lVar13 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  sorted_symcount = (long)plVar5 - (long)__base >> 3;\n  if (0 < synthcount) {\n    sorted_symcount = synthcount + sorted_symcount;\n    paVar12 = synthsyms;\n    do {\n      *plVar5 = (long)paVar12;\n      plVar5 = plVar5 + 1;\n      paVar12 = paVar12 + 1;\n    } while (plVar5 != __base + sorted_symcount);\n  }\n  qsort(__base,sorted_symcount,8,compare_symbols);\n  init_disassemble_info(&disasm_info,stdout,PTR_fprintf_00154fa8);\n  disasm_info.print_address_func = objdump_print_address;\n  aux.require_sec = 0;\n  aux.dynrelbuf = (arelent **)0x0;\n  aux.dynrelcount = 0;\n  aux.reloc = (arelent *)0x0;\n  disasm_info.symbol_at_address_func = objdump_symbol_at_address;\n  aux.abfd = abfd;\n  disasm_info.application_data = &aux;\n  if (machine != (char *)0x0) {\n    disasm_info.application_data = &aux;\n    pbVar6 = (bfd_arch_info *)bfd_scan_arch();\n    pcVar9 = machine;\n    if (pbVar6 == (bfd_arch_info *)0x0) {\n      format = (char *)dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      fatal(format,pcVar9);\n    }\n    abfd->arch_info = pbVar6;\n  }\n  if (endian != BFD_ENDIAN_UNKNOWN) {\n    pbVar7 = (bfd_target *)xmalloc(0x370);\n    pbVar3 = abfd->xvec;\n    puVar18 = (undefined8 *)((ulong)&pbVar7->flavour & 0xfffffffffffffff8);\n    pbVar7->name = pbVar3->name;\n    pbVar7->backend_data = pbVar3->backend_data;\n    lVar13 = (long)pbVar7 - (long)puVar18;\n    puVar16 = (undefined8 *)((long)pbVar3 - lVar13);\n    for (uVar11 = (ulong)((int)lVar13 + 0x370U >> 3); uVar11 != 0; uVar11 = uVar11 - 1) {\n      *puVar18 = *puVar16;\n      puVar16 = puVar16 + (ulong)bVar24 * -2 + 1;\n      puVar18 = puVar18 + (ulong)bVar24 * -2 + 1;\n    }\n    abfd->xvec = pbVar7;\n    pbVar7->byteorder = endian;\n  }\n  uVar8 = bfd_get_mach(abfd);\n  bVar1 = abfd->xvec->byteorder;\n  uVar4 = bfd_get_arch(abfd);\n  aux.disassemble_fn = (disassembler_ftype)disassembler(uVar4,bVar1 == BFD_ENDIAN_BIG,uVar8,abfd);\n  if (aux.disassemble_fn == (disassembler_ftype)0x0) {\n    uVar4 = bfd_get_arch(abfd);\n    uVar8 = bfd_printable_arch_mach(uVar4,0);\n    pcVar9 = (char *)dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    non_fatal(pcVar9,uVar8);\n    exit_status = 1;\n    return;\n  }\n  disasm_info.flavour = abfd->xvec->flavour;\n  disasm_info.arch = bfd_get_arch(abfd);\n  disasm_info.mach = bfd_get_mach(abfd);\n  disasm_info.disassembler_options = disassembler_options;\n  disasm_info.octets_per_byte = bfd_octets_per_byte(abfd);\n  disasm_info.disassembler_needs_relocs = 0;\n  disasm_info.skip_zeroes = 8;\n  disasm_info.skip_zeroes_at_end = 3;\n  bVar1 = abfd->xvec->byteorder;\n  if (bVar1 == BFD_ENDIAN_BIG) {\n    disasm_info.endian = BFD_ENDIAN_BIG;\n    disasm_info.display_endian = BFD_ENDIAN_BIG;\n  }\n  else if (bVar1 == BFD_ENDIAN_LITTLE) {\n    disasm_info.endian = BFD_ENDIAN_LITTLE;\n    disasm_info.display_endian = BFD_ENDIAN_LITTLE;\n  }\n  else {\n    disasm_info.endian = BFD_ENDIAN_UNKNOWN;\n  }\n  disassemble_init_for_target(&disasm_info);\n  lVar13 = (*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound)(abfd);\n  if (lVar13 < 0) {\n    if (dump_dynamic_reloc_info != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      bfd_fatal(abfd->filename);\n    }\n  }\n  else if (lVar13 != 0) {\n    aux.dynrelbuf = (arelent **)xmalloc(lVar13);\n    aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);\n    if (aux.dynrelcount < 0) goto LAB_00109bee;\n    qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);\n  }\n  disasm_info.symtab = sorted_syms;\n  disasm_info.symtab_size = (int)sorted_symcount;\n  bfd_map_over_sections(abfd,disassemble_section,&disasm_info);\n  if (aux.dynrelbuf != (arelent **)0x0) {\n    free(aux.dynrelbuf);\n  }\n  free(sorted_syms);\n  return;\n}" { (declaration "bfd_endian bVar1;" type_identifier identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "bfd_target *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "long *__base;" (sized_type_specifier "long" long) (pointer_declarator "*__base" * identifier) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "bfd_arch_info *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "bfd_target *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "char *format;" primitive_type (pointer_declarator "*format" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "asymbol *paVar12;" type_identifier (pointer_declarator "*paVar12" * identifier) ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "asymbol **__src;" type_identifier (pointer_declarator "**__src" * (pointer_declarator "*__src" * identifier)) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "byte *pbVar15;" type_identifier (pointer_declarator "*pbVar15" * identifier) ;) (declaration "undefined8 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "byte *pbVar17;" type_identifier (pointer_declarator "*pbVar17" * identifier) ;) (declaration "undefined8 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "long *plVar19;" (sized_type_specifier "long" long) (pointer_declarator "*plVar19" * identifier) ;) (declaration "long *plVar20;" (sized_type_specifier "long" long) (pointer_declarator "*plVar20" * identifier) ;) (declaration "bool bVar21;" primitive_type identifier ;) (declaration "bool bVar22;" primitive_type identifier ;) (declaration "bool bVar23;" primitive_type identifier ;) (declaration "byte bVar24;" type_identifier identifier ;) (declaration "objdump_disasm_info aux;" type_identifier identifier ;) (declaration "disassemble_info disasm_info;" type_identifier identifier ;) (expression_statement "bVar24 = 0;" (assignment_expression "bVar24 = 0" identifier = number_literal) ;) (expression_statement "print_files = (print_file_list *)0x0;" (assignment_expression "print_files = (print_file_list *)0x0" identifier = (cast_expression "(print_file_list *)0x0" ( (type_descriptor "print_file_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prev_functionname = (char *)0x0;" (assignment_expression "prev_functionname = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "prev_line = 0xffffffff;" (assignment_expression "prev_line = 0xffffffff" identifier = number_literal) ;) (expression_statement "sorted_symcount = symcount;" (assignment_expression "sorted_symcount = symcount" identifier = identifier) ;) (if_statement "if (symcount == 0) {\n    sorted_symcount = dynsymcount;\n  }" if (parenthesized_expression "(symcount == 0)" ( (binary_expression "symcount == 0" identifier == number_literal) )) (compound_statement "{\n    sorted_symcount = dynsymcount;\n  }" { (expression_statement "sorted_symcount = dynsymcount;" (assignment_expression "sorted_symcount = dynsymcount" identifier = identifier) ;) })) (expression_statement "prev_discriminator = 0;" (assignment_expression "prev_discriminator = 0" identifier = number_literal) ;) (expression_statement "sorted_syms = (asymbol **)xmalloc((sorted_symcount + synthcount) * 8);" (assignment_expression "sorted_syms = (asymbol **)xmalloc((sorted_symcount + synthcount) * 8)" identifier = (cast_expression "(asymbol **)xmalloc((sorted_symcount + synthcount) * 8)" ( (type_descriptor "asymbol **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc((sorted_symcount + synthcount) * 8)" identifier (argument_list "((sorted_symcount + synthcount) * 8)" ( (binary_expression "(sorted_symcount + synthcount) * 8" (parenthesized_expression "(sorted_symcount + synthcount)" ( (binary_expression "sorted_symcount + synthcount" identifier + identifier) )) * number_literal) ))))) ;) (expression_statement "lVar13 = sorted_symcount;" (assignment_expression "lVar13 = sorted_symcount" identifier = identifier) ;) (expression_statement "__src = dynsyms;" (assignment_expression "__src = dynsyms" identifier = identifier) ;) (if_statement "if (symcount != 0) {\n    __src = syms;\n  }" if (parenthesized_expression "(symcount != 0)" ( (binary_expression "symcount != 0" identifier != number_literal) )) (compound_statement "{\n    __src = syms;\n  }" { (expression_statement "__src = syms;" (assignment_expression "__src = syms" identifier = identifier) ;) })) (expression_statement "__base = (long *)memcpy(sorted_syms,__src,sorted_symcount * 8);" (assignment_expression "__base = (long *)memcpy(sorted_syms,__src,sorted_symcount * 8)" identifier = (cast_expression "(long *)memcpy(sorted_syms,__src,sorted_symcount * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(sorted_syms,__src,sorted_symcount * 8)" identifier (argument_list "(sorted_syms,__src,sorted_symcount * 8)" ( identifier , identifier , (binary_expression "sorted_symcount * 8" identifier * number_literal) ))))) ;) (expression_statement "plVar5 = __base;" (assignment_expression "plVar5 = __base" identifier = identifier) ;) (expression_statement "plVar19 = __base;" (assignment_expression "plVar19 = __base" identifier = identifier) ;) (labeled_statement "LAB_00109890:\n  lVar13 = lVar13 + -1;" statement_identifier : (expression_statement "lVar13 = lVar13 + -1;" (assignment_expression "lVar13 = lVar13 + -1" identifier = (binary_expression "lVar13 + -1" identifier + number_literal)) ;)) (expression_statement "plVar20 = plVar19;" (assignment_expression "plVar20 = plVar19" identifier = identifier) ;) (if_statement "if (-1 < lVar13) {\n    while( true ) {\n      plVar19 = plVar20 + 1;\n      lVar2 = *plVar20;\n      pbVar15 = *(byte **)(lVar2 + 8);\n      if ((pbVar15 == (byte *)0x0) || (*pbVar15 == 0)) break;\n      bVar21 = false;\n      bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0;\n      if (!bVar23) {\n        lVar10 = 4;\n        pbVar14 = pbVar15;\n        pbVar17 = &DAT_0013d5f3;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar22 = false;\n        bVar21 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }\n      }\n      if ((*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar5 = lVar2;\n      plVar5 = plVar5 + 1;\n      lVar13 = lVar13 + -1;\n      plVar20 = plVar19;\n      if (lVar13 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }" if (parenthesized_expression "(-1 < lVar13)" ( (binary_expression "-1 < lVar13" number_literal < identifier) )) (compound_statement "{\n    while( true ) {\n      plVar19 = plVar20 + 1;\n      lVar2 = *plVar20;\n      pbVar15 = *(byte **)(lVar2 + 8);\n      if ((pbVar15 == (byte *)0x0) || (*pbVar15 == 0)) break;\n      bVar21 = false;\n      bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0;\n      if (!bVar23) {\n        lVar10 = 4;\n        pbVar14 = pbVar15;\n        pbVar17 = &DAT_0013d5f3;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar22 = false;\n        bVar21 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }\n      }\n      if ((*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar5 = lVar2;\n      plVar5 = plVar5 + 1;\n      lVar13 = lVar13 + -1;\n      plVar20 = plVar19;\n      if (lVar13 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }" { (while_statement "while( true ) {\n      plVar19 = plVar20 + 1;\n      lVar2 = *plVar20;\n      pbVar15 = *(byte **)(lVar2 + 8);\n      if ((pbVar15 == (byte *)0x0) || (*pbVar15 == 0)) break;\n      bVar21 = false;\n      bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0;\n      if (!bVar23) {\n        lVar10 = 4;\n        pbVar14 = pbVar15;\n        pbVar17 = &DAT_0013d5f3;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar22 = false;\n        bVar21 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }\n      }\n      if ((*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar5 = lVar2;\n      plVar5 = plVar5 + 1;\n      lVar13 = lVar13 + -1;\n      plVar20 = plVar19;\n      if (lVar13 < 0) goto LAB_00109904;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      plVar19 = plVar20 + 1;\n      lVar2 = *plVar20;\n      pbVar15 = *(byte **)(lVar2 + 8);\n      if ((pbVar15 == (byte *)0x0) || (*pbVar15 == 0)) break;\n      bVar21 = false;\n      bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0;\n      if (!bVar23) {\n        lVar10 = 4;\n        pbVar14 = pbVar15;\n        pbVar17 = &DAT_0013d5f3;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar22 = false;\n        bVar21 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }\n      }\n      if ((*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar5 = lVar2;\n      plVar5 = plVar5 + 1;\n      lVar13 = lVar13 + -1;\n      plVar20 = plVar19;\n      if (lVar13 < 0) goto LAB_00109904;\n    }" { (expression_statement "plVar19 = plVar20 + 1;" (assignment_expression "plVar19 = plVar20 + 1" identifier = (binary_expression "plVar20 + 1" identifier + number_literal)) ;) (expression_statement "lVar2 = *plVar20;" (assignment_expression "lVar2 = *plVar20" identifier = (pointer_expression "*plVar20" * identifier)) ;) (expression_statement "pbVar15 = *(byte **)(lVar2 + 8);" (assignment_expression "pbVar15 = *(byte **)(lVar2 + 8)" identifier = (pointer_expression "*(byte **)(lVar2 + 8)" * (cast_expression "(byte **)(lVar2 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar2 + 8)" ( (binary_expression "lVar2 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((pbVar15 == (byte *)0x0) || (*pbVar15 == 0)) break;" if (parenthesized_expression "((pbVar15 == (byte *)0x0) || (*pbVar15 == 0))" ( (binary_expression "(pbVar15 == (byte *)0x0) || (*pbVar15 == 0)" (parenthesized_expression "(pbVar15 == (byte *)0x0)" ( (binary_expression "pbVar15 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pbVar15 == 0)" ( (binary_expression "*pbVar15 == 0" (pointer_expression "*pbVar15" * identifier) == number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar21 = false;" (assignment_expression "bVar21 = false" identifier = false) ;) (expression_statement "bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0;" (assignment_expression "bVar23 = (*(uint *)(lVar2 + 0x18) & 0x104) == 0" identifier = (binary_expression "(*(uint *)(lVar2 + 0x18) & 0x104) == 0" (parenthesized_expression "(*(uint *)(lVar2 + 0x18) & 0x104)" ( (binary_expression "*(uint *)(lVar2 + 0x18) & 0x104" (pointer_expression "*(uint *)(lVar2 + 0x18)" * (cast_expression "(uint *)(lVar2 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x18)" ( (binary_expression "lVar2 + 0x18" identifier + number_literal) )))) & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar23) {\n        lVar10 = 4;\n        pbVar14 = pbVar15;\n        pbVar17 = &DAT_0013d5f3;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar22 = false;\n        bVar21 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }\n      }" if (parenthesized_expression "(!bVar23)" ( (unary_expression "!bVar23" ! identifier) )) (compound_statement "{\n        lVar10 = 4;\n        pbVar14 = pbVar15;\n        pbVar17 = &DAT_0013d5f3;\n        do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);\n        bVar22 = false;\n        bVar21 = (!bVar21 && !bVar23) == bVar21;\n        if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }\n      }" { (expression_statement "lVar10 = 4;" (assignment_expression "lVar10 = 4" identifier = number_literal) ;) (expression_statement "pbVar14 = pbVar15;" (assignment_expression "pbVar14 = pbVar15" identifier = identifier) ;) (expression_statement "pbVar17 = &DAT_0013d5f3;" (assignment_expression "pbVar17 = &DAT_0013d5f3" identifier = (pointer_expression "&DAT_0013d5f3" & identifier)) ;) (do_statement "do {\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        } while (bVar23);" do (compound_statement "{\n          if (lVar10 == 0) break;\n          lVar10 = lVar10 + -1;\n          bVar21 = *pbVar14 < *pbVar17;\n          bVar23 = *pbVar14 == *pbVar17;\n          pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;\n        }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar21 = *pbVar14 < *pbVar17;" (assignment_expression "bVar21 = *pbVar14 < *pbVar17" identifier = (binary_expression "*pbVar14 < *pbVar17" (pointer_expression "*pbVar14" * identifier) < (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "bVar23 = *pbVar14 == *pbVar17;" (assignment_expression "bVar23 = *pbVar14 == *pbVar17" identifier = (binary_expression "*pbVar14 == *pbVar17" (pointer_expression "*pbVar14" * identifier) == (pointer_expression "*pbVar17" * identifier))) ;) (expression_statement "pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar14 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar14 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar17 = pbVar17 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar17 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar17 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar23)" ( identifier )) ;) (expression_statement "bVar22 = false;" (assignment_expression "bVar22 = false" identifier = false) ;) (expression_statement "bVar21 = (!bVar21 && !bVar23) == bVar21;" (assignment_expression "bVar21 = (!bVar21 && !bVar23) == bVar21" identifier = (binary_expression "(!bVar21 && !bVar23) == bVar21" (parenthesized_expression "(!bVar21 && !bVar23)" ( (binary_expression "!bVar21 && !bVar23" (unary_expression "!bVar21" ! identifier) && (unary_expression "!bVar23" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar21) {\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }" if (parenthesized_expression "(!bVar21)" ( (unary_expression "!bVar21" ! identifier) )) (compound_statement "{\n          lVar10 = 5;\n          pbVar14 = &DAT_0013d5f8;\n          do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);\n          if ((!bVar22 && !bVar21) != bVar22) break;\n        }" { (expression_statement "lVar10 = 5;" (assignment_expression "lVar10 = 5" identifier = number_literal) ;) (expression_statement "pbVar14 = &DAT_0013d5f8;" (assignment_expression "pbVar14 = &DAT_0013d5f8" identifier = (pointer_expression "&DAT_0013d5f8" & identifier)) ;) (do_statement "do {\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          } while (bVar21);" do (compound_statement "{\n            if (lVar10 == 0) break;\n            lVar10 = lVar10 + -1;\n            bVar22 = *pbVar15 < *pbVar14;\n            bVar21 = *pbVar15 == *pbVar14;\n            pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;\n            pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;\n          }" { (if_statement "if (lVar10 == 0) break;" if (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "bVar22 = *pbVar15 < *pbVar14;" (assignment_expression "bVar22 = *pbVar15 < *pbVar14" identifier = (binary_expression "*pbVar15 < *pbVar14" (pointer_expression "*pbVar15" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar21 = *pbVar15 == *pbVar14;" (assignment_expression "bVar21 = *pbVar15 == *pbVar14" identifier = (binary_expression "*pbVar15 == *pbVar14" (pointer_expression "*pbVar15" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar15 = pbVar15 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar15 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar15 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "pbVar14 + (ulong)bVar24 * -2 + 1" (binary_expression "pbVar14 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar21)" ( identifier )) ;) (if_statement "if ((!bVar22 && !bVar21) != bVar22) break;" if (parenthesized_expression "((!bVar22 && !bVar21) != bVar22)" ( (binary_expression "(!bVar22 && !bVar21) != bVar22" (parenthesized_expression "(!bVar22 && !bVar21)" ( (binary_expression "!bVar22 && !bVar21" (unary_expression "!bVar22" ! identifier) && (unary_expression "!bVar21" ! identifier)) )) != identifier) )) (break_statement "break;" break ;)) })) })) (if_statement "if ((*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)) break;" if (parenthesized_expression "((*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0))" ( (binary_expression "(*(long *)(lVar2 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)" (parenthesized_expression "(*(long *)(lVar2 + 0x20) == 0x156ed8)" ( (binary_expression "*(long *)(lVar2 + 0x20) == 0x156ed8" (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "((*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0)" ( (binary_expression "(*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10)" ( (binary_expression "*(byte *)(*(long *)(lVar2 + 0x20) + 0x21) & 0x10" (pointer_expression "*(byte *)(*(long *)(lVar2 + 0x20) + 0x21)" * (cast_expression "(byte *)(*(long *)(lVar2 + 0x20) + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar2 + 0x20) + 0x21)" ( (binary_expression "*(long *)(lVar2 + 0x20) + 0x21" (pointer_expression "*(long *)(lVar2 + 0x20)" * (cast_expression "(long *)(lVar2 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar2 + 0x20)" ( (binary_expression "lVar2 + 0x20" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "*plVar5 = lVar2;" (assignment_expression "*plVar5 = lVar2" (pointer_expression "*plVar5" * identifier) = identifier) ;) (expression_statement "plVar5 = plVar5 + 1;" (assignment_expression "plVar5 = plVar5 + 1" identifier = (binary_expression "plVar5 + 1" identifier + number_literal)) ;) (expression_statement "lVar13 = lVar13 + -1;" (assignment_expression "lVar13 = lVar13 + -1" identifier = (binary_expression "lVar13 + -1" identifier + number_literal)) ;) (expression_statement "plVar20 = plVar19;" (assignment_expression "plVar20 = plVar19" identifier = identifier) ;) (if_statement "if (lVar13 < 0) goto LAB_00109904;" if (parenthesized_expression "(lVar13 < 0)" ( (binary_expression "lVar13 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00109904;" goto statement_identifier ;)) })) (goto_statement "goto LAB_00109890;" goto statement_identifier ;) })) (labeled_statement "LAB_00109904:\n  sorted_symcount = (long)plVar5 - (long)__base >> 3;" statement_identifier : (expression_statement "sorted_symcount = (long)plVar5 - (long)__base >> 3;" (assignment_expression "sorted_symcount = (long)plVar5 - (long)__base >> 3" identifier = (binary_expression "(long)plVar5 - (long)__base >> 3" (binary_expression "(long)plVar5 - (long)__base" (cast_expression "(long)plVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;)) (if_statement "if (0 < synthcount) {\n    sorted_symcount = synthcount + sorted_symcount;\n    paVar12 = synthsyms;\n    do {\n      *plVar5 = (long)paVar12;\n      plVar5 = plVar5 + 1;\n      paVar12 = paVar12 + 1;\n    } while (plVar5 != __base + sorted_symcount);\n  }" if (parenthesized_expression "(0 < synthcount)" ( (binary_expression "0 < synthcount" number_literal < identifier) )) (compound_statement "{\n    sorted_symcount = synthcount + sorted_symcount;\n    paVar12 = synthsyms;\n    do {\n      *plVar5 = (long)paVar12;\n      plVar5 = plVar5 + 1;\n      paVar12 = paVar12 + 1;\n    } while (plVar5 != __base + sorted_symcount);\n  }" { (expression_statement "sorted_symcount = synthcount + sorted_symcount;" (assignment_expression "sorted_symcount = synthcount + sorted_symcount" identifier = (binary_expression "synthcount + sorted_symcount" identifier + identifier)) ;) (expression_statement "paVar12 = synthsyms;" (assignment_expression "paVar12 = synthsyms" identifier = identifier) ;) (do_statement "do {\n      *plVar5 = (long)paVar12;\n      plVar5 = plVar5 + 1;\n      paVar12 = paVar12 + 1;\n    } while (plVar5 != __base + sorted_symcount);" do (compound_statement "{\n      *plVar5 = (long)paVar12;\n      plVar5 = plVar5 + 1;\n      paVar12 = paVar12 + 1;\n    }" { (expression_statement "*plVar5 = (long)paVar12;" (assignment_expression "*plVar5 = (long)paVar12" (pointer_expression "*plVar5" * identifier) = (cast_expression "(long)paVar12" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "plVar5 = plVar5 + 1;" (assignment_expression "plVar5 = plVar5 + 1" identifier = (binary_expression "plVar5 + 1" identifier + number_literal)) ;) (expression_statement "paVar12 = paVar12 + 1;" (assignment_expression "paVar12 = paVar12 + 1" identifier = (binary_expression "paVar12 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar5 != __base + sorted_symcount)" ( (binary_expression "plVar5 != __base + sorted_symcount" identifier != (binary_expression "__base + sorted_symcount" identifier + identifier)) )) ;) })) (expression_statement "qsort(__base,sorted_symcount,8,compare_symbols);" (call_expression "qsort(__base,sorted_symcount,8,compare_symbols)" identifier (argument_list "(__base,sorted_symcount,8,compare_symbols)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "init_disassemble_info(&disasm_info,stdout,PTR_fprintf_00154fa8);" (call_expression "init_disassemble_info(&disasm_info,stdout,PTR_fprintf_00154fa8)" identifier (argument_list "(&disasm_info,stdout,PTR_fprintf_00154fa8)" ( (pointer_expression "&disasm_info" & identifier) , identifier , identifier ))) ;) (expression_statement "disasm_info.print_address_func = objdump_print_address;" (assignment_expression "disasm_info.print_address_func = objdump_print_address" (field_expression "disasm_info.print_address_func" identifier . field_identifier) = identifier) ;) (expression_statement "aux.require_sec = 0;" (assignment_expression "aux.require_sec = 0" (field_expression "aux.require_sec" identifier . field_identifier) = number_literal) ;) (expression_statement "aux.dynrelbuf = (arelent **)0x0;" (assignment_expression "aux.dynrelbuf = (arelent **)0x0" (field_expression "aux.dynrelbuf" identifier . field_identifier) = (cast_expression "(arelent **)0x0" ( (type_descriptor "arelent **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "aux.dynrelcount = 0;" (assignment_expression "aux.dynrelcount = 0" (field_expression "aux.dynrelcount" identifier . field_identifier) = number_literal) ;) (expression_statement "aux.reloc = (arelent *)0x0;" (assignment_expression "aux.reloc = (arelent *)0x0" (field_expression "aux.reloc" identifier . field_identifier) = (cast_expression "(arelent *)0x0" ( (type_descriptor "arelent *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "disasm_info.symbol_at_address_func = objdump_symbol_at_address;" (assignment_expression "disasm_info.symbol_at_address_func = objdump_symbol_at_address" (field_expression "disasm_info.symbol_at_address_func" identifier . field_identifier) = identifier) ;) (expression_statement "aux.abfd = abfd;" (assignment_expression "aux.abfd = abfd" (field_expression "aux.abfd" identifier . field_identifier) = identifier) ;) (expression_statement "disasm_info.application_data = &aux;" (assignment_expression "disasm_info.application_data = &aux" (field_expression "disasm_info.application_data" identifier . field_identifier) = (pointer_expression "&aux" & identifier)) ;) (if_statement "if (machine != (char *)0x0) {\n    disasm_info.application_data = &aux;\n    pbVar6 = (bfd_arch_info *)bfd_scan_arch();\n    pcVar9 = machine;\n    if (pbVar6 == (bfd_arch_info *)0x0) {\n      format = (char *)dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      fatal(format,pcVar9);\n    }\n    abfd->arch_info = pbVar6;\n  }" if (parenthesized_expression "(machine != (char *)0x0)" ( (binary_expression "machine != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    disasm_info.application_data = &aux;\n    pbVar6 = (bfd_arch_info *)bfd_scan_arch();\n    pcVar9 = machine;\n    if (pbVar6 == (bfd_arch_info *)0x0) {\n      format = (char *)dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      fatal(format,pcVar9);\n    }\n    abfd->arch_info = pbVar6;\n  }" { (expression_statement "disasm_info.application_data = &aux;" (assignment_expression "disasm_info.application_data = &aux" (field_expression "disasm_info.application_data" identifier . field_identifier) = (pointer_expression "&aux" & identifier)) ;) (expression_statement "pbVar6 = (bfd_arch_info *)bfd_scan_arch();" (assignment_expression "pbVar6 = (bfd_arch_info *)bfd_scan_arch()" identifier = (cast_expression "(bfd_arch_info *)bfd_scan_arch()" ( (type_descriptor "bfd_arch_info *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "bfd_scan_arch()" identifier (argument_list "()" ( ))))) ;) (expression_statement "pcVar9 = machine;" (assignment_expression "pcVar9 = machine" identifier = identifier) ;) (if_statement "if (pbVar6 == (bfd_arch_info *)0x0) {\n      format = (char *)dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      fatal(format,pcVar9);\n    }" if (parenthesized_expression "(pbVar6 == (bfd_arch_info *)0x0)" ( (binary_expression "pbVar6 == (bfd_arch_info *)0x0" identifier == (cast_expression "(bfd_arch_info *)0x0" ( (type_descriptor "bfd_arch_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      format = (char *)dcgettext(0,"can\'t use supplied machine %s",5);\n                    /* WARNING: Subroutine does not return */\n      fatal(format,pcVar9);\n    }" { (expression_statement "format = (char *)dcgettext(0,"can\'t use supplied machine %s",5);" (assignment_expression "format = (char *)dcgettext(0,"can\'t use supplied machine %s",5)" identifier = (cast_expression "(char *)dcgettext(0,"can\'t use supplied machine %s",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"can\'t use supplied machine %s",5)" identifier (argument_list "(0,"can\'t use supplied machine %s",5)" ( number_literal , (string_literal ""can\'t use supplied machine %s"" " string_content escape_sequence string_content ") , number_literal ))))) ;) comment (expression_statement "fatal(format,pcVar9);" (call_expression "fatal(format,pcVar9)" identifier (argument_list "(format,pcVar9)" ( identifier , identifier ))) ;) })) (expression_statement "abfd->arch_info = pbVar6;" (assignment_expression "abfd->arch_info = pbVar6" (field_expression "abfd->arch_info" identifier -> field_identifier) = identifier) ;) })) (if_statement "if (endian != BFD_ENDIAN_UNKNOWN) {\n    pbVar7 = (bfd_target *)xmalloc(0x370);\n    pbVar3 = abfd->xvec;\n    puVar18 = (undefined8 *)((ulong)&pbVar7->flavour & 0xfffffffffffffff8);\n    pbVar7->name = pbVar3->name;\n    pbVar7->backend_data = pbVar3->backend_data;\n    lVar13 = (long)pbVar7 - (long)puVar18;\n    puVar16 = (undefined8 *)((long)pbVar3 - lVar13);\n    for (uVar11 = (ulong)((int)lVar13 + 0x370U >> 3); uVar11 != 0; uVar11 = uVar11 - 1) {\n      *puVar18 = *puVar16;\n      puVar16 = puVar16 + (ulong)bVar24 * -2 + 1;\n      puVar18 = puVar18 + (ulong)bVar24 * -2 + 1;\n    }\n    abfd->xvec = pbVar7;\n    pbVar7->byteorder = endian;\n  }" if (parenthesized_expression "(endian != BFD_ENDIAN_UNKNOWN)" ( (binary_expression "endian != BFD_ENDIAN_UNKNOWN" identifier != identifier) )) (compound_statement "{\n    pbVar7 = (bfd_target *)xmalloc(0x370);\n    pbVar3 = abfd->xvec;\n    puVar18 = (undefined8 *)((ulong)&pbVar7->flavour & 0xfffffffffffffff8);\n    pbVar7->name = pbVar3->name;\n    pbVar7->backend_data = pbVar3->backend_data;\n    lVar13 = (long)pbVar7 - (long)puVar18;\n    puVar16 = (undefined8 *)((long)pbVar3 - lVar13);\n    for (uVar11 = (ulong)((int)lVar13 + 0x370U >> 3); uVar11 != 0; uVar11 = uVar11 - 1) {\n      *puVar18 = *puVar16;\n      puVar16 = puVar16 + (ulong)bVar24 * -2 + 1;\n      puVar18 = puVar18 + (ulong)bVar24 * -2 + 1;\n    }\n    abfd->xvec = pbVar7;\n    pbVar7->byteorder = endian;\n  }" { (expression_statement "pbVar7 = (bfd_target *)xmalloc(0x370);" (assignment_expression "pbVar7 = (bfd_target *)xmalloc(0x370)" identifier = (cast_expression "(bfd_target *)xmalloc(0x370)" ( (type_descriptor "bfd_target *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x370)" identifier (argument_list "(0x370)" ( number_literal ))))) ;) (expression_statement "pbVar3 = abfd->xvec;" (assignment_expression "pbVar3 = abfd->xvec" identifier = (field_expression "abfd->xvec" identifier -> field_identifier)) ;) (expression_statement "puVar18 = (undefined8 *)((ulong)&pbVar7->flavour & 0xfffffffffffffff8);" (assignment_expression "puVar18 = (undefined8 *)((ulong)&pbVar7->flavour & 0xfffffffffffffff8)" identifier = (cast_expression "(undefined8 *)((ulong)&pbVar7->flavour & 0xfffffffffffffff8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)&pbVar7->flavour & 0xfffffffffffffff8)" ( (binary_expression "(ulong)&pbVar7->flavour & 0xfffffffffffffff8" (binary_expression "(ulong)&pbVar7->flavour" (parenthesized_expression "(ulong)" ( identifier )) & (field_expression "pbVar7->flavour" identifier -> field_identifier)) & number_literal) )))) ;) (expression_statement "pbVar7->name = pbVar3->name;" (assignment_expression "pbVar7->name = pbVar3->name" (field_expression "pbVar7->name" identifier -> field_identifier) = (field_expression "pbVar3->name" identifier -> field_identifier)) ;) (expression_statement "pbVar7->backend_data = pbVar3->backend_data;" (assignment_expression "pbVar7->backend_data = pbVar3->backend_data" (field_expression "pbVar7->backend_data" identifier -> field_identifier) = (field_expression "pbVar3->backend_data" identifier -> field_identifier)) ;) (expression_statement "lVar13 = (long)pbVar7 - (long)puVar18;" (assignment_expression "lVar13 = (long)pbVar7 - (long)puVar18" identifier = (binary_expression "(long)pbVar7 - (long)puVar18" (cast_expression "(long)pbVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar18" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "puVar16 = (undefined8 *)((long)pbVar3 - lVar13);" (assignment_expression "puVar16 = (undefined8 *)((long)pbVar3 - lVar13)" identifier = (cast_expression "(undefined8 *)((long)pbVar3 - lVar13)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pbVar3 - lVar13)" ( (binary_expression "(long)pbVar3 - lVar13" (cast_expression "(long)pbVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier) )))) ;) (for_statement "for (uVar11 = (ulong)((int)lVar13 + 0x370U >> 3); uVar11 != 0; uVar11 = uVar11 - 1) {\n      *puVar18 = *puVar16;\n      puVar16 = puVar16 + (ulong)bVar24 * -2 + 1;\n      puVar18 = puVar18 + (ulong)bVar24 * -2 + 1;\n    }" for ( (assignment_expression "uVar11 = (ulong)((int)lVar13 + 0x370U >> 3)" identifier = (call_expression "(ulong)((int)lVar13 + 0x370U >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)lVar13 + 0x370U >> 3)" ( (binary_expression "(int)lVar13 + 0x370U >> 3" (binary_expression "(int)lVar13 + 0x370U" (cast_expression "(int)lVar13" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal) )))) ; (binary_expression "uVar11 != 0" identifier != number_literal) ; (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ) (compound_statement "{\n      *puVar18 = *puVar16;\n      puVar16 = puVar16 + (ulong)bVar24 * -2 + 1;\n      puVar18 = puVar18 + (ulong)bVar24 * -2 + 1;\n    }" { (expression_statement "*puVar18 = *puVar16;" (assignment_expression "*puVar18 = *puVar16" (pointer_expression "*puVar18" * identifier) = (pointer_expression "*puVar16" * identifier)) ;) (expression_statement "puVar16 = puVar16 + (ulong)bVar24 * -2 + 1;" (assignment_expression "puVar16 = puVar16 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "puVar16 + (ulong)bVar24 * -2 + 1" (binary_expression "puVar16 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar18 = puVar18 + (ulong)bVar24 * -2 + 1;" (assignment_expression "puVar18 = puVar18 + (ulong)bVar24 * -2 + 1" identifier = (binary_expression "puVar18 + (ulong)bVar24 * -2 + 1" (binary_expression "puVar18 + (ulong)bVar24 * -2" identifier + (binary_expression "(ulong)bVar24 * -2" (cast_expression "(ulong)bVar24" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "abfd->xvec = pbVar7;" (assignment_expression "abfd->xvec = pbVar7" (field_expression "abfd->xvec" identifier -> field_identifier) = identifier) ;) (expression_statement "pbVar7->byteorder = endian;" (assignment_expression "pbVar7->byteorder = endian" (field_expression "pbVar7->byteorder" identifier -> field_identifier) = identifier) ;) })) (expression_statement "uVar8 = bfd_get_mach(abfd);" (assignment_expression "uVar8 = bfd_get_mach(abfd)" identifier = (call_expression "bfd_get_mach(abfd)" identifier (argument_list "(abfd)" ( identifier )))) ;) (expression_statement "bVar1 = abfd->xvec->byteorder;" (assignment_expression "bVar1 = abfd->xvec->byteorder" identifier = (field_expression "abfd->xvec->byteorder" (field_expression "abfd->xvec" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "uVar4 = bfd_get_arch(abfd);" (assignment_expression "uVar4 = bfd_get_arch(abfd)" identifier = (call_expression "bfd_get_arch(abfd)" identifier (argument_list "(abfd)" ( identifier )))) ;) (expression_statement "aux.disassemble_fn = (disassembler_ftype)disassembler(uVar4,bVar1 == BFD_ENDIAN_BIG,uVar8,abfd);" (assignment_expression "aux.disassemble_fn = (disassembler_ftype)disassembler(uVar4,bVar1 == BFD_ENDIAN_BIG,uVar8,abfd)" (field_expression "aux.disassemble_fn" identifier . field_identifier) = (cast_expression "(disassembler_ftype)disassembler(uVar4,bVar1 == BFD_ENDIAN_BIG,uVar8,abfd)" ( (type_descriptor "disassembler_ftype" type_identifier) ) (call_expression "disassembler(uVar4,bVar1 == BFD_ENDIAN_BIG,uVar8,abfd)" identifier (argument_list "(uVar4,bVar1 == BFD_ENDIAN_BIG,uVar8,abfd)" ( identifier , (binary_expression "bVar1 == BFD_ENDIAN_BIG" identifier == identifier) , identifier , identifier ))))) ;) (if_statement "if (aux.disassemble_fn == (disassembler_ftype)0x0) {\n    uVar4 = bfd_get_arch(abfd);\n    uVar8 = bfd_printable_arch_mach(uVar4,0);\n    pcVar9 = (char *)dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    non_fatal(pcVar9,uVar8);\n    exit_status = 1;\n    return;\n  }" if (parenthesized_expression "(aux.disassemble_fn == (disassembler_ftype)0x0)" ( (binary_expression "aux.disassemble_fn == (disassembler_ftype)0x0" (field_expression "aux.disassemble_fn" identifier . field_identifier) == (cast_expression "(disassembler_ftype)0x0" ( (type_descriptor "disassembler_ftype" type_identifier) ) number_literal)) )) (compound_statement "{\n    uVar4 = bfd_get_arch(abfd);\n    uVar8 = bfd_printable_arch_mach(uVar4,0);\n    pcVar9 = (char *)dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    non_fatal(pcVar9,uVar8);\n    exit_status = 1;\n    return;\n  }" { (expression_statement "uVar4 = bfd_get_arch(abfd);" (assignment_expression "uVar4 = bfd_get_arch(abfd)" identifier = (call_expression "bfd_get_arch(abfd)" identifier (argument_list "(abfd)" ( identifier )))) ;) (expression_statement "uVar8 = bfd_printable_arch_mach(uVar4,0);" (assignment_expression "uVar8 = bfd_printable_arch_mach(uVar4,0)" identifier = (call_expression "bfd_printable_arch_mach(uVar4,0)" identifier (argument_list "(uVar4,0)" ( identifier , number_literal )))) ;) (expression_statement "pcVar9 = (char *)dcgettext(0,"can\'t disassemble for architecture %s\n",5);" (assignment_expression "pcVar9 = (char *)dcgettext(0,"can\'t disassemble for architecture %s\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"can\'t disassemble for architecture %s\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"can\'t disassemble for architecture %s\n",5)" identifier (argument_list "(0,"can\'t disassemble for architecture %s\n",5)" ( number_literal , (string_literal ""can\'t disassemble for architecture %s\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "non_fatal(pcVar9,uVar8);" (call_expression "non_fatal(pcVar9,uVar8)" identifier (argument_list "(pcVar9,uVar8)" ( identifier , identifier ))) ;) (expression_statement "exit_status = 1;" (assignment_expression "exit_status = 1" identifier = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "disasm_info.flavour = abfd->xvec->flavour;" (assignment_expression "disasm_info.flavour = abfd->xvec->flavour" (field_expression "disasm_info.flavour" identifier . field_identifier) = (field_expression "abfd->xvec->flavour" (field_expression "abfd->xvec" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "disasm_info.arch = bfd_get_arch(abfd);" (assignment_expression "disasm_info.arch = bfd_get_arch(abfd)" (field_expression "disasm_info.arch" identifier . field_identifier) = (call_expression "bfd_get_arch(abfd)" identifier (argument_list "(abfd)" ( identifier )))) ;) (expression_statement "disasm_info.mach = bfd_get_mach(abfd);" (assignment_expression "disasm_info.mach = bfd_get_mach(abfd)" (field_expression "disasm_info.mach" identifier . field_identifier) = (call_expression "bfd_get_mach(abfd)" identifier (argument_list "(abfd)" ( identifier )))) ;) (expression_statement "disasm_info.disassembler_options = disassembler_options;" (assignment_expression "disasm_info.disassembler_options = disassembler_options" (field_expression "disasm_info.disassembler_options" identifier . field_identifier) = identifier) ;) (expression_statement "disasm_info.octets_per_byte = bfd_octets_per_byte(abfd);" (assignment_expression "disasm_info.octets_per_byte = bfd_octets_per_byte(abfd)" (field_expression "disasm_info.octets_per_byte" identifier . field_identifier) = (call_expression "bfd_octets_per_byte(abfd)" identifier (argument_list "(abfd)" ( identifier )))) ;) (expression_statement "disasm_info.disassembler_needs_relocs = 0;" (assignment_expression "disasm_info.disassembler_needs_relocs = 0" (field_expression "disasm_info.disassembler_needs_relocs" identifier . field_identifier) = number_literal) ;) (expression_statement "disasm_info.skip_zeroes = 8;" (assignment_expression "disasm_info.skip_zeroes = 8" (field_expression "disasm_info.skip_zeroes" identifier . field_identifier) = number_literal) ;) (expression_statement "disasm_info.skip_zeroes_at_end = 3;" (assignment_expression "disasm_info.skip_zeroes_at_end = 3" (field_expression "disasm_info.skip_zeroes_at_end" identifier . field_identifier) = number_literal) ;) (expression_statement "bVar1 = abfd->xvec->byteorder;" (assignment_expression "bVar1 = abfd->xvec->byteorder" identifier = (field_expression "abfd->xvec->byteorder" (field_expression "abfd->xvec" identifier -> field_identifier) -> field_identifier)) ;) (if_statement "if (bVar1 == BFD_ENDIAN_BIG) {\n    disasm_info.endian = BFD_ENDIAN_BIG;\n    disasm_info.display_endian = BFD_ENDIAN_BIG;\n  }\n  else if (bVar1 == BFD_ENDIAN_LITTLE) {\n    disasm_info.endian = BFD_ENDIAN_LITTLE;\n    disasm_info.display_endian = BFD_ENDIAN_LITTLE;\n  }\n  else {\n    disasm_info.endian = BFD_ENDIAN_UNKNOWN;\n  }" if (parenthesized_expression "(bVar1 == BFD_ENDIAN_BIG)" ( (binary_expression "bVar1 == BFD_ENDIAN_BIG" identifier == identifier) )) (compound_statement "{\n    disasm_info.endian = BFD_ENDIAN_BIG;\n    disasm_info.display_endian = BFD_ENDIAN_BIG;\n  }" { (expression_statement "disasm_info.endian = BFD_ENDIAN_BIG;" (assignment_expression "disasm_info.endian = BFD_ENDIAN_BIG" (field_expression "disasm_info.endian" identifier . field_identifier) = identifier) ;) (expression_statement "disasm_info.display_endian = BFD_ENDIAN_BIG;" (assignment_expression "disasm_info.display_endian = BFD_ENDIAN_BIG" (field_expression "disasm_info.display_endian" identifier . field_identifier) = identifier) ;) }) (else_clause "else if (bVar1 == BFD_ENDIAN_LITTLE) {\n    disasm_info.endian = BFD_ENDIAN_LITTLE;\n    disasm_info.display_endian = BFD_ENDIAN_LITTLE;\n  }\n  else {\n    disasm_info.endian = BFD_ENDIAN_UNKNOWN;\n  }" else (if_statement "if (bVar1 == BFD_ENDIAN_LITTLE) {\n    disasm_info.endian = BFD_ENDIAN_LITTLE;\n    disasm_info.display_endian = BFD_ENDIAN_LITTLE;\n  }\n  else {\n    disasm_info.endian = BFD_ENDIAN_UNKNOWN;\n  }" if (parenthesized_expression "(bVar1 == BFD_ENDIAN_LITTLE)" ( (binary_expression "bVar1 == BFD_ENDIAN_LITTLE" identifier == identifier) )) (compound_statement "{\n    disasm_info.endian = BFD_ENDIAN_LITTLE;\n    disasm_info.display_endian = BFD_ENDIAN_LITTLE;\n  }" { (expression_statement "disasm_info.endian = BFD_ENDIAN_LITTLE;" (assignment_expression "disasm_info.endian = BFD_ENDIAN_LITTLE" (field_expression "disasm_info.endian" identifier . field_identifier) = identifier) ;) (expression_statement "disasm_info.display_endian = BFD_ENDIAN_LITTLE;" (assignment_expression "disasm_info.display_endian = BFD_ENDIAN_LITTLE" (field_expression "disasm_info.display_endian" identifier . field_identifier) = identifier) ;) }) (else_clause "else {\n    disasm_info.endian = BFD_ENDIAN_UNKNOWN;\n  }" else (compound_statement "{\n    disasm_info.endian = BFD_ENDIAN_UNKNOWN;\n  }" { (expression_statement "disasm_info.endian = BFD_ENDIAN_UNKNOWN;" (assignment_expression "disasm_info.endian = BFD_ENDIAN_UNKNOWN" (field_expression "disasm_info.endian" identifier . field_identifier) = identifier) ;) }))))) (expression_statement "disassemble_init_for_target(&disasm_info);" (call_expression "disassemble_init_for_target(&disasm_info)" identifier (argument_list "(&disasm_info)" ( (pointer_expression "&disasm_info" & identifier) ))) ;) (expression_statement "lVar13 = (*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound)(abfd);" (assignment_expression "lVar13 = (*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound)(abfd)" identifier = (call_expression "(*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound)(abfd)" (parenthesized_expression "(*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound)" ( (pointer_expression "*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound" * (field_expression "abfd->xvec->_bfd_get_dynamic_reloc_upper_bound" (field_expression "abfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(abfd)" ( identifier )))) ;) (if_statement "if (lVar13 < 0) {\n    if (dump_dynamic_reloc_info != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      bfd_fatal(abfd->filename);\n    }\n  }\n  else if (lVar13 != 0) {\n    aux.dynrelbuf = (arelent **)xmalloc(lVar13);\n    aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);\n    if (aux.dynrelcount < 0) goto LAB_00109bee;\n    qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);\n  }" if (parenthesized_expression "(lVar13 < 0)" ( (binary_expression "lVar13 < 0" identifier < number_literal) )) (compound_statement "{\n    if (dump_dynamic_reloc_info != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      bfd_fatal(abfd->filename);\n    }\n  }" { (if_statement "if (dump_dynamic_reloc_info != 0) {\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      bfd_fatal(abfd->filename);\n    }" if (parenthesized_expression "(dump_dynamic_reloc_info != 0)" ( (binary_expression "dump_dynamic_reloc_info != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      bfd_fatal(abfd->filename);\n    }" { (labeled_statement "LAB_00109bee:\n                    /* WARNING: Subroutine does not return */\n      bfd_fatal(abfd->filename);" statement_identifier : comment (expression_statement "bfd_fatal(abfd->filename);" (call_expression "bfd_fatal(abfd->filename)" identifier (argument_list "(abfd->filename)" ( (field_expression "abfd->filename" identifier -> field_identifier) ))) ;)) })) }) (else_clause "else if (lVar13 != 0) {\n    aux.dynrelbuf = (arelent **)xmalloc(lVar13);\n    aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);\n    if (aux.dynrelcount < 0) goto LAB_00109bee;\n    qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);\n  }" else (if_statement "if (lVar13 != 0) {\n    aux.dynrelbuf = (arelent **)xmalloc(lVar13);\n    aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);\n    if (aux.dynrelcount < 0) goto LAB_00109bee;\n    qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);\n  }" if (parenthesized_expression "(lVar13 != 0)" ( (binary_expression "lVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    aux.dynrelbuf = (arelent **)xmalloc(lVar13);\n    aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);\n    if (aux.dynrelcount < 0) goto LAB_00109bee;\n    qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);\n  }" { (expression_statement "aux.dynrelbuf = (arelent **)xmalloc(lVar13);" (assignment_expression "aux.dynrelbuf = (arelent **)xmalloc(lVar13)" (field_expression "aux.dynrelbuf" identifier . field_identifier) = (cast_expression "(arelent **)xmalloc(lVar13)" ( (type_descriptor "arelent **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc(lVar13)" identifier (argument_list "(lVar13)" ( identifier ))))) ;) (expression_statement "aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);" (assignment_expression "aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms)" (field_expression "aux.dynrelcount" identifier . field_identifier) = (call_expression "(*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms)" (parenthesized_expression "(*abfd->xvec->_bfd_canonicalize_dynamic_reloc)" ( (pointer_expression "*abfd->xvec->_bfd_canonicalize_dynamic_reloc" * (field_expression "abfd->xvec->_bfd_canonicalize_dynamic_reloc" (field_expression "abfd->xvec" identifier -> field_identifier) -> field_identifier)) )) (argument_list "(abfd,aux.dynrelbuf,dynsyms)" ( identifier , (field_expression "aux.dynrelbuf" identifier . field_identifier) , identifier )))) ;) (if_statement "if (aux.dynrelcount < 0) goto LAB_00109bee;" if (parenthesized_expression "(aux.dynrelcount < 0)" ( (binary_expression "aux.dynrelcount < 0" (field_expression "aux.dynrelcount" identifier . field_identifier) < number_literal) )) (goto_statement "goto LAB_00109bee;" goto statement_identifier ;)) (expression_statement "qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);" (call_expression "qsort(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs)" identifier (argument_list "(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs)" ( (field_expression "aux.dynrelbuf" identifier . field_identifier) , (field_expression "aux.dynrelcount" identifier . field_identifier) , number_literal , identifier ))) ;) })))) (expression_statement "disasm_info.symtab = sorted_syms;" (assignment_expression "disasm_info.symtab = sorted_syms" (field_expression "disasm_info.symtab" identifier . field_identifier) = identifier) ;) (expression_statement "disasm_info.symtab_size = (int)sorted_symcount;" (assignment_expression "disasm_info.symtab_size = (int)sorted_symcount" (field_expression "disasm_info.symtab_size" identifier . field_identifier) = (cast_expression "(int)sorted_symcount" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bfd_map_over_sections(abfd,disassemble_section,&disasm_info);" (call_expression "bfd_map_over_sections(abfd,disassemble_section,&disasm_info)" identifier (argument_list "(abfd,disassemble_section,&disasm_info)" ( identifier , identifier , (pointer_expression "&disasm_info" & identifier) ))) ;) (if_statement "if (aux.dynrelbuf != (arelent **)0x0) {\n    free(aux.dynrelbuf);\n  }" if (parenthesized_expression "(aux.dynrelbuf != (arelent **)0x0)" ( (binary_expression "aux.dynrelbuf != (arelent **)0x0" (field_expression "aux.dynrelbuf" identifier . field_identifier) != (cast_expression "(arelent **)0x0" ( (type_descriptor "arelent **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n    free(aux.dynrelbuf);\n  }" { (expression_statement "free(aux.dynrelbuf);" (call_expression "free(aux.dynrelbuf)" identifier (argument_list "(aux.dynrelbuf)" ( (field_expression "aux.dynrelbuf" identifier . field_identifier) ))) ;) })) (expression_statement "free(sorted_syms);" (call_expression "free(sorted_syms)" identifier (argument_list "(sorted_syms)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001097d0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long *__base;\n  long *plVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  ulong uVar9;\n  long lVar10;\n  void *__src;\n  byte *pbVar11;\n  byte *pbVar12;\n  undefined8 *puVar13;\n  byte *pbVar14;\n  undefined8 *puVar15;\n  long *plVar16;\n  long *plVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  undefined8 *local_168 [2];\n  undefined4 local_158;\n  void *local_150;\n  size_t local_148;\n  long local_140;\n  undefined8 local_138;\n  undefined1 local_128 [16];\n  undefined1 *local_118;\n  undefined4 local_110;\n  undefined4 local_10c;\n  undefined8 local_108;\n  undefined4 local_100;\n  void *local_d8;\n  undefined4 local_cc;\n  code *local_a8;\n  code *local_a0;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined8 local_68;\n  undefined4 local_60;\n  undefined8 local_40;\n  \n  bVar21 = 0;\n  DAT_00157238 = 0;\n  DAT_00157248 = 0;\n  DAT_00157244 = 0xffffffff;\n  DAT_00157298 = DAT_001572a8;\n  if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }\n  DAT_00157240 = 0;\n  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);\n  lVar10 = DAT_00157298;\n  __src = DAT_00157290;\n  if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }\n  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);\n  plVar3 = __base;\n  plVar16 = __base;\nLAB_00109890:\n  lVar10 = lVar10 + -1;\n  plVar17 = plVar16;\n  if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;\n  if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }\n  qsort(__base,DAT_00157298,8,FUN_00109c90);\n  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);\n  local_a8 = FUN_001091e0;\n  local_158 = 0;\n  local_150 = (void *)0x0;\n  local_148 = 0;\n  local_138 = 0;\n  local_a0 = FUN_00108a80;\n  local_168[0] = param_1;\n  local_118 = (undefined1 *)local_168;\n  if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }\n  if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }\n  uVar6 = bfd_get_mach(param_1);\n  iVar1 = *(int *)(param_1[1] + 0xc);\n  uVar2 = bfd_get_arch(param_1);\n  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);\n  if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }\n  local_110 = *(undefined4 *)(param_1[1] + 8);\n  local_10c = bfd_get_arch(param_1);\n  local_108 = bfd_get_mach(param_1);\n  local_40 = DAT_001572b8;\n  local_6c = bfd_octets_per_byte(param_1);\n  local_60 = 0;\n  local_68 = 0x300000008;\n  if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }\n  disassemble_init_for_target(local_128);\n  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);\n  if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }\n  local_d8 = DAT_001572a0;\n  local_cc = (undefined4)DAT_00157298;\n  bfd_map_over_sections(param_1,FUN_0010d910,local_128);\n  if (local_150 != (void *)0x0) {\n    free(local_150);\n  }\n  free(DAT_001572a0);\n  return;\n}\n\n" (function_definition "void FUN_001097d0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long *__base;\n  long *plVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  ulong uVar9;\n  long lVar10;\n  void *__src;\n  byte *pbVar11;\n  byte *pbVar12;\n  undefined8 *puVar13;\n  byte *pbVar14;\n  undefined8 *puVar15;\n  long *plVar16;\n  long *plVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  undefined8 *local_168 [2];\n  undefined4 local_158;\n  void *local_150;\n  size_t local_148;\n  long local_140;\n  undefined8 local_138;\n  undefined1 local_128 [16];\n  undefined1 *local_118;\n  undefined4 local_110;\n  undefined4 local_10c;\n  undefined8 local_108;\n  undefined4 local_100;\n  void *local_d8;\n  undefined4 local_cc;\n  code *local_a8;\n  code *local_a0;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined8 local_68;\n  undefined4 local_60;\n  undefined8 local_40;\n  \n  bVar21 = 0;\n  DAT_00157238 = 0;\n  DAT_00157248 = 0;\n  DAT_00157244 = 0xffffffff;\n  DAT_00157298 = DAT_001572a8;\n  if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }\n  DAT_00157240 = 0;\n  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);\n  lVar10 = DAT_00157298;\n  __src = DAT_00157290;\n  if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }\n  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);\n  plVar3 = __base;\n  plVar16 = __base;\nLAB_00109890:\n  lVar10 = lVar10 + -1;\n  plVar17 = plVar16;\n  if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;\n  if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }\n  qsort(__base,DAT_00157298,8,FUN_00109c90);\n  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);\n  local_a8 = FUN_001091e0;\n  local_158 = 0;\n  local_150 = (void *)0x0;\n  local_148 = 0;\n  local_138 = 0;\n  local_a0 = FUN_00108a80;\n  local_168[0] = param_1;\n  local_118 = (undefined1 *)local_168;\n  if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }\n  if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }\n  uVar6 = bfd_get_mach(param_1);\n  iVar1 = *(int *)(param_1[1] + 0xc);\n  uVar2 = bfd_get_arch(param_1);\n  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);\n  if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }\n  local_110 = *(undefined4 *)(param_1[1] + 8);\n  local_10c = bfd_get_arch(param_1);\n  local_108 = bfd_get_mach(param_1);\n  local_40 = DAT_001572b8;\n  local_6c = bfd_octets_per_byte(param_1);\n  local_60 = 0;\n  local_68 = 0x300000008;\n  if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }\n  disassemble_init_for_target(local_128);\n  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);\n  if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }\n  local_d8 = DAT_001572a0;\n  local_cc = (undefined4)DAT_00157298;\n  bfd_map_over_sections(param_1,FUN_0010d910,local_128);\n  if (local_150 != (void *)0x0) {\n    free(local_150);\n  }\n  free(DAT_001572a0);\n  return;\n}" primitive_type (function_declarator "FUN_001097d0(undefined8 *param_1)" identifier (parameter_list "(undefined8 *param_1)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  long *__base;\n  long *plVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  ulong uVar9;\n  long lVar10;\n  void *__src;\n  byte *pbVar11;\n  byte *pbVar12;\n  undefined8 *puVar13;\n  byte *pbVar14;\n  undefined8 *puVar15;\n  long *plVar16;\n  long *plVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  undefined8 *local_168 [2];\n  undefined4 local_158;\n  void *local_150;\n  size_t local_148;\n  long local_140;\n  undefined8 local_138;\n  undefined1 local_128 [16];\n  undefined1 *local_118;\n  undefined4 local_110;\n  undefined4 local_10c;\n  undefined8 local_108;\n  undefined4 local_100;\n  void *local_d8;\n  undefined4 local_cc;\n  code *local_a8;\n  code *local_a0;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined8 local_68;\n  undefined4 local_60;\n  undefined8 local_40;\n  \n  bVar21 = 0;\n  DAT_00157238 = 0;\n  DAT_00157248 = 0;\n  DAT_00157244 = 0xffffffff;\n  DAT_00157298 = DAT_001572a8;\n  if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }\n  DAT_00157240 = 0;\n  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);\n  lVar10 = DAT_00157298;\n  __src = DAT_00157290;\n  if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }\n  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);\n  plVar3 = __base;\n  plVar16 = __base;\nLAB_00109890:\n  lVar10 = lVar10 + -1;\n  plVar17 = plVar16;\n  if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;\n  if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }\n  qsort(__base,DAT_00157298,8,FUN_00109c90);\n  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);\n  local_a8 = FUN_001091e0;\n  local_158 = 0;\n  local_150 = (void *)0x0;\n  local_148 = 0;\n  local_138 = 0;\n  local_a0 = FUN_00108a80;\n  local_168[0] = param_1;\n  local_118 = (undefined1 *)local_168;\n  if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }\n  if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }\n  uVar6 = bfd_get_mach(param_1);\n  iVar1 = *(int *)(param_1[1] + 0xc);\n  uVar2 = bfd_get_arch(param_1);\n  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);\n  if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }\n  local_110 = *(undefined4 *)(param_1[1] + 8);\n  local_10c = bfd_get_arch(param_1);\n  local_108 = bfd_get_mach(param_1);\n  local_40 = DAT_001572b8;\n  local_6c = bfd_octets_per_byte(param_1);\n  local_60 = 0;\n  local_68 = 0x300000008;\n  if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }\n  disassemble_init_for_target(local_128);\n  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);\n  if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }\n  local_d8 = DAT_001572a0;\n  local_cc = (undefined4)DAT_00157298;\n  bfd_map_over_sections(param_1,FUN_0010d910,local_128);\n  if (local_150 != (void *)0x0) {\n    free(local_150);\n  }\n  free(DAT_001572a0);\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "long *__base;" (sized_type_specifier "long" long) (pointer_declarator "*__base" * identifier) ;) (declaration "long *plVar3;" (sized_type_specifier "long" long) (pointer_declarator "*plVar3" * identifier) ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "void *__src;" primitive_type (pointer_declarator "*__src" * identifier) ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte *pbVar12;" type_identifier (pointer_declarator "*pbVar12" * identifier) ;) (declaration "undefined8 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "undefined8 *puVar15;" type_identifier (pointer_declarator "*puVar15" * identifier) ;) (declaration "long *plVar16;" (sized_type_specifier "long" long) (pointer_declarator "*plVar16" * identifier) ;) (declaration "long *plVar17;" (sized_type_specifier "long" long) (pointer_declarator "*plVar17" * identifier) ;) (declaration "bool bVar18;" primitive_type identifier ;) (declaration "bool bVar19;" primitive_type identifier ;) (declaration "bool bVar20;" primitive_type identifier ;) (declaration "byte bVar21;" type_identifier identifier ;) (declaration "undefined8 *local_168 [2];" type_identifier (pointer_declarator "*local_168 [2]" * (array_declarator "local_168 [2]" identifier [ number_literal ])) ;) (declaration "undefined4 local_158;" type_identifier identifier ;) (declaration "void *local_150;" primitive_type (pointer_declarator "*local_150" * identifier) ;) (declaration "size_t local_148;" primitive_type identifier ;) (declaration "long local_140;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_138;" type_identifier identifier ;) (declaration "undefined1 local_128 [16];" type_identifier (array_declarator "local_128 [16]" identifier [ number_literal ]) ;) (declaration "undefined1 *local_118;" type_identifier (pointer_declarator "*local_118" * identifier) ;) (declaration "undefined4 local_110;" type_identifier identifier ;) (declaration "undefined4 local_10c;" type_identifier identifier ;) (declaration "undefined8 local_108;" type_identifier identifier ;) (declaration "undefined4 local_100;" type_identifier identifier ;) (declaration "void *local_d8;" primitive_type (pointer_declarator "*local_d8" * identifier) ;) (declaration "undefined4 local_cc;" type_identifier identifier ;) (declaration "code *local_a8;" type_identifier (pointer_declarator "*local_a8" * identifier) ;) (declaration "code *local_a0;" type_identifier (pointer_declarator "*local_a0" * identifier) ;) (declaration "undefined4 local_70;" type_identifier identifier ;) (declaration "undefined4 local_6c;" type_identifier identifier ;) (declaration "undefined8 local_68;" type_identifier identifier ;) (declaration "undefined4 local_60;" type_identifier identifier ;) (declaration "undefined8 local_40;" type_identifier identifier ;) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" identifier = number_literal) ;) (expression_statement "DAT_00157238 = 0;" (assignment_expression "DAT_00157238 = 0" identifier = number_literal) ;) (expression_statement "DAT_00157248 = 0;" (assignment_expression "DAT_00157248 = 0" identifier = number_literal) ;) (expression_statement "DAT_00157244 = 0xffffffff;" (assignment_expression "DAT_00157244 = 0xffffffff" identifier = number_literal) ;) (expression_statement "DAT_00157298 = DAT_001572a8;" (assignment_expression "DAT_00157298 = DAT_001572a8" identifier = identifier) ;) (if_statement "if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }" if (parenthesized_expression "(DAT_001572a8 == 0)" ( (binary_expression "DAT_001572a8 == 0" identifier == number_literal) )) (compound_statement "{\n    DAT_00157298 = DAT_00157278;\n  }" { (expression_statement "DAT_00157298 = DAT_00157278;" (assignment_expression "DAT_00157298 = DAT_00157278" identifier = identifier) ;) })) (expression_statement "DAT_00157240 = 0;" (assignment_expression "DAT_00157240 = 0" identifier = number_literal) ;) (expression_statement "DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);" (assignment_expression "DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8)" identifier = (cast_expression "(void *)xmalloc((DAT_00157298 + DAT_00157280) * 8)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((DAT_00157298 + DAT_00157280) * 8)" identifier (argument_list "((DAT_00157298 + DAT_00157280) * 8)" ( (binary_expression "(DAT_00157298 + DAT_00157280) * 8" (parenthesized_expression "(DAT_00157298 + DAT_00157280)" ( (binary_expression "DAT_00157298 + DAT_00157280" identifier + identifier) )) * number_literal) ))))) ;) (expression_statement "lVar10 = DAT_00157298;" (assignment_expression "lVar10 = DAT_00157298" identifier = identifier) ;) (expression_statement "__src = DAT_00157290;" (assignment_expression "__src = DAT_00157290" identifier = identifier) ;) (if_statement "if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }" if (parenthesized_expression "(DAT_001572a8 != 0)" ( (binary_expression "DAT_001572a8 != 0" identifier != number_literal) )) (compound_statement "{\n    __src = DAT_001572b0;\n  }" { (expression_statement "__src = DAT_001572b0;" (assignment_expression "__src = DAT_001572b0" identifier = identifier) ;) })) (expression_statement "__base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);" (assignment_expression "__base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8)" identifier = (cast_expression "(long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "memcpy(DAT_001572a0,__src,DAT_00157298 * 8)" identifier (argument_list "(DAT_001572a0,__src,DAT_00157298 * 8)" ( identifier , identifier , (binary_expression "DAT_00157298 * 8" identifier * number_literal) ))))) ;) (expression_statement "plVar3 = __base;" (assignment_expression "plVar3 = __base" identifier = identifier) ;) (expression_statement "plVar16 = __base;" (assignment_expression "plVar16 = __base" identifier = identifier) ;) (labeled_statement "LAB_00109890:\n  lVar10 = lVar10 + -1;" statement_identifier : (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;)) (expression_statement "plVar17 = plVar16;" (assignment_expression "plVar17 = plVar16" identifier = identifier) ;) (if_statement "if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }" if (parenthesized_expression "(-1 < lVar10)" ( (binary_expression "-1 < lVar10" number_literal < identifier) )) (compound_statement "{\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }" { (while_statement "while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }" { (expression_statement "plVar16 = plVar17 + 1;" (assignment_expression "plVar16 = plVar17 + 1" identifier = (binary_expression "plVar17 + 1" identifier + number_literal)) ;) (expression_statement "lVar4 = *plVar17;" (assignment_expression "lVar4 = *plVar17" identifier = (pointer_expression "*plVar17" * identifier)) ;) (expression_statement "pbVar12 = *(byte **)(lVar4 + 8);" (assignment_expression "pbVar12 = *(byte **)(lVar4 + 8)" identifier = (pointer_expression "*(byte **)(lVar4 + 8)" * (cast_expression "(byte **)(lVar4 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar4 + 8)" ( (binary_expression "lVar4 + 8" identifier + number_literal) ))))) ;) (if_statement "if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;" if (parenthesized_expression "((pbVar12 == (byte *)0x0) || (*pbVar12 == 0))" ( (binary_expression "(pbVar12 == (byte *)0x0) || (*pbVar12 == 0)" (parenthesized_expression "(pbVar12 == (byte *)0x0)" ( (binary_expression "pbVar12 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(*pbVar12 == 0)" ( (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" * identifier) == number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" identifier = false) ;) (expression_statement "bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;" (assignment_expression "bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0" identifier = (binary_expression "(*(uint *)(lVar4 + 0x18) & 0x104) == 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x18) & 0x104)" ( (binary_expression "*(uint *)(lVar4 + 0x18) & 0x104" (pointer_expression "*(uint *)(lVar4 + 0x18)" * (cast_expression "(uint *)(lVar4 + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x18)" ( (binary_expression "lVar4 + 0x18" identifier + number_literal) )))) & number_literal) )) == number_literal)) ;) (if_statement "if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }" if (parenthesized_expression "(!bVar20)" ( (unary_expression "!bVar20" ! identifier) )) (compound_statement "{\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }" { (expression_statement "lVar8 = 4;" (assignment_expression "lVar8 = 4" identifier = number_literal) ;) (expression_statement "pbVar11 = pbVar12;" (assignment_expression "pbVar11 = pbVar12" identifier = identifier) ;) (expression_statement "pbVar14 = &DAT_0013d5f3;" (assignment_expression "pbVar14 = &DAT_0013d5f3" identifier = (pointer_expression "&DAT_0013d5f3" & identifier)) ;) (do_statement "do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);" do (compound_statement "{\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar18 = *pbVar11 < *pbVar14;" (assignment_expression "bVar18 = *pbVar11 < *pbVar14" identifier = (binary_expression "*pbVar11 < *pbVar14" (pointer_expression "*pbVar11" * identifier) < (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "bVar20 = *pbVar11 == *pbVar14;" (assignment_expression "bVar20 = *pbVar11 == *pbVar14" identifier = (binary_expression "*pbVar11 == *pbVar14" (pointer_expression "*pbVar11" * identifier) == (pointer_expression "*pbVar14" * identifier))) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "pbVar14 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar14 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar20)" ( identifier )) ;) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" identifier = false) ;) (expression_statement "bVar18 = (!bVar18 && !bVar20) == bVar18;" (assignment_expression "bVar18 = (!bVar18 && !bVar20) == bVar18" identifier = (binary_expression "(!bVar18 && !bVar20) == bVar18" (parenthesized_expression "(!bVar18 && !bVar20)" ( (binary_expression "!bVar18 && !bVar20" (unary_expression "!bVar18" ! identifier) && (unary_expression "!bVar20" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }" if (parenthesized_expression "(!bVar18)" ( (unary_expression "!bVar18" ! identifier) )) (compound_statement "{\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }" { (expression_statement "lVar8 = 5;" (assignment_expression "lVar8 = 5" identifier = number_literal) ;) (expression_statement "pbVar11 = &DAT_0013d5f8;" (assignment_expression "pbVar11 = &DAT_0013d5f8" identifier = (pointer_expression "&DAT_0013d5f8" & identifier)) ;) (do_statement "do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);" do (compound_statement "{\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          }" { (if_statement "if (lVar8 == 0) break;" if (parenthesized_expression "(lVar8 == 0)" ( (binary_expression "lVar8 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" identifier = (binary_expression "lVar8 + -1" identifier + number_literal)) ;) (expression_statement "bVar19 = *pbVar12 < *pbVar11;" (assignment_expression "bVar19 = *pbVar12 < *pbVar11" identifier = (binary_expression "*pbVar12 < *pbVar11" (pointer_expression "*pbVar12" * identifier) < (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "bVar18 = *pbVar12 == *pbVar11;" (assignment_expression "bVar18 = *pbVar12 == *pbVar11" identifier = (binary_expression "*pbVar12 == *pbVar11" (pointer_expression "*pbVar12" * identifier) == (pointer_expression "*pbVar11" * identifier))) ;) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "pbVar12 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "pbVar11 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar18)" ( identifier )) ;) (if_statement "if ((!bVar19 && !bVar18) != bVar19) break;" if (parenthesized_expression "((!bVar19 && !bVar18) != bVar19)" ( (binary_expression "(!bVar19 && !bVar18) != bVar19" (parenthesized_expression "(!bVar19 && !bVar18)" ( (binary_expression "!bVar19 && !bVar18" (unary_expression "!bVar19" ! identifier) && (unary_expression "!bVar18" ! identifier)) )) != identifier) )) (break_statement "break;" break ;)) })) })) (if_statement "if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;" if (parenthesized_expression "((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0))" ( (binary_expression "(*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)" (parenthesized_expression "(*(long *)(lVar4 + 0x20) == 0x156ed8)" ( (binary_expression "*(long *)(lVar4 + 0x20) == 0x156ed8" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)" ( (binary_expression "(*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10)" ( (binary_expression "*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10" (pointer_expression "*(byte *)(*(long *)(lVar4 + 0x20) + 0x21)" * (cast_expression "(byte *)(*(long *)(lVar4 + 0x20) + 0x21)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar4 + 0x20) + 0x21)" ( (binary_expression "*(long *)(lVar4 + 0x20) + 0x21" (pointer_expression "*(long *)(lVar4 + 0x20)" * (cast_expression "(long *)(lVar4 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar4 + 0x20)" ( (binary_expression "lVar4 + 0x20" identifier + number_literal) )))) + number_literal) )))) & number_literal) )) != number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "*plVar3 = lVar4;" (assignment_expression "*plVar3 = lVar4" (pointer_expression "*plVar3" * identifier) = identifier) ;) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" identifier = (binary_expression "plVar3 + 1" identifier + number_literal)) ;) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" identifier = (binary_expression "lVar10 + -1" identifier + number_literal)) ;) (expression_statement "plVar17 = plVar16;" (assignment_expression "plVar17 = plVar16" identifier = identifier) ;) (if_statement "if (lVar10 < 0) goto LAB_00109904;" if (parenthesized_expression "(lVar10 < 0)" ( (binary_expression "lVar10 < 0" identifier < number_literal) )) (goto_statement "goto LAB_00109904;" goto statement_identifier ;)) })) (goto_statement "goto LAB_00109890;" goto statement_identifier ;) })) (labeled_statement "LAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;" statement_identifier : (expression_statement "DAT_00157298 = (long)plVar3 - (long)__base >> 3;" (assignment_expression "DAT_00157298 = (long)plVar3 - (long)__base >> 3" identifier = (binary_expression "(long)plVar3 - (long)__base >> 3" (binary_expression "(long)plVar3 - (long)__base" (cast_expression "(long)plVar3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal)) ;)) (if_statement "if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }" if (parenthesized_expression "(0 < DAT_00157280)" ( (binary_expression "0 < DAT_00157280" number_literal < identifier) )) (compound_statement "{\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }" { (expression_statement "DAT_00157298 = DAT_00157280 + DAT_00157298;" (assignment_expression "DAT_00157298 = DAT_00157280 + DAT_00157298" identifier = (binary_expression "DAT_00157280 + DAT_00157298" identifier + identifier)) ;) (expression_statement "lVar10 = DAT_00157288;" (assignment_expression "lVar10 = DAT_00157288" identifier = identifier) ;) (do_statement "do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);" do (compound_statement "{\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    }" { (expression_statement "*plVar3 = lVar10;" (assignment_expression "*plVar3 = lVar10" (pointer_expression "*plVar3" * identifier) = identifier) ;) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" identifier = (binary_expression "plVar3 + 1" identifier + number_literal)) ;) (expression_statement "lVar10 = lVar10 + 0x30;" (assignment_expression "lVar10 = lVar10 + 0x30" identifier = (binary_expression "lVar10 + 0x30" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar3 != __base + DAT_00157298)" ( (binary_expression "plVar3 != __base + DAT_00157298" identifier != (binary_expression "__base + DAT_00157298" identifier + identifier)) )) ;) })) (expression_statement "qsort(__base,DAT_00157298,8,FUN_00109c90);" (call_expression "qsort(__base,DAT_00157298,8,FUN_00109c90)" identifier (argument_list "(__base,DAT_00157298,8,FUN_00109c90)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);" (call_expression "init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8)" identifier (argument_list "(local_128,stdout,PTR_fprintf_00154fa8)" ( identifier , identifier , identifier ))) ;) (expression_statement "local_a8 = FUN_001091e0;" (assignment_expression "local_a8 = FUN_001091e0" identifier = identifier) ;) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" identifier = number_literal) ;) (expression_statement "local_150 = (void *)0x0;" (assignment_expression "local_150 = (void *)0x0" identifier = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_148 = 0;" (assignment_expression "local_148 = 0" identifier = number_literal) ;) (expression_statement "local_138 = 0;" (assignment_expression "local_138 = 0" identifier = number_literal) ;) (expression_statement "local_a0 = FUN_00108a80;" (assignment_expression "local_a0 = FUN_00108a80" identifier = identifier) ;) (expression_statement "local_168[0] = param_1;" (assignment_expression "local_168[0] = param_1" (subscript_expression "local_168[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_118 = (undefined1 *)local_168;" (assignment_expression "local_118 = (undefined1 *)local_168" identifier = (cast_expression "(undefined1 *)local_168" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (if_statement "if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }" if (parenthesized_expression "(DAT_001572c0 != 0)" ( (binary_expression "DAT_001572c0 != 0" identifier != number_literal) )) (compound_statement "{\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }" { (expression_statement "local_118 = (undefined1 *)local_168;" (assignment_expression "local_118 = (undefined1 *)local_168" identifier = (cast_expression "(undefined1 *)local_168" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "lVar4 = bfd_scan_arch();" (assignment_expression "lVar4 = bfd_scan_arch()" identifier = (call_expression "bfd_scan_arch()" identifier (argument_list "()" ( )))) ;) (expression_statement "lVar10 = DAT_001572c0;" (assignment_expression "lVar10 = DAT_001572c0" identifier = identifier) ;) (if_statement "if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }" if (parenthesized_expression "(lVar4 == 0)" ( (binary_expression "lVar4 == 0" identifier == number_literal) )) (compound_statement "{\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }" { (expression_statement "uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);" (assignment_expression "uVar6 = dcgettext(0,"can\'t use supplied machine %s",5)" identifier = (call_expression "dcgettext(0,"can\'t use supplied machine %s",5)" identifier (argument_list "(0,"can\'t use supplied machine %s",5)" ( number_literal , (string_literal ""can\'t use supplied machine %s"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00136590(uVar6,lVar10);" (call_expression "FUN_00136590(uVar6,lVar10)" identifier (argument_list "(uVar6,lVar10)" ( identifier , identifier ))) ;) })) (expression_statement "param_1[0x18] = lVar4;" (assignment_expression "param_1[0x18] = lVar4" (subscript_expression "param_1[0x18]" identifier [ number_literal ]) = identifier) ;) })) (if_statement "if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }" if (parenthesized_expression "(DAT_00155450 != 2)" ( (binary_expression "DAT_00155450 != 2" identifier != number_literal) )) (compound_statement "{\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }" { (expression_statement "puVar5 = (undefined8 *)xmalloc(0x370);" (assignment_expression "puVar5 = (undefined8 *)xmalloc(0x370)" identifier = (cast_expression "(undefined8 *)xmalloc(0x370)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x370)" identifier (argument_list "(0x370)" ( number_literal ))))) ;) (expression_statement "puVar13 = (undefined8 *)param_1[1];" (assignment_expression "puVar13 = (undefined8 *)param_1[1]" identifier = (cast_expression "(undefined8 *)param_1[1]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[1]" identifier [ number_literal ]))) ;) (expression_statement "*puVar5 = *puVar13;" (assignment_expression "*puVar5 = *puVar13" (pointer_expression "*puVar5" * identifier) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar5[0x6d] = puVar13[0x6d];" (assignment_expression "puVar5[0x6d] = puVar13[0x6d]" (subscript_expression "puVar5[0x6d]" identifier [ number_literal ]) = (subscript_expression "puVar13[0x6d]" identifier [ number_literal ])) ;) (expression_statement "lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);" (assignment_expression "lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" identifier = (binary_expression "(long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar5 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) ))) & number_literal) ))))) ;) (expression_statement "puVar13 = (undefined8 *)((long)puVar13 - lVar10);" (assignment_expression "puVar13 = (undefined8 *)((long)puVar13 - lVar10)" identifier = (cast_expression "(undefined8 *)((long)puVar13 - lVar10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar13 - lVar10)" ( (binary_expression "(long)puVar13 - lVar10" (cast_expression "(long)puVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - identifier) )))) ;) (expression_statement "puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);" (assignment_expression "puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" identifier = (cast_expression "(undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" ( (binary_expression "(ulong)(puVar5 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar5 + 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(puVar5 + 1)" ( (binary_expression "puVar5 + 1" identifier + number_literal) ))) & number_literal) )))) ;) (for_statement "for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }" for ( (assignment_expression "uVar9 = (ulong)((int)lVar10 + 0x370U >> 3)" identifier = (call_expression "(ulong)((int)lVar10 + 0x370U >> 3)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)lVar10 + 0x370U >> 3)" ( (binary_expression "(int)lVar10 + 0x370U >> 3" (binary_expression "(int)lVar10 + 0x370U" (cast_expression "(int)lVar10" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) >> number_literal) )))) ; (binary_expression "uVar9 != 0" identifier != number_literal) ; (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ) (compound_statement "{\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }" { (expression_statement "*puVar15 = *puVar13;" (assignment_expression "*puVar15 = *puVar13" (pointer_expression "*puVar15" * identifier) = (pointer_expression "*puVar13" * identifier)) ;) (expression_statement "puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "puVar13 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar13 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar15 = puVar15 + (ulong)bVar21 * -2 + 1" identifier = (binary_expression "puVar15 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar15 + (ulong)bVar21 * -2" identifier + (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "param_1[1] = puVar5;" (assignment_expression "param_1[1] = puVar5" (subscript_expression "param_1[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(int *)((long)puVar5 + 0xc) = DAT_00155450;" (assignment_expression "*(int *)((long)puVar5 + 0xc) = DAT_00155450" (pointer_expression "*(int *)((long)puVar5 + 0xc)" * (cast_expression "(int *)((long)puVar5 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar5 + 0xc)" ( (binary_expression "(long)puVar5 + 0xc" (cast_expression "(long)puVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) })) (expression_statement "uVar6 = bfd_get_mach(param_1);" (assignment_expression "uVar6 = bfd_get_mach(param_1)" identifier = (call_expression "bfd_get_mach(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "iVar1 = *(int *)(param_1[1] + 0xc);" (assignment_expression "iVar1 = *(int *)(param_1[1] + 0xc)" identifier = (pointer_expression "*(int *)(param_1[1] + 0xc)" * (cast_expression "(int *)(param_1[1] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "uVar2 = bfd_get_arch(param_1);" (assignment_expression "uVar2 = bfd_get_arch(param_1)" identifier = (call_expression "bfd_get_arch(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);" (assignment_expression "local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1)" identifier = (call_expression "disassembler(uVar2,iVar1 == 0,uVar6,param_1)" identifier (argument_list "(uVar2,iVar1 == 0,uVar6,param_1)" ( identifier , (binary_expression "iVar1 == 0" identifier == number_literal) , identifier , identifier )))) ;) (if_statement "if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }" if (parenthesized_expression "(local_140 == 0)" ( (binary_expression "local_140 == 0" identifier == number_literal) )) (compound_statement "{\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }" { (expression_statement "uVar2 = bfd_get_arch(param_1);" (assignment_expression "uVar2 = bfd_get_arch(param_1)" identifier = (call_expression "bfd_get_arch(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "uVar6 = bfd_printable_arch_mach(uVar2,0);" (assignment_expression "uVar6 = bfd_printable_arch_mach(uVar2,0)" identifier = (call_expression "bfd_printable_arch_mach(uVar2,0)" identifier (argument_list "(uVar2,0)" ( identifier , number_literal )))) ;) (expression_statement "uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);" (assignment_expression "uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5)" identifier = (call_expression "dcgettext(0,"can\'t disassemble for architecture %s\n",5)" identifier (argument_list "(0,"can\'t disassemble for architecture %s\n",5)" ( number_literal , (string_literal ""can\'t disassemble for architecture %s\n"" " string_content escape_sequence string_content escape_sequence ") , number_literal )))) ;) (expression_statement "FUN_00136630(uVar7,uVar6);" (call_expression "FUN_00136630(uVar7,uVar6)" identifier (argument_list "(uVar7,uVar6)" ( identifier , identifier ))) ;) (expression_statement "DAT_00157388 = 1;" (assignment_expression "DAT_00157388 = 1" identifier = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "local_110 = *(undefined4 *)(param_1[1] + 8);" (assignment_expression "local_110 = *(undefined4 *)(param_1[1] + 8)" identifier = (pointer_expression "*(undefined4 *)(param_1[1] + 8)" * (cast_expression "(undefined4 *)(param_1[1] + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 8)" ( (binary_expression "param_1[1] + 8" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) ;) (expression_statement "local_10c = bfd_get_arch(param_1);" (assignment_expression "local_10c = bfd_get_arch(param_1)" identifier = (call_expression "bfd_get_arch(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_108 = bfd_get_mach(param_1);" (assignment_expression "local_108 = bfd_get_mach(param_1)" identifier = (call_expression "bfd_get_mach(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_40 = DAT_001572b8;" (assignment_expression "local_40 = DAT_001572b8" identifier = identifier) ;) (expression_statement "local_6c = bfd_octets_per_byte(param_1);" (assignment_expression "local_6c = bfd_octets_per_byte(param_1)" identifier = (call_expression "bfd_octets_per_byte(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" identifier = number_literal) ;) (expression_statement "local_68 = 0x300000008;" (assignment_expression "local_68 = 0x300000008" identifier = number_literal) ;) (if_statement "if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }" if (parenthesized_expression "(*(int *)(param_1[1] + 0xc) == 0)" ( (binary_expression "*(int *)(param_1[1] + 0xc) == 0" (pointer_expression "*(int *)(param_1[1] + 0xc)" * (cast_expression "(int *)(param_1[1] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_100 = 0;\n    local_70 = 0;\n  }" { (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" identifier = number_literal) ;) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" identifier = number_literal) ;) }) (else_clause "else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }" else (if_statement "if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }" if (parenthesized_expression "(*(int *)(param_1[1] + 0xc) == 1)" ( (binary_expression "*(int *)(param_1[1] + 0xc) == 1" (pointer_expression "*(int *)(param_1[1] + 0xc)" * (cast_expression "(int *)(param_1[1] + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[1] + 0xc)" ( (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) )))) == number_literal) )) (compound_statement "{\n    local_100 = 1;\n    local_70 = 1;\n  }" { (expression_statement "local_100 = 1;" (assignment_expression "local_100 = 1" identifier = number_literal) ;) (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" identifier = number_literal) ;) }) (else_clause "else {\n    local_100 = 2;\n  }" else (compound_statement "{\n    local_100 = 2;\n  }" { (expression_statement "local_100 = 2;" (assignment_expression "local_100 = 2" identifier = number_literal) ;) }))))) (expression_statement "disassemble_init_for_target(local_128);" (call_expression "disassemble_init_for_target(local_128)" identifier (argument_list "(local_128)" ( identifier ))) ;) (expression_statement "lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);" (assignment_expression "lVar10 = (**(code **)(param_1[1] + 0x350))(param_1)" identifier = (call_expression "(**(code **)(param_1[1] + 0x350))(param_1)" (parenthesized_expression "(**(code **)(param_1[1] + 0x350))" ( (pointer_expression "**(code **)(param_1[1] + 0x350)" * (pointer_expression "*(code **)(param_1[1] + 0x350)" * (cast_expression "(code **)(param_1[1] + 0x350)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 0x350)" ( (binary_expression "param_1[1] + 0x350" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" if (parenthesized_expression "(lVar10 < 0)" ( (binary_expression "lVar10 < 0" identifier < number_literal) )) (compound_statement "{\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }\n  }" { (if_statement "if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }" if (parenthesized_expression "(DAT_00157368 != 0)" ( (binary_expression "DAT_00157368 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }" { (labeled_statement "LAB_00109bee:\n                    \n      FUN_00136510(*param_1);" statement_identifier : (expression_statement "FUN_00136510(*param_1);" (call_expression "FUN_00136510(*param_1)" identifier (argument_list "(*param_1)" ( (pointer_expression "*param_1" * identifier) ))) ;)) })) }) (else_clause "else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" else (if_statement "if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" { (expression_statement "local_150 = (void *)xmalloc(lVar10);" (assignment_expression "local_150 = (void *)xmalloc(lVar10)" identifier = (cast_expression "(void *)xmalloc(lVar10)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(lVar10)" identifier (argument_list "(lVar10)" ( identifier ))))) ;) (expression_statement "local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);" (assignment_expression "local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290)" identifier = (call_expression "(**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290)" (parenthesized_expression "(**(code **)(param_1[1] + 0x358))" ( (pointer_expression "**(code **)(param_1[1] + 0x358)" * (pointer_expression "*(code **)(param_1[1] + 0x358)" * (cast_expression "(code **)(param_1[1] + 0x358)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1[1] + 0x358)" ( (binary_expression "param_1[1] + 0x358" (subscript_expression "param_1[1]" identifier [ number_literal ]) + number_literal) ))))) )) (argument_list "(param_1,local_150,DAT_00157290)" ( identifier , identifier , identifier )))) ;) (if_statement "if ((long)local_148 < 0) goto LAB_00109bee;" if (parenthesized_expression "((long)local_148 < 0)" ( (binary_expression "(long)local_148 < 0" (cast_expression "(long)local_148" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) (goto_statement "goto LAB_00109bee;" goto statement_identifier ;)) (expression_statement "qsort(local_150,local_148,8,FUN_00108380);" (call_expression "qsort(local_150,local_148,8,FUN_00108380)" identifier (argument_list "(local_150,local_148,8,FUN_00108380)" ( identifier , identifier , number_literal , identifier ))) ;) })))) (expression_statement "local_d8 = DAT_001572a0;" (assignment_expression "local_d8 = DAT_001572a0" identifier = identifier) ;) (expression_statement "local_cc = (undefined4)DAT_00157298;" (assignment_expression "local_cc = (undefined4)DAT_00157298" identifier = (cast_expression "(undefined4)DAT_00157298" ( (type_descriptor "undefined4" type_identifier) ) identifier)) ;) (expression_statement "bfd_map_over_sections(param_1,FUN_0010d910,local_128);" (call_expression "bfd_map_over_sections(param_1,FUN_0010d910,local_128)" identifier (argument_list "(param_1,FUN_0010d910,local_128)" ( identifier , identifier , identifier ))) ;) (if_statement "if (local_150 != (void *)0x0) {\n    free(local_150);\n  }" if (parenthesized_expression "(local_150 != (void *)0x0)" ( (binary_expression "local_150 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(local_150);\n  }" { (expression_statement "free(local_150);" (call_expression "free(local_150)" identifier (argument_list "(local_150)" ( identifier ))) ;) })) (expression_statement "free(DAT_001572a0);" (call_expression "free(DAT_001572a0)" identifier (argument_list "(DAT_001572a0)" ( identifier ))) ;) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT * LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (break_statement break ;)) })) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (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 *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) & LIT) )) != LIT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (goto_statement goto statement_identifier ;)) })) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + IDENT)) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT + LIT) ))) & LIT) )))) ;) (for_statement for ( (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) >> LIT) )))) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT == LIT) , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (return_statement return ;) })) (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 = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * IDENT) ))) ;)) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) ))))) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT ))) ;) })))) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })))
(function_definition "void FUN_001097d0(undefined8 *param_1)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  long *__base;\n  long *plVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  ulong uVar9;\n  long lVar10;\n  void *__src;\n  byte *pbVar11;\n  byte *pbVar12;\n  undefined8 *puVar13;\n  byte *pbVar14;\n  undefined8 *puVar15;\n  long *plVar16;\n  long *plVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  undefined8 *local_168 [2];\n  undefined4 local_158;\n  void *local_150;\n  size_t local_148;\n  long local_140;\n  undefined8 local_138;\n  undefined1 local_128 [16];\n  undefined1 *local_118;\n  undefined4 local_110;\n  undefined4 local_10c;\n  undefined8 local_108;\n  undefined4 local_100;\n  void *local_d8;\n  undefined4 local_cc;\n  code *local_a8;\n  code *local_a0;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined8 local_68;\n  undefined4 local_60;\n  undefined8 local_40;\n  \n  bVar21 = 0;\n  DAT_00157238 = 0;\n  DAT_00157248 = 0;\n  DAT_00157244 = 0xffffffff;\n  DAT_00157298 = DAT_001572a8;\n  if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }\n  DAT_00157240 = 0;\n  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);\n  lVar10 = DAT_00157298;\n  __src = DAT_00157290;\n  if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }\n  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);\n  plVar3 = __base;\n  plVar16 = __base;\nLAB_00109890:\n  lVar10 = lVar10 + -1;\n  plVar17 = plVar16;\n  if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;\n  if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }\n  qsort(__base,DAT_00157298,8,FUN_00109c90);\n  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);\n  local_a8 = FUN_001091e0;\n  local_158 = 0;\n  local_150 = (void *)0x0;\n  local_148 = 0;\n  local_138 = 0;\n  local_a0 = FUN_00108a80;\n  local_168[0] = param_1;\n  local_118 = (undefined1 *)local_168;\n  if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }\n  if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }\n  uVar6 = bfd_get_mach(param_1);\n  iVar1 = *(int *)(param_1[1] + 0xc);\n  uVar2 = bfd_get_arch(param_1);\n  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);\n  if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }\n  local_110 = *(undefined4 *)(param_1[1] + 8);\n  local_10c = bfd_get_arch(param_1);\n  local_108 = bfd_get_mach(param_1);\n  local_40 = DAT_001572b8;\n  local_6c = bfd_octets_per_byte(param_1);\n  local_60 = 0;\n  local_68 = 0x300000008;\n  if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }\n  disassemble_init_for_target(local_128);\n  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);\n  if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }\n  local_d8 = DAT_001572a0;\n  local_cc = (undefined4)DAT_00157298;\n  bfd_map_over_sections(param_1,FUN_0010d910,local_128);\n  if (local_150 != (void *)0x0) {\n    free(local_150);\n  }\n  free(DAT_001572a0);\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001097d0(undefined8 *param_1)" (identifier "FUN_001097d0") (parameter_list "(undefined8 *param_1)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  long *__base;\n  long *plVar3;\n  long lVar4;\n  undefined8 *puVar5;\n  undefined8 uVar6;\n  undefined8 uVar7;\n  long lVar8;\n  ulong uVar9;\n  long lVar10;\n  void *__src;\n  byte *pbVar11;\n  byte *pbVar12;\n  undefined8 *puVar13;\n  byte *pbVar14;\n  undefined8 *puVar15;\n  long *plVar16;\n  long *plVar17;\n  bool bVar18;\n  bool bVar19;\n  bool bVar20;\n  byte bVar21;\n  undefined8 *local_168 [2];\n  undefined4 local_158;\n  void *local_150;\n  size_t local_148;\n  long local_140;\n  undefined8 local_138;\n  undefined1 local_128 [16];\n  undefined1 *local_118;\n  undefined4 local_110;\n  undefined4 local_10c;\n  undefined8 local_108;\n  undefined4 local_100;\n  void *local_d8;\n  undefined4 local_cc;\n  code *local_a8;\n  code *local_a0;\n  undefined4 local_70;\n  undefined4 local_6c;\n  undefined8 local_68;\n  undefined4 local_60;\n  undefined8 local_40;\n  \n  bVar21 = 0;\n  DAT_00157238 = 0;\n  DAT_00157248 = 0;\n  DAT_00157244 = 0xffffffff;\n  DAT_00157298 = DAT_001572a8;\n  if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }\n  DAT_00157240 = 0;\n  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);\n  lVar10 = DAT_00157298;\n  __src = DAT_00157290;\n  if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }\n  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);\n  plVar3 = __base;\n  plVar16 = __base;\nLAB_00109890:\n  lVar10 = lVar10 + -1;\n  plVar17 = plVar16;\n  if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }\nLAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;\n  if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }\n  qsort(__base,DAT_00157298,8,FUN_00109c90);\n  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);\n  local_a8 = FUN_001091e0;\n  local_158 = 0;\n  local_150 = (void *)0x0;\n  local_148 = 0;\n  local_138 = 0;\n  local_a0 = FUN_00108a80;\n  local_168[0] = param_1;\n  local_118 = (undefined1 *)local_168;\n  if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }\n  if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }\n  uVar6 = bfd_get_mach(param_1);\n  iVar1 = *(int *)(param_1[1] + 0xc);\n  uVar2 = bfd_get_arch(param_1);\n  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);\n  if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }\n  local_110 = *(undefined4 *)(param_1[1] + 8);\n  local_10c = bfd_get_arch(param_1);\n  local_108 = bfd_get_mach(param_1);\n  local_40 = DAT_001572b8;\n  local_6c = bfd_octets_per_byte(param_1);\n  local_60 = 0;\n  local_68 = 0x300000008;\n  if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }\n  disassemble_init_for_target(local_128);\n  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);\n  if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }\n  local_d8 = DAT_001572a0;\n  local_cc = (undefined4)DAT_00157298;\n  bfd_map_over_sections(param_1,FUN_0010d910,local_128);\n  if (local_150 != (void *)0x0) {\n    free(local_150);\n  }\n  free(DAT_001572a0);\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "long *__base;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*__base" (* "*") (identifier "__base")) (; ";")) (declaration "long *plVar3;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar3" (* "*") (identifier "plVar3")) (; ";")) (declaration "long lVar4;" (sized_type_specifier "long" (long "long")) (identifier "lVar4") (; ";")) (declaration "undefined8 *puVar5;" (type_identifier "undefined8") (pointer_declarator "*puVar5" (* "*") (identifier "puVar5")) (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "void *__src;" (primitive_type "void") (pointer_declarator "*__src" (* "*") (identifier "__src")) (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "byte *pbVar12;" (type_identifier "byte") (pointer_declarator "*pbVar12" (* "*") (identifier "pbVar12")) (; ";")) (declaration "undefined8 *puVar13;" (type_identifier "undefined8") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "undefined8 *puVar15;" (type_identifier "undefined8") (pointer_declarator "*puVar15" (* "*") (identifier "puVar15")) (; ";")) (declaration "long *plVar16;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar16" (* "*") (identifier "plVar16")) (; ";")) (declaration "long *plVar17;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar17" (* "*") (identifier "plVar17")) (; ";")) (declaration "bool bVar18;" (primitive_type "bool") (identifier "bVar18") (; ";")) (declaration "bool bVar19;" (primitive_type "bool") (identifier "bVar19") (; ";")) (declaration "bool bVar20;" (primitive_type "bool") (identifier "bVar20") (; ";")) (declaration "byte bVar21;" (type_identifier "byte") (identifier "bVar21") (; ";")) (declaration "undefined8 *local_168 [2];" (type_identifier "undefined8") (pointer_declarator "*local_168 [2]" (* "*") (array_declarator "local_168 [2]" (identifier "local_168") ([ "[") (number_literal "2") (] "]"))) (; ";")) (declaration "undefined4 local_158;" (type_identifier "undefined4") (identifier "local_158") (; ";")) (declaration "void *local_150;" (primitive_type "void") (pointer_declarator "*local_150" (* "*") (identifier "local_150")) (; ";")) (declaration "size_t local_148;" (primitive_type "size_t") (identifier "local_148") (; ";")) (declaration "long local_140;" (sized_type_specifier "long" (long "long")) (identifier "local_140") (; ";")) (declaration "undefined8 local_138;" (type_identifier "undefined8") (identifier "local_138") (; ";")) (declaration "undefined1 local_128 [16];" (type_identifier "undefined1") (array_declarator "local_128 [16]" (identifier "local_128") ([ "[") (number_literal "16") (] "]")) (; ";")) (declaration "undefined1 *local_118;" (type_identifier "undefined1") (pointer_declarator "*local_118" (* "*") (identifier "local_118")) (; ";")) (declaration "undefined4 local_110;" (type_identifier "undefined4") (identifier "local_110") (; ";")) (declaration "undefined4 local_10c;" (type_identifier "undefined4") (identifier "local_10c") (; ";")) (declaration "undefined8 local_108;" (type_identifier "undefined8") (identifier "local_108") (; ";")) (declaration "undefined4 local_100;" (type_identifier "undefined4") (identifier "local_100") (; ";")) (declaration "void *local_d8;" (primitive_type "void") (pointer_declarator "*local_d8" (* "*") (identifier "local_d8")) (; ";")) (declaration "undefined4 local_cc;" (type_identifier "undefined4") (identifier "local_cc") (; ";")) (declaration "code *local_a8;" (type_identifier "code") (pointer_declarator "*local_a8" (* "*") (identifier "local_a8")) (; ";")) (declaration "code *local_a0;" (type_identifier "code") (pointer_declarator "*local_a0" (* "*") (identifier "local_a0")) (; ";")) (declaration "undefined4 local_70;" (type_identifier "undefined4") (identifier "local_70") (; ";")) (declaration "undefined4 local_6c;" (type_identifier "undefined4") (identifier "local_6c") (; ";")) (declaration "undefined8 local_68;" (type_identifier "undefined8") (identifier "local_68") (; ";")) (declaration "undefined4 local_60;" (type_identifier "undefined4") (identifier "local_60") (; ";")) (declaration "undefined8 local_40;" (type_identifier "undefined8") (identifier "local_40") (; ";")) (expression_statement "bVar21 = 0;" (assignment_expression "bVar21 = 0" (identifier "bVar21") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00157238 = 0;" (assignment_expression "DAT_00157238 = 0" (identifier "DAT_00157238") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00157248 = 0;" (assignment_expression "DAT_00157248 = 0" (identifier "DAT_00157248") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00157244 = 0xffffffff;" (assignment_expression "DAT_00157244 = 0xffffffff" (identifier "DAT_00157244") (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "DAT_00157298 = DAT_001572a8;" (assignment_expression "DAT_00157298 = DAT_001572a8" (identifier "DAT_00157298") (= "=") (identifier "DAT_001572a8")) (; ";")) (if_statement "if (DAT_001572a8 == 0) {\n    DAT_00157298 = DAT_00157278;\n  }" (if "if") (parenthesized_expression "(DAT_001572a8 == 0)" (( "(") (binary_expression "DAT_001572a8 == 0" (identifier "DAT_001572a8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    DAT_00157298 = DAT_00157278;\n  }" ({ "{") (expression_statement "DAT_00157298 = DAT_00157278;" (assignment_expression "DAT_00157298 = DAT_00157278" (identifier "DAT_00157298") (= "=") (identifier "DAT_00157278")) (; ";")) (} "}"))) (expression_statement "DAT_00157240 = 0;" (assignment_expression "DAT_00157240 = 0" (identifier "DAT_00157240") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);" (assignment_expression "DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8)" (identifier "DAT_001572a0") (= "=") (cast_expression "(void *)xmalloc((DAT_00157298 + DAT_00157280) * 8)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc((DAT_00157298 + DAT_00157280) * 8)" (identifier "xmalloc") (argument_list "((DAT_00157298 + DAT_00157280) * 8)" (( "(") (binary_expression "(DAT_00157298 + DAT_00157280) * 8" (parenthesized_expression "(DAT_00157298 + DAT_00157280)" (( "(") (binary_expression "DAT_00157298 + DAT_00157280" (identifier "DAT_00157298") (+ "+") (identifier "DAT_00157280")) () ")")) (* "*") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar10 = DAT_00157298;" (assignment_expression "lVar10 = DAT_00157298" (identifier "lVar10") (= "=") (identifier "DAT_00157298")) (; ";")) (expression_statement "__src = DAT_00157290;" (assignment_expression "__src = DAT_00157290" (identifier "__src") (= "=") (identifier "DAT_00157290")) (; ";")) (if_statement "if (DAT_001572a8 != 0) {\n    __src = DAT_001572b0;\n  }" (if "if") (parenthesized_expression "(DAT_001572a8 != 0)" (( "(") (binary_expression "DAT_001572a8 != 0" (identifier "DAT_001572a8") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    __src = DAT_001572b0;\n  }" ({ "{") (expression_statement "__src = DAT_001572b0;" (assignment_expression "__src = DAT_001572b0" (identifier "__src") (= "=") (identifier "DAT_001572b0")) (; ";")) (} "}"))) (expression_statement "__base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);" (assignment_expression "__base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8)" (identifier "__base") (= "=") (cast_expression "(long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "memcpy(DAT_001572a0,__src,DAT_00157298 * 8)" (identifier "memcpy") (argument_list "(DAT_001572a0,__src,DAT_00157298 * 8)" (( "(") (identifier "DAT_001572a0") (, ",") (identifier "__src") (, ",") (binary_expression "DAT_00157298 * 8" (identifier "DAT_00157298") (* "*") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "plVar3 = __base;" (assignment_expression "plVar3 = __base" (identifier "plVar3") (= "=") (identifier "__base")) (; ";")) (expression_statement "plVar16 = __base;" (assignment_expression "plVar16 = __base" (identifier "plVar16") (= "=") (identifier "__base")) (; ";")) (labeled_statement "LAB_00109890:\n  lVar10 = lVar10 + -1;" (statement_identifier "LAB_00109890") (: ":") (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";"))) (expression_statement "plVar17 = plVar16;" (assignment_expression "plVar17 = plVar16" (identifier "plVar17") (= "=") (identifier "plVar16")) (; ";")) (if_statement "if (-1 < lVar10) {\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }" (if "if") (parenthesized_expression "(-1 < lVar10)" (( "(") (binary_expression "-1 < lVar10" (number_literal "-1") (< "<") (identifier "lVar10")) () ")")) (compound_statement "{\n    while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }\n    goto LAB_00109890;\n  }" ({ "{") (while_statement "while( true ) {\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n      plVar16 = plVar17 + 1;\n      lVar4 = *plVar17;\n      pbVar12 = *(byte **)(lVar4 + 8);\n      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;\n      bVar18 = false;\n      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;\n      if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }\n      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;\n      *plVar3 = lVar4;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + -1;\n      plVar17 = plVar16;\n      if (lVar10 < 0) goto LAB_00109904;\n    }" ({ "{") (expression_statement "plVar16 = plVar17 + 1;" (assignment_expression "plVar16 = plVar17 + 1" (identifier "plVar16") (= "=") (binary_expression "plVar17 + 1" (identifier "plVar17") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar4 = *plVar17;" (assignment_expression "lVar4 = *plVar17" (identifier "lVar4") (= "=") (pointer_expression "*plVar17" (* "*") (identifier "plVar17"))) (; ";")) (expression_statement "pbVar12 = *(byte **)(lVar4 + 8);" (assignment_expression "pbVar12 = *(byte **)(lVar4 + 8)" (identifier "pbVar12") (= "=") (pointer_expression "*(byte **)(lVar4 + 8)" (* "*") (cast_expression "(byte **)(lVar4 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar4 + 8)" (( "(") (binary_expression "lVar4 + 8" (identifier "lVar4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;" (if "if") (parenthesized_expression "((pbVar12 == (byte *)0x0) || (*pbVar12 == 0))" (( "(") (binary_expression "(pbVar12 == (byte *)0x0) || (*pbVar12 == 0)" (parenthesized_expression "(pbVar12 == (byte *)0x0)" (( "(") (binary_expression "pbVar12 == (byte *)0x0" (identifier "pbVar12") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(*pbVar12 == 0)" (( "(") (binary_expression "*pbVar12 == 0" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "bVar18 = false;" (assignment_expression "bVar18 = false" (identifier "bVar18") (= "=") (false "false")) (; ";")) (expression_statement "bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;" (assignment_expression "bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0" (identifier "bVar20") (= "=") (binary_expression "(*(uint *)(lVar4 + 0x18) & 0x104) == 0" (parenthesized_expression "(*(uint *)(lVar4 + 0x18) & 0x104)" (( "(") (binary_expression "*(uint *)(lVar4 + 0x18) & 0x104" (pointer_expression "*(uint *)(lVar4 + 0x18)" (* "*") (cast_expression "(uint *)(lVar4 + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x18)" (( "(") (binary_expression "lVar4 + 0x18" (identifier "lVar4") (+ "+") (number_literal "0x18")) () ")")))) (& "&") (number_literal "0x104")) () ")")) (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar20) {\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }" (if "if") (parenthesized_expression "(!bVar20)" (( "(") (unary_expression "!bVar20" (! "!") (identifier "bVar20")) () ")")) (compound_statement "{\n        lVar8 = 4;\n        pbVar11 = pbVar12;\n        pbVar14 = &DAT_0013d5f3;\n        do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);\n        bVar19 = false;\n        bVar18 = (!bVar18 && !bVar20) == bVar18;\n        if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }\n      }" ({ "{") (expression_statement "lVar8 = 4;" (assignment_expression "lVar8 = 4" (identifier "lVar8") (= "=") (number_literal "4")) (; ";")) (expression_statement "pbVar11 = pbVar12;" (assignment_expression "pbVar11 = pbVar12" (identifier "pbVar11") (= "=") (identifier "pbVar12")) (; ";")) (expression_statement "pbVar14 = &DAT_0013d5f3;" (assignment_expression "pbVar14 = &DAT_0013d5f3" (identifier "pbVar14") (= "=") (pointer_expression "&DAT_0013d5f3" (& "&") (identifier "DAT_0013d5f3"))) (; ";")) (do_statement "do {\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        } while (bVar20);" (do "do") (compound_statement "{\n          if (lVar8 == 0) break;\n          lVar8 = lVar8 + -1;\n          bVar18 = *pbVar11 < *pbVar14;\n          bVar20 = *pbVar11 == *pbVar14;\n          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;\n        }" ({ "{") (if_statement "if (lVar8 == 0) break;" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + -1" (identifier "lVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar18 = *pbVar11 < *pbVar14;" (assignment_expression "bVar18 = *pbVar11 < *pbVar14" (identifier "bVar18") (= "=") (binary_expression "*pbVar11 < *pbVar14" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (< "<") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "bVar20 = *pbVar11 == *pbVar14;" (assignment_expression "bVar20 = *pbVar11 == *pbVar14" (identifier "bVar20") (= "=") (binary_expression "*pbVar11 == *pbVar14" (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")) (== "==") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar21 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar14 + (ulong)bVar21 * -2" (identifier "pbVar14") (+ "+") (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar20)" (( "(") (identifier "bVar20") () ")")) (; ";")) (expression_statement "bVar19 = false;" (assignment_expression "bVar19 = false" (identifier "bVar19") (= "=") (false "false")) (; ";")) (expression_statement "bVar18 = (!bVar18 && !bVar20) == bVar18;" (assignment_expression "bVar18 = (!bVar18 && !bVar20) == bVar18" (identifier "bVar18") (= "=") (binary_expression "(!bVar18 && !bVar20) == bVar18" (parenthesized_expression "(!bVar18 && !bVar20)" (( "(") (binary_expression "!bVar18 && !bVar20" (unary_expression "!bVar18" (! "!") (identifier "bVar18")) (&& "&&") (unary_expression "!bVar20" (! "!") (identifier "bVar20"))) () ")")) (== "==") (identifier "bVar18"))) (; ";")) (if_statement "if (!bVar18) {\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }" (if "if") (parenthesized_expression "(!bVar18)" (( "(") (unary_expression "!bVar18" (! "!") (identifier "bVar18")) () ")")) (compound_statement "{\n          lVar8 = 5;\n          pbVar11 = &DAT_0013d5f8;\n          do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);\n          if ((!bVar19 && !bVar18) != bVar19) break;\n        }" ({ "{") (expression_statement "lVar8 = 5;" (assignment_expression "lVar8 = 5" (identifier "lVar8") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar11 = &DAT_0013d5f8;" (assignment_expression "pbVar11 = &DAT_0013d5f8" (identifier "pbVar11") (= "=") (pointer_expression "&DAT_0013d5f8" (& "&") (identifier "DAT_0013d5f8"))) (; ";")) (do_statement "do {\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          } while (bVar18);" (do "do") (compound_statement "{\n            if (lVar8 == 0) break;\n            lVar8 = lVar8 + -1;\n            bVar19 = *pbVar12 < *pbVar11;\n            bVar18 = *pbVar12 == *pbVar11;\n            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;\n            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar8 == 0) break;" (if "if") (parenthesized_expression "(lVar8 == 0)" (( "(") (binary_expression "lVar8 == 0" (identifier "lVar8") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar8 = lVar8 + -1;" (assignment_expression "lVar8 = lVar8 + -1" (identifier "lVar8") (= "=") (binary_expression "lVar8 + -1" (identifier "lVar8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar19 = *pbVar12 < *pbVar11;" (assignment_expression "bVar19 = *pbVar12 < *pbVar11" (identifier "bVar19") (= "=") (binary_expression "*pbVar12 < *pbVar11" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (< "<") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "bVar18 = *pbVar12 == *pbVar11;" (assignment_expression "bVar18 = *pbVar12 == *pbVar11" (identifier "bVar18") (= "=") (binary_expression "*pbVar12 == *pbVar11" (pointer_expression "*pbVar12" (* "*") (identifier "pbVar12")) (== "==") (pointer_expression "*pbVar11" (* "*") (identifier "pbVar11")))) (; ";")) (expression_statement "pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1" (identifier "pbVar12") (= "=") (binary_expression "pbVar12 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar12 + (ulong)bVar21 * -2" (identifier "pbVar12") (+ "+") (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;" (assignment_expression "pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1" (identifier "pbVar11") (= "=") (binary_expression "pbVar11 + (ulong)bVar21 * -2 + 1" (binary_expression "pbVar11 + (ulong)bVar21 * -2" (identifier "pbVar11") (+ "+") (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar18)" (( "(") (identifier "bVar18") () ")")) (; ";")) (if_statement "if ((!bVar19 && !bVar18) != bVar19) break;" (if "if") (parenthesized_expression "((!bVar19 && !bVar18) != bVar19)" (( "(") (binary_expression "(!bVar19 && !bVar18) != bVar19" (parenthesized_expression "(!bVar19 && !bVar18)" (( "(") (binary_expression "!bVar19 && !bVar18" (unary_expression "!bVar19" (! "!") (identifier "bVar19")) (&& "&&") (unary_expression "!bVar18" (! "!") (identifier "bVar18"))) () ")")) (!= "!=") (identifier "bVar19")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}"))) (} "}"))) (if_statement "if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;" (if "if") (parenthesized_expression "((*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0))" (( "(") (binary_expression "(*(long *)(lVar4 + 0x20) == 0x156ed8) ||\n         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)" (parenthesized_expression "(*(long *)(lVar4 + 0x20) == 0x156ed8)" (( "(") (binary_expression "*(long *)(lVar4 + 0x20) == 0x156ed8" (pointer_expression "*(long *)(lVar4 + 0x20)" (* "*") (cast_expression "(long *)(lVar4 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (== "==") (number_literal "0x156ed8")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)" (( "(") (binary_expression "(*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0" (parenthesized_expression "(*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10)" (( "(") (binary_expression "*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10" (pointer_expression "*(byte *)(*(long *)(lVar4 + 0x20) + 0x21)" (* "*") (cast_expression "(byte *)(*(long *)(lVar4 + 0x20) + 0x21)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar4 + 0x20) + 0x21)" (( "(") (binary_expression "*(long *)(lVar4 + 0x20) + 0x21" (pointer_expression "*(long *)(lVar4 + 0x20)" (* "*") (cast_expression "(long *)(lVar4 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar4 + 0x20)" (( "(") (binary_expression "lVar4 + 0x20" (identifier "lVar4") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "0x21")) () ")")))) (& "&") (number_literal "0x10")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "*plVar3 = lVar4;" (assignment_expression "*plVar3 = lVar4" (pointer_expression "*plVar3" (* "*") (identifier "plVar3")) (= "=") (identifier "lVar4")) (; ";")) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" (identifier "plVar3") (= "=") (binary_expression "plVar3 + 1" (identifier "plVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar10 = lVar10 + -1;" (assignment_expression "lVar10 = lVar10 + -1" (identifier "lVar10") (= "=") (binary_expression "lVar10 + -1" (identifier "lVar10") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "plVar17 = plVar16;" (assignment_expression "plVar17 = plVar16" (identifier "plVar17") (= "=") (identifier "plVar16")) (; ";")) (if_statement "if (lVar10 < 0) goto LAB_00109904;" (if "if") (parenthesized_expression "(lVar10 < 0)" (( "(") (binary_expression "lVar10 < 0" (identifier "lVar10") (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00109904;" (goto "goto") (statement_identifier "LAB_00109904") (; ";"))) (} "}"))) (goto_statement "goto LAB_00109890;" (goto "goto") (statement_identifier "LAB_00109890") (; ";")) (} "}"))) (labeled_statement "LAB_00109904:\n  DAT_00157298 = (long)plVar3 - (long)__base >> 3;" (statement_identifier "LAB_00109904") (: ":") (expression_statement "DAT_00157298 = (long)plVar3 - (long)__base >> 3;" (assignment_expression "DAT_00157298 = (long)plVar3 - (long)__base >> 3" (identifier "DAT_00157298") (= "=") (binary_expression "(long)plVar3 - (long)__base >> 3" (binary_expression "(long)plVar3 - (long)__base" (cast_expression "(long)plVar3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar3")) (- "-") (cast_expression "(long)__base" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__base"))) (>> ">>") (number_literal "3"))) (; ";"))) (if_statement "if (0 < DAT_00157280) {\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }" (if "if") (parenthesized_expression "(0 < DAT_00157280)" (( "(") (binary_expression "0 < DAT_00157280" (number_literal "0") (< "<") (identifier "DAT_00157280")) () ")")) (compound_statement "{\n    DAT_00157298 = DAT_00157280 + DAT_00157298;\n    lVar10 = DAT_00157288;\n    do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);\n  }" ({ "{") (expression_statement "DAT_00157298 = DAT_00157280 + DAT_00157298;" (assignment_expression "DAT_00157298 = DAT_00157280 + DAT_00157298" (identifier "DAT_00157298") (= "=") (binary_expression "DAT_00157280 + DAT_00157298" (identifier "DAT_00157280") (+ "+") (identifier "DAT_00157298"))) (; ";")) (expression_statement "lVar10 = DAT_00157288;" (assignment_expression "lVar10 = DAT_00157288" (identifier "lVar10") (= "=") (identifier "DAT_00157288")) (; ";")) (do_statement "do {\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    } while (plVar3 != __base + DAT_00157298);" (do "do") (compound_statement "{\n      *plVar3 = lVar10;\n      plVar3 = plVar3 + 1;\n      lVar10 = lVar10 + 0x30;\n    }" ({ "{") (expression_statement "*plVar3 = lVar10;" (assignment_expression "*plVar3 = lVar10" (pointer_expression "*plVar3" (* "*") (identifier "plVar3")) (= "=") (identifier "lVar10")) (; ";")) (expression_statement "plVar3 = plVar3 + 1;" (assignment_expression "plVar3 = plVar3 + 1" (identifier "plVar3") (= "=") (binary_expression "plVar3 + 1" (identifier "plVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "lVar10 = lVar10 + 0x30;" (assignment_expression "lVar10 = lVar10 + 0x30" (identifier "lVar10") (= "=") (binary_expression "lVar10 + 0x30" (identifier "lVar10") (+ "+") (number_literal "0x30"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar3 != __base + DAT_00157298)" (( "(") (binary_expression "plVar3 != __base + DAT_00157298" (identifier "plVar3") (!= "!=") (binary_expression "__base + DAT_00157298" (identifier "__base") (+ "+") (identifier "DAT_00157298"))) () ")")) (; ";")) (} "}"))) (expression_statement "qsort(__base,DAT_00157298,8,FUN_00109c90);" (call_expression "qsort(__base,DAT_00157298,8,FUN_00109c90)" (identifier "qsort") (argument_list "(__base,DAT_00157298,8,FUN_00109c90)" (( "(") (identifier "__base") (, ",") (identifier "DAT_00157298") (, ",") (number_literal "8") (, ",") (identifier "FUN_00109c90") () ")"))) (; ";")) (expression_statement "init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);" (call_expression "init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8)" (identifier "init_disassemble_info") (argument_list "(local_128,stdout,PTR_fprintf_00154fa8)" (( "(") (identifier "local_128") (, ",") (identifier "stdout") (, ",") (identifier "PTR_fprintf_00154fa8") () ")"))) (; ";")) (expression_statement "local_a8 = FUN_001091e0;" (assignment_expression "local_a8 = FUN_001091e0" (identifier "local_a8") (= "=") (identifier "FUN_001091e0")) (; ";")) (expression_statement "local_158 = 0;" (assignment_expression "local_158 = 0" (identifier "local_158") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_150 = (void *)0x0;" (assignment_expression "local_150 = (void *)0x0" (identifier "local_150") (= "=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_148 = 0;" (assignment_expression "local_148 = 0" (identifier "local_148") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_138 = 0;" (assignment_expression "local_138 = 0" (identifier "local_138") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a0 = FUN_00108a80;" (assignment_expression "local_a0 = FUN_00108a80" (identifier "local_a0") (= "=") (identifier "FUN_00108a80")) (; ";")) (expression_statement "local_168[0] = param_1;" (assignment_expression "local_168[0] = param_1" (subscript_expression "local_168[0]" (identifier "local_168") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "param_1")) (; ";")) (expression_statement "local_118 = (undefined1 *)local_168;" (assignment_expression "local_118 = (undefined1 *)local_168" (identifier "local_118") (= "=") (cast_expression "(undefined1 *)local_168" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_168"))) (; ";")) (if_statement "if (DAT_001572c0 != 0) {\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }" (if "if") (parenthesized_expression "(DAT_001572c0 != 0)" (( "(") (binary_expression "DAT_001572c0 != 0" (identifier "DAT_001572c0") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_118 = (undefined1 *)local_168;\n    lVar4 = bfd_scan_arch();\n    lVar10 = DAT_001572c0;\n    if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }\n    param_1[0x18] = lVar4;\n  }" ({ "{") (expression_statement "local_118 = (undefined1 *)local_168;" (assignment_expression "local_118 = (undefined1 *)local_168" (identifier "local_118") (= "=") (cast_expression "(undefined1 *)local_168" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_168"))) (; ";")) (expression_statement "lVar4 = bfd_scan_arch();" (assignment_expression "lVar4 = bfd_scan_arch()" (identifier "lVar4") (= "=") (call_expression "bfd_scan_arch()" (identifier "bfd_scan_arch") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "lVar10 = DAT_001572c0;" (assignment_expression "lVar10 = DAT_001572c0" (identifier "lVar10") (= "=") (identifier "DAT_001572c0")) (; ";")) (if_statement "if (lVar4 == 0) {\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }" (if "if") (parenthesized_expression "(lVar4 == 0)" (( "(") (binary_expression "lVar4 == 0" (identifier "lVar4") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);\n                    \n      FUN_00136590(uVar6,lVar10);\n    }" ({ "{") (expression_statement "uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);" (assignment_expression "uVar6 = dcgettext(0,"can\'t use supplied machine %s",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"can\'t use supplied machine %s",5)" (identifier "dcgettext") (argument_list "(0,"can\'t use supplied machine %s",5)" (( "(") (number_literal "0") (, ",") (string_literal ""can\'t use supplied machine %s"" (" """) (string_content "can") (escape_sequence "\'") (string_content "t use supplied machine %s") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00136590(uVar6,lVar10);" (call_expression "FUN_00136590(uVar6,lVar10)" (identifier "FUN_00136590") (argument_list "(uVar6,lVar10)" (( "(") (identifier "uVar6") (, ",") (identifier "lVar10") () ")"))) (; ";")) (} "}"))) (expression_statement "param_1[0x18] = lVar4;" (assignment_expression "param_1[0x18] = lVar4" (subscript_expression "param_1[0x18]" (identifier "param_1") ([ "[") (number_literal "0x18") (] "]")) (= "=") (identifier "lVar4")) (; ";")) (} "}"))) (if_statement "if (DAT_00155450 != 2) {\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }" (if "if") (parenthesized_expression "(DAT_00155450 != 2)" (( "(") (binary_expression "DAT_00155450 != 2" (identifier "DAT_00155450") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n    puVar5 = (undefined8 *)xmalloc(0x370);\n    puVar13 = (undefined8 *)param_1[1];\n    *puVar5 = *puVar13;\n    puVar5[0x6d] = puVar13[0x6d];\n    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    puVar13 = (undefined8 *)((long)puVar13 - lVar10);\n    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);\n    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }\n    param_1[1] = puVar5;\n    *(int *)((long)puVar5 + 0xc) = DAT_00155450;\n  }" ({ "{") (expression_statement "puVar5 = (undefined8 *)xmalloc(0x370);" (assignment_expression "puVar5 = (undefined8 *)xmalloc(0x370)" (identifier "puVar5") (= "=") (cast_expression "(undefined8 *)xmalloc(0x370)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x370)" (identifier "xmalloc") (argument_list "(0x370)" (( "(") (number_literal "0x370") () ")"))))) (; ";")) (expression_statement "puVar13 = (undefined8 *)param_1[1];" (assignment_expression "puVar13 = (undefined8 *)param_1[1]" (identifier "puVar13") (= "=") (cast_expression "(undefined8 *)param_1[1]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "*puVar5 = *puVar13;" (assignment_expression "*puVar5 = *puVar13" (pointer_expression "*puVar5" (* "*") (identifier "puVar5")) (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar5[0x6d] = puVar13[0x6d];" (assignment_expression "puVar5[0x6d] = puVar13[0x6d]" (subscript_expression "puVar5[0x6d]" (identifier "puVar5") ([ "[") (number_literal "0x6d") (] "]")) (= "=") (subscript_expression "puVar13[0x6d]" (identifier "puVar13") ([ "[") (number_literal "0x6d") (] "]"))) (; ";")) (expression_statement "lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);" (assignment_expression "lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" (identifier "lVar10") (= "=") (binary_expression "(long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (- "-") (cast_expression "(long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(puVar5 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar5 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(puVar5 + 1)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")"))))) (; ";")) (expression_statement "puVar13 = (undefined8 *)((long)puVar13 - lVar10);" (assignment_expression "puVar13 = (undefined8 *)((long)puVar13 - lVar10)" (identifier "puVar13") (= "=") (cast_expression "(undefined8 *)((long)puVar13 - lVar10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar13 - lVar10)" (( "(") (binary_expression "(long)puVar13 - lVar10" (cast_expression "(long)puVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar13")) (- "-") (identifier "lVar10")) () ")")))) (; ";")) (expression_statement "puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);" (assignment_expression "puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" (identifier "puVar15") (= "=") (cast_expression "(undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulong)(puVar5 + 1) & 0xfffffffffffffff8)" (( "(") (binary_expression "(ulong)(puVar5 + 1) & 0xfffffffffffffff8" (call_expression "(ulong)(puVar5 + 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(puVar5 + 1)" (( "(") (binary_expression "puVar5 + 1" (identifier "puVar5") (+ "+") (number_literal "1")) () ")"))) (& "&") (number_literal "0xfffffffffffffff8")) () ")")))) (; ";")) (for_statement "for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }" (for "for") (( "(") (assignment_expression "uVar9 = (ulong)((int)lVar10 + 0x370U >> 3)" (identifier "uVar9") (= "=") (call_expression "(ulong)((int)lVar10 + 0x370U >> 3)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((int)lVar10 + 0x370U >> 3)" (( "(") (binary_expression "(int)lVar10 + 0x370U >> 3" (binary_expression "(int)lVar10 + 0x370U" (cast_expression "(int)lVar10" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar10")) (+ "+") (number_literal "0x370U")) (>> ">>") (number_literal "3")) () ")")))) (; ";") (binary_expression "uVar9 != 0" (identifier "uVar9") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar9 = uVar9 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar9 - 1" (identifier "uVar9") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n      *puVar15 = *puVar13;\n      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;\n      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;\n    }" ({ "{") (expression_statement "*puVar15 = *puVar13;" (assignment_expression "*puVar15 = *puVar13" (pointer_expression "*puVar15" (* "*") (identifier "puVar15")) (= "=") (pointer_expression "*puVar13" (* "*") (identifier "puVar13"))) (; ";")) (expression_statement "puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (ulong)bVar21 * -2 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar13 + (ulong)bVar21 * -2" (identifier "puVar13") (+ "+") (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;" (assignment_expression "puVar15 = puVar15 + (ulong)bVar21 * -2 + 1" (identifier "puVar15") (= "=") (binary_expression "puVar15 + (ulong)bVar21 * -2 + 1" (binary_expression "puVar15 + (ulong)bVar21 * -2" (identifier "puVar15") (+ "+") (binary_expression "(ulong)bVar21 * -2" (cast_expression "(ulong)bVar21" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar21")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "param_1[1] = puVar5;" (assignment_expression "param_1[1] = puVar5" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "puVar5")) (; ";")) (expression_statement "*(int *)((long)puVar5 + 0xc) = DAT_00155450;" (assignment_expression "*(int *)((long)puVar5 + 0xc) = DAT_00155450" (pointer_expression "*(int *)((long)puVar5 + 0xc)" (* "*") (cast_expression "(int *)((long)puVar5 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar5 + 0xc)" (( "(") (binary_expression "(long)puVar5 + 0xc" (cast_expression "(long)puVar5" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar5")) (+ "+") (number_literal "0xc")) () ")")))) (= "=") (identifier "DAT_00155450")) (; ";")) (} "}"))) (expression_statement "uVar6 = bfd_get_mach(param_1);" (assignment_expression "uVar6 = bfd_get_mach(param_1)" (identifier "uVar6") (= "=") (call_expression "bfd_get_mach(param_1)" (identifier "bfd_get_mach") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "iVar1 = *(int *)(param_1[1] + 0xc);" (assignment_expression "iVar1 = *(int *)(param_1[1] + 0xc)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(param_1[1] + 0xc)" (* "*") (cast_expression "(int *)(param_1[1] + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0xc)" (( "(") (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "uVar2 = bfd_get_arch(param_1);" (assignment_expression "uVar2 = bfd_get_arch(param_1)" (identifier "uVar2") (= "=") (call_expression "bfd_get_arch(param_1)" (identifier "bfd_get_arch") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);" (assignment_expression "local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1)" (identifier "local_140") (= "=") (call_expression "disassembler(uVar2,iVar1 == 0,uVar6,param_1)" (identifier "disassembler") (argument_list "(uVar2,iVar1 == 0,uVar6,param_1)" (( "(") (identifier "uVar2") (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0")) (, ",") (identifier "uVar6") (, ",") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (local_140 == 0) {\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }" (if "if") (parenthesized_expression "(local_140 == 0)" (( "(") (binary_expression "local_140 == 0" (identifier "local_140") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    uVar2 = bfd_get_arch(param_1);\n    uVar6 = bfd_printable_arch_mach(uVar2,0);\n    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);\n    FUN_00136630(uVar7,uVar6);\n    DAT_00157388 = 1;\n    return;\n  }" ({ "{") (expression_statement "uVar2 = bfd_get_arch(param_1);" (assignment_expression "uVar2 = bfd_get_arch(param_1)" (identifier "uVar2") (= "=") (call_expression "bfd_get_arch(param_1)" (identifier "bfd_get_arch") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "uVar6 = bfd_printable_arch_mach(uVar2,0);" (assignment_expression "uVar6 = bfd_printable_arch_mach(uVar2,0)" (identifier "uVar6") (= "=") (call_expression "bfd_printable_arch_mach(uVar2,0)" (identifier "bfd_printable_arch_mach") (argument_list "(uVar2,0)" (( "(") (identifier "uVar2") (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);" (assignment_expression "uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5)" (identifier "uVar7") (= "=") (call_expression "dcgettext(0,"can\'t disassemble for architecture %s\n",5)" (identifier "dcgettext") (argument_list "(0,"can\'t disassemble for architecture %s\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""can\'t disassemble for architecture %s\n"" (" """) (string_content "can") (escape_sequence "\'") (string_content "t disassemble for architecture %s") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00136630(uVar7,uVar6);" (call_expression "FUN_00136630(uVar7,uVar6)" (identifier "FUN_00136630") (argument_list "(uVar7,uVar6)" (( "(") (identifier "uVar7") (, ",") (identifier "uVar6") () ")"))) (; ";")) (expression_statement "DAT_00157388 = 1;" (assignment_expression "DAT_00157388 = 1" (identifier "DAT_00157388") (= "=") (number_literal "1")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "local_110 = *(undefined4 *)(param_1[1] + 8);" (assignment_expression "local_110 = *(undefined4 *)(param_1[1] + 8)" (identifier "local_110") (= "=") (pointer_expression "*(undefined4 *)(param_1[1] + 8)" (* "*") (cast_expression "(undefined4 *)(param_1[1] + 8)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 8)" (( "(") (binary_expression "param_1[1] + 8" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "local_10c = bfd_get_arch(param_1);" (assignment_expression "local_10c = bfd_get_arch(param_1)" (identifier "local_10c") (= "=") (call_expression "bfd_get_arch(param_1)" (identifier "bfd_get_arch") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "local_108 = bfd_get_mach(param_1);" (assignment_expression "local_108 = bfd_get_mach(param_1)" (identifier "local_108") (= "=") (call_expression "bfd_get_mach(param_1)" (identifier "bfd_get_mach") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "local_40 = DAT_001572b8;" (assignment_expression "local_40 = DAT_001572b8" (identifier "local_40") (= "=") (identifier "DAT_001572b8")) (; ";")) (expression_statement "local_6c = bfd_octets_per_byte(param_1);" (assignment_expression "local_6c = bfd_octets_per_byte(param_1)" (identifier "local_6c") (= "=") (call_expression "bfd_octets_per_byte(param_1)" (identifier "bfd_octets_per_byte") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "local_60 = 0;" (assignment_expression "local_60 = 0" (identifier "local_60") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_68 = 0x300000008;" (assignment_expression "local_68 = 0x300000008" (identifier "local_68") (= "=") (number_literal "0x300000008")) (; ";")) (if_statement "if (*(int *)(param_1[1] + 0xc) == 0) {\n    local_100 = 0;\n    local_70 = 0;\n  }\n  else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1[1] + 0xc) == 0)" (( "(") (binary_expression "*(int *)(param_1[1] + 0xc) == 0" (pointer_expression "*(int *)(param_1[1] + 0xc)" (* "*") (cast_expression "(int *)(param_1[1] + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0xc)" (( "(") (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    local_100 = 0;\n    local_70 = 0;\n  }" ({ "{") (expression_statement "local_100 = 0;" (assignment_expression "local_100 = 0" (identifier "local_100") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_70 = 0;" (assignment_expression "local_70 = 0" (identifier "local_70") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }" (else "else") (if_statement "if (*(int *)(param_1[1] + 0xc) == 1) {\n    local_100 = 1;\n    local_70 = 1;\n  }\n  else {\n    local_100 = 2;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1[1] + 0xc) == 1)" (( "(") (binary_expression "*(int *)(param_1[1] + 0xc) == 1" (pointer_expression "*(int *)(param_1[1] + 0xc)" (* "*") (cast_expression "(int *)(param_1[1] + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[1] + 0xc)" (( "(") (binary_expression "param_1[1] + 0xc" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    local_100 = 1;\n    local_70 = 1;\n  }" ({ "{") (expression_statement "local_100 = 1;" (assignment_expression "local_100 = 1" (identifier "local_100") (= "=") (number_literal "1")) (; ";")) (expression_statement "local_70 = 1;" (assignment_expression "local_70 = 1" (identifier "local_70") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n    local_100 = 2;\n  }" (else "else") (compound_statement "{\n    local_100 = 2;\n  }" ({ "{") (expression_statement "local_100 = 2;" (assignment_expression "local_100 = 2" (identifier "local_100") (= "=") (number_literal "2")) (; ";")) (} "}")))))) (expression_statement "disassemble_init_for_target(local_128);" (call_expression "disassemble_init_for_target(local_128)" (identifier "disassemble_init_for_target") (argument_list "(local_128)" (( "(") (identifier "local_128") () ")"))) (; ";")) (expression_statement "lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);" (assignment_expression "lVar10 = (**(code **)(param_1[1] + 0x350))(param_1)" (identifier "lVar10") (= "=") (call_expression "(**(code **)(param_1[1] + 0x350))(param_1)" (parenthesized_expression "(**(code **)(param_1[1] + 0x350))" (( "(") (pointer_expression "**(code **)(param_1[1] + 0x350)" (* "*") (pointer_expression "*(code **)(param_1[1] + 0x350)" (* "*") (cast_expression "(code **)(param_1[1] + 0x350)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[1] + 0x350)" (( "(") (binary_expression "param_1[1] + 0x350" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x350")) () ")"))))) () ")")) (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (lVar10 < 0) {\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }\n  }\n  else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" (if "if") (parenthesized_expression "(lVar10 < 0)" (( "(") (binary_expression "lVar10 < 0" (identifier "lVar10") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n    if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }\n  }" ({ "{") (if_statement "if (DAT_00157368 != 0) {\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }" (if "if") (parenthesized_expression "(DAT_00157368 != 0)" (( "(") (binary_expression "DAT_00157368 != 0" (identifier "DAT_00157368") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00109bee:\n                    \n      FUN_00136510(*param_1);\n    }" ({ "{") (labeled_statement "LAB_00109bee:\n                    \n      FUN_00136510(*param_1);" (statement_identifier "LAB_00109bee") (: ":") (expression_statement "FUN_00136510(*param_1);" (call_expression "FUN_00136510(*param_1)" (identifier "FUN_00136510") (argument_list "(*param_1)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) () ")"))) (; ";"))) (} "}"))) (} "}")) (else_clause "else if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" (else "else") (if_statement "if (lVar10 != 0) {\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" (if "if") (parenthesized_expression "(lVar10 != 0)" (( "(") (binary_expression "lVar10 != 0" (identifier "lVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    local_150 = (void *)xmalloc(lVar10);\n    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);\n    if ((long)local_148 < 0) goto LAB_00109bee;\n    qsort(local_150,local_148,8,FUN_00108380);\n  }" ({ "{") (expression_statement "local_150 = (void *)xmalloc(lVar10);" (assignment_expression "local_150 = (void *)xmalloc(lVar10)" (identifier "local_150") (= "=") (cast_expression "(void *)xmalloc(lVar10)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(lVar10)" (identifier "xmalloc") (argument_list "(lVar10)" (( "(") (identifier "lVar10") () ")"))))) (; ";")) (expression_statement "local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);" (assignment_expression "local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290)" (identifier "local_148") (= "=") (call_expression "(**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290)" (parenthesized_expression "(**(code **)(param_1[1] + 0x358))" (( "(") (pointer_expression "**(code **)(param_1[1] + 0x358)" (* "*") (pointer_expression "*(code **)(param_1[1] + 0x358)" (* "*") (cast_expression "(code **)(param_1[1] + 0x358)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1[1] + 0x358)" (( "(") (binary_expression "param_1[1] + 0x358" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (+ "+") (number_literal "0x358")) () ")"))))) () ")")) (argument_list "(param_1,local_150,DAT_00157290)" (( "(") (identifier "param_1") (, ",") (identifier "local_150") (, ",") (identifier "DAT_00157290") () ")")))) (; ";")) (if_statement "if ((long)local_148 < 0) goto LAB_00109bee;" (if "if") (parenthesized_expression "((long)local_148 < 0)" (( "(") (binary_expression "(long)local_148 < 0" (cast_expression "(long)local_148" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "local_148")) (< "<") (number_literal "0")) () ")")) (goto_statement "goto LAB_00109bee;" (goto "goto") (statement_identifier "LAB_00109bee") (; ";"))) (expression_statement "qsort(local_150,local_148,8,FUN_00108380);" (call_expression "qsort(local_150,local_148,8,FUN_00108380)" (identifier "qsort") (argument_list "(local_150,local_148,8,FUN_00108380)" (( "(") (identifier "local_150") (, ",") (identifier "local_148") (, ",") (number_literal "8") (, ",") (identifier "FUN_00108380") () ")"))) (; ";")) (} "}"))))) (expression_statement "local_d8 = DAT_001572a0;" (assignment_expression "local_d8 = DAT_001572a0" (identifier "local_d8") (= "=") (identifier "DAT_001572a0")) (; ";")) (expression_statement "local_cc = (undefined4)DAT_00157298;" (assignment_expression "local_cc = (undefined4)DAT_00157298" (identifier "local_cc") (= "=") (cast_expression "(undefined4)DAT_00157298" (( "(") (type_descriptor "undefined4" (type_identifier "undefined4")) () ")") (identifier "DAT_00157298"))) (; ";")) (expression_statement "bfd_map_over_sections(param_1,FUN_0010d910,local_128);" (call_expression "bfd_map_over_sections(param_1,FUN_0010d910,local_128)" (identifier "bfd_map_over_sections") (argument_list "(param_1,FUN_0010d910,local_128)" (( "(") (identifier "param_1") (, ",") (identifier "FUN_0010d910") (, ",") (identifier "local_128") () ")"))) (; ";")) (if_statement "if (local_150 != (void *)0x0) {\n    free(local_150);\n  }" (if "if") (parenthesized_expression "(local_150 != (void *)0x0)" (( "(") (binary_expression "local_150 != (void *)0x0" (identifier "local_150") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    free(local_150);\n  }" ({ "{") (expression_statement "free(local_150);" (call_expression "free(local_150)" (identifier "free") (argument_list "(local_150)" (( "(") (identifier "local_150") () ")"))) (; ";")) (} "}"))) (expression_statement "free(DAT_001572a0);" (call_expression "free(DAT_001572a0)" (identifier "free") (argument_list "(DAT_001572a0)" (( "(") (identifier "DAT_001572a0") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *abfd)

{
  type_2 var_33;
  long var_8;
  type_3 *pbVar3;
  type_4 uVar4;
  long *var_17;
  long *var_15;
  type_5 *var_22;
  type_3 *pbVar7;
  type_6 uVar8;
  char *pcVar9;
  char *format;
  long var_10;
  type_7 var_27;
  type_8 *var_16;
  long var_6;
  type_8 **__src;
  type_9 *var_11;
  type_9 *var_9;
  type_6 *var_28;
  type_9 *var_12;
  type_6 *var_29;
  long *plVar19;
  long *var_7;
  bool var_13;
  bool var_14;
  bool bVar23;
  type_9 bVar24;
  type_10 aux;
  type_11 disasm_info;
  
  bVar24 = 0;
  print_files = (type_12 *)0x0;
  prev_functionname = (char *)0x0;
  prev_line = 0xffffffff;
  var_3 = var_1;
  if (var_1 == 0) {
    var_3 = dynsymcount;
  }
  prev_discriminator = 0;
  sorted_syms = (type_8 **)var_2((var_3 + var_4) * 8);
  var_6 = var_3;
  __src = dynsyms;
  if (var_1 != 0) {
    __src = syms;
  }
  var_17 = (long *)var_5(sorted_syms,__src,var_3 * 8);
  var_15 = var_17;
  plVar19 = var_17;
LAB_00109890:
  var_6 = var_6 + -1;
  var_7 = plVar19;
  if (-1 < var_6) {
    while( true ) {
      plVar19 = var_7 + 1;
      var_8 = *var_7;
      var_9 = *(type_9 **)(var_8 + 8);
      if ((var_9 == (type_9 *)0x0) || (*var_9 == 0)) break;
      var_13 = false;
      bVar23 = (*(type_13 *)(var_8 + 0x18) & 0x104) == 0;
      if (!bVar23) {
        var_10 = 4;
        var_11 = var_9;
        var_12 = &DAT_0013d5f3;
        do {
          if (var_10 == 0) break;
          var_10 = var_10 + -1;
          var_13 = *var_11 < *var_12;
          bVar23 = *var_11 == *var_12;
          var_11 = var_11 + (type_7)bVar24 * -2 + 1;
          var_12 = var_12 + (type_7)bVar24 * -2 + 1;
        } while (bVar23);
        var_14 = false;
        var_13 = (!var_13 && !bVar23) == var_13;
        if (!var_13) {
          var_10 = 5;
          var_11 = &DAT_0013d5f8;
          do {
            if (var_10 == 0) break;
            var_10 = var_10 + -1;
            var_14 = *var_9 < *var_11;
            var_13 = *var_9 == *var_11;
            var_9 = var_9 + (type_7)bVar24 * -2 + 1;
            var_11 = var_11 + (type_7)bVar24 * -2 + 1;
          } while (var_13);
          if ((!var_14 && !var_13) != var_14) break;
        }
      }
      if ((*(long *)(var_8 + 0x20) == 0x156ed8) ||
         ((*(type_9 *)(*(long *)(var_8 + 0x20) + 0x21) & 0x10) != 0)) break;
      *var_15 = var_8;
      var_15 = var_15 + 1;
      var_6 = var_6 + -1;
      var_7 = plVar19;
      if (var_6 < 0) goto LAB_00109904;
    }
    goto LAB_00109890;
  }
LAB_00109904:
  var_3 = (long)var_15 - (long)var_17 >> 3;
  if (0 < var_4) {
    var_3 = var_4 + var_3;
    var_16 = synthsyms;
    do {
      *var_15 = (long)var_16;
      var_15 = var_15 + 1;
      var_16 = var_16 + 1;
    } while (var_15 != var_17 + var_3);
  }
  var_18(var_17,var_3,8,compare_symbols);
  var_19(&disasm_info,stdout,PTR_fprintf_00154fa8);
  disasm_info.print_address_func = objdump_print_address;
  aux.require_sec = 0;
  aux.dynrelbuf = (type_14 **)0x0;
  aux.dynrelcount = 0;
  aux.reloc = (type_14 *)0x0;
  disasm_info.symbol_at_address_func = objdump_symbol_at_address;
  aux.abfd = abfd;
  disasm_info.application_data = &aux;
  if (var_20 != (char *)0x0) {
    disasm_info.application_data = &aux;
    var_22 = (type_5 *)var_21();
    pcVar9 = var_20;
    if (var_22 == (type_5 *)0x0) {
      format = (char *)var_23(0,"can\'t use supplied machine %s",5);
                    /* WARNING: Subroutine does not return */
      var_24(format,pcVar9);
    }
    abfd->arch_info = var_22;
  }
  if (var_25 != var_26) {
    pbVar7 = (type_3 *)var_2(0x370);
    pbVar3 = abfd->xvec;
    var_29 = (type_6 *)((type_7)&pbVar7->flavour & 0xfffffffffffffff8);
    pbVar7->name = pbVar3->name;
    pbVar7->backend_data = pbVar3->backend_data;
    var_6 = (long)pbVar7 - (long)var_29;
    var_28 = (type_6 *)((long)pbVar3 - var_6);
    for (var_27 = (type_7)((int)var_6 + 0x370U >> 3); var_27 != 0; var_27 = var_27 - 1) {
      *var_29 = *var_28;
      var_28 = var_28 + (type_7)bVar24 * -2 + 1;
      var_29 = var_29 + (type_7)bVar24 * -2 + 1;
    }
    abfd->xvec = pbVar7;
    pbVar7->byteorder = var_25;
  }
  uVar8 = var_30(abfd);
  var_33 = abfd->xvec->byteorder;
  uVar4 = var_31(abfd);
  aux.disassemble_fn = (type_15)var_32(uVar4,var_33 == var_34,uVar8,abfd);
  if (aux.disassemble_fn == (type_15)0x0) {
    uVar4 = var_31(abfd);
    uVar8 = var_35(uVar4,0);
    pcVar9 = (char *)var_23(0,"can\'t disassemble for architecture %s\n",5);
    var_36(pcVar9,uVar8);
    exit_status = 1;
    return;
  }
  disasm_info.flavour = abfd->xvec->flavour;
  disasm_info.arch = var_31(abfd);
  disasm_info.mach = var_30(abfd);
  disasm_info.disassembler_options = disassembler_options;
  disasm_info.octets_per_byte = var_37(abfd);
  disasm_info.disassembler_needs_relocs = 0;
  disasm_info.skip_zeroes = 8;
  disasm_info.skip_zeroes_at_end = 3;
  var_33 = abfd->xvec->byteorder;
  if (var_33 == var_34) {
    disasm_info.var_25 = var_34;
    disasm_info.display_endian = var_34;
  }
  else if (var_33 == var_38) {
    disasm_info.var_25 = var_38;
    disasm_info.display_endian = var_38;
  }
  else {
    disasm_info.var_25 = var_26;
  }
  var_39(&disasm_info);
  var_6 = (*abfd->xvec->_bfd_get_dynamic_reloc_upper_bound)(abfd);
  if (var_6 < 0) {
    if (var_40 != 0) {
LAB_00109bee:
                    /* WARNING: Subroutine does not return */
      var_41(abfd->filename);
    }
  }
  else if (var_6 != 0) {
    aux.dynrelbuf = (type_14 **)var_2(var_6);
    aux.dynrelcount = (*abfd->xvec->_bfd_canonicalize_dynamic_reloc)(abfd,aux.dynrelbuf,dynsyms);
    if (aux.dynrelcount < 0) goto LAB_00109bee;
    var_18(aux.dynrelbuf,aux.dynrelcount,8,compare_relocs);
  }
  disasm_info.symtab = sorted_syms;
  disasm_info.symtab_size = (int)var_3;
  var_42(abfd,disassemble_section,&disasm_info);
  if (aux.dynrelbuf != (type_14 **)0x0) {
    var_43(aux.dynrelbuf);
  }
  var_43(sorted_syms);
  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))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (number_literal)))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (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: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (identifier))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))))) condition: (parenthesized_expression (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (unary_expression argument: (identifier)) right: (unary_expression argument: (identifier)))) right: (identifier))) consequence: (break_statement)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (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))) right: (number_literal))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier))) 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: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content) (escape_sequence) (string_content)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (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: (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: (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: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))) right: (number_literal)))))) (for_statement initializer: (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)) right: (number_literal))))) condition: (binary_expression left: (identifier) right: (number_literal)) update: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) 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: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (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)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (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))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (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: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (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)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (pointer_expression argument: (identifier))))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))))) arguments: (argument_list (identifier) (identifier) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement))))

void MASKED(undefined8 *param_1)

{
  int iVar1;
  undefined4 uVar2;
  long *__base;
  long *plVar3;
  long lVar4;
  undefined8 *puVar5;
  undefined8 uVar6;
  undefined8 uVar7;
  long lVar8;
  ulong uVar9;
  long lVar10;
  void *__src;
  byte *pbVar11;
  byte *pbVar12;
  undefined8 *puVar13;
  byte *pbVar14;
  undefined8 *puVar15;
  long *plVar16;
  long *plVar17;
  bool bVar18;
  bool bVar19;
  bool bVar20;
  byte bVar21;
  undefined8 *local_168 [2];
  undefined4 local_158;
  void *local_150;
  size_t local_148;
  long local_140;
  undefined8 local_138;
  undefined1 local_128 [16];
  undefined1 *local_118;
  undefined4 local_110;
  undefined4 local_10c;
  undefined8 local_108;
  undefined4 local_100;
  void *local_d8;
  undefined4 local_cc;
  code *local_a8;
  code *local_a0;
  undefined4 local_70;
  undefined4 local_6c;
  undefined8 local_68;
  undefined4 local_60;
  undefined8 local_40;
  
  bVar21 = 0;
  DAT_00157238 = 0;
  DAT_00157248 = 0;
  DAT_00157244 = 0xffffffff;
  DAT_00157298 = DAT_001572a8;
  if (DAT_001572a8 == 0) {
    DAT_00157298 = DAT_00157278;
  }
  DAT_00157240 = 0;
  DAT_001572a0 = (void *)xmalloc((DAT_00157298 + DAT_00157280) * 8);
  lVar10 = DAT_00157298;
  __src = DAT_00157290;
  if (DAT_001572a8 != 0) {
    __src = DAT_001572b0;
  }
  __base = (long *)memcpy(DAT_001572a0,__src,DAT_00157298 * 8);
  plVar3 = __base;
  plVar16 = __base;
LAB_00109890:
  lVar10 = lVar10 + -1;
  plVar17 = plVar16;
  if (-1 < lVar10) {
    while( true ) {
      plVar16 = plVar17 + 1;
      lVar4 = *plVar17;
      pbVar12 = *(byte **)(lVar4 + 8);
      if ((pbVar12 == (byte *)0x0) || (*pbVar12 == 0)) break;
      bVar18 = false;
      bVar20 = (*(uint *)(lVar4 + 0x18) & 0x104) == 0;
      if (!bVar20) {
        lVar8 = 4;
        pbVar11 = pbVar12;
        pbVar14 = &DAT_0013d5f3;
        do {
          if (lVar8 == 0) break;
          lVar8 = lVar8 + -1;
          bVar18 = *pbVar11 < *pbVar14;
          bVar20 = *pbVar11 == *pbVar14;
          pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;
          pbVar14 = pbVar14 + (ulong)bVar21 * -2 + 1;
        } while (bVar20);
        bVar19 = false;
        bVar18 = (!bVar18 && !bVar20) == bVar18;
        if (!bVar18) {
          lVar8 = 5;
          pbVar11 = &DAT_0013d5f8;
          do {
            if (lVar8 == 0) break;
            lVar8 = lVar8 + -1;
            bVar19 = *pbVar12 < *pbVar11;
            bVar18 = *pbVar12 == *pbVar11;
            pbVar12 = pbVar12 + (ulong)bVar21 * -2 + 1;
            pbVar11 = pbVar11 + (ulong)bVar21 * -2 + 1;
          } while (bVar18);
          if ((!bVar19 && !bVar18) != bVar19) break;
        }
      }
      if ((*(long *)(lVar4 + 0x20) == 0x156ed8) ||
         ((*(byte *)(*(long *)(lVar4 + 0x20) + 0x21) & 0x10) != 0)) break;
      *plVar3 = lVar4;
      plVar3 = plVar3 + 1;
      lVar10 = lVar10 + -1;
      plVar17 = plVar16;
      if (lVar10 < 0) goto LAB_00109904;
    }
    goto LAB_00109890;
  }
LAB_00109904:
  DAT_00157298 = (long)plVar3 - (long)__base >> 3;
  if (0 < DAT_00157280) {
    DAT_00157298 = DAT_00157280 + DAT_00157298;
    lVar10 = DAT_00157288;
    do {
      *plVar3 = lVar10;
      plVar3 = plVar3 + 1;
      lVar10 = lVar10 + 0x30;
    } while (plVar3 != __base + DAT_00157298);
  }
  qsort(__base,DAT_00157298,8,FUN_00109c90);
  init_disassemble_info(local_128,stdout,PTR_fprintf_00154fa8);
  local_a8 = FUN_001091e0;
  local_158 = 0;
  local_150 = (void *)0x0;
  local_148 = 0;
  local_138 = 0;
  local_a0 = FUN_00108a80;
  local_168[0] = param_1;
  local_118 = (undefined1 *)local_168;
  if (DAT_001572c0 != 0) {
    local_118 = (undefined1 *)local_168;
    lVar4 = bfd_scan_arch();
    lVar10 = DAT_001572c0;
    if (lVar4 == 0) {
      uVar6 = dcgettext(0,"can\'t use supplied machine %s",5);
                    /* WARNING: Subroutine does not return */
      FUN_00136590(uVar6,lVar10);
    }
    param_1[0x18] = lVar4;
  }
  if (DAT_00155450 != 2) {
    puVar5 = (undefined8 *)xmalloc(0x370);
    puVar13 = (undefined8 *)param_1[1];
    *puVar5 = *puVar13;
    puVar5[0x6d] = puVar13[0x6d];
    lVar10 = (long)puVar5 - (long)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);
    puVar13 = (undefined8 *)((long)puVar13 - lVar10);
    puVar15 = (undefined8 *)((ulong)(puVar5 + 1) & 0xfffffffffffffff8);
    for (uVar9 = (ulong)((int)lVar10 + 0x370U >> 3); uVar9 != 0; uVar9 = uVar9 - 1) {
      *puVar15 = *puVar13;
      puVar13 = puVar13 + (ulong)bVar21 * -2 + 1;
      puVar15 = puVar15 + (ulong)bVar21 * -2 + 1;
    }
    param_1[1] = puVar5;
    *(int *)((long)puVar5 + 0xc) = DAT_00155450;
  }
  uVar6 = bfd_get_mach(param_1);
  iVar1 = *(int *)(param_1[1] + 0xc);
  uVar2 = bfd_get_arch(param_1);
  local_140 = disassembler(uVar2,iVar1 == 0,uVar6,param_1);
  if (local_140 == 0) {
    uVar2 = bfd_get_arch(param_1);
    uVar6 = bfd_printable_arch_mach(uVar2,0);
    uVar7 = dcgettext(0,"can\'t disassemble for architecture %s\n",5);
    FUN_00136630(uVar7,uVar6);
    DAT_00157388 = 1;
    return;
  }
  local_110 = *(undefined4 *)(param_1[1] + 8);
  local_10c = bfd_get_arch(param_1);
  local_108 = bfd_get_mach(param_1);
  local_40 = DAT_001572b8;
  local_6c = bfd_octets_per_byte(param_1);
  local_60 = 0;
  local_68 = 0x300000008;
  if (*(int *)(param_1[1] + 0xc) == 0) {
    local_100 = 0;
    local_70 = 0;
  }
  else if (*(int *)(param_1[1] + 0xc) == 1) {
    local_100 = 1;
    local_70 = 1;
  }
  else {
    local_100 = 2;
  }
  disassemble_init_for_target(local_128);
  lVar10 = (**(code **)(param_1[1] + 0x350))(param_1);
  if (lVar10 < 0) {
    if (DAT_00157368 != 0) {
LAB_00109bee:
                    /* WARNING: Subroutine does not return */
      FUN_00136510(*param_1);
    }
  }
  else if (lVar10 != 0) {
    local_150 = (void *)xmalloc(lVar10);
    local_148 = (**(code **)(param_1[1] + 0x358))(param_1,local_150,DAT_00157290);
    if ((long)local_148 < 0) goto LAB_00109bee;
    qsort(local_150,local_148,8,FUN_00108380);
  }
  local_d8 = DAT_001572a0;
  local_cc = (undefined4)DAT_00157298;
  bfd_map_over_sections(param_1,FUN_0010d910,local_128);
  if (local_150 != (void *)0x0) {
    free(local_150);
  }
  free(DAT_001572a0);
  return;
}

