
/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void print_annotated_source(void)

{
  int *piVar1;
  Source_File **ppSVar2;
  ulong *puVar3;
  int iVar4;
  ulong uVar5;
  source_file **ppsVar6;
  void **ppvVar7;
  Sym *pSVar8;
  FILE *__stream;
  char *pcVar9;
  void *pvVar10;
  long *plVar11;
  Source_File *pSVar12;
  Sym *pSVar13;
  long *plVar14;
  long *plVar15;
  long lVar16;
  byte bVar17;
  double dVar18;
  
  bVar17 = 0;
  pSVar13 = symtab.base;
  if (symtab.base < symtab.limit) {
    do {
      while (((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)
              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||
                    ((syms[8].len == 0 &&
                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))) {
        pSVar8 = symtab.limit;
        piVar1 = &pSVar13->line_num;
        ppSVar2 = &pSVar13->file;
        pSVar13 = pSVar13 + 1;
        (*ppSVar2)->num_lines = *piVar1;
        if (pSVar8 <= pSVar13) goto LAB_00103bb0;
      }
      pSVar13 = pSVar13 + 1;
    } while (pSVar13 < symtab.limit);
LAB_00103bb0:
    pSVar12 = first_src_file;
    if (first_src_file != (Source_File *)0x0) goto LAB_00103bc0;
    pSVar13 = symtab.base;
    if (symtab.limit <= symtab.base) {
      return;
    }
  }
  else {
    pSVar12 = first_src_file;
    if (first_src_file == (Source_File *)0x0) {
      return;
    }
LAB_00103bc0:
    do {
      if (0 < pSVar12->num_lines) {
        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);
        pSVar12->line = ppvVar7;
        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);
      }
      ppsVar6 = &pSVar12->next;
      pSVar12 = *ppsVar6;
    } while (*ppsVar6 != (source_file *)0x0);
    pSVar13 = symtab.base;
    pSVar12 = first_src_file;
    if (symtab.limit <= symtab.base) goto joined_r0x00103c9a;
  }
LAB_00103c20:
  do {
    if (((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&
       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||
        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))
       )) {
      pSVar12 = pSVar13->file;
      uVar5 = pSVar13->ncalls;
      iVar4 = pSVar13->line_num;
      puVar3 = &pSVar12->ncalls;
      *puVar3 = *puVar3 + uVar5;
      ppvVar7 = pSVar12->line + (long)iVar4 + -1;
      plVar14 = (long *)*ppvVar7;
      if (plVar14 == (long *)0x0) {
        *ppvVar7 = pSVar13;
      }
      else {
        if (*plVar14 == 0) {
          plVar14[5] = plVar14[5] + uVar5;
          pSVar13 = pSVar13 + 1;
          pSVar12 = first_src_file;
          if (symtab.limit <= pSVar13) break;
          goto LAB_00103c20;
        }
        plVar11 = (long *)xmalloc(0x158);
        plVar15 = plVar11;
        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {
          *plVar15 = *plVar14;
          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;
          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;
        }
        *plVar11 = 0;
        plVar11[5] = plVar11[5] + pSVar13->ncalls;
        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;
      }
    }
    pSVar13 = pSVar13 + 1;
    pSVar12 = first_src_file;
  } while (pSVar13 < symtab.limit);
joined_r0x00103c9a:
  do {
    if (pSVar12 == (Source_File *)0x0) {
      return;
    }
    if ((pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0)))) {
      num_lines_executed = 0;
      num_executable_lines = 0;
      __stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);
      iVar4 = bb_table_length;
      if (__stream != (FILE *)0x0) {
        if (bb_table_length < 1) {
          ppvVar7 = pSVar12->line;
        }
        else {
          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);
          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);
          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);
          iVar4 = bb_table_length;
          if (pSVar12->num_lines <= bb_table_length) {
            iVar4 = pSVar12->num_lines;
          }
          ppvVar7 = pSVar12->line;
          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&
             (*(long *)((long)pvVar10 + 0x28) != 0)) {
            lVar16 = 8;
            do {
              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));
              ppvVar7 = pSVar12->line;
              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||
                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;
              lVar16 = lVar16 + 8;
            } while (*(long *)((long)pvVar10 + 0x28) != 0);
          }
        }
        free(ppvVar7);
        pSVar12->line = (void **)0x0;
        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);
        fprintf(__stream,pcVar9);
        lVar16 = num_executable_lines;
        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);
        fprintf(__stream,pcVar9,lVar16);
        lVar16 = num_lines_executed;
        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);
        fprintf(__stream,pcVar9,lVar16);
        dVar18 = _DAT_001101e8;
        if (num_executable_lines != 0) {
          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;
        }
        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);
        fprintf(__stream,pcVar9,dVar18);
        uVar5 = pSVar12->ncalls;
        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);
        fprintf(__stream,pcVar9,uVar5);
        dVar18 = 0.0;
        if (num_executable_lines != 0) {
          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;
        }
        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);
        fprintf(__stream,pcVar9,dVar18);
        if (stdout != __stream) {
          fclose(__stream);
        }
      }
    }
    pSVar12 = pSVar12->next;
  } while( true );
}



/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void FUN_00103b30(void)

{
  undefined8 *puVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  void *__s;
  long lVar5;
  FILE *__stream;
  char *pcVar6;
  long *plVar7;
  long *plVar8;
  undefined8 *puVar9;
  long *plVar10;
  long lVar11;
  byte bVar12;
  double dVar13;
  
  bVar12 = 0;
  puVar9 = DAT_00119b38;
  if (DAT_00119b38 < DAT_00119b40) {
    do {
      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&
             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||
              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {
        puVar4 = DAT_00119b40;
        puVar1 = puVar9 + 4;
        plVar8 = puVar9 + 3;
        puVar9 = puVar9 + 0x2b;
        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;
        if (puVar4 <= puVar9) goto LAB_00103bb0;
      }
      puVar9 = puVar9 + 0x2b;
    } while (puVar9 < DAT_00119b40);
LAB_00103bb0:
    plVar8 = DAT_00119610;
    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;
    puVar9 = DAT_00119b38;
    if (DAT_00119b40 <= DAT_00119b38) {
      return;
    }
  }
  else {
    plVar8 = DAT_00119610;
    if (DAT_00119610 == (long *)0x0) {
      return;
    }
LAB_00103bc0:
    do {
      if (0 < (int)plVar8[3]) {
        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);
        plVar8[4] = (long)__s;
        memset(__s,0,(long)(int)plVar8[3] << 3);
      }
      plVar8 = (long *)*plVar8;
    } while (plVar8 != (long *)0x0);
    puVar9 = DAT_00119b38;
    plVar8 = DAT_00119610;
    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;
  }
LAB_00103c20:
  do {
    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&
       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||
        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {
      lVar5 = puVar9[3];
      lVar11 = puVar9[5];
      iVar2 = *(int *)(puVar9 + 4);
      plVar8 = (long *)(lVar5 + 0x10);
      *plVar8 = *plVar8 + lVar11;
      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);
      plVar8 = (long *)*puVar1;
      if (plVar8 == (long *)0x0) {
        *puVar1 = puVar9;
      }
      else {
        if (*plVar8 == 0) {
          plVar8[5] = plVar8[5] + lVar11;
          puVar9 = puVar9 + 0x2b;
          plVar8 = DAT_00119610;
          if (DAT_00119b40 <= puVar9) break;
          goto LAB_00103c20;
        }
        plVar7 = (long *)xmalloc(0x158);
        plVar10 = plVar7;
        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {
          *plVar10 = *plVar8;
          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;
          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;
        }
        *plVar7 = 0;
        plVar7[5] = plVar7[5] + puVar9[5];
        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;
      }
    }
    puVar9 = puVar9 + 0x2b;
    plVar8 = DAT_00119610;
  } while (puVar9 < DAT_00119b40);
joined_r0x00103c9a:
  do {
    if (plVar8 == (long *)0x0) {
      return;
    }
    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {
      DAT_00118968 = 0;
      DAT_00118970 = 0;
      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);
      uVar3 = DAT_00118270;
      if (__stream != (FILE *)0x0) {
        if ((int)DAT_00118270 < 1) {
          plVar10 = (long *)plVar8[4];
        }
        else {
          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);
          fprintf(__stream,pcVar6,(ulong)uVar3);
          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);
          uVar3 = DAT_00118270;
          if ((int)plVar8[3] <= (int)DAT_00118270) {
            uVar3 = *(uint *)(plVar8 + 3);
          }
          plVar10 = (long *)plVar8[4];
          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)
             ) {
            lVar11 = 8;
            do {
              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));
              plVar10 = (long *)plVar8[4];
              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||
                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;
              lVar11 = lVar11 + 8;
            } while (*(long *)(lVar5 + 0x28) != 0);
          }
        }
        free(plVar10);
        plVar8[4] = 0;
        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);
        fprintf(__stream,pcVar6);
        lVar5 = DAT_00118970;
        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);
        fprintf(__stream,pcVar6,lVar5);
        lVar5 = DAT_00118968;
        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);
        fprintf(__stream,pcVar6,lVar5);
        dVar13 = _DAT_001101e8;
        if (DAT_00118970 != 0) {
          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;
        }
        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);
        fprintf(__stream,pcVar6,dVar13);
        lVar5 = plVar8[2];
        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);
        fprintf(__stream,pcVar6,lVar5);
        dVar13 = 0.0;
        if (DAT_00118970 != 0) {
          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;
        }
        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);
        fprintf(__stream,pcVar6,dVar13);
        if (stdout != __stream) {
          fclose(__stream);
        }
      }
    }
    plVar8 = (long *)*plVar8;
  } while( true );
}


PUSH R14
PUSH R13
PUSH R12
PUSH RBP
LEA RBP,[0x119c20]
PUSH RBX
SUB RSP,0x10
MOV RBX,qword ptr [0x00119b38]
CMP RBX,qword ptr [0x00119b40]
JC 0x00103b70
JMP 0x00104070
ADD RBX,0x158
CMP qword ptr [0x00119b40],RBX
JBE 0x00103bb0
MOV RAX,qword ptr [RBX + 0x18]
TEST RAX,RAX
JZ 0x00103b60
MOV EAX,dword ptr [RAX + 0x18]
CMP dword ptr [RBX + 0x20],EAX
JLE 0x00103b60
MOV RSI,qword ptr [RBX]
MOV RDI,RBP
CALL 0x0010c540
TEST RAX,RAX
JZ 0x00103fc0
MOV EDX,dword ptr [RBX + 0x20]
MOV RAX,qword ptr [RBX + 0x18]
ADD RBX,0x158
CMP qword ptr [0x00119b40],RBX
MOV dword ptr [RAX + 0x18],EDX
JA 0x00103b70
NOP
MOV RBX,qword ptr [0x00119610]
TEST RBX,RBX
JZ 0x00104088
MOVSXD RDI,dword ptr [RBX + 0x18]
TEST EDI,EDI
JLE 0x00103be7
SHL RDI,0x3
CALL 0x00102240
MOVSXD RDX,dword ptr [RBX + 0x18]
XOR ESI,ESI
MOV qword ptr [RBX + 0x20],RAX
MOV RDI,RAX
SHL RDX,0x3
CALL 0x00102210
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x00103bc0
MOV RBX,qword ptr [0x00119b38]
CMP RBX,qword ptr [0x00119b40]
JNC 0x00103c90
LEA R12,[0x119c20]
JMP 0x00103c20
ADD RBX,0x158
CMP qword ptr [0x00119b40],RBX
JBE 0x00103c90
MOV RAX,qword ptr [RBX + 0x18]
TEST RAX,RAX
JZ 0x00103c10
MOV ESI,dword ptr [RAX + 0x18]
TEST ESI,ESI
JZ 0x00103c10
MOV RSI,qword ptr [RBX]
MOV RDI,R12
CALL 0x0010c540
TEST RAX,RAX
JZ 0x00103ff0
MOV RAX,qword ptr [RBX + 0x18]
MOV RDX,qword ptr [RBX + 0x28]
MOVSXD RCX,dword ptr [RBX + 0x20]
ADD qword ptr [RAX + 0x10],RDX
MOV RAX,qword ptr [RAX + 0x20]
LEA RAX,[RAX + RCX*0x8 + -0x8]
MOV RBP,qword ptr [RAX]
TEST RBP,RBP
JZ 0x00104020
CMP qword ptr [RBP],0x0
JNZ 0x00104030
ADD qword ptr [RBP + 0x28],RDX
ADD RBX,0x158
CMP qword ptr [0x00119b40],RBX
JA 0x00103c20
NOP dword ptr [RAX + RAX*0x1]
MOV RBX,qword ptr [0x00119610]
TEST RBX,RBX
JZ 0x00103ec7
LEA R13,[0x11001a]
NOP word ptr [RAX + RAX*0x1]
MOV EDX,dword ptr [RBX + 0x18]
TEST EDX,EDX
JZ 0x00103ebb
MOV EAX,dword ptr [0x001182e0]
TEST EAX,EAX
JZ 0x00103cd0
CMP qword ptr [RBX + 0x10],0x0
JZ 0x00103ebb
MOV RCX,RBX
LEA RDX,[0x1030f0]
MOV ESI,0x10
MOV RDI,RBX
MOV qword ptr [0x00118968],0x0
MOV qword ptr [0x00118970],0x0
CALL 0x0010bb80
MOV RBP,RAX
TEST RAX,RAX
JZ 0x00103ebb
MOV R12D,dword ptr [0x00118270]
TEST R12D,R12D
JG 0x00103ed8
MOV RDI,qword ptr [RBX + 0x20]
CALL 0x00102050
MOV qword ptr [RBX + 0x20],0x0
MOV EDX,0x5
LEA RSI,[0x110025]
LEA RDI,[0x110008]
CALL 0x00102170
MOV RDI,RBP
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001022f0
MOV R12,qword ptr [0x00118970]
MOV EDX,0x5
LEA RSI,[0x110140]
LEA RDI,[0x110008]
CALL 0x00102170
MOV RDX,R12
MOV RDI,RBP
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001022f0
MOV R12,qword ptr [0x00118968]
MOV EDX,0x5
LEA RSI,[0x11003b]
LEA RDI,[0x110008]
CALL 0x00102170
MOV RDX,R12
MOV RDI,RBP
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001022f0
MOV RAX,qword ptr [0x00118970]
MOVSD XMM0,qword ptr [0x001101e8]
TEST RAX,RAX
JZ 0x00103de3
PXOR XMM0,XMM0
PXOR XMM1,XMM1
CVTSI2SD XMM0,qword ptr [0x00118968]
MULSD XMM0,qword ptr [0x001101e8]
CVTSI2SD XMM1,RAX
DIVSD XMM0,XMM1
MOV EDX,0x5
LEA RSI,[0x110168]
LEA RDI,[0x110008]
MOVSD qword ptr [RSP + 0x8],XMM0
CALL 0x00102170
MOVSD XMM0,qword ptr [RSP + 0x8]
MOV RDI,RBP
MOV RSI,RAX
MOV EAX,0x1
CALL 0x001022f0
MOV R12,qword ptr [RBX + 0x10]
MOV EDX,0x5
LEA RSI,[0x110190]
LEA RDI,[0x110008]
CALL 0x00102170
MOV RDX,R12
MOV RDI,RBP
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001022f0
MOV RDX,qword ptr [0x00118970]
PXOR XMM0,XMM0
TEST RDX,RDX
JZ 0x00103e76
MOV RAX,qword ptr [RBX + 0x10]
TEST RAX,RAX
JS 0x00103fa0
PXOR XMM0,XMM0
CVTSI2SD XMM0,RAX
PXOR XMM1,XMM1
CVTSI2SD XMM1,RDX
DIVSD XMM0,XMM1
MOV EDX,0x5
LEA RSI,[0x1101c0]
LEA RDI,[0x110008]
MOVSD qword ptr [RSP + 0x8],XMM0
CALL 0x00102170
MOVSD XMM0,qword ptr [RSP + 0x8]
MOV RDI,RBP
MOV RSI,RAX
MOV EAX,0x1
CALL 0x001022f0
CMP qword ptr [0x00118900],RBP
JZ 0x00103ebb
MOV RDI,RBP
CALL 0x00102140
MOV RBX,qword ptr [RBX]
TEST RBX,RBX
JNZ 0x00103cb0
ADD RSP,0x10
POP RBX
POP RBP
POP R12
POP R13
POP R14
RET
MOV EDX,0x5
LEA RSI,[0x110118]
LEA RDI,[0x110008]
CALL 0x00102170
MOV EDX,R12D
MOV RDI,RBP
MOV RSI,RAX
XOR EAX,EAX
CALL 0x001022f0
MOV RDI,qword ptr [RBX + 0x20]
MOVSXD RSI,dword ptr [RBX + 0x18]
MOV EDX,0x8
LEA RCX,[0x103040]
CALL 0x001020e0
MOV EAX,dword ptr [0x00118270]
CMP dword ptr [RBX + 0x18],EAX
CMOVLE EAX,dword ptr [RBX + 0x18]
MOV RDI,qword ptr [RBX + 0x20]
MOV EDX,EAX
TEST EAX,EAX
JLE 0x00103d1d
MOV RAX,qword ptr [RDI]
TEST RAX,RAX
JZ 0x00103d1d
MOV RCX,qword ptr [RAX + 0x28]
TEST RCX,RCX
JZ 0x00103d1d
SUB EDX,0x1
MOV R12D,0x8
LEA R14,[0x8 + RDX*0x8]
JMP 0x00103f7e
MOV RAX,qword ptr [RDI + R12*0x1]
TEST RAX,RAX
JZ 0x00103d1d
MOV RCX,qword ptr [RAX + 0x28]
ADD R12,0x8
TEST RCX,RCX
JZ 0x00103d1d
MOV EDX,dword ptr [RAX + 0x20]
MOV RDI,RBP
MOV RSI,R13
XOR EAX,EAX
CALL 0x001022f0
MOV RDI,qword ptr [RBX + 0x20]
CMP R12,R14
JNZ 0x00103f60
JMP 0x00103d1d
MOV RCX,RAX
AND EAX,0x1
PXOR XMM0,XMM0
SHR RCX,0x1
OR RCX,RAX
CVTSI2SD XMM0,RCX
ADDSD XMM0,XMM0
JMP 0x00103e69
MOV EDI,dword ptr [0x00119c20]
TEST EDI,EDI
JNZ 0x00103b60
MOV RSI,qword ptr [RBX]
LEA RDI,[0x119c38]
CALL 0x0010c540
TEST RAX,RAX
JNZ 0x00103b60
JMP 0x00103b95
MOV ECX,dword ptr [0x00119c20]
TEST ECX,ECX
JNZ 0x00103c10
MOV RSI,qword ptr [RBX]
LEA RDI,[0x119c38]
CALL 0x0010c540
TEST RAX,RAX
JNZ 0x00103c10
JMP 0x00103c44
MOV qword ptr [RAX],RBX
JMP 0x00103c10
MOV EDI,0x158
CALL 0x00102240
MOV ECX,0x2b
MOV RSI,RBP
MOV RDI,RAX
MOVSQ.REP RDI,RSI
MOV qword ptr [RAX],0x0
MOV RDX,qword ptr [RBX + 0x28]
ADD qword ptr [RAX + 0x28],RDX
MOV RDX,qword ptr [RBX + 0x18]
MOVSXD RCX,dword ptr [RBX + 0x20]
MOV RDX,qword ptr [RDX + 0x20]
MOV qword ptr [RDX + RCX*0x8 + -0x8],RAX
JMP 0x00103c10
MOV RBX,qword ptr [0x00119610]
TEST RBX,RBX
JNZ 0x00103bc0
JMP 0x00103ec7
MOV RBX,qword ptr [0x00119b38]
CMP RBX,qword ptr [0x00119b40]
JC 0x00103c03
JMP 0x00103ec7
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n\nvoid FUN_00103b30(void)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  void *__s;\n  long lVar5;\n  FILE *__stream;\n  char *pcVar6;\n  long *plVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long lVar11;\n  byte bVar12;\n  double dVar13;\n  \n  bVar12 = 0;\n  puVar9 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);\njoined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );\n}\n\n" comment (function_definition "void FUN_00103b30(void)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  void *__s;\n  long lVar5;\n  FILE *__stream;\n  char *pcVar6;\n  long *plVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long lVar11;\n  byte bVar12;\n  double dVar13;\n  \n  bVar12 = 0;\n  puVar9 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);\njoined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00103b30(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  void *__s;\n  long lVar5;\n  FILE *__stream;\n  char *pcVar6;\n  long *plVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long lVar11;\n  byte bVar12;\n  double dVar13;\n  \n  bVar12 = 0;\n  puVar9 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);\njoined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = DAT_00119b38;" (assignment_expression "puVar9 = DAT_00119b38" identifier = identifier) ;) (if_statement "if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }" if (parenthesized_expression "(DAT_00119b38 < DAT_00119b40)" ( (binary_expression "DAT_00119b38 < DAT_00119b40" identifier < identifier) )) (compound_statement "{\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }" { (do_statement "do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);" do (compound_statement "{\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    }" { (while_statement "while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }" while (parenthesized_expression "(((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))))))" ( (parenthesized_expression "((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))" ( (binary_expression "(puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))))" (parenthesized_expression "(puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4)))" ( (binary_expression "puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))" (binary_expression "puVar9[3] != 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))" ( (binary_expression "*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4)" (pointer_expression "*(int *)(puVar9[3] + 0x18)" * (cast_expression "(int *)(puVar9[3] + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9[3] + 0x18)" ( (binary_expression "puVar9[3] + 0x18" (subscript_expression "puVar9[3]" identifier [ number_literal ]) + number_literal) )))) < (pointer_expression "*(int *)(puVar9 + 4)" * (cast_expression "(int *)(puVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))))" ( (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))" ( (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c20)" identifier = (call_expression "FUN_0010c540(&DAT_00119c20)" identifier (argument_list "(&DAT_00119c20)" ( (pointer_expression "&DAT_00119c20" & identifier) )))) , (binary_expression "lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))" (binary_expression "lVar5 != 0" identifier != number_literal) || (parenthesized_expression "((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))" ( (parenthesized_expression "(DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))" ( (binary_expression "DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)" (binary_expression "DAT_00119c20 == 0" identifier == number_literal) && (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)" ( (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c38)" identifier = (call_expression "FUN_0010c540(&DAT_00119c38)" identifier (argument_list "(&DAT_00119c38)" ( (pointer_expression "&DAT_00119c38" & identifier) )))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) )))) )) ))) )) )) (compound_statement "{\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }" { (expression_statement "puVar4 = DAT_00119b40;" (assignment_expression "puVar4 = DAT_00119b40" identifier = identifier) ;) (expression_statement "puVar1 = puVar9 + 4;" (assignment_expression "puVar1 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "plVar8 = puVar9 + 3;" (assignment_expression "plVar8 = puVar9 + 3" identifier = (binary_expression "puVar9 + 3" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" identifier = (binary_expression "puVar9 + 0x2b" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;" (assignment_expression "*(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1" (pointer_expression "*(undefined4 *)(*plVar8 + 0x18)" * (cast_expression "(undefined4 *)(*plVar8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar8 + 0x18)" ( (binary_expression "*plVar8 + 0x18" (pointer_expression "*plVar8" * identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)puVar1" * (cast_expression "(undefined4 *)puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (puVar4 <= puVar9) goto LAB_00103bb0;" if (parenthesized_expression "(puVar4 <= puVar9)" ( (binary_expression "puVar4 <= puVar9" identifier <= identifier) )) (goto_statement "goto LAB_00103bb0;" goto statement_identifier ;)) })) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" identifier = (binary_expression "puVar9 + 0x2b" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 < DAT_00119b40)" ( (binary_expression "puVar9 < DAT_00119b40" identifier < identifier) )) ;) (labeled_statement "LAB_00103bb0:\n    plVar8 = DAT_00119610;" statement_identifier : (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;)) (if_statement "if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;" if (parenthesized_expression "(DAT_00119610 != (long *)0x0)" ( (binary_expression "DAT_00119610 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00103bc0;" goto statement_identifier ;)) (expression_statement "puVar9 = DAT_00119b38;" (assignment_expression "puVar9 = DAT_00119b38" identifier = identifier) ;) (if_statement "if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }" if (parenthesized_expression "(DAT_00119b40 <= DAT_00119b38)" ( (binary_expression "DAT_00119b40 <= DAT_00119b38" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }" else (compound_statement "{\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }" { (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;) (if_statement "if (DAT_00119610 == (long *)0x0) {\n      return;\n    }" if (parenthesized_expression "(DAT_00119610 == (long *)0x0)" ( (binary_expression "DAT_00119610 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);" statement_identifier : (do_statement "do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);" do (compound_statement "{\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    }" { (if_statement "if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }" if (parenthesized_expression "(0 < (int)plVar8[3])" ( (binary_expression "0 < (int)plVar8[3]" number_literal < (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }" { (expression_statement "__s = (void *)xmalloc((long)(int)plVar8[3] << 3);" (assignment_expression "__s = (void *)xmalloc((long)(int)plVar8[3] << 3)" identifier = (cast_expression "(void *)xmalloc((long)(int)plVar8[3] << 3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)(int)plVar8[3] << 3)" identifier (argument_list "((long)(int)plVar8[3] << 3)" ( (binary_expression "(long)(int)plVar8[3] << 3" (cast_expression "(long)(int)plVar8[3]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ]))) << number_literal) ))))) ;) (expression_statement "plVar8[4] = (long)__s;" (assignment_expression "plVar8[4] = (long)__s" (subscript_expression "plVar8[4]" identifier [ number_literal ]) = (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "memset(__s,0,(long)(int)plVar8[3] << 3);" (call_expression "memset(__s,0,(long)(int)plVar8[3] << 3)" identifier (argument_list "(__s,0,(long)(int)plVar8[3] << 3)" ( identifier , number_literal , (binary_expression "(long)(int)plVar8[3] << 3" (cast_expression "(long)(int)plVar8[3]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ]))) << number_literal) ))) ;) })) (expression_statement "plVar8 = (long *)*plVar8;" (assignment_expression "plVar8 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) }) while (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (expression_statement "puVar9 = DAT_00119b38;" (assignment_expression "puVar9 = DAT_00119b38" identifier = identifier) ;) (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;) (if_statement "if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;" if (parenthesized_expression "(DAT_00119b40 <= DAT_00119b38)" ( (binary_expression "DAT_00119b40 <= DAT_00119b38" identifier <= identifier) )) (goto_statement "goto joined_r0x00103c9a;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);" statement_identifier : (do_statement "do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);" do (compound_statement "{\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  }" { (if_statement "if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }" if (parenthesized_expression "(((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0))))))" ( (binary_expression "((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))" (parenthesized_expression "((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0))" ( (binary_expression "(puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)" (parenthesized_expression "(puVar9[3] != 0)" ( (binary_expression "puVar9[3] != 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(*(int *)(puVar9[3] + 0x18) != 0)" ( (binary_expression "*(int *)(puVar9[3] + 0x18) != 0" (pointer_expression "*(int *)(puVar9[3] + 0x18)" * (cast_expression "(int *)(puVar9[3] + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9[3] + 0x18)" ( (binary_expression "puVar9[3] + 0x18" (subscript_expression "puVar9[3]" identifier [ number_literal ]) + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))" ( (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0))))" ( (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9)" identifier = (call_expression "FUN_0010c540(&DAT_00119c20,*puVar9)" identifier (argument_list "(&DAT_00119c20,*puVar9)" ( (pointer_expression "&DAT_00119c20" & identifier) , (pointer_expression "*puVar9" * identifier) )))) , (binary_expression "lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))" (binary_expression "lVar5 != 0" identifier != number_literal) || (parenthesized_expression "((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))" ( (parenthesized_expression "(DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0))" ( (binary_expression "DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)" (binary_expression "DAT_00119c20 == 0" identifier == number_literal) && (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)" ( (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9)" identifier = (call_expression "FUN_0010c540(&DAT_00119c38,*puVar9)" identifier (argument_list "(&DAT_00119c38,*puVar9)" ( (pointer_expression "&DAT_00119c38" & identifier) , (pointer_expression "*puVar9" * identifier) )))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) )))) )) ))) )) (compound_statement "{\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }" { (expression_statement "lVar5 = puVar9[3];" (assignment_expression "lVar5 = puVar9[3]" identifier = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) (expression_statement "lVar11 = puVar9[5];" (assignment_expression "lVar11 = puVar9[5]" identifier = (subscript_expression "puVar9[5]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *(int *)(puVar9 + 4);" (assignment_expression "iVar2 = *(int *)(puVar9 + 4)" identifier = (pointer_expression "*(int *)(puVar9 + 4)" * (cast_expression "(int *)(puVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar8 = (long *)(lVar5 + 0x10);" (assignment_expression "plVar8 = (long *)(lVar5 + 0x10)" identifier = (cast_expression "(long *)(lVar5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*plVar8 = *plVar8 + lVar11;" (assignment_expression "*plVar8 = *plVar8 + lVar11" (pointer_expression "*plVar8" * identifier) = (binary_expression "*plVar8 + lVar11" (pointer_expression "*plVar8" * identifier) + identifier)) ;) (expression_statement "puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);" (assignment_expression "puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8)" identifier = (cast_expression "(undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8)" ( (binary_expression "*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8" (binary_expression "*(long *)(lVar5 + 0x20) + -8" (pointer_expression "*(long *)(lVar5 + 0x20)" * (cast_expression "(long *)(lVar5 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) + number_literal) + (binary_expression "(long)iVar2 * 8" (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "plVar8 = (long *)*puVar1;" (assignment_expression "plVar8 = (long *)*puVar1" identifier = (cast_expression "(long *)*puVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (if_statement "if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }" if (parenthesized_expression "(plVar8 == (long *)0x0)" ( (binary_expression "plVar8 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar1 = puVar9;\n      }" { (expression_statement "*puVar1 = puVar9;" (assignment_expression "*puVar1 = puVar9" (pointer_expression "*puVar1" * identifier) = identifier) ;) }) (else_clause "else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }" else (compound_statement "{\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }" { (if_statement "if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }" if (parenthesized_expression "(*plVar8 == 0)" ( (binary_expression "*plVar8 == 0" (pointer_expression "*plVar8" * identifier) == number_literal) )) (compound_statement "{\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }" { (expression_statement "plVar8[5] = plVar8[5] + lVar11;" (assignment_expression "plVar8[5] = plVar8[5] + lVar11" (subscript_expression "plVar8[5]" identifier [ number_literal ]) = (binary_expression "plVar8[5] + lVar11" (subscript_expression "plVar8[5]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" identifier = (binary_expression "puVar9 + 0x2b" identifier + number_literal)) ;) (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;) (if_statement "if (DAT_00119b40 <= puVar9) break;" if (parenthesized_expression "(DAT_00119b40 <= puVar9)" ( (binary_expression "DAT_00119b40 <= puVar9" identifier <= identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00103c20;" goto statement_identifier ;) })) (expression_statement "plVar7 = (long *)xmalloc(0x158);" (assignment_expression "plVar7 = (long *)xmalloc(0x158)" identifier = (cast_expression "(long *)xmalloc(0x158)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x158)" identifier (argument_list "(0x158)" ( number_literal ))))) ;) (expression_statement "plVar10 = plVar7;" (assignment_expression "plVar10 = plVar7" identifier = identifier) ;) (for_statement "for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }" for ( (assignment_expression "lVar5 = 0x2b" identifier = number_literal) ; (binary_expression "lVar5 != 0" identifier != number_literal) ; (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ) (compound_statement "{\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }" { (expression_statement "*plVar10 = *plVar8;" (assignment_expression "*plVar10 = *plVar8" (pointer_expression "*plVar10" * identifier) = (pointer_expression "*plVar8" * identifier)) ;) (expression_statement "plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "plVar8 = plVar8 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "plVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "plVar8 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;" (assignment_expression "plVar10 = plVar10 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "plVar10 + (ulong)bVar12 * -2 + 1" (binary_expression "plVar10 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*plVar7 = 0;" (assignment_expression "*plVar7 = 0" (pointer_expression "*plVar7" * identifier) = number_literal) ;) (expression_statement "plVar7[5] = plVar7[5] + puVar9[5];" (assignment_expression "plVar7[5] = plVar7[5] + puVar9[5]" (subscript_expression "plVar7[5]" identifier [ number_literal ]) = (binary_expression "plVar7[5] + puVar9[5]" (subscript_expression "plVar7[5]" identifier [ number_literal ]) + (subscript_expression "puVar9[5]" identifier [ number_literal ]))) ;) (expression_statement "*(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;" (assignment_expression "*(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7" (pointer_expression "*(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8)" * (cast_expression "(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8)" ( (binary_expression "*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8" (binary_expression "*(long *)(puVar9[3] + 0x20) + -8" (pointer_expression "*(long *)(puVar9[3] + 0x20)" * (cast_expression "(long *)(puVar9[3] + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9[3] + 0x20)" ( (binary_expression "puVar9[3] + 0x20" (subscript_expression "puVar9[3]" identifier [ number_literal ]) + number_literal) )))) + number_literal) + (binary_expression "(long)*(int *)(puVar9 + 4) * 8" (cast_expression "(long)*(int *)(puVar9 + 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(puVar9 + 4)" * (cast_expression "(int *)(puVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) * number_literal)) )))) = identifier) ;) }))) })) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" identifier = (binary_expression "puVar9 + 0x2b" identifier + number_literal)) ;) (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 < DAT_00119b40)" ( (binary_expression "puVar9 < DAT_00119b40" identifier < identifier) )) ;)) (labeled_statement "joined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );" statement_identifier : (do_statement "do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );" do (compound_statement "{\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  }" { (if_statement "if (plVar8 == (long *)0x0) {\n      return;\n    }" if (parenthesized_expression "(plVar8 == (long *)0x0)" ( (binary_expression "plVar8 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }" if (parenthesized_expression "(((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0))))" ( (binary_expression "((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))" (parenthesized_expression "((int)plVar8[3] != 0)" ( (binary_expression "(int)plVar8[3] != 0" (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ])) != number_literal) )) && (parenthesized_expression "((DAT_001182e0 == 0 || (plVar8[2] != 0)))" ( (parenthesized_expression "(DAT_001182e0 == 0 || (plVar8[2] != 0))" ( (binary_expression "DAT_001182e0 == 0 || (plVar8[2] != 0)" (binary_expression "DAT_001182e0 == 0" identifier == number_literal) || (parenthesized_expression "(plVar8[2] != 0)" ( (binary_expression "plVar8[2] != 0" (subscript_expression "plVar8[2]" identifier [ number_literal ]) != number_literal) ))) )) ))) )) (compound_statement "{\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }" { (expression_statement "DAT_00118968 = 0;" (assignment_expression "DAT_00118968 = 0" identifier = number_literal) ;) (expression_statement "DAT_00118970 = 0;" (assignment_expression "DAT_00118970 = 0" identifier = number_literal) ;) (expression_statement "__stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);" (assignment_expression "__stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8)" identifier = (cast_expression "(FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8)" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8)" identifier (argument_list "(plVar8,0x10,FUN_001030f0,plVar8)" ( identifier , number_literal , identifier , identifier ))))) ;) (expression_statement "uVar3 = DAT_00118270;" (assignment_expression "uVar3 = DAT_00118270" identifier = identifier) ;) (if_statement "if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }" if (parenthesized_expression "(__stream != (FILE *)0x0)" ( (binary_expression "__stream != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }" { (if_statement "if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }" if (parenthesized_expression "((int)DAT_00118270 < 1)" ( (binary_expression "(int)DAT_00118270 < 1" (cast_expression "(int)DAT_00118270" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          plVar10 = (long *)plVar8[4];\n        }" { (expression_statement "plVar10 = (long *)plVar8[4];" (assignment_expression "plVar10 = (long *)plVar8[4]" identifier = (cast_expression "(long *)plVar8[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[4]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }" else (compound_statement "{\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }" { (expression_statement "pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" identifier (argument_list "("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""\n\nTop %d Lines:\n\n     Line      Count\n\n"" " escape_sequence escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,(ulong)uVar3);" (call_expression "fprintf(__stream,pcVar6,(ulong)uVar3)" identifier (argument_list "(__stream,pcVar6,(ulong)uVar3)" ( identifier , identifier , (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);" (call_expression "qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040)" identifier (argument_list "((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040)" ( (cast_expression "(void *)plVar8[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[4]" identifier [ number_literal ])) , (cast_expression "(long)(int)plVar8[3]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ]))) , number_literal , identifier ))) ;) (expression_statement "uVar3 = DAT_00118270;" (assignment_expression "uVar3 = DAT_00118270" identifier = identifier) ;) (if_statement "if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }" if (parenthesized_expression "((int)plVar8[3] <= (int)DAT_00118270)" ( (binary_expression "(int)plVar8[3] <= (int)DAT_00118270" (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ])) <= (cast_expression "(int)DAT_00118270" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar3 = *(uint *)(plVar8 + 3);\n          }" { (expression_statement "uVar3 = *(uint *)(plVar8 + 3);" (assignment_expression "uVar3 = *(uint *)(plVar8 + 3)" identifier = (pointer_expression "*(uint *)(plVar8 + 3)" * (cast_expression "(uint *)(plVar8 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar8 + 3)" ( (binary_expression "plVar8 + 3" identifier + number_literal) ))))) ;) })) (expression_statement "plVar10 = (long *)plVar8[4];" (assignment_expression "plVar10 = (long *)plVar8[4]" identifier = (cast_expression "(long *)plVar8[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[4]" identifier [ number_literal ]))) ;) (if_statement "if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }" if (parenthesized_expression "(((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             )" ( (binary_expression "((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)" (parenthesized_expression "((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0))" ( (binary_expression "(0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)" (parenthesized_expression "(0 < (int)uVar3)" ( (binary_expression "0 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(lVar5 = *plVar10, lVar5 != 0)" ( (comma_expression "lVar5 = *plVar10, lVar5 != 0" (assignment_expression "lVar5 = *plVar10" identifier = (pointer_expression "*plVar10" * identifier)) , (binary_expression "lVar5 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(long *)(lVar5 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar5 + 0x28) != 0" (pointer_expression "*(long *)(lVar5 + 0x28)" * (cast_expression "(long *)(lVar5 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x28)" ( (binary_expression "lVar5 + 0x28" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }" { (expression_statement "lVar11 = 8;" (assignment_expression "lVar11 = 8" identifier = number_literal) ;) (do_statement "do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);" do (compound_statement "{\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            }" { (expression_statement "fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));" (call_expression "fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20))" identifier (argument_list "(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20))" ( identifier , (string_literal ""%9d %10lu\n"" " string_content escape_sequence ") , (binary_expression "(ulong)*(uint *)(lVar5 + 0x20)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) ))) ;) (expression_statement "plVar10 = (long *)plVar8[4];" (assignment_expression "plVar10 = (long *)plVar8[4]" identifier = (cast_expression "(long *)plVar8[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[4]" identifier [ number_literal ]))) ;) (if_statement "if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;" if (parenthesized_expression "((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0))" ( (binary_expression "(lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)" (parenthesized_expression "(lVar11 == (ulong)(uVar3 - 1) * 8 + 8)" ( (binary_expression "lVar11 == (ulong)(uVar3 - 1) * 8 + 8" identifier == (binary_expression "(ulong)(uVar3 - 1) * 8 + 8" (binary_expression "(ulong)(uVar3 - 1) * 8" (call_expression "(ulong)(uVar3 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) ))) * number_literal) + number_literal)) )) || (parenthesized_expression "(lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)" ( (comma_expression "lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0" (assignment_expression "lVar5 = *(long *)((long)plVar10 + lVar11)" identifier = (pointer_expression "*(long *)((long)plVar10 + lVar11)" * (cast_expression "(long *)((long)plVar10 + lVar11)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar10 + lVar11)" ( (binary_expression "(long)plVar10 + lVar11" (cast_expression "(long)plVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + 8;" (assignment_expression "lVar11 = lVar11 + 8" identifier = (binary_expression "lVar11 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(long *)(lVar5 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar5 + 0x28) != 0" (pointer_expression "*(long *)(lVar5 + 0x28)" * (cast_expression "(long *)(lVar5 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x28)" ( (binary_expression "lVar5 + 0x28" identifier + number_literal) )))) != number_literal) )) ;) })) }))) (expression_statement "free(plVar10);" (call_expression "free(plVar10)" identifier (argument_list "(plVar10)" ( identifier ))) ;) (expression_statement "plVar8[4] = 0;" (assignment_expression "plVar8[4] = 0" (subscript_expression "plVar8[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","\nExecution Summary:\n\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","\nExecution Summary:\n\n",5)" identifier (argument_list "("gprof","\nExecution Summary:\n\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""\nExecution Summary:\n\n"" " escape_sequence string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6);" (call_expression "fprintf(__stream,pcVar6)" identifier (argument_list "(__stream,pcVar6)" ( identifier , identifier ))) ;) (expression_statement "lVar5 = DAT_00118970;" (assignment_expression "lVar5 = DAT_00118970" identifier = identifier) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9ld   Executable lines in this file\n",5)" identifier (argument_list "("gprof","%9ld   Executable lines in this file\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9ld   Executable lines in this file\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,lVar5);" (call_expression "fprintf(__stream,pcVar6,lVar5)" identifier (argument_list "(__stream,pcVar6,lVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "lVar5 = DAT_00118968;" (assignment_expression "lVar5 = DAT_00118968" identifier = identifier) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9ld   Lines executed\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9ld   Lines executed\n",5)" identifier (argument_list "("gprof","%9ld   Lines executed\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9ld   Lines executed\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,lVar5);" (call_expression "fprintf(__stream,pcVar6,lVar5)" identifier (argument_list "(__stream,pcVar6,lVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "dVar13 = _DAT_001101e8;" (assignment_expression "dVar13 = _DAT_001101e8" identifier = identifier) ;) (if_statement "if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }" if (parenthesized_expression "(DAT_00118970 != 0)" ( (binary_expression "DAT_00118970 != 0" identifier != number_literal) )) (compound_statement "{\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }" { (expression_statement "dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;" (assignment_expression "dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970" identifier = (binary_expression "((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970" (parenthesized_expression "((double)DAT_00118968 * _DAT_001101e8)" ( (binary_expression "(double)DAT_00118968 * _DAT_001101e8" (cast_expression "(double)DAT_00118968" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_00118970" ( (type_descriptor "double" primitive_type) ) identifier))) ;) })) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" identifier (argument_list "("gprof","%9.2f   Percent of the file executed\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9.2f   Percent of the file executed\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,dVar13);" (call_expression "fprintf(__stream,pcVar6,dVar13)" identifier (argument_list "(__stream,pcVar6,dVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "lVar5 = plVar8[2];" (assignment_expression "lVar5 = plVar8[2]" identifier = (subscript_expression "plVar8[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" identifier (argument_list "("gprof","\n%9lu   Total number of line executions\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""\n%9lu   Total number of line executions\n"" " escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,lVar5);" (call_expression "fprintf(__stream,pcVar6,lVar5)" identifier (argument_list "(__stream,pcVar6,lVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "dVar13 = 0.0;" (assignment_expression "dVar13 = 0.0" identifier = number_literal) ;) (if_statement "if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }" if (parenthesized_expression "(DAT_00118970 != 0)" ( (binary_expression "DAT_00118970 != 0" identifier != number_literal) )) (compound_statement "{\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }" { (expression_statement "dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;" (assignment_expression "dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970" identifier = (binary_expression "(double)(ulong)plVar8[2] / (double)DAT_00118970" (cast_expression "(double)(ulong)plVar8[2]" ( (type_descriptor "double" primitive_type) ) (cast_expression "(ulong)plVar8[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar8[2]" identifier [ number_literal ]))) / (cast_expression "(double)DAT_00118970" ( (type_descriptor "double" primitive_type) ) identifier))) ;) })) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9.2f   Average executions per line\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9.2f   Average executions per line\n",5)" identifier (argument_list "("gprof","%9.2f   Average executions per line\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9.2f   Average executions per line\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,dVar13);" (call_expression "fprintf(__stream,pcVar6,dVar13)" identifier (argument_list "(__stream,pcVar6,dVar13)" ( identifier , identifier , identifier ))) ;) (if_statement "if (stdout != __stream) {\n          fclose(__stream);\n        }" if (parenthesized_expression "(stdout != __stream)" ( (binary_expression "stdout != __stream" identifier != identifier) )) (compound_statement "{\n          fclose(__stream);\n        }" { (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) })) })) })) (expression_statement "plVar8 = (long *)*plVar8;" (assignment_expression "plVar8 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */\n/* WARNING: Unknown calling convention -- yet parameter storage is locked */\n\nvoid print_annotated_source(void)\n\n{\n  int *piVar1;\n  Source_File **ppSVar2;\n  ulong *puVar3;\n  int iVar4;\n  ulong uVar5;\n  source_file **ppsVar6;\n  void **ppvVar7;\n  Sym *pSVar8;\n  FILE *__stream;\n  char *pcVar9;\n  void *pvVar10;\n  long *plVar11;\n  Source_File *pSVar12;\n  Sym *pSVar13;\n  long *plVar14;\n  long *plVar15;\n  long lVar16;\n  byte bVar17;\n  double dVar18;\n  \n  bVar17 = 0;\n  pSVar13 = symtab.base;\n  if (symtab.base < symtab.limit) {\n    do {\n      while (((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))) {\n        pSVar8 = symtab.limit;\n        piVar1 = &pSVar13->line_num;\n        ppSVar2 = &pSVar13->file;\n        pSVar13 = pSVar13 + 1;\n        (*ppSVar2)->num_lines = *piVar1;\n        if (pSVar8 <= pSVar13) goto LAB_00103bb0;\n      }\n      pSVar13 = pSVar13 + 1;\n    } while (pSVar13 < symtab.limit);\nLAB_00103bb0:\n    pSVar12 = first_src_file;\n    if (first_src_file != (Source_File *)0x0) goto LAB_00103bc0;\n    pSVar13 = symtab.base;\n    if (symtab.limit <= symtab.base) {\n      return;\n    }\n  }\n  else {\n    pSVar12 = first_src_file;\n    if (first_src_file == (Source_File *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }\n      ppsVar6 = &pSVar12->next;\n      pSVar12 = *ppsVar6;\n    } while (*ppsVar6 != (source_file *)0x0);\n    pSVar13 = symtab.base;\n    pSVar12 = first_src_file;\n    if (symtab.limit <= symtab.base) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&\n       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       )) {\n      pSVar12 = pSVar13->file;\n      uVar5 = pSVar13->ncalls;\n      iVar4 = pSVar13->line_num;\n      puVar3 = &pSVar12->ncalls;\n      *puVar3 = *puVar3 + uVar5;\n      ppvVar7 = pSVar12->line + (long)iVar4 + -1;\n      plVar14 = (long *)*ppvVar7;\n      if (plVar14 == (long *)0x0) {\n        *ppvVar7 = pSVar13;\n      }\n      else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }\n    }\n    pSVar13 = pSVar13 + 1;\n    pSVar12 = first_src_file;\n  } while (pSVar13 < symtab.limit);\njoined_r0x00103c9a:\n  do {\n    if (pSVar12 == (Source_File *)0x0) {\n      return;\n    }\n    if ((pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0)))) {\n      num_lines_executed = 0;\n      num_executable_lines = 0;\n      __stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);\n      iVar4 = bb_table_length;\n      if (__stream != (FILE *)0x0) {\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    pSVar12 = pSVar12->next;\n  } while( true );\n}\n\n" comment comment (function_definition "void print_annotated_source(void)\n\n{\n  int *piVar1;\n  Source_File **ppSVar2;\n  ulong *puVar3;\n  int iVar4;\n  ulong uVar5;\n  source_file **ppsVar6;\n  void **ppvVar7;\n  Sym *pSVar8;\n  FILE *__stream;\n  char *pcVar9;\n  void *pvVar10;\n  long *plVar11;\n  Source_File *pSVar12;\n  Sym *pSVar13;\n  long *plVar14;\n  long *plVar15;\n  long lVar16;\n  byte bVar17;\n  double dVar18;\n  \n  bVar17 = 0;\n  pSVar13 = symtab.base;\n  if (symtab.base < symtab.limit) {\n    do {\n      while (((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))) {\n        pSVar8 = symtab.limit;\n        piVar1 = &pSVar13->line_num;\n        ppSVar2 = &pSVar13->file;\n        pSVar13 = pSVar13 + 1;\n        (*ppSVar2)->num_lines = *piVar1;\n        if (pSVar8 <= pSVar13) goto LAB_00103bb0;\n      }\n      pSVar13 = pSVar13 + 1;\n    } while (pSVar13 < symtab.limit);\nLAB_00103bb0:\n    pSVar12 = first_src_file;\n    if (first_src_file != (Source_File *)0x0) goto LAB_00103bc0;\n    pSVar13 = symtab.base;\n    if (symtab.limit <= symtab.base) {\n      return;\n    }\n  }\n  else {\n    pSVar12 = first_src_file;\n    if (first_src_file == (Source_File *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }\n      ppsVar6 = &pSVar12->next;\n      pSVar12 = *ppsVar6;\n    } while (*ppsVar6 != (source_file *)0x0);\n    pSVar13 = symtab.base;\n    pSVar12 = first_src_file;\n    if (symtab.limit <= symtab.base) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&\n       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       )) {\n      pSVar12 = pSVar13->file;\n      uVar5 = pSVar13->ncalls;\n      iVar4 = pSVar13->line_num;\n      puVar3 = &pSVar12->ncalls;\n      *puVar3 = *puVar3 + uVar5;\n      ppvVar7 = pSVar12->line + (long)iVar4 + -1;\n      plVar14 = (long *)*ppvVar7;\n      if (plVar14 == (long *)0x0) {\n        *ppvVar7 = pSVar13;\n      }\n      else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }\n    }\n    pSVar13 = pSVar13 + 1;\n    pSVar12 = first_src_file;\n  } while (pSVar13 < symtab.limit);\njoined_r0x00103c9a:\n  do {\n    if (pSVar12 == (Source_File *)0x0) {\n      return;\n    }\n    if ((pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0)))) {\n      num_lines_executed = 0;\n      num_executable_lines = 0;\n      __stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);\n      iVar4 = bb_table_length;\n      if (__stream != (FILE *)0x0) {\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    pSVar12 = pSVar12->next;\n  } while( true );\n}" primitive_type (function_declarator "print_annotated_source(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  int *piVar1;\n  Source_File **ppSVar2;\n  ulong *puVar3;\n  int iVar4;\n  ulong uVar5;\n  source_file **ppsVar6;\n  void **ppvVar7;\n  Sym *pSVar8;\n  FILE *__stream;\n  char *pcVar9;\n  void *pvVar10;\n  long *plVar11;\n  Source_File *pSVar12;\n  Sym *pSVar13;\n  long *plVar14;\n  long *plVar15;\n  long lVar16;\n  byte bVar17;\n  double dVar18;\n  \n  bVar17 = 0;\n  pSVar13 = symtab.base;\n  if (symtab.base < symtab.limit) {\n    do {\n      while (((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))) {\n        pSVar8 = symtab.limit;\n        piVar1 = &pSVar13->line_num;\n        ppSVar2 = &pSVar13->file;\n        pSVar13 = pSVar13 + 1;\n        (*ppSVar2)->num_lines = *piVar1;\n        if (pSVar8 <= pSVar13) goto LAB_00103bb0;\n      }\n      pSVar13 = pSVar13 + 1;\n    } while (pSVar13 < symtab.limit);\nLAB_00103bb0:\n    pSVar12 = first_src_file;\n    if (first_src_file != (Source_File *)0x0) goto LAB_00103bc0;\n    pSVar13 = symtab.base;\n    if (symtab.limit <= symtab.base) {\n      return;\n    }\n  }\n  else {\n    pSVar12 = first_src_file;\n    if (first_src_file == (Source_File *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }\n      ppsVar6 = &pSVar12->next;\n      pSVar12 = *ppsVar6;\n    } while (*ppsVar6 != (source_file *)0x0);\n    pSVar13 = symtab.base;\n    pSVar12 = first_src_file;\n    if (symtab.limit <= symtab.base) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&\n       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       )) {\n      pSVar12 = pSVar13->file;\n      uVar5 = pSVar13->ncalls;\n      iVar4 = pSVar13->line_num;\n      puVar3 = &pSVar12->ncalls;\n      *puVar3 = *puVar3 + uVar5;\n      ppvVar7 = pSVar12->line + (long)iVar4 + -1;\n      plVar14 = (long *)*ppvVar7;\n      if (plVar14 == (long *)0x0) {\n        *ppvVar7 = pSVar13;\n      }\n      else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }\n    }\n    pSVar13 = pSVar13 + 1;\n    pSVar12 = first_src_file;\n  } while (pSVar13 < symtab.limit);\njoined_r0x00103c9a:\n  do {\n    if (pSVar12 == (Source_File *)0x0) {\n      return;\n    }\n    if ((pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0)))) {\n      num_lines_executed = 0;\n      num_executable_lines = 0;\n      __stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);\n      iVar4 = bb_table_length;\n      if (__stream != (FILE *)0x0) {\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    pSVar12 = pSVar12->next;\n  } while( true );\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "Source_File **ppSVar2;" type_identifier (pointer_declarator "**ppSVar2" * (pointer_declarator "*ppSVar2" * identifier)) ;) (declaration "ulong *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "ulong uVar5;" type_identifier identifier ;) (declaration "source_file **ppsVar6;" type_identifier (pointer_declarator "**ppsVar6" * (pointer_declarator "*ppsVar6" * identifier)) ;) (declaration "void **ppvVar7;" primitive_type (pointer_declarator "**ppvVar7" * (pointer_declarator "*ppvVar7" * identifier)) ;) (declaration "Sym *pSVar8;" type_identifier (pointer_declarator "*pSVar8" * identifier) ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "char *pcVar9;" primitive_type (pointer_declarator "*pcVar9" * identifier) ;) (declaration "void *pvVar10;" primitive_type (pointer_declarator "*pvVar10" * identifier) ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "Source_File *pSVar12;" type_identifier (pointer_declarator "*pSVar12" * identifier) ;) (declaration "Sym *pSVar13;" type_identifier (pointer_declarator "*pSVar13" * identifier) ;) (declaration "long *plVar14;" (sized_type_specifier "long" long) (pointer_declarator "*plVar14" * identifier) ;) (declaration "long *plVar15;" (sized_type_specifier "long" long) (pointer_declarator "*plVar15" * identifier) ;) (declaration "long lVar16;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar17;" type_identifier identifier ;) (declaration "double dVar18;" primitive_type identifier ;) (expression_statement "bVar17 = 0;" (assignment_expression "bVar17 = 0" identifier = number_literal) ;) (expression_statement "pSVar13 = symtab.base;" (assignment_expression "pSVar13 = symtab.base" identifier = (field_expression "symtab.base" identifier . field_identifier)) ;) (if_statement "if (symtab.base < symtab.limit) {\n    do {\n      while (((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))) {\n        pSVar8 = symtab.limit;\n        piVar1 = &pSVar13->line_num;\n        ppSVar2 = &pSVar13->file;\n        pSVar13 = pSVar13 + 1;\n        (*ppSVar2)->num_lines = *piVar1;\n        if (pSVar8 <= pSVar13) goto LAB_00103bb0;\n      }\n      pSVar13 = pSVar13 + 1;\n    } while (pSVar13 < symtab.limit);\nLAB_00103bb0:\n    pSVar12 = first_src_file;\n    if (first_src_file != (Source_File *)0x0) goto LAB_00103bc0;\n    pSVar13 = symtab.base;\n    if (symtab.limit <= symtab.base) {\n      return;\n    }\n  }\n  else {\n    pSVar12 = first_src_file;\n    if (first_src_file == (Source_File *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }\n      ppsVar6 = &pSVar12->next;\n      pSVar12 = *ppsVar6;\n    } while (*ppsVar6 != (source_file *)0x0);\n    pSVar13 = symtab.base;\n    pSVar12 = first_src_file;\n    if (symtab.limit <= symtab.base) goto joined_r0x00103c9a;\n  }" if (parenthesized_expression "(symtab.base < symtab.limit)" ( (binary_expression "symtab.base < symtab.limit" (field_expression "symtab.base" identifier . field_identifier) < (field_expression "symtab.limit" identifier . field_identifier)) )) (compound_statement "{\n    do {\n      while (((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))) {\n        pSVar8 = symtab.limit;\n        piVar1 = &pSVar13->line_num;\n        ppSVar2 = &pSVar13->file;\n        pSVar13 = pSVar13 + 1;\n        (*ppSVar2)->num_lines = *piVar1;\n        if (pSVar8 <= pSVar13) goto LAB_00103bb0;\n      }\n      pSVar13 = pSVar13 + 1;\n    } while (pSVar13 < symtab.limit);\nLAB_00103bb0:\n    pSVar12 = first_src_file;\n    if (first_src_file != (Source_File *)0x0) goto LAB_00103bc0;\n    pSVar13 = symtab.base;\n    if (symtab.limit <= symtab.base) {\n      return;\n    }\n  }" { (do_statement "do {\n      while (((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))) {\n        pSVar8 = symtab.limit;\n        piVar1 = &pSVar13->line_num;\n        ppSVar2 = &pSVar13->file;\n        pSVar13 = pSVar13 + 1;\n        (*ppSVar2)->num_lines = *piVar1;\n        if (pSVar8 <= pSVar13) goto LAB_00103bb0;\n      }\n      pSVar13 = pSVar13 + 1;\n    } while (pSVar13 < symtab.limit);" do (compound_statement "{\n      while (((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))) {\n        pSVar8 = symtab.limit;\n        piVar1 = &pSVar13->line_num;\n        ppSVar2 = &pSVar13->file;\n        pSVar13 = pSVar13 + 1;\n        (*ppSVar2)->num_lines = *piVar1;\n        if (pSVar8 <= pSVar13) goto LAB_00103bb0;\n      }\n      pSVar13 = pSVar13 + 1;\n    }" { (while_statement "while (((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))) {\n        pSVar8 = symtab.limit;\n        piVar1 = &pSVar13->line_num;\n        ppSVar2 = &pSVar13->file;\n        pSVar13 = pSVar13 + 1;\n        (*ppSVar2)->num_lines = *piVar1;\n        if (pSVar8 <= pSVar13) goto LAB_00103bb0;\n      }" while (parenthesized_expression "(((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)))))))" ( (parenthesized_expression "((pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))))" ( (binary_expression "(pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              ) && ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)))))" (parenthesized_expression "(pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)\n              )" ( (binary_expression "pSVar13->file != (Source_File *)0x0 && (pSVar13->file->num_lines < pSVar13->line_num)" (binary_expression "pSVar13->file != (Source_File *)0x0" (field_expression "pSVar13->file" identifier -> field_identifier) != (cast_expression "(Source_File *)0x0" ( (type_descriptor "Source_File *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) && (parenthesized_expression "(pSVar13->file->num_lines < pSVar13->line_num)" ( (binary_expression "pSVar13->file->num_lines < pSVar13->line_num" (field_expression "pSVar13->file->num_lines" (field_expression "pSVar13->file" identifier -> field_identifier) -> field_identifier) < (field_expression "pSVar13->line_num" identifier -> field_identifier)) ))) )) && (parenthesized_expression "((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)))))" ( (parenthesized_expression "(pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))" ( (comma_expression "pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)))" (assignment_expression "pSVar8 = sym_lookup(syms + 8,pSVar13->addr)" identifier = (call_expression "sym_lookup(syms + 8,pSVar13->addr)" identifier (argument_list "(syms + 8,pSVar13->addr)" ( (binary_expression "syms + 8" identifier + number_literal) , (field_expression "pSVar13->addr" identifier -> field_identifier) )))) , (binary_expression "pSVar8 != (Sym *)0x0 ||\n                    ((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)))" (binary_expression "pSVar8 != (Sym *)0x0" identifier != (cast_expression "(Sym *)0x0" ( (type_descriptor "Sym *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "((syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)))" ( (parenthesized_expression "(syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))" ( (binary_expression "syms[8].len == 0 &&\n                     (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)" (binary_expression "syms[8].len == 0" (field_expression "syms[8].len" (subscript_expression "syms[8]" identifier [ number_literal ]) . field_identifier) == number_literal) && (parenthesized_expression "(pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)" ( (comma_expression "pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0" (assignment_expression "pSVar8 = sym_lookup(syms + 9,pSVar13->addr)" identifier = (call_expression "sym_lookup(syms + 9,pSVar13->addr)" identifier (argument_list "(syms + 9,pSVar13->addr)" ( (binary_expression "syms + 9" identifier + number_literal) , (field_expression "pSVar13->addr" identifier -> field_identifier) )))) , (binary_expression "pSVar8 == (Sym *)0x0" identifier == (cast_expression "(Sym *)0x0" ( (type_descriptor "Sym *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) )))) )) ))) )) )) (compound_statement "{\n        pSVar8 = symtab.limit;\n        piVar1 = &pSVar13->line_num;\n        ppSVar2 = &pSVar13->file;\n        pSVar13 = pSVar13 + 1;\n        (*ppSVar2)->num_lines = *piVar1;\n        if (pSVar8 <= pSVar13) goto LAB_00103bb0;\n      }" { (expression_statement "pSVar8 = symtab.limit;" (assignment_expression "pSVar8 = symtab.limit" identifier = (field_expression "symtab.limit" identifier . field_identifier)) ;) (expression_statement "piVar1 = &pSVar13->line_num;" (assignment_expression "piVar1 = &pSVar13->line_num" identifier = (pointer_expression "&pSVar13->line_num" & (field_expression "pSVar13->line_num" identifier -> field_identifier))) ;) (expression_statement "ppSVar2 = &pSVar13->file;" (assignment_expression "ppSVar2 = &pSVar13->file" identifier = (pointer_expression "&pSVar13->file" & (field_expression "pSVar13->file" identifier -> field_identifier))) ;) (expression_statement "pSVar13 = pSVar13 + 1;" (assignment_expression "pSVar13 = pSVar13 + 1" identifier = (binary_expression "pSVar13 + 1" identifier + number_literal)) ;) (expression_statement "(*ppSVar2)->num_lines = *piVar1;" (assignment_expression "(*ppSVar2)->num_lines = *piVar1" (field_expression "(*ppSVar2)->num_lines" (parenthesized_expression "(*ppSVar2)" ( (pointer_expression "*ppSVar2" * identifier) )) -> field_identifier) = (pointer_expression "*piVar1" * identifier)) ;) (if_statement "if (pSVar8 <= pSVar13) goto LAB_00103bb0;" if (parenthesized_expression "(pSVar8 <= pSVar13)" ( (binary_expression "pSVar8 <= pSVar13" identifier <= identifier) )) (goto_statement "goto LAB_00103bb0;" goto statement_identifier ;)) })) (expression_statement "pSVar13 = pSVar13 + 1;" (assignment_expression "pSVar13 = pSVar13 + 1" identifier = (binary_expression "pSVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pSVar13 < symtab.limit)" ( (binary_expression "pSVar13 < symtab.limit" identifier < (field_expression "symtab.limit" identifier . field_identifier)) )) ;) (labeled_statement "LAB_00103bb0:\n    pSVar12 = first_src_file;" statement_identifier : (expression_statement "pSVar12 = first_src_file;" (assignment_expression "pSVar12 = first_src_file" identifier = identifier) ;)) (if_statement "if (first_src_file != (Source_File *)0x0) goto LAB_00103bc0;" if (parenthesized_expression "(first_src_file != (Source_File *)0x0)" ( (binary_expression "first_src_file != (Source_File *)0x0" identifier != (cast_expression "(Source_File *)0x0" ( (type_descriptor "Source_File *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00103bc0;" goto statement_identifier ;)) (expression_statement "pSVar13 = symtab.base;" (assignment_expression "pSVar13 = symtab.base" identifier = (field_expression "symtab.base" identifier . field_identifier)) ;) (if_statement "if (symtab.limit <= symtab.base) {\n      return;\n    }" if (parenthesized_expression "(symtab.limit <= symtab.base)" ( (binary_expression "symtab.limit <= symtab.base" (field_expression "symtab.limit" identifier . field_identifier) <= (field_expression "symtab.base" identifier . field_identifier)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n    pSVar12 = first_src_file;\n    if (first_src_file == (Source_File *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }\n      ppsVar6 = &pSVar12->next;\n      pSVar12 = *ppsVar6;\n    } while (*ppsVar6 != (source_file *)0x0);\n    pSVar13 = symtab.base;\n    pSVar12 = first_src_file;\n    if (symtab.limit <= symtab.base) goto joined_r0x00103c9a;\n  }" else (compound_statement "{\n    pSVar12 = first_src_file;\n    if (first_src_file == (Source_File *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }\n      ppsVar6 = &pSVar12->next;\n      pSVar12 = *ppsVar6;\n    } while (*ppsVar6 != (source_file *)0x0);\n    pSVar13 = symtab.base;\n    pSVar12 = first_src_file;\n    if (symtab.limit <= symtab.base) goto joined_r0x00103c9a;\n  }" { (expression_statement "pSVar12 = first_src_file;" (assignment_expression "pSVar12 = first_src_file" identifier = identifier) ;) (if_statement "if (first_src_file == (Source_File *)0x0) {\n      return;\n    }" if (parenthesized_expression "(first_src_file == (Source_File *)0x0)" ( (binary_expression "first_src_file == (Source_File *)0x0" identifier == (cast_expression "(Source_File *)0x0" ( (type_descriptor "Source_File *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00103bc0:\n    do {\n      if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }\n      ppsVar6 = &pSVar12->next;\n      pSVar12 = *ppsVar6;\n    } while (*ppsVar6 != (source_file *)0x0);" statement_identifier : (do_statement "do {\n      if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }\n      ppsVar6 = &pSVar12->next;\n      pSVar12 = *ppsVar6;\n    } while (*ppsVar6 != (source_file *)0x0);" do (compound_statement "{\n      if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }\n      ppsVar6 = &pSVar12->next;\n      pSVar12 = *ppsVar6;\n    }" { (if_statement "if (0 < pSVar12->num_lines) {\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }" if (parenthesized_expression "(0 < pSVar12->num_lines)" ( (binary_expression "0 < pSVar12->num_lines" number_literal < (field_expression "pSVar12->num_lines" identifier -> field_identifier)) )) (compound_statement "{\n        ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);\n        pSVar12->line = ppvVar7;\n        memset(ppvVar7,0,(long)pSVar12->num_lines << 3);\n      }" { (expression_statement "ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3);" (assignment_expression "ppvVar7 = (void **)xmalloc((long)pSVar12->num_lines << 3)" identifier = (cast_expression "(void **)xmalloc((long)pSVar12->num_lines << 3)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (call_expression "xmalloc((long)pSVar12->num_lines << 3)" identifier (argument_list "((long)pSVar12->num_lines << 3)" ( (binary_expression "(long)pSVar12->num_lines << 3" (cast_expression "(long)pSVar12->num_lines" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pSVar12->num_lines" identifier -> field_identifier)) << number_literal) ))))) ;) (expression_statement "pSVar12->line = ppvVar7;" (assignment_expression "pSVar12->line = ppvVar7" (field_expression "pSVar12->line" identifier -> field_identifier) = identifier) ;) (expression_statement "memset(ppvVar7,0,(long)pSVar12->num_lines << 3);" (call_expression "memset(ppvVar7,0,(long)pSVar12->num_lines << 3)" identifier (argument_list "(ppvVar7,0,(long)pSVar12->num_lines << 3)" ( identifier , number_literal , (binary_expression "(long)pSVar12->num_lines << 3" (cast_expression "(long)pSVar12->num_lines" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pSVar12->num_lines" identifier -> field_identifier)) << number_literal) ))) ;) })) (expression_statement "ppsVar6 = &pSVar12->next;" (assignment_expression "ppsVar6 = &pSVar12->next" identifier = (pointer_expression "&pSVar12->next" & (field_expression "pSVar12->next" identifier -> field_identifier))) ;) (expression_statement "pSVar12 = *ppsVar6;" (assignment_expression "pSVar12 = *ppsVar6" identifier = (pointer_expression "*ppsVar6" * identifier)) ;) }) while (parenthesized_expression "(*ppsVar6 != (source_file *)0x0)" ( (binary_expression "*ppsVar6 != (source_file *)0x0" (pointer_expression "*ppsVar6" * identifier) != (cast_expression "(source_file *)0x0" ( (type_descriptor "source_file *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (expression_statement "pSVar13 = symtab.base;" (assignment_expression "pSVar13 = symtab.base" identifier = (field_expression "symtab.base" identifier . field_identifier)) ;) (expression_statement "pSVar12 = first_src_file;" (assignment_expression "pSVar12 = first_src_file" identifier = identifier) ;) (if_statement "if (symtab.limit <= symtab.base) goto joined_r0x00103c9a;" if (parenthesized_expression "(symtab.limit <= symtab.base)" ( (binary_expression "symtab.limit <= symtab.base" (field_expression "symtab.limit" identifier . field_identifier) <= (field_expression "symtab.base" identifier . field_identifier)) )) (goto_statement "goto joined_r0x00103c9a;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00103c20:\n  do {\n    if (((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&\n       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       )) {\n      pSVar12 = pSVar13->file;\n      uVar5 = pSVar13->ncalls;\n      iVar4 = pSVar13->line_num;\n      puVar3 = &pSVar12->ncalls;\n      *puVar3 = *puVar3 + uVar5;\n      ppvVar7 = pSVar12->line + (long)iVar4 + -1;\n      plVar14 = (long *)*ppvVar7;\n      if (plVar14 == (long *)0x0) {\n        *ppvVar7 = pSVar13;\n      }\n      else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }\n    }\n    pSVar13 = pSVar13 + 1;\n    pSVar12 = first_src_file;\n  } while (pSVar13 < symtab.limit);" statement_identifier : (do_statement "do {\n    if (((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&\n       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       )) {\n      pSVar12 = pSVar13->file;\n      uVar5 = pSVar13->ncalls;\n      iVar4 = pSVar13->line_num;\n      puVar3 = &pSVar12->ncalls;\n      *puVar3 = *puVar3 + uVar5;\n      ppvVar7 = pSVar12->line + (long)iVar4 + -1;\n      plVar14 = (long *)*ppvVar7;\n      if (plVar14 == (long *)0x0) {\n        *ppvVar7 = pSVar13;\n      }\n      else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }\n    }\n    pSVar13 = pSVar13 + 1;\n    pSVar12 = first_src_file;\n  } while (pSVar13 < symtab.limit);" do (compound_statement "{\n    if (((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&\n       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       )) {\n      pSVar12 = pSVar13->file;\n      uVar5 = pSVar13->ncalls;\n      iVar4 = pSVar13->line_num;\n      puVar3 = &pSVar12->ncalls;\n      *puVar3 = *puVar3 + uVar5;\n      ppvVar7 = pSVar12->line + (long)iVar4 + -1;\n      plVar14 = (long *)*ppvVar7;\n      if (plVar14 == (long *)0x0) {\n        *ppvVar7 = pSVar13;\n      }\n      else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }\n    }\n    pSVar13 = pSVar13 + 1;\n    pSVar12 = first_src_file;\n  }" { (if_statement "if (((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&\n       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       )) {\n      pSVar12 = pSVar13->file;\n      uVar5 = pSVar13->ncalls;\n      iVar4 = pSVar13->line_num;\n      puVar3 = &pSVar12->ncalls;\n      *puVar3 = *puVar3 + uVar5;\n      ppvVar7 = pSVar12->line + (long)iVar4 + -1;\n      plVar14 = (long *)*ppvVar7;\n      if (plVar14 == (long *)0x0) {\n        *ppvVar7 = pSVar13;\n      }\n      else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }\n    }" if (parenthesized_expression "(((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&\n       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       ))" ( (binary_expression "((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)) &&\n       ((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       )" (parenthesized_expression "((pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0))" ( (binary_expression "(pSVar13->file != (Source_File *)0x0) && (pSVar13->file->num_lines != 0)" (parenthesized_expression "(pSVar13->file != (Source_File *)0x0)" ( (binary_expression "pSVar13->file != (Source_File *)0x0" (field_expression "pSVar13->file" identifier -> field_identifier) != (cast_expression "(Source_File *)0x0" ( (type_descriptor "Source_File *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pSVar13->file->num_lines != 0)" ( (binary_expression "pSVar13->file->num_lines != 0" (field_expression "pSVar13->file->num_lines" (field_expression "pSVar13->file" identifier -> field_identifier) -> field_identifier) != number_literal) ))) )) && (parenthesized_expression "((pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))\n       )" ( (parenthesized_expression "(pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))))" ( (comma_expression "pSVar8 = sym_lookup(syms + 8,pSVar13->addr), pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)))" (assignment_expression "pSVar8 = sym_lookup(syms + 8,pSVar13->addr)" identifier = (call_expression "sym_lookup(syms + 8,pSVar13->addr)" identifier (argument_list "(syms + 8,pSVar13->addr)" ( (binary_expression "syms + 8" identifier + number_literal) , (field_expression "pSVar13->addr" identifier -> field_identifier) )))) , (binary_expression "pSVar8 != (Sym *)0x0 ||\n        ((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)))" (binary_expression "pSVar8 != (Sym *)0x0" identifier != (cast_expression "(Sym *)0x0" ( (type_descriptor "Sym *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (parenthesized_expression "((syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)))" ( (parenthesized_expression "(syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0))" ( (binary_expression "syms[8].len == 0 && (pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)" (binary_expression "syms[8].len == 0" (field_expression "syms[8].len" (subscript_expression "syms[8]" identifier [ number_literal ]) . field_identifier) == number_literal) && (parenthesized_expression "(pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0)" ( (comma_expression "pSVar8 = sym_lookup(syms + 9,pSVar13->addr), pSVar8 == (Sym *)0x0" (assignment_expression "pSVar8 = sym_lookup(syms + 9,pSVar13->addr)" identifier = (call_expression "sym_lookup(syms + 9,pSVar13->addr)" identifier (argument_list "(syms + 9,pSVar13->addr)" ( (binary_expression "syms + 9" identifier + number_literal) , (field_expression "pSVar13->addr" identifier -> field_identifier) )))) , (binary_expression "pSVar8 == (Sym *)0x0" identifier == (cast_expression "(Sym *)0x0" ( (type_descriptor "Sym *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) )))) )) ))) )) (compound_statement "{\n      pSVar12 = pSVar13->file;\n      uVar5 = pSVar13->ncalls;\n      iVar4 = pSVar13->line_num;\n      puVar3 = &pSVar12->ncalls;\n      *puVar3 = *puVar3 + uVar5;\n      ppvVar7 = pSVar12->line + (long)iVar4 + -1;\n      plVar14 = (long *)*ppvVar7;\n      if (plVar14 == (long *)0x0) {\n        *ppvVar7 = pSVar13;\n      }\n      else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }\n    }" { (expression_statement "pSVar12 = pSVar13->file;" (assignment_expression "pSVar12 = pSVar13->file" identifier = (field_expression "pSVar13->file" identifier -> field_identifier)) ;) (expression_statement "uVar5 = pSVar13->ncalls;" (assignment_expression "uVar5 = pSVar13->ncalls" identifier = (field_expression "pSVar13->ncalls" identifier -> field_identifier)) ;) (expression_statement "iVar4 = pSVar13->line_num;" (assignment_expression "iVar4 = pSVar13->line_num" identifier = (field_expression "pSVar13->line_num" identifier -> field_identifier)) ;) (expression_statement "puVar3 = &pSVar12->ncalls;" (assignment_expression "puVar3 = &pSVar12->ncalls" identifier = (pointer_expression "&pSVar12->ncalls" & (field_expression "pSVar12->ncalls" identifier -> field_identifier))) ;) (expression_statement "*puVar3 = *puVar3 + uVar5;" (assignment_expression "*puVar3 = *puVar3 + uVar5" (pointer_expression "*puVar3" * identifier) = (binary_expression "*puVar3 + uVar5" (pointer_expression "*puVar3" * identifier) + identifier)) ;) (expression_statement "ppvVar7 = pSVar12->line + (long)iVar4 + -1;" (assignment_expression "ppvVar7 = pSVar12->line + (long)iVar4 + -1" identifier = (binary_expression "pSVar12->line + (long)iVar4 + -1" (binary_expression "pSVar12->line + (long)iVar4" (field_expression "pSVar12->line" identifier -> field_identifier) + (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) + number_literal)) ;) (expression_statement "plVar14 = (long *)*ppvVar7;" (assignment_expression "plVar14 = (long *)*ppvVar7" identifier = (cast_expression "(long *)*ppvVar7" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppvVar7" * identifier))) ;) (if_statement "if (plVar14 == (long *)0x0) {\n        *ppvVar7 = pSVar13;\n      }\n      else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }" if (parenthesized_expression "(plVar14 == (long *)0x0)" ( (binary_expression "plVar14 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *ppvVar7 = pSVar13;\n      }" { (expression_statement "*ppvVar7 = pSVar13;" (assignment_expression "*ppvVar7 = pSVar13" (pointer_expression "*ppvVar7" * identifier) = identifier) ;) }) (else_clause "else {\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }" else (compound_statement "{\n        if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }\n        plVar11 = (long *)xmalloc(0x158);\n        plVar15 = plVar11;\n        for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }\n        *plVar11 = 0;\n        plVar11[5] = plVar11[5] + pSVar13->ncalls;\n        pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;\n      }" { (if_statement "if (*plVar14 == 0) {\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }" if (parenthesized_expression "(*plVar14 == 0)" ( (binary_expression "*plVar14 == 0" (pointer_expression "*plVar14" * identifier) == number_literal) )) (compound_statement "{\n          plVar14[5] = plVar14[5] + uVar5;\n          pSVar13 = pSVar13 + 1;\n          pSVar12 = first_src_file;\n          if (symtab.limit <= pSVar13) break;\n          goto LAB_00103c20;\n        }" { (expression_statement "plVar14[5] = plVar14[5] + uVar5;" (assignment_expression "plVar14[5] = plVar14[5] + uVar5" (subscript_expression "plVar14[5]" identifier [ number_literal ]) = (binary_expression "plVar14[5] + uVar5" (subscript_expression "plVar14[5]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "pSVar13 = pSVar13 + 1;" (assignment_expression "pSVar13 = pSVar13 + 1" identifier = (binary_expression "pSVar13 + 1" identifier + number_literal)) ;) (expression_statement "pSVar12 = first_src_file;" (assignment_expression "pSVar12 = first_src_file" identifier = identifier) ;) (if_statement "if (symtab.limit <= pSVar13) break;" if (parenthesized_expression "(symtab.limit <= pSVar13)" ( (binary_expression "symtab.limit <= pSVar13" (field_expression "symtab.limit" identifier . field_identifier) <= identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00103c20;" goto statement_identifier ;) })) (expression_statement "plVar11 = (long *)xmalloc(0x158);" (assignment_expression "plVar11 = (long *)xmalloc(0x158)" identifier = (cast_expression "(long *)xmalloc(0x158)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x158)" identifier (argument_list "(0x158)" ( number_literal ))))) ;) (expression_statement "plVar15 = plVar11;" (assignment_expression "plVar15 = plVar11" identifier = identifier) ;) (for_statement "for (lVar16 = 0x2b; lVar16 != 0; lVar16 = lVar16 + -1) {\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }" for ( (assignment_expression "lVar16 = 0x2b" identifier = number_literal) ; (binary_expression "lVar16 != 0" identifier != number_literal) ; (assignment_expression "lVar16 = lVar16 + -1" identifier = (binary_expression "lVar16 + -1" identifier + number_literal)) ) (compound_statement "{\n          *plVar15 = *plVar14;\n          plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;\n          plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;\n        }" { (expression_statement "*plVar15 = *plVar14;" (assignment_expression "*plVar15 = *plVar14" (pointer_expression "*plVar15" * identifier) = (pointer_expression "*plVar14" * identifier)) ;) (expression_statement "plVar14 = plVar14 + (ulong)bVar17 * -2 + 1;" (assignment_expression "plVar14 = plVar14 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "plVar14 + (ulong)bVar17 * -2 + 1" (binary_expression "plVar14 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "plVar15 = plVar15 + (ulong)bVar17 * -2 + 1;" (assignment_expression "plVar15 = plVar15 + (ulong)bVar17 * -2 + 1" identifier = (binary_expression "plVar15 + (ulong)bVar17 * -2 + 1" (binary_expression "plVar15 + (ulong)bVar17 * -2" identifier + (binary_expression "(ulong)bVar17 * -2" (cast_expression "(ulong)bVar17" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*plVar11 = 0;" (assignment_expression "*plVar11 = 0" (pointer_expression "*plVar11" * identifier) = number_literal) ;) (expression_statement "plVar11[5] = plVar11[5] + pSVar13->ncalls;" (assignment_expression "plVar11[5] = plVar11[5] + pSVar13->ncalls" (subscript_expression "plVar11[5]" identifier [ number_literal ]) = (binary_expression "plVar11[5] + pSVar13->ncalls" (subscript_expression "plVar11[5]" identifier [ number_literal ]) + (field_expression "pSVar13->ncalls" identifier -> field_identifier))) ;) (expression_statement "pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11;" (assignment_expression "pSVar13->file->line[(long)pSVar13->line_num + -1] = plVar11" (subscript_expression "pSVar13->file->line[(long)pSVar13->line_num + -1]" (field_expression "pSVar13->file->line" (field_expression "pSVar13->file" identifier -> field_identifier) -> field_identifier) [ (binary_expression "(long)pSVar13->line_num + -1" (cast_expression "(long)pSVar13->line_num" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pSVar13->line_num" identifier -> field_identifier)) + number_literal) ]) = identifier) ;) }))) })) (expression_statement "pSVar13 = pSVar13 + 1;" (assignment_expression "pSVar13 = pSVar13 + 1" identifier = (binary_expression "pSVar13 + 1" identifier + number_literal)) ;) (expression_statement "pSVar12 = first_src_file;" (assignment_expression "pSVar12 = first_src_file" identifier = identifier) ;) }) while (parenthesized_expression "(pSVar13 < symtab.limit)" ( (binary_expression "pSVar13 < symtab.limit" identifier < (field_expression "symtab.limit" identifier . field_identifier)) )) ;)) (labeled_statement "joined_r0x00103c9a:\n  do {\n    if (pSVar12 == (Source_File *)0x0) {\n      return;\n    }\n    if ((pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0)))) {\n      num_lines_executed = 0;\n      num_executable_lines = 0;\n      __stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);\n      iVar4 = bb_table_length;\n      if (__stream != (FILE *)0x0) {\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    pSVar12 = pSVar12->next;\n  } while( true );" statement_identifier : (do_statement "do {\n    if (pSVar12 == (Source_File *)0x0) {\n      return;\n    }\n    if ((pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0)))) {\n      num_lines_executed = 0;\n      num_executable_lines = 0;\n      __stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);\n      iVar4 = bb_table_length;\n      if (__stream != (FILE *)0x0) {\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    pSVar12 = pSVar12->next;\n  } while( true );" do (compound_statement "{\n    if (pSVar12 == (Source_File *)0x0) {\n      return;\n    }\n    if ((pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0)))) {\n      num_lines_executed = 0;\n      num_executable_lines = 0;\n      __stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);\n      iVar4 = bb_table_length;\n      if (__stream != (FILE *)0x0) {\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    pSVar12 = pSVar12->next;\n  }" { (if_statement "if (pSVar12 == (Source_File *)0x0) {\n      return;\n    }" if (parenthesized_expression "(pSVar12 == (Source_File *)0x0)" ( (binary_expression "pSVar12 == (Source_File *)0x0" identifier == (cast_expression "(Source_File *)0x0" ( (type_descriptor "Source_File *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if ((pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0)))) {\n      num_lines_executed = 0;\n      num_executable_lines = 0;\n      __stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);\n      iVar4 = bb_table_length;\n      if (__stream != (FILE *)0x0) {\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }" if (parenthesized_expression "((pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0))))" ( (binary_expression "(pSVar12->num_lines != 0) && ((ignore_zeros == 0 || (pSVar12->ncalls != 0)))" (parenthesized_expression "(pSVar12->num_lines != 0)" ( (binary_expression "pSVar12->num_lines != 0" (field_expression "pSVar12->num_lines" identifier -> field_identifier) != number_literal) )) && (parenthesized_expression "((ignore_zeros == 0 || (pSVar12->ncalls != 0)))" ( (parenthesized_expression "(ignore_zeros == 0 || (pSVar12->ncalls != 0))" ( (binary_expression "ignore_zeros == 0 || (pSVar12->ncalls != 0)" (binary_expression "ignore_zeros == 0" identifier == number_literal) || (parenthesized_expression "(pSVar12->ncalls != 0)" ( (binary_expression "pSVar12->ncalls != 0" (field_expression "pSVar12->ncalls" identifier -> field_identifier) != number_literal) ))) )) ))) )) (compound_statement "{\n      num_lines_executed = 0;\n      num_executable_lines = 0;\n      __stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);\n      iVar4 = bb_table_length;\n      if (__stream != (FILE *)0x0) {\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }" { (expression_statement "num_lines_executed = 0;" (assignment_expression "num_lines_executed = 0" identifier = number_literal) ;) (expression_statement "num_executable_lines = 0;" (assignment_expression "num_executable_lines = 0" identifier = number_literal) ;) (expression_statement "__stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12);" (assignment_expression "__stream = (FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12)" identifier = (cast_expression "(FILE *)annotate_source(pSVar12,0x10,annotate_with_count,pSVar12)" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "annotate_source(pSVar12,0x10,annotate_with_count,pSVar12)" identifier (argument_list "(pSVar12,0x10,annotate_with_count,pSVar12)" ( identifier , number_literal , identifier , identifier ))))) ;) (expression_statement "iVar4 = bb_table_length;" (assignment_expression "iVar4 = bb_table_length" identifier = identifier) ;) (if_statement "if (__stream != (FILE *)0x0) {\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }" if (parenthesized_expression "(__stream != (FILE *)0x0)" ( (binary_expression "__stream != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }\n        free(ppvVar7);\n        pSVar12->line = (void **)0x0;\n        pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar9);\n        lVar16 = num_executable_lines;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        lVar16 = num_lines_executed;\n        pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar9,lVar16);\n        dVar18 = _DAT_001101e8;\n        if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        uVar5 = pSVar12->ncalls;\n        pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar9,uVar5);\n        dVar18 = 0.0;\n        if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }\n        pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar9,dVar18);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }" { (if_statement "if (bb_table_length < 1) {\n          ppvVar7 = pSVar12->line;\n        }\n        else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }" if (parenthesized_expression "(bb_table_length < 1)" ( (binary_expression "bb_table_length < 1" identifier < number_literal) )) (compound_statement "{\n          ppvVar7 = pSVar12->line;\n        }" { (expression_statement "ppvVar7 = pSVar12->line;" (assignment_expression "ppvVar7 = pSVar12->line" identifier = (field_expression "pSVar12->line" identifier -> field_identifier)) ;) }) (else_clause "else {\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }" else (compound_statement "{\n          pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar9,(ulong)(uint)iVar4);\n          qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);\n          iVar4 = bb_table_length;\n          if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }\n          ppvVar7 = pSVar12->line;\n          if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }\n        }" { (expression_statement "pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);" (assignment_expression "pcVar9 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" identifier (argument_list "("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""\n\nTop %d Lines:\n\n     Line      Count\n\n"" " escape_sequence escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar9,(ulong)(uint)iVar4);" (call_expression "fprintf(__stream,pcVar9,(ulong)(uint)iVar4)" identifier (argument_list "(__stream,pcVar9,(ulong)(uint)iVar4)" ( identifier , identifier , (cast_expression "(ulong)(uint)iVar4" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(uint)iVar4" ( (type_descriptor "uint" type_identifier) ) identifier)) ))) ;) (expression_statement "qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls);" (call_expression "qsort(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls)" identifier (argument_list "(pSVar12->line,(long)pSVar12->num_lines,8,cmp_ncalls)" ( (field_expression "pSVar12->line" identifier -> field_identifier) , (cast_expression "(long)pSVar12->num_lines" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pSVar12->num_lines" identifier -> field_identifier)) , number_literal , identifier ))) ;) (expression_statement "iVar4 = bb_table_length;" (assignment_expression "iVar4 = bb_table_length" identifier = identifier) ;) (if_statement "if (pSVar12->num_lines <= bb_table_length) {\n            iVar4 = pSVar12->num_lines;\n          }" if (parenthesized_expression "(pSVar12->num_lines <= bb_table_length)" ( (binary_expression "pSVar12->num_lines <= bb_table_length" (field_expression "pSVar12->num_lines" identifier -> field_identifier) <= identifier) )) (compound_statement "{\n            iVar4 = pSVar12->num_lines;\n          }" { (expression_statement "iVar4 = pSVar12->num_lines;" (assignment_expression "iVar4 = pSVar12->num_lines" identifier = (field_expression "pSVar12->num_lines" identifier -> field_identifier)) ;) })) (expression_statement "ppvVar7 = pSVar12->line;" (assignment_expression "ppvVar7 = pSVar12->line" identifier = (field_expression "pSVar12->line" identifier -> field_identifier)) ;) (if_statement "if (((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)) {\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }" if (parenthesized_expression "(((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0))" ( (binary_expression "((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)) &&\n             (*(long *)((long)pvVar10 + 0x28) != 0)" (parenthesized_expression "((0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0))" ( (binary_expression "(0 < iVar4) && (pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)" (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) && (parenthesized_expression "(pvVar10 = *ppvVar7, pvVar10 != (void *)0x0)" ( (comma_expression "pvVar10 = *ppvVar7, pvVar10 != (void *)0x0" (assignment_expression "pvVar10 = *ppvVar7" identifier = (pointer_expression "*ppvVar7" * identifier)) , (binary_expression "pvVar10 != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) && (parenthesized_expression "(*(long *)((long)pvVar10 + 0x28) != 0)" ( (binary_expression "*(long *)((long)pvVar10 + 0x28) != 0" (pointer_expression "*(long *)((long)pvVar10 + 0x28)" * (cast_expression "(long *)((long)pvVar10 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar10 + 0x28)" ( (binary_expression "(long)pvVar10 + 0x28" (cast_expression "(long)pvVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            lVar16 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);\n          }" { (expression_statement "lVar16 = 8;" (assignment_expression "lVar16 = 8" identifier = number_literal) ;) (do_statement "do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            } while (*(long *)((long)pvVar10 + 0x28) != 0);" do (compound_statement "{\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));\n              ppvVar7 = pSVar12->line;\n              if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;\n              lVar16 = lVar16 + 8;\n            }" { (expression_statement "fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20));" (call_expression "fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20))" identifier (argument_list "(__stream,"%9d %10lu\n",(ulong)*(uint *)((long)pvVar10 + 0x20))" ( identifier , (string_literal ""%9d %10lu\n"" " string_content escape_sequence ") , (binary_expression "(ulong)*(uint *)((long)pvVar10 + 0x20)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)((long)pvVar10 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar10 + 0x20)" ( (binary_expression "(long)pvVar10 + 0x20" (cast_expression "(long)pvVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ))) ;) (expression_statement "ppvVar7 = pSVar12->line;" (assignment_expression "ppvVar7 = pSVar12->line" identifier = (field_expression "pSVar12->line" identifier -> field_identifier)) ;) (if_statement "if ((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)) break;" if (parenthesized_expression "((lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0))" ( (binary_expression "(lVar16 == (ulong)(iVar4 - 1) * 8 + 8) ||\n                 (pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)" (parenthesized_expression "(lVar16 == (ulong)(iVar4 - 1) * 8 + 8)" ( (binary_expression "lVar16 == (ulong)(iVar4 - 1) * 8 + 8" identifier == (binary_expression "(ulong)(iVar4 - 1) * 8 + 8" (binary_expression "(ulong)(iVar4 - 1) * 8" (call_expression "(ulong)(iVar4 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar4 - 1)" ( (binary_expression "iVar4 - 1" identifier - number_literal) ))) * number_literal) + number_literal)) )) || (parenthesized_expression "(pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0)" ( (comma_expression "pvVar10 = *(void **)((long)ppvVar7 + lVar16), pvVar10 == (void *)0x0" (assignment_expression "pvVar10 = *(void **)((long)ppvVar7 + lVar16)" identifier = (pointer_expression "*(void **)((long)ppvVar7 + lVar16)" * (cast_expression "(void **)((long)ppvVar7 + lVar16)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppvVar7 + lVar16)" ( (binary_expression "(long)ppvVar7 + lVar16" (cast_expression "(long)ppvVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) , (binary_expression "pvVar10 == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (break_statement "break;" break ;)) (expression_statement "lVar16 = lVar16 + 8;" (assignment_expression "lVar16 = lVar16 + 8" identifier = (binary_expression "lVar16 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(long *)((long)pvVar10 + 0x28) != 0)" ( (binary_expression "*(long *)((long)pvVar10 + 0x28) != 0" (pointer_expression "*(long *)((long)pvVar10 + 0x28)" * (cast_expression "(long *)((long)pvVar10 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pvVar10 + 0x28)" ( (binary_expression "(long)pvVar10 + 0x28" (cast_expression "(long)pvVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) != number_literal) )) ;) })) }))) (expression_statement "free(ppvVar7);" (call_expression "free(ppvVar7)" identifier (argument_list "(ppvVar7)" ( identifier ))) ;) (expression_statement "pSVar12->line = (void **)0x0;" (assignment_expression "pSVar12->line = (void **)0x0" (field_expression "pSVar12->line" identifier -> field_identifier) = (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);" (assignment_expression "pcVar9 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","\nExecution Summary:\n\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","\nExecution Summary:\n\n",5)" identifier (argument_list "("gprof","\nExecution Summary:\n\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""\nExecution Summary:\n\n"" " escape_sequence string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar9);" (call_expression "fprintf(__stream,pcVar9)" identifier (argument_list "(__stream,pcVar9)" ( identifier , identifier ))) ;) (expression_statement "lVar16 = num_executable_lines;" (assignment_expression "lVar16 = num_executable_lines" identifier = identifier) ;) (expression_statement "pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);" (assignment_expression "pcVar9 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9ld   Executable lines in this file\n",5)" identifier (argument_list "("gprof","%9ld   Executable lines in this file\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9ld   Executable lines in this file\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar9,lVar16);" (call_expression "fprintf(__stream,pcVar9,lVar16)" identifier (argument_list "(__stream,pcVar9,lVar16)" ( identifier , identifier , identifier ))) ;) (expression_statement "lVar16 = num_lines_executed;" (assignment_expression "lVar16 = num_lines_executed" identifier = identifier) ;) (expression_statement "pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);" (assignment_expression "pcVar9 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9ld   Lines executed\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9ld   Lines executed\n",5)" identifier (argument_list "("gprof","%9ld   Lines executed\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9ld   Lines executed\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar9,lVar16);" (call_expression "fprintf(__stream,pcVar9,lVar16)" identifier (argument_list "(__stream,pcVar9,lVar16)" ( identifier , identifier , identifier ))) ;) (expression_statement "dVar18 = _DAT_001101e8;" (assignment_expression "dVar18 = _DAT_001101e8" identifier = identifier) ;) (if_statement "if (num_executable_lines != 0) {\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }" if (parenthesized_expression "(num_executable_lines != 0)" ( (binary_expression "num_executable_lines != 0" identifier != number_literal) )) (compound_statement "{\n          dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;\n        }" { (expression_statement "dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines;" (assignment_expression "dVar18 = ((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines" identifier = (binary_expression "((double)num_lines_executed * _DAT_001101e8) / (double)num_executable_lines" (parenthesized_expression "((double)num_lines_executed * _DAT_001101e8)" ( (binary_expression "(double)num_lines_executed * _DAT_001101e8" (cast_expression "(double)num_lines_executed" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)num_executable_lines" ( (type_descriptor "double" primitive_type) ) identifier))) ;) })) (expression_statement "pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);" (assignment_expression "pcVar9 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" identifier (argument_list "("gprof","%9.2f   Percent of the file executed\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9.2f   Percent of the file executed\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar9,dVar18);" (call_expression "fprintf(__stream,pcVar9,dVar18)" identifier (argument_list "(__stream,pcVar9,dVar18)" ( identifier , identifier , identifier ))) ;) (expression_statement "uVar5 = pSVar12->ncalls;" (assignment_expression "uVar5 = pSVar12->ncalls" identifier = (field_expression "pSVar12->ncalls" identifier -> field_identifier)) ;) (expression_statement "pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);" (assignment_expression "pcVar9 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" identifier (argument_list "("gprof","\n%9lu   Total number of line executions\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""\n%9lu   Total number of line executions\n"" " escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar9,uVar5);" (call_expression "fprintf(__stream,pcVar9,uVar5)" identifier (argument_list "(__stream,pcVar9,uVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "dVar18 = 0.0;" (assignment_expression "dVar18 = 0.0" identifier = number_literal) ;) (if_statement "if (num_executable_lines != 0) {\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }" if (parenthesized_expression "(num_executable_lines != 0)" ( (binary_expression "num_executable_lines != 0" identifier != number_literal) )) (compound_statement "{\n          dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;\n        }" { (expression_statement "dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines;" (assignment_expression "dVar18 = (double)pSVar12->ncalls / (double)num_executable_lines" identifier = (binary_expression "(double)pSVar12->ncalls / (double)num_executable_lines" (cast_expression "(double)pSVar12->ncalls" ( (type_descriptor "double" primitive_type) ) (field_expression "pSVar12->ncalls" identifier -> field_identifier)) / (cast_expression "(double)num_executable_lines" ( (type_descriptor "double" primitive_type) ) identifier))) ;) })) (expression_statement "pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);" (assignment_expression "pcVar9 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9.2f   Average executions per line\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9.2f   Average executions per line\n",5)" identifier (argument_list "("gprof","%9.2f   Average executions per line\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9.2f   Average executions per line\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar9,dVar18);" (call_expression "fprintf(__stream,pcVar9,dVar18)" identifier (argument_list "(__stream,pcVar9,dVar18)" ( identifier , identifier , identifier ))) ;) (if_statement "if (stdout != __stream) {\n          fclose(__stream);\n        }" if (parenthesized_expression "(stdout != __stream)" ( (binary_expression "stdout != __stream" identifier != identifier) )) (compound_statement "{\n          fclose(__stream);\n        }" { (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) })) })) })) (expression_statement "pSVar12 = pSVar12->next;" (assignment_expression "pSVar12 = pSVar12->next" identifier = (field_expression "pSVar12->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit "void FUN_00103b30(void)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  void *__s;\n  long lVar5;\n  FILE *__stream;\n  char *pcVar6;\n  long *plVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long lVar11;\n  byte bVar12;\n  double dVar13;\n  \n  bVar12 = 0;\n  puVar9 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);\njoined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );\n}\n\n" (function_definition "void FUN_00103b30(void)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  void *__s;\n  long lVar5;\n  FILE *__stream;\n  char *pcVar6;\n  long *plVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long lVar11;\n  byte bVar12;\n  double dVar13;\n  \n  bVar12 = 0;\n  puVar9 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);\njoined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );\n}" primitive_type (function_declarator "FUN_00103b30(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  undefined8 *puVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  void *__s;\n  long lVar5;\n  FILE *__stream;\n  char *pcVar6;\n  long *plVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long lVar11;\n  byte bVar12;\n  double dVar13;\n  \n  bVar12 = 0;\n  puVar9 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);\njoined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );\n}" { (declaration "undefined8 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "undefined8 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "long *plVar7;" (sized_type_specifier "long" long) (pointer_declarator "*plVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (declaration "long lVar11;" (sized_type_specifier "long" long) identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "double dVar13;" primitive_type identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "puVar9 = DAT_00119b38;" (assignment_expression "puVar9 = DAT_00119b38" identifier = identifier) ;) (if_statement "if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }" if (parenthesized_expression "(DAT_00119b38 < DAT_00119b40)" ( (binary_expression "DAT_00119b38 < DAT_00119b40" identifier < identifier) )) (compound_statement "{\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }" { (do_statement "do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);" do (compound_statement "{\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    }" { (while_statement "while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }" while (parenthesized_expression "(((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))))))" ( (parenthesized_expression "((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))" ( (binary_expression "(puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))))" (parenthesized_expression "(puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4)))" ( (binary_expression "puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))" (binary_expression "puVar9[3] != 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) != number_literal) && (parenthesized_expression "(*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))" ( (binary_expression "*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4)" (pointer_expression "*(int *)(puVar9[3] + 0x18)" * (cast_expression "(int *)(puVar9[3] + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9[3] + 0x18)" ( (binary_expression "puVar9[3] + 0x18" (subscript_expression "puVar9[3]" identifier [ number_literal ]) + number_literal) )))) < (pointer_expression "*(int *)(puVar9 + 4)" * (cast_expression "(int *)(puVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) ))) )) && (parenthesized_expression "((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))))" ( (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))" ( (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c20)" identifier = (call_expression "FUN_0010c540(&DAT_00119c20)" identifier (argument_list "(&DAT_00119c20)" ( (pointer_expression "&DAT_00119c20" & identifier) )))) , (binary_expression "lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))" (binary_expression "lVar5 != 0" identifier != number_literal) || (parenthesized_expression "((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))" ( (parenthesized_expression "(DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))" ( (binary_expression "DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)" (binary_expression "DAT_00119c20 == 0" identifier == number_literal) && (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)" ( (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c38)" identifier = (call_expression "FUN_0010c540(&DAT_00119c38)" identifier (argument_list "(&DAT_00119c38)" ( (pointer_expression "&DAT_00119c38" & identifier) )))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) )))) )) ))) )) )) (compound_statement "{\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }" { (expression_statement "puVar4 = DAT_00119b40;" (assignment_expression "puVar4 = DAT_00119b40" identifier = identifier) ;) (expression_statement "puVar1 = puVar9 + 4;" (assignment_expression "puVar1 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "plVar8 = puVar9 + 3;" (assignment_expression "plVar8 = puVar9 + 3" identifier = (binary_expression "puVar9 + 3" identifier + number_literal)) ;) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" identifier = (binary_expression "puVar9 + 0x2b" identifier + number_literal)) ;) (expression_statement "*(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;" (assignment_expression "*(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1" (pointer_expression "*(undefined4 *)(*plVar8 + 0x18)" * (cast_expression "(undefined4 *)(*plVar8 + 0x18)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*plVar8 + 0x18)" ( (binary_expression "*plVar8 + 0x18" (pointer_expression "*plVar8" * identifier) + number_literal) )))) = (pointer_expression "*(undefined4 *)puVar1" * (cast_expression "(undefined4 *)puVar1" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (if_statement "if (puVar4 <= puVar9) goto LAB_00103bb0;" if (parenthesized_expression "(puVar4 <= puVar9)" ( (binary_expression "puVar4 <= puVar9" identifier <= identifier) )) (goto_statement "goto LAB_00103bb0;" goto statement_identifier ;)) })) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" identifier = (binary_expression "puVar9 + 0x2b" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar9 < DAT_00119b40)" ( (binary_expression "puVar9 < DAT_00119b40" identifier < identifier) )) ;) (labeled_statement "LAB_00103bb0:\n    plVar8 = DAT_00119610;" statement_identifier : (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;)) (if_statement "if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;" if (parenthesized_expression "(DAT_00119610 != (long *)0x0)" ( (binary_expression "DAT_00119610 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00103bc0;" goto statement_identifier ;)) (expression_statement "puVar9 = DAT_00119b38;" (assignment_expression "puVar9 = DAT_00119b38" identifier = identifier) ;) (if_statement "if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }" if (parenthesized_expression "(DAT_00119b40 <= DAT_00119b38)" ( (binary_expression "DAT_00119b40 <= DAT_00119b38" identifier <= identifier) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) }) (else_clause "else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }" else (compound_statement "{\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }" { (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;) (if_statement "if (DAT_00119610 == (long *)0x0) {\n      return;\n    }" if (parenthesized_expression "(DAT_00119610 == (long *)0x0)" ( (binary_expression "DAT_00119610 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (labeled_statement "LAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);" statement_identifier : (do_statement "do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);" do (compound_statement "{\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    }" { (if_statement "if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }" if (parenthesized_expression "(0 < (int)plVar8[3])" ( (binary_expression "0 < (int)plVar8[3]" number_literal < (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ]))) )) (compound_statement "{\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }" { (expression_statement "__s = (void *)xmalloc((long)(int)plVar8[3] << 3);" (assignment_expression "__s = (void *)xmalloc((long)(int)plVar8[3] << 3)" identifier = (cast_expression "(void *)xmalloc((long)(int)plVar8[3] << 3)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc((long)(int)plVar8[3] << 3)" identifier (argument_list "((long)(int)plVar8[3] << 3)" ( (binary_expression "(long)(int)plVar8[3] << 3" (cast_expression "(long)(int)plVar8[3]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ]))) << number_literal) ))))) ;) (expression_statement "plVar8[4] = (long)__s;" (assignment_expression "plVar8[4] = (long)__s" (subscript_expression "plVar8[4]" identifier [ number_literal ]) = (cast_expression "(long)__s" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "memset(__s,0,(long)(int)plVar8[3] << 3);" (call_expression "memset(__s,0,(long)(int)plVar8[3] << 3)" identifier (argument_list "(__s,0,(long)(int)plVar8[3] << 3)" ( identifier , number_literal , (binary_expression "(long)(int)plVar8[3] << 3" (cast_expression "(long)(int)plVar8[3]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ]))) << number_literal) ))) ;) })) (expression_statement "plVar8 = (long *)*plVar8;" (assignment_expression "plVar8 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) }) while (parenthesized_expression "(plVar8 != (long *)0x0)" ( (binary_expression "plVar8 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;)) (expression_statement "puVar9 = DAT_00119b38;" (assignment_expression "puVar9 = DAT_00119b38" identifier = identifier) ;) (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;) (if_statement "if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;" if (parenthesized_expression "(DAT_00119b40 <= DAT_00119b38)" ( (binary_expression "DAT_00119b40 <= DAT_00119b38" identifier <= identifier) )) (goto_statement "goto joined_r0x00103c9a;" goto statement_identifier ;)) }))) (labeled_statement "LAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);" statement_identifier : (do_statement "do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);" do (compound_statement "{\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  }" { (if_statement "if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }" if (parenthesized_expression "(((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0))))))" ( (binary_expression "((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))" (parenthesized_expression "((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0))" ( (binary_expression "(puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)" (parenthesized_expression "(puVar9[3] != 0)" ( (binary_expression "puVar9[3] != 0" (subscript_expression "puVar9[3]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(*(int *)(puVar9[3] + 0x18) != 0)" ( (binary_expression "*(int *)(puVar9[3] + 0x18) != 0" (pointer_expression "*(int *)(puVar9[3] + 0x18)" * (cast_expression "(int *)(puVar9[3] + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9[3] + 0x18)" ( (binary_expression "puVar9[3] + 0x18" (subscript_expression "puVar9[3]" identifier [ number_literal ]) + number_literal) )))) != number_literal) ))) )) && (parenthesized_expression "((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))" ( (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0))))" ( (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9)" identifier = (call_expression "FUN_0010c540(&DAT_00119c20,*puVar9)" identifier (argument_list "(&DAT_00119c20,*puVar9)" ( (pointer_expression "&DAT_00119c20" & identifier) , (pointer_expression "*puVar9" * identifier) )))) , (binary_expression "lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))" (binary_expression "lVar5 != 0" identifier != number_literal) || (parenthesized_expression "((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))" ( (parenthesized_expression "(DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0))" ( (binary_expression "DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)" (binary_expression "DAT_00119c20 == 0" identifier == number_literal) && (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)" ( (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9)" identifier = (call_expression "FUN_0010c540(&DAT_00119c38,*puVar9)" identifier (argument_list "(&DAT_00119c38,*puVar9)" ( (pointer_expression "&DAT_00119c38" & identifier) , (pointer_expression "*puVar9" * identifier) )))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) )))) )) ))) )) (compound_statement "{\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }" { (expression_statement "lVar5 = puVar9[3];" (assignment_expression "lVar5 = puVar9[3]" identifier = (subscript_expression "puVar9[3]" identifier [ number_literal ])) ;) (expression_statement "lVar11 = puVar9[5];" (assignment_expression "lVar11 = puVar9[5]" identifier = (subscript_expression "puVar9[5]" identifier [ number_literal ])) ;) (expression_statement "iVar2 = *(int *)(puVar9 + 4);" (assignment_expression "iVar2 = *(int *)(puVar9 + 4)" identifier = (pointer_expression "*(int *)(puVar9 + 4)" * (cast_expression "(int *)(puVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar8 = (long *)(lVar5 + 0x10);" (assignment_expression "plVar8 = (long *)(lVar5 + 0x10)" identifier = (cast_expression "(long *)(lVar5 + 0x10)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x10)" ( (binary_expression "lVar5 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*plVar8 = *plVar8 + lVar11;" (assignment_expression "*plVar8 = *plVar8 + lVar11" (pointer_expression "*plVar8" * identifier) = (binary_expression "*plVar8 + lVar11" (pointer_expression "*plVar8" * identifier) + identifier)) ;) (expression_statement "puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);" (assignment_expression "puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8)" identifier = (cast_expression "(undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8)" ( (binary_expression "*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8" (binary_expression "*(long *)(lVar5 + 0x20) + -8" (pointer_expression "*(long *)(lVar5 + 0x20)" * (cast_expression "(long *)(lVar5 + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) + number_literal) + (binary_expression "(long)iVar2 * 8" (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) )))) ;) (expression_statement "plVar8 = (long *)*puVar1;" (assignment_expression "plVar8 = (long *)*puVar1" identifier = (cast_expression "(long *)*puVar1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar1" * identifier))) ;) (if_statement "if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }" if (parenthesized_expression "(plVar8 == (long *)0x0)" ( (binary_expression "plVar8 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *puVar1 = puVar9;\n      }" { (expression_statement "*puVar1 = puVar9;" (assignment_expression "*puVar1 = puVar9" (pointer_expression "*puVar1" * identifier) = identifier) ;) }) (else_clause "else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }" else (compound_statement "{\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }" { (if_statement "if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }" if (parenthesized_expression "(*plVar8 == 0)" ( (binary_expression "*plVar8 == 0" (pointer_expression "*plVar8" * identifier) == number_literal) )) (compound_statement "{\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }" { (expression_statement "plVar8[5] = plVar8[5] + lVar11;" (assignment_expression "plVar8[5] = plVar8[5] + lVar11" (subscript_expression "plVar8[5]" identifier [ number_literal ]) = (binary_expression "plVar8[5] + lVar11" (subscript_expression "plVar8[5]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" identifier = (binary_expression "puVar9 + 0x2b" identifier + number_literal)) ;) (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;) (if_statement "if (DAT_00119b40 <= puVar9) break;" if (parenthesized_expression "(DAT_00119b40 <= puVar9)" ( (binary_expression "DAT_00119b40 <= puVar9" identifier <= identifier) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_00103c20;" goto statement_identifier ;) })) (expression_statement "plVar7 = (long *)xmalloc(0x158);" (assignment_expression "plVar7 = (long *)xmalloc(0x158)" identifier = (cast_expression "(long *)xmalloc(0x158)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x158)" identifier (argument_list "(0x158)" ( number_literal ))))) ;) (expression_statement "plVar10 = plVar7;" (assignment_expression "plVar10 = plVar7" identifier = identifier) ;) (for_statement "for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }" for ( (assignment_expression "lVar5 = 0x2b" identifier = number_literal) ; (binary_expression "lVar5 != 0" identifier != number_literal) ; (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ) (compound_statement "{\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }" { (expression_statement "*plVar10 = *plVar8;" (assignment_expression "*plVar10 = *plVar8" (pointer_expression "*plVar10" * identifier) = (pointer_expression "*plVar8" * identifier)) ;) (expression_statement "plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "plVar8 = plVar8 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "plVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "plVar8 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;" (assignment_expression "plVar10 = plVar10 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "plVar10 + (ulong)bVar12 * -2 + 1" (binary_expression "plVar10 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "*plVar7 = 0;" (assignment_expression "*plVar7 = 0" (pointer_expression "*plVar7" * identifier) = number_literal) ;) (expression_statement "plVar7[5] = plVar7[5] + puVar9[5];" (assignment_expression "plVar7[5] = plVar7[5] + puVar9[5]" (subscript_expression "plVar7[5]" identifier [ number_literal ]) = (binary_expression "plVar7[5] + puVar9[5]" (subscript_expression "plVar7[5]" identifier [ number_literal ]) + (subscript_expression "puVar9[5]" identifier [ number_literal ]))) ;) (expression_statement "*(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;" (assignment_expression "*(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7" (pointer_expression "*(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8)" * (cast_expression "(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8)" ( (binary_expression "*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8" (binary_expression "*(long *)(puVar9[3] + 0x20) + -8" (pointer_expression "*(long *)(puVar9[3] + 0x20)" * (cast_expression "(long *)(puVar9[3] + 0x20)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9[3] + 0x20)" ( (binary_expression "puVar9[3] + 0x20" (subscript_expression "puVar9[3]" identifier [ number_literal ]) + number_literal) )))) + number_literal) + (binary_expression "(long)*(int *)(puVar9 + 4) * 8" (cast_expression "(long)*(int *)(puVar9 + 4)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*(int *)(puVar9 + 4)" * (cast_expression "(int *)(puVar9 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar9 + 4)" ( (binary_expression "puVar9 + 4" identifier + number_literal) ))))) * number_literal)) )))) = identifier) ;) }))) })) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" identifier = (binary_expression "puVar9 + 0x2b" identifier + number_literal)) ;) (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" identifier = identifier) ;) }) while (parenthesized_expression "(puVar9 < DAT_00119b40)" ( (binary_expression "puVar9 < DAT_00119b40" identifier < identifier) )) ;)) (labeled_statement "joined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );" statement_identifier : (do_statement "do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );" do (compound_statement "{\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  }" { (if_statement "if (plVar8 == (long *)0x0) {\n      return;\n    }" if (parenthesized_expression "(plVar8 == (long *)0x0)" ( (binary_expression "plVar8 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return;\n    }" { (return_statement "return;" return ;) })) (if_statement "if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }" if (parenthesized_expression "(((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0))))" ( (binary_expression "((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))" (parenthesized_expression "((int)plVar8[3] != 0)" ( (binary_expression "(int)plVar8[3] != 0" (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ])) != number_literal) )) && (parenthesized_expression "((DAT_001182e0 == 0 || (plVar8[2] != 0)))" ( (parenthesized_expression "(DAT_001182e0 == 0 || (plVar8[2] != 0))" ( (binary_expression "DAT_001182e0 == 0 || (plVar8[2] != 0)" (binary_expression "DAT_001182e0 == 0" identifier == number_literal) || (parenthesized_expression "(plVar8[2] != 0)" ( (binary_expression "plVar8[2] != 0" (subscript_expression "plVar8[2]" identifier [ number_literal ]) != number_literal) ))) )) ))) )) (compound_statement "{\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }" { (expression_statement "DAT_00118968 = 0;" (assignment_expression "DAT_00118968 = 0" identifier = number_literal) ;) (expression_statement "DAT_00118970 = 0;" (assignment_expression "DAT_00118970 = 0" identifier = number_literal) ;) (expression_statement "__stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);" (assignment_expression "__stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8)" identifier = (cast_expression "(FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8)" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8)" identifier (argument_list "(plVar8,0x10,FUN_001030f0,plVar8)" ( identifier , number_literal , identifier , identifier ))))) ;) (expression_statement "uVar3 = DAT_00118270;" (assignment_expression "uVar3 = DAT_00118270" identifier = identifier) ;) (if_statement "if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }" if (parenthesized_expression "(__stream != (FILE *)0x0)" ( (binary_expression "__stream != (FILE *)0x0" identifier != (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }" { (if_statement "if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }" if (parenthesized_expression "((int)DAT_00118270 < 1)" ( (binary_expression "(int)DAT_00118270 < 1" (cast_expression "(int)DAT_00118270" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n          plVar10 = (long *)plVar8[4];\n        }" { (expression_statement "plVar10 = (long *)plVar8[4];" (assignment_expression "plVar10 = (long *)plVar8[4]" identifier = (cast_expression "(long *)plVar8[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[4]" identifier [ number_literal ]))) ;) }) (else_clause "else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }" else (compound_statement "{\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }" { (expression_statement "pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" identifier (argument_list "("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""\n\nTop %d Lines:\n\n     Line      Count\n\n"" " escape_sequence escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,(ulong)uVar3);" (call_expression "fprintf(__stream,pcVar6,(ulong)uVar3)" identifier (argument_list "(__stream,pcVar6,(ulong)uVar3)" ( identifier , identifier , (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) ))) ;) (expression_statement "qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);" (call_expression "qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040)" identifier (argument_list "((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040)" ( (cast_expression "(void *)plVar8[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[4]" identifier [ number_literal ])) , (cast_expression "(long)(int)plVar8[3]" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ]))) , number_literal , identifier ))) ;) (expression_statement "uVar3 = DAT_00118270;" (assignment_expression "uVar3 = DAT_00118270" identifier = identifier) ;) (if_statement "if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }" if (parenthesized_expression "((int)plVar8[3] <= (int)DAT_00118270)" ( (binary_expression "(int)plVar8[3] <= (int)DAT_00118270" (cast_expression "(int)plVar8[3]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar8[3]" identifier [ number_literal ])) <= (cast_expression "(int)DAT_00118270" ( (type_descriptor "int" primitive_type) ) identifier)) )) (compound_statement "{\n            uVar3 = *(uint *)(plVar8 + 3);\n          }" { (expression_statement "uVar3 = *(uint *)(plVar8 + 3);" (assignment_expression "uVar3 = *(uint *)(plVar8 + 3)" identifier = (pointer_expression "*(uint *)(plVar8 + 3)" * (cast_expression "(uint *)(plVar8 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar8 + 3)" ( (binary_expression "plVar8 + 3" identifier + number_literal) ))))) ;) })) (expression_statement "plVar10 = (long *)plVar8[4];" (assignment_expression "plVar10 = (long *)plVar8[4]" identifier = (cast_expression "(long *)plVar8[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[4]" identifier [ number_literal ]))) ;) (if_statement "if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }" if (parenthesized_expression "(((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             )" ( (binary_expression "((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)" (parenthesized_expression "((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0))" ( (binary_expression "(0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)" (parenthesized_expression "(0 < (int)uVar3)" ( (binary_expression "0 < (int)uVar3" number_literal < (cast_expression "(int)uVar3" ( (type_descriptor "int" primitive_type) ) identifier)) )) && (parenthesized_expression "(lVar5 = *plVar10, lVar5 != 0)" ( (comma_expression "lVar5 = *plVar10, lVar5 != 0" (assignment_expression "lVar5 = *plVar10" identifier = (pointer_expression "*plVar10" * identifier)) , (binary_expression "lVar5 != 0" identifier != number_literal)) ))) )) && (parenthesized_expression "(*(long *)(lVar5 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar5 + 0x28) != 0" (pointer_expression "*(long *)(lVar5 + 0x28)" * (cast_expression "(long *)(lVar5 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x28)" ( (binary_expression "lVar5 + 0x28" identifier + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }" { (expression_statement "lVar11 = 8;" (assignment_expression "lVar11 = 8" identifier = number_literal) ;) (do_statement "do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);" do (compound_statement "{\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            }" { (expression_statement "fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));" (call_expression "fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20))" identifier (argument_list "(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20))" ( identifier , (string_literal ""%9d %10lu\n"" " string_content escape_sequence ") , (binary_expression "(ulong)*(uint *)(lVar5 + 0x20)" (parenthesized_expression "(ulong)" ( identifier )) * (cast_expression "(uint *)(lVar5 + 0x20)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x20)" ( (binary_expression "lVar5 + 0x20" identifier + number_literal) )))) ))) ;) (expression_statement "plVar10 = (long *)plVar8[4];" (assignment_expression "plVar10 = (long *)plVar8[4]" identifier = (cast_expression "(long *)plVar8[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar8[4]" identifier [ number_literal ]))) ;) (if_statement "if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;" if (parenthesized_expression "((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0))" ( (binary_expression "(lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)" (parenthesized_expression "(lVar11 == (ulong)(uVar3 - 1) * 8 + 8)" ( (binary_expression "lVar11 == (ulong)(uVar3 - 1) * 8 + 8" identifier == (binary_expression "(ulong)(uVar3 - 1) * 8 + 8" (binary_expression "(ulong)(uVar3 - 1) * 8" (call_expression "(ulong)(uVar3 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uVar3 - 1)" ( (binary_expression "uVar3 - 1" identifier - number_literal) ))) * number_literal) + number_literal)) )) || (parenthesized_expression "(lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)" ( (comma_expression "lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0" (assignment_expression "lVar5 = *(long *)((long)plVar10 + lVar11)" identifier = (pointer_expression "*(long *)((long)plVar10 + lVar11)" * (cast_expression "(long *)((long)plVar10 + lVar11)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar10 + lVar11)" ( (binary_expression "(long)plVar10 + lVar11" (cast_expression "(long)plVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) , (binary_expression "lVar5 == 0" identifier == number_literal)) ))) )) (break_statement "break;" break ;)) (expression_statement "lVar11 = lVar11 + 8;" (assignment_expression "lVar11 = lVar11 + 8" identifier = (binary_expression "lVar11 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(*(long *)(lVar5 + 0x28) != 0)" ( (binary_expression "*(long *)(lVar5 + 0x28) != 0" (pointer_expression "*(long *)(lVar5 + 0x28)" * (cast_expression "(long *)(lVar5 + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar5 + 0x28)" ( (binary_expression "lVar5 + 0x28" identifier + number_literal) )))) != number_literal) )) ;) })) }))) (expression_statement "free(plVar10);" (call_expression "free(plVar10)" identifier (argument_list "(plVar10)" ( identifier ))) ;) (expression_statement "plVar8[4] = 0;" (assignment_expression "plVar8[4] = 0" (subscript_expression "plVar8[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","\nExecution Summary:\n\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","\nExecution Summary:\n\n",5)" identifier (argument_list "("gprof","\nExecution Summary:\n\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""\nExecution Summary:\n\n"" " escape_sequence string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6);" (call_expression "fprintf(__stream,pcVar6)" identifier (argument_list "(__stream,pcVar6)" ( identifier , identifier ))) ;) (expression_statement "lVar5 = DAT_00118970;" (assignment_expression "lVar5 = DAT_00118970" identifier = identifier) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9ld   Executable lines in this file\n",5)" identifier (argument_list "("gprof","%9ld   Executable lines in this file\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9ld   Executable lines in this file\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,lVar5);" (call_expression "fprintf(__stream,pcVar6,lVar5)" identifier (argument_list "(__stream,pcVar6,lVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "lVar5 = DAT_00118968;" (assignment_expression "lVar5 = DAT_00118968" identifier = identifier) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9ld   Lines executed\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9ld   Lines executed\n",5)" identifier (argument_list "("gprof","%9ld   Lines executed\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9ld   Lines executed\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,lVar5);" (call_expression "fprintf(__stream,pcVar6,lVar5)" identifier (argument_list "(__stream,pcVar6,lVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "dVar13 = _DAT_001101e8;" (assignment_expression "dVar13 = _DAT_001101e8" identifier = identifier) ;) (if_statement "if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }" if (parenthesized_expression "(DAT_00118970 != 0)" ( (binary_expression "DAT_00118970 != 0" identifier != number_literal) )) (compound_statement "{\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }" { (expression_statement "dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;" (assignment_expression "dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970" identifier = (binary_expression "((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970" (parenthesized_expression "((double)DAT_00118968 * _DAT_001101e8)" ( (binary_expression "(double)DAT_00118968 * _DAT_001101e8" (cast_expression "(double)DAT_00118968" ( (type_descriptor "double" primitive_type) ) identifier) * identifier) )) / (cast_expression "(double)DAT_00118970" ( (type_descriptor "double" primitive_type) ) identifier))) ;) })) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" identifier (argument_list "("gprof","%9.2f   Percent of the file executed\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9.2f   Percent of the file executed\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,dVar13);" (call_expression "fprintf(__stream,pcVar6,dVar13)" identifier (argument_list "(__stream,pcVar6,dVar13)" ( identifier , identifier , identifier ))) ;) (expression_statement "lVar5 = plVar8[2];" (assignment_expression "lVar5 = plVar8[2]" identifier = (subscript_expression "plVar8[2]" identifier [ number_literal ])) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" identifier (argument_list "("gprof","\n%9lu   Total number of line executions\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""\n%9lu   Total number of line executions\n"" " escape_sequence string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,lVar5);" (call_expression "fprintf(__stream,pcVar6,lVar5)" identifier (argument_list "(__stream,pcVar6,lVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "dVar13 = 0.0;" (assignment_expression "dVar13 = 0.0" identifier = number_literal) ;) (if_statement "if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }" if (parenthesized_expression "(DAT_00118970 != 0)" ( (binary_expression "DAT_00118970 != 0" identifier != number_literal) )) (compound_statement "{\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }" { (expression_statement "dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;" (assignment_expression "dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970" identifier = (binary_expression "(double)(ulong)plVar8[2] / (double)DAT_00118970" (cast_expression "(double)(ulong)plVar8[2]" ( (type_descriptor "double" primitive_type) ) (cast_expression "(ulong)plVar8[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "plVar8[2]" identifier [ number_literal ]))) / (cast_expression "(double)DAT_00118970" ( (type_descriptor "double" primitive_type) ) identifier))) ;) })) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%9.2f   Average executions per line\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%9.2f   Average executions per line\n",5)" identifier (argument_list "("gprof","%9.2f   Average executions per line\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%9.2f   Average executions per line\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream,pcVar6,dVar13);" (call_expression "fprintf(__stream,pcVar6,dVar13)" identifier (argument_list "(__stream,pcVar6,dVar13)" ( identifier , identifier , identifier ))) ;) (if_statement "if (stdout != __stream) {\n          fclose(__stream);\n        }" if (parenthesized_expression "(stdout != __stream)" ( (binary_expression "stdout != __stream" identifier != identifier) )) (compound_statement "{\n          fclose(__stream);\n        }" { (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) })) })) })) (expression_statement "plVar8 = (long *)*plVar8;" (assignment_expression "plVar8 = (long *)*plVar8" identifier = (cast_expression "(long *)*plVar8" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar8" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;)) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) , (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) )))) , (binary_expression IDENT == LIT)) ))) )) )))) )) ))) )) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (return_statement return ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) << LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) << LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) }))) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) != LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * IDENT) )))) , (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (pointer_expression * IDENT) )))) , (binary_expression IDENT == LIT)) ))) )) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (break_statement break ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( (assignment_expression IDENT = 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 (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) + LIT) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) * LIT)) )))) = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;)) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT == LIT) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " escape_sequence escape_sequence string_content escape_sequence escape_sequence string_content escape_sequence escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor TYPE) ) IDENT) ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) , LIT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT != LIT)) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence ") , (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (binary_expression (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) * LIT) + LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))))) , (binary_expression IDENT == LIT)) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) ;) })) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " escape_sequence string_content escape_sequence escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * IDENT) )) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " escape_sequence string_content escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) / (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( BOOL )) ;)) })))
(function_definition "void FUN_00103b30(void)\n\n{\n  undefined8 *puVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  void *__s;\n  long lVar5;\n  FILE *__stream;\n  char *pcVar6;\n  long *plVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long lVar11;\n  byte bVar12;\n  double dVar13;\n  \n  bVar12 = 0;\n  puVar9 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);\njoined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00103b30(void)" (identifier "FUN_00103b30") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  undefined8 *puVar1;\n  int iVar2;\n  uint uVar3;\n  undefined8 *puVar4;\n  void *__s;\n  long lVar5;\n  FILE *__stream;\n  char *pcVar6;\n  long *plVar7;\n  long *plVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long lVar11;\n  byte bVar12;\n  double dVar13;\n  \n  bVar12 = 0;\n  puVar9 = DAT_00119b38;\n  if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }\nLAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);\njoined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );\n}" ({ "{") (declaration "undefined8 *puVar1;" (type_identifier "undefined8") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "undefined8 *puVar4;" (type_identifier "undefined8") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "void *__s;" (primitive_type "void") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "FILE *__stream;" (type_identifier "FILE") (pointer_declarator "*__stream" (* "*") (identifier "__stream")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "long *plVar7;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar7" (* "*") (identifier "plVar7")) (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "long *plVar10;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar10" (* "*") (identifier "plVar10")) (; ";")) (declaration "long lVar11;" (sized_type_specifier "long" (long "long")) (identifier "lVar11") (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (declaration "double dVar13;" (primitive_type "double") (identifier "dVar13") (; ";")) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" (identifier "bVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar9 = DAT_00119b38;" (assignment_expression "puVar9 = DAT_00119b38" (identifier "puVar9") (= "=") (identifier "DAT_00119b38")) (; ";")) (if_statement "if (DAT_00119b38 < DAT_00119b40) {\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }\n  else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }" (if "if") (parenthesized_expression "(DAT_00119b38 < DAT_00119b40)" (( "(") (binary_expression "DAT_00119b38 < DAT_00119b40" (identifier "DAT_00119b38") (< "<") (identifier "DAT_00119b40")) () ")")) (compound_statement "{\n    do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);\nLAB_00103bb0:\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;\n    puVar9 = DAT_00119b38;\n    if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }\n  }" ({ "{") (do_statement "do {\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    } while (puVar9 < DAT_00119b40);" (do "do") (compound_statement "{\n      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }\n      puVar9 = puVar9 + 0x2b;\n    }" ({ "{") (while_statement "while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }" (while "while") (parenthesized_expression "(((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))))))" (( "(") (parenthesized_expression "((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))" (( "(") (binary_expression "(puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&\n             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))))" (parenthesized_expression "(puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4)))" (( "(") (binary_expression "puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))" (binary_expression "puVar9[3] != 0" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))" (( "(") (binary_expression "*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4)" (pointer_expression "*(int *)(puVar9[3] + 0x18)" (* "*") (cast_expression "(int *)(puVar9[3] + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9[3] + 0x18)" (( "(") (binary_expression "puVar9[3] + 0x18" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "0x18")) () ")")))) (< "<") (pointer_expression "*(int *)(puVar9 + 4)" (* "*") (cast_expression "(int *)(puVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")"))))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))))" (( "(") (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))" (( "(") (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c20)" (identifier "lVar5") (= "=") (call_expression "FUN_0010c540(&DAT_00119c20)" (identifier "FUN_0010c540") (argument_list "(&DAT_00119c20)" (( "(") (pointer_expression "&DAT_00119c20" (& "&") (identifier "DAT_00119c20")) () ")")))) (, ",") (binary_expression "lVar5 != 0 ||\n              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))" (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)))" (( "(") (parenthesized_expression "(DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))" (( "(") (binary_expression "DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)" (binary_expression "DAT_00119c20 == 0" (identifier "DAT_00119c20") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0)" (( "(") (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c38)" (identifier "lVar5") (= "=") (call_expression "FUN_0010c540(&DAT_00119c38)" (identifier "FUN_0010c540") (argument_list "(&DAT_00119c38)" (( "(") (pointer_expression "&DAT_00119c38" (& "&") (identifier "DAT_00119c38")) () ")")))) (, ",") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")))) () ")")) () ")"))) () ")")) () ")")) (compound_statement "{\n        puVar4 = DAT_00119b40;\n        puVar1 = puVar9 + 4;\n        plVar8 = puVar9 + 3;\n        puVar9 = puVar9 + 0x2b;\n        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;\n        if (puVar4 <= puVar9) goto LAB_00103bb0;\n      }" ({ "{") (expression_statement "puVar4 = DAT_00119b40;" (assignment_expression "puVar4 = DAT_00119b40" (identifier "puVar4") (= "=") (identifier "DAT_00119b40")) (; ";")) (expression_statement "puVar1 = puVar9 + 4;" (assignment_expression "puVar1 = puVar9 + 4" (identifier "puVar1") (= "=") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "plVar8 = puVar9 + 3;" (assignment_expression "plVar8 = puVar9 + 3" (identifier "plVar8") (= "=") (binary_expression "puVar9 + 3" (identifier "puVar9") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 0x2b" (identifier "puVar9") (+ "+") (number_literal "0x2b"))) (; ";")) (expression_statement "*(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;" (assignment_expression "*(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1" (pointer_expression "*(undefined4 *)(*plVar8 + 0x18)" (* "*") (cast_expression "(undefined4 *)(*plVar8 + 0x18)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*plVar8 + 0x18)" (( "(") (binary_expression "*plVar8 + 0x18" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (pointer_expression "*(undefined4 *)puVar1" (* "*") (cast_expression "(undefined4 *)puVar1" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar1")))) (; ";")) (if_statement "if (puVar4 <= puVar9) goto LAB_00103bb0;" (if "if") (parenthesized_expression "(puVar4 <= puVar9)" (( "(") (binary_expression "puVar4 <= puVar9" (identifier "puVar4") (<= "<=") (identifier "puVar9")) () ")")) (goto_statement "goto LAB_00103bb0;" (goto "goto") (statement_identifier "LAB_00103bb0") (; ";"))) (} "}"))) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 0x2b" (identifier "puVar9") (+ "+") (number_literal "0x2b"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 < DAT_00119b40)" (( "(") (binary_expression "puVar9 < DAT_00119b40" (identifier "puVar9") (< "<") (identifier "DAT_00119b40")) () ")")) (; ";")) (labeled_statement "LAB_00103bb0:\n    plVar8 = DAT_00119610;" (statement_identifier "LAB_00103bb0") (: ":") (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" (identifier "plVar8") (= "=") (identifier "DAT_00119610")) (; ";"))) (if_statement "if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;" (if "if") (parenthesized_expression "(DAT_00119610 != (long *)0x0)" (( "(") (binary_expression "DAT_00119610 != (long *)0x0" (identifier "DAT_00119610") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00103bc0;" (goto "goto") (statement_identifier "LAB_00103bc0") (; ";"))) (expression_statement "puVar9 = DAT_00119b38;" (assignment_expression "puVar9 = DAT_00119b38" (identifier "puVar9") (= "=") (identifier "DAT_00119b38")) (; ";")) (if_statement "if (DAT_00119b40 <= DAT_00119b38) {\n      return;\n    }" (if "if") (parenthesized_expression "(DAT_00119b40 <= DAT_00119b38)" (( "(") (binary_expression "DAT_00119b40 <= DAT_00119b38" (identifier "DAT_00119b40") (<= "<=") (identifier "DAT_00119b38")) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }" (else "else") (compound_statement "{\n    plVar8 = DAT_00119610;\n    if (DAT_00119610 == (long *)0x0) {\n      return;\n    }\nLAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);\n    puVar9 = DAT_00119b38;\n    plVar8 = DAT_00119610;\n    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;\n  }" ({ "{") (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" (identifier "plVar8") (= "=") (identifier "DAT_00119610")) (; ";")) (if_statement "if (DAT_00119610 == (long *)0x0) {\n      return;\n    }" (if "if") (parenthesized_expression "(DAT_00119610 == (long *)0x0)" (( "(") (binary_expression "DAT_00119610 == (long *)0x0" (identifier "DAT_00119610") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_00103bc0:\n    do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);" (statement_identifier "LAB_00103bc0") (: ":") (do_statement "do {\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    } while (plVar8 != (long *)0x0);" (do "do") (compound_statement "{\n      if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }\n      plVar8 = (long *)*plVar8;\n    }" ({ "{") (if_statement "if (0 < (int)plVar8[3]) {\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }" (if "if") (parenthesized_expression "(0 < (int)plVar8[3])" (( "(") (binary_expression "0 < (int)plVar8[3]" (number_literal "0") (< "<") (cast_expression "(int)plVar8[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar8[3]" (identifier "plVar8") ([ "[") (number_literal "3") (] "]")))) () ")")) (compound_statement "{\n        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);\n        plVar8[4] = (long)__s;\n        memset(__s,0,(long)(int)plVar8[3] << 3);\n      }" ({ "{") (expression_statement "__s = (void *)xmalloc((long)(int)plVar8[3] << 3);" (assignment_expression "__s = (void *)xmalloc((long)(int)plVar8[3] << 3)" (identifier "__s") (= "=") (cast_expression "(void *)xmalloc((long)(int)plVar8[3] << 3)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc((long)(int)plVar8[3] << 3)" (identifier "xmalloc") (argument_list "((long)(int)plVar8[3] << 3)" (( "(") (binary_expression "(long)(int)plVar8[3] << 3" (cast_expression "(long)(int)plVar8[3]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)plVar8[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar8[3]" (identifier "plVar8") ([ "[") (number_literal "3") (] "]")))) (<< "<<") (number_literal "3")) () ")"))))) (; ";")) (expression_statement "plVar8[4] = (long)__s;" (assignment_expression "plVar8[4] = (long)__s" (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(long)__s" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__s"))) (; ";")) (expression_statement "memset(__s,0,(long)(int)plVar8[3] << 3);" (call_expression "memset(__s,0,(long)(int)plVar8[3] << 3)" (identifier "memset") (argument_list "(__s,0,(long)(int)plVar8[3] << 3)" (( "(") (identifier "__s") (, ",") (number_literal "0") (, ",") (binary_expression "(long)(int)plVar8[3] << 3" (cast_expression "(long)(int)plVar8[3]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)plVar8[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar8[3]" (identifier "plVar8") ([ "[") (number_literal "3") (] "]")))) (<< "<<") (number_literal "3")) () ")"))) (; ";")) (} "}"))) (expression_statement "plVar8 = (long *)*plVar8;" (assignment_expression "plVar8 = (long *)*plVar8" (identifier "plVar8") (= "=") (cast_expression "(long *)*plVar8" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar8" (* "*") (identifier "plVar8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar8 != (long *)0x0)" (( "(") (binary_expression "plVar8 != (long *)0x0" (identifier "plVar8") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";"))) (expression_statement "puVar9 = DAT_00119b38;" (assignment_expression "puVar9 = DAT_00119b38" (identifier "puVar9") (= "=") (identifier "DAT_00119b38")) (; ";")) (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" (identifier "plVar8") (= "=") (identifier "DAT_00119610")) (; ";")) (if_statement "if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;" (if "if") (parenthesized_expression "(DAT_00119b40 <= DAT_00119b38)" (( "(") (binary_expression "DAT_00119b40 <= DAT_00119b38" (identifier "DAT_00119b40") (<= "<=") (identifier "DAT_00119b38")) () ")")) (goto_statement "goto joined_r0x00103c9a;" (goto "goto") (statement_identifier "joined_r0x00103c9a") (; ";"))) (} "}")))) (labeled_statement "LAB_00103c20:\n  do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);" (statement_identifier "LAB_00103c20") (: ":") (do_statement "do {\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  } while (puVar9 < DAT_00119b40);" (do "do") (compound_statement "{\n    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }\n    puVar9 = puVar9 + 0x2b;\n    plVar8 = DAT_00119610;\n  }" ({ "{") (if_statement "if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }" (if "if") (parenthesized_expression "(((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0))))))" (( "(") (binary_expression "((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&\n       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))" (parenthesized_expression "((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0))" (( "(") (binary_expression "(puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)" (parenthesized_expression "(puVar9[3] != 0)" (( "(") (binary_expression "puVar9[3] != 0" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(*(int *)(puVar9[3] + 0x18) != 0)" (( "(") (binary_expression "*(int *)(puVar9[3] + 0x18) != 0" (pointer_expression "*(int *)(puVar9[3] + 0x18)" (* "*") (cast_expression "(int *)(puVar9[3] + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9[3] + 0x18)" (( "(") (binary_expression "puVar9[3] + 0x18" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "0x18")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))" (( "(") (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0))))" (( "(") (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9)" (identifier "lVar5") (= "=") (call_expression "FUN_0010c540(&DAT_00119c20,*puVar9)" (identifier "FUN_0010c540") (argument_list "(&DAT_00119c20,*puVar9)" (( "(") (pointer_expression "&DAT_00119c20" (& "&") (identifier "DAT_00119c20")) (, ",") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) () ")")))) (, ",") (binary_expression "lVar5 != 0 ||\n        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))" (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))" (( "(") (parenthesized_expression "(DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0))" (( "(") (binary_expression "DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)" (binary_expression "DAT_00119c20 == 0" (identifier "DAT_00119c20") (== "==") (number_literal "0")) (&& "&&") (parenthesized_expression "(lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)" (( "(") (comma_expression "lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0" (assignment_expression "lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9)" (identifier "lVar5") (= "=") (call_expression "FUN_0010c540(&DAT_00119c38,*puVar9)" (identifier "FUN_0010c540") (argument_list "(&DAT_00119c38,*puVar9)" (( "(") (pointer_expression "&DAT_00119c38" (& "&") (identifier "DAT_00119c38")) (, ",") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")) () ")")))) (, ",") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n      lVar5 = puVar9[3];\n      lVar11 = puVar9[5];\n      iVar2 = *(int *)(puVar9 + 4);\n      plVar8 = (long *)(lVar5 + 0x10);\n      *plVar8 = *plVar8 + lVar11;\n      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);\n      plVar8 = (long *)*puVar1;\n      if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }\n    }" ({ "{") (expression_statement "lVar5 = puVar9[3];" (assignment_expression "lVar5 = puVar9[3]" (identifier "lVar5") (= "=") (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "lVar11 = puVar9[5];" (assignment_expression "lVar11 = puVar9[5]" (identifier "lVar11") (= "=") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "iVar2 = *(int *)(puVar9 + 4);" (assignment_expression "iVar2 = *(int *)(puVar9 + 4)" (identifier "iVar2") (= "=") (pointer_expression "*(int *)(puVar9 + 4)" (* "*") (cast_expression "(int *)(puVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "plVar8 = (long *)(lVar5 + 0x10);" (assignment_expression "plVar8 = (long *)(lVar5 + 0x10)" (identifier "plVar8") (= "=") (cast_expression "(long *)(lVar5 + 0x10)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x10)" (( "(") (binary_expression "lVar5 + 0x10" (identifier "lVar5") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*plVar8 = *plVar8 + lVar11;" (assignment_expression "*plVar8 = *plVar8 + lVar11" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (= "=") (binary_expression "*plVar8 + lVar11" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (+ "+") (identifier "lVar11"))) (; ";")) (expression_statement "puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);" (assignment_expression "puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8)" (identifier "puVar1") (= "=") (cast_expression "(undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8)" (( "(") (binary_expression "*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8" (binary_expression "*(long *)(lVar5 + 0x20) + -8" (pointer_expression "*(long *)(lVar5 + 0x20)" (* "*") (cast_expression "(long *)(lVar5 + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x20)" (( "(") (binary_expression "lVar5 + 0x20" (identifier "lVar5") (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "-8")) (+ "+") (binary_expression "(long)iVar2 * 8" (cast_expression "(long)iVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar2")) (* "*") (number_literal "8"))) () ")")))) (; ";")) (expression_statement "plVar8 = (long *)*puVar1;" (assignment_expression "plVar8 = (long *)*puVar1" (identifier "plVar8") (= "=") (cast_expression "(long *)*puVar1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar1" (* "*") (identifier "puVar1")))) (; ";")) (if_statement "if (plVar8 == (long *)0x0) {\n        *puVar1 = puVar9;\n      }\n      else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }" (if "if") (parenthesized_expression "(plVar8 == (long *)0x0)" (( "(") (binary_expression "plVar8 == (long *)0x0" (identifier "plVar8") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        *puVar1 = puVar9;\n      }" ({ "{") (expression_statement "*puVar1 = puVar9;" (assignment_expression "*puVar1 = puVar9" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (identifier "puVar9")) (; ";")) (} "}")) (else_clause "else {\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }" (else "else") (compound_statement "{\n        if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }\n        plVar7 = (long *)xmalloc(0x158);\n        plVar10 = plVar7;\n        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }\n        *plVar7 = 0;\n        plVar7[5] = plVar7[5] + puVar9[5];\n        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;\n      }" ({ "{") (if_statement "if (*plVar8 == 0) {\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }" (if "if") (parenthesized_expression "(*plVar8 == 0)" (( "(") (binary_expression "*plVar8 == 0" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          plVar8[5] = plVar8[5] + lVar11;\n          puVar9 = puVar9 + 0x2b;\n          plVar8 = DAT_00119610;\n          if (DAT_00119b40 <= puVar9) break;\n          goto LAB_00103c20;\n        }" ({ "{") (expression_statement "plVar8[5] = plVar8[5] + lVar11;" (assignment_expression "plVar8[5] = plVar8[5] + lVar11" (subscript_expression "plVar8[5]" (identifier "plVar8") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "plVar8[5] + lVar11" (subscript_expression "plVar8[5]" (identifier "plVar8") ([ "[") (number_literal "5") (] "]")) (+ "+") (identifier "lVar11"))) (; ";")) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 0x2b" (identifier "puVar9") (+ "+") (number_literal "0x2b"))) (; ";")) (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" (identifier "plVar8") (= "=") (identifier "DAT_00119610")) (; ";")) (if_statement "if (DAT_00119b40 <= puVar9) break;" (if "if") (parenthesized_expression "(DAT_00119b40 <= puVar9)" (( "(") (binary_expression "DAT_00119b40 <= puVar9" (identifier "DAT_00119b40") (<= "<=") (identifier "puVar9")) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_00103c20;" (goto "goto") (statement_identifier "LAB_00103c20") (; ";")) (} "}"))) (expression_statement "plVar7 = (long *)xmalloc(0x158);" (assignment_expression "plVar7 = (long *)xmalloc(0x158)" (identifier "plVar7") (= "=") (cast_expression "(long *)xmalloc(0x158)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(0x158)" (identifier "xmalloc") (argument_list "(0x158)" (( "(") (number_literal "0x158") () ")"))))) (; ";")) (expression_statement "plVar10 = plVar7;" (assignment_expression "plVar10 = plVar7" (identifier "plVar10") (= "=") (identifier "plVar7")) (; ";")) (for_statement "for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }" (for "for") (( "(") (assignment_expression "lVar5 = 0x2b" (identifier "lVar5") (= "=") (number_literal "0x2b")) (; ";") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "lVar5 = lVar5 + -1" (identifier "lVar5") (= "=") (binary_expression "lVar5 + -1" (identifier "lVar5") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n          *plVar10 = *plVar8;\n          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;\n          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;\n        }" ({ "{") (expression_statement "*plVar10 = *plVar8;" (assignment_expression "*plVar10 = *plVar8" (pointer_expression "*plVar10" (* "*") (identifier "plVar10")) (= "=") (pointer_expression "*plVar8" (* "*") (identifier "plVar8"))) (; ";")) (expression_statement "plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;" (assignment_expression "plVar8 = plVar8 + (ulong)bVar12 * -2 + 1" (identifier "plVar8") (= "=") (binary_expression "plVar8 + (ulong)bVar12 * -2 + 1" (binary_expression "plVar8 + (ulong)bVar12 * -2" (identifier "plVar8") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;" (assignment_expression "plVar10 = plVar10 + (ulong)bVar12 * -2 + 1" (identifier "plVar10") (= "=") (binary_expression "plVar10 + (ulong)bVar12 * -2 + 1" (binary_expression "plVar10 + (ulong)bVar12 * -2" (identifier "plVar10") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*plVar7 = 0;" (assignment_expression "*plVar7 = 0" (pointer_expression "*plVar7" (* "*") (identifier "plVar7")) (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar7[5] = plVar7[5] + puVar9[5];" (assignment_expression "plVar7[5] = plVar7[5] + puVar9[5]" (subscript_expression "plVar7[5]" (identifier "plVar7") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "plVar7[5] + puVar9[5]" (subscript_expression "plVar7[5]" (identifier "plVar7") ([ "[") (number_literal "5") (] "]")) (+ "+") (subscript_expression "puVar9[5]" (identifier "puVar9") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "*(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;" (assignment_expression "*(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7" (pointer_expression "*(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8)" (* "*") (cast_expression "(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8)" (( "(") (binary_expression "*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8" (binary_expression "*(long *)(puVar9[3] + 0x20) + -8" (pointer_expression "*(long *)(puVar9[3] + 0x20)" (* "*") (cast_expression "(long *)(puVar9[3] + 0x20)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9[3] + 0x20)" (( "(") (binary_expression "puVar9[3] + 0x20" (subscript_expression "puVar9[3]" (identifier "puVar9") ([ "[") (number_literal "3") (] "]")) (+ "+") (number_literal "0x20")) () ")")))) (+ "+") (number_literal "-8")) (+ "+") (binary_expression "(long)*(int *)(puVar9 + 4) * 8" (cast_expression "(long)*(int *)(puVar9 + 4)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*(int *)(puVar9 + 4)" (* "*") (cast_expression "(int *)(puVar9 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar9 + 4)" (( "(") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4")) () ")"))))) (* "*") (number_literal "8"))) () ")")))) (= "=") (identifier "plVar7")) (; ";")) (} "}")))) (} "}"))) (expression_statement "puVar9 = puVar9 + 0x2b;" (assignment_expression "puVar9 = puVar9 + 0x2b" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 0x2b" (identifier "puVar9") (+ "+") (number_literal "0x2b"))) (; ";")) (expression_statement "plVar8 = DAT_00119610;" (assignment_expression "plVar8 = DAT_00119610" (identifier "plVar8") (= "=") (identifier "DAT_00119610")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar9 < DAT_00119b40)" (( "(") (binary_expression "puVar9 < DAT_00119b40" (identifier "puVar9") (< "<") (identifier "DAT_00119b40")) () ")")) (; ";"))) (labeled_statement "joined_r0x00103c9a:\n  do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );" (statement_identifier "joined_r0x00103c9a") (: ":") (do_statement "do {\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  } while( true );" (do "do") (compound_statement "{\n    if (plVar8 == (long *)0x0) {\n      return;\n    }\n    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }\n    plVar8 = (long *)*plVar8;\n  }" ({ "{") (if_statement "if (plVar8 == (long *)0x0) {\n      return;\n    }" (if "if") (parenthesized_expression "(plVar8 == (long *)0x0)" (( "(") (binary_expression "plVar8 == (long *)0x0" (identifier "plVar8") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return;\n    }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (if_statement "if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0))))" (( "(") (binary_expression "((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))" (parenthesized_expression "((int)plVar8[3] != 0)" (( "(") (binary_expression "(int)plVar8[3] != 0" (cast_expression "(int)plVar8[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar8[3]" (identifier "plVar8") ([ "[") (number_literal "3") (] "]"))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((DAT_001182e0 == 0 || (plVar8[2] != 0)))" (( "(") (parenthesized_expression "(DAT_001182e0 == 0 || (plVar8[2] != 0))" (( "(") (binary_expression "DAT_001182e0 == 0 || (plVar8[2] != 0)" (binary_expression "DAT_001182e0 == 0" (identifier "DAT_001182e0") (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(plVar8[2] != 0)" (( "(") (binary_expression "plVar8[2] != 0" (subscript_expression "plVar8[2]" (identifier "plVar8") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n      DAT_00118968 = 0;\n      DAT_00118970 = 0;\n      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);\n      uVar3 = DAT_00118270;\n      if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }\n    }" ({ "{") (expression_statement "DAT_00118968 = 0;" (assignment_expression "DAT_00118968 = 0" (identifier "DAT_00118968") (= "=") (number_literal "0")) (; ";")) (expression_statement "DAT_00118970 = 0;" (assignment_expression "DAT_00118970 = 0" (identifier "DAT_00118970") (= "=") (number_literal "0")) (; ";")) (expression_statement "__stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);" (assignment_expression "__stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8)" (identifier "__stream") (= "=") (cast_expression "(FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8)" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8)" (identifier "FUN_0010bb80") (argument_list "(plVar8,0x10,FUN_001030f0,plVar8)" (( "(") (identifier "plVar8") (, ",") (number_literal "0x10") (, ",") (identifier "FUN_001030f0") (, ",") (identifier "plVar8") () ")"))))) (; ";")) (expression_statement "uVar3 = DAT_00118270;" (assignment_expression "uVar3 = DAT_00118270" (identifier "uVar3") (= "=") (identifier "DAT_00118270")) (; ";")) (if_statement "if (__stream != (FILE *)0x0) {\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }" (if "if") (parenthesized_expression "(__stream != (FILE *)0x0)" (( "(") (binary_expression "__stream != (FILE *)0x0" (identifier "__stream") (!= "!=") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }\n        free(plVar10);\n        plVar8[4] = 0;\n        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);\n        fprintf(__stream,pcVar6);\n        lVar5 = DAT_00118970;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        lVar5 = DAT_00118968;\n        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = _DAT_001101e8;\n        if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        lVar5 = plVar8[2];\n        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);\n        fprintf(__stream,pcVar6,lVar5);\n        dVar13 = 0.0;\n        if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }\n        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);\n        fprintf(__stream,pcVar6,dVar13);\n        if (stdout != __stream) {\n          fclose(__stream);\n        }\n      }" ({ "{") (if_statement "if ((int)DAT_00118270 < 1) {\n          plVar10 = (long *)plVar8[4];\n        }\n        else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }" (if "if") (parenthesized_expression "((int)DAT_00118270 < 1)" (( "(") (binary_expression "(int)DAT_00118270 < 1" (cast_expression "(int)DAT_00118270" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00118270")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n          plVar10 = (long *)plVar8[4];\n        }" ({ "{") (expression_statement "plVar10 = (long *)plVar8[4];" (assignment_expression "plVar10 = (long *)plVar8[4]" (identifier "plVar10") (= "=") (cast_expression "(long *)plVar8[4]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]")))) (; ";")) (} "}")) (else_clause "else {\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }" (else "else") (compound_statement "{\n          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);\n          fprintf(__stream,pcVar6,(ulong)uVar3);\n          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);\n          uVar3 = DAT_00118270;\n          if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }\n          plVar10 = (long *)plVar8[4];\n          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }\n        }" ({ "{") (expression_statement "pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" (identifier "pcVar6") (= "=") (cast_expression "(char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" (identifier "dcgettext") (argument_list "("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5)" (( "(") (string_literal ""gprof"" (" """) (string_content "gprof") (" """)) (, ",") (string_literal ""\n\nTop %d Lines:\n\n     Line      Count\n\n"" (" """) (escape_sequence "\n") (escape_sequence "\n") (string_content "Top %d Lines:") (escape_sequence "\n") (escape_sequence "\n") (string_content "     Line      Count") (escape_sequence "\n") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(__stream,pcVar6,(ulong)uVar3);" (call_expression "fprintf(__stream,pcVar6,(ulong)uVar3)" (identifier "fprintf") (argument_list "(__stream,pcVar6,(ulong)uVar3)" (( "(") (identifier "__stream") (, ",") (identifier "pcVar6") (, ",") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3")) () ")"))) (; ";")) (expression_statement "qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);" (call_expression "qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040)" (identifier "qsort") (argument_list "((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040)" (( "(") (cast_expression "(void *)plVar8[4]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]"))) (, ",") (cast_expression "(long)(int)plVar8[3]" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (cast_expression "(int)plVar8[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar8[3]" (identifier "plVar8") ([ "[") (number_literal "3") (] "]")))) (, ",") (number_literal "8") (, ",") (identifier "FUN_00103040") () ")"))) (; ";")) (expression_statement "uVar3 = DAT_00118270;" (assignment_expression "uVar3 = DAT_00118270" (identifier "uVar3") (= "=") (identifier "DAT_00118270")) (; ";")) (if_statement "if ((int)plVar8[3] <= (int)DAT_00118270) {\n            uVar3 = *(uint *)(plVar8 + 3);\n          }" (if "if") (parenthesized_expression "((int)plVar8[3] <= (int)DAT_00118270)" (( "(") (binary_expression "(int)plVar8[3] <= (int)DAT_00118270" (cast_expression "(int)plVar8[3]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar8[3]" (identifier "plVar8") ([ "[") (number_literal "3") (] "]"))) (<= "<=") (cast_expression "(int)DAT_00118270" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "DAT_00118270"))) () ")")) (compound_statement "{\n            uVar3 = *(uint *)(plVar8 + 3);\n          }" ({ "{") (expression_statement "uVar3 = *(uint *)(plVar8 + 3);" (assignment_expression "uVar3 = *(uint *)(plVar8 + 3)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(plVar8 + 3)" (* "*") (cast_expression "(uint *)(plVar8 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar8 + 3)" (( "(") (binary_expression "plVar8 + 3" (identifier "plVar8") (+ "+") (number_literal "3")) () ")"))))) (; ";")) (} "}"))) (expression_statement "plVar10 = (long *)plVar8[4];" (assignment_expression "plVar10 = (long *)plVar8[4]" (identifier "plVar10") (= "=") (cast_expression "(long *)plVar8[4]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             ) {\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }" (if "if") (parenthesized_expression "(((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)\n             )" (( "(") (binary_expression "((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)" (parenthesized_expression "((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0))" (( "(") (binary_expression "(0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)" (parenthesized_expression "(0 < (int)uVar3)" (( "(") (binary_expression "0 < (int)uVar3" (number_literal "0") (< "<") (cast_expression "(int)uVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar3"))) () ")")) (&& "&&") (parenthesized_expression "(lVar5 = *plVar10, lVar5 != 0)" (( "(") (comma_expression "lVar5 = *plVar10, lVar5 != 0" (assignment_expression "lVar5 = *plVar10" (identifier "lVar5") (= "=") (pointer_expression "*plVar10" (* "*") (identifier "plVar10"))) (, ",") (binary_expression "lVar5 != 0" (identifier "lVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*(long *)(lVar5 + 0x28) != 0)" (( "(") (binary_expression "*(long *)(lVar5 + 0x28) != 0" (pointer_expression "*(long *)(lVar5 + 0x28)" (* "*") (cast_expression "(long *)(lVar5 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x28)" (( "(") (binary_expression "lVar5 + 0x28" (identifier "lVar5") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            lVar11 = 8;\n            do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);\n          }" ({ "{") (expression_statement "lVar11 = 8;" (assignment_expression "lVar11 = 8" (identifier "lVar11") (= "=") (number_literal "8")) (; ";")) (do_statement "do {\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            } while (*(long *)(lVar5 + 0x28) != 0);" (do "do") (compound_statement "{\n              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));\n              plVar10 = (long *)plVar8[4];\n              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;\n              lVar11 = lVar11 + 8;\n            }" ({ "{") (expression_statement "fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));" (call_expression "fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20))" (identifier "fprintf") (argument_list "(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20))" (( "(") (identifier "__stream") (, ",") (string_literal ""%9d %10lu\n"" (" """) (string_content "%9d %10lu") (escape_sequence "\n") (" """)) (, ",") (binary_expression "(ulong)*(uint *)(lVar5 + 0x20)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (* "*") (cast_expression "(uint *)(lVar5 + 0x20)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x20)" (( "(") (binary_expression "lVar5 + 0x20" (identifier "lVar5") (+ "+") (number_literal "0x20")) () ")")))) () ")"))) (; ";")) (expression_statement "plVar10 = (long *)plVar8[4];" (assignment_expression "plVar10 = (long *)plVar8[4]" (identifier "plVar10") (= "=") (cast_expression "(long *)plVar8[4]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;" (if "if") (parenthesized_expression "((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0))" (( "(") (binary_expression "(lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||\n                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)" (parenthesized_expression "(lVar11 == (ulong)(uVar3 - 1) * 8 + 8)" (( "(") (binary_expression "lVar11 == (ulong)(uVar3 - 1) * 8 + 8" (identifier "lVar11") (== "==") (binary_expression "(ulong)(uVar3 - 1) * 8 + 8" (binary_expression "(ulong)(uVar3 - 1) * 8" (call_expression "(ulong)(uVar3 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(uVar3 - 1)" (( "(") (binary_expression "uVar3 - 1" (identifier "uVar3") (- "-") (number_literal "1")) () ")"))) (* "*") (number_literal "8")) (+ "+") (number_literal "8"))) () ")")) (|| "||") (parenthesized_expression "(lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)" (( "(") (comma_expression "lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0" (assignment_expression "lVar5 = *(long *)((long)plVar10 + lVar11)" (identifier "lVar5") (= "=") (pointer_expression "*(long *)((long)plVar10 + lVar11)" (* "*") (cast_expression "(long *)((long)plVar10 + lVar11)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar10 + lVar11)" (( "(") (binary_expression "(long)plVar10 + lVar11" (cast_expression "(long)plVar10" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar10")) (+ "+") (identifier "lVar11")) () ")"))))) (, ",") (binary_expression "lVar5 == 0" (identifier "lVar5") (== "==") (number_literal "0"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar11 = lVar11 + 8;" (assignment_expression "lVar11 = lVar11 + 8" (identifier "lVar11") (= "=") (binary_expression "lVar11 + 8" (identifier "lVar11") (+ "+") (number_literal "8"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*(long *)(lVar5 + 0x28) != 0)" (( "(") (binary_expression "*(long *)(lVar5 + 0x28) != 0" (pointer_expression "*(long *)(lVar5 + 0x28)" (* "*") (cast_expression "(long *)(lVar5 + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar5 + 0x28)" (( "(") (binary_expression "lVar5 + 0x28" (identifier "lVar5") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "free(plVar10);" (call_expression "free(plVar10)" (identifier "free") (argument_list "(plVar10)" (( "(") (identifier "plVar10") () ")"))) (; ";")) (expression_statement "plVar8[4] = 0;" (assignment_expression "plVar8[4] = 0" (subscript_expression "plVar8[4]" (identifier "plVar8") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5)" (identifier "pcVar6") (= "=") (cast_expression "(char *)dcgettext("gprof","\nExecution Summary:\n\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext("gprof","\nExecution Summary:\n\n",5)" (identifier "dcgettext") (argument_list "("gprof","\nExecution Summary:\n\n",5)" (( "(") (string_literal ""gprof"" (" """) (string_content "gprof") (" """)) (, ",") (string_literal ""\nExecution Summary:\n\n"" (" """) (escape_sequence "\n") (string_content "Execution Summary:") (escape_sequence "\n") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(__stream,pcVar6);" (call_expression "fprintf(__stream,pcVar6)" (identifier "fprintf") (argument_list "(__stream,pcVar6)" (( "(") (identifier "__stream") (, ",") (identifier "pcVar6") () ")"))) (; ";")) (expression_statement "lVar5 = DAT_00118970;" (assignment_expression "lVar5 = DAT_00118970" (identifier "lVar5") (= "=") (identifier "DAT_00118970")) (; ";")) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5)" (identifier "pcVar6") (= "=") (cast_expression "(char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext("gprof","%9ld   Executable lines in this file\n",5)" (identifier "dcgettext") (argument_list "("gprof","%9ld   Executable lines in this file\n",5)" (( "(") (string_literal ""gprof"" (" """) (string_content "gprof") (" """)) (, ",") (string_literal ""%9ld   Executable lines in this file\n"" (" """) (string_content "%9ld   Executable lines in this file") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(__stream,pcVar6,lVar5);" (call_expression "fprintf(__stream,pcVar6,lVar5)" (identifier "fprintf") (argument_list "(__stream,pcVar6,lVar5)" (( "(") (identifier "__stream") (, ",") (identifier "pcVar6") (, ",") (identifier "lVar5") () ")"))) (; ";")) (expression_statement "lVar5 = DAT_00118968;" (assignment_expression "lVar5 = DAT_00118968" (identifier "lVar5") (= "=") (identifier "DAT_00118968")) (; ";")) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5)" (identifier "pcVar6") (= "=") (cast_expression "(char *)dcgettext("gprof","%9ld   Lines executed\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext("gprof","%9ld   Lines executed\n",5)" (identifier "dcgettext") (argument_list "("gprof","%9ld   Lines executed\n",5)" (( "(") (string_literal ""gprof"" (" """) (string_content "gprof") (" """)) (, ",") (string_literal ""%9ld   Lines executed\n"" (" """) (string_content "%9ld   Lines executed") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(__stream,pcVar6,lVar5);" (call_expression "fprintf(__stream,pcVar6,lVar5)" (identifier "fprintf") (argument_list "(__stream,pcVar6,lVar5)" (( "(") (identifier "__stream") (, ",") (identifier "pcVar6") (, ",") (identifier "lVar5") () ")"))) (; ";")) (expression_statement "dVar13 = _DAT_001101e8;" (assignment_expression "dVar13 = _DAT_001101e8" (identifier "dVar13") (= "=") (identifier "_DAT_001101e8")) (; ";")) (if_statement "if (DAT_00118970 != 0) {\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }" (if "if") (parenthesized_expression "(DAT_00118970 != 0)" (( "(") (binary_expression "DAT_00118970 != 0" (identifier "DAT_00118970") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;\n        }" ({ "{") (expression_statement "dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;" (assignment_expression "dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970" (identifier "dVar13") (= "=") (binary_expression "((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970" (parenthesized_expression "((double)DAT_00118968 * _DAT_001101e8)" (( "(") (binary_expression "(double)DAT_00118968 * _DAT_001101e8" (cast_expression "(double)DAT_00118968" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_00118968")) (* "*") (identifier "_DAT_001101e8")) () ")")) (/ "/") (cast_expression "(double)DAT_00118970" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_00118970")))) (; ";")) (} "}"))) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" (identifier "pcVar6") (= "=") (cast_expression "(char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext("gprof","%9.2f   Percent of the file executed\n",5)" (identifier "dcgettext") (argument_list "("gprof","%9.2f   Percent of the file executed\n",5)" (( "(") (string_literal ""gprof"" (" """) (string_content "gprof") (" """)) (, ",") (string_literal ""%9.2f   Percent of the file executed\n"" (" """) (string_content "%9.2f   Percent of the file executed") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(__stream,pcVar6,dVar13);" (call_expression "fprintf(__stream,pcVar6,dVar13)" (identifier "fprintf") (argument_list "(__stream,pcVar6,dVar13)" (( "(") (identifier "__stream") (, ",") (identifier "pcVar6") (, ",") (identifier "dVar13") () ")"))) (; ";")) (expression_statement "lVar5 = plVar8[2];" (assignment_expression "lVar5 = plVar8[2]" (identifier "lVar5") (= "=") (subscript_expression "plVar8[2]" (identifier "plVar8") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" (identifier "pcVar6") (= "=") (cast_expression "(char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext("gprof","\n%9lu   Total number of line executions\n",5)" (identifier "dcgettext") (argument_list "("gprof","\n%9lu   Total number of line executions\n",5)" (( "(") (string_literal ""gprof"" (" """) (string_content "gprof") (" """)) (, ",") (string_literal ""\n%9lu   Total number of line executions\n"" (" """) (escape_sequence "\n") (string_content "%9lu   Total number of line executions") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(__stream,pcVar6,lVar5);" (call_expression "fprintf(__stream,pcVar6,lVar5)" (identifier "fprintf") (argument_list "(__stream,pcVar6,lVar5)" (( "(") (identifier "__stream") (, ",") (identifier "pcVar6") (, ",") (identifier "lVar5") () ")"))) (; ";")) (expression_statement "dVar13 = 0.0;" (assignment_expression "dVar13 = 0.0" (identifier "dVar13") (= "=") (number_literal "0.0")) (; ";")) (if_statement "if (DAT_00118970 != 0) {\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }" (if "if") (parenthesized_expression "(DAT_00118970 != 0)" (( "(") (binary_expression "DAT_00118970 != 0" (identifier "DAT_00118970") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;\n        }" ({ "{") (expression_statement "dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;" (assignment_expression "dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970" (identifier "dVar13") (= "=") (binary_expression "(double)(ulong)plVar8[2] / (double)DAT_00118970" (cast_expression "(double)(ulong)plVar8[2]" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (cast_expression "(ulong)plVar8[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (subscript_expression "plVar8[2]" (identifier "plVar8") ([ "[") (number_literal "2") (] "]")))) (/ "/") (cast_expression "(double)DAT_00118970" (( "(") (type_descriptor "double" (primitive_type "double")) () ")") (identifier "DAT_00118970")))) (; ";")) (} "}"))) (expression_statement "pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5)" (identifier "pcVar6") (= "=") (cast_expression "(char *)dcgettext("gprof","%9.2f   Average executions per line\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext("gprof","%9.2f   Average executions per line\n",5)" (identifier "dcgettext") (argument_list "("gprof","%9.2f   Average executions per line\n",5)" (( "(") (string_literal ""gprof"" (" """) (string_content "gprof") (" """)) (, ",") (string_literal ""%9.2f   Average executions per line\n"" (" """) (string_content "%9.2f   Average executions per line") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(__stream,pcVar6,dVar13);" (call_expression "fprintf(__stream,pcVar6,dVar13)" (identifier "fprintf") (argument_list "(__stream,pcVar6,dVar13)" (( "(") (identifier "__stream") (, ",") (identifier "pcVar6") (, ",") (identifier "dVar13") () ")"))) (; ";")) (if_statement "if (stdout != __stream) {\n          fclose(__stream);\n        }" (if "if") (parenthesized_expression "(stdout != __stream)" (( "(") (binary_expression "stdout != __stream" (identifier "stdout") (!= "!=") (identifier "__stream")) () ")")) (compound_statement "{\n          fclose(__stream);\n        }" ({ "{") (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" (identifier "fclose") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")"))) (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "plVar8 = (long *)*plVar8;" (assignment_expression "plVar8 = (long *)*plVar8" (identifier "plVar8") (= "=") (cast_expression "(long *)*plVar8" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar8" (* "*") (identifier "plVar8")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";"))) (} "}")))

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */
/* WARNING: Unknown calling convention -- yet parameter storage is locked */

void function_1(void)

{
  int *piVar1;
  type_1 **ppSVar2;
  type_2 *puVar3;
  int var_20;
  type_2 var_8;
  type_3 **ppsVar6;
  void **ppvVar7;
  type_4 *var_3;
  type_5 *var_15;
  char *pcVar9;
  void *var_21;
  long *plVar11;
  type_1 *var_12;
  type_4 *var_4;
  long *var_9;
  long *var_11;
  long var_10;
  type_6 bVar17;
  double dVar18;
  
  bVar17 = 0;
  var_4 = symtab.base;
  if (symtab.base < symtab.limit) {
    do {
      while (((var_4->file != (type_1 *)0x0 && (var_4->file->num_lines < var_4->line_num)
              ) && ((var_3 = var_1(var_2 + 8,var_4->addr), var_3 != (type_4 *)0x0 ||
                    ((var_2[8].len == 0 &&
                     (var_3 = var_1(var_2 + 9,var_4->addr), var_3 == (type_4 *)0x0))))))) {
        var_3 = symtab.limit;
        piVar1 = &var_4->line_num;
        ppSVar2 = &var_4->file;
        var_4 = var_4 + 1;
        (*ppSVar2)->num_lines = *piVar1;
        if (var_3 <= var_4) goto LAB_00103bb0;
      }
      var_4 = var_4 + 1;
    } while (var_4 < symtab.limit);
LAB_00103bb0:
    var_12 = var_5;
    if (var_5 != (type_1 *)0x0) goto LAB_00103bc0;
    var_4 = symtab.base;
    if (symtab.limit <= symtab.base) {
      return;
    }
  }
  else {
    var_12 = var_5;
    if (var_5 == (type_1 *)0x0) {
      return;
    }
LAB_00103bc0:
    do {
      if (0 < var_12->num_lines) {
        ppvVar7 = (void **)var_6((long)var_12->num_lines << 3);
        var_12->line = ppvVar7;
        var_7(ppvVar7,0,(long)var_12->num_lines << 3);
      }
      ppsVar6 = &var_12->next;
      var_12 = *ppsVar6;
    } while (*ppsVar6 != (type_3 *)0x0);
    var_4 = symtab.base;
    var_12 = var_5;
    if (symtab.limit <= symtab.base) goto joined_r0x00103c9a;
  }
LAB_00103c20:
  do {
    if (((var_4->file != (type_1 *)0x0) && (var_4->file->num_lines != 0)) &&
       ((var_3 = var_1(var_2 + 8,var_4->addr), var_3 != (type_4 *)0x0 ||
        ((var_2[8].len == 0 && (var_3 = var_1(var_2 + 9,var_4->addr), var_3 == (type_4 *)0x0))))
       )) {
      var_12 = var_4->file;
      var_8 = var_4->ncalls;
      var_20 = var_4->line_num;
      puVar3 = &var_12->ncalls;
      *puVar3 = *puVar3 + var_8;
      ppvVar7 = var_12->line + (long)var_20 + -1;
      var_9 = (long *)*ppvVar7;
      if (var_9 == (long *)0x0) {
        *ppvVar7 = var_4;
      }
      else {
        if (*var_9 == 0) {
          var_9[5] = var_9[5] + var_8;
          var_4 = var_4 + 1;
          var_12 = var_5;
          if (symtab.limit <= var_4) break;
          goto LAB_00103c20;
        }
        plVar11 = (long *)var_6(0x158);
        var_11 = plVar11;
        for (var_10 = 0x2b; var_10 != 0; var_10 = var_10 + -1) {
          *var_11 = *var_9;
          var_9 = var_9 + (type_2)bVar17 * -2 + 1;
          var_11 = var_11 + (type_2)bVar17 * -2 + 1;
        }
        *plVar11 = 0;
        plVar11[5] = plVar11[5] + var_4->ncalls;
        var_4->file->line[(long)var_4->line_num + -1] = plVar11;
      }
    }
    var_4 = var_4 + 1;
    var_12 = var_5;
  } while (var_4 < symtab.limit);
joined_r0x00103c9a:
  do {
    if (var_12 == (type_1 *)0x0) {
      return;
    }
    if ((var_12->num_lines != 0) && ((var_13 == 0 || (var_12->ncalls != 0)))) {
      num_lines_executed = 0;
      var_23 = 0;
      var_15 = (type_5 *)var_14(var_12,0x10,annotate_with_count,var_12);
      var_20 = var_16;
      if (var_15 != (type_5 *)0x0) {
        if (var_16 < 1) {
          ppvVar7 = var_12->line;
        }
        else {
          pcVar9 = (char *)var_17("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);
          var_18(var_15,pcVar9,(type_2)(type_7)var_20);
          var_19(var_12->line,(long)var_12->num_lines,8,cmp_ncalls);
          var_20 = var_16;
          if (var_12->num_lines <= var_16) {
            var_20 = var_12->num_lines;
          }
          ppvVar7 = var_12->line;
          if (((0 < var_20) && (var_21 = *ppvVar7, var_21 != (void *)0x0)) &&
             (*(long *)((long)var_21 + 0x28) != 0)) {
            var_10 = 8;
            do {
              var_18(var_15,"%9d %10lu\n",(type_2)*(type_7 *)((long)var_21 + 0x20));
              ppvVar7 = var_12->line;
              if ((var_10 == (type_2)(var_20 - 1) * 8 + 8) ||
                 (var_21 = *(void **)((long)ppvVar7 + var_10), var_21 == (void *)0x0)) break;
              var_10 = var_10 + 8;
            } while (*(long *)((long)var_21 + 0x28) != 0);
          }
        }
        var_22(ppvVar7);
        var_12->line = (void **)0x0;
        pcVar9 = (char *)var_17("gprof","\nExecution Summary:\n\n",5);
        var_18(var_15,pcVar9);
        var_10 = var_23;
        pcVar9 = (char *)var_17("gprof","%9ld   Executable lines in this file\n",5);
        var_18(var_15,pcVar9,var_10);
        var_10 = num_lines_executed;
        pcVar9 = (char *)var_17("gprof","%9ld   Lines executed\n",5);
        var_18(var_15,pcVar9,var_10);
        dVar18 = var_24;
        if (var_23 != 0) {
          dVar18 = ((double)num_lines_executed * var_24) / (double)var_23;
        }
        pcVar9 = (char *)var_17("gprof","%9.2f   Percent of the file executed\n",5);
        var_18(var_15,pcVar9,dVar18);
        var_8 = var_12->ncalls;
        pcVar9 = (char *)var_17("gprof","\n%9lu   Total number of line executions\n",5);
        var_18(var_15,pcVar9,var_8);
        dVar18 = 0.0;
        if (var_23 != 0) {
          dVar18 = (double)var_12->ncalls / (double)var_23;
        }
        pcVar9 = (char *)var_17("gprof","%9.2f   Average executions per line\n",5);
        var_18(var_15,pcVar9,dVar18);
        if (var_25 != var_15) {
          var_26(var_15);
        }
      }
    }
    var_12 = var_12->next;
  } while( true );
}


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

/* WARNING: Globals starting with '_' overlap smaller symbols at the same address */

void MASKED(void)

{
  undefined8 *puVar1;
  int iVar2;
  uint uVar3;
  undefined8 *puVar4;
  void *__s;
  long lVar5;
  FILE *__stream;
  char *pcVar6;
  long *plVar7;
  long *plVar8;
  undefined8 *puVar9;
  long *plVar10;
  long lVar11;
  byte bVar12;
  double dVar13;
  
  bVar12 = 0;
  puVar9 = DAT_00119b38;
  if (DAT_00119b38 < DAT_00119b40) {
    do {
      while (((puVar9[3] != 0 && (*(int *)(puVar9[3] + 0x18) < *(int *)(puVar9 + 4))) &&
             ((lVar5 = FUN_0010c540(&DAT_00119c20), lVar5 != 0 ||
              ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38), lVar5 == 0))))))) {
        puVar4 = DAT_00119b40;
        puVar1 = puVar9 + 4;
        plVar8 = puVar9 + 3;
        puVar9 = puVar9 + 0x2b;
        *(undefined4 *)(*plVar8 + 0x18) = *(undefined4 *)puVar1;
        if (puVar4 <= puVar9) goto LAB_00103bb0;
      }
      puVar9 = puVar9 + 0x2b;
    } while (puVar9 < DAT_00119b40);
LAB_00103bb0:
    plVar8 = DAT_00119610;
    if (DAT_00119610 != (long *)0x0) goto LAB_00103bc0;
    puVar9 = DAT_00119b38;
    if (DAT_00119b40 <= DAT_00119b38) {
      return;
    }
  }
  else {
    plVar8 = DAT_00119610;
    if (DAT_00119610 == (long *)0x0) {
      return;
    }
LAB_00103bc0:
    do {
      if (0 < (int)plVar8[3]) {
        __s = (void *)xmalloc((long)(int)plVar8[3] << 3);
        plVar8[4] = (long)__s;
        memset(__s,0,(long)(int)plVar8[3] << 3);
      }
      plVar8 = (long *)*plVar8;
    } while (plVar8 != (long *)0x0);
    puVar9 = DAT_00119b38;
    plVar8 = DAT_00119610;
    if (DAT_00119b40 <= DAT_00119b38) goto joined_r0x00103c9a;
  }
LAB_00103c20:
  do {
    if (((puVar9[3] != 0) && (*(int *)(puVar9[3] + 0x18) != 0)) &&
       ((lVar5 = FUN_0010c540(&DAT_00119c20,*puVar9), lVar5 != 0 ||
        ((DAT_00119c20 == 0 && (lVar5 = FUN_0010c540(&DAT_00119c38,*puVar9), lVar5 == 0)))))) {
      lVar5 = puVar9[3];
      lVar11 = puVar9[5];
      iVar2 = *(int *)(puVar9 + 4);
      plVar8 = (long *)(lVar5 + 0x10);
      *plVar8 = *plVar8 + lVar11;
      puVar1 = (undefined8 *)(*(long *)(lVar5 + 0x20) + -8 + (long)iVar2 * 8);
      plVar8 = (long *)*puVar1;
      if (plVar8 == (long *)0x0) {
        *puVar1 = puVar9;
      }
      else {
        if (*plVar8 == 0) {
          plVar8[5] = plVar8[5] + lVar11;
          puVar9 = puVar9 + 0x2b;
          plVar8 = DAT_00119610;
          if (DAT_00119b40 <= puVar9) break;
          goto LAB_00103c20;
        }
        plVar7 = (long *)xmalloc(0x158);
        plVar10 = plVar7;
        for (lVar5 = 0x2b; lVar5 != 0; lVar5 = lVar5 + -1) {
          *plVar10 = *plVar8;
          plVar8 = plVar8 + (ulong)bVar12 * -2 + 1;
          plVar10 = plVar10 + (ulong)bVar12 * -2 + 1;
        }
        *plVar7 = 0;
        plVar7[5] = plVar7[5] + puVar9[5];
        *(long **)(*(long *)(puVar9[3] + 0x20) + -8 + (long)*(int *)(puVar9 + 4) * 8) = plVar7;
      }
    }
    puVar9 = puVar9 + 0x2b;
    plVar8 = DAT_00119610;
  } while (puVar9 < DAT_00119b40);
joined_r0x00103c9a:
  do {
    if (plVar8 == (long *)0x0) {
      return;
    }
    if (((int)plVar8[3] != 0) && ((DAT_001182e0 == 0 || (plVar8[2] != 0)))) {
      DAT_00118968 = 0;
      DAT_00118970 = 0;
      __stream = (FILE *)FUN_0010bb80(plVar8,0x10,FUN_001030f0,plVar8);
      uVar3 = DAT_00118270;
      if (__stream != (FILE *)0x0) {
        if ((int)DAT_00118270 < 1) {
          plVar10 = (long *)plVar8[4];
        }
        else {
          pcVar6 = (char *)dcgettext("gprof","\n\nTop %d Lines:\n\n     Line      Count\n\n",5);
          fprintf(__stream,pcVar6,(ulong)uVar3);
          qsort((void *)plVar8[4],(long)(int)plVar8[3],8,FUN_00103040);
          uVar3 = DAT_00118270;
          if ((int)plVar8[3] <= (int)DAT_00118270) {
            uVar3 = *(uint *)(plVar8 + 3);
          }
          plVar10 = (long *)plVar8[4];
          if (((0 < (int)uVar3) && (lVar5 = *plVar10, lVar5 != 0)) && (*(long *)(lVar5 + 0x28) != 0)
             ) {
            lVar11 = 8;
            do {
              fprintf(__stream,"%9d %10lu\n",(ulong)*(uint *)(lVar5 + 0x20));
              plVar10 = (long *)plVar8[4];
              if ((lVar11 == (ulong)(uVar3 - 1) * 8 + 8) ||
                 (lVar5 = *(long *)((long)plVar10 + lVar11), lVar5 == 0)) break;
              lVar11 = lVar11 + 8;
            } while (*(long *)(lVar5 + 0x28) != 0);
          }
        }
        free(plVar10);
        plVar8[4] = 0;
        pcVar6 = (char *)dcgettext("gprof","\nExecution Summary:\n\n",5);
        fprintf(__stream,pcVar6);
        lVar5 = DAT_00118970;
        pcVar6 = (char *)dcgettext("gprof","%9ld   Executable lines in this file\n",5);
        fprintf(__stream,pcVar6,lVar5);
        lVar5 = DAT_00118968;
        pcVar6 = (char *)dcgettext("gprof","%9ld   Lines executed\n",5);
        fprintf(__stream,pcVar6,lVar5);
        dVar13 = _DAT_001101e8;
        if (DAT_00118970 != 0) {
          dVar13 = ((double)DAT_00118968 * _DAT_001101e8) / (double)DAT_00118970;
        }
        pcVar6 = (char *)dcgettext("gprof","%9.2f   Percent of the file executed\n",5);
        fprintf(__stream,pcVar6,dVar13);
        lVar5 = plVar8[2];
        pcVar6 = (char *)dcgettext("gprof","\n%9lu   Total number of line executions\n",5);
        fprintf(__stream,pcVar6,lVar5);
        dVar13 = 0.0;
        if (DAT_00118970 != 0) {
          dVar13 = (double)(ulong)plVar8[2] / (double)DAT_00118970;
        }
        pcVar6 = (char *)dcgettext("gprof","%9.2f   Average executions per line\n",5);
        fprintf(__stream,pcVar6,dVar13);
        if (stdout != __stream) {
          fclose(__stream);
        }
      }
    }
    plVar8 = (long *)*plVar8;
  } while( true );
}

