mono_portability_helpers_init ()
{
  int __mono_io_portability_helpers.0;
  unsigned int i.1;
  unsigned int D.19037;
  gchar * * D.19038;
  gchar * D.19039;
  int D.19040;
  int __mono_io_portability_helpers.2;
  int D.19045;
  int __mono_io_portability_helpers.3;
  int D.19050;
  int __mono_io_portability_helpers.4;
  const gchar * env;

  __mono_io_portability_helpers.0 = __mono_io_portability_helpers;
  if (__mono_io_portability_helpers.0 != 1) goto <D.19030>; else goto <D.19031>;
  <D.19030>:
  return;
  <D.19031>:
  __mono_io_portability_helpers = 0;
  env = monoeg_g_getenv ("MONO_IOMAP");
  if (env != 0B) goto <D.19032>; else goto <D.19033>;
  <D.19032>:
  {
    gchar * * options;
    int i;

    options = monoeg_g_strsplit (env, ":", 0);
    if (options == 0B) goto <D.19034>; else goto <D.19035>;
    <D.19034>:
    return;
    <D.19035>:
    i = 0;
    goto <D.18943>;
    <D.18942>:
    i.1 = (unsigned int) i;
    D.19037 = i.1 * 4;
    D.19038 = options + D.19037;
    D.19039 = *D.19038;
    D.19040 = strncasecmp (D.19039, "drive", 5);
    if (D.19040 == 0) goto <D.19041>; else goto <D.19042>;
    <D.19041>:
    __mono_io_portability_helpers.0 = __mono_io_portability_helpers;
    __mono_io_portability_helpers.2 = __mono_io_portability_helpers.0 | 2;
    __mono_io_portability_helpers = __mono_io_portability_helpers.2;
    goto <D.19044>;
    <D.19042>:
    i.1 = (unsigned int) i;
    D.19037 = i.1 * 4;
    D.19038 = options + D.19037;
    D.19039 = *D.19038;
    D.19045 = strncasecmp (D.19039, "case", 4);
    if (D.19045 == 0) goto <D.19046>; else goto <D.19047>;
    <D.19046>:
    __mono_io_portability_helpers.0 = __mono_io_portability_helpers;
    __mono_io_portability_helpers.3 = __mono_io_portability_helpers.0 | 4;
    __mono_io_portability_helpers = __mono_io_portability_helpers.3;
    goto <D.19049>;
    <D.19047>:
    i.1 = (unsigned int) i;
    D.19037 = i.1 * 4;
    D.19038 = options + D.19037;
    D.19039 = *D.19038;
    D.19050 = strncasecmp (D.19039, "all", 3);
    if (D.19050 == 0) goto <D.19051>; else goto <D.19052>;
    <D.19051>:
    __mono_io_portability_helpers.0 = __mono_io_portability_helpers;
    __mono_io_portability_helpers.4 = __mono_io_portability_helpers.0 | 6;
    __mono_io_portability_helpers = __mono_io_portability_helpers.4;
    <D.19052>:
    <D.19049>:
    <D.19044>:
    i = i + 1;
    <D.18943>:
    i.1 = (unsigned int) i;
    D.19037 = i.1 * 4;
    D.19038 = options + D.19037;
    D.19039 = *D.19038;
    if (D.19039 != 0B) goto <D.18942>; else goto <D.18944>;
    <D.18944>:
  }
  <D.19033>:
}


mono_portability_find_file (const gchar * pathname, gboolean last_exists)
{
  char D.19058;
  gchar * D.19059;
  struct GString * report.5;
  struct GString * report;
  gchar * ret;

  try
    {
      report = 0B;
      if (pathname == 0B) goto <D.19055>; else goto <D.19057>;
      <D.19057>:
      D.19058 = *pathname;
      if (D.19058 == 0) goto <D.19055>; else goto <D.19056>;
      <D.19055>:
      D.19059 = 0B;
      return D.19059;
      <D.19056>:
      ret = mono_portability_find_file_internal (&report, pathname, last_exists);
      report.5 = report;
      if (report.5 != 0B) goto <D.19061>; else goto <D.19062>;
      <D.19061>:
      report.5 = report;
      monoeg_g_string_free (report.5, 1);
      <D.19062>:
      D.19059 = ret;
      return D.19059;
    }
  finally
    {
      report = {CLOBBER};
    }
}


mono_portability_find_file_internal (struct GString * * report, const gchar * pathname, gboolean last_exists)
{
  <unnamed type> D.19065;
  unsigned int D.19066;
  _Bool D.19067;
  gchar * D.19070;
  int D.19075;
  int __mono_io_portability_helpers.6;
  int D.19079;
  const short unsigned int * * D.19082;
  const short unsigned int * D.19083;
  char D.19084;
  unsigned int D.19085;
  unsigned int D.19086;
  const short unsigned int * D.19087;
  short unsigned int D.19088;
  int D.19089;
  int D.19090;
  gchar * D.19093;
  char D.19094;
  unsigned int D.19097;
  const void * D.19098;
  int D.19099;
  unsigned int D.19100;
  sizetype len.7;
  sizetype D.19102;
  gchar * D.19103;
  sizetype D.19108;
  gchar * D.19109;
  char D.19110;
  int D.19115;
  _Bool D.19118;
  _Bool D.19119;
  _Bool D.19120;
  int D.19123;
  unsigned int num_components.8;
  unsigned int D.19129;
  gchar * * D.19130;
  gchar * D.19131;
  int D.19134;
  unsigned int D.19135;
  unsigned int D.19136;
  int D.18998;
  int iftmp.9;
  int D.18997;
  const char[1] * D.19142;
  unsigned char D.19143;
  int D.19144;
  unsigned char D.19145;
  int D.19146;
  _Bool D.19147;
  _Bool D.19148;
  _Bool D.19149;
  const unsigned char * D.19152;
  unsigned char D.19153;
  int D.19154;
  const unsigned char * D.19155;
  unsigned char D.19156;
  int D.19157;
  _Bool D.19158;
  _Bool D.19159;
  const unsigned char * D.19162;
  unsigned char D.19163;
  int D.19164;
  const unsigned char * D.19165;
  unsigned char D.19166;
  int D.19167;
  _Bool D.19168;
  _Bool D.19169;
  const unsigned char * D.19172;
  unsigned char D.19173;
  int D.19174;
  const unsigned char * D.19175;
  unsigned char D.19176;
  int D.19177;
  gchar * D.19179;
  unsigned char D.19180;
  int component.10;
  unsigned int component.11;
  unsigned int D.19187;
  gchar * * D.19188;
  gchar * D.19189;
  int component.12;
  unsigned int component.13;
  unsigned int D.19199;
  gchar * * D.19200;
  int D.19009;
  int iftmp.14;
  int D.19008;
  unsigned char D.19207;
  int D.19208;
  _Bool D.19209;
  _Bool D.19210;
  _Bool D.19211;
  const unsigned char * D.19214;
  unsigned char D.19215;
  int D.19216;
  _Bool D.19217;
  _Bool D.19218;
  const unsigned char * D.19221;
  unsigned char D.19222;
  int D.19223;
  _Bool D.19224;
  _Bool D.19225;
  const unsigned char * D.19228;
  unsigned char D.19229;
  int D.19230;
  int component.15;
  unsigned int component.16;
  unsigned int D.19236;
  gchar * * D.19237;
  gchar * D.19238;
  int component.17;
  unsigned int component.18;
  unsigned int D.19246;
  gchar * * D.19247;
  int component.19;
  unsigned int component.20;
  unsigned int D.19251;
  gchar * * D.19252;
  gchar * D.19253;
  _Bool D.19254;
  long int D.19255;
  long int D.19256;
  int D.19262;
  unsigned int component.21;
  unsigned int D.19265;
  gchar * * D.19266;
  gchar * D.19267;
  gchar * * D.19270;
  int D.19279;
  int D.19025;
  gchar * new_pathname;
  gchar * * components;
  gchar * * new_components;
  int num_components;
  int component;
  struct DIR * scanning;
  size_t len;
  gboolean drive_stripped;
  gboolean do_report;

  num_components = 0;
  component = 0;
  scanning = 0B;
  drive_stripped = 0;
  D.19065 = mono_profiler_get_events ();
  D.19066 = D.19065 & 262144;
  D.19067 = D.19066 != 0;
  do_report = (gboolean) D.19067;
  if (0 != 0) goto <D.19068>; else goto <D.19069>;
  <D.19068>:
  D.19070 = 0B;
  return D.19070;
  <D.19069>:
  if (do_report != 0) goto <D.19071>; else goto <D.19072>;
  <D.19071>:
  append_report (report, " - Requested file path: \'%s\'\n", pathname);
  <D.19072>:
  new_pathname = monoeg_strdup (pathname);
  if (last_exists != 0) goto <D.19073>; else goto <D.19074>;
  <D.19073>:
  D.19075 = access (new_pathname, 0);
  if (D.19075 == 0) goto <D.19076>; else goto <D.19077>;
  <D.19076>:
  D.19070 = new_pathname;
  return D.19070;
  <D.19077>:
  <D.19074>:
  monoeg_g_strdelimit (new_pathname, "\\", 47);
  __mono_io_portability_helpers.6 = __mono_io_portability_helpers;
  D.19079 = __mono_io_portability_helpers.6 & 2;
  if (D.19079 != 0) goto <D.19080>; else goto <D.19081>;
  <D.19080>:
  D.19082 = __ctype_b_loc ();
  D.19083 = *D.19082;
  D.19084 = *new_pathname;
  D.19085 = (unsigned int) D.19084;
  D.19086 = D.19085 * 2;
  D.19087 = D.19083 + D.19086;
  D.19088 = *D.19087;
  D.19089 = (int) D.19088;
  D.19090 = D.19089 & 1024;
  if (D.19090 != 0) goto <D.19091>; else goto <D.19092>;
  <D.19091>:
  D.19093 = new_pathname + 1;
  D.19094 = *D.19093;
  if (D.19094 == 58) goto <D.19095>; else goto <D.19096>;
  <D.19095>:
  {
    int len;

    D.19097 = strlen (new_pathname);
    len = (int) D.19097;
    D.19098 = new_pathname + 2;
    D.19099 = len + -2;
    D.19100 = (unsigned int) D.19099;
    memmove (new_pathname, D.19098, D.19100);
    len.7 = (sizetype) len;
    D.19102 = len.7 + 4294967294;
    D.19103 = new_pathname + D.19102;
    *D.19103 = 0;
    if (do_report != 0) goto <D.19104>; else goto <D.19105>;
    <D.19104>:
    append_report (report, " - Stripped drive letter.\n");
    drive_stripped = 1;
    <D.19105>:
  }
  <D.19096>:
  <D.19092>:
  <D.19081>:
  len = strlen (new_pathname);
  if (len > 1) goto <D.19106>; else goto <D.19107>;
  <D.19106>:
  D.19108 = len + 4294967295;
  D.19109 = new_pathname + D.19108;
  D.19110 = *D.19109;
  if (D.19110 == 47) goto <D.19111>; else goto <D.19112>;
  <D.19111>:
  D.19108 = len + 4294967295;
  D.19109 = new_pathname + D.19108;
  *D.19109 = 0;
  <D.19112>:
  <D.19107>:
  if (last_exists != 0) goto <D.19113>; else goto <D.19114>;
  <D.19113>:
  D.19115 = access (new_pathname, 0);
  if (D.19115 == 0) goto <D.19116>; else goto <D.19117>;
  <D.19116>:
  D.19118 = do_report != 0;
  D.19119 = drive_stripped != 0;
  D.19120 = D.19118 & D.19119;
  if (D.19120 != 0) goto <D.19121>; else goto <D.19122>;
  <D.19121>:
  do_mono_profiler_iomap (report, pathname, new_pathname);
  <D.19122>:
  D.19070 = new_pathname;
  return D.19070;
  <D.19117>:
  <D.19114>:
  __mono_io_portability_helpers.6 = __mono_io_portability_helpers;
  D.19123 = __mono_io_portability_helpers.6 & 4;
  if (D.19123 == 0) goto <D.19124>; else goto <D.19125>;
  <D.19124>:
  monoeg_g_free (new_pathname);
  D.19070 = 0B;
  return D.19070;
  <D.19125>:
  components = monoeg_g_strsplit (new_pathname, "/", 0);
  if (components == 0B) goto <D.19126>; else goto <D.19127>;
  <D.19126>:
  monoeg_g_free (new_pathname);
  D.19070 = 0B;
  return D.19070;
  <D.19127>:
  goto <D.18988>;
  <D.18987>:
  num_components = num_components + 1;
  <D.18988>:
  num_components.8 = (unsigned int) num_components;
  D.19129 = num_components.8 * 4;
  D.19130 = components + D.19129;
  D.19131 = *D.19130;
  if (D.19131 != 0B) goto <D.18987>; else goto <D.18989>;
  <D.18989>:
  monoeg_g_free (new_pathname);
  if (num_components == 0) goto <D.19132>; else goto <D.19133>;
  <D.19132>:
  D.19070 = 0B;
  return D.19070;
  <D.19133>:
  D.19134 = num_components + 1;
  D.19135 = (unsigned int) D.19134;
  D.19136 = D.19135 * 4;
  new_components = monoeg_malloc0 (D.19136);
  if (num_components > 1) goto <D.19137>; else goto <D.19138>;
  <D.19137>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 0;
    if (__s2_len <= 3) goto <D.19140>; else goto <D.19141>;
    <D.19140>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = *components;
      D.19142 = "";
      D.19143 = MEM[(const unsigned char *)D.19142];
      D.19144 = (int) D.19143;
      D.19145 = *__s2;
      D.19146 = (int) D.19145;
      __result = D.19144 - D.19146;
      {
        D.19147 = __s2_len != 0;
        D.19148 = __result == 0;
        D.19149 = D.19147 & D.19148;
        if (D.19149 != 0) goto <D.19150>; else goto <D.19151>;
        <D.19150>:
        D.19152 = &MEM[(void *)"" + 1B];
        D.19153 = *D.19152;
        D.19154 = (int) D.19153;
        D.19155 = __s2 + 1;
        D.19156 = *D.19155;
        D.19157 = (int) D.19156;
        __result = D.19154 - D.19157;
        D.19158 = __s2_len > 1;
        D.19148 = __result == 0;
        D.19159 = D.19158 & D.19148;
        if (D.19159 != 0) goto <D.19160>; else goto <D.19161>;
        <D.19160>:
        D.19162 = &MEM[(void *)"" + 2B];
        D.19163 = *D.19162;
        D.19164 = (int) D.19163;
        D.19165 = __s2 + 2;
        D.19166 = *D.19165;
        D.19167 = (int) D.19166;
        __result = D.19164 - D.19167;
        D.19168 = __s2_len > 2;
        D.19148 = __result == 0;
        D.19169 = D.19168 & D.19148;
        if (D.19169 != 0) goto <D.19170>; else goto <D.19171>;
        <D.19170>:
        D.19172 = &MEM[(void *)"" + 3B];
        D.19173 = *D.19172;
        D.19174 = (int) D.19173;
        D.19175 = __s2 + 3;
        D.19176 = *D.19175;
        D.19177 = (int) D.19176;
        __result = D.19174 - D.19177;
        <D.19171>:
        <D.19161>:
        <D.19151>:
      }
      D.18997 = __result;
    }
    iftmp.9 = -D.18997;
    goto <D.19178>;
    <D.19141>:
    D.19179 = *components;
    D.19180 = MEM[(const unsigned char * {ref-all})D.19179];
    iftmp.9 = (int) D.19180;
    <D.19178>:
    D.18998 = iftmp.9;
  }
  if (D.18998 == 0) goto <D.19181>; else goto <D.19182>;
  <D.19181>:
  scanning = opendir ("/");
  if (scanning == 0B) goto <D.19183>; else goto <D.19184>;
  <D.19183>:
  monoeg_g_strfreev (new_components);
  monoeg_g_strfreev (components);
  D.19070 = 0B;
  return D.19070;
  <D.19184>:
  component.10 = component;
  component = component.10 + 1;
  component.11 = (unsigned int) component.10;
  D.19187 = component.11 * 4;
  D.19188 = new_components + D.19187;
  D.19189 = monoeg_strdup ("");
  *D.19188 = D.19189;
  goto <D.19190>;
  <D.19182>:
  {
    struct DIR * current;
    gchar * entry;

    current = opendir (".");
    if (current == 0B) goto <D.19191>; else goto <D.19192>;
    <D.19191>:
    monoeg_g_strfreev (new_components);
    monoeg_g_strfreev (components);
    D.19070 = 0B;
    return D.19070;
    <D.19192>:
    D.19179 = *components;
    entry = find_in_dir (current, D.19179);
    if (entry == 0B) goto <D.19193>; else goto <D.19194>;
    <D.19193>:
    monoeg_g_strfreev (new_components);
    monoeg_g_strfreev (components);
    D.19070 = 0B;
    return D.19070;
    <D.19194>:
    scanning = opendir (entry);
    if (scanning == 0B) goto <D.19195>; else goto <D.19196>;
    <D.19195>:
    monoeg_g_free (entry);
    monoeg_g_strfreev (new_components);
    monoeg_g_strfreev (components);
    D.19070 = 0B;
    return D.19070;
    <D.19196>:
    component.12 = component;
    component = component.12 + 1;
    component.13 = (unsigned int) component.12;
    D.19199 = component.13 * 4;
    D.19200 = new_components + D.19199;
    *D.19200 = entry;
  }
  <D.19190>:
  goto <D.19201>;
  <D.19138>:
  if (last_exists != 0) goto <D.19202>; else goto <D.19203>;
  <D.19202>:
  {
    size_t __s1_len;
    size_t __s2_len;

    __s2_len = 0;
    if (__s2_len <= 3) goto <D.19205>; else goto <D.19206>;
    <D.19205>:
    {
      const unsigned char * __s2;
      int __result;

      __s2 = *components;
      D.19142 = "";
      D.19143 = MEM[(const unsigned char *)D.19142];
      D.19144 = (int) D.19143;
      D.19207 = *__s2;
      D.19208 = (int) D.19207;
      __result = D.19144 - D.19208;
      {
        D.19209 = __s2_len != 0;
        D.19210 = __result == 0;
        D.19211 = D.19209 & D.19210;
        if (D.19211 != 0) goto <D.19212>; else goto <D.19213>;
        <D.19212>:
        D.19152 = &MEM[(void *)"" + 1B];
        D.19153 = *D.19152;
        D.19154 = (int) D.19153;
        D.19214 = __s2 + 1;
        D.19215 = *D.19214;
        D.19216 = (int) D.19215;
        __result = D.19154 - D.19216;
        D.19217 = __s2_len > 1;
        D.19210 = __result == 0;
        D.19218 = D.19217 & D.19210;
        if (D.19218 != 0) goto <D.19219>; else goto <D.19220>;
        <D.19219>:
        D.19162 = &MEM[(void *)"" + 2B];
        D.19163 = *D.19162;
        D.19164 = (int) D.19163;
        D.19221 = __s2 + 2;
        D.19222 = *D.19221;
        D.19223 = (int) D.19222;
        __result = D.19164 - D.19223;
        D.19224 = __s2_len > 2;
        D.19210 = __result == 0;
        D.19225 = D.19224 & D.19210;
        if (D.19225 != 0) goto <D.19226>; else goto <D.19227>;
        <D.19226>:
        D.19172 = &MEM[(void *)"" + 3B];
        D.19173 = *D.19172;
        D.19174 = (int) D.19173;
        D.19228 = __s2 + 3;
        D.19229 = *D.19228;
        D.19230 = (int) D.19229;
        __result = D.19174 - D.19230;
        <D.19227>:
        <D.19220>:
        <D.19213>:
      }
      D.19008 = __result;
    }
    iftmp.14 = -D.19008;
    goto <D.19231>;
    <D.19206>:
    D.19179 = *components;
    D.19180 = MEM[(const unsigned char * {ref-all})D.19179];
    iftmp.14 = (int) D.19180;
    <D.19231>:
    D.19009 = iftmp.14;
  }
  if (D.19009 == 0) goto <D.19232>; else goto <D.19233>;
  <D.19232>:
  component.15 = component;
  component = component.15 + 1;
  component.16 = (unsigned int) component.15;
  D.19236 = component.16 * 4;
  D.19237 = new_components + D.19236;
  D.19238 = monoeg_strdup ("");
  *D.19237 = D.19238;
  goto <D.19239>;
  <D.19233>:
  {
    struct DIR * current;
    gchar * entry;

    current = opendir (".");
    if (current == 0B) goto <D.19240>; else goto <D.19241>;
    <D.19240>:
    monoeg_g_strfreev (new_components);
    monoeg_g_strfreev (components);
    D.19070 = 0B;
    return D.19070;
    <D.19241>:
    D.19179 = *components;
    entry = find_in_dir (current, D.19179);
    if (entry == 0B) goto <D.19242>; else goto <D.19243>;
    <D.19242>:
    monoeg_g_strfreev (new_components);
    monoeg_g_strfreev (components);
    D.19070 = 0B;
    return D.19070;
    <D.19243>:
    component.17 = component;
    component = component.17 + 1;
    component.18 = (unsigned int) component.17;
    D.19246 = component.18 * 4;
    D.19247 = new_components + D.19246;
    *D.19247 = entry;
  }
  <D.19239>:
  goto <D.19248>;
  <D.19203>:
  component.19 = component;
  component = component.19 + 1;
  component.20 = (unsigned int) component.19;
  D.19251 = component.20 * 4;
  D.19252 = new_components + D.19251;
  D.19179 = *components;
  D.19253 = monoeg_strdup (D.19179);
  *D.19252 = D.19253;
  <D.19248>:
  <D.19201>:
  D.19254 = component != 1;
  D.19255 = (long int) D.19254;
  D.19256 = __builtin_expect (D.19255, 0);
  if (D.19256 != 0) goto <D.19257>; else goto <D.19258>;
  <D.19257>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "mono-io-portability.c", 343, "component == 1");
  <D.19258>:
  goto <D.19015>;
  <D.19014>:
  {
    gchar * entry;
    gchar * path_so_far;

    if (last_exists == 0) goto <D.19261>; else goto <D.19259>;
    <D.19261>:
    D.19262 = num_components + -1;
    if (D.19262 == component) goto <D.19263>; else goto <D.19259>;
    <D.19263>:
    component.21 = (unsigned int) component;
    D.19265 = component.21 * 4;
    D.19266 = components + D.19265;
    D.19267 = *D.19266;
    entry = monoeg_strdup (D.19267);
    closedir (scanning);
    goto <D.19260>;
    <D.19259>:
    component.21 = (unsigned int) component;
    D.19265 = component.21 * 4;
    D.19266 = components + D.19265;
    D.19267 = *D.19266;
    entry = find_in_dir (scanning, D.19267);
    if (entry == 0B) goto <D.19268>; else goto <D.19269>;
    <D.19268>:
    monoeg_g_strfreev (new_components);
    monoeg_g_strfreev (components);
    D.19070 = 0B;
    return D.19070;
    <D.19269>:
    <D.19260>:
    component.21 = (unsigned int) component;
    D.19265 = component.21 * 4;
    D.19270 = new_components + D.19265;
    *D.19270 = entry;
    D.19262 = num_components + -1;
    if (D.19262 > component) goto <D.19271>; else goto <D.19272>;
    <D.19271>:
    path_so_far = monoeg_g_strjoinv ("/", new_components);
    scanning = opendir (path_so_far);
    monoeg_g_free (path_so_far);
    if (scanning == 0B) goto <D.19273>; else goto <D.19274>;
    <D.19273>:
    monoeg_g_strfreev (new_components);
    monoeg_g_strfreev (components);
    D.19070 = 0B;
    return D.19070;
    <D.19274>:
    <D.19272>:
  }
  component = component + 1;
  <D.19015>:
  if (component < num_components) goto <D.19014>; else goto <D.19016>;
  <D.19016>:
  monoeg_g_strfreev (components);
  new_pathname = monoeg_g_strjoinv ("/", new_components);
  monoeg_g_strfreev (new_components);
  if (last_exists != 0) goto <D.19278>; else goto <D.19275>;
  <D.19278>:
  D.19279 = access (new_pathname, 0);
  if (D.19279 == 0) goto <D.19276>; else goto <D.19275>;
  <D.19275>:
  if (last_exists == 0) goto <D.19276>; else goto <D.19277>;
  <D.19276>:
  if (do_report != 0) goto <D.19280>; else goto <D.19281>;
  <D.19280>:
  {
    size_t __s1_len;
    size_t __s2_len;

    D.19025 = __builtin_strcmp (pathname, new_pathname);
  }
  if (D.19025 != 0) goto <D.19282>; else goto <D.19283>;
  <D.19282>:
  do_mono_profiler_iomap (report, pathname, new_pathname);
  <D.19283>:
  <D.19281>:
  D.19070 = new_pathname;
  return D.19070;
  <D.19277>:
  monoeg_g_free (new_pathname);
  D.19070 = 0B;
  return D.19070;
}


memmove (void * __dest, const void * __src, size_t __len)
{
  void * D.19285;
  unsigned int D.19286;

  D.19286 = __builtin_object_size (__dest, 0);
  D.19285 = __builtin___memmove_chk (__dest, __src, __len, D.19286);
  return D.19285;
}


append_report (struct GString * * report, const gchar * format)
{
  struct GString * D.19288;
  struct GString * D.19291;
  struct va_list ap;

  try
    {
      D.19288 = *report;
      if (D.19288 == 0B) goto <D.19289>; else goto <D.19290>;
      <D.19289>:
      D.19291 = monoeg_g_string_new ("");
      *report = D.19291;
      <D.19290>:
      __builtin_va_start (&ap, 0);
      D.19288 = *report;
      monoeg_g_string_append_vprintf (D.19288, format, ap);
      __builtin_va_end (&ap);
    }
  finally
    {
      ap = {CLOBBER};
    }
}


monoeg_strdup (const gchar * str)
{
  gchar * D.19294;

  if (str != 0B) goto <D.19292>; else goto <D.19293>;
  <D.19292>:
  D.19294 = __strdup (str);
  return D.19294;
  <D.19293>:
  D.19294 = 0B;
  return D.19294;
}


find_in_dir (struct DIR * current, const gchar * name)
{
  char[256] * D.19296;
  int D.19297;
  gchar * D.19300;
  struct dirent * entry;

  goto <D.18952>;
  <D.18951>:
  D.19296 = &entry->d_name;
  D.19297 = monoeg_ascii_strcasecmp (name, D.19296);
  if (D.19297 == 0) goto <D.19298>; else goto <D.19299>;
  <D.19298>:
  {
    char * ret;

    D.19296 = &entry->d_name;
    ret = monoeg_strdup (D.19296);
    closedir (current);
    D.19300 = ret;
    return D.19300;
  }
  <D.19299>:
  <D.18952>:
  entry = readdir (current);
  if (entry != 0B) goto <D.18951>; else goto <D.18953>;
  <D.18953>:
  closedir (current);
  D.19300 = 0B;
  return D.19300;
}


do_mono_profiler_iomap (struct GString * * report, const char * pathname, const char * new_pathname)
{
  struct GString * iftmp.22;
  unsigned int D.19308;
  char * rep;
  struct GString * tmp;

  rep = 0B;
  if (report != 0B) goto <D.19303>; else goto <D.19304>;
  <D.19303>:
  iftmp.22 = *report;
  goto <D.19305>;
  <D.19304>:
  iftmp.22 = 0B;
  <D.19305>:
  tmp = iftmp.22;
  if (tmp != 0B) goto <D.19306>; else goto <D.19307>;
  <D.19306>:
  D.19308 = tmp->len;
  if (D.19308 != 0) goto <D.19309>; else goto <D.19310>;
  <D.19309>:
  rep = monoeg_g_string_free (tmp, 0);
  goto <D.19311>;
  <D.19310>:
  monoeg_g_string_free (tmp, 1);
  <D.19311>:
  *report = 0B;
  <D.19307>:
  mono_profiler_iomap (rep, pathname, new_pathname);
  monoeg_g_free (rep);
}


