
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

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;
  FILE *__stream_00;
  size_t sVar3;
  int *piVar4;
  char *__format;
  char *pcVar5;
  search_list_elem *psVar6;
  bool bVar7;
  int local_2428;
  char fname [1024];
  char buf [8192];
  
  psVar6 = src_search_list.head;
  pcVar5 = sf->name;
  strcpy(fname,pcVar5);
  if (*pcVar5 == '/') {
    psVar6 = (search_list_elem *)0x0;
  }
  pcVar5 = (char *)0x0;
  do {
    if ((debug_level & 0x2000U) != 0) {
      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);
    }
    __stream = fopen64(fname,"r");
    if (__stream != (FILE *)0x0) {
      if (create_annotation_files == 0) {
        __stream_00 = *(FILE **)PTR_stdout_0002cfec;
      }
      else {
        pcVar5 = sf->name;
        pcVar2 = strrchr(pcVar5,0x2f);
        if (pcVar2 != (char *)0x0) {
          pcVar5 = pcVar2 + 1;
        }
        pcVar5 = stpcpy(fname,pcVar5);
        builtin_strncpy(pcVar5,"-ann",5);
        __stream_00 = fopen64(fname,"w");
        if (__stream_00 == (FILE *)0x0) {
          perror(fname);
          return (FILE *)0x0;
        }
        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;
      }
      if (annotate_source::first_file == 0) {
        fputc(10,__stream_00);
      }
      else {
        annotate_source::first_file = 0;
      }
      if (first_output == 0) {
        fwrite(&DAT_00023e89,1,2,__stream_00);
      }
      else {
        first_output = 0;
      }
      pcVar5 = sf->name;
      pcVar2 = (char *)dcgettext("gprof","*** File %s:\n",5);
      fprintf(__stream_00,pcVar2,pcVar5);
LAB_0001cafc:
      bVar7 = true;
      pcVar5 = (char *)xmalloc(max_width + 1);
      local_2428 = 1;
      while (sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3) {
        pcVar2 = buf;
        do {
          if (bVar7) {
            (*annote)(pcVar5,max_width,local_2428,arg);
            fputs(pcVar5,__stream_00);
            local_2428 = local_2428 + 1;
          }
          cVar1 = *pcVar2;
          bVar7 = cVar1 == '\n';
          pcVar2 = pcVar2 + 1;
          fputc((int)cVar1,__stream_00);
        } while (pcVar2 != buf + sVar3);
      }
      free(pcVar5);
      fclose(__stream);
      return (FILE *)__stream_00;
    }
    if (pcVar5 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {
      pcVar2 = sf->name;
      pcVar5 = strrchr(pcVar2,0x2f);
      if (pcVar5 == (char *)0x0) goto LAB_0001cc60;
      pcVar5 = pcVar5 + 1;
      psVar6 = src_search_list.head;
    }
    if (psVar6 == (search_list_elem *)0x0) {
      pcVar2 = sf->name;
LAB_0001cc60:
      piVar4 = __errno_location();
      pcVar5 = whoami;
      if (*piVar4 != 2) {
        perror(pcVar2);
        return (FILE *)0x0;
      }
      __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);
      fprintf(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2);
      return (FILE *)0x0;
    }
    pcVar2 = stpcpy(fname,psVar6->path);
    pcVar2[0] = '/';
    pcVar2[1] = '\0';
    if (pcVar5 == (char *)0x0) {
      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name);
      psVar6 = psVar6->next;
    }
    else {
      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);
      psVar6 = psVar6->next;
    }
  } while( true );
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

FILE * FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)

{
  char cVar1;
  undefined4 uVar2;
  FILE *__stream;
  char *pcVar3;
  FILE *__stream_00;
  size_t sVar4;
  int *piVar5;
  char *pcVar6;
  undefined4 *puVar7;
  bool bVar8;
  int local_2428;
  char local_241c;
  char acStack_241b [1023];
  char local_201c [8200];
  undefined4 uStack_14;
  
  puVar7 = DAT_0002e17c;
  uStack_14 = 0x1c949;
  pcVar6 = *(char **)(param_1 + 4);
  strcpy(&local_241c,pcVar6);
  if (*pcVar6 == '/') {
    puVar7 = (undefined4 *)0x0;
  }
  pcVar6 = (char *)0x0;
  do {
    if ((DAT_0002e158 & 0x2000) != 0) {
      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),
             &local_241c);
    }
    __stream = fopen64(&local_241c,"r");
    if (__stream != (FILE *)0x0) {
      if (DAT_0002e184 == 0) {
        __stream_00 = *(FILE **)PTR_stdout_0002cfec;
      }
      else {
        pcVar6 = *(char **)(param_1 + 4);
        pcVar3 = strrchr(pcVar6,0x2f);
        if (pcVar3 != (char *)0x0) {
          pcVar6 = pcVar3 + 1;
        }
        pcVar6 = stpcpy(&local_241c,pcVar6);
        builtin_strncpy(pcVar6,"-ann",5);
        __stream_00 = fopen64(&local_241c,"w");
        if (__stream_00 == (FILE *)0x0) {
          perror(&local_241c);
          return (FILE *)0x0;
        }
        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;
      }
      if (DAT_0002d4b8 == 0) {
        fputc(10,__stream_00);
      }
      else {
        DAT_0002d4b8 = 0;
      }
      if (DAT_0002d1b8 == 0) {
        fwrite(&DAT_00023e89,1,2,__stream_00);
      }
      else {
        DAT_0002d1b8 = 0;
      }
      uVar2 = *(undefined4 *)(param_1 + 4);
      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);
      fprintf(__stream_00,pcVar6,uVar2);
LAB_0001cafc:
      bVar8 = true;
      pcVar6 = (char *)xmalloc(param_2 + 1);
      local_2428 = 1;
      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {
        pcVar3 = local_201c;
        do {
          if (bVar8) {
            (*param_3)(pcVar6,param_2,local_2428,param_4);
            fputs(pcVar6,__stream_00);
            local_2428 = local_2428 + 1;
          }
          cVar1 = *pcVar3;
          bVar8 = cVar1 == '\n';
          pcVar3 = pcVar3 + 1;
          fputc((int)cVar1,__stream_00);
        } while (pcVar3 != local_201c + sVar4);
      }
      free(pcVar6);
      fclose(__stream);
      return __stream_00;
    }
    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {
      pcVar3 = *(char **)(param_1 + 4);
      pcVar6 = strrchr(pcVar3,0x2f);
      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;
      pcVar6 = pcVar6 + 1;
      puVar7 = DAT_0002e17c;
    }
    if (puVar7 == (undefined4 *)0x0) {
      pcVar3 = *(char **)(param_1 + 4);
LAB_0001cc60:
      piVar5 = __errno_location();
      uVar2 = DAT_0002e508;
      if (*piVar5 != 2) {
        perror(pcVar3);
        return (FILE *)0x0;
      }
      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);
      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);
      return (FILE *)0x0;
    }
    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));
    pcVar3[0] = '/';
    pcVar3[1] = '\0';
    if (pcVar6 == (char *)0x0) {
      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));
      puVar7 = (undefined4 *)*puVar7;
    }
    else {
      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);
      puVar7 = (undefined4 *)*puVar7;
    }
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00013030
ADD EBX,0x106b7
SUB ESP,0x2434
MOV EAX,dword ptr [ESP + 0x2448]
MOV EBP,dword ptr [EAX + 0x4]
MOV ESI,dword ptr [EBX + 0x117c]
PUSH EBP
LEA EDI,[ESP + 0x2c]
PUSH EDI
CALL 0x00012210
ADD ESP,0x10
MOV EAX,0x0
CMP byte ptr [EBP],0x2f
CMOVZ ESI,EAX
LEA EAX,[EBX + 0x1158]
XOR EBP,EBP
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[EBX + 0xffff7281]
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[EBX + 0xffff6e40]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
TEST AH,0x20
JNZ 0x0001ca4d
LEA ESI,[ESI]
SUB ESP,0x8
PUSH dword ptr [ESP + 0x18]
PUSH EDI
CALL 0x000121a0
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0001ca90
MOV EAX,EBP
OR EAX,ESI
JNZ 0x0001c9ff
MOV EAX,dword ptr [ESP + 0x2440]
SUB ESP,0x8
MOV ESI,dword ptr [EAX + 0x4]
PUSH 0x2f
PUSH ESI
CALL 0x000123a0
ADD ESP,0x10
TEST EAX,EAX
JZ 0x0001cc60
MOV ESI,dword ptr [EBX + 0x117c]
LEA EBP,[EAX + 0x1]
TEST ESI,ESI
JZ 0x0001cc56
SUB ESP,0x8
LEA EAX,[ESI + 0x4]
PUSH EAX
PUSH EDI
CALL 0x00012130
MOV ECX,0x2f
ADD ESP,0x10
MOV EDX,EAX
MOV word ptr [EAX],CX
SUB EDX,EDI
TEST EBP,EBP
JZ 0x0001ca70
SUB ESP,0x8
LEA EAX,[EDI + EDX*0x1 + 0x1]
PUSH EBP
PUSH EAX
CALL 0x00012210
MOV ESI,dword ptr [ESI]
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0xc],EAX
TEST AH,0x20
JZ 0x0001c9b8
SUB ESP,0x4
PUSH EDI
MOV EAX,dword ptr [ESP + 0x2448]
PUSH dword ptr [EAX + 0x4]
PUSH dword ptr [ESP + 0x24]
CALL 0x00012070
ADD ESP,0x10
JMP 0x0001c9b8
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x2448]
PUSH dword ptr [EAX + 0x4]
LEA EAX,[EDI + EDX*0x1 + 0x1]
PUSH EAX
CALL 0x00012210
ADD ESP,0x10
MOV ESI,dword ptr [ESI]
JMP 0x0001ca3a
MOV EBP,dword ptr [EBX + 0x1184]
MOV dword ptr [ESP + 0x1c],EAX
TEST EBP,EBP
JZ 0x0001cbc3
MOV EAX,dword ptr [ESP + 0x2440]
SUB ESP,0x8
MOV ESI,dword ptr [EAX + 0x4]
PUSH 0x2f
PUSH ESI
CALL 0x000123a0
POP EBP
POP EDX
TEST EAX,EAX
LEA EDX,[EAX + 0x1]
CMOVNZ ESI,EDX
PUSH ESI
PUSH EDI
CALL 0x00012130
MOV dword ptr [EAX],0x6e6e612d
MOV byte ptr [EAX + 0x4],0x0
LEA EAX,[EBX + 0xffff60e4]
POP ECX
POP ESI
PUSH EAX
PUSH EDI
CALL 0x000121a0
ADD ESP,0x10
MOV EBP,EAX
TEST EAX,EAX
JZ 0x0001ccf3
MOV EAX,dword ptr [EBX + 0xffffffec]
CMP dword ptr [EAX],EBP
JZ 0x0001cbcb
SUB ESP,0xc
MOV ESI,0x1
MOV EAX,dword ptr [ESP + 0x2450]
ADD EAX,0x1
PUSH EAX
CALL 0x000121d0
MOV dword ptr [ESP + 0x20],EAX
ADD ESP,0x10
LEA EAX,[ESP + 0x420]
MOV dword ptr [ESP + 0x14],0x1
MOV dword ptr [ESP + 0x18],EAX
NOP
PUSH dword ptr [ESP + 0x1c]
PUSH 0x2000
PUSH 0x1
PUSH dword ptr [ESP + 0x24]
CALL 0x00012200
ADD ESP,0x10
TEST EAX,EAX
JLE 0x0001cc30
MOV EDX,dword ptr [ESP + 0x18]
ADD EAX,EDX
MOV dword ptr [ESP + 0xc],EAX
MOV EAX,ESI
MOV ESI,EDX
MOV EDI,EAX
NOP
TEST EDI,EDI
JZ 0x0001cb9a
PUSH dword ptr [ESP + 0x244c]
MOV EDI,dword ptr [ESP + 0x18]
PUSH EDI
PUSH dword ptr [ESP + 0x244c]
PUSH dword ptr [ESP + 0x1c]
CALL dword ptr [ESP + 0x2458]
POP EDX
POP ECX
PUSH EBP
PUSH dword ptr [ESP + 0x1c]
CALL 0x00012490
MOV EAX,EDI
ADD EAX,0x1
MOV dword ptr [ESP + 0x24],EAX
ADD ESP,0x10
MOVSX EAX,byte ptr [ESI]
XOR ECX,ECX
CMP AL,0xa
SETZ CL
SUB ESP,0x8
ADD ESI,0x1
PUSH EBP
MOV EDI,ECX
PUSH EAX
CALL 0x000123b0
ADD ESP,0x10
CMP ESI,dword ptr [ESP + 0xc]
JNZ 0x0001cb60
MOV ESI,EDI
JMP 0x0001cb30
MOV EAX,dword ptr [EBX + 0xffffffec]
MOV EBP,dword ptr [EAX]
MOV EDI,dword ptr [EBX + 0x4b8]
TEST EDI,EDI
JZ 0x0001ccc7
MOV dword ptr [EBX + 0x4b8],0x0
LEA EAX,[EBX + 0x1b8]
MOV ESI,dword ptr [EAX]
TEST ESI,ESI
JZ 0x0001ccda
MOV dword ptr [EAX],0x0
MOV EAX,dword ptr [ESP + 0x2440]
SUB ESP,0x4
MOV ESI,dword ptr [EAX + 0x4]
LEA EAX,[EBX + 0xffff6e8c]
PUSH 0x5
PUSH EAX
LEA EAX,[EBX + 0xffff500c]
PUSH EAX
CALL 0x00012120
ADD ESP,0xc
PUSH ESI
PUSH EAX
PUSH EBP
CALL 0x00012310
ADD ESP,0x10
JMP 0x0001cafc
SUB ESP,0xc
PUSH dword ptr [ESP + 0x1c]
CALL 0x00012090
POP EAX
PUSH dword ptr [ESP + 0x28]
CALL 0x000120f0
ADD ESP,0x10
ADD ESP,0x242c
MOV EAX,EBP
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESP + 0x2440]
MOV ESI,dword ptr [EAX + 0x4]
CALL 0x00012350
CMP dword ptr [EAX],0x2
JZ 0x0001cc85
SUB ESP,0xc
XOR EBP,EBP
PUSH ESI
CALL 0x000121b0
ADD ESP,0x10
MOV EAX,EBP
ADD ESP,0x242c
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBX + 0x1508]
SUB ESP,0x4
XOR EBP,EBP
MOV EDI,dword ptr [EAX]
LEA EAX,[EBX + 0xffff6e6e]
PUSH 0x5
PUSH EAX
LEA EAX,[EBX + 0xffff500c]
PUSH EAX
CALL 0x00012120
PUSH ESI
PUSH EDI
PUSH EAX
MOV EAX,dword ptr [EBX + 0xffffffcc]
PUSH dword ptr [EAX]
CALL 0x00012310
ADD ESP,0x20
MOV EAX,EBP
ADD ESP,0x242c
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x8
PUSH EBP
PUSH 0xa
CALL 0x000123b0
ADD ESP,0x10
JMP 0x0001cbe3
LEA EAX,[EBX + 0xffff6e89]
PUSH EBP
PUSH 0x2
PUSH 0x1
PUSH EAX
CALL 0x000121c0
ADD ESP,0x10
JMP 0x0001cbf9
SUB ESP,0xc
PUSH EDI
CALL 0x000121b0
ADD ESP,0x10
JMP 0x0001cc49
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nFILE * FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *pcVar6;\n  undefined4 *puVar7;\n  bool bVar8;\n  int local_2428;\n  char local_241c;\n  char acStack_241b [1023];\n  char local_201c [8200];\n  undefined4 uStack_14;\n  \n  puVar7 = DAT_0002e17c;\n  uStack_14 = 0x1c949;\n  pcVar6 = *(char **)(param_1 + 4);\n  strcpy(&local_241c,pcVar6);\n  if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }\n  pcVar6 = (char *)0x0;\n  do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );\n}\n\n" comment (function_definition "FILE * FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *pcVar6;\n  undefined4 *puVar7;\n  bool bVar8;\n  int local_2428;\n  char local_241c;\n  char acStack_241b [1023];\n  char local_201c [8200];\n  undefined4 uStack_14;\n  \n  puVar7 = DAT_0002e17c;\n  uStack_14 = 0x1c949;\n  pcVar6 = *(char **)(param_1 + 4);\n  strcpy(&local_241c,pcVar6);\n  if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }\n  pcVar6 = (char *)0x0;\n  do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );\n}" type_identifier (pointer_declarator "* FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)" * (function_declarator "FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,int param_2,code *param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "code *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *pcVar6;\n  undefined4 *puVar7;\n  bool bVar8;\n  int local_2428;\n  char local_241c;\n  char acStack_241b [1023];\n  char local_201c [8200];\n  undefined4 uStack_14;\n  \n  puVar7 = DAT_0002e17c;\n  uStack_14 = 0x1c949;\n  pcVar6 = *(char **)(param_1 + 4);\n  strcpy(&local_241c,pcVar6);\n  if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }\n  pcVar6 = (char *)0x0;\n  do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * 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 *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "int local_2428;" primitive_type identifier ;) (declaration "char local_241c;" primitive_type identifier ;) (declaration "char acStack_241b [1023];" primitive_type (array_declarator "acStack_241b [1023]" identifier [ number_literal ]) ;) (declaration "char local_201c [8200];" primitive_type (array_declarator "local_201c [8200]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "puVar7 = DAT_0002e17c;" (assignment_expression "puVar7 = DAT_0002e17c" identifier = identifier) ;) (expression_statement "uStack_14 = 0x1c949;" (assignment_expression "uStack_14 = 0x1c949" identifier = number_literal) ;) (expression_statement "pcVar6 = *(char **)(param_1 + 4);" (assignment_expression "pcVar6 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "strcpy(&local_241c,pcVar6);" (call_expression "strcpy(&local_241c,pcVar6)" identifier (argument_list "(&local_241c,pcVar6)" ( (pointer_expression "&local_241c" & identifier) , identifier ))) ;) (if_statement "if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "(*pcVar6 == '/')" ( (binary_expression "*pcVar6 == '/'" (pointer_expression "*pcVar6" * identifier) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    puVar7 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar7 = (undefined4 *)0x0;" (assignment_expression "puVar7 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );" do (compound_statement "{\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  }" { (if_statement "if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }" if (parenthesized_expression "((DAT_0002e158 & 0x2000) != 0)" ( (binary_expression "(DAT_0002e158 & 0x2000) != 0" (parenthesized_expression "(DAT_0002e158 & 0x2000)" ( (binary_expression "DAT_0002e158 & 0x2000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }" { (expression_statement "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);" (call_expression "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c)" identifier (argument_list "("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c)" ( (string_literal ""[annotate_source]: looking for %s, trying %s\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "&local_241c" & identifier) ))) ;) })) (expression_statement "__stream = fopen64(&local_241c,"r");" (assignment_expression "__stream = fopen64(&local_241c,"r")" identifier = (call_expression "fopen64(&local_241c,"r")" identifier (argument_list "(&local_241c,"r")" ( (pointer_expression "&local_241c" & identifier) , (string_literal ""r"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\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      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }" { (if_statement "if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" if (parenthesized_expression "(DAT_0002e184 == 0)" ( (binary_expression "DAT_0002e184 == 0" identifier == number_literal) )) (compound_statement "{\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }" { (expression_statement "__stream_00 = *(FILE **)PTR_stdout_0002cfec;" (assignment_expression "__stream_00 = *(FILE **)PTR_stdout_0002cfec" identifier = (pointer_expression "*(FILE **)PTR_stdout_0002cfec" * (cast_expression "(FILE **)PTR_stdout_0002cfec" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }) (else_clause "else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" else (compound_statement "{\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" { (expression_statement "pcVar6 = *(char **)(param_1 + 4);" (assignment_expression "pcVar6 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strrchr(pcVar6,0x2f);" (assignment_expression "pcVar3 = strrchr(pcVar6,0x2f)" identifier = (call_expression "strrchr(pcVar6,0x2f)" identifier (argument_list "(pcVar6,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n          pcVar6 = 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          pcVar6 = pcVar3 + 1;\n        }" { (expression_statement "pcVar6 = pcVar3 + 1;" (assignment_expression "pcVar6 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar6 = stpcpy(&local_241c,pcVar6);" (assignment_expression "pcVar6 = stpcpy(&local_241c,pcVar6)" identifier = (call_expression "stpcpy(&local_241c,pcVar6)" identifier (argument_list "(&local_241c,pcVar6)" ( (pointer_expression "&local_241c" & identifier) , identifier )))) ;) (expression_statement "builtin_strncpy(pcVar6,"-ann",5);" (call_expression "builtin_strncpy(pcVar6,"-ann",5)" identifier (argument_list "(pcVar6,"-ann",5)" ( identifier , (string_literal ""-ann"" " string_content ") , number_literal ))) ;) (expression_statement "__stream_00 = fopen64(&local_241c,"w");" (assignment_expression "__stream_00 = fopen64(&local_241c,"w")" identifier = (call_expression "fopen64(&local_241c,"w")" identifier (argument_list "(&local_241c,"w")" ( (pointer_expression "&local_241c" & identifier) , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\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_241c);\n          return (FILE *)0x0;\n        }" { (expression_statement "perror(&local_241c);" (call_expression "perror(&local_241c)" identifier (argument_list "(&local_241c)" ( (pointer_expression "&local_241c" & identifier) ))) ;) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;" if (parenthesized_expression "(*(FILE **)PTR_stdout_0002cfec != __stream_00)" ( (binary_expression "*(FILE **)PTR_stdout_0002cfec != __stream_00" (pointer_expression "*(FILE **)PTR_stdout_0002cfec" * (cast_expression "(FILE **)PTR_stdout_0002cfec" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) != identifier) )) (goto_statement "goto LAB_0001cafc;" goto statement_identifier ;)) }))) (if_statement "if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }" if (parenthesized_expression "(DAT_0002d4b8 == 0)" ( (binary_expression "DAT_0002d4b8 == 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_0002d4b8 = 0;\n      }" else (compound_statement "{\n        DAT_0002d4b8 = 0;\n      }" { (expression_statement "DAT_0002d4b8 = 0;" (assignment_expression "DAT_0002d4b8 = 0" identifier = number_literal) ;) }))) (if_statement "if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }" if (parenthesized_expression "(DAT_0002d1b8 == 0)" ( (binary_expression "DAT_0002d1b8 == 0" identifier == number_literal) )) (compound_statement "{\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }" { (expression_statement "fwrite(&DAT_00023e89,1,2,__stream_00);" (call_expression "fwrite(&DAT_00023e89,1,2,__stream_00)" identifier (argument_list "(&DAT_00023e89,1,2,__stream_00)" ( (pointer_expression "&DAT_00023e89" & identifier) , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n        DAT_0002d1b8 = 0;\n      }" else (compound_statement "{\n        DAT_0002d1b8 = 0;\n      }" { (expression_statement "DAT_0002d1b8 = 0;" (assignment_expression "DAT_0002d1b8 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);" (assignment_expression "pcVar6 = (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,pcVar6,uVar2);" (call_expression "fprintf(__stream_00,pcVar6,uVar2)" identifier (argument_list "(__stream_00,pcVar6,uVar2)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0001cafc:\n      bVar8 = true;" statement_identifier : (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;)) (expression_statement "pcVar6 = (char *)xmalloc(param_2 + 1);" (assignment_expression "pcVar6 = (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) ))))) ;) (expression_statement "local_2428 = 1;" (assignment_expression "local_2428 = 1" identifier = number_literal) ;) (while_statement "while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }" while (parenthesized_expression "(sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4)" ( (comma_expression "sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4" (assignment_expression "sVar4 = fread(local_201c,1,0x2000,__stream)" identifier = (call_expression "fread(local_201c,1,0x2000,__stream)" identifier (argument_list "(local_201c,1,0x2000,__stream)" ( identifier , number_literal , number_literal , identifier )))) , (binary_expression "0 < (int)sVar4" number_literal < (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }" { (expression_statement "pcVar3 = local_201c;" (assignment_expression "pcVar3 = local_201c" identifier = identifier) ;) (do_statement "do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);" do (compound_statement "{\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 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            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }" { (expression_statement "(*param_3)(pcVar6,param_2,local_2428,param_4);" (call_expression "(*param_3)(pcVar6,param_2,local_2428,param_4)" (parenthesized_expression "(*param_3)" ( (pointer_expression "*param_3" * identifier) )) (argument_list "(pcVar6,param_2,local_2428,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "fputs(pcVar6,__stream_00);" (call_expression "fputs(pcVar6,__stream_00)" identifier (argument_list "(pcVar6,__stream_00)" ( identifier , identifier ))) ;) (expression_statement "local_2428 = local_2428 + 1;" (assignment_expression "local_2428 = local_2428 + 1" identifier = (binary_expression "local_2428 + 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 != local_201c + sVar4)" ( (binary_expression "pcVar3 != local_201c + sVar4" identifier != (binary_expression "local_201c + sVar4" identifier + identifier)) )) ;) })) (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) (return_statement "return __stream_00;" return identifier ;) })) (if_statement "if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }" if (parenthesized_expression "(pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0" (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "puVar7 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }" { (expression_statement "pcVar3 = *(char **)(param_1 + 4);" (assignment_expression "pcVar3 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = strrchr(pcVar3,0x2f);" (assignment_expression "pcVar6 = strrchr(pcVar3,0x2f)" identifier = (call_expression "strrchr(pcVar3,0x2f)" identifier (argument_list "(pcVar3,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar6 == (char *)0x0) goto LAB_0001cc60;" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001cc60;" goto statement_identifier ;)) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = DAT_0002e17c;" (assignment_expression "puVar7 = DAT_0002e17c" identifier = identifier) ;) })) (if_statement "if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }" if (parenthesized_expression "(puVar7 == (undefined4 *)0x0)" ( (binary_expression "puVar7 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }" { (expression_statement "pcVar3 = *(char **)(param_1 + 4);" (assignment_expression "pcVar3 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0001cc60:\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 "uVar2 = DAT_0002e508;" (assignment_expression "uVar2 = DAT_0002e508" identifier = identifier) ;) (if_statement "if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }" if (parenthesized_expression "(*piVar5 != 2)" ( (binary_expression "*piVar5 != 2" (pointer_expression "*piVar5" * identifier) != number_literal) )) (compound_statement "{\n        perror(pcVar3);\n        return (FILE *)0x0;\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 "pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);" (assignment_expression "pcVar6 = (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(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);" (call_expression "fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3)" identifier (argument_list "(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3)" ( (pointer_expression "*(FILE **)PTR_stderr_0002cfcc" * (cast_expression "(FILE **)PTR_stderr_0002cfcc" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , identifier , 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(&local_241c,(char *)(puVar7 + 1));" (assignment_expression "pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1))" identifier = (call_expression "stpcpy(&local_241c,(char *)(puVar7 + 1))" identifier (argument_list "(&local_241c,(char *)(puVar7 + 1))" ( (pointer_expression "&local_241c" & 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 "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 (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }" { (expression_statement "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));" (call_expression "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4))" identifier (argument_list "(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4))" ( (binary_expression "pcVar3 + (int)(acStack_241b + -(int)&local_241c)" identifier + (cast_expression "(int)(acStack_241b + -(int)&local_241c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(acStack_241b + -(int)&local_241c)" ( (binary_expression "acStack_241b + -(int)&local_241c" identifier + (unary_expression "-(int)&local_241c" - (cast_expression "(int)&local_241c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_241c" & identifier)))) )))) , (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "puVar7 = (undefined4 *)*puVar7;" (assignment_expression "puVar7 = (undefined4 *)*puVar7" identifier = (cast_expression "(undefined4 *)*puVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) }) (else_clause "else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }" else (compound_statement "{\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }" { (expression_statement "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);" (call_expression "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6)" identifier (argument_list "(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6)" ( (binary_expression "pcVar3 + (int)(acStack_241b + -(int)&local_241c)" identifier + (cast_expression "(int)(acStack_241b + -(int)&local_241c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(acStack_241b + -(int)&local_241c)" ( (binary_expression "acStack_241b + -(int)&local_241c" identifier + (unary_expression "-(int)&local_241c" - (cast_expression "(int)&local_241c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_241c" & identifier)))) )))) , identifier ))) ;) (expression_statement "puVar7 = (undefined4 *)*puVar7;" (assignment_expression "puVar7 = (undefined4 *)*puVar7" identifier = (cast_expression "(undefined4 *)*puVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) }))) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nFILE * 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  FILE *__stream_00;\n  size_t sVar3;\n  int *piVar4;\n  char *__format;\n  char *pcVar5;\n  search_list_elem *psVar6;\n  bool bVar7;\n  int local_2428;\n  char fname [1024];\n  char buf [8192];\n  \n  psVar6 = src_search_list.head;\n  pcVar5 = sf->name;\n  strcpy(fname,pcVar5);\n  if (*pcVar5 == '/') {\n    psVar6 = (search_list_elem *)0x0;\n  }\n  pcVar5 = (char *)0x0;\n  do {\n    if ((debug_level & 0x2000U) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen64(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      if (create_annotation_files == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\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_00023e89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar5 = sf->name;\n      pcVar2 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar2,pcVar5);\nLAB_0001cafc:\n      bVar7 = true;\n      pcVar5 = (char *)xmalloc(max_width + 1);\n      local_2428 = 1;\n      while (sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3) {\n        pcVar2 = buf;\n        do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);\n      }\n      free(pcVar5);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar5 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\n      pcVar5 = strrchr(pcVar2,0x2f);\n      if (pcVar5 == (char *)0x0) goto LAB_0001cc60;\n      pcVar5 = pcVar5 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\nLAB_0001cc60:\n      piVar4 = __errno_location();\n      pcVar5 = whoami;\n      if (*piVar4 != 2) {\n        perror(pcVar2);\n        return (FILE *)0x0;\n      }\n      __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2);\n      return (FILE *)0x0;\n    }\n    pcVar2 = stpcpy(fname,psVar6->path);\n    pcVar2[0] = '/';\n    pcVar2[1] = '\0';\n    if (pcVar5 == (char *)0x0) {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name);\n      psVar6 = psVar6->next;\n    }\n    else {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);\n      psVar6 = psVar6->next;\n    }\n  } while( true );\n}\n\n" comment comment (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  FILE *__stream_00;\n  size_t sVar3;\n  int *piVar4;\n  char *__format;\n  char *pcVar5;\n  search_list_elem *psVar6;\n  bool bVar7;\n  int local_2428;\n  char fname [1024];\n  char buf [8192];\n  \n  psVar6 = src_search_list.head;\n  pcVar5 = sf->name;\n  strcpy(fname,pcVar5);\n  if (*pcVar5 == '/') {\n    psVar6 = (search_list_elem *)0x0;\n  }\n  pcVar5 = (char *)0x0;\n  do {\n    if ((debug_level & 0x2000U) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen64(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      if (create_annotation_files == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\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_00023e89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar5 = sf->name;\n      pcVar2 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar2,pcVar5);\nLAB_0001cafc:\n      bVar7 = true;\n      pcVar5 = (char *)xmalloc(max_width + 1);\n      local_2428 = 1;\n      while (sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3) {\n        pcVar2 = buf;\n        do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);\n      }\n      free(pcVar5);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar5 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\n      pcVar5 = strrchr(pcVar2,0x2f);\n      if (pcVar5 == (char *)0x0) goto LAB_0001cc60;\n      pcVar5 = pcVar5 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\nLAB_0001cc60:\n      piVar4 = __errno_location();\n      pcVar5 = whoami;\n      if (*piVar4 != 2) {\n        perror(pcVar2);\n        return (FILE *)0x0;\n      }\n      __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2);\n      return (FILE *)0x0;\n    }\n    pcVar2 = stpcpy(fname,psVar6->path);\n    pcVar2[0] = '/';\n    pcVar2[1] = '\0';\n    if (pcVar5 == (char *)0x0) {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name);\n      psVar6 = psVar6->next;\n    }\n    else {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);\n      psVar6 = psVar6->next;\n    }\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  FILE *__stream_00;\n  size_t sVar3;\n  int *piVar4;\n  char *__format;\n  char *pcVar5;\n  search_list_elem *psVar6;\n  bool bVar7;\n  int local_2428;\n  char fname [1024];\n  char buf [8192];\n  \n  psVar6 = src_search_list.head;\n  pcVar5 = sf->name;\n  strcpy(fname,pcVar5);\n  if (*pcVar5 == '/') {\n    psVar6 = (search_list_elem *)0x0;\n  }\n  pcVar5 = (char *)0x0;\n  do {\n    if ((debug_level & 0x2000U) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen64(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      if (create_annotation_files == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\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_00023e89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar5 = sf->name;\n      pcVar2 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar2,pcVar5);\nLAB_0001cafc:\n      bVar7 = true;\n      pcVar5 = (char *)xmalloc(max_width + 1);\n      local_2428 = 1;\n      while (sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3) {\n        pcVar2 = buf;\n        do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);\n      }\n      free(pcVar5);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar5 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\n      pcVar5 = strrchr(pcVar2,0x2f);\n      if (pcVar5 == (char *)0x0) goto LAB_0001cc60;\n      pcVar5 = pcVar5 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\nLAB_0001cc60:\n      piVar4 = __errno_location();\n      pcVar5 = whoami;\n      if (*piVar4 != 2) {\n        perror(pcVar2);\n        return (FILE *)0x0;\n      }\n      __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2);\n      return (FILE *)0x0;\n    }\n    pcVar2 = stpcpy(fname,psVar6->path);\n    pcVar2[0] = '/';\n    pcVar2[1] = '\0';\n    if (pcVar5 == (char *)0x0) {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name);\n      psVar6 = psVar6->next;\n    }\n    else {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);\n      psVar6 = psVar6->next;\n    }\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 "FILE *__stream_00;" type_identifier (pointer_declarator "*__stream_00" * identifier) ;) (declaration "size_t sVar3;" primitive_type identifier ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "char *__format;" primitive_type (pointer_declarator "*__format" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "search_list_elem *psVar6;" type_identifier (pointer_declarator "*psVar6" * identifier) ;) (declaration "bool bVar7;" primitive_type identifier ;) (declaration "int local_2428;" 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 "pcVar5 = sf->name;" (assignment_expression "pcVar5 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (expression_statement "strcpy(fname,pcVar5);" (call_expression "strcpy(fname,pcVar5)" identifier (argument_list "(fname,pcVar5)" ( identifier , identifier ))) ;) (if_statement "if (*pcVar5 == '/') {\n    psVar6 = (search_list_elem *)0x0;\n  }" if (parenthesized_expression "(*pcVar5 == '/')" ( (binary_expression "*pcVar5 == '/'" (pointer_expression "*pcVar5" * 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 "pcVar5 = (char *)0x0;" (assignment_expression "pcVar5 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if ((debug_level & 0x2000U) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen64(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      if (create_annotation_files == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\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_00023e89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar5 = sf->name;\n      pcVar2 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar2,pcVar5);\nLAB_0001cafc:\n      bVar7 = true;\n      pcVar5 = (char *)xmalloc(max_width + 1);\n      local_2428 = 1;\n      while (sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3) {\n        pcVar2 = buf;\n        do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);\n      }\n      free(pcVar5);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar5 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\n      pcVar5 = strrchr(pcVar2,0x2f);\n      if (pcVar5 == (char *)0x0) goto LAB_0001cc60;\n      pcVar5 = pcVar5 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\nLAB_0001cc60:\n      piVar4 = __errno_location();\n      pcVar5 = whoami;\n      if (*piVar4 != 2) {\n        perror(pcVar2);\n        return (FILE *)0x0;\n      }\n      __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2);\n      return (FILE *)0x0;\n    }\n    pcVar2 = stpcpy(fname,psVar6->path);\n    pcVar2[0] = '/';\n    pcVar2[1] = '\0';\n    if (pcVar5 == (char *)0x0) {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name);\n      psVar6 = psVar6->next;\n    }\n    else {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);\n      psVar6 = psVar6->next;\n    }\n  } while( true );" do (compound_statement "{\n    if ((debug_level & 0x2000U) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }\n    __stream = fopen64(fname,"r");\n    if (__stream != (FILE *)0x0) {\n      if (create_annotation_files == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\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_00023e89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar5 = sf->name;\n      pcVar2 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar2,pcVar5);\nLAB_0001cafc:\n      bVar7 = true;\n      pcVar5 = (char *)xmalloc(max_width + 1);\n      local_2428 = 1;\n      while (sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3) {\n        pcVar2 = buf;\n        do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);\n      }\n      free(pcVar5);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }\n    if (pcVar5 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\n      pcVar5 = strrchr(pcVar2,0x2f);\n      if (pcVar5 == (char *)0x0) goto LAB_0001cc60;\n      pcVar5 = pcVar5 + 1;\n      psVar6 = src_search_list.head;\n    }\n    if (psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\nLAB_0001cc60:\n      piVar4 = __errno_location();\n      pcVar5 = whoami;\n      if (*piVar4 != 2) {\n        perror(pcVar2);\n        return (FILE *)0x0;\n      }\n      __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2);\n      return (FILE *)0x0;\n    }\n    pcVar2 = stpcpy(fname,psVar6->path);\n    pcVar2[0] = '/';\n    pcVar2[1] = '\0';\n    if (pcVar5 == (char *)0x0) {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name);\n      psVar6 = psVar6->next;\n    }\n    else {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);\n      psVar6 = psVar6->next;\n    }\n  }" { (if_statement "if ((debug_level & 0x2000U) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",sf->name,fname);\n    }" if (parenthesized_expression "((debug_level & 0x2000U) != 0)" ( (binary_expression "(debug_level & 0x2000U) != 0" (parenthesized_expression "(debug_level & 0x2000U)" ( (binary_expression "debug_level & 0x2000U" 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 = fopen64(fname,"r");" (assignment_expression "__stream = fopen64(fname,"r")" identifier = (call_expression "fopen64(fname,"r")" identifier (argument_list "(fname,"r")" ( identifier , (string_literal ""r"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n      if (create_annotation_files == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\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_00023e89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar5 = sf->name;\n      pcVar2 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar2,pcVar5);\nLAB_0001cafc:\n      bVar7 = true;\n      pcVar5 = (char *)xmalloc(max_width + 1);\n      local_2428 = 1;\n      while (sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3) {\n        pcVar2 = buf;\n        do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);\n      }\n      free(pcVar5);\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      if (create_annotation_files == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\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_00023e89,1,2,__stream_00);\n      }\n      else {\n        first_output = 0;\n      }\n      pcVar5 = sf->name;\n      pcVar2 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar2,pcVar5);\nLAB_0001cafc:\n      bVar7 = true;\n      pcVar5 = (char *)xmalloc(max_width + 1);\n      local_2428 = 1;\n      while (sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3) {\n        pcVar2 = buf;\n        do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);\n      }\n      free(pcVar5);\n      fclose(__stream);\n      return (FILE *)__stream_00;\n    }" { (if_statement "if (create_annotation_files == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" if (parenthesized_expression "(create_annotation_files == 0)" ( (binary_expression "create_annotation_files == 0" identifier == number_literal) )) (compound_statement "{\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }" { (expression_statement "__stream_00 = *(FILE **)PTR_stdout_0002cfec;" (assignment_expression "__stream_00 = *(FILE **)PTR_stdout_0002cfec" identifier = (pointer_expression "*(FILE **)PTR_stdout_0002cfec" * (cast_expression "(FILE **)PTR_stdout_0002cfec" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }) (else_clause "else {\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" else (compound_statement "{\n        pcVar5 = sf->name;\n        pcVar2 = strrchr(pcVar5,0x2f);\n        if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\n        }\n        pcVar5 = stpcpy(fname,pcVar5);\n        builtin_strncpy(pcVar5,"-ann",5);\n        __stream_00 = fopen64(fname,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(fname);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" { (expression_statement "pcVar5 = sf->name;" (assignment_expression "pcVar5 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (expression_statement "pcVar2 = strrchr(pcVar5,0x2f);" (assignment_expression "pcVar2 = strrchr(pcVar5,0x2f)" identifier = (call_expression "strrchr(pcVar5,0x2f)" identifier (argument_list "(pcVar5,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar2 != (char *)0x0) {\n          pcVar5 = pcVar2 + 1;\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          pcVar5 = pcVar2 + 1;\n        }" { (expression_statement "pcVar5 = pcVar2 + 1;" (assignment_expression "pcVar5 = pcVar2 + 1" identifier = (binary_expression "pcVar2 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar5 = stpcpy(fname,pcVar5);" (assignment_expression "pcVar5 = stpcpy(fname,pcVar5)" identifier = (call_expression "stpcpy(fname,pcVar5)" identifier (argument_list "(fname,pcVar5)" ( identifier , identifier )))) ;) (expression_statement "builtin_strncpy(pcVar5,"-ann",5);" (call_expression "builtin_strncpy(pcVar5,"-ann",5)" identifier (argument_list "(pcVar5,"-ann",5)" ( identifier , (string_literal ""-ann"" " string_content ") , number_literal ))) ;) (expression_statement "__stream_00 = fopen64(fname,"w");" (assignment_expression "__stream_00 = fopen64(fname,"w")" identifier = (call_expression "fopen64(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 (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;" if (parenthesized_expression "(*(FILE **)PTR_stdout_0002cfec != __stream_00)" ( (binary_expression "*(FILE **)PTR_stdout_0002cfec != __stream_00" (pointer_expression "*(FILE **)PTR_stdout_0002cfec" * (cast_expression "(FILE **)PTR_stdout_0002cfec" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) != identifier) )) (goto_statement "goto LAB_0001cafc;" 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_00023e89,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_00023e89,1,2,__stream_00);\n      }" { (expression_statement "fwrite(&DAT_00023e89,1,2,__stream_00);" (call_expression "fwrite(&DAT_00023e89,1,2,__stream_00)" identifier (argument_list "(&DAT_00023e89,1,2,__stream_00)" ( (pointer_expression "&DAT_00023e89" & 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 "pcVar5 = sf->name;" (assignment_expression "pcVar5 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (expression_statement "pcVar2 = (char *)dcgettext("gprof","*** File %s:\n",5);" (assignment_expression "pcVar2 = (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,pcVar2,pcVar5);" (call_expression "fprintf(__stream_00,pcVar2,pcVar5)" identifier (argument_list "(__stream_00,pcVar2,pcVar5)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0001cafc:\n      bVar7 = true;" statement_identifier : (expression_statement "bVar7 = true;" (assignment_expression "bVar7 = true" identifier = true) ;)) (expression_statement "pcVar5 = (char *)xmalloc(max_width + 1);" (assignment_expression "pcVar5 = (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) ))))) ;) (expression_statement "local_2428 = 1;" (assignment_expression "local_2428 = 1" identifier = number_literal) ;) (while_statement "while (sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3) {\n        pcVar2 = buf;\n        do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);\n      }" while (parenthesized_expression "(sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3)" ( (comma_expression "sVar3 = fread(buf,1,0x2000,__stream), 0 < (int)sVar3" (assignment_expression "sVar3 = 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 )))) , (binary_expression "0 < (int)sVar3" number_literal < (cast_expression "(int)sVar3" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        pcVar2 = buf;\n        do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);\n      }" { (expression_statement "pcVar2 = buf;" (assignment_expression "pcVar2 = buf" identifier = identifier) ;) (do_statement "do {\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar2 != buf + sVar3);" do (compound_statement "{\n          if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar2;\n          bVar7 = cVar1 == '\n';\n          pcVar2 = pcVar2 + 1;\n          fputc((int)cVar1,__stream_00);\n        }" { (if_statement "if (bVar7) {\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }" if (parenthesized_expression "(bVar7)" ( identifier )) (compound_statement "{\n            (*annote)(pcVar5,max_width,local_2428,arg);\n            fputs(pcVar5,__stream_00);\n            local_2428 = local_2428 + 1;\n          }" { (expression_statement "(*annote)(pcVar5,max_width,local_2428,arg);" (call_expression "(*annote)(pcVar5,max_width,local_2428,arg)" (parenthesized_expression "(*annote)" ( (pointer_expression "*annote" * identifier) )) (argument_list "(pcVar5,max_width,local_2428,arg)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "fputs(pcVar5,__stream_00);" (call_expression "fputs(pcVar5,__stream_00)" identifier (argument_list "(pcVar5,__stream_00)" ( identifier , identifier ))) ;) (expression_statement "local_2428 = local_2428 + 1;" (assignment_expression "local_2428 = local_2428 + 1" identifier = (binary_expression "local_2428 + 1" identifier + number_literal)) ;) })) (expression_statement "cVar1 = *pcVar2;" (assignment_expression "cVar1 = *pcVar2" identifier = (pointer_expression "*pcVar2" * identifier)) ;) (expression_statement "bVar7 = cVar1 == '\n';" (assignment_expression "bVar7 = cVar1 == '\n'" identifier = (binary_expression "cVar1 == '\n'" identifier == (char_literal "'\n'" ' escape_sequence '))) ;) (expression_statement "pcVar2 = pcVar2 + 1;" (assignment_expression "pcVar2 = pcVar2 + 1" identifier = (binary_expression "pcVar2 + 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 "(pcVar2 != buf + sVar3)" ( (binary_expression "pcVar2 != buf + sVar3" identifier != (binary_expression "buf + sVar3" identifier + identifier)) )) ;) })) (expression_statement "free(pcVar5);" (call_expression "free(pcVar5)" identifier (argument_list "(pcVar5)" ( 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 (pcVar5 == (char *)0x0 && psVar6 == (search_list_elem *)0x0) {\n      pcVar2 = sf->name;\n      pcVar5 = strrchr(pcVar2,0x2f);\n      if (pcVar5 == (char *)0x0) goto LAB_0001cc60;\n      pcVar5 = pcVar5 + 1;\n      psVar6 = src_search_list.head;\n    }" if (parenthesized_expression "(pcVar5 == (char *)0x0 && psVar6 == (search_list_elem *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0 && psVar6 == (search_list_elem *)0x0" (binary_expression "pcVar5 == (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      pcVar2 = sf->name;\n      pcVar5 = strrchr(pcVar2,0x2f);\n      if (pcVar5 == (char *)0x0) goto LAB_0001cc60;\n      pcVar5 = pcVar5 + 1;\n      psVar6 = src_search_list.head;\n    }" { (expression_statement "pcVar2 = sf->name;" (assignment_expression "pcVar2 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (expression_statement "pcVar5 = strrchr(pcVar2,0x2f);" (assignment_expression "pcVar5 = strrchr(pcVar2,0x2f)" identifier = (call_expression "strrchr(pcVar2,0x2f)" identifier (argument_list "(pcVar2,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar5 == (char *)0x0) goto LAB_0001cc60;" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001cc60;" goto statement_identifier ;)) (expression_statement "pcVar5 = pcVar5 + 1;" (assignment_expression "pcVar5 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 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      pcVar2 = sf->name;\nLAB_0001cc60:\n      piVar4 = __errno_location();\n      pcVar5 = whoami;\n      if (*piVar4 != 2) {\n        perror(pcVar2);\n        return (FILE *)0x0;\n      }\n      __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2);\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      pcVar2 = sf->name;\nLAB_0001cc60:\n      piVar4 = __errno_location();\n      pcVar5 = whoami;\n      if (*piVar4 != 2) {\n        perror(pcVar2);\n        return (FILE *)0x0;\n      }\n      __format = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2);\n      return (FILE *)0x0;\n    }" { (expression_statement "pcVar2 = sf->name;" (assignment_expression "pcVar2 = sf->name" identifier = (field_expression "sf->name" identifier -> field_identifier)) ;) (labeled_statement "LAB_0001cc60:\n      piVar4 = __errno_location();" statement_identifier : (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;)) (expression_statement "pcVar5 = whoami;" (assignment_expression "pcVar5 = whoami" identifier = identifier) ;) (if_statement "if (*piVar4 != 2) {\n        perror(pcVar2);\n        return (FILE *)0x0;\n      }" if (parenthesized_expression "(*piVar4 != 2)" ( (binary_expression "*piVar4 != 2" (pointer_expression "*piVar4" * identifier) != number_literal) )) (compound_statement "{\n        perror(pcVar2);\n        return (FILE *)0x0;\n      }" { (expression_statement "perror(pcVar2);" (call_expression "perror(pcVar2)" identifier (argument_list "(pcVar2)" ( identifier ))) ;) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (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(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2);" (call_expression "fprintf(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2)" identifier (argument_list "(*(FILE **)PTR_stderr_0002cfcc,__format,pcVar5,pcVar2)" ( (pointer_expression "*(FILE **)PTR_stderr_0002cfcc" * (cast_expression "(FILE **)PTR_stderr_0002cfcc" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , identifier , identifier ))) ;) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "pcVar2 = stpcpy(fname,psVar6->path);" (assignment_expression "pcVar2 = 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 "pcVar2[0] = '/';" (assignment_expression "pcVar2[0] = '/'" (subscript_expression "pcVar2[0]" identifier [ number_literal ]) = (char_literal "'/'" ' character ')) ;) (expression_statement "pcVar2[1] = '\0';" (assignment_expression "pcVar2[1] = '\0'" (subscript_expression "pcVar2[1]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if (pcVar5 == (char *)0x0) {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name);\n      psVar6 = psVar6->next;\n    }\n    else {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);\n      psVar6 = psVar6->next;\n    }" if (parenthesized_expression "(pcVar5 == (char *)0x0)" ( (binary_expression "pcVar5 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name);\n      psVar6 = psVar6->next;\n    }" { (expression_statement "strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name);" (call_expression "strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name)" identifier (argument_list "(pcVar2 + (int)(fname + (1 - (int)fname)),sf->name)" ( (binary_expression "pcVar2 + (int)(fname + (1 - (int)fname))" identifier + (cast_expression "(int)(fname + (1 - (int)fname))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fname + (1 - (int)fname))" ( (binary_expression "fname + (1 - (int)fname)" identifier + (parenthesized_expression "(1 - (int)fname)" ( (binary_expression "1 - (int)fname" number_literal - (cast_expression "(int)fname" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) , (field_expression "sf->name" identifier -> field_identifier) ))) ;) (expression_statement "psVar6 = psVar6->next;" (assignment_expression "psVar6 = psVar6->next" identifier = (field_expression "psVar6->next" identifier -> field_identifier)) ;) }) (else_clause "else {\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);\n      psVar6 = psVar6->next;\n    }" else (compound_statement "{\n      strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);\n      psVar6 = psVar6->next;\n    }" { (expression_statement "strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5);" (call_expression "strcpy(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5)" identifier (argument_list "(pcVar2 + (int)(fname + (1 - (int)fname)),pcVar5)" ( (binary_expression "pcVar2 + (int)(fname + (1 - (int)fname))" identifier + (cast_expression "(int)(fname + (1 - (int)fname))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(fname + (1 - (int)fname))" ( (binary_expression "fname + (1 - (int)fname)" identifier + (parenthesized_expression "(1 - (int)fname)" ( (binary_expression "1 - (int)fname" number_literal - (cast_expression "(int)fname" ( (type_descriptor "int" primitive_type) ) 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_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *pcVar6;\n  undefined4 *puVar7;\n  bool bVar8;\n  int local_2428;\n  char local_241c;\n  char acStack_241b [1023];\n  char local_201c [8200];\n  undefined4 uStack_14;\n  \n  puVar7 = DAT_0002e17c;\n  uStack_14 = 0x1c949;\n  pcVar6 = *(char **)(param_1 + 4);\n  strcpy(&local_241c,pcVar6);\n  if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }\n  pcVar6 = (char *)0x0;\n  do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );\n}\n\n" (function_definition "FILE * FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *pcVar6;\n  undefined4 *puVar7;\n  bool bVar8;\n  int local_2428;\n  char local_241c;\n  char acStack_241b [1023];\n  char local_201c [8200];\n  undefined4 uStack_14;\n  \n  puVar7 = DAT_0002e17c;\n  uStack_14 = 0x1c949;\n  pcVar6 = *(char **)(param_1 + 4);\n  strcpy(&local_241c,pcVar6);\n  if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }\n  pcVar6 = (char *)0x0;\n  do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );\n}" type_identifier (pointer_declarator "* FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)" * (function_declarator "FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)" identifier (parameter_list "(int param_1,int param_2,code *param_3,undefined4 param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int param_2" primitive_type identifier) , (parameter_declaration "code *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 param_4" type_identifier identifier) )))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *pcVar6;\n  undefined4 *puVar7;\n  bool bVar8;\n  int local_2428;\n  char local_241c;\n  char acStack_241b [1023];\n  char local_201c [8200];\n  undefined4 uStack_14;\n  \n  puVar7 = DAT_0002e17c;\n  uStack_14 = 0x1c949;\n  pcVar6 = *(char **)(param_1 + 4);\n  strcpy(&local_241c,pcVar6);\n  if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }\n  pcVar6 = (char *)0x0;\n  do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "FILE *__stream;" type_identifier (pointer_declarator "*__stream" * 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 *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "undefined4 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "bool bVar8;" primitive_type identifier ;) (declaration "int local_2428;" primitive_type identifier ;) (declaration "char local_241c;" primitive_type identifier ;) (declaration "char acStack_241b [1023];" primitive_type (array_declarator "acStack_241b [1023]" identifier [ number_literal ]) ;) (declaration "char local_201c [8200];" primitive_type (array_declarator "local_201c [8200]" identifier [ number_literal ]) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "puVar7 = DAT_0002e17c;" (assignment_expression "puVar7 = DAT_0002e17c" identifier = identifier) ;) (expression_statement "uStack_14 = 0x1c949;" (assignment_expression "uStack_14 = 0x1c949" identifier = number_literal) ;) (expression_statement "pcVar6 = *(char **)(param_1 + 4);" (assignment_expression "pcVar6 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "strcpy(&local_241c,pcVar6);" (call_expression "strcpy(&local_241c,pcVar6)" identifier (argument_list "(&local_241c,pcVar6)" ( (pointer_expression "&local_241c" & identifier) , identifier ))) ;) (if_statement "if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }" if (parenthesized_expression "(*pcVar6 == '/')" ( (binary_expression "*pcVar6 == '/'" (pointer_expression "*pcVar6" * identifier) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    puVar7 = (undefined4 *)0x0;\n  }" { (expression_statement "puVar7 = (undefined4 *)0x0;" (assignment_expression "puVar7 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );" do (compound_statement "{\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  }" { (if_statement "if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }" if (parenthesized_expression "((DAT_0002e158 & 0x2000) != 0)" ( (binary_expression "(DAT_0002e158 & 0x2000) != 0" (parenthesized_expression "(DAT_0002e158 & 0x2000)" ( (binary_expression "DAT_0002e158 & 0x2000" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }" { (expression_statement "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);" (call_expression "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c)" identifier (argument_list "("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c)" ( (string_literal ""[annotate_source]: looking for %s, trying %s\n"" " string_content escape_sequence ") , (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) , (pointer_expression "&local_241c" & identifier) ))) ;) })) (expression_statement "__stream = fopen64(&local_241c,"r");" (assignment_expression "__stream = fopen64(&local_241c,"r")" identifier = (call_expression "fopen64(&local_241c,"r")" identifier (argument_list "(&local_241c,"r")" ( (pointer_expression "&local_241c" & identifier) , (string_literal ""r"" " string_content ") )))) ;) (if_statement "if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\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      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }" { (if_statement "if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" if (parenthesized_expression "(DAT_0002e184 == 0)" ( (binary_expression "DAT_0002e184 == 0" identifier == number_literal) )) (compound_statement "{\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }" { (expression_statement "__stream_00 = *(FILE **)PTR_stdout_0002cfec;" (assignment_expression "__stream_00 = *(FILE **)PTR_stdout_0002cfec" identifier = (pointer_expression "*(FILE **)PTR_stdout_0002cfec" * (cast_expression "(FILE **)PTR_stdout_0002cfec" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) }) (else_clause "else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" else (compound_statement "{\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" { (expression_statement "pcVar6 = *(char **)(param_1 + 4);" (assignment_expression "pcVar6 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar3 = strrchr(pcVar6,0x2f);" (assignment_expression "pcVar3 = strrchr(pcVar6,0x2f)" identifier = (call_expression "strrchr(pcVar6,0x2f)" identifier (argument_list "(pcVar6,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar3 != (char *)0x0) {\n          pcVar6 = 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          pcVar6 = pcVar3 + 1;\n        }" { (expression_statement "pcVar6 = pcVar3 + 1;" (assignment_expression "pcVar6 = pcVar3 + 1" identifier = (binary_expression "pcVar3 + 1" identifier + number_literal)) ;) })) (expression_statement "pcVar6 = stpcpy(&local_241c,pcVar6);" (assignment_expression "pcVar6 = stpcpy(&local_241c,pcVar6)" identifier = (call_expression "stpcpy(&local_241c,pcVar6)" identifier (argument_list "(&local_241c,pcVar6)" ( (pointer_expression "&local_241c" & identifier) , identifier )))) ;) (expression_statement "builtin_strncpy(pcVar6,"-ann",5);" (call_expression "builtin_strncpy(pcVar6,"-ann",5)" identifier (argument_list "(pcVar6,"-ann",5)" ( identifier , (string_literal ""-ann"" " string_content ") , number_literal ))) ;) (expression_statement "__stream_00 = fopen64(&local_241c,"w");" (assignment_expression "__stream_00 = fopen64(&local_241c,"w")" identifier = (call_expression "fopen64(&local_241c,"w")" identifier (argument_list "(&local_241c,"w")" ( (pointer_expression "&local_241c" & identifier) , (string_literal ""w"" " string_content ") )))) ;) (if_statement "if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\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_241c);\n          return (FILE *)0x0;\n        }" { (expression_statement "perror(&local_241c);" (call_expression "perror(&local_241c)" identifier (argument_list "(&local_241c)" ( (pointer_expression "&local_241c" & identifier) ))) ;) (return_statement "return (FILE *)0x0;" return (cast_expression "(FILE *)0x0" ( (type_descriptor "FILE *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (if_statement "if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;" if (parenthesized_expression "(*(FILE **)PTR_stdout_0002cfec != __stream_00)" ( (binary_expression "*(FILE **)PTR_stdout_0002cfec != __stream_00" (pointer_expression "*(FILE **)PTR_stdout_0002cfec" * (cast_expression "(FILE **)PTR_stdout_0002cfec" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) != identifier) )) (goto_statement "goto LAB_0001cafc;" goto statement_identifier ;)) }))) (if_statement "if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }" if (parenthesized_expression "(DAT_0002d4b8 == 0)" ( (binary_expression "DAT_0002d4b8 == 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_0002d4b8 = 0;\n      }" else (compound_statement "{\n        DAT_0002d4b8 = 0;\n      }" { (expression_statement "DAT_0002d4b8 = 0;" (assignment_expression "DAT_0002d4b8 = 0" identifier = number_literal) ;) }))) (if_statement "if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }" if (parenthesized_expression "(DAT_0002d1b8 == 0)" ( (binary_expression "DAT_0002d1b8 == 0" identifier == number_literal) )) (compound_statement "{\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }" { (expression_statement "fwrite(&DAT_00023e89,1,2,__stream_00);" (call_expression "fwrite(&DAT_00023e89,1,2,__stream_00)" identifier (argument_list "(&DAT_00023e89,1,2,__stream_00)" ( (pointer_expression "&DAT_00023e89" & identifier) , number_literal , number_literal , identifier ))) ;) }) (else_clause "else {\n        DAT_0002d1b8 = 0;\n      }" else (compound_statement "{\n        DAT_0002d1b8 = 0;\n      }" { (expression_statement "DAT_0002d1b8 = 0;" (assignment_expression "DAT_0002d1b8 = 0" identifier = number_literal) ;) }))) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 4)" identifier = (pointer_expression "*(undefined4 *)(param_1 + 4)" * (cast_expression "(undefined4 *)(param_1 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);" (assignment_expression "pcVar6 = (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,pcVar6,uVar2);" (call_expression "fprintf(__stream_00,pcVar6,uVar2)" identifier (argument_list "(__stream_00,pcVar6,uVar2)" ( identifier , identifier , identifier ))) ;) (labeled_statement "LAB_0001cafc:\n      bVar8 = true;" statement_identifier : (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" identifier = true) ;)) (expression_statement "pcVar6 = (char *)xmalloc(param_2 + 1);" (assignment_expression "pcVar6 = (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) ))))) ;) (expression_statement "local_2428 = 1;" (assignment_expression "local_2428 = 1" identifier = number_literal) ;) (while_statement "while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }" while (parenthesized_expression "(sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4)" ( (comma_expression "sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4" (assignment_expression "sVar4 = fread(local_201c,1,0x2000,__stream)" identifier = (call_expression "fread(local_201c,1,0x2000,__stream)" identifier (argument_list "(local_201c,1,0x2000,__stream)" ( identifier , number_literal , number_literal , identifier )))) , (binary_expression "0 < (int)sVar4" number_literal < (cast_expression "(int)sVar4" ( (type_descriptor "int" primitive_type) ) identifier))) )) (compound_statement "{\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }" { (expression_statement "pcVar3 = local_201c;" (assignment_expression "pcVar3 = local_201c" identifier = identifier) ;) (do_statement "do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);" do (compound_statement "{\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 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            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }" if (parenthesized_expression "(bVar8)" ( identifier )) (compound_statement "{\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }" { (expression_statement "(*param_3)(pcVar6,param_2,local_2428,param_4);" (call_expression "(*param_3)(pcVar6,param_2,local_2428,param_4)" (parenthesized_expression "(*param_3)" ( (pointer_expression "*param_3" * identifier) )) (argument_list "(pcVar6,param_2,local_2428,param_4)" ( identifier , identifier , identifier , identifier ))) ;) (expression_statement "fputs(pcVar6,__stream_00);" (call_expression "fputs(pcVar6,__stream_00)" identifier (argument_list "(pcVar6,__stream_00)" ( identifier , identifier ))) ;) (expression_statement "local_2428 = local_2428 + 1;" (assignment_expression "local_2428 = local_2428 + 1" identifier = (binary_expression "local_2428 + 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 != local_201c + sVar4)" ( (binary_expression "pcVar3 != local_201c + sVar4" identifier != (binary_expression "local_201c + sVar4" identifier + identifier)) )) ;) })) (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (expression_statement "fclose(__stream);" (call_expression "fclose(__stream)" identifier (argument_list "(__stream)" ( identifier ))) ;) (return_statement "return __stream_00;" return identifier ;) })) (if_statement "if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }" if (parenthesized_expression "(pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0" (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) && (binary_expression "puVar7 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }" { (expression_statement "pcVar3 = *(char **)(param_1 + 4);" (assignment_expression "pcVar3 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (expression_statement "pcVar6 = strrchr(pcVar3,0x2f);" (assignment_expression "pcVar6 = strrchr(pcVar3,0x2f)" identifier = (call_expression "strrchr(pcVar3,0x2f)" identifier (argument_list "(pcVar3,0x2f)" ( identifier , number_literal )))) ;) (if_statement "if (pcVar6 == (char *)0x0) goto LAB_0001cc60;" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0001cc60;" goto statement_identifier ;)) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" identifier = (binary_expression "pcVar6 + 1" identifier + number_literal)) ;) (expression_statement "puVar7 = DAT_0002e17c;" (assignment_expression "puVar7 = DAT_0002e17c" identifier = identifier) ;) })) (if_statement "if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }" if (parenthesized_expression "(puVar7 == (undefined4 *)0x0)" ( (binary_expression "puVar7 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }" { (expression_statement "pcVar3 = *(char **)(param_1 + 4);" (assignment_expression "pcVar3 = *(char **)(param_1 + 4)" identifier = (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0001cc60:\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 "uVar2 = DAT_0002e508;" (assignment_expression "uVar2 = DAT_0002e508" identifier = identifier) ;) (if_statement "if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }" if (parenthesized_expression "(*piVar5 != 2)" ( (binary_expression "*piVar5 != 2" (pointer_expression "*piVar5" * identifier) != number_literal) )) (compound_statement "{\n        perror(pcVar3);\n        return (FILE *)0x0;\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 "pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);" (assignment_expression "pcVar6 = (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(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);" (call_expression "fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3)" identifier (argument_list "(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3)" ( (pointer_expression "*(FILE **)PTR_stderr_0002cfcc" * (cast_expression "(FILE **)PTR_stderr_0002cfcc" ( (type_descriptor "FILE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) , identifier , identifier , 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(&local_241c,(char *)(puVar7 + 1));" (assignment_expression "pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1))" identifier = (call_expression "stpcpy(&local_241c,(char *)(puVar7 + 1))" identifier (argument_list "(&local_241c,(char *)(puVar7 + 1))" ( (pointer_expression "&local_241c" & 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 "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 (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }" if (parenthesized_expression "(pcVar6 == (char *)0x0)" ( (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }" { (expression_statement "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));" (call_expression "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4))" identifier (argument_list "(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4))" ( (binary_expression "pcVar3 + (int)(acStack_241b + -(int)&local_241c)" identifier + (cast_expression "(int)(acStack_241b + -(int)&local_241c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(acStack_241b + -(int)&local_241c)" ( (binary_expression "acStack_241b + -(int)&local_241c" identifier + (unary_expression "-(int)&local_241c" - (cast_expression "(int)&local_241c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_241c" & identifier)))) )))) , (pointer_expression "*(char **)(param_1 + 4)" * (cast_expression "(char **)(param_1 + 4)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) ))) ;) (expression_statement "puVar7 = (undefined4 *)*puVar7;" (assignment_expression "puVar7 = (undefined4 *)*puVar7" identifier = (cast_expression "(undefined4 *)*puVar7" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar7" * identifier))) ;) }) (else_clause "else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }" else (compound_statement "{\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }" { (expression_statement "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);" (call_expression "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6)" identifier (argument_list "(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6)" ( (binary_expression "pcVar3 + (int)(acStack_241b + -(int)&local_241c)" identifier + (cast_expression "(int)(acStack_241b + -(int)&local_241c)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(acStack_241b + -(int)&local_241c)" ( (binary_expression "acStack_241b + -(int)&local_241c" identifier + (unary_expression "-(int)&local_241c" - (cast_expression "(int)&local_241c" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&local_241c" & identifier)))) )))) , identifier ))) ;) (expression_statement "puVar7 = (undefined4 *)*puVar7;" (assignment_expression "puVar7 = (undefined4 *)*puVar7" identifier = (cast_expression "(undefined4 *)*puVar7" ( (type_descriptor "undefined4 *" 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 TYPE 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 IDENT ;) (declaration TYPE (pointer_declarator * 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 (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression 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 IDENT & 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 { (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 *))) ) IDENT))) ;) }) (else_clause else (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , LIT , LIT , IDENT )))) , (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) IDENT))) )) (compound_statement { (expression_statement (assignment_expression IDENT = 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 + IDENT)) )) ;) })) (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 (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 escape_sequence ") , LIT ))))) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) , IDENT , IDENT , 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 TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) (pointer_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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) (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_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *pcVar6;\n  undefined4 *puVar7;\n  bool bVar8;\n  int local_2428;\n  char local_241c;\n  char acStack_241b [1023];\n  char local_201c [8200];\n  undefined4 uStack_14;\n  \n  puVar7 = DAT_0002e17c;\n  uStack_14 = 0x1c949;\n  pcVar6 = *(char **)(param_1 + 4);\n  strcpy(&local_241c,pcVar6);\n  if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }\n  pcVar6 = (char *)0x0;\n  do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );\n}" (type_identifier "FILE") (pointer_declarator "* FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)" (* "*") (function_declarator "FUN_0001c940(int param_1,int param_2,code *param_3,undefined4 param_4)" (identifier "FUN_0001c940") (parameter_list "(int param_1,int param_2,code *param_3,undefined4 param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (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 "undefined4 param_4" (type_identifier "undefined4") (identifier "param_4")) () ")")))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  FILE *__stream;\n  char *pcVar3;\n  FILE *__stream_00;\n  size_t sVar4;\n  int *piVar5;\n  char *pcVar6;\n  undefined4 *puVar7;\n  bool bVar8;\n  int local_2428;\n  char local_241c;\n  char acStack_241b [1023];\n  char local_201c [8200];\n  undefined4 uStack_14;\n  \n  puVar7 = DAT_0002e17c;\n  uStack_14 = 0x1c949;\n  pcVar6 = *(char **)(param_1 + 4);\n  strcpy(&local_241c,pcVar6);\n  if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }\n  pcVar6 = (char *)0x0;\n  do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );\n}" ({ "{") (declaration "char cVar1;" (primitive_type "char") (identifier "cVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (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 "FILE *__stream_00;" (type_identifier "FILE") (pointer_declarator "*__stream_00" (* "*") (identifier "__stream_00")) (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "char *pcVar6;" (primitive_type "char") (pointer_declarator "*pcVar6" (* "*") (identifier "pcVar6")) (; ";")) (declaration "undefined4 *puVar7;" (type_identifier "undefined4") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "bool bVar8;" (primitive_type "bool") (identifier "bVar8") (; ";")) (declaration "int local_2428;" (primitive_type "int") (identifier "local_2428") (; ";")) (declaration "char local_241c;" (primitive_type "char") (identifier "local_241c") (; ";")) (declaration "char acStack_241b [1023];" (primitive_type "char") (array_declarator "acStack_241b [1023]" (identifier "acStack_241b") ([ "[") (number_literal "1023") (] "]")) (; ";")) (declaration "char local_201c [8200];" (primitive_type "char") (array_declarator "local_201c [8200]" (identifier "local_201c") ([ "[") (number_literal "8200") (] "]")) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "puVar7 = DAT_0002e17c;" (assignment_expression "puVar7 = DAT_0002e17c" (identifier "puVar7") (= "=") (identifier "DAT_0002e17c")) (; ";")) (expression_statement "uStack_14 = 0x1c949;" (assignment_expression "uStack_14 = 0x1c949" (identifier "uStack_14") (= "=") (number_literal "0x1c949")) (; ";")) (expression_statement "pcVar6 = *(char **)(param_1 + 4);" (assignment_expression "pcVar6 = *(char **)(param_1 + 4)" (identifier "pcVar6") (= "=") (pointer_expression "*(char **)(param_1 + 4)" (* "*") (cast_expression "(char **)(param_1 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "strcpy(&local_241c,pcVar6);" (call_expression "strcpy(&local_241c,pcVar6)" (identifier "strcpy") (argument_list "(&local_241c,pcVar6)" (( "(") (pointer_expression "&local_241c" (& "&") (identifier "local_241c")) (, ",") (identifier "pcVar6") () ")"))) (; ";")) (if_statement "if (*pcVar6 == '/') {\n    puVar7 = (undefined4 *)0x0;\n  }" (if "if") (parenthesized_expression "(*pcVar6 == '/')" (( "(") (binary_expression "*pcVar6 == '/'" (pointer_expression "*pcVar6" (* "*") (identifier "pcVar6")) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n    puVar7 = (undefined4 *)0x0;\n  }" ({ "{") (expression_statement "puVar7 = (undefined4 *)0x0;" (assignment_expression "puVar7 = (undefined4 *)0x0" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}"))) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" (identifier "pcVar6") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (do_statement "do {\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  } while( true );" (do "do") (compound_statement "{\n    if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }\n    __stream = fopen64(&local_241c,"r");\n    if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }\n    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }\n    if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }\n    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));\n    pcVar3[0] = '/';\n    pcVar3[1] = '\0';\n    if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }\n  }" ({ "{") (if_statement "if ((DAT_0002e158 & 0x2000) != 0) {\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }" (if "if") (parenthesized_expression "((DAT_0002e158 & 0x2000) != 0)" (( "(") (binary_expression "(DAT_0002e158 & 0x2000) != 0" (parenthesized_expression "(DAT_0002e158 & 0x2000)" (( "(") (binary_expression "DAT_0002e158 & 0x2000" (identifier "DAT_0002e158") (& "&") (number_literal "0x2000")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);\n    }" ({ "{") (expression_statement "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c);" (call_expression "printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c)" (identifier "printf") (argument_list "("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),\n             &local_241c)" (( "(") (string_literal ""[annotate_source]: looking for %s, trying %s\n"" (" """) (string_content "[annotate_source]: looking for %s, trying %s") (escape_sequence "\n") (" """)) (, ",") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "&local_241c" (& "&") (identifier "local_241c")) () ")"))) (; ";")) (} "}"))) (expression_statement "__stream = fopen64(&local_241c,"r");" (assignment_expression "__stream = fopen64(&local_241c,"r")" (identifier "__stream") (= "=") (call_expression "fopen64(&local_241c,"r")" (identifier "fopen64") (argument_list "(&local_241c,"r")" (( "(") (pointer_expression "&local_241c" (& "&") (identifier "local_241c")) (, ",") (string_literal ""r"" (" """) (string_content "r") (" """)) () ")")))) (; ";")) (if_statement "if (__stream != (FILE *)0x0) {\n      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\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      if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }\n      if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }\n      if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }\n      uVar2 = *(undefined4 *)(param_1 + 4);\n      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);\n      fprintf(__stream_00,pcVar6,uVar2);\nLAB_0001cafc:\n      bVar8 = true;\n      pcVar6 = (char *)xmalloc(param_2 + 1);\n      local_2428 = 1;\n      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }\n      free(pcVar6);\n      fclose(__stream);\n      return __stream_00;\n    }" ({ "{") (if_statement "if (DAT_0002e184 == 0) {\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }\n      else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" (if "if") (parenthesized_expression "(DAT_0002e184 == 0)" (( "(") (binary_expression "DAT_0002e184 == 0" (identifier "DAT_0002e184") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        __stream_00 = *(FILE **)PTR_stdout_0002cfec;\n      }" ({ "{") (expression_statement "__stream_00 = *(FILE **)PTR_stdout_0002cfec;" (assignment_expression "__stream_00 = *(FILE **)PTR_stdout_0002cfec" (identifier "__stream_00") (= "=") (pointer_expression "*(FILE **)PTR_stdout_0002cfec" (* "*") (cast_expression "(FILE **)PTR_stdout_0002cfec" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stdout_0002cfec")))) (; ";")) (} "}")) (else_clause "else {\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" (else "else") (compound_statement "{\n        pcVar6 = *(char **)(param_1 + 4);\n        pcVar3 = strrchr(pcVar6,0x2f);\n        if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\n        }\n        pcVar6 = stpcpy(&local_241c,pcVar6);\n        builtin_strncpy(pcVar6,"-ann",5);\n        __stream_00 = fopen64(&local_241c,"w");\n        if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\n          return (FILE *)0x0;\n        }\n        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;\n      }" ({ "{") (expression_statement "pcVar6 = *(char **)(param_1 + 4);" (assignment_expression "pcVar6 = *(char **)(param_1 + 4)" (identifier "pcVar6") (= "=") (pointer_expression "*(char **)(param_1 + 4)" (* "*") (cast_expression "(char **)(param_1 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar3 = strrchr(pcVar6,0x2f);" (assignment_expression "pcVar3 = strrchr(pcVar6,0x2f)" (identifier "pcVar3") (= "=") (call_expression "strrchr(pcVar6,0x2f)" (identifier "strrchr") (argument_list "(pcVar6,0x2f)" (( "(") (identifier "pcVar6") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (if_statement "if (pcVar3 != (char *)0x0) {\n          pcVar6 = pcVar3 + 1;\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          pcVar6 = pcVar3 + 1;\n        }" ({ "{") (expression_statement "pcVar6 = pcVar3 + 1;" (assignment_expression "pcVar6 = pcVar3 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "pcVar6 = stpcpy(&local_241c,pcVar6);" (assignment_expression "pcVar6 = stpcpy(&local_241c,pcVar6)" (identifier "pcVar6") (= "=") (call_expression "stpcpy(&local_241c,pcVar6)" (identifier "stpcpy") (argument_list "(&local_241c,pcVar6)" (( "(") (pointer_expression "&local_241c" (& "&") (identifier "local_241c")) (, ",") (identifier "pcVar6") () ")")))) (; ";")) (expression_statement "builtin_strncpy(pcVar6,"-ann",5);" (call_expression "builtin_strncpy(pcVar6,"-ann",5)" (identifier "builtin_strncpy") (argument_list "(pcVar6,"-ann",5)" (( "(") (identifier "pcVar6") (, ",") (string_literal ""-ann"" (" """) (string_content "-ann") (" """)) (, ",") (number_literal "5") () ")"))) (; ";")) (expression_statement "__stream_00 = fopen64(&local_241c,"w");" (assignment_expression "__stream_00 = fopen64(&local_241c,"w")" (identifier "__stream_00") (= "=") (call_expression "fopen64(&local_241c,"w")" (identifier "fopen64") (argument_list "(&local_241c,"w")" (( "(") (pointer_expression "&local_241c" (& "&") (identifier "local_241c")) (, ",") (string_literal ""w"" (" """) (string_content "w") (" """)) () ")")))) (; ";")) (if_statement "if (__stream_00 == (FILE *)0x0) {\n          perror(&local_241c);\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_241c);\n          return (FILE *)0x0;\n        }" ({ "{") (expression_statement "perror(&local_241c);" (call_expression "perror(&local_241c)" (identifier "perror") (argument_list "(&local_241c)" (( "(") (pointer_expression "&local_241c" (& "&") (identifier "local_241c")) () ")"))) (; ";")) (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 (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;" (if "if") (parenthesized_expression "(*(FILE **)PTR_stdout_0002cfec != __stream_00)" (( "(") (binary_expression "*(FILE **)PTR_stdout_0002cfec != __stream_00" (pointer_expression "*(FILE **)PTR_stdout_0002cfec" (* "*") (cast_expression "(FILE **)PTR_stdout_0002cfec" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stdout_0002cfec"))) (!= "!=") (identifier "__stream_00")) () ")")) (goto_statement "goto LAB_0001cafc;" (goto "goto") (statement_identifier "LAB_0001cafc") (; ";"))) (} "}")))) (if_statement "if (DAT_0002d4b8 == 0) {\n        fputc(10,__stream_00);\n      }\n      else {\n        DAT_0002d4b8 = 0;\n      }" (if "if") (parenthesized_expression "(DAT_0002d4b8 == 0)" (( "(") (binary_expression "DAT_0002d4b8 == 0" (identifier "DAT_0002d4b8") (== "==") (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_0002d4b8 = 0;\n      }" (else "else") (compound_statement "{\n        DAT_0002d4b8 = 0;\n      }" ({ "{") (expression_statement "DAT_0002d4b8 = 0;" (assignment_expression "DAT_0002d4b8 = 0" (identifier "DAT_0002d4b8") (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (DAT_0002d1b8 == 0) {\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }\n      else {\n        DAT_0002d1b8 = 0;\n      }" (if "if") (parenthesized_expression "(DAT_0002d1b8 == 0)" (( "(") (binary_expression "DAT_0002d1b8 == 0" (identifier "DAT_0002d1b8") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        fwrite(&DAT_00023e89,1,2,__stream_00);\n      }" ({ "{") (expression_statement "fwrite(&DAT_00023e89,1,2,__stream_00);" (call_expression "fwrite(&DAT_00023e89,1,2,__stream_00)" (identifier "fwrite") (argument_list "(&DAT_00023e89,1,2,__stream_00)" (( "(") (pointer_expression "&DAT_00023e89" (& "&") (identifier "DAT_00023e89")) (, ",") (number_literal "1") (, ",") (number_literal "2") (, ",") (identifier "__stream_00") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        DAT_0002d1b8 = 0;\n      }" (else "else") (compound_statement "{\n        DAT_0002d1b8 = 0;\n      }" ({ "{") (expression_statement "DAT_0002d1b8 = 0;" (assignment_expression "DAT_0002d1b8 = 0" (identifier "DAT_0002d1b8") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "uVar2 = *(undefined4 *)(param_1 + 4);" (assignment_expression "uVar2 = *(undefined4 *)(param_1 + 4)" (identifier "uVar2") (= "=") (pointer_expression "*(undefined4 *)(param_1 + 4)" (* "*") (cast_expression "(undefined4 *)(param_1 + 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5)" (identifier "pcVar6") (= "=") (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,pcVar6,uVar2);" (call_expression "fprintf(__stream_00,pcVar6,uVar2)" (identifier "fprintf") (argument_list "(__stream_00,pcVar6,uVar2)" (( "(") (identifier "__stream_00") (, ",") (identifier "pcVar6") (, ",") (identifier "uVar2") () ")"))) (; ";")) (labeled_statement "LAB_0001cafc:\n      bVar8 = true;" (statement_identifier "LAB_0001cafc") (: ":") (expression_statement "bVar8 = true;" (assignment_expression "bVar8 = true" (identifier "bVar8") (= "=") (true "true")) (; ";"))) (expression_statement "pcVar6 = (char *)xmalloc(param_2 + 1);" (assignment_expression "pcVar6 = (char *)xmalloc(param_2 + 1)" (identifier "pcVar6") (= "=") (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")) () ")"))))) (; ";")) (expression_statement "local_2428 = 1;" (assignment_expression "local_2428 = 1" (identifier "local_2428") (= "=") (number_literal "1")) (; ";")) (while_statement "while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }" (while "while") (parenthesized_expression "(sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4)" (( "(") (comma_expression "sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4" (assignment_expression "sVar4 = fread(local_201c,1,0x2000,__stream)" (identifier "sVar4") (= "=") (call_expression "fread(local_201c,1,0x2000,__stream)" (identifier "fread") (argument_list "(local_201c,1,0x2000,__stream)" (( "(") (identifier "local_201c") (, ",") (number_literal "1") (, ",") (number_literal "0x2000") (, ",") (identifier "__stream") () ")")))) (, ",") (binary_expression "0 < (int)sVar4" (number_literal "0") (< "<") (cast_expression "(int)sVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "sVar4")))) () ")")) (compound_statement "{\n        pcVar3 = local_201c;\n        do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);\n      }" ({ "{") (expression_statement "pcVar3 = local_201c;" (assignment_expression "pcVar3 = local_201c" (identifier "pcVar3") (= "=") (identifier "local_201c")) (; ";")) (do_statement "do {\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }\n          cVar1 = *pcVar3;\n          bVar8 = cVar1 == '\n';\n          pcVar3 = pcVar3 + 1;\n          fputc((int)cVar1,__stream_00);\n        } while (pcVar3 != local_201c + sVar4);" (do "do") (compound_statement "{\n          if (bVar8) {\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 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            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }" (if "if") (parenthesized_expression "(bVar8)" (( "(") (identifier "bVar8") () ")")) (compound_statement "{\n            (*param_3)(pcVar6,param_2,local_2428,param_4);\n            fputs(pcVar6,__stream_00);\n            local_2428 = local_2428 + 1;\n          }" ({ "{") (expression_statement "(*param_3)(pcVar6,param_2,local_2428,param_4);" (call_expression "(*param_3)(pcVar6,param_2,local_2428,param_4)" (parenthesized_expression "(*param_3)" (( "(") (pointer_expression "*param_3" (* "*") (identifier "param_3")) () ")")) (argument_list "(pcVar6,param_2,local_2428,param_4)" (( "(") (identifier "pcVar6") (, ",") (identifier "param_2") (, ",") (identifier "local_2428") (, ",") (identifier "param_4") () ")"))) (; ";")) (expression_statement "fputs(pcVar6,__stream_00);" (call_expression "fputs(pcVar6,__stream_00)" (identifier "fputs") (argument_list "(pcVar6,__stream_00)" (( "(") (identifier "pcVar6") (, ",") (identifier "__stream_00") () ")"))) (; ";")) (expression_statement "local_2428 = local_2428 + 1;" (assignment_expression "local_2428 = local_2428 + 1" (identifier "local_2428") (= "=") (binary_expression "local_2428 + 1" (identifier "local_2428") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "cVar1 = *pcVar3;" (assignment_expression "cVar1 = *pcVar3" (identifier "cVar1") (= "=") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3"))) (; ";")) (expression_statement "bVar8 = cVar1 == '\n';" (assignment_expression "bVar8 = cVar1 == '\n'" (identifier "bVar8") (= "=") (binary_expression "cVar1 == '\n'" (identifier "cVar1") (== "==") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'")))) (; ";")) (expression_statement "pcVar3 = pcVar3 + 1;" (assignment_expression "pcVar3 = pcVar3 + 1" (identifier "pcVar3") (= "=") (binary_expression "pcVar3 + 1" (identifier "pcVar3") (+ "+") (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 "(pcVar3 != local_201c + sVar4)" (( "(") (binary_expression "pcVar3 != local_201c + sVar4" (identifier "pcVar3") (!= "!=") (binary_expression "local_201c + sVar4" (identifier "local_201c") (+ "+") (identifier "sVar4"))) () ")")) (; ";")) (} "}"))) (expression_statement "free(pcVar6);" (call_expression "free(pcVar6)" (identifier "free") (argument_list "(pcVar6)" (( "(") (identifier "pcVar6") () ")"))) (; ";")) (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 (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }" (if "if") (parenthesized_expression "(pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0)" (( "(") (binary_expression "pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0" (binary_expression "pcVar6 == (char *)0x0" (identifier "pcVar6") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (&& "&&") (binary_expression "puVar7 == (undefined4 *)0x0" (identifier "puVar7") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n      pcVar3 = *(char **)(param_1 + 4);\n      pcVar6 = strrchr(pcVar3,0x2f);\n      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;\n      pcVar6 = pcVar6 + 1;\n      puVar7 = DAT_0002e17c;\n    }" ({ "{") (expression_statement "pcVar3 = *(char **)(param_1 + 4);" (assignment_expression "pcVar3 = *(char **)(param_1 + 4)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(param_1 + 4)" (* "*") (cast_expression "(char **)(param_1 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "pcVar6 = strrchr(pcVar3,0x2f);" (assignment_expression "pcVar6 = strrchr(pcVar3,0x2f)" (identifier "pcVar6") (= "=") (call_expression "strrchr(pcVar3,0x2f)" (identifier "strrchr") (argument_list "(pcVar3,0x2f)" (( "(") (identifier "pcVar3") (, ",") (number_literal "0x2f") () ")")))) (; ";")) (if_statement "if (pcVar6 == (char *)0x0) goto LAB_0001cc60;" (if "if") (parenthesized_expression "(pcVar6 == (char *)0x0)" (( "(") (binary_expression "pcVar6 == (char *)0x0" (identifier "pcVar6") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0001cc60;" (goto "goto") (statement_identifier "LAB_0001cc60") (; ";"))) (expression_statement "pcVar6 = pcVar6 + 1;" (assignment_expression "pcVar6 = pcVar6 + 1" (identifier "pcVar6") (= "=") (binary_expression "pcVar6 + 1" (identifier "pcVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar7 = DAT_0002e17c;" (assignment_expression "puVar7 = DAT_0002e17c" (identifier "puVar7") (= "=") (identifier "DAT_0002e17c")) (; ";")) (} "}"))) (if_statement "if (puVar7 == (undefined4 *)0x0) {\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }" (if "if") (parenthesized_expression "(puVar7 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar7 == (undefined4 *)0x0" (identifier "puVar7") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      pcVar3 = *(char **)(param_1 + 4);\nLAB_0001cc60:\n      piVar5 = __errno_location();\n      uVar2 = DAT_0002e508;\n      if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }\n      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);\n      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);\n      return (FILE *)0x0;\n    }" ({ "{") (expression_statement "pcVar3 = *(char **)(param_1 + 4);" (assignment_expression "pcVar3 = *(char **)(param_1 + 4)" (identifier "pcVar3") (= "=") (pointer_expression "*(char **)(param_1 + 4)" (* "*") (cast_expression "(char **)(param_1 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (labeled_statement "LAB_0001cc60:\n      piVar5 = __errno_location();" (statement_identifier "LAB_0001cc60") (: ":") (expression_statement "piVar5 = __errno_location();" (assignment_expression "piVar5 = __errno_location()" (identifier "piVar5") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";"))) (expression_statement "uVar2 = DAT_0002e508;" (assignment_expression "uVar2 = DAT_0002e508" (identifier "uVar2") (= "=") (identifier "DAT_0002e508")) (; ";")) (if_statement "if (*piVar5 != 2) {\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }" (if "if") (parenthesized_expression "(*piVar5 != 2)" (( "(") (binary_expression "*piVar5 != 2" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n        perror(pcVar3);\n        return (FILE *)0x0;\n      }" ({ "{") (expression_statement "perror(pcVar3);" (call_expression "perror(pcVar3)" (identifier "perror") (argument_list "(pcVar3)" (( "(") (identifier "pcVar3") () ")"))) (; ";")) (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 "pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5)" (identifier "pcVar6") (= "=") (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(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);" (call_expression "fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3)" (identifier "fprintf") (argument_list "(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3)" (( "(") (pointer_expression "*(FILE **)PTR_stderr_0002cfcc" (* "*") (cast_expression "(FILE **)PTR_stderr_0002cfcc" (( "(") (type_descriptor "FILE **" (type_identifier "FILE") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "PTR_stderr_0002cfcc"))) (, ",") (identifier "pcVar6") (, ",") (identifier "uVar2") (, ",") (identifier "pcVar3") () ")"))) (; ";")) (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 "pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));" (assignment_expression "pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1))" (identifier "pcVar3") (= "=") (call_expression "stpcpy(&local_241c,(char *)(puVar7 + 1))" (identifier "stpcpy") (argument_list "(&local_241c,(char *)(puVar7 + 1))" (( "(") (pointer_expression "&local_241c" (& "&") (identifier "local_241c")) (, ",") (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 "pcVar3[0] = '/';" (assignment_expression "pcVar3[0] = '/'" (subscript_expression "pcVar3[0]" (identifier "pcVar3") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'/'" (' "'") (character "/") (' "'"))) (; ";")) (expression_statement "pcVar3[1] = '\0';" (assignment_expression "pcVar3[1] = '\0'" (subscript_expression "pcVar3[1]" (identifier "pcVar3") ([ "[") (number_literal "1") (] "]")) (= "=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) (; ";")) (if_statement "if (pcVar6 == (char *)0x0) {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }\n    else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }" (if "if") (parenthesized_expression "(pcVar6 == (char *)0x0)" (( "(") (binary_expression "pcVar6 == (char *)0x0" (identifier "pcVar6") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));\n      puVar7 = (undefined4 *)*puVar7;\n    }" ({ "{") (expression_statement "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));" (call_expression "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4))" (identifier "strcpy") (argument_list "(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4))" (( "(") (binary_expression "pcVar3 + (int)(acStack_241b + -(int)&local_241c)" (identifier "pcVar3") (+ "+") (cast_expression "(int)(acStack_241b + -(int)&local_241c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(acStack_241b + -(int)&local_241c)" (( "(") (binary_expression "acStack_241b + -(int)&local_241c" (identifier "acStack_241b") (+ "+") (unary_expression "-(int)&local_241c" (- "-") (cast_expression "(int)&local_241c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&local_241c" (& "&") (identifier "local_241c"))))) () ")")))) (, ",") (pointer_expression "*(char **)(param_1 + 4)" (* "*") (cast_expression "(char **)(param_1 + 4)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) () ")"))) (; ";")) (expression_statement "puVar7 = (undefined4 *)*puVar7;" (assignment_expression "puVar7 = (undefined4 *)*puVar7" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)*puVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) (; ";")) (} "}")) (else_clause "else {\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }" (else "else") (compound_statement "{\n      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);\n      puVar7 = (undefined4 *)*puVar7;\n    }" ({ "{") (expression_statement "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);" (call_expression "strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6)" (identifier "strcpy") (argument_list "(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6)" (( "(") (binary_expression "pcVar3 + (int)(acStack_241b + -(int)&local_241c)" (identifier "pcVar3") (+ "+") (cast_expression "(int)(acStack_241b + -(int)&local_241c)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(acStack_241b + -(int)&local_241c)" (( "(") (binary_expression "acStack_241b + -(int)&local_241c" (identifier "acStack_241b") (+ "+") (unary_expression "-(int)&local_241c" (- "-") (cast_expression "(int)&local_241c" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "&local_241c" (& "&") (identifier "local_241c"))))) () ")")))) (, ",") (identifier "pcVar6") () ")"))) (; ";")) (expression_statement "puVar7 = (undefined4 *)*puVar7;" (assignment_expression "puVar7 = (undefined4 *)*puVar7" (identifier "puVar7") (= "=") (cast_expression "(undefined4 *)*puVar7" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar7" (* "*") (identifier "puVar7")))) (; ";")) (} "}")))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

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

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


(translation_unit (function_definition type: (type_identifier) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (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: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (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: (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 (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier)))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (number_literal) (identifier)))) right: (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (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: (identifier))))))) (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 (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: (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 (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) (identifier) (identifier) (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: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) 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)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier)))))) 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: (primitive_type)) value: (parenthesized_expression (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) 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))))))

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

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

{
  char cVar1;
  undefined4 uVar2;
  FILE *__stream;
  char *pcVar3;
  FILE *__stream_00;
  size_t sVar4;
  int *piVar5;
  char *pcVar6;
  undefined4 *puVar7;
  bool bVar8;
  int local_2428;
  char local_241c;
  char acStack_241b [1023];
  char local_201c [8200];
  undefined4 uStack_14;
  
  puVar7 = DAT_0002e17c;
  uStack_14 = 0x1c949;
  pcVar6 = *(char **)(param_1 + 4);
  strcpy(&local_241c,pcVar6);
  if (*pcVar6 == '/') {
    puVar7 = (undefined4 *)0x0;
  }
  pcVar6 = (char *)0x0;
  do {
    if ((DAT_0002e158 & 0x2000) != 0) {
      printf("[annotate_source]: looking for %s, trying %s\n",*(undefined4 *)(param_1 + 4),
             &local_241c);
    }
    __stream = fopen64(&local_241c,"r");
    if (__stream != (FILE *)0x0) {
      if (DAT_0002e184 == 0) {
        __stream_00 = *(FILE **)PTR_stdout_0002cfec;
      }
      else {
        pcVar6 = *(char **)(param_1 + 4);
        pcVar3 = strrchr(pcVar6,0x2f);
        if (pcVar3 != (char *)0x0) {
          pcVar6 = pcVar3 + 1;
        }
        pcVar6 = stpcpy(&local_241c,pcVar6);
        builtin_strncpy(pcVar6,"-ann",5);
        __stream_00 = fopen64(&local_241c,"w");
        if (__stream_00 == (FILE *)0x0) {
          perror(&local_241c);
          return (FILE *)0x0;
        }
        if (*(FILE **)PTR_stdout_0002cfec != __stream_00) goto LAB_0001cafc;
      }
      if (DAT_0002d4b8 == 0) {
        fputc(10,__stream_00);
      }
      else {
        DAT_0002d4b8 = 0;
      }
      if (DAT_0002d1b8 == 0) {
        fwrite(&DAT_00023e89,1,2,__stream_00);
      }
      else {
        DAT_0002d1b8 = 0;
      }
      uVar2 = *(undefined4 *)(param_1 + 4);
      pcVar6 = (char *)dcgettext("gprof","*** File %s:\n",5);
      fprintf(__stream_00,pcVar6,uVar2);
LAB_0001cafc:
      bVar8 = true;
      pcVar6 = (char *)xmalloc(param_2 + 1);
      local_2428 = 1;
      while (sVar4 = fread(local_201c,1,0x2000,__stream), 0 < (int)sVar4) {
        pcVar3 = local_201c;
        do {
          if (bVar8) {
            (*param_3)(pcVar6,param_2,local_2428,param_4);
            fputs(pcVar6,__stream_00);
            local_2428 = local_2428 + 1;
          }
          cVar1 = *pcVar3;
          bVar8 = cVar1 == '\n';
          pcVar3 = pcVar3 + 1;
          fputc((int)cVar1,__stream_00);
        } while (pcVar3 != local_201c + sVar4);
      }
      free(pcVar6);
      fclose(__stream);
      return __stream_00;
    }
    if (pcVar6 == (char *)0x0 && puVar7 == (undefined4 *)0x0) {
      pcVar3 = *(char **)(param_1 + 4);
      pcVar6 = strrchr(pcVar3,0x2f);
      if (pcVar6 == (char *)0x0) goto LAB_0001cc60;
      pcVar6 = pcVar6 + 1;
      puVar7 = DAT_0002e17c;
    }
    if (puVar7 == (undefined4 *)0x0) {
      pcVar3 = *(char **)(param_1 + 4);
LAB_0001cc60:
      piVar5 = __errno_location();
      uVar2 = DAT_0002e508;
      if (*piVar5 != 2) {
        perror(pcVar3);
        return (FILE *)0x0;
      }
      pcVar6 = (char *)dcgettext("gprof","%s: could not locate `%s\'\n",5);
      fprintf(*(FILE **)PTR_stderr_0002cfcc,pcVar6,uVar2,pcVar3);
      return (FILE *)0x0;
    }
    pcVar3 = stpcpy(&local_241c,(char *)(puVar7 + 1));
    pcVar3[0] = '/';
    pcVar3[1] = '\0';
    if (pcVar6 == (char *)0x0) {
      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),*(char **)(param_1 + 4));
      puVar7 = (undefined4 *)*puVar7;
    }
    else {
      strcpy(pcVar3 + (int)(acStack_241b + -(int)&local_241c),pcVar6);
      puVar7 = (undefined4 *)*puVar7;
    }
  } while( true );
}

