
FILE * annotate_source(Source_File *sf,uint max_width,_func_void_char_ptr_uint_int_void_ptr *annote,
                      void *arg)

{
  char cVar1;
  FILE *__stream;
  char *pcVar2;
  char *pcVar3;
  FILE *__stream_00;
  size_t sVar4;
  int *piVar5;
  char *__format;
  search_list_elem *psVar6;
  int iVar7;
  bool bVar8;
  char fname [1024];
  char buf [8192];
  
  psVar6 = src_search_list.head;
  pcVar2 = sf->name;
  strcpy(fname,pcVar2);
  if (*pcVar2 == '/') {
    psVar6 = (search_list_elem *)0x0;
  }
  pcVar2 = (char *)0x0;
  do {
    if ((debug_level._1_1_ & 0x20) != 0) {
      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);
    }
    __stream = fopen(fname,"r");
    if (__stream != (FILE *)0x0) {
      __stream_00 = stdout;
      if (create_annotation_files != 0) {
        pcVar2 = sf->name;
        pcVar3 = strrchr(pcVar2,0x2f);
        if (pcVar3 != (char *)0x0) {
          pcVar2 = pcVar3 + 1;
        }
        pcVar2 = stpcpy(fname,pcVar2);
        builtin_strncpy(pcVar2,"-ann",5);
        __stream_00 = fopen(fname,"w");
        if (__stream_00 == (FILE *)0x0) {
          perror(fname);
          return (FILE *)0x0;
        }
        if (stdout != __stream_00) goto LAB_0010bd0e;
      }
      if (annotate_source::first_file == 0) {
        fputc(10,__stream_00);
      }
      else {
        annotate_source::first_file = 0;
      }
      if (first_output == 0) {
        fwrite(&DAT_00111f89,1,2,__stream_00);
      }
      else {
        first_output = 0;
      }
      pcVar2 = sf->name;
      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);
      fprintf(__stream_00,pcVar3,pcVar2);
LAB_0010bd0e:
      bVar8 = true;
      iVar7 = 1;
      pcVar2 = (char *)xmalloc(max_width + 1);
      while( true ) {
        sVar4 = fread(buf,1,0x2000,__stream);
        if ((int)sVar4 < 1) break;
        pcVar3 = buf;
        do {
          if (bVar8) {
            (*annote)(pcVar2,max_width,iVar7,arg);
            fputs(pcVar2,__stream_00);
            iVar7 = iVar7 + 1;
          }
          cVar1 = *pcVar3;
          bVar8 = cVar1 == '\n';
          pcVar3 = pcVar3 + 1;
          fputc((int)cVar1,__stream_00);
        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);
      }
      free(pcVar2);
      fclose(__stream);
      return (FILE *)__stream_00;
    }
    if (pcVar2 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {
      pcVar3 = sf->name;
      pcVar2 = strrchr(pcVar3,0x2f);
      if (pcVar2 == (char *)0x0) goto LAB_0010bdf8;
      pcVar2 = pcVar2 + 1;
      psVar6 = src_search_list.head;
    }
    if (psVar6 == (search_list_elem *)0x0) {
      pcVar3 = sf->name;
LAB_0010bdf8:
      piVar5 = __errno_location();
      pcVar2 = whoami;
      if (*piVar5 == 2) {
        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);
        fprintf(stderr,__format,pcVar2,pcVar3);
      }
      else {
        perror(pcVar3);
      }
      return (FILE *)0x0;
    }
    pcVar3 = stpcpy(fname,psVar6->path);
    pcVar3[0] = '/';
    pcVar3[1] = '\0';
    if (pcVar2 == (char *)0x0) {
      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name);
    }
    else {
      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);
    }
    psVar6 = psVar6->next;
  } while( true );
}



FILE * FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)

{
  char cVar1;
  undefined8 uVar2;
  FILE *__stream;
  char *pcVar3;
  char *pcVar4;
  FILE *__stream_00;
  size_t sVar5;
  int *piVar6;
  undefined8 *puVar7;
  int iVar8;
  bool bVar9;
  char local_2438;
  char acStack_2437 [1023];
  char local_2038;
  char local_2037 [8199];
  
  puVar7 = DAT_00119620;
  pcVar3 = *(char **)(param_1 + 8);
  strcpy(&local_2438,pcVar3);
  if (*pcVar3 == '/') {
    puVar7 = (undefined8 *)0x0;
  }
  pcVar3 = (char *)0x0;
  do {
    if ((DAT_001195e4._1_1_ & 0x20) != 0) {
      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),
             &local_2438);
    }
    __stream = fopen(&local_2438,"r");
    if (__stream != (FILE *)0x0) {
      __stream_00 = stdout;
      if (DAT_00119630 != 0) {
        pcVar3 = *(char **)(param_1 + 8);
        pcVar4 = strrchr(pcVar3,0x2f);
        if (pcVar4 != (char *)0x0) {
          pcVar3 = pcVar4 + 1;
        }
        pcVar3 = stpcpy(&local_2438,pcVar3);
        builtin_strncpy(pcVar3,"-ann",5);
        __stream_00 = fopen(&local_2438,"w");
        if (__stream_00 == (FILE *)0x0) {
          perror(&local_2438);
          return (FILE *)0x0;
        }
        if (stdout != __stream_00) goto LAB_0010bd0e;
      }
      if (DAT_001188b0 == 0) {
        fputc(10,__stream_00);
      }
      else {
        DAT_001188b0 = 0;
      }
      if (DAT_001182d8 == 0) {
        fwrite(&DAT_00111f89,1,2,__stream_00);
      }
      else {
        DAT_001182d8 = 0;
      }
      uVar2 = *(undefined8 *)(param_1 + 8);
      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);
      fprintf(__stream_00,pcVar3,uVar2);
LAB_0010bd0e:
      bVar9 = true;
      iVar8 = 1;
      pcVar3 = (char *)xmalloc(param_2 + 1);
      while( true ) {
        sVar5 = fread(&local_2038,1,0x2000,__stream);
        if ((int)sVar5 < 1) break;
        pcVar4 = &local_2038;
        do {
          if (bVar9) {
            (*param_3)(pcVar3,param_2,iVar8,param_4);
            fputs(pcVar3,__stream_00);
            iVar8 = iVar8 + 1;
          }
          cVar1 = *pcVar4;
          bVar9 = cVar1 == '\n';
          pcVar4 = pcVar4 + 1;
          fputc((int)cVar1,__stream_00);
        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));
      }
      free(pcVar3);
      fclose(__stream);
      return __stream_00;
    }
    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {
      pcVar4 = *(char **)(param_1 + 8);
      pcVar3 = strrchr(pcVar4,0x2f);
      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;
      pcVar3 = pcVar3 + 1;
      puVar7 = DAT_00119620;
    }
    if (puVar7 == (undefined8 *)0x0) {
      pcVar4 = *(char **)(param_1 + 8);
LAB_0010bdf8:
      piVar6 = __errno_location();
      uVar2 = DAT_00119b10;
      if (*piVar6 == 2) {
        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);
        fprintf(stderr,pcVar3,uVar2,pcVar4);
      }
      else {
        perror(pcVar4);
      }
      return (FILE *)0x0;
    }
    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));
    pcVar4[0] = '/';
    pcVar4[1] = '\0';
    if (pcVar3 == (char *)0x0) {
      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));
    }
    else {
      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);
    }
    puVar7 = (undefined8 *)*puVar7;
  } while( true );
}


PUSH R15
PUSH R14
LEA R14,[0x111f40]
PUSH R13
MOV R13,RDI
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x2438
MOV RBP,qword ptr [RDI + 0x8]
MOV RBX,qword ptr [0x00119620]
LEA R12,[RSP + 0x30]
MOV dword ptr [RSP + 0x4],ESI
MOV RDI,R12
MOV RSI,RBP
MOV qword ptr [RSP + 0x8],RDX
MOV qword ptr [RSP + 0x10],RCX
CALL 0x001020b0
CMP byte ptr [RBP],0x2f
MOV EAX,0x0
CMOVZ RBX,RAX
XOR EBP,EBP
JMP 0x0010bc62
LEA RSI,[0x1123a1]
MOV RDI,R12
CALL 0x001023e0
MOV qword ptr [RSP + 0x18],RAX
TEST RAX,RAX
JNZ 0x0010bca0
MOV RAX,RBP
OR RAX,RBX
JNZ 0x0010bc2a
MOV RBX,qword ptr [R13 + 0x8]
MOV ESI,0x2f
MOV RDI,RBX
CALL 0x001021f0
TEST RAX,RAX
JZ 0x0010bdf8
MOV RBX,qword ptr [0x00119620]
LEA RBP,[RAX + 0x1]
TEST RBX,RBX
JZ 0x0010bdef
LEA RSI,[RBX + 0x8]
MOV RDI,R12
CALL 0x00102160
MOV ESI,0x2f
MOV RDX,RAX
MOV word ptr [RAX],SI
SUB RDX,R12
TEST RBP,RBP
JZ 0x0010bc88
LEA RDI,[R12 + RDX*0x1 + 0x1]
MOV RSI,RBP
CALL 0x001020b0
MOV RBX,qword ptr [RBX]
TEST byte ptr [0x001195e5],0x20
JZ 0x0010bbe0
MOV RSI,qword ptr [R13 + 0x8]
MOV RDX,R12
MOV RDI,R14
XOR EAX,EAX
CALL 0x001021c0
JMP 0x0010bbe0
MOV RSI,qword ptr [R13 + 0x8]
LEA RDI,[R12 + RDX*0x1 + 0x1]
CALL 0x001020b0
JMP 0x0010bc5f
MOV ECX,dword ptr [0x00119630]
MOV RBP,qword ptr [0x00118900]
TEST ECX,ECX
JZ 0x0010be0e
MOV RBX,qword ptr [R13 + 0x8]
MOV ESI,0x2f
MOV RDI,RBX
CALL 0x001021f0
MOV RDI,R12
LEA RDX,[RAX + 0x1]
TEST RAX,RAX
CMOVNZ RBX,RDX
MOV RSI,RBX
CALL 0x00102160
LEA RSI,[0x111168]
MOV RDI,R12
MOV dword ptr [RAX],0x6e6e612d
MOV byte ptr [RAX + 0x4],0x0
CALL 0x001023e0
MOV RBP,RAX
TEST RAX,RAX
JZ 0x0010bedc
CMP qword ptr [0x00118900],RAX
JZ 0x0010be0e
MOV EAX,dword ptr [RSP + 0x4]
MOV EBX,0x1
MOV R12D,0x1
LEA EDI,[RAX + 0x1]
CALL 0x00102240
MOV R14,RAX
LEA RAX,[RSP + 0x430]
MOV qword ptr [RSP + 0x20],RAX
LEA RAX,[RSP + 0x431]
MOV qword ptr [RSP + 0x28],RAX
NOP word ptr [RAX + RAX*0x1]
MOV RCX,qword ptr [RSP + 0x18]
MOV RDI,qword ptr [RSP + 0x20]
MOV EDX,0x2000
MOV ESI,0x1
CALL 0x001020f0
TEST EAX,EAX
JLE 0x0010bdc8
MOV R15,qword ptr [RSP + 0x20]
LEA R13D,[RAX + -0x1]
ADD R13,qword ptr [RSP + 0x28]
NOP dword ptr [RAX + RAX*0x1]
TEST EBX,EBX
JZ 0x0010bda1
MOV EDX,R12D
MOV RCX,qword ptr [RSP + 0x10]
MOV ESI,dword ptr [RSP + 0x4]
MOV RDI,R14
MOV RAX,qword ptr [RSP + 0x8]
ADD R12D,0x1
CALL RAX
MOV RSI,RBP
MOV RDI,R14
CALL 0x00102200
MOVSX EDI,byte ptr [R15]
XOR EBX,EBX
MOV RSI,RBP
CMP DIL,0xa
SETZ BL
ADD R15,0x1
CALL 0x00102280
CMP R15,R13
JNZ 0x0010bd78
JMP 0x0010bd48
MOV RDI,R14
CALL 0x00102050
MOV RDI,qword ptr [RSP + 0x18]
CALL 0x00102140
ADD RSP,0x2438
MOV RAX,RBP
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RBX,qword ptr [R13 + 0x8]
NOP dword ptr [RAX + RAX*0x1]
CALL 0x00102080
CMP dword ptr [RAX],0x2
JZ 0x0010be6f
MOV RDI,RBX
XOR EBP,EBP
CALL 0x00102400
JMP 0x0010bdda
MOV EDX,dword ptr [0x001188b0]
TEST EDX,EDX
JZ 0x0010beac
MOV dword ptr [0x001188b0],0x0
MOV EAX,dword ptr [0x001182d8]
TEST EAX,EAX
JZ 0x0010bebe
MOV dword ptr [0x001182d8],0x0
MOV RBX,qword ptr [R13 + 0x8]
MOV EDX,0x5
LEA RSI,[0x111f8c]
LEA RDI,[0x110008]
CALL 0x00102170
MOV RDI,RBP
MOV RSI,RAX
MOV RDX,RBX
XOR EAX,EAX
CALL 0x001022f0
JMP 0x0010bd0e
MOV RBP,qword ptr [0x00119b10]
MOV EDX,0x5
LEA RSI,[0x111f6e]
LEA RDI,[0x110008]
CALL 0x00102170
MOV RDI,qword ptr [0x00118940]
MOV RCX,RBX
MOV RDX,RBP
MOV RSI,RAX
XOR EAX,EAX
XOR EBP,EBP
CALL 0x001022f0
JMP 0x0010bdda
MOV RSI,RBP
MOV EDI,0xa
CALL 0x00102280
JMP 0x0010be26
MOV RCX,RBP
MOV EDX,0x2
MOV ESI,0x1
LEA RDI,[0x111f89]
CALL 0x00102460
JMP 0x0010be3e
MOV RDI,R12
CALL 0x00102400
JMP 0x0010bdda
(translation_unit "FILE * FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  char *pcVar4;\n  FILE *__stream_00;\n  size_t sVar5;\n  int *piVar6;\n  undefined8 *puVar7;\n  int iVar8;\n  bool bVar9;\n  char local_2438;\n  char acStack_2437 [1023];\n  char local_2038;\n  char local_2037 [8199];\n  \n  puVar7 = DAT_00119620;\n  pcVar3 = *(char **)(param_1 + 8);\n  strcpy(&local_2438,pcVar3);\n  if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }\n  pcVar3 = (char *)0x0;\n  do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );\n}\n\n" (function_definition "FILE * FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  char *pcVar4;\n  FILE *__stream_00;\n  size_t sVar5;\n  int *piVar6;\n  undefined8 *puVar7;\n  int iVar8;\n  bool bVar9;\n  char local_2438;\n  char acStack_2437 [1023];\n  char local_2038;\n  char local_2037 [8199];\n  \n  puVar7 = DAT_00119620;\n  pcVar3 = *(char **)(param_1 + 8);\n  strcpy(&local_2438,pcVar3);\n  if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }\n  pcVar3 = (char *)0x0;\n  do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );\n}" type_identifier (pointer_declarator "* FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)" * (function_declarator "FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,int param_2,code *param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "code *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 param_4" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  undefined8 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  char *pcVar4;\n  FILE *__stream_00;\n  size_t sVar5;\n  int *piVar6;\n  undefined8 *puVar7;\n  int iVar8;\n  bool bVar9;\n  char local_2438;\n  char acStack_2437 [1023];\n  char local_2038;\n  char local_2037 [8199];\n  \n  puVar7 = DAT_00119620;\n  pcVar3 = *(char **)(param_1 + 8);\n  strcpy(&local_2438,pcVar3);\n  if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }\n  pcVar3 = (char *)0x0;\n  do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "FILE *__stream_00;" type_identifier (pointer_declarator "*__stream_00" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "char local_2438;" primitive_type identifier ;) (declaration "char acStack_2437 [1023];" primitive_type (array_declarator "acStack_2437 [1023]" identifier [ number_literal ]) ;) (declaration "char local_2038;" primitive_type identifier ;) (declaration "char local_2037 [8199];" primitive_type (array_declarator "local_2037 [8199]" identifier [ number_literal ]) ;) (expression_statement "puVar7 = DAT_00119620;" (assignment_expression "puVar7 = DAT_00119620" identifier = identifier) ;) (expression_statement "pcVar3 = *(char **)(param_1 + 8);" (assignment_expression "pcVar3 = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "strcpy(&local_2438,pcVar3);" (call_expression "strcpy(&local_2438,pcVar3)" identifier (argument_list "(&local_2438,pcVar3)" ( (pointer_expression "&local_2438" & identifier) , identifier ))) ;) (if_statement "if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }" if (parenthesized_expression "(*pcVar3 == '/')" ( (binary_expression "*pcVar3 == '/'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    puVar7 = (undefined8 *)0x0;\n  }" { (expression_statement "puVar7 = (undefined8 *)0x0;" (assignment_expression "puVar7 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );" do (compound_statement "{\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  }" { (if_statement "if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }" if (parenthesized_expression "((DAT_001195e4._1_1_ & 0x20) != 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 0x20) != 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 0x20)" ( (binary_expression "DAT_001195e4._1_1_ & 0x20" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }" { (expression_statement "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);" (call_expression "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438)" identifier (argument_list "("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438)" ( (string_literal ""[annotate_source]: looking for %s, trying %s\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "&local_2438" & identifier) ))) ;) })) (expression_statement "__stream = fopen(&local_2438,"r");" (assignment_expression "__stream = fopen(&local_2438,"r")" identifier = (call_expression "fopen(&local_2438,"r")" identifier (argument_list "(&local_2438,"r")" ( (pointer_expression "&local_2438" & identifier) , (string_literal ""r"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\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      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }" { (expression_statement "__stream_00 = stdout;" (assignment_expression "__stream_00 = stdout" identifier = identifier) ;) (if_statement "if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }" if (parenthesized_expression "(DAT_00119630 != 0)" ( (binary_expression "DAT_00119630 != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }" { (expression_statement "pcVar3 = *(char **)(param_1 + 8);" (assignment_expression "pcVar3 = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strrchr(pcVar3,0x2f);" (assignment_expression "pcVar4 = strrchr(pcVar3,0x2f)" identifier = (call_expression "strrchr(pcVar3,0x2f)" identifier (argument_list "(pcVar3,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar3 = pcVar4 + 1;\n        }" { (expression_statement "pcVar3 = pcVar4 + 1;" (assignment_expression "pcVar3 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar3 = stpcpy(&local_2438,pcVar3);" (assignment_expression "pcVar3 = stpcpy(&local_2438,pcVar3)" identifier = (call_expression "stpcpy(&local_2438,pcVar3)" identifier (argument_list "(&local_2438,pcVar3)" ( (pointer_expression "&local_2438" & identifier) , identifier )))) ;) (expression_statement "builtin_strncpy(pcVar3,"-ann",5);" (call_expression "builtin_strncpy(pcVar3,"-ann",5)" identifier (argument_list "(pcVar3,"-ann",5)" ( identifier , (string_literal ""-ann"" " string_content ") , number_literal ))) ;) (expression_statement "__stream_00 = fopen(&local_2438,"w");" (assignment_expression "__stream_00 = fopen(&local_2438,"w")" identifier = (call_expression "fopen(&local_2438,"w")" identifier (argument_list "(&local_2438,"w")" ( (pointer_expression "&local_2438" & identifier) , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }" if (parenthesized_expression "(__stream_00 == (FILE *)0x0)" ( (binary_expression "__stream_00 == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }" { (expression_statement "perror(&local_2438);" (call_expression "perror(&local_2438)" identifier (argument_list "(&local_2438)" ( (pointer_expression "&local_2438" & identifier) ))) ;) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (stdout != __stream_00) goto LAB_0010bd0e;" if (parenthesized_expression "(stdout != __stream_00)" ( (binary_expression "stdout != __stream_00" identifier != identifier) )) (goto_statement "goto LAB_0010bd0e;" goto statement_identifier ;)) })) (if_statement "if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }" if (parenthesized_expression "(DAT_001188b0 == 0)" ( (binary_expression "DAT_001188b0 == 0" identifier == number_literal) )) (compound_statement "{\n        fputc(10,__stream_00);\n      }" { (expression_statement "fputc(10,__stream_00);" (call_expression "fputc(10,__stream_00)" identifier (argument_list "(10,__stream_00)" ( number_literal , identifier ))) ;) }) (else_clause "else {\n        DAT_001188b0 = 0;\n      }" else (compound_statement "{\n        DAT_001188b0 = 0;\n      }" { (expression_statement "DAT_001188b0 = 0;" (assignment_expression "DAT_001188b0 = 0" identifier = number_literal) ;) }))) (if_statement "if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }" if (parenthesized_expression "(DAT_001182d8 == 0)" ( (binary_expression "DAT_001182d8 == 0" identifier == number_literal) )) (compound_statement "{\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }" { (expression_statement "fwrite(&DAT_00111f89,1,2,__stream_00);" (call_expression "fwrite(&DAT_00111f89,1,2,__stream_00)" identifier (argument_list "(&DAT_00111f89,1,2,__stream_00)" ( (pointer_expression "&DAT_00111f89" & identifier) , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n        DAT_001182d8 = 0;\n      }" else (compound_statement "{\n        DAT_001182d8 = 0;\n      }" { (expression_statement "DAT_001182d8 = 0;" (assignment_expression "DAT_001182d8 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar2 = *(undefined8 *)(param_1 + 8);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);" (assignment_expression "pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","*** File %s:\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","*** File %s:\n",5)" identifier (argument_list "("gprof","*** File %s:\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""*** File %s:\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream_00,pcVar3,uVar2);" (call_expression "fprintf(__stream_00,pcVar3,uVar2)" identifier (argument_list "(__stream_00,pcVar3,uVar2)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0010bd0e:\n      bVar9 = true;" statement_identifier : (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" identifier = true) ;)) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "pcVar3 = (char *)xmalloc(param_2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(param_2 + 1)" identifier = (cast_expression "(char *)xmalloc(param_2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(param_2 + 1)" identifier (argument_list "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }" { (expression_statement "sVar5 = fread(&local_2038,1,0x2000,__stream);" (assignment_expression "sVar5 = fread(&local_2038,1,0x2000,__stream)" identifier = (call_expression "fread(&local_2038,1,0x2000,__stream)" identifier (argument_list "(&local_2038,1,0x2000,__stream)" ( (pointer_expression "&local_2038" & identifier) , number_literal , number_literal , identifier )))) ;) (if_statement "if ((int)sVar5 < 1) break;" if (parenthesized_expression "((int)sVar5 < 1)" ( (binary_expression "(int)sVar5 < 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar4 = &local_2038;" (assignment_expression "pcVar4 = &local_2038" identifier = (pointer_expression "&local_2038" & identifier)) ;) (do_statement "do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));" do (compound_statement "{\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        }" { (if_statement "if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }" { (expression_statement "(*param_3)(pcVar3,param_2,iVar8,param_4);" (call_expression "(*param_3)(pcVar3,param_2,iVar8,param_4)" (parenthesized_expression "(*param_3)" ( (pointer_expression "*param_3" * identifier) )) (argument_list "(pcVar3,param_2,iVar8,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "fputs(pcVar3,__stream_00);" (call_expression "fputs(pcVar3,__stream_00)" identifier (argument_list "(pcVar3,__stream_00)" ( identifier , identifier ))) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "bVar9 = cVar1 == '\n';" (assignment_expression "bVar9 = cVar1 == '\n'" identifier = (binary_expression "cVar1 == '\n'" identifier == (char_literal "'\n'" ' escape_sequence '))) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "fputc((int)cVar1,__stream_00);" (call_expression "fputc((int)cVar1,__stream_00)" identifier (argument_list "((int)cVar1,__stream_00)" ( (cast_expression "(int)cVar1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) }) while (parenthesized_expression "(pcVar4 != local_2037 + ((int)sVar5 - 1))" ( (binary_expression "pcVar4 != local_2037 + ((int)sVar5 - 1)" identifier != (binary_expression "local_2037 + ((int)sVar5 - 1)" identifier + (parenthesized_expression "((int)sVar5 - 1)" ( (binary_expression "(int)sVar5 - 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) )) ;) })) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) (return_statement "return __stream_00;" return identifier ;) })) (if_statement "if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0" (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "puVar7 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }" { (expression_statement "pcVar4 = *(char **)(param_1 + 8);" (assignment_expression "pcVar4 = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strrchr(pcVar4,0x2f);" (assignment_expression "pcVar3 = strrchr(pcVar4,0x2f)" identifier = (call_expression "strrchr(pcVar4,0x2f)" identifier (argument_list "(pcVar4,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010bdf8;" goto statement_identifier ;)) (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = DAT_00119620;" (assignment_expression "puVar7 = DAT_00119620" identifier = identifier) ;) })) (if_statement "if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }" if (parenthesized_expression "(puVar7 == (undefined8 *)0x0)" ( (binary_expression "puVar7 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }" { (expression_statement "pcVar4 = *(char **)(param_1 + 8);" (assignment_expression "pcVar4 = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0010bdf8:\n      piVar6 = __errno_location();" statement_identifier : (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "uVar2 = DAT_00119b10;" (assignment_expression "uVar2 = DAT_00119b10" identifier = identifier) ;) (if_statement "if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }" if (parenthesized_expression "(*piVar6 == 2)" ( (binary_expression "*piVar6 == 2" (pointer_expression "*piVar6" * identifier) == number_literal) )) (compound_statement "{\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }" { (expression_statement "pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);" (assignment_expression "pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%s: could not locate `%s\'\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%s: could not locate `%s\'\n",5)" identifier (argument_list "("gprof","%s: could not locate `%s\'\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%s: could not locate `%s\'\n"" " string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(stderr,pcVar3,uVar2,pcVar4);" (call_expression "fprintf(stderr,pcVar3,uVar2,pcVar4)" identifier (argument_list "(stderr,pcVar3,uVar2,pcVar4)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n        perror(pcVar4);\n      }" else (compound_statement "{\n        perror(pcVar4);\n      }" { (expression_statement "perror(pcVar4);" (call_expression "perror(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) }))) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));" (assignment_expression "pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1))" identifier = (call_expression "stpcpy(&local_2438,(char *)(puVar7 + 1))" identifier (argument_list "(&local_2438,(char *)(puVar7 + 1))" ( (pointer_expression "&local_2438" & identifier) , (cast_expression "(char *)(puVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 1)" ( (binary_expression "puVar7 + 1" identifier + number_literal) ))) )))) ;) (expression_statement "pcVar4[0] = '/';" (assignment_expression "pcVar4[0] = '/'" (subscript_expression "pcVar4[0]" identifier [ number_literal ]) = (char_literal "'/'" ' character ')) ;) (expression_statement "pcVar4[1] = '\0';" (assignment_expression "pcVar4[1] = '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }" { (expression_statement "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));" (call_expression "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8))" identifier (argument_list "(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8))" ( (binary_expression "pcVar4 + (long)(acStack_2437 + -(long)&local_2438)" identifier + (cast_expression "(long)(acStack_2437 + -(long)&local_2438)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(acStack_2437 + -(long)&local_2438)" ( (binary_expression "acStack_2437 + -(long)&local_2438" identifier + (unary_expression "-(long)&local_2438" - (cast_expression "(long)&local_2438" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_2438" & identifier)))) )))) , (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) }) (else_clause "else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }" else (compound_statement "{\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }" { (expression_statement "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);" (call_expression "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3)" identifier (argument_list "(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3)" ( (binary_expression "pcVar4 + (long)(acStack_2437 + -(long)&local_2438)" identifier + (cast_expression "(long)(acStack_2437 + -(long)&local_2438)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(acStack_2437 + -(long)&local_2438)" ( (binary_expression "acStack_2437 + -(long)&local_2438" identifier + (unary_expression "-(long)&local_2438" - (cast_expression "(long)&local_2438" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_2438" & identifier)))) )))) , identifier ))) ;) }))) (expression_statement "puVar7 = (undefined8 *)*puVar7;" (assignment_expression "puVar7 = (undefined8 *)*puVar7" identifier = (cast_expression "(undefined8 *)*puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "FILE * annotate_source(Source_File *sf,uint max_width,_func_void_char_ptr_uint_int_void_ptr *annote,\n                      void *arg)\n\n{\n  char cVar1;\n  FILE *__stream;\n  char *pcVar2;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *__format;\n  search_list_elem *psVar6;\n  int iVar7;\n  bool bVar8;\n  char fname [1024];\n  char buf [8192];\n  \n  psVar6 = src_search_list.head;\n  pcVar2 = sf->name;\n  strcpy(fname,pcVar2);\n  if (*pcVar2 == '/') {\n    psVar6 = (search_list_elem *)0x0;\n  }\n  pcVar2 = (char *)0x0;\n  do {\n    if ((debug_level._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (create_annotation_files != 0) {\n        pcVar2 = sf->name;\n        pcVar3 = strrchr(pcVar2,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }\n        pcVar2 = stpcpy(fname,pcVar2);\n        builtin_strncpy(pcVar2,"-ann",5);\n        __stream_00 = fopen(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (annotate_source::first_file == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        annotate_source::first_file = 0;\n      }\n      if (first_output == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar2 = sf->name;\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,pcVar2);\nLAB_0010bd0e:\n      bVar8 = true;\n      iVar7 = 1;\n      pcVar2 = (char *)xmalloc(max_width + 1);\n      while( true ) {\n        sVar4 = fread(buf,1,0x2000,__stream);\n        if ((int)sVar4 < 1) break;\n        pcVar3 = buf;\n        do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);\n      }\n      free(pcVar2);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar2 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\n      pcVar2 = strrchr(pcVar3,0x2f);\n      if (pcVar2 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar2 = pcVar2 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\nLAB_0010bdf8:\n      piVar5 = __errno_location();\n      pcVar2 = whoami;\n      if (*piVar5 == 2) {\n        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,__format,pcVar2,pcVar3);\n      }\n      else {\n        perror(pcVar3);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(fname,psVar6->path);\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar2 == (char *)0x0) {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name);\n    }\n    else {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);\n    }\n    psVar6 = psVar6->next;\n  } while( true );\n}\n\n" (function_definition "FILE * annotate_source(Source_File *sf,uint max_width,_func_void_char_ptr_uint_int_void_ptr *annote,\n                      void *arg)\n\n{\n  char cVar1;\n  FILE *__stream;\n  char *pcVar2;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *__format;\n  search_list_elem *psVar6;\n  int iVar7;\n  bool bVar8;\n  char fname [1024];\n  char buf [8192];\n  \n  psVar6 = src_search_list.head;\n  pcVar2 = sf->name;\n  strcpy(fname,pcVar2);\n  if (*pcVar2 == '/') {\n    psVar6 = (search_list_elem *)0x0;\n  }\n  pcVar2 = (char *)0x0;\n  do {\n    if ((debug_level._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (create_annotation_files != 0) {\n        pcVar2 = sf->name;\n        pcVar3 = strrchr(pcVar2,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }\n        pcVar2 = stpcpy(fname,pcVar2);\n        builtin_strncpy(pcVar2,"-ann",5);\n        __stream_00 = fopen(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (annotate_source::first_file == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        annotate_source::first_file = 0;\n      }\n      if (first_output == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar2 = sf->name;\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,pcVar2);\nLAB_0010bd0e:\n      bVar8 = true;\n      iVar7 = 1;\n      pcVar2 = (char *)xmalloc(max_width + 1);\n      while( true ) {\n        sVar4 = fread(buf,1,0x2000,__stream);\n        if ((int)sVar4 < 1) break;\n        pcVar3 = buf;\n        do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);\n      }\n      free(pcVar2);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar2 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\n      pcVar2 = strrchr(pcVar3,0x2f);\n      if (pcVar2 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar2 = pcVar2 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\nLAB_0010bdf8:\n      piVar5 = __errno_location();\n      pcVar2 = whoami;\n      if (*piVar5 == 2) {\n        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,__format,pcVar2,pcVar3);\n      }\n      else {\n        perror(pcVar3);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(fname,psVar6->path);\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar2 == (char *)0x0) {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name);\n    }\n    else {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);\n    }\n    psVar6 = psVar6->next;\n  } while( true );\n}" type_identifier (pointer_declarator "* annotate_source(Source_File *sf,uint max_width,_func_void_char_ptr_uint_int_void_ptr *annote,\n                      void *arg)" * (function_declarator "annotate_source(Source_File *sf,uint max_width,_func_void_char_ptr_uint_int_void_ptr *annote,\n                      void *arg)" identifier (parameter_list "(Source_File *sf,uint max_width,_func_void_char_ptr_uint_int_void_ptr *annote,\n                      void *arg)" ( (parameter_declaration "Source_File *sf" type_identifier (pointer_declarator "*sf" * identifier)) , (parameter_declaration "uint max_width" type_identifier identifier) , (parameter_declaration "_func_void_char_ptr_uint_int_void_ptr *annote" type_identifier (pointer_declarator "*annote" * identifier)) , (parameter_declaration "void *arg" primitive_type (pointer_declarator "*arg" * identifier)) )))) (compound_statement "{\n  char cVar1;\n  FILE *__stream;\n  char *pcVar2;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *__format;\n  search_list_elem *psVar6;\n  int iVar7;\n  bool bVar8;\n  char fname [1024];\n  char buf [8192];\n  \n  psVar6 = src_search_list.head;\n  pcVar2 = sf->name;\n  strcpy(fname,pcVar2);\n  if (*pcVar2 == '/') {\n    psVar6 = (search_list_elem *)0x0;\n  }\n  pcVar2 = (char *)0x0;\n  do {\n    if ((debug_level._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (create_annotation_files != 0) {\n        pcVar2 = sf->name;\n        pcVar3 = strrchr(pcVar2,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }\n        pcVar2 = stpcpy(fname,pcVar2);\n        builtin_strncpy(pcVar2,"-ann",5);\n        __stream_00 = fopen(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (annotate_source::first_file == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        annotate_source::first_file = 0;\n      }\n      if (first_output == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar2 = sf->name;\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,pcVar2);\nLAB_0010bd0e:\n      bVar8 = true;\n      iVar7 = 1;\n      pcVar2 = (char *)xmalloc(max_width + 1);\n      while( true ) {\n        sVar4 = fread(buf,1,0x2000,__stream);\n        if ((int)sVar4 < 1) break;\n        pcVar3 = buf;\n        do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);\n      }\n      free(pcVar2);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar2 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\n      pcVar2 = strrchr(pcVar3,0x2f);\n      if (pcVar2 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar2 = pcVar2 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\nLAB_0010bdf8:\n      piVar5 = __errno_location();\n      pcVar2 = whoami;\n      if (*piVar5 == 2) {\n        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,__format,pcVar2,pcVar3);\n      }\n      else {\n        perror(pcVar3);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(fname,psVar6->path);\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar2 == (char *)0x0) {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name);\n    }\n    else {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);\n    }\n    psVar6 = psVar6->next;\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "FILE *__stream_00;" type_identifier (pointer_declarator "*__stream_00" * identifier) ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "search_list_elem *psVar6;" type_identifier (pointer_declarator "*psVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "char fname [1024];" primitive_type (array_declarator "fname [1024]" identifier [ number_literal ]) ;) (declaration "char buf [8192];" primitive_type (array_declarator "buf [8192]" identifier [ number_literal ]) ;) (expression_statement "psVar6 = src_search_list.head;" (assignment_expression "psVar6 = src_search_list.head" identifier = (field_expression "src_search_list.head" identifier . field_identifier)) ;) (expression_statement "pcVar2 = sf->name;" (assignment_expression "pcVar2 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (expression_statement "strcpy(fname,pcVar2);" (call_expression "strcpy(fname,pcVar2)" identifier (argument_list "(fname,pcVar2)" ( identifier , identifier ))) ;) (if_statement "if (*pcVar2 == '/') {\n    psVar6 = (search_list_elem *)0x0;\n  }" if (parenthesized_expression "(*pcVar2 == '/')" ( (binary_expression "*pcVar2 == '/'" (pointer_expression "*pcVar2" * identifier) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    psVar6 = (search_list_elem *)0x0;\n  }" { (expression_statement "psVar6 = (search_list_elem *)0x0;" (assignment_expression "psVar6 = (search_list_elem *)0x0" identifier = (cast_expression "(search_list_elem *)0x0" ( (type_descriptor "search_list_elem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar2 = (char *)0x0;" (assignment_expression "pcVar2 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if ((debug_level._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (create_annotation_files != 0) {\n        pcVar2 = sf->name;\n        pcVar3 = strrchr(pcVar2,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }\n        pcVar2 = stpcpy(fname,pcVar2);\n        builtin_strncpy(pcVar2,"-ann",5);\n        __stream_00 = fopen(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (annotate_source::first_file == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        annotate_source::first_file = 0;\n      }\n      if (first_output == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar2 = sf->name;\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,pcVar2);\nLAB_0010bd0e:\n      bVar8 = true;\n      iVar7 = 1;\n      pcVar2 = (char *)xmalloc(max_width + 1);\n      while( true ) {\n        sVar4 = fread(buf,1,0x2000,__stream);\n        if ((int)sVar4 < 1) break;\n        pcVar3 = buf;\n        do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);\n      }\n      free(pcVar2);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar2 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\n      pcVar2 = strrchr(pcVar3,0x2f);\n      if (pcVar2 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar2 = pcVar2 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\nLAB_0010bdf8:\n      piVar5 = __errno_location();\n      pcVar2 = whoami;\n      if (*piVar5 == 2) {\n        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,__format,pcVar2,pcVar3);\n      }\n      else {\n        perror(pcVar3);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(fname,psVar6->path);\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar2 == (char *)0x0) {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name);\n    }\n    else {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);\n    }\n    psVar6 = psVar6->next;\n  } while( true );" do (compound_statement "{\n    if ((debug_level._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (create_annotation_files != 0) {\n        pcVar2 = sf->name;\n        pcVar3 = strrchr(pcVar2,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }\n        pcVar2 = stpcpy(fname,pcVar2);\n        builtin_strncpy(pcVar2,"-ann",5);\n        __stream_00 = fopen(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (annotate_source::first_file == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        annotate_source::first_file = 0;\n      }\n      if (first_output == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar2 = sf->name;\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,pcVar2);\nLAB_0010bd0e:\n      bVar8 = true;\n      iVar7 = 1;\n      pcVar2 = (char *)xmalloc(max_width + 1);\n      while( true ) {\n        sVar4 = fread(buf,1,0x2000,__stream);\n        if ((int)sVar4 < 1) break;\n        pcVar3 = buf;\n        do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);\n      }\n      free(pcVar2);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar2 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\n      pcVar2 = strrchr(pcVar3,0x2f);\n      if (pcVar2 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar2 = pcVar2 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\nLAB_0010bdf8:\n      piVar5 = __errno_location();\n      pcVar2 = whoami;\n      if (*piVar5 == 2) {\n        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,__format,pcVar2,pcVar3);\n      }\n      else {\n        perror(pcVar3);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(fname,psVar6->path);\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar2 == (char *)0x0) {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name);\n    }\n    else {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);\n    }\n    psVar6 = psVar6->next;\n  }" { (if_statement "if ((debug_level._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }" if (parenthesized_expression "((debug_level._1_1_ & 0x20) != 0)" ( (binary_expression "(debug_level._1_1_ & 0x20) != 0" (parenthesized_expression "(debug_level._1_1_ & 0x20)" ( (binary_expression "debug_level._1_1_ & 0x20" (field_expression "debug_level._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }" { (expression_statement "printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);" (call_expression "printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname)" identifier (argument_list "("[annotate_source]: looking for %s, trying %s\n",sf->name,fname)" ( (string_literal ""[annotate_source]: looking for %s, trying %s\n"" " string_content escape_sequence ") , (field_expression "sf->name" identifier -> field_identifier) , identifier ))) ;) })) (expression_statement "__stream = fopen(fname,"r");" (assignment_expression "__stream = fopen(fname,"r")" identifier = (call_expression "fopen(fname,"r")" identifier (argument_list "(fname,"r")" ( identifier , (string_literal ""r"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (create_annotation_files != 0) {\n        pcVar2 = sf->name;\n        pcVar3 = strrchr(pcVar2,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }\n        pcVar2 = stpcpy(fname,pcVar2);\n        builtin_strncpy(pcVar2,"-ann",5);\n        __stream_00 = fopen(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (annotate_source::first_file == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        annotate_source::first_file = 0;\n      }\n      if (first_output == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar2 = sf->name;\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,pcVar2);\nLAB_0010bd0e:\n      bVar8 = true;\n      iVar7 = 1;\n      pcVar2 = (char *)xmalloc(max_width + 1);\n      while( true ) {\n        sVar4 = fread(buf,1,0x2000,__stream);\n        if ((int)sVar4 < 1) break;\n        pcVar3 = buf;\n        do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);\n      }\n      free(pcVar2);\n      fclose(__stream);\n      return (FILE *)__stream_00;\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      __stream_00 = stdout;\n      if (create_annotation_files != 0) {\n        pcVar2 = sf->name;\n        pcVar3 = strrchr(pcVar2,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }\n        pcVar2 = stpcpy(fname,pcVar2);\n        builtin_strncpy(pcVar2,"-ann",5);\n        __stream_00 = fopen(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (annotate_source::first_file == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        annotate_source::first_file = 0;\n      }\n      if (first_output == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar2 = sf->name;\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,pcVar2);\nLAB_0010bd0e:\n      bVar8 = true;\n      iVar7 = 1;\n      pcVar2 = (char *)xmalloc(max_width + 1);\n      while( true ) {\n        sVar4 = fread(buf,1,0x2000,__stream);\n        if ((int)sVar4 < 1) break;\n        pcVar3 = buf;\n        do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);\n      }\n      free(pcVar2);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }" { (expression_statement "__stream_00 = stdout;" (assignment_expression "__stream_00 = stdout" identifier = identifier) ;) (if_statement "if (create_annotation_files != 0) {\n        pcVar2 = sf->name;\n        pcVar3 = strrchr(pcVar2,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }\n        pcVar2 = stpcpy(fname,pcVar2);\n        builtin_strncpy(pcVar2,"-ann",5);\n        __stream_00 = fopen(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }" if (parenthesized_expression "(create_annotation_files != 0)" ( (binary_expression "create_annotation_files != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar2 = sf->name;\n        pcVar3 = strrchr(pcVar2,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }\n        pcVar2 = stpcpy(fname,pcVar2);\n        builtin_strncpy(pcVar2,"-ann",5);\n        __stream_00 = fopen(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }" { (expression_statement "pcVar2 = sf->name;" (assignment_expression "pcVar2 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (expression_statement "pcVar3 = strrchr(pcVar2,0x2f);" (assignment_expression "pcVar3 = strrchr(pcVar2,0x2f)" identifier = (call_expression "strrchr(pcVar2,0x2f)" identifier (argument_list "(pcVar2,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n          pcVar2 = pcVar3 + 1;\n        }" if (parenthesized_expression "(pcVar3 != (char *)0x0)" ( (binary_expression "pcVar3 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar2 = pcVar3 + 1;\n        }" { (expression_statement "pcVar2 = pcVar3 + 1;" (assignment_expression "pcVar2 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar2 = stpcpy(fname,pcVar2);" (assignment_expression "pcVar2 = stpcpy(fname,pcVar2)" identifier = (call_expression "stpcpy(fname,pcVar2)" identifier (argument_list "(fname,pcVar2)" ( identifier , identifier )))) ;) (expression_statement "builtin_strncpy(pcVar2,"-ann",5);" (call_expression "builtin_strncpy(pcVar2,"-ann",5)" identifier (argument_list "(pcVar2,"-ann",5)" ( identifier , (string_literal ""-ann"" " string_content ") , number_literal ))) ;) (expression_statement "__stream_00 = fopen(fname,"w");" (assignment_expression "__stream_00 = fopen(fname,"w")" identifier = (call_expression "fopen(fname,"w")" identifier (argument_list "(fname,"w")" ( identifier , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }" if (parenthesized_expression "(__stream_00 == (FILE *)0x0)" ( (binary_expression "__stream_00 == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          perror(fname);\n          return (FILE *)0x0;\n        }" { (expression_statement "perror(fname);" (call_expression "perror(fname)" identifier (argument_list "(fname)" ( identifier ))) ;) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (stdout != __stream_00) goto LAB_0010bd0e;" if (parenthesized_expression "(stdout != __stream_00)" ( (binary_expression "stdout != __stream_00" identifier != identifier) )) (goto_statement "goto LAB_0010bd0e;" goto statement_identifier ;)) })) (if_statement "if (annotate_source::first_file == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        annotate_source::first_file = 0;\n      }" if (parenthesized_expression "(annotate_source::first_file == 0)" ( (binary_expression "annotate_source::first_file == 0" identifier (ERROR "::first_file" : : identifier) == number_literal) )) (compound_statement "{\n        fputc(10,__stream_00);\n      }" { (expression_statement "fputc(10,__stream_00);" (call_expression "fputc(10,__stream_00)" identifier (argument_list "(10,__stream_00)" ( number_literal , identifier ))) ;) }) (else_clause "else {\n        annotate_source::first_file = 0;\n      }" else (compound_statement "{\n        annotate_source::first_file = 0;\n      }" { (labeled_statement "annotate_source::first_file = 0;" statement_identifier : (ERROR ":" :) (expression_statement "first_file = 0;" (assignment_expression "first_file = 0" identifier = number_literal) ;)) }))) (if_statement "if (first_output == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }" if (parenthesized_expression "(first_output == 0)" ( (binary_expression "first_output == 0" identifier == number_literal) )) (compound_statement "{\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }" { (expression_statement "fwrite(&DAT_00111f89,1,2,__stream_00);" (call_expression "fwrite(&DAT_00111f89,1,2,__stream_00)" identifier (argument_list "(&DAT_00111f89,1,2,__stream_00)" ( (pointer_expression "&DAT_00111f89" & identifier) , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n        first_output = 0;\n      }" else (compound_statement "{\n        first_output = 0;\n      }" { (expression_statement "first_output = 0;" (assignment_expression "first_output = 0" identifier = number_literal) ;) }))) (expression_statement "pcVar2 = sf->name;" (assignment_expression "pcVar2 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (expression_statement "pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);" (assignment_expression "pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","*** File %s:\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","*** File %s:\n",5)" identifier (argument_list "("gprof","*** File %s:\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""*** File %s:\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream_00,pcVar3,pcVar2);" (call_expression "fprintf(__stream_00,pcVar3,pcVar2)" identifier (argument_list "(__stream_00,pcVar3,pcVar2)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0010bd0e:\n      bVar8 = true;" statement_identifier : (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;)) (expression_statement "iVar7 = 1;" (assignment_expression "iVar7 = 1" identifier = number_literal) ;) (expression_statement "pcVar2 = (char *)xmalloc(max_width + 1);" (assignment_expression "pcVar2 = (char *)xmalloc(max_width + 1)" identifier = (cast_expression "(char *)xmalloc(max_width + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(max_width + 1)" identifier (argument_list "(max_width + 1)" ( (binary_expression "max_width + 1" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n        sVar4 = fread(buf,1,0x2000,__stream);\n        if ((int)sVar4 < 1) break;\n        pcVar3 = buf;\n        do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        sVar4 = fread(buf,1,0x2000,__stream);\n        if ((int)sVar4 < 1) break;\n        pcVar3 = buf;\n        do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);\n      }" { (expression_statement "sVar4 = fread(buf,1,0x2000,__stream);" (assignment_expression "sVar4 = fread(buf,1,0x2000,__stream)" identifier = (call_expression "fread(buf,1,0x2000,__stream)" identifier (argument_list "(buf,1,0x2000,__stream)" ( identifier , number_literal , number_literal , identifier )))) ;) (if_statement "if ((int)sVar4 < 1) break;" if (parenthesized_expression "((int)sVar4 < 1)" ( (binary_expression "(int)sVar4 < 1" (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar3 = buf;" (assignment_expression "pcVar3 = buf" identifier = identifier) ;) (do_statement "do {\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1);" do (compound_statement "{\n          if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        }" { (if_statement "if (bVar8) {\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n            (*annote)(pcVar2,max_width,iVar7,arg);\n            fputs(pcVar2,__stream_00);\n            iVar7 = iVar7 + 1;\n          }" { (expression_statement "(*annote)(pcVar2,max_width,iVar7,arg);" (call_expression "(*annote)(pcVar2,max_width,iVar7,arg)" (parenthesized_expression "(*annote)" ( (pointer_expression "*annote" * identifier) )) (argument_list "(pcVar2,max_width,iVar7,arg)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "fputs(pcVar2,__stream_00);" (call_expression "fputs(pcVar2,__stream_00)" identifier (argument_list "(pcVar2,__stream_00)" ( identifier , identifier ))) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) })) (expression_statement "cVar1 = *pcVar3;" (assignment_expression "cVar1 = *pcVar3" identifier = (pointer_expression "*pcVar3" * identifier)) ;) (expression_statement "bVar8 = cVar1 == '\n';" (assignment_expression "bVar8 = cVar1 == '\n'" identifier = (binary_expression "cVar1 == '\n'" identifier == (char_literal "'\n'" ' escape_sequence '))) ;) (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "fputc((int)cVar1,__stream_00);" (call_expression "fputc((int)cVar1,__stream_00)" identifier (argument_list "((int)cVar1,__stream_00)" ( (cast_expression "(int)cVar1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) }) while (parenthesized_expression "(pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1)" ( (binary_expression "pcVar3 != buf + (ulong)((int)sVar4 - 1) + 1" identifier != (binary_expression "buf + (ulong)((int)sVar4 - 1) + 1" (binary_expression "buf + (ulong)((int)sVar4 - 1)" identifier + (call_expression "(ulong)((int)sVar4 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)sVar4 - 1)" ( (binary_expression "(int)sVar4 - 1" (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) + number_literal)) )) ;) })) (expression_statement "free(pcVar2);" (call_expression "free(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) (return_statement "return (FILE *)__stream_00;" return (cast_expression "(FILE *)__stream_00" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ;) })) (if_statement "if (pcVar2 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\n      pcVar2 = strrchr(pcVar3,0x2f);\n      if (pcVar2 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar2 = pcVar2 + 1;\n      psVar6 = src_search_list.head;\n    }" if (parenthesized_expression "(pcVar2 == (char *)0x0 && psVar6 == (search_list_elem *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0 && psVar6 == (search_list_elem *)0x0" (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "psVar6 == (search_list_elem *)0x0" identifier == (cast_expression "(search_list_elem *)0x0" ( (type_descriptor "search_list_elem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      pcVar3 = sf->name;\n      pcVar2 = strrchr(pcVar3,0x2f);\n      if (pcVar2 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar2 = pcVar2 + 1;\n      psVar6 = src_search_list.head;\n    }" { (expression_statement "pcVar3 = sf->name;" (assignment_expression "pcVar3 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (expression_statement "pcVar2 = strrchr(pcVar3,0x2f);" (assignment_expression "pcVar2 = strrchr(pcVar3,0x2f)" identifier = (call_expression "strrchr(pcVar3,0x2f)" identifier (argument_list "(pcVar3,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar2 == (char *)0x0) goto LAB_0010bdf8;" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010bdf8;" goto statement_identifier ;)) (expression_statement "pcVar2 = pcVar2 + 1;" (assignment_expression "pcVar2 = pcVar2 + 1" identifier = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) (expression_statement "psVar6 = src_search_list.head;" (assignment_expression "psVar6 = src_search_list.head" identifier = (field_expression "src_search_list.head" identifier . field_identifier)) ;) })) (if_statement "if (psVar6 == (search_list_elem *)0x0) {\n      pcVar3 = sf->name;\nLAB_0010bdf8:\n      piVar5 = __errno_location();\n      pcVar2 = whoami;\n      if (*piVar5 == 2) {\n        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,__format,pcVar2,pcVar3);\n      }\n      else {\n        perror(pcVar3);\n      }\n      return (FILE *)0x0;\n    }" if (parenthesized_expression "(psVar6 == (search_list_elem *)0x0)" ( (binary_expression "psVar6 == (search_list_elem *)0x0" identifier == (cast_expression "(search_list_elem *)0x0" ( (type_descriptor "search_list_elem *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar3 = sf->name;\nLAB_0010bdf8:\n      piVar5 = __errno_location();\n      pcVar2 = whoami;\n      if (*piVar5 == 2) {\n        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,__format,pcVar2,pcVar3);\n      }\n      else {\n        perror(pcVar3);\n      }\n      return (FILE *)0x0;\n    }" { (expression_statement "pcVar3 = sf->name;" (assignment_expression "pcVar3 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (labeled_statement "LAB_0010bdf8:\n      piVar5 = __errno_location();" statement_identifier : (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pcVar2 = whoami;" (assignment_expression "pcVar2 = whoami" identifier = identifier) ;) (if_statement "if (*piVar5 == 2) {\n        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,__format,pcVar2,pcVar3);\n      }\n      else {\n        perror(pcVar3);\n      }" if (parenthesized_expression "(*piVar5 == 2)" ( (binary_expression "*piVar5 == 2" (pointer_expression "*piVar5" * identifier) == number_literal) )) (compound_statement "{\n        __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,__format,pcVar2,pcVar3);\n      }" { (expression_statement "__format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);" (assignment_expression "__format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%s: could not locate `%s\'\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%s: could not locate `%s\'\n",5)" identifier (argument_list "("gprof","%s: could not locate `%s\'\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%s: could not locate `%s\'\n"" " string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(stderr,__format,pcVar2,pcVar3);" (call_expression "fprintf(stderr,__format,pcVar2,pcVar3)" identifier (argument_list "(stderr,__format,pcVar2,pcVar3)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n        perror(pcVar3);\n      }" else (compound_statement "{\n        perror(pcVar3);\n      }" { (expression_statement "perror(pcVar3);" (call_expression "perror(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) }))) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar3 = stpcpy(fname,psVar6->path);" (assignment_expression "pcVar3 = stpcpy(fname,psVar6->path)" identifier = (call_expression "stpcpy(fname,psVar6->path)" identifier (argument_list "(fname,psVar6->path)" ( identifier , (field_expression "psVar6->path" identifier -> field_identifier) )))) ;) (expression_statement "pcVar3[0] = '/';" (assignment_expression "pcVar3[0] = '/'" (subscript_expression "pcVar3[0]" identifier [ number_literal ]) = (char_literal "'/'" ' character ')) ;) (expression_statement "pcVar3[1] = '\0';" (assignment_expression "pcVar3[1] = '\0'" (subscript_expression "pcVar3[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (pcVar2 == (char *)0x0) {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name);\n    }\n    else {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);\n    }" if (parenthesized_expression "(pcVar2 == (char *)0x0)" ( (binary_expression "pcVar2 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name);\n    }" { (expression_statement "strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name);" (call_expression "strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name)" identifier (argument_list "(pcVar3 + (long)(fname + (1 - (long)fname)),sf->name)" ( (binary_expression "pcVar3 + (long)(fname + (1 - (long)fname))" identifier + (cast_expression "(long)(fname + (1 - (long)fname))" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(fname + (1 - (long)fname))" ( (binary_expression "fname + (1 - (long)fname)" identifier + (parenthesized_expression "(1 - (long)fname)" ( (binary_expression "1 - (long)fname" number_literal - (cast_expression "(long)fname" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) , (field_expression "sf->name" identifier -> field_identifier) ))) ;) }) (else_clause "else {\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);\n    }" else (compound_statement "{\n      strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);\n    }" { (expression_statement "strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2);" (call_expression "strcpy(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2)" identifier (argument_list "(pcVar3 + (long)(fname + (1 - (long)fname)),pcVar2)" ( (binary_expression "pcVar3 + (long)(fname + (1 - (long)fname))" identifier + (cast_expression "(long)(fname + (1 - (long)fname))" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(fname + (1 - (long)fname))" ( (binary_expression "fname + (1 - (long)fname)" identifier + (parenthesized_expression "(1 - (long)fname)" ( (binary_expression "1 - (long)fname" number_literal - (cast_expression "(long)fname" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) )))) , identifier ))) ;) }))) (expression_statement "psVar6 = psVar6->next;" (assignment_expression "psVar6 = psVar6->next" identifier = (field_expression "psVar6->next" identifier -> field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "FILE * FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  char *pcVar4;\n  FILE *__stream_00;\n  size_t sVar5;\n  int *piVar6;\n  undefined8 *puVar7;\n  int iVar8;\n  bool bVar9;\n  char local_2438;\n  char acStack_2437 [1023];\n  char local_2038;\n  char local_2037 [8199];\n  \n  puVar7 = DAT_00119620;\n  pcVar3 = *(char **)(param_1 + 8);\n  strcpy(&local_2438,pcVar3);\n  if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }\n  pcVar3 = (char *)0x0;\n  do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );\n}\n\n" (function_definition "FILE * FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  char *pcVar4;\n  FILE *__stream_00;\n  size_t sVar5;\n  int *piVar6;\n  undefined8 *puVar7;\n  int iVar8;\n  bool bVar9;\n  char local_2438;\n  char acStack_2437 [1023];\n  char local_2038;\n  char local_2037 [8199];\n  \n  puVar7 = DAT_00119620;\n  pcVar3 = *(char **)(param_1 + 8);\n  strcpy(&local_2438,pcVar3);\n  if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }\n  pcVar3 = (char *)0x0;\n  do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );\n}" type_identifier (pointer_declarator "* FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)" * (function_declarator "FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)" identifier (parameter_list "(long param_1,int param_2,code *param_3,undefined8 param_4)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "code *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined8 param_4" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  undefined8 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  char *pcVar4;\n  FILE *__stream_00;\n  size_t sVar5;\n  int *piVar6;\n  undefined8 *puVar7;\n  int iVar8;\n  bool bVar9;\n  char local_2438;\n  char acStack_2437 [1023];\n  char local_2038;\n  char local_2037 [8199];\n  \n  puVar7 = DAT_00119620;\n  pcVar3 = *(char **)(param_1 + 8);\n  strcpy(&local_2438,pcVar3);\n  if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }\n  pcVar3 = (char *)0x0;\n  do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * identifier) ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "FILE *__stream_00;" type_identifier (pointer_declarator "*__stream_00" * identifier) ;) (declaration "size_t sVar5;" primitive_type identifier ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "undefined8 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "char local_2438;" primitive_type identifier ;) (declaration "char acStack_2437 [1023];" primitive_type (array_declarator "acStack_2437 [1023]" identifier [ number_literal ]) ;) (declaration "char local_2038;" primitive_type identifier ;) (declaration "char local_2037 [8199];" primitive_type (array_declarator "local_2037 [8199]" identifier [ number_literal ]) ;) (expression_statement "puVar7 = DAT_00119620;" (assignment_expression "puVar7 = DAT_00119620" identifier = identifier) ;) (expression_statement "pcVar3 = *(char **)(param_1 + 8);" (assignment_expression "pcVar3 = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "strcpy(&local_2438,pcVar3);" (call_expression "strcpy(&local_2438,pcVar3)" identifier (argument_list "(&local_2438,pcVar3)" ( (pointer_expression "&local_2438" & identifier) , identifier ))) ;) (if_statement "if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }" if (parenthesized_expression "(*pcVar3 == '/')" ( (binary_expression "*pcVar3 == '/'" (pointer_expression "*pcVar3" * identifier) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    puVar7 = (undefined8 *)0x0;\n  }" { (expression_statement "puVar7 = (undefined8 *)0x0;" (assignment_expression "puVar7 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );" do (compound_statement "{\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  }" { (if_statement "if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }" if (parenthesized_expression "((DAT_001195e4._1_1_ & 0x20) != 0)" ( (binary_expression "(DAT_001195e4._1_1_ & 0x20) != 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 0x20)" ( (binary_expression "DAT_001195e4._1_1_ & 0x20" (field_expression "DAT_001195e4._1_1_" identifier . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }" { (expression_statement "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);" (call_expression "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438)" identifier (argument_list "("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438)" ( (string_literal ""[annotate_source]: looking for %s, trying %s\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) , (pointer_expression "&local_2438" & identifier) ))) ;) })) (expression_statement "__stream = fopen(&local_2438,"r");" (assignment_expression "__stream = fopen(&local_2438,"r")" identifier = (call_expression "fopen(&local_2438,"r")" identifier (argument_list "(&local_2438,"r")" ( (pointer_expression "&local_2438" & identifier) , (string_literal ""r"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\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      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }" { (expression_statement "__stream_00 = stdout;" (assignment_expression "__stream_00 = stdout" identifier = identifier) ;) (if_statement "if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }" if (parenthesized_expression "(DAT_00119630 != 0)" ( (binary_expression "DAT_00119630 != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }" { (expression_statement "pcVar3 = *(char **)(param_1 + 8);" (assignment_expression "pcVar3 = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar4 = strrchr(pcVar3,0x2f);" (assignment_expression "pcVar4 = strrchr(pcVar3,0x2f)" identifier = (call_expression "strrchr(pcVar3,0x2f)" identifier (argument_list "(pcVar3,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }" if (parenthesized_expression "(pcVar4 != (char *)0x0)" ( (binary_expression "pcVar4 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          pcVar3 = pcVar4 + 1;\n        }" { (expression_statement "pcVar3 = pcVar4 + 1;" (assignment_expression "pcVar3 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar3 = stpcpy(&local_2438,pcVar3);" (assignment_expression "pcVar3 = stpcpy(&local_2438,pcVar3)" identifier = (call_expression "stpcpy(&local_2438,pcVar3)" identifier (argument_list "(&local_2438,pcVar3)" ( (pointer_expression "&local_2438" & identifier) , identifier )))) ;) (expression_statement "builtin_strncpy(pcVar3,"-ann",5);" (call_expression "builtin_strncpy(pcVar3,"-ann",5)" identifier (argument_list "(pcVar3,"-ann",5)" ( identifier , (string_literal ""-ann"" " string_content ") , number_literal ))) ;) (expression_statement "__stream_00 = fopen(&local_2438,"w");" (assignment_expression "__stream_00 = fopen(&local_2438,"w")" identifier = (call_expression "fopen(&local_2438,"w")" identifier (argument_list "(&local_2438,"w")" ( (pointer_expression "&local_2438" & identifier) , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }" if (parenthesized_expression "(__stream_00 == (FILE *)0x0)" ( (binary_expression "__stream_00 == (FILE *)0x0" identifier == (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }" { (expression_statement "perror(&local_2438);" (call_expression "perror(&local_2438)" identifier (argument_list "(&local_2438)" ( (pointer_expression "&local_2438" & identifier) ))) ;) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (stdout != __stream_00) goto LAB_0010bd0e;" if (parenthesized_expression "(stdout != __stream_00)" ( (binary_expression "stdout != __stream_00" identifier != identifier) )) (goto_statement "goto LAB_0010bd0e;" goto statement_identifier ;)) })) (if_statement "if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }" if (parenthesized_expression "(DAT_001188b0 == 0)" ( (binary_expression "DAT_001188b0 == 0" identifier == number_literal) )) (compound_statement "{\n        fputc(10,__stream_00);\n      }" { (expression_statement "fputc(10,__stream_00);" (call_expression "fputc(10,__stream_00)" identifier (argument_list "(10,__stream_00)" ( number_literal , identifier ))) ;) }) (else_clause "else {\n        DAT_001188b0 = 0;\n      }" else (compound_statement "{\n        DAT_001188b0 = 0;\n      }" { (expression_statement "DAT_001188b0 = 0;" (assignment_expression "DAT_001188b0 = 0" identifier = number_literal) ;) }))) (if_statement "if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }" if (parenthesized_expression "(DAT_001182d8 == 0)" ( (binary_expression "DAT_001182d8 == 0" identifier == number_literal) )) (compound_statement "{\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }" { (expression_statement "fwrite(&DAT_00111f89,1,2,__stream_00);" (call_expression "fwrite(&DAT_00111f89,1,2,__stream_00)" identifier (argument_list "(&DAT_00111f89,1,2,__stream_00)" ( (pointer_expression "&DAT_00111f89" & identifier) , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n        DAT_001182d8 = 0;\n      }" else (compound_statement "{\n        DAT_001182d8 = 0;\n      }" { (expression_statement "DAT_001182d8 = 0;" (assignment_expression "DAT_001182d8 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar2 = *(undefined8 *)(param_1 + 8);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 8)" identifier = (pointer_expression "*(undefined8 *)(param_1 + 8)" * (cast_expression "(undefined8 *)(param_1 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);" (assignment_expression "pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","*** File %s:\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","*** File %s:\n",5)" identifier (argument_list "("gprof","*** File %s:\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""*** File %s:\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(__stream_00,pcVar3,uVar2);" (call_expression "fprintf(__stream_00,pcVar3,uVar2)" identifier (argument_list "(__stream_00,pcVar3,uVar2)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0010bd0e:\n      bVar9 = true;" statement_identifier : (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" identifier = true) ;)) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" identifier = number_literal) ;) (expression_statement "pcVar3 = (char *)xmalloc(param_2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(param_2 + 1)" identifier = (cast_expression "(char *)xmalloc(param_2 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(param_2 + 1)" identifier (argument_list "(param_2 + 1)" ( (binary_expression "param_2 + 1" identifier + number_literal) ))))) ;) (while_statement "while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }" { (expression_statement "sVar5 = fread(&local_2038,1,0x2000,__stream);" (assignment_expression "sVar5 = fread(&local_2038,1,0x2000,__stream)" identifier = (call_expression "fread(&local_2038,1,0x2000,__stream)" identifier (argument_list "(&local_2038,1,0x2000,__stream)" ( (pointer_expression "&local_2038" & identifier) , number_literal , number_literal , identifier )))) ;) (if_statement "if ((int)sVar5 < 1) break;" if (parenthesized_expression "((int)sVar5 < 1)" ( (binary_expression "(int)sVar5 < 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (break_statement "break;" break ;)) (expression_statement "pcVar4 = &local_2038;" (assignment_expression "pcVar4 = &local_2038" identifier = (pointer_expression "&local_2038" & identifier)) ;) (do_statement "do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));" do (compound_statement "{\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        }" { (if_statement "if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }" if (parenthesized_expression "(bVar9)" ( identifier )) (compound_statement "{\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }" { (expression_statement "(*param_3)(pcVar3,param_2,iVar8,param_4);" (call_expression "(*param_3)(pcVar3,param_2,iVar8,param_4)" (parenthesized_expression "(*param_3)" ( (pointer_expression "*param_3" * identifier) )) (argument_list "(pcVar3,param_2,iVar8,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "fputs(pcVar3,__stream_00);" (call_expression "fputs(pcVar3,__stream_00)" identifier (argument_list "(pcVar3,__stream_00)" ( identifier , identifier ))) ;) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" identifier = (pointer_expression "*pcVar4" * identifier)) ;) (expression_statement "bVar9 = cVar1 == '\n';" (assignment_expression "bVar9 = cVar1 == '\n'" identifier = (binary_expression "cVar1 == '\n'" identifier == (char_literal "'\n'" ' escape_sequence '))) ;) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" identifier = (binary_expression "pcVar4 + 1" identifier + number_literal)) ;) (expression_statement "fputc((int)cVar1,__stream_00);" (call_expression "fputc((int)cVar1,__stream_00)" identifier (argument_list "((int)cVar1,__stream_00)" ( (cast_expression "(int)cVar1" ( (type_descriptor "int" primitive_type) ) identifier) , identifier ))) ;) }) while (parenthesized_expression "(pcVar4 != local_2037 + ((int)sVar5 - 1))" ( (binary_expression "pcVar4 != local_2037 + ((int)sVar5 - 1)" identifier != (binary_expression "local_2037 + ((int)sVar5 - 1)" identifier + (parenthesized_expression "((int)sVar5 - 1)" ( (binary_expression "(int)sVar5 - 1" (cast_expression "(int)sVar5" ( (type_descriptor "int" primitive_type) ) identifier) - number_literal) )))) )) ;) })) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" identifier (argument_list "(pcVar3)" ( identifier ))) ;) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) (return_statement "return __stream_00;" return identifier ;) })) (if_statement "if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0" (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "puVar7 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }" { (expression_statement "pcVar4 = *(char **)(param_1 + 8);" (assignment_expression "pcVar4 = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strrchr(pcVar4,0x2f);" (assignment_expression "pcVar3 = strrchr(pcVar4,0x2f)" identifier = (call_expression "strrchr(pcVar4,0x2f)" identifier (argument_list "(pcVar4,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0010bdf8;" goto statement_identifier ;)) (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = DAT_00119620;" (assignment_expression "puVar7 = DAT_00119620" identifier = identifier) ;) })) (if_statement "if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }" if (parenthesized_expression "(puVar7 == (undefined8 *)0x0)" ( (binary_expression "puVar7 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }" { (expression_statement "pcVar4 = *(char **)(param_1 + 8);" (assignment_expression "pcVar4 = *(char **)(param_1 + 8)" identifier = (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0010bdf8:\n      piVar6 = __errno_location();" statement_identifier : (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "uVar2 = DAT_00119b10;" (assignment_expression "uVar2 = DAT_00119b10" identifier = identifier) ;) (if_statement "if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }" if (parenthesized_expression "(*piVar6 == 2)" ( (binary_expression "*piVar6 == 2" (pointer_expression "*piVar6" * identifier) == number_literal) )) (compound_statement "{\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }" { (expression_statement "pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);" (assignment_expression "pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5)" identifier = (cast_expression "(char *)dcgettext("gprof","%s: could not locate `%s\'\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext("gprof","%s: could not locate `%s\'\n",5)" identifier (argument_list "("gprof","%s: could not locate `%s\'\n",5)" ( (string_literal ""gprof"" " string_content ") , (string_literal ""%s: could not locate `%s\'\n"" " string_content escape_sequence escape_sequence ") , number_literal ))))) ;) (expression_statement "fprintf(stderr,pcVar3,uVar2,pcVar4);" (call_expression "fprintf(stderr,pcVar3,uVar2,pcVar4)" identifier (argument_list "(stderr,pcVar3,uVar2,pcVar4)" ( identifier , identifier , identifier , identifier ))) ;) }) (else_clause "else {\n        perror(pcVar4);\n      }" else (compound_statement "{\n        perror(pcVar4);\n      }" { (expression_statement "perror(pcVar4);" (call_expression "perror(pcVar4)" identifier (argument_list "(pcVar4)" ( identifier ))) ;) }))) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));" (assignment_expression "pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1))" identifier = (call_expression "stpcpy(&local_2438,(char *)(puVar7 + 1))" identifier (argument_list "(&local_2438,(char *)(puVar7 + 1))" ( (pointer_expression "&local_2438" & identifier) , (cast_expression "(char *)(puVar7 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar7 + 1)" ( (binary_expression "puVar7 + 1" identifier + number_literal) ))) )))) ;) (expression_statement "pcVar4[0] = '/';" (assignment_expression "pcVar4[0] = '/'" (subscript_expression "pcVar4[0]" identifier [ number_literal ]) = (char_literal "'/'" ' character ')) ;) (expression_statement "pcVar4[1] = '\0';" (assignment_expression "pcVar4[1] = '\0'" (subscript_expression "pcVar4[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }" { (expression_statement "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));" (call_expression "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8))" identifier (argument_list "(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8))" ( (binary_expression "pcVar4 + (long)(acStack_2437 + -(long)&local_2438)" identifier + (cast_expression "(long)(acStack_2437 + -(long)&local_2438)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(acStack_2437 + -(long)&local_2438)" ( (binary_expression "acStack_2437 + -(long)&local_2438" identifier + (unary_expression "-(long)&local_2438" - (cast_expression "(long)&local_2438" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_2438" & identifier)))) )))) , (pointer_expression "*(char **)(param_1 + 8)" * (cast_expression "(char **)(param_1 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) ))) ;) }) (else_clause "else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }" else (compound_statement "{\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }" { (expression_statement "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);" (call_expression "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3)" identifier (argument_list "(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3)" ( (binary_expression "pcVar4 + (long)(acStack_2437 + -(long)&local_2438)" identifier + (cast_expression "(long)(acStack_2437 + -(long)&local_2438)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(acStack_2437 + -(long)&local_2438)" ( (binary_expression "acStack_2437 + -(long)&local_2438" identifier + (unary_expression "-(long)&local_2438" - (cast_expression "(long)&local_2438" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_2438" & identifier)))) )))) , identifier ))) ;) }))) (expression_statement "puVar7 = (undefined8 *)*puVar7;" (assignment_expression "puVar7 = (undefined8 *)*puVar7" identifier = (cast_expression "(undefined8 *)*puVar7" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (field_expression IDENT . field_identifier) & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content escape_sequence ") , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (string_literal " string_content ") )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_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 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 ))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , LIT , LIT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( IDENT )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == (char_literal ' escape_sequence '))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE) ) IDENT) , IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (binary_expression IDENT + (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - LIT) )))) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) && (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (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 " string_content escape_sequence escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression & IDENT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))) )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' character ')) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' escape_sequence ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)))) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)))) )))) , IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "FILE * FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  char *pcVar4;\n  FILE *__stream_00;\n  size_t sVar5;\n  int *piVar6;\n  undefined8 *puVar7;\n  int iVar8;\n  bool bVar9;\n  char local_2438;\n  char acStack_2437 [1023];\n  char local_2038;\n  char local_2037 [8199];\n  \n  puVar7 = DAT_00119620;\n  pcVar3 = *(char **)(param_1 + 8);\n  strcpy(&local_2438,pcVar3);\n  if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }\n  pcVar3 = (char *)0x0;\n  do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );\n}" (type_identifier "FILE") (pointer_declarator "* FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)" (* "*") (function_declarator "FUN_0010bb80(long param_1,int param_2,code *param_3,undefined8 param_4)" (identifier "FUN_0010bb80") (parameter_list "(long param_1,int param_2,code *param_3,undefined8 param_4)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "int param_2" (primitive_type "int") (identifier "param_2")) (, ",") (parameter_declaration "code *param_3" (type_identifier "code") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined8 param_4" (type_identifier "undefined8") (identifier "param_4")) () ")")))) (compound_statement "{\n  char cVar1;\n  undefined8 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  char *pcVar4;\n  FILE *__stream_00;\n  size_t sVar5;\n  int *piVar6;\n  undefined8 *puVar7;\n  int iVar8;\n  bool bVar9;\n  char local_2438;\n  char acStack_2437 [1023];\n  char local_2038;\n  char local_2037 [8199];\n  \n  puVar7 = DAT_00119620;\n  pcVar3 = *(char **)(param_1 + 8);\n  strcpy(&local_2438,pcVar3);\n  if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }\n  pcVar3 = (char *)0x0;\n  do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "FILE *__stream;" (type_identifier "FILE") (pointer_declarator "*__stream" (* "*") (identifier "__stream")) (; ";")) (declaration "char *pcVar3;" (primitive_type "char") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "char *pcVar4;" (primitive_type "char") (pointer_declarator "*pcVar4" (* "*") (identifier "pcVar4")) (; ";")) (declaration "FILE *__stream_00;" (type_identifier "FILE") (pointer_declarator "*__stream_00" (* "*") (identifier "__stream_00")) (; ";")) (declaration "size_t sVar5;" (primitive_type "size_t") (identifier "sVar5") (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "undefined8 *puVar7;" (type_identifier "undefined8") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "char local_2438;" (primitive_type "char") (identifier "local_2438") (; ";")) (declaration "char acStack_2437 [1023];" (primitive_type "char") (array_declarator "acStack_2437 [1023]" (identifier "acStack_2437") ([ "[") (number_literal "1023") (] "]")) (; ";")) (declaration "char local_2038;" (primitive_type "char") (identifier "local_2038") (; ";")) (declaration "char local_2037 [8199];" (primitive_type "char") (array_declarator "local_2037 [8199]" (identifier "local_2037") ([ "[") (number_literal "8199") (] "]")) (; ";")) (expression_statement "puVar7 = DAT_00119620;" (assignment_expression "puVar7 = DAT_00119620" (identifier "puVar7") (= "=") (identifier "DAT_00119620")) (; ";")) (expression_statement "pcVar3 = *(char **)(param_1 + 8);" (assignment_expression "pcVar3 = *(char **)(param_1 + 8)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(param_1 + 8)" (* "*") (cast_expression "(char **)(param_1 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "strcpy(&local_2438,pcVar3);" (call_expression "strcpy(&local_2438,pcVar3)" (identifier "strcpy") (argument_list "(&local_2438,pcVar3)" (( "(") (pointer_expression "&local_2438" (& "&") (identifier "local_2438")) (, ",") (identifier "pcVar3") () ")"))) (; ";")) (if_statement "if (*pcVar3 == '/') {\n    puVar7 = (undefined8 *)0x0;\n  }" (if "if") (parenthesized_expression "(*pcVar3 == '/')" (( "(") (binary_expression "*pcVar3 == '/'" (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n    puVar7 = (undefined8 *)0x0;\n  }" ({ "{") (expression_statement "puVar7 = (undefined8 *)0x0;" (assignment_expression "puVar7 = (undefined8 *)0x0" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "pcVar3 = (char *)0x0;" (assignment_expression "pcVar3 = (char *)0x0" (identifier "pcVar3") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (do_statement "do {\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  } while( true );" (do "do") (compound_statement "{\n    if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }\n    __stream = fopen(&local_2438,"r");\n    if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }\n    if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }\n    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));\n    pcVar4[0] = '/';\n    pcVar4[1] = '\0';\n    if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }\n    puVar7 = (undefined8 *)*puVar7;\n  }" ({ "{") (if_statement "if ((DAT_001195e4._1_1_ & 0x20) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }" (if "if") (parenthesized_expression "((DAT_001195e4._1_1_ & 0x20) != 0)" (( "(") (binary_expression "(DAT_001195e4._1_1_ & 0x20) != 0" (parenthesized_expression "(DAT_001195e4._1_1_ & 0x20)" (( "(") (binary_expression "DAT_001195e4._1_1_ & 0x20" (field_expression "DAT_001195e4._1_1_" (identifier "DAT_001195e4") (. ".") (field_identifier "_1_1_")) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);\n    }" ({ "{") (expression_statement "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438);" (call_expression "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438)" (identifier "printf") (argument_list "("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),\n             &local_2438)" (( "(") (string_literal ""[annotate_source]: looking for %s, trying %s\n"" (" """) (string_content "[annotate_source]: looking for %s, trying %s") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined8 *)(param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "&local_2438" (& "&") (identifier "local_2438")) () ")"))) (; ";")) (} "}"))) (expression_statement "__stream = fopen(&local_2438,"r");" (assignment_expression "__stream = fopen(&local_2438,"r")" (identifier "__stream") (= "=") (call_expression "fopen(&local_2438,"r")" (identifier "fopen") (argument_list "(&local_2438,"r")" (( "(") (pointer_expression "&local_2438" (& "&") (identifier "local_2438")) (, ",") (string_literal ""r"" (" """) (string_content "r") (" """)) () ")")))) (; ";")) (if_statement "if (__stream != (FILE *)0x0) {\n      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\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      __stream_00 = stdout;\n      if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }\n      if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }\n      if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }\n      uVar2 = *(undefined8 *)(param_1 + 8);\n      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar3,uVar2);\nLAB_0010bd0e:\n      bVar9 = true;\n      iVar8 = 1;\n      pcVar3 = (char *)xmalloc(param_2 + 1);\n      while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }\n      free(pcVar3);\n      fclose(__stream);\n      return __stream_00;\n    }" ({ "{") (expression_statement "__stream_00 = stdout;" (assignment_expression "__stream_00 = stdout" (identifier "__stream_00") (= "=") (identifier "stdout")) (; ";")) (if_statement "if (DAT_00119630 != 0) {\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }" (if "if") (parenthesized_expression "(DAT_00119630 != 0)" (( "(") (binary_expression "DAT_00119630 != 0" (identifier "DAT_00119630") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar3 = *(char **)(param_1 + 8);\n        pcVar4 = strrchr(pcVar3,0x2f);\n        if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }\n        pcVar3 = stpcpy(&local_2438,pcVar3);\n        builtin_strncpy(pcVar3,"-ann",5);\n        __stream_00 = fopen(&local_2438,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }\n        if (stdout != __stream_00) goto LAB_0010bd0e;\n      }" ({ "{") (expression_statement "pcVar3 = *(char **)(param_1 + 8);" (assignment_expression "pcVar3 = *(char **)(param_1 + 8)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(param_1 + 8)" (* "*") (cast_expression "(char **)(param_1 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar4 = strrchr(pcVar3,0x2f);" (assignment_expression "pcVar4 = strrchr(pcVar3,0x2f)" (identifier "pcVar4") (= "=") (call_expression "strrchr(pcVar3,0x2f)" (identifier "strrchr") (argument_list "(pcVar3,0x2f)" (( "(") (identifier "pcVar3") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (if_statement "if (pcVar4 != (char *)0x0) {\n          pcVar3 = pcVar4 + 1;\n        }" (if "if") (parenthesized_expression "(pcVar4 != (char *)0x0)" (( "(") (binary_expression "pcVar4 != (char *)0x0" (identifier "pcVar4") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          pcVar3 = pcVar4 + 1;\n        }" ({ "{") (expression_statement "pcVar3 = pcVar4 + 1;" (assignment_expression "pcVar3 = pcVar4 + 1" (identifier "pcVar3") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pcVar3 = stpcpy(&local_2438,pcVar3);" (assignment_expression "pcVar3 = stpcpy(&local_2438,pcVar3)" (identifier "pcVar3") (= "=") (call_expression "stpcpy(&local_2438,pcVar3)" (identifier "stpcpy") (argument_list "(&local_2438,pcVar3)" (( "(") (pointer_expression "&local_2438" (& "&") (identifier "local_2438")) (, ",") (identifier "pcVar3") () ")")))) (; ";")) (expression_statement "builtin_strncpy(pcVar3,"-ann",5);" (call_expression "builtin_strncpy(pcVar3,"-ann",5)" (identifier "builtin_strncpy") (argument_list "(pcVar3,"-ann",5)" (( "(") (identifier "pcVar3") (, ",") (string_literal ""-ann"" (" """) (string_content "-ann") (" """)) (, ",") (number_literal "5") () ")"))) (; ";")) (expression_statement "__stream_00 = fopen(&local_2438,"w");" (assignment_expression "__stream_00 = fopen(&local_2438,"w")" (identifier "__stream_00") (= "=") (call_expression "fopen(&local_2438,"w")" (identifier "fopen") (argument_list "(&local_2438,"w")" (( "(") (pointer_expression "&local_2438" (& "&") (identifier "local_2438")) (, ",") (string_literal ""w"" (" """) (string_content "w") (" """)) () ")")))) (; ";")) (if_statement "if (__stream_00 == (FILE *)0x0) {\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }" (if "if") (parenthesized_expression "(__stream_00 == (FILE *)0x0)" (( "(") (binary_expression "__stream_00 == (FILE *)0x0" (identifier "__stream_00") (== "==") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          perror(&local_2438);\n          return (FILE *)0x0;\n        }" ({ "{") (expression_statement "perror(&local_2438);" (call_expression "perror(&local_2438)" (identifier "perror") (argument_list "(&local_2438)" (( "(") (pointer_expression "&local_2438" (& "&") (identifier "local_2438")) () ")"))) (; ";")) (return_statement "return (FILE *)0x0;" (return "return") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (if_statement "if (stdout != __stream_00) goto LAB_0010bd0e;" (if "if") (parenthesized_expression "(stdout != __stream_00)" (( "(") (binary_expression "stdout != __stream_00" (identifier "stdout") (!= "!=") (identifier "__stream_00")) () ")")) (goto_statement "goto LAB_0010bd0e;" (goto "goto") (statement_identifier "LAB_0010bd0e") (; ";"))) (} "}"))) (if_statement "if (DAT_001188b0 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_001188b0 = 0;\n      }" (if "if") (parenthesized_expression "(DAT_001188b0 == 0)" (( "(") (binary_expression "DAT_001188b0 == 0" (identifier "DAT_001188b0") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        fputc(10,__stream_00);\n      }" ({ "{") (expression_statement "fputc(10,__stream_00);" (call_expression "fputc(10,__stream_00)" (identifier "fputc") (argument_list "(10,__stream_00)" (( "(") (number_literal "10") (, ",") (identifier "__stream_00") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        DAT_001188b0 = 0;\n      }" (else "else") (compound_statement "{\n        DAT_001188b0 = 0;\n      }" ({ "{") (expression_statement "DAT_001188b0 = 0;" (assignment_expression "DAT_001188b0 = 0" (identifier "DAT_001188b0") (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (DAT_001182d8 == 0) {\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }\n      else {\n        DAT_001182d8 = 0;\n      }" (if "if") (parenthesized_expression "(DAT_001182d8 == 0)" (( "(") (binary_expression "DAT_001182d8 == 0" (identifier "DAT_001182d8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        fwrite(&DAT_00111f89,1,2,__stream_00);\n      }" ({ "{") (expression_statement "fwrite(&DAT_00111f89,1,2,__stream_00);" (call_expression "fwrite(&DAT_00111f89,1,2,__stream_00)" (identifier "fwrite") (argument_list "(&DAT_00111f89,1,2,__stream_00)" (( "(") (pointer_expression "&DAT_00111f89" (& "&") (identifier "DAT_00111f89")) (, ",") (number_literal "1") (, ",") (number_literal "2") (, ",") (identifier "__stream_00") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        DAT_001182d8 = 0;\n      }" (else "else") (compound_statement "{\n        DAT_001182d8 = 0;\n      }" ({ "{") (expression_statement "DAT_001182d8 = 0;" (assignment_expression "DAT_001182d8 = 0" (identifier "DAT_001182d8") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "uVar2 = *(undefined8 *)(param_1 + 8);" (assignment_expression "uVar2 = *(undefined8 *)(param_1 + 8)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined8 *)(param_1 + 8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);" (assignment_expression "pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5)" (identifier "pcVar3") (= "=") (cast_expression "(char *)dcgettext("gprof","*** File %s:\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext("gprof","*** File %s:\n",5)" (identifier "dcgettext") (argument_list "("gprof","*** File %s:\n",5)" (( "(") (string_literal ""gprof"" (" """) (string_content "gprof") (" """)) (, ",") (string_literal ""*** File %s:\n"" (" """) (string_content "*** File %s:") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(__stream_00,pcVar3,uVar2);" (call_expression "fprintf(__stream_00,pcVar3,uVar2)" (identifier "fprintf") (argument_list "(__stream_00,pcVar3,uVar2)" (( "(") (identifier "__stream_00") (, ",") (identifier "pcVar3") (, ",") (identifier "uVar2") () ")"))) (; ";")) (labeled_statement "LAB_0010bd0e:\n      bVar9 = true;" (statement_identifier "LAB_0010bd0e") (: ":") (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" (identifier "bVar9") (= "=") (true "true")) (; ";"))) (expression_statement "iVar8 = 1;" (assignment_expression "iVar8 = 1" (identifier "iVar8") (= "=") (number_literal "1")) (; ";")) (expression_statement "pcVar3 = (char *)xmalloc(param_2 + 1);" (assignment_expression "pcVar3 = (char *)xmalloc(param_2 + 1)" (identifier "pcVar3") (= "=") (cast_expression "(char *)xmalloc(param_2 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "xmalloc(param_2 + 1)" (identifier "xmalloc") (argument_list "(param_2 + 1)" (( "(") (binary_expression "param_2 + 1" (identifier "param_2") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (while_statement "while( true ) {\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        sVar5 = fread(&local_2038,1,0x2000,__stream);\n        if ((int)sVar5 < 1) break;\n        pcVar4 = &local_2038;\n        do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));\n      }" ({ "{") (expression_statement "sVar5 = fread(&local_2038,1,0x2000,__stream);" (assignment_expression "sVar5 = fread(&local_2038,1,0x2000,__stream)" (identifier "sVar5") (= "=") (call_expression "fread(&local_2038,1,0x2000,__stream)" (identifier "fread") (argument_list "(&local_2038,1,0x2000,__stream)" (( "(") (pointer_expression "&local_2038" (& "&") (identifier "local_2038")) (, ",") (number_literal "1") (, ",") (number_literal "0x2000") (, ",") (identifier "__stream") () ")")))) (; ";")) (if_statement "if ((int)sVar5 < 1) break;" (if "if") (parenthesized_expression "((int)sVar5 < 1)" (( "(") (binary_expression "(int)sVar5 < 1" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (< "<") (number_literal "1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pcVar4 = &local_2038;" (assignment_expression "pcVar4 = &local_2038" (identifier "pcVar4") (= "=") (pointer_expression "&local_2038" (& "&") (identifier "local_2038"))) (; ";")) (do_statement "do {\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));" (do "do") (compound_statement "{\n          if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }\n          cVar1 = *pcVar4;\n          bVar9 = cVar1 == '\n';\n          pcVar4 = pcVar4 + 1;\n          fputc((int)cVar1,__stream_00);\n        }" ({ "{") (if_statement "if (bVar9) {\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }" (if "if") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (compound_statement "{\n            (*param_3)(pcVar3,param_2,iVar8,param_4);\n            fputs(pcVar3,__stream_00);\n            iVar8 = iVar8 + 1;\n          }" ({ "{") (expression_statement "(*param_3)(pcVar3,param_2,iVar8,param_4);" (call_expression "(*param_3)(pcVar3,param_2,iVar8,param_4)" (parenthesized_expression "(*param_3)" (( "(") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")")) (argument_list "(pcVar3,param_2,iVar8,param_4)" (( "(") (identifier "pcVar3") (, ",") (identifier "param_2") (, ",") (identifier "iVar8") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "fputs(pcVar3,__stream_00);" (call_expression "fputs(pcVar3,__stream_00)" (identifier "fputs") (argument_list "(pcVar3,__stream_00)" (( "(") (identifier "pcVar3") (, ",") (identifier "__stream_00") () ")"))) (; ";")) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "cVar1 = *pcVar4;" (assignment_expression "cVar1 = *pcVar4" (identifier "cVar1") (= "=") (pointer_expression "*pcVar4" (* "*") (identifier "pcVar4"))) (; ";")) (expression_statement "bVar9 = cVar1 == '\n';" (assignment_expression "bVar9 = cVar1 == '\n'" (identifier "bVar9") (= "=") (binary_expression "cVar1 == '\n'" (identifier "cVar1") (== "==") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'")))) (; ";")) (expression_statement "pcVar4 = pcVar4 + 1;" (assignment_expression "pcVar4 = pcVar4 + 1" (identifier "pcVar4") (= "=") (binary_expression "pcVar4 + 1" (identifier "pcVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "fputc((int)cVar1,__stream_00);" (call_expression "fputc((int)cVar1,__stream_00)" (identifier "fputc") (argument_list "((int)cVar1,__stream_00)" (( "(") (cast_expression "(int)cVar1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "cVar1")) (, ",") (identifier "__stream_00") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pcVar4 != local_2037 + ((int)sVar5 - 1))" (( "(") (binary_expression "pcVar4 != local_2037 + ((int)sVar5 - 1)" (identifier "pcVar4") (!= "!=") (binary_expression "local_2037 + ((int)sVar5 - 1)" (identifier "local_2037") (+ "+") (parenthesized_expression "((int)sVar5 - 1)" (( "(") (binary_expression "(int)sVar5 - 1" (cast_expression "(int)sVar5" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar5")) (- "-") (number_literal "1")) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "free(pcVar3);" (call_expression "free(pcVar3)" (identifier "free") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" (identifier "fclose") (argument_list "(__stream)" (( "(") (identifier "__stream") () ")"))) (; ";")) (return_statement "return __stream_00;" (return "return") (identifier "__stream_00") (; ";")) (} "}"))) (if_statement "if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0" (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "puVar7 == (undefined8 *)0x0" (identifier "puVar7") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n      pcVar4 = *(char **)(param_1 + 8);\n      pcVar3 = strrchr(pcVar4,0x2f);\n      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;\n      pcVar3 = pcVar3 + 1;\n      puVar7 = DAT_00119620;\n    }" ({ "{") (expression_statement "pcVar4 = *(char **)(param_1 + 8);" (assignment_expression "pcVar4 = *(char **)(param_1 + 8)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 8)" (* "*") (cast_expression "(char **)(param_1 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strrchr(pcVar4,0x2f);" (assignment_expression "pcVar3 = strrchr(pcVar4,0x2f)" (identifier "pcVar3") (= "=") (call_expression "strrchr(pcVar4,0x2f)" (identifier "strrchr") (argument_list "(pcVar4,0x2f)" (( "(") (identifier "pcVar4") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0010bdf8;" (goto "goto") (statement_identifier "LAB_0010bdf8") (; ";"))) (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" (identifier "pcVar3") (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = DAT_00119620;" (assignment_expression "puVar7 = DAT_00119620" (identifier "puVar7") (= "=") (identifier "DAT_00119620")) (; ";")) (} "}"))) (if_statement "if (puVar7 == (undefined8 *)0x0) {\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }" (if "if") (parenthesized_expression "(puVar7 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar7 == (undefined8 *)0x0" (identifier "puVar7") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pcVar4 = *(char **)(param_1 + 8);\nLAB_0010bdf8:\n      piVar6 = __errno_location();\n      uVar2 = DAT_00119b10;\n      if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }\n      return (FILE *)0x0;\n    }" ({ "{") (expression_statement "pcVar4 = *(char **)(param_1 + 8);" (assignment_expression "pcVar4 = *(char **)(param_1 + 8)" (identifier "pcVar4") (= "=") (pointer_expression "*(char **)(param_1 + 8)" (* "*") (cast_expression "(char **)(param_1 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (labeled_statement "LAB_0010bdf8:\n      piVar6 = __errno_location();" (statement_identifier "LAB_0010bdf8") (: ":") (expression_statement "piVar6 = __errno_location();" (assignment_expression "piVar6 = __errno_location()" (identifier "piVar6") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "uVar2 = DAT_00119b10;" (assignment_expression "uVar2 = DAT_00119b10" (identifier "uVar2") (= "=") (identifier "DAT_00119b10")) (; ";")) (if_statement "if (*piVar6 == 2) {\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }\n      else {\n        perror(pcVar4);\n      }" (if "if") (parenthesized_expression "(*piVar6 == 2)" (( "(") (binary_expression "*piVar6 == 2" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (== "==") (number_literal "2")) () ")")) (compound_statement "{\n        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n        fprintf(stderr,pcVar3,uVar2,pcVar4);\n      }" ({ "{") (expression_statement "pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);" (assignment_expression "pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5)" (identifier "pcVar3") (= "=") (cast_expression "(char *)dcgettext("gprof","%s: could not locate `%s\'\n",5)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "dcgettext("gprof","%s: could not locate `%s\'\n",5)" (identifier "dcgettext") (argument_list "("gprof","%s: could not locate `%s\'\n",5)" (( "(") (string_literal ""gprof"" (" """) (string_content "gprof") (" """)) (, ",") (string_literal ""%s: could not locate `%s\'\n"" (" """) (string_content "%s: could not locate `%s") (escape_sequence "\'") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")"))))) (; ";")) (expression_statement "fprintf(stderr,pcVar3,uVar2,pcVar4);" (call_expression "fprintf(stderr,pcVar3,uVar2,pcVar4)" (identifier "fprintf") (argument_list "(stderr,pcVar3,uVar2,pcVar4)" (( "(") (identifier "stderr") (, ",") (identifier "pcVar3") (, ",") (identifier "uVar2") (, ",") (identifier "pcVar4") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        perror(pcVar4);\n      }" (else "else") (compound_statement "{\n        perror(pcVar4);\n      }" ({ "{") (expression_statement "perror(pcVar4);" (call_expression "perror(pcVar4)" (identifier "perror") (argument_list "(pcVar4)" (( "(") (identifier "pcVar4") () ")"))) (; ";")) (} "}")))) (return_statement "return (FILE *)0x0;" (return "return") (cast_expression "(FILE *)0x0" (( "(") (type_descriptor "FILE *" (type_identifier "FILE") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));" (assignment_expression "pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1))" (identifier "pcVar4") (= "=") (call_expression "stpcpy(&local_2438,(char *)(puVar7 + 1))" (identifier "stpcpy") (argument_list "(&local_2438,(char *)(puVar7 + 1))" (( "(") (pointer_expression "&local_2438" (& "&") (identifier "local_2438")) (, ",") (cast_expression "(char *)(puVar7 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar7 + 1)" (( "(") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1")) () ")"))) () ")")))) (; ";")) (expression_statement "pcVar4[0] = '/';" (assignment_expression "pcVar4[0] = '/'" (subscript_expression "pcVar4[0]" (identifier "pcVar4") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'/'" (' "'") (character "/") (' "'"))) (; ";")) (expression_statement "pcVar4[1] = '\0';" (assignment_expression "pcVar4[1] = '\0'" (subscript_expression "pcVar4[1]" (identifier "pcVar4") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (pcVar3 == (char *)0x0) {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }\n    else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }" (if "if") (parenthesized_expression "(pcVar3 == (char *)0x0)" (( "(") (binary_expression "pcVar3 == (char *)0x0" (identifier "pcVar3") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));\n    }" ({ "{") (expression_statement "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));" (call_expression "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8))" (identifier "strcpy") (argument_list "(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8))" (( "(") (binary_expression "pcVar4 + (long)(acStack_2437 + -(long)&local_2438)" (identifier "pcVar4") (+ "+") (cast_expression "(long)(acStack_2437 + -(long)&local_2438)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(acStack_2437 + -(long)&local_2438)" (( "(") (binary_expression "acStack_2437 + -(long)&local_2438" (identifier "acStack_2437") (+ "+") (unary_expression "-(long)&local_2438" (- "-") (cast_expression "(long)&local_2438" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_2438" (& "&") (identifier "local_2438"))))) () ")")))) (, ",") (pointer_expression "*(char **)(param_1 + 8)" (* "*") (cast_expression "(char **)(param_1 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) () ")"))) (; ";")) (} "}")) (else_clause "else {\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }" (else "else") (compound_statement "{\n      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);\n    }" ({ "{") (expression_statement "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);" (call_expression "strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3)" (identifier "strcpy") (argument_list "(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3)" (( "(") (binary_expression "pcVar4 + (long)(acStack_2437 + -(long)&local_2438)" (identifier "pcVar4") (+ "+") (cast_expression "(long)(acStack_2437 + -(long)&local_2438)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(acStack_2437 + -(long)&local_2438)" (( "(") (binary_expression "acStack_2437 + -(long)&local_2438" (identifier "acStack_2437") (+ "+") (unary_expression "-(long)&local_2438" (- "-") (cast_expression "(long)&local_2438" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_2438" (& "&") (identifier "local_2438"))))) () ")")))) (, ",") (identifier "pcVar3") () ")"))) (; ";")) (} "}")))) (expression_statement "puVar7 = (undefined8 *)*puVar7;" (assignment_expression "puVar7 = (undefined8 *)*puVar7" (identifier "puVar7") (= "=") (cast_expression "(undefined8 *)*puVar7" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

type_1 * function_1(type_2 *sf,type_3 var_19,type_4 *annote,
                      void *arg)

{
  char var_23;
  type_1 *var_4;
  char *var_27;
  char *var_7;
  type_1 *var_10;
  size_t sVar4;
  int *piVar5;
  char *__format;
  type_5 *var_28;
  int var_22;
  bool bVar8;
  char var_30 [1024];
  char var_24 [8192];
  
  var_28 = src_search_list.head;
  var_27 = sf->name;
  var_1(var_30,var_27);
  if (*var_27 == '/') {
    var_28 = (type_5 *)0x0;
  }
  var_27 = (char *)0x0;
  do {
    if ((debug_level._1_1_ & 0x20) != 0) {
      var_2("[annotate_source]: looking for %s, trying %s\n",sf->name,var_30);
    }
    var_4 = var_3(var_30,"r");
    if (var_4 != (type_1 *)0x0) {
      var_10 = var_12;
      if (var_5 != 0) {
        var_27 = sf->name;
        var_7 = var_6(var_27,0x2f);
        if (var_7 != (char *)0x0) {
          var_27 = var_7 + 1;
        }
        var_27 = var_8(var_30,var_27);
        var_9(var_27,"-ann",5);
        var_10 = var_3(var_30,"w");
        if (var_10 == (type_1 *)0x0) {
          var_11(var_30);
          return (type_1 *)0x0;
        }
        if (var_12 != var_10) goto LAB_0010bd0e;
      }
      if (function_1::first_file == 0) {
        var_13(10,var_10);
      }
      else {
        annotate_source::first_file = 0;
      }
      if (var_14 == 0) {
        var_15(&DAT_00111f89,1,2,var_10);
      }
      else {
        var_14 = 0;
      }
      var_27 = sf->name;
      var_7 = (char *)var_16("gprof","*** File %s:\n",5);
      var_17(var_10,var_7,var_27);
LAB_0010bd0e:
      bVar8 = true;
      var_22 = 1;
      var_27 = (char *)var_18(var_19 + 1);
      while( true ) {
        sVar4 = var_20(var_24,1,0x2000,var_4);
        if ((int)sVar4 < 1) break;
        var_7 = var_24;
        do {
          if (bVar8) {
            (*annote)(var_27,var_19,var_22,arg);
            var_21(var_27,var_10);
            var_22 = var_22 + 1;
          }
          var_23 = *var_7;
          bVar8 = var_23 == '\n';
          var_7 = var_7 + 1;
          var_13((int)var_23,var_10);
        } while (var_7 != var_24 + (ulong)((int)sVar4 - 1) + 1);
      }
      var_25(var_27);
      var_26(var_4);
      return (type_1 *)var_10;
    }
    if (var_27 == (char *)0x0 && var_28 == (type_5 *)0x0) {
      var_7 = sf->name;
      var_27 = var_6(var_7,0x2f);
      if (var_27 == (char *)0x0) goto LAB_0010bdf8;
      var_27 = var_27 + 1;
      var_28 = src_search_list.head;
    }
    if (var_28 == (type_5 *)0x0) {
      var_7 = sf->name;
LAB_0010bdf8:
      piVar5 = var_29();
      var_27 = whoami;
      if (*piVar5 == 2) {
        __format = (char *)var_16("gprof","%s: could not locate `%s\'\n",5);
        var_17(stderr,__format,var_27,var_7);
      }
      else {
        var_11(var_7);
      }
      return (type_1 *)0x0;
    }
    var_7 = var_8(var_30,var_28->path);
    var_7[0] = '/';
    var_7[1] = '\0';
    if (var_27 == (char *)0x0) {
      var_1(var_7 + (long)(var_30 + (1 - (long)var_30)),sf->name);
    }
    else {
      var_1(var_7 + (long)(var_30 + (1 - (long)var_30)),var_27);
    }
    var_28 = var_28->next;
  } while( true );
}


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

FILE * MASKED(long param_1,int param_2,code *param_3,undefined8 param_4)

{
  char cVar1;
  undefined8 uVar2;
  FILE *__stream;
  char *pcVar3;
  char *pcVar4;
  FILE *__stream_00;
  size_t sVar5;
  int *piVar6;
  undefined8 *puVar7;
  int iVar8;
  bool bVar9;
  char local_2438;
  char acStack_2437 [1023];
  char local_2038;
  char local_2037 [8199];
  
  puVar7 = DAT_00119620;
  pcVar3 = *(char **)(param_1 + 8);
  strcpy(&local_2438,pcVar3);
  if (*pcVar3 == '/') {
    puVar7 = (undefined8 *)0x0;
  }
  pcVar3 = (char *)0x0;
  do {
    if ((DAT_001195e4._1_1_ & 0x20) != 0) {
      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined8 *)(param_1 + 8),
             &local_2438);
    }
    __stream = fopen(&local_2438,"r");
    if (__stream != (FILE *)0x0) {
      __stream_00 = stdout;
      if (DAT_00119630 != 0) {
        pcVar3 = *(char **)(param_1 + 8);
        pcVar4 = strrchr(pcVar3,0x2f);
        if (pcVar4 != (char *)0x0) {
          pcVar3 = pcVar4 + 1;
        }
        pcVar3 = stpcpy(&local_2438,pcVar3);
        builtin_strncpy(pcVar3,"-ann",5);
        __stream_00 = fopen(&local_2438,"w");
        if (__stream_00 == (FILE *)0x0) {
          perror(&local_2438);
          return (FILE *)0x0;
        }
        if (stdout != __stream_00) goto LAB_0010bd0e;
      }
      if (DAT_001188b0 == 0) {
        fputc(10,__stream_00);
      }
      else {
        DAT_001188b0 = 0;
      }
      if (DAT_001182d8 == 0) {
        fwrite(&DAT_00111f89,1,2,__stream_00);
      }
      else {
        DAT_001182d8 = 0;
      }
      uVar2 = *(undefined8 *)(param_1 + 8);
      pcVar3 = (char *)dcgettext("gprof","*** File %s:\n",5);
      fprintf(__stream_00,pcVar3,uVar2);
LAB_0010bd0e:
      bVar9 = true;
      iVar8 = 1;
      pcVar3 = (char *)xmalloc(param_2 + 1);
      while( true ) {
        sVar5 = fread(&local_2038,1,0x2000,__stream);
        if ((int)sVar5 < 1) break;
        pcVar4 = &local_2038;
        do {
          if (bVar9) {
            (*param_3)(pcVar3,param_2,iVar8,param_4);
            fputs(pcVar3,__stream_00);
            iVar8 = iVar8 + 1;
          }
          cVar1 = *pcVar4;
          bVar9 = cVar1 == '\n';
          pcVar4 = pcVar4 + 1;
          fputc((int)cVar1,__stream_00);
        } while (pcVar4 != local_2037 + ((int)sVar5 - 1));
      }
      free(pcVar3);
      fclose(__stream);
      return __stream_00;
    }
    if (pcVar3 == (char *)0x0 && puVar7 == (undefined8 *)0x0) {
      pcVar4 = *(char **)(param_1 + 8);
      pcVar3 = strrchr(pcVar4,0x2f);
      if (pcVar3 == (char *)0x0) goto LAB_0010bdf8;
      pcVar3 = pcVar3 + 1;
      puVar7 = DAT_00119620;
    }
    if (puVar7 == (undefined8 *)0x0) {
      pcVar4 = *(char **)(param_1 + 8);
LAB_0010bdf8:
      piVar6 = __errno_location();
      uVar2 = DAT_00119b10;
      if (*piVar6 == 2) {
        pcVar3 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);
        fprintf(stderr,pcVar3,uVar2,pcVar4);
      }
      else {
        perror(pcVar4);
      }
      return (FILE *)0x0;
    }
    pcVar4 = stpcpy(&local_2438,(char *)(puVar7 + 1));
    pcVar4[0] = '/';
    pcVar4[1] = '\0';
    if (pcVar3 == (char *)0x0) {
      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),*(char **)(param_1 + 8));
    }
    else {
      strcpy(pcVar4 + (long)(acStack_2437 + -(long)&local_2438),pcVar3);
    }
    puVar7 = (undefined8 *)*puVar7;
  } while( true );
}

