mono_unicode_from_external (const gchar * in, gsize * bytes)
{
  gunichar2 * D.5209;
  long unsigned int D.5212;
  long unsigned int D.5213;
  gchar * * D.5214;
  gchar * D.5215;
  int D.5216;
  long int lbytes.0;
  long unsigned int lbytes.1;
  long unsigned int D.5224;
  long int D.5225;
  long unsigned int D.5230;
  long unsigned int D.5231;
  int D.5232;
  gchar * res;
  gchar * * encodings;
  const gchar * encoding_list;
  int i;
  glong lbytes;

  try
    {
      res = 0B;
      if (in == 0B) goto <D.5207>; else goto <D.5208>;
      <D.5207>:
      D.5209 = 0B;
      return D.5209;
      <D.5208>:
      encoding_list = monoeg_g_getenv ("MONO_EXTERNAL_ENCODINGS");
      if (encoding_list == 0B) goto <D.5210>; else goto <D.5211>;
      <D.5210>:
      encoding_list = "";
      <D.5211>:
      encodings = monoeg_g_strsplit (encoding_list, ":", 0);
      i = 0;
      goto <D.5128>;
      <D.5127>:
      D.5212 = (long unsigned int) i;
      D.5213 = D.5212 * 8;
      D.5214 = encodings + D.5213;
      D.5215 = *D.5214;
      D.5216 = strcmp (D.5215, "default_locale");
      if (D.5216 == 0) goto <D.5217>; else goto <D.5218>;
      <D.5217>:
      {
        gchar * utf8;

        utf8 = monoeg_g_locale_to_utf8 (in, -1, 0B, 0B, 0B);
        if (utf8 != 0B) goto <D.5219>; else goto <D.5220>;
        <D.5219>:
        res = monoeg_g_utf8_to_utf16 (utf8, -1, 0B, &lbytes, 0B);
        lbytes.0 = lbytes;
        lbytes.1 = (long unsigned int) lbytes.0;
        *bytes = lbytes.1;
        <D.5220>:
        monoeg_g_free (utf8);
      }
      goto <D.5223>;
      <D.5218>:
      D.5224 = __strlen_g (in);
      D.5225 = (long int) D.5224;
      D.5212 = (long unsigned int) i;
      D.5213 = D.5212 * 8;
      D.5214 = encodings + D.5213;
      D.5215 = *D.5214;
      res = monoeg_g_convert (in, D.5225, "UTF8", D.5215, 0B, bytes, 0B);
      if (res != 0B) goto <D.5226>; else goto <D.5227>;
      <D.5226>:
      {
        gchar * ptr;

        ptr = res;
        res = monoeg_g_utf8_to_utf16 (res, -1, 0B, &lbytes, 0B);
        lbytes.0 = lbytes;
        lbytes.1 = (long unsigned int) lbytes.0;
        *bytes = lbytes.1;
        monoeg_g_free (ptr);
      }
      <D.5227>:
      <D.5223>:
      if (res != 0B) goto <D.5228>; else goto <D.5229>;
      <D.5228>:
      monoeg_g_strfreev (encodings);
      D.5230 = *bytes;
      D.5231 = D.5230 * 2;
      *bytes = D.5231;
      D.5209 = res;
      return D.5209;
      <D.5229>:
      i = i + 1;
      <D.5128>:
      D.5212 = (long unsigned int) i;
      D.5213 = D.5212 * 8;
      D.5214 = encodings + D.5213;
      D.5215 = *D.5214;
      if (D.5215 != 0B) goto <D.5127>; else goto <D.5129>;
      <D.5129>:
      monoeg_g_strfreev (encodings);
      D.5232 = monoeg_g_utf8_validate (in, -1, 0B);
      if (D.5232 != 0) goto <D.5233>; else goto <D.5234>;
      <D.5233>:
      {
        gunichar2 * unires;

        unires = monoeg_g_utf8_to_utf16 (in, -1, 0B, bytes, 0B);
        D.5230 = *bytes;
        D.5231 = D.5230 * 2;
        *bytes = D.5231;
        D.5209 = unires;
        return D.5209;
      }
      <D.5234>:
      D.5209 = 0B;
      return D.5209;
    }
  finally
    {
      lbytes = {CLOBBER};
    }
}


__attribute__((__gnu_inline__, nothrow, leaf, pure))
strcmp (const char * __s1, const char * __s2)
{
  int iftmp.2;
  int iftmp.3;
  int D.5245;
  char * __p1;
  char * __p2;
  int __ret;

  __p1 = __s1;
  __p2 = __s2;
  __asm__ __volatile__("   slr   0,0
0: clst  %1,%2
   jo    0b
   ipm   %0
   srl   %0,28" : "=d" __ret, "=&a" __p1, "=&a" __p2 : "1" __p1, "2" __p2 : "0", "memory", "cc");
  if (__ret != 0) goto <D.5238>; else goto <D.5239>;
  <D.5238>:
  if (__ret == 1) goto <D.5241>; else goto <D.5242>;
  <D.5241>:
  iftmp.3 = -1;
  goto <D.5243>;
  <D.5242>:
  iftmp.3 = 1;
  <D.5243>:
  iftmp.2 = iftmp.3;
  goto <D.5244>;
  <D.5239>:
  iftmp.2 = 0;
  <D.5244>:
  __ret = iftmp.2;
  D.5245 = __ret;
  return D.5245;
}


__attribute__((__gnu_inline__))
__strlen_g (const char * __str)
{
  size_t D.5247;
  long int __ptr.4;
  long int __str.5;
  long int D.5250;
  char * __ptr;
  char * __tmp;

  __ptr = 0B;
  __tmp = __str;
  __asm__ __volatile__("   la    0,0
0: srst  %0,%1
   jo    0b
" : "=&a" __ptr, "=&a" __tmp : "0" __ptr, "1" __tmp : "0", "memory", "cc");
  __ptr.4 = (long int) __ptr;
  __str.5 = (long int) __str;
  D.5250 = __ptr.4 - __str.5;
  D.5247 = (size_t) D.5250;
  return D.5247;
}


mono_utf8_from_external (const gchar * in)
{
  gchar * D.5254;
  long unsigned int D.5257;
  long unsigned int D.5258;
  gchar * * D.5259;
  gchar * D.5260;
  int D.5261;
  int D.5266;
  int D.5272;
  gchar * res;
  gchar * * encodings;
  const gchar * encoding_list;
  int i;

  res = 0B;
  if (in == 0B) goto <D.5252>; else goto <D.5253>;
  <D.5252>:
  D.5254 = 0B;
  return D.5254;
  <D.5253>:
  encoding_list = monoeg_g_getenv ("MONO_EXTERNAL_ENCODINGS");
  if (encoding_list == 0B) goto <D.5255>; else goto <D.5256>;
  <D.5255>:
  encoding_list = "";
  <D.5256>:
  encodings = monoeg_g_strsplit (encoding_list, ":", 0);
  i = 0;
  goto <D.5139>;
  <D.5138>:
  D.5257 = (long unsigned int) i;
  D.5258 = D.5257 * 8;
  D.5259 = encodings + D.5258;
  D.5260 = *D.5259;
  D.5261 = strcmp (D.5260, "default_locale");
  if (D.5261 == 0) goto <D.5262>; else goto <D.5263>;
  <D.5262>:
  res = monoeg_g_locale_to_utf8 (in, -1, 0B, 0B, 0B);
  if (res != 0B) goto <D.5264>; else goto <D.5265>;
  <D.5264>:
  D.5266 = monoeg_g_utf8_validate (res, -1, 0B);
  if (D.5266 == 0) goto <D.5267>; else goto <D.5268>;
  <D.5267>:
  monoeg_g_free (res);
  res = 0B;
  <D.5268>:
  <D.5265>:
  goto <D.5269>;
  <D.5263>:
  D.5257 = (long unsigned int) i;
  D.5258 = D.5257 * 8;
  D.5259 = encodings + D.5258;
  D.5260 = *D.5259;
  res = monoeg_g_convert (in, -1, "UTF8", D.5260, 0B, 0B, 0B);
  <D.5269>:
  if (res != 0B) goto <D.5270>; else goto <D.5271>;
  <D.5270>:
  monoeg_g_strfreev (encodings);
  D.5254 = res;
  return D.5254;
  <D.5271>:
  i = i + 1;
  <D.5139>:
  D.5257 = (long unsigned int) i;
  D.5258 = D.5257 * 8;
  D.5259 = encodings + D.5258;
  D.5260 = *D.5259;
  if (D.5260 != 0B) goto <D.5138>; else goto <D.5140>;
  <D.5140>:
  monoeg_g_strfreev (encodings);
  D.5272 = monoeg_g_utf8_validate (in, -1, 0B);
  if (D.5272 != 0) goto <D.5273>; else goto <D.5274>;
  <D.5273>:
  D.5254 = monoeg_strdup (in);
  return D.5254;
  <D.5274>:
  D.5254 = 0B;
  return D.5254;
}


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

  if (str != 0B) goto <D.5276>; else goto <D.5277>;
  <D.5276>:
  D.5278 = __strdup (str);
  return D.5278;
  <D.5277>:
  D.5278 = 0B;
  return D.5278;
}


mono_unicode_to_external (const gunichar2 * uni)
{
  _Bool D.5280;
  long int D.5281;
  long int D.5282;
  gchar * D.5287;
  long unsigned int D.5288;
  long unsigned int D.5289;
  gchar * * D.5290;
  gchar * D.5291;
  int D.5292;
  gchar * utf8;
  const gchar * encoding_list;

  utf8 = monoeg_g_utf16_to_utf8 (uni, -1, 0B, 0B, 0B);
  D.5280 = utf8 == 0B;
  D.5281 = (long int) D.5280;
  D.5282 = __builtin_expect (D.5281, 0);
  if (D.5282 != 0) goto <D.5283>; else goto <D.5284>;
  <D.5283>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "strenc.c", 183, "utf8!=NULL");
  <D.5284>:
  encoding_list = monoeg_g_getenv ("MONO_EXTERNAL_ENCODINGS");
  if (encoding_list == 0B) goto <D.5285>; else goto <D.5286>;
  <D.5285>:
  D.5287 = utf8;
  return D.5287;
  <D.5286>:
  {
    gchar * res;
    gchar * * encodings;
    int i;

    encodings = monoeg_g_strsplit (encoding_list, ":", 0);
    i = 0;
    goto <D.5150>;
    <D.5149>:
    D.5288 = (long unsigned int) i;
    D.5289 = D.5288 * 8;
    D.5290 = encodings + D.5289;
    D.5291 = *D.5290;
    D.5292 = strcmp (D.5291, "default_locale");
    if (D.5292 == 0) goto <D.5293>; else goto <D.5294>;
    <D.5293>:
    res = monoeg_g_locale_from_utf8 (utf8, -1, 0B, 0B, 0B);
    goto <D.5295>;
    <D.5294>:
    D.5288 = (long unsigned int) i;
    D.5289 = D.5288 * 8;
    D.5290 = encodings + D.5289;
    D.5291 = *D.5290;
    res = monoeg_g_convert (utf8, -1, D.5291, "UTF8", 0B, 0B, 0B);
    <D.5295>:
    if (res != 0B) goto <D.5296>; else goto <D.5297>;
    <D.5296>:
    monoeg_g_free (utf8);
    monoeg_g_strfreev (encodings);
    D.5287 = res;
    return D.5287;
    <D.5297>:
    i = i + 1;
    <D.5150>:
    D.5288 = (long unsigned int) i;
    D.5289 = D.5288 * 8;
    D.5290 = encodings + D.5289;
    D.5291 = *D.5290;
    if (D.5291 != 0B) goto <D.5149>; else goto <D.5151>;
    <D.5151>:
    monoeg_g_strfreev (encodings);
  }
  D.5287 = utf8;
  return D.5287;
}


mono_utf8_validate_and_len (const gchar * source, glong * oLength, const gchar * * oEnd)
{
  unsigned char D.5299;
  int D.5300;
  char D.5301;
  int D.5302;
  int D.5303;
  sizetype D.5304;
  signed char a.6;
  unsigned char D.5309;
  guchar * D.5312;
  unsigned char D.5313;
  guchar * D.5318;
  unsigned char D.5319;
  guchar * D.5335;
  unsigned char D.5336;
  unsigned char D.5337;
  unsigned char D.5342;
  unsigned char D.5351;
  long int D.5362;
  long int D.5363;
  gboolean D.5368;
  gboolean retVal;
  gboolean lastRet;
  guchar * ptr;
  guchar * srcPtr;
  guint length;
  guchar a;

  retVal = 1;
  lastRet = 1;
  ptr = source;
  *oLength = 0;
  goto <D.5176>;
  <D.5175>:
  D.5299 = *ptr;
  D.5300 = (int) D.5299;
  D.5301 = trailingBytesForUTF8[D.5300];
  D.5302 = (int) D.5301;
  D.5303 = D.5302 + 1;
  length = (guint) D.5303;
  D.5304 = (sizetype) length;
  srcPtr = ptr + D.5304;
  switch (length) <default: <D.5163>, case 1: <D.5174>, case 2: <D.5166>, case 3: <D.5165>, case 4: <D.5164>>
  <D.5163>:
  retVal = 0;
  <D.5164>:
  srcPtr = srcPtr + 18446744073709551615;
  a = *srcPtr;
  a.6 = (signed char) a;
  if (a.6 >= 0) goto <D.5305>; else goto <D.5308>;
  <D.5308>:
  if (a > 191) goto <D.5305>; else goto <D.5306>;
  <D.5305>:
  retVal = 0;
  <D.5306>:
  D.5309 = a + 66;
  if (D.5309 <= 1) goto <D.5310>; else goto <D.5311>;
  <D.5310>:
  D.5312 = srcPtr + 18446744073709551615;
  D.5313 = *D.5312;
  if (D.5313 == 191) goto <D.5314>; else goto <D.5315>;
  <D.5314>:
  D.5318 = srcPtr + 18446744073709551614;
  D.5319 = *D.5318;
  if (D.5319 == 143) goto <D.5316>; else goto <D.5320>;
  <D.5320>:
  D.5318 = srcPtr + 18446744073709551614;
  D.5319 = *D.5318;
  if (D.5319 == 159) goto <D.5316>; else goto <D.5321>;
  <D.5321>:
  D.5318 = srcPtr + 18446744073709551614;
  D.5319 = *D.5318;
  if (D.5319 == 175) goto <D.5316>; else goto <D.5322>;
  <D.5322>:
  D.5318 = srcPtr + 18446744073709551614;
  D.5319 = *D.5318;
  if (D.5319 == 191) goto <D.5316>; else goto <D.5317>;
  <D.5316>:
  retVal = 0;
  <D.5317>:
  <D.5315>:
  <D.5311>:
  <D.5165>:
  srcPtr = srcPtr + 18446744073709551615;
  a = *srcPtr;
  a.6 = (signed char) a;
  if (a.6 >= 0) goto <D.5323>; else goto <D.5325>;
  <D.5325>:
  if (a > 191) goto <D.5323>; else goto <D.5324>;
  <D.5323>:
  retVal = 0;
  <D.5324>:
  <D.5166>:
  srcPtr = srcPtr + 18446744073709551615;
  a = *srcPtr;
  a.6 = (signed char) a;
  if (a.6 >= 0) goto <D.5326>; else goto <D.5328>;
  <D.5328>:
  if (a > 191) goto <D.5326>; else goto <D.5327>;
  <D.5326>:
  retVal = 0;
  <D.5327>:
  D.5299 = *ptr;
  D.5300 = (int) D.5299;
  switch (D.5300) <default: <D.5173>, case 224: <D.5167>, case 237: <D.5169>, case 239: <D.5170>, case 240: <D.5171>, case 244: <D.5172>>
  <D.5167>:
  if (a <= 159) goto <D.5329>; else goto <D.5330>;
  <D.5329>:
  retVal = 0;
  <D.5330>:
  goto <D.5168>;
  <D.5169>:
  if (a > 159) goto <D.5331>; else goto <D.5332>;
  <D.5331>:
  retVal = 0;
  <D.5332>:
  goto <D.5168>;
  <D.5170>:
  if (a == 183) goto <D.5333>; else goto <D.5334>;
  <D.5333>:
  D.5335 = srcPtr + 1;
  D.5336 = *D.5335;
  D.5337 = D.5336 + 112;
  if (D.5337 <= 31) goto <D.5338>; else goto <D.5339>;
  <D.5338>:
  retVal = 0;
  <D.5339>:
  <D.5334>:
  if (a == 191) goto <D.5340>; else goto <D.5341>;
  <D.5340>:
  D.5335 = srcPtr + 1;
  D.5336 = *D.5335;
  D.5342 = D.5336 + 66;
  if (D.5342 <= 1) goto <D.5343>; else goto <D.5344>;
  <D.5343>:
  retVal = 0;
  <D.5344>:
  <D.5341>:
  goto <D.5168>;
  <D.5171>:
  if (a <= 143) goto <D.5345>; else goto <D.5346>;
  <D.5345>:
  retVal = 0;
  <D.5346>:
  goto <D.5168>;
  <D.5172>:
  if (a > 143) goto <D.5347>; else goto <D.5348>;
  <D.5347>:
  retVal = 0;
  <D.5348>:
  goto <D.5168>;
  <D.5173>:
  a.6 = (signed char) a;
  if (a.6 >= 0) goto <D.5349>; else goto <D.5350>;
  <D.5349>:
  retVal = 0;
  <D.5350>:
  <D.5168>:
  <D.5174>:
  D.5299 = *ptr;
  D.5351 = D.5299 + 128;
  if (D.5351 <= 65) goto <D.5352>; else goto <D.5353>;
  <D.5352>:
  retVal = 0;
  <D.5353>:
  D.5299 = *ptr;
  if (D.5299 > 244) goto <D.5354>; else goto <D.5355>;
  <D.5354>:
  retVal = 0;
  <D.5355>:
  if (retVal == 0) goto <D.5356>; else goto <D.5357>;
  <D.5356>:
  if (lastRet != 0) goto <D.5358>; else goto <D.5359>;
  <D.5358>:
  if (oEnd != 0B) goto <D.5360>; else goto <D.5361>;
  <D.5360>:
  *oEnd = ptr;
  <D.5361>:
  lastRet = 0;
  <D.5359>:
  <D.5357>:
  D.5304 = (sizetype) length;
  ptr = ptr + D.5304;
  D.5362 = *oLength;
  D.5363 = D.5362 + 1;
  *oLength = D.5363;
  <D.5176>:
  D.5299 = *ptr;
  if (D.5299 != 0) goto <D.5175>; else goto <D.5177>;
  <D.5177>:
  if (retVal != 0) goto <D.5364>; else goto <D.5365>;
  <D.5364>:
  if (oEnd != 0B) goto <D.5366>; else goto <D.5367>;
  <D.5366>:
  *oEnd = ptr;
  <D.5367>:
  <D.5365>:
  D.5368 = retVal;
  return D.5368;
}


mono_utf8_validate_and_len_with_bounds (const gchar * source, glong max_bytes, glong * oLength, const gchar * * oEnd)
{
  sizetype max_bytes.7;
  gboolean D.5375;
  unsigned char D.5376;
  int D.5377;
  char D.5378;
  int D.5379;
  int D.5380;
  sizetype D.5381;
  signed char a.8;
  unsigned char D.5388;
  guchar * D.5391;
  unsigned char D.5392;
  guchar * D.5397;
  unsigned char D.5398;
  guchar * D.5414;
  unsigned char D.5415;
  unsigned char D.5416;
  unsigned char D.5421;
  unsigned char D.5430;
  long int D.5441;
  long int D.5442;
  gboolean retVal;
  gboolean lastRet;
  guchar * ptr;
  guchar * end;
  guchar * srcPtr;
  guint length;
  guchar a;

  retVal = 1;
  lastRet = 1;
  ptr = source;
  max_bytes.7 = (sizetype) max_bytes;
  end = ptr + max_bytes.7;
  *oLength = 0;
  if (max_bytes <= 0) goto <D.5371>; else goto <D.5372>;
  <D.5371>:
  if (oEnd != 0B) goto <D.5373>; else goto <D.5374>;
  <D.5373>:
  *oEnd = ptr;
  <D.5374>:
  D.5375 = 0;
  return D.5375;
  <D.5372>:
  goto <D.5205>;
  <D.5204>:
  D.5376 = *ptr;
  D.5377 = (int) D.5376;
  D.5378 = trailingBytesForUTF8[D.5377];
  D.5379 = (int) D.5378;
  D.5380 = D.5379 + 1;
  length = (guint) D.5380;
  D.5381 = (sizetype) length;
  srcPtr = ptr + D.5381;
  if (srcPtr >= end) goto <D.5382>; else goto <D.5383>;
  <D.5382>:
  retVal = 0;
  goto <D.5191>;
  <D.5383>:
  switch (length) <default: <D.5192>, case 1: <D.5203>, case 2: <D.5195>, case 3: <D.5194>, case 4: <D.5193>>
  <D.5192>:
  retVal = 0;
  <D.5193>:
  srcPtr = srcPtr + 18446744073709551615;
  a = *srcPtr;
  a.8 = (signed char) a;
  if (a.8 >= 0) goto <D.5384>; else goto <D.5387>;
  <D.5387>:
  if (a > 191) goto <D.5384>; else goto <D.5385>;
  <D.5384>:
  retVal = 0;
  <D.5385>:
  D.5388 = a + 66;
  if (D.5388 <= 1) goto <D.5389>; else goto <D.5390>;
  <D.5389>:
  D.5391 = srcPtr + 18446744073709551615;
  D.5392 = *D.5391;
  if (D.5392 == 191) goto <D.5393>; else goto <D.5394>;
  <D.5393>:
  D.5397 = srcPtr + 18446744073709551614;
  D.5398 = *D.5397;
  if (D.5398 == 143) goto <D.5395>; else goto <D.5399>;
  <D.5399>:
  D.5397 = srcPtr + 18446744073709551614;
  D.5398 = *D.5397;
  if (D.5398 == 159) goto <D.5395>; else goto <D.5400>;
  <D.5400>:
  D.5397 = srcPtr + 18446744073709551614;
  D.5398 = *D.5397;
  if (D.5398 == 175) goto <D.5395>; else goto <D.5401>;
  <D.5401>:
  D.5397 = srcPtr + 18446744073709551614;
  D.5398 = *D.5397;
  if (D.5398 == 191) goto <D.5395>; else goto <D.5396>;
  <D.5395>:
  retVal = 0;
  <D.5396>:
  <D.5394>:
  <D.5390>:
  <D.5194>:
  srcPtr = srcPtr + 18446744073709551615;
  a = *srcPtr;
  a.8 = (signed char) a;
  if (a.8 >= 0) goto <D.5402>; else goto <D.5404>;
  <D.5404>:
  if (a > 191) goto <D.5402>; else goto <D.5403>;
  <D.5402>:
  retVal = 0;
  <D.5403>:
  <D.5195>:
  srcPtr = srcPtr + 18446744073709551615;
  a = *srcPtr;
  a.8 = (signed char) a;
  if (a.8 >= 0) goto <D.5405>; else goto <D.5407>;
  <D.5407>:
  if (a > 191) goto <D.5405>; else goto <D.5406>;
  <D.5405>:
  retVal = 0;
  <D.5406>:
  D.5376 = *ptr;
  D.5377 = (int) D.5376;
  switch (D.5377) <default: <D.5202>, case 224: <D.5196>, case 237: <D.5198>, case 239: <D.5199>, case 240: <D.5200>, case 244: <D.5201>>
  <D.5196>:
  if (a <= 159) goto <D.5408>; else goto <D.5409>;
  <D.5408>:
  retVal = 0;
  <D.5409>:
  goto <D.5197>;
  <D.5198>:
  if (a > 159) goto <D.5410>; else goto <D.5411>;
  <D.5410>:
  retVal = 0;
  <D.5411>:
  goto <D.5197>;
  <D.5199>:
  if (a == 183) goto <D.5412>; else goto <D.5413>;
  <D.5412>:
  D.5414 = srcPtr + 1;
  D.5415 = *D.5414;
  D.5416 = D.5415 + 112;
  if (D.5416 <= 31) goto <D.5417>; else goto <D.5418>;
  <D.5417>:
  retVal = 0;
  <D.5418>:
  <D.5413>:
  if (a == 191) goto <D.5419>; else goto <D.5420>;
  <D.5419>:
  D.5414 = srcPtr + 1;
  D.5415 = *D.5414;
  D.5421 = D.5415 + 66;
  if (D.5421 <= 1) goto <D.5422>; else goto <D.5423>;
  <D.5422>:
  retVal = 0;
  <D.5423>:
  <D.5420>:
  goto <D.5197>;
  <D.5200>:
  if (a <= 143) goto <D.5424>; else goto <D.5425>;
  <D.5424>:
  retVal = 0;
  <D.5425>:
  goto <D.5197>;
  <D.5201>:
  if (a > 143) goto <D.5426>; else goto <D.5427>;
  <D.5426>:
  retVal = 0;
  <D.5427>:
  goto <D.5197>;
  <D.5202>:
  a.8 = (signed char) a;
  if (a.8 >= 0) goto <D.5428>; else goto <D.5429>;
  <D.5428>:
  retVal = 0;
  <D.5429>:
  <D.5197>:
  <D.5203>:
  D.5376 = *ptr;
  D.5430 = D.5376 + 128;
  if (D.5430 <= 65) goto <D.5431>; else goto <D.5432>;
  <D.5431>:
  retVal = 0;
  <D.5432>:
  D.5376 = *ptr;
  if (D.5376 > 244) goto <D.5433>; else goto <D.5434>;
  <D.5433>:
  retVal = 0;
  <D.5434>:
  if (retVal == 0) goto <D.5435>; else goto <D.5436>;
  <D.5435>:
  if (lastRet != 0) goto <D.5437>; else goto <D.5438>;
  <D.5437>:
  if (oEnd != 0B) goto <D.5439>; else goto <D.5440>;
  <D.5439>:
  *oEnd = ptr;
  <D.5440>:
  lastRet = 0;
  <D.5438>:
  <D.5436>:
  D.5381 = (sizetype) length;
  ptr = ptr + D.5381;
  D.5441 = *oLength;
  D.5442 = D.5441 + 1;
  *oLength = D.5442;
  <D.5205>:
  D.5376 = *ptr;
  if (D.5376 != 0) goto <D.5204>; else goto <D.5191>;
  <D.5191>:
  if (retVal != 0) goto <D.5443>; else goto <D.5444>;
  <D.5443>:
  if (oEnd != 0B) goto <D.5445>; else goto <D.5446>;
  <D.5445>:
  *oEnd = ptr;
  <D.5446>:
  <D.5444>:
  D.5375 = retVal;
  return D.5375;
}


