mono_md5_init (struct MonoMD5Context * ctx)
{
  union _endian * _endian.0;
  char D.5207;

  ctx->buf[0] = 1732584193;
  ctx->buf[1] = 4023233417;
  ctx->buf[2] = 2562383102;
  ctx->buf[3] = 271733878;
  ctx->bits[0] = 0;
  ctx->bits[1] = 0;
  _endian.0 = _endian;
  D.5207 = _endian.0->b[0];
  if (D.5207 == 68) goto <D.5208>; else goto <D.5209>;
  <D.5208>:
  ctx->doByteReverse = 1;
  goto <D.5210>;
  <D.5209>:
  ctx->doByteReverse = 0;
  <D.5210>:
}


mono_md5_update (struct MonoMD5Context * ctx, const guchar * buf, guint32 len)
{
  unsigned int D.5211;
  unsigned int D.5212;
  unsigned int D.5213;
  unsigned int D.5216;
  unsigned int D.5217;
  unsigned int D.5218;
  unsigned int D.5219;
  unsigned int D.5220;
  guchar[64] * D.5223;
  sizetype D.5224;
  long unsigned int D.5227;
  long unsigned int D.5228;
  int D.5229;
  guint32[4] * D.5232;
  guint32 t;

  t = ctx->bits[0];
  D.5211 = len << 3;
  D.5212 = D.5211 + t;
  ctx->bits[0] = D.5212;
  D.5213 = ctx->bits[0];
  if (D.5213 < t) goto <D.5214>; else goto <D.5215>;
  <D.5214>:
  D.5216 = ctx->bits[1];
  D.5217 = D.5216 + 1;
  ctx->bits[1] = D.5217;
  <D.5215>:
  D.5216 = ctx->bits[1];
  D.5218 = len >> 29;
  D.5219 = D.5216 + D.5218;
  ctx->bits[1] = D.5219;
  D.5220 = t >> 3;
  t = D.5220 & 63;
  if (t != 0) goto <D.5221>; else goto <D.5222>;
  <D.5221>:
  {
    guchar * p;

    D.5223 = &ctx->in;
    D.5224 = (sizetype) t;
    p = D.5223 + D.5224;
    t = 64 - t;
    if (len < t) goto <D.5225>; else goto <D.5226>;
    <D.5225>:
    D.5227 = (long unsigned int) len;
    memcpy (p, buf, D.5227);
    return;
    <D.5226>:
    D.5228 = (long unsigned int) t;
    memcpy (p, buf, D.5228);
    D.5229 = ctx->doByteReverse;
    if (D.5229 != 0) goto <D.5230>; else goto <D.5231>;
    <D.5230>:
    D.5223 = &ctx->in;
    _byte_reverse (D.5223, 16);
    <D.5231>:
    D.5232 = &ctx->buf;
    D.5223 = &ctx->in;
    md5_transform (D.5232, D.5223);
    D.5224 = (sizetype) t;
    buf = buf + D.5224;
    len = len - t;
  }
  <D.5222>:
  goto <D.5172>;
  <D.5171>:
  D.5223 = &ctx->in;
  memcpy (D.5223, buf, 64);
  D.5229 = ctx->doByteReverse;
  if (D.5229 != 0) goto <D.5233>; else goto <D.5234>;
  <D.5233>:
  D.5223 = &ctx->in;
  _byte_reverse (D.5223, 16);
  <D.5234>:
  D.5232 = &ctx->buf;
  D.5223 = &ctx->in;
  md5_transform (D.5232, D.5223);
  buf = buf + 64;
  len = len + 4294967232;
  <D.5172>:
  if (len > 63) goto <D.5171>; else goto <D.5173>;
  <D.5173>:
  D.5223 = &ctx->in;
  D.5227 = (long unsigned int) len;
  memcpy (D.5223, buf, D.5227);
}


_byte_reverse (guchar * buf, guint32 longs)
{
  guchar * D.5236;
  unsigned char D.5237;
  unsigned int D.5238;
  unsigned int D.5239;
  guchar * D.5240;
  unsigned char D.5241;
  unsigned int D.5242;
  unsigned int D.5243;
  unsigned int D.5244;
  guchar * D.5245;
  unsigned char D.5246;
  unsigned int D.5247;
  unsigned int D.5248;
  unsigned char D.5249;
  unsigned int D.5250;
  unsigned int D.5251;
  guint32 t;

  <D.5159>:
  D.5236 = buf + 3;
  D.5237 = *D.5236;
  D.5238 = (unsigned int) D.5237;
  D.5239 = D.5238 << 8;
  D.5240 = buf + 2;
  D.5241 = *D.5240;
  D.5242 = (unsigned int) D.5241;
  D.5243 = D.5239 | D.5242;
  D.5244 = D.5243 << 16;
  D.5245 = buf + 1;
  D.5246 = *D.5245;
  D.5247 = (unsigned int) D.5246;
  D.5248 = D.5247 << 8;
  D.5249 = *buf;
  D.5250 = (unsigned int) D.5249;
  D.5251 = D.5248 | D.5250;
  t = D.5244 | D.5251;
  MEM[(guint32 *)buf] = t;
  buf = buf + 4;
  longs = longs + 4294967295;
  if (longs != 0) goto <D.5159>; else goto <D.5160>;
  <D.5160>:
}


md5_transform (guint32 * buf, const guint32 * in)
{
  unsigned int D.5252;
  unsigned int D.5253;
  unsigned int D.5254;
  unsigned int D.5255;
  unsigned int D.5256;
  unsigned int D.5257;
  unsigned int D.5258;
  unsigned int D.5259;
  unsigned int D.5260;
  const guint32 * D.5261;
  unsigned int D.5262;
  unsigned int D.5263;
  unsigned int D.5264;
  unsigned int D.5265;
  unsigned int D.5266;
  unsigned int D.5267;
  const guint32 * D.5268;
  unsigned int D.5269;
  unsigned int D.5270;
  unsigned int D.5271;
  unsigned int D.5272;
  unsigned int D.5273;
  unsigned int D.5274;
  const guint32 * D.5275;
  unsigned int D.5276;
  unsigned int D.5277;
  unsigned int D.5278;
  const guint32 * D.5279;
  unsigned int D.5280;
  unsigned int D.5281;
  unsigned int D.5282;
  const guint32 * D.5283;
  unsigned int D.5284;
  unsigned int D.5285;
  unsigned int D.5286;
  const guint32 * D.5287;
  unsigned int D.5288;
  unsigned int D.5289;
  unsigned int D.5290;
  const guint32 * D.5291;
  unsigned int D.5292;
  unsigned int D.5293;
  unsigned int D.5294;
  const guint32 * D.5295;
  unsigned int D.5296;
  unsigned int D.5297;
  unsigned int D.5298;
  const guint32 * D.5299;
  unsigned int D.5300;
  unsigned int D.5301;
  unsigned int D.5302;
  const guint32 * D.5303;
  unsigned int D.5304;
  unsigned int D.5305;
  unsigned int D.5306;
  const guint32 * D.5307;
  unsigned int D.5308;
  unsigned int D.5309;
  unsigned int D.5310;
  const guint32 * D.5311;
  unsigned int D.5312;
  unsigned int D.5313;
  unsigned int D.5314;
  const guint32 * D.5315;
  unsigned int D.5316;
  unsigned int D.5317;
  unsigned int D.5318;
  const guint32 * D.5319;
  unsigned int D.5320;
  unsigned int D.5321;
  unsigned int D.5322;
  const guint32 * D.5323;
  unsigned int D.5324;
  unsigned int D.5325;
  unsigned int D.5326;
  unsigned int D.5327;
  unsigned int D.5328;
  unsigned int D.5329;
  unsigned int D.5330;
  unsigned int D.5331;
  unsigned int D.5332;
  unsigned int D.5333;
  unsigned int D.5334;
  unsigned int D.5335;
  unsigned int D.5336;
  unsigned int D.5337;
  unsigned int D.5338;
  unsigned int D.5339;
  unsigned int D.5340;
  unsigned int D.5341;
  unsigned int D.5342;
  unsigned int D.5343;
  unsigned int D.5344;
  unsigned int D.5345;
  unsigned int D.5346;
  unsigned int D.5347;
  unsigned int D.5348;
  unsigned int D.5349;
  unsigned int D.5350;
  unsigned int D.5351;
  unsigned int D.5352;
  unsigned int D.5353;
  unsigned int D.5354;
  unsigned int D.5355;
  unsigned int D.5356;
  unsigned int D.5357;
  unsigned int D.5358;
  unsigned int D.5359;
  unsigned int D.5360;
  unsigned int D.5361;
  unsigned int D.5362;
  unsigned int D.5363;
  unsigned int D.5364;
  unsigned int D.5365;
  unsigned int D.5366;
  unsigned int D.5367;
  unsigned int D.5368;
  unsigned int D.5369;
  unsigned int D.5370;
  unsigned int D.5371;
  unsigned int D.5372;
  unsigned int D.5373;
  unsigned int D.5374;
  unsigned int D.5375;
  unsigned int D.5376;
  unsigned int D.5377;
  unsigned int D.5378;
  unsigned int D.5379;
  unsigned int D.5380;
  unsigned int D.5381;
  unsigned int D.5382;
  unsigned int D.5383;
  unsigned int D.5384;
  unsigned int D.5385;
  unsigned int D.5386;
  unsigned int D.5387;
  unsigned int D.5388;
  unsigned int D.5389;
  unsigned int D.5390;
  unsigned int D.5391;
  unsigned int D.5392;
  unsigned int D.5393;
  unsigned int D.5394;
  unsigned int D.5395;
  unsigned int D.5396;
  unsigned int D.5397;
  unsigned int D.5398;
  unsigned int D.5399;
  unsigned int D.5400;
  unsigned int D.5401;
  unsigned int D.5402;
  unsigned int D.5403;
  unsigned int D.5404;
  unsigned int D.5405;
  unsigned int D.5406;
  unsigned int D.5407;
  unsigned int D.5408;
  unsigned int D.5409;
  unsigned int D.5410;
  unsigned int D.5411;
  unsigned int D.5412;
  unsigned int D.5413;
  unsigned int D.5414;
  unsigned int D.5415;
  unsigned int D.5416;
  unsigned int D.5417;
  unsigned int D.5418;
  unsigned int D.5419;
  unsigned int D.5420;
  unsigned int D.5421;
  unsigned int D.5422;
  unsigned int D.5423;
  unsigned int D.5424;
  unsigned int D.5425;
  unsigned int D.5426;
  unsigned int D.5427;
  unsigned int D.5428;
  unsigned int D.5429;
  unsigned int D.5430;
  unsigned int D.5431;
  unsigned int D.5432;
  unsigned int D.5433;
  unsigned int D.5434;
  unsigned int D.5435;
  unsigned int D.5436;
  unsigned int D.5437;
  unsigned int D.5438;
  unsigned int D.5439;
  unsigned int D.5440;
  unsigned int D.5441;
  unsigned int D.5442;
  unsigned int D.5443;
  unsigned int D.5444;
  unsigned int D.5445;
  unsigned int D.5446;
  unsigned int D.5447;
  unsigned int D.5448;
  guint32 * D.5449;
  unsigned int D.5450;
  unsigned int D.5451;
  guint32 * D.5452;
  unsigned int D.5453;
  unsigned int D.5454;
  guint32 * D.5455;
  unsigned int D.5456;
  unsigned int D.5457;
  register guint32 a;
  register guint32 b;
  register guint32 c;
  register guint32 d;

  a = *buf;
  b = MEM[(guint32 *)buf + 4B];
  c = MEM[(guint32 *)buf + 8B];
  d = MEM[(guint32 *)buf + 12B];
  D.5252 = c ^ d;
  D.5253 = D.5252 & b;
  D.5254 = D.5253 ^ d;
  D.5255 = *in;
  D.5256 = D.5254 + D.5255;
  D.5257 = D.5256 + a;
  a = D.5257 + 3614090360;
  a = a r>> 25;
  a = a + b;
  D.5258 = b ^ c;
  D.5259 = D.5258 & a;
  D.5260 = D.5259 ^ c;
  D.5261 = in + 4;
  D.5262 = *D.5261;
  D.5263 = D.5260 + D.5262;
  D.5264 = D.5263 + d;
  d = D.5264 + 3905402710;
  d = d r>> 20;
  d = d + a;
  D.5265 = a ^ b;
  D.5266 = D.5265 & d;
  D.5267 = D.5266 ^ b;
  D.5268 = in + 8;
  D.5269 = *D.5268;
  D.5270 = D.5267 + D.5269;
  D.5271 = D.5270 + c;
  c = D.5271 + 606105819;
  c = c r>> 15;
  c = c + d;
  D.5272 = d ^ a;
  D.5273 = D.5272 & c;
  D.5274 = D.5273 ^ a;
  D.5275 = in + 12;
  D.5276 = *D.5275;
  D.5277 = D.5274 + D.5276;
  D.5278 = D.5277 + b;
  b = D.5278 + 3250441966;
  b = b r>> 10;
  b = b + c;
  D.5252 = c ^ d;
  D.5253 = D.5252 & b;
  D.5254 = D.5253 ^ d;
  D.5279 = in + 16;
  D.5280 = *D.5279;
  D.5281 = D.5254 + D.5280;
  D.5282 = D.5281 + a;
  a = D.5282 + 4118548399;
  a = a r>> 25;
  a = a + b;
  D.5258 = b ^ c;
  D.5259 = D.5258 & a;
  D.5260 = D.5259 ^ c;
  D.5283 = in + 20;
  D.5284 = *D.5283;
  D.5285 = D.5260 + D.5284;
  D.5286 = D.5285 + d;
  d = D.5286 + 1200080426;
  d = d r>> 20;
  d = d + a;
  D.5265 = a ^ b;
  D.5266 = D.5265 & d;
  D.5267 = D.5266 ^ b;
  D.5287 = in + 24;
  D.5288 = *D.5287;
  D.5289 = D.5267 + D.5288;
  D.5290 = D.5289 + c;
  c = D.5290 + 2821735955;
  c = c r>> 15;
  c = c + d;
  D.5272 = d ^ a;
  D.5273 = D.5272 & c;
  D.5274 = D.5273 ^ a;
  D.5291 = in + 28;
  D.5292 = *D.5291;
  D.5293 = D.5274 + D.5292;
  D.5294 = D.5293 + b;
  b = D.5294 + 4249261313;
  b = b r>> 10;
  b = b + c;
  D.5252 = c ^ d;
  D.5253 = D.5252 & b;
  D.5254 = D.5253 ^ d;
  D.5295 = in + 32;
  D.5296 = *D.5295;
  D.5297 = D.5254 + D.5296;
  D.5298 = D.5297 + a;
  a = D.5298 + 1770035416;
  a = a r>> 25;
  a = a + b;
  D.5258 = b ^ c;
  D.5259 = D.5258 & a;
  D.5260 = D.5259 ^ c;
  D.5299 = in + 36;
  D.5300 = *D.5299;
  D.5301 = D.5260 + D.5300;
  D.5302 = D.5301 + d;
  d = D.5302 + 2336552879;
  d = d r>> 20;
  d = d + a;
  D.5265 = a ^ b;
  D.5266 = D.5265 & d;
  D.5267 = D.5266 ^ b;
  D.5303 = in + 40;
  D.5304 = *D.5303;
  D.5305 = D.5267 + D.5304;
  D.5306 = D.5305 + c;
  c = D.5306 + 4294925233;
  c = c r>> 15;
  c = c + d;
  D.5272 = d ^ a;
  D.5273 = D.5272 & c;
  D.5274 = D.5273 ^ a;
  D.5307 = in + 44;
  D.5308 = *D.5307;
  D.5309 = D.5274 + D.5308;
  D.5310 = D.5309 + b;
  b = D.5310 + 2304563134;
  b = b r>> 10;
  b = b + c;
  D.5252 = c ^ d;
  D.5253 = D.5252 & b;
  D.5254 = D.5253 ^ d;
  D.5311 = in + 48;
  D.5312 = *D.5311;
  D.5313 = D.5254 + D.5312;
  D.5314 = D.5313 + a;
  a = D.5314 + 1804603682;
  a = a r>> 25;
  a = a + b;
  D.5258 = b ^ c;
  D.5259 = D.5258 & a;
  D.5260 = D.5259 ^ c;
  D.5315 = in + 52;
  D.5316 = *D.5315;
  D.5317 = D.5260 + D.5316;
  D.5318 = D.5317 + d;
  d = D.5318 + 4254626195;
  d = d r>> 20;
  d = d + a;
  D.5265 = a ^ b;
  D.5266 = D.5265 & d;
  D.5267 = D.5266 ^ b;
  D.5319 = in + 56;
  D.5320 = *D.5319;
  D.5321 = D.5267 + D.5320;
  D.5322 = D.5321 + c;
  c = D.5322 + 2792965006;
  c = c r>> 15;
  c = c + d;
  D.5272 = d ^ a;
  D.5273 = D.5272 & c;
  D.5274 = D.5273 ^ a;
  D.5323 = in + 60;
  D.5324 = *D.5323;
  D.5325 = D.5274 + D.5324;
  D.5326 = D.5325 + b;
  b = D.5326 + 1236535329;
  b = b r>> 10;
  b = b + c;
  D.5258 = b ^ c;
  D.5327 = D.5258 & d;
  D.5328 = D.5327 ^ c;
  D.5261 = in + 4;
  D.5262 = *D.5261;
  D.5329 = D.5328 + D.5262;
  D.5330 = D.5329 + a;
  a = D.5330 + 4129170786;
  a = a r>> 27;
  a = a + b;
  D.5265 = a ^ b;
  D.5331 = D.5265 & c;
  D.5332 = D.5331 ^ b;
  D.5287 = in + 24;
  D.5288 = *D.5287;
  D.5333 = D.5332 + D.5288;
  D.5334 = D.5333 + d;
  d = D.5334 + 3225465664;
  d = d r>> 23;
  d = d + a;
  D.5272 = d ^ a;
  D.5335 = D.5272 & b;
  D.5336 = D.5335 ^ a;
  D.5307 = in + 44;
  D.5308 = *D.5307;
  D.5337 = D.5336 + D.5308;
  D.5338 = D.5337 + c;
  c = D.5338 + 643717713;
  c = c r>> 18;
  c = c + d;
  D.5252 = c ^ d;
  D.5339 = D.5252 & a;
  D.5340 = D.5339 ^ d;
  D.5255 = *in;
  D.5341 = D.5340 + D.5255;
  D.5342 = D.5341 + b;
  b = D.5342 + 3921069994;
  b = b r>> 12;
  b = b + c;
  D.5258 = b ^ c;
  D.5327 = D.5258 & d;
  D.5328 = D.5327 ^ c;
  D.5283 = in + 20;
  D.5284 = *D.5283;
  D.5343 = D.5328 + D.5284;
  D.5344 = D.5343 + a;
  a = D.5344 + 3593408605;
  a = a r>> 27;
  a = a + b;
  D.5265 = a ^ b;
  D.5331 = D.5265 & c;
  D.5332 = D.5331 ^ b;
  D.5303 = in + 40;
  D.5304 = *D.5303;
  D.5345 = D.5332 + D.5304;
  D.5346 = D.5345 + d;
  d = D.5346 + 38016083;
  d = d r>> 23;
  d = d + a;
  D.5272 = d ^ a;
  D.5335 = D.5272 & b;
  D.5336 = D.5335 ^ a;
  D.5323 = in + 60;
  D.5324 = *D.5323;
  D.5347 = D.5336 + D.5324;
  D.5348 = D.5347 + c;
  c = D.5348 + 3634488961;
  c = c r>> 18;
  c = c + d;
  D.5252 = c ^ d;
  D.5339 = D.5252 & a;
  D.5340 = D.5339 ^ d;
  D.5279 = in + 16;
  D.5280 = *D.5279;
  D.5349 = D.5340 + D.5280;
  D.5350 = D.5349 + b;
  b = D.5350 + 3889429448;
  b = b r>> 12;
  b = b + c;
  D.5258 = b ^ c;
  D.5327 = D.5258 & d;
  D.5328 = D.5327 ^ c;
  D.5299 = in + 36;
  D.5300 = *D.5299;
  D.5351 = D.5328 + D.5300;
  D.5352 = D.5351 + a;
  a = D.5352 + 568446438;
  a = a r>> 27;
  a = a + b;
  D.5265 = a ^ b;
  D.5331 = D.5265 & c;
  D.5332 = D.5331 ^ b;
  D.5319 = in + 56;
  D.5320 = *D.5319;
  D.5353 = D.5332 + D.5320;
  D.5354 = D.5353 + d;
  d = D.5354 + 3275163606;
  d = d r>> 23;
  d = d + a;
  D.5272 = d ^ a;
  D.5335 = D.5272 & b;
  D.5336 = D.5335 ^ a;
  D.5275 = in + 12;
  D.5276 = *D.5275;
  D.5355 = D.5336 + D.5276;
  D.5356 = D.5355 + c;
  c = D.5356 + 4107603335;
  c = c r>> 18;
  c = c + d;
  D.5252 = c ^ d;
  D.5339 = D.5252 & a;
  D.5340 = D.5339 ^ d;
  D.5295 = in + 32;
  D.5296 = *D.5295;
  D.5357 = D.5340 + D.5296;
  D.5358 = D.5357 + b;
  b = D.5358 + 1163531501;
  b = b r>> 12;
  b = b + c;
  D.5258 = b ^ c;
  D.5327 = D.5258 & d;
  D.5328 = D.5327 ^ c;
  D.5315 = in + 52;
  D.5316 = *D.5315;
  D.5359 = D.5328 + D.5316;
  D.5360 = D.5359 + a;
  a = D.5360 + 2850285829;
  a = a r>> 27;
  a = a + b;
  D.5265 = a ^ b;
  D.5331 = D.5265 & c;
  D.5332 = D.5331 ^ b;
  D.5268 = in + 8;
  D.5269 = *D.5268;
  D.5361 = D.5332 + D.5269;
  D.5362 = D.5361 + d;
  d = D.5362 + 4243563512;
  d = d r>> 23;
  d = d + a;
  D.5272 = d ^ a;
  D.5335 = D.5272 & b;
  D.5336 = D.5335 ^ a;
  D.5291 = in + 28;
  D.5292 = *D.5291;
  D.5363 = D.5336 + D.5292;
  D.5364 = D.5363 + c;
  c = D.5364 + 1735328473;
  c = c r>> 18;
  c = c + d;
  D.5252 = c ^ d;
  D.5339 = D.5252 & a;
  D.5340 = D.5339 ^ d;
  D.5311 = in + 48;
  D.5312 = *D.5311;
  D.5365 = D.5340 + D.5312;
  D.5366 = D.5365 + b;
  b = D.5366 + 2368359562;
  b = b r>> 12;
  b = b + c;
  D.5258 = b ^ c;
  D.5367 = D.5258 ^ d;
  D.5283 = in + 20;
  D.5284 = *D.5283;
  D.5368 = D.5367 + D.5284;
  D.5369 = D.5368 + a;
  a = D.5369 + 4294588738;
  a = a r>> 28;
  a = a + b;
  D.5265 = a ^ b;
  D.5370 = D.5265 ^ c;
  D.5295 = in + 32;
  D.5296 = *D.5295;
  D.5371 = D.5370 + D.5296;
  D.5372 = D.5371 + d;
  d = D.5372 + 2272392833;
  d = d r>> 21;
  d = d + a;
  D.5272 = d ^ a;
  D.5373 = D.5272 ^ b;
  D.5307 = in + 44;
  D.5308 = *D.5307;
  D.5374 = D.5373 + D.5308;
  D.5375 = D.5374 + c;
  c = D.5375 + 1839030562;
  c = c r>> 16;
  c = c + d;
  D.5252 = c ^ d;
  D.5376 = D.5252 ^ a;
  D.5319 = in + 56;
  D.5320 = *D.5319;
  D.5377 = D.5376 + D.5320;
  D.5378 = D.5377 + b;
  b = D.5378 + 4259657740;
  b = b r>> 9;
  b = b + c;
  D.5258 = b ^ c;
  D.5367 = D.5258 ^ d;
  D.5261 = in + 4;
  D.5262 = *D.5261;
  D.5379 = D.5367 + D.5262;
  D.5380 = D.5379 + a;
  a = D.5380 + 2763975236;
  a = a r>> 28;
  a = a + b;
  D.5265 = a ^ b;
  D.5370 = D.5265 ^ c;
  D.5279 = in + 16;
  D.5280 = *D.5279;
  D.5381 = D.5370 + D.5280;
  D.5382 = D.5381 + d;
  d = D.5382 + 1272893353;
  d = d r>> 21;
  d = d + a;
  D.5272 = d ^ a;
  D.5373 = D.5272 ^ b;
  D.5291 = in + 28;
  D.5292 = *D.5291;
  D.5383 = D.5373 + D.5292;
  D.5384 = D.5383 + c;
  c = D.5384 + 4139469664;
  c = c r>> 16;
  c = c + d;
  D.5252 = c ^ d;
  D.5376 = D.5252 ^ a;
  D.5303 = in + 40;
  D.5304 = *D.5303;
  D.5385 = D.5376 + D.5304;
  D.5386 = D.5385 + b;
  b = D.5386 + 3200236656;
  b = b r>> 9;
  b = b + c;
  D.5258 = b ^ c;
  D.5367 = D.5258 ^ d;
  D.5315 = in + 52;
  D.5316 = *D.5315;
  D.5387 = D.5367 + D.5316;
  D.5388 = D.5387 + a;
  a = D.5388 + 681279174;
  a = a r>> 28;
  a = a + b;
  D.5265 = a ^ b;
  D.5370 = D.5265 ^ c;
  D.5255 = *in;
  D.5389 = D.5370 + D.5255;
  D.5390 = D.5389 + d;
  d = D.5390 + 3936430074;
  d = d r>> 21;
  d = d + a;
  D.5272 = d ^ a;
  D.5373 = D.5272 ^ b;
  D.5275 = in + 12;
  D.5276 = *D.5275;
  D.5391 = D.5373 + D.5276;
  D.5392 = D.5391 + c;
  c = D.5392 + 3572445317;
  c = c r>> 16;
  c = c + d;
  D.5252 = c ^ d;
  D.5376 = D.5252 ^ a;
  D.5287 = in + 24;
  D.5288 = *D.5287;
  D.5393 = D.5376 + D.5288;
  D.5394 = D.5393 + b;
  b = D.5394 + 76029189;
  b = b r>> 9;
  b = b + c;
  D.5258 = b ^ c;
  D.5367 = D.5258 ^ d;
  D.5299 = in + 36;
  D.5300 = *D.5299;
  D.5395 = D.5367 + D.5300;
  D.5396 = D.5395 + a;
  a = D.5396 + 3654602809;
  a = a r>> 28;
  a = a + b;
  D.5265 = a ^ b;
  D.5370 = D.5265 ^ c;
  D.5311 = in + 48;
  D.5312 = *D.5311;
  D.5397 = D.5370 + D.5312;
  D.5398 = D.5397 + d;
  d = D.5398 + 3873151461;
  d = d r>> 21;
  d = d + a;
  D.5272 = d ^ a;
  D.5373 = D.5272 ^ b;
  D.5323 = in + 60;
  D.5324 = *D.5323;
  D.5399 = D.5373 + D.5324;
  D.5400 = D.5399 + c;
  c = D.5400 + 530742520;
  c = c r>> 16;
  c = c + d;
  D.5252 = c ^ d;
  D.5376 = D.5252 ^ a;
  D.5268 = in + 8;
  D.5269 = *D.5268;
  D.5401 = D.5376 + D.5269;
  D.5402 = D.5401 + b;
  b = D.5402 + 3299628645;
  b = b r>> 9;
  b = b + c;
  D.5403 = ~d;
  D.5404 = D.5403 | b;
  D.5405 = D.5404 ^ c;
  D.5255 = *in;
  D.5406 = D.5405 + D.5255;
  D.5407 = D.5406 + a;
  a = D.5407 + 4096336452;
  a = a r>> 26;
  a = a + b;
  D.5408 = ~c;
  D.5409 = D.5408 | a;
  D.5410 = D.5409 ^ b;
  D.5291 = in + 28;
  D.5292 = *D.5291;
  D.5411 = D.5410 + D.5292;
  D.5412 = D.5411 + d;
  d = D.5412 + 1126891415;
  d = d r>> 22;
  d = d + a;
  D.5413 = ~b;
  D.5414 = D.5413 | d;
  D.5415 = D.5414 ^ a;
  D.5319 = in + 56;
  D.5320 = *D.5319;
  D.5416 = D.5415 + D.5320;
  D.5417 = D.5416 + c;
  c = D.5417 + 2878612391;
  c = c r>> 17;
  c = c + d;
  D.5418 = ~a;
  D.5419 = D.5418 | c;
  D.5420 = D.5419 ^ d;
  D.5283 = in + 20;
  D.5284 = *D.5283;
  D.5421 = D.5420 + D.5284;
  D.5422 = D.5421 + b;
  b = D.5422 + 4237533241;
  b = b r>> 11;
  b = b + c;
  D.5403 = ~d;
  D.5404 = D.5403 | b;
  D.5405 = D.5404 ^ c;
  D.5311 = in + 48;
  D.5312 = *D.5311;
  D.5423 = D.5405 + D.5312;
  D.5424 = D.5423 + a;
  a = D.5424 + 1700485571;
  a = a r>> 26;
  a = a + b;
  D.5408 = ~c;
  D.5409 = D.5408 | a;
  D.5410 = D.5409 ^ b;
  D.5275 = in + 12;
  D.5276 = *D.5275;
  D.5425 = D.5410 + D.5276;
  D.5426 = D.5425 + d;
  d = D.5426 + 2399980690;
  d = d r>> 22;
  d = d + a;
  D.5413 = ~b;
  D.5414 = D.5413 | d;
  D.5415 = D.5414 ^ a;
  D.5303 = in + 40;
  D.5304 = *D.5303;
  D.5427 = D.5415 + D.5304;
  D.5428 = D.5427 + c;
  c = D.5428 + 4293915773;
  c = c r>> 17;
  c = c + d;
  D.5418 = ~a;
  D.5419 = D.5418 | c;
  D.5420 = D.5419 ^ d;
  D.5261 = in + 4;
  D.5262 = *D.5261;
  D.5429 = D.5420 + D.5262;
  D.5430 = D.5429 + b;
  b = D.5430 + 2240044497;
  b = b r>> 11;
  b = b + c;
  D.5403 = ~d;
  D.5404 = D.5403 | b;
  D.5405 = D.5404 ^ c;
  D.5295 = in + 32;
  D.5296 = *D.5295;
  D.5431 = D.5405 + D.5296;
  D.5432 = D.5431 + a;
  a = D.5432 + 1873313359;
  a = a r>> 26;
  a = a + b;
  D.5408 = ~c;
  D.5409 = D.5408 | a;
  D.5410 = D.5409 ^ b;
  D.5323 = in + 60;
  D.5324 = *D.5323;
  D.5433 = D.5410 + D.5324;
  D.5434 = D.5433 + d;
  d = D.5434 + 4264355552;
  d = d r>> 22;
  d = d + a;
  D.5413 = ~b;
  D.5414 = D.5413 | d;
  D.5415 = D.5414 ^ a;
  D.5287 = in + 24;
  D.5288 = *D.5287;
  D.5435 = D.5415 + D.5288;
  D.5436 = D.5435 + c;
  c = D.5436 + 2734768916;
  c = c r>> 17;
  c = c + d;
  D.5418 = ~a;
  D.5419 = D.5418 | c;
  D.5420 = D.5419 ^ d;
  D.5315 = in + 52;
  D.5316 = *D.5315;
  D.5437 = D.5420 + D.5316;
  D.5438 = D.5437 + b;
  b = D.5438 + 1309151649;
  b = b r>> 11;
  b = b + c;
  D.5403 = ~d;
  D.5404 = D.5403 | b;
  D.5405 = D.5404 ^ c;
  D.5279 = in + 16;
  D.5280 = *D.5279;
  D.5439 = D.5405 + D.5280;
  D.5440 = D.5439 + a;
  a = D.5440 + 4149444226;
  a = a r>> 26;
  a = a + b;
  D.5408 = ~c;
  D.5409 = D.5408 | a;
  D.5410 = D.5409 ^ b;
  D.5307 = in + 44;
  D.5308 = *D.5307;
  D.5441 = D.5410 + D.5308;
  D.5442 = D.5441 + d;
  d = D.5442 + 3174756917;
  d = d r>> 22;
  d = d + a;
  D.5413 = ~b;
  D.5414 = D.5413 | d;
  D.5415 = D.5414 ^ a;
  D.5268 = in + 8;
  D.5269 = *D.5268;
  D.5443 = D.5415 + D.5269;
  D.5444 = D.5443 + c;
  c = D.5444 + 718787259;
  c = c r>> 17;
  c = c + d;
  D.5418 = ~a;
  D.5419 = D.5418 | c;
  D.5420 = D.5419 ^ d;
  D.5299 = in + 36;
  D.5300 = *D.5299;
  D.5445 = D.5420 + D.5300;
  D.5446 = D.5445 + b;
  b = D.5446 + 3951481745;
  b = b r>> 11;
  b = b + c;
  D.5447 = *buf;
  D.5448 = D.5447 + a;
  *buf = D.5448;
  D.5449 = buf + 4;
  D.5449 = buf + 4;
  D.5450 = *D.5449;
  D.5451 = D.5450 + b;
  *D.5449 = D.5451;
  D.5452 = buf + 8;
  D.5452 = buf + 8;
  D.5453 = *D.5452;
  D.5454 = D.5453 + c;
  *D.5452 = D.5454;
  D.5455 = buf + 12;
  D.5455 = buf + 12;
  D.5456 = *D.5455;
  D.5457 = D.5456 + d;
  *D.5455 = D.5457;
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__, __nothrow__, __leaf__))
memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.5458;
  long unsigned int D.5459;

  D.5459 = __builtin_object_size (__dest, 0);
  D.5458 = __builtin___memcpy_chk (__dest, __src, __len, D.5459);
  return D.5458;
}


mono_md5_final (struct MonoMD5Context * ctx, guchar * digest)
{
  unsigned int D.5461;
  unsigned int D.5462;
  guchar[64] * D.5463;
  sizetype D.5464;
  guchar * p.1;
  long unsigned int D.5468;
  int D.5469;
  guint32[4] * D.5472;
  unsigned int D.5474;
  long unsigned int D.5475;
  guint32 * D.5478;
  guint32 * D.5479;
  unsigned int D.5480;
  guint32 count;
  guchar * p;

  D.5461 = ctx->bits[0];
  D.5462 = D.5461 >> 3;
  count = D.5462 & 63;
  D.5463 = &ctx->in;
  D.5464 = (sizetype) count;
  p = D.5463 + D.5464;
  p.1 = p;
  p = p.1 + 1;
  *p.1 = 128;
  count = 63 - count;
  if (count <= 7) goto <D.5466>; else goto <D.5467>;
  <D.5466>:
  D.5468 = (long unsigned int) count;
  memset (p, 0, D.5468);
  D.5469 = ctx->doByteReverse;
  if (D.5469 != 0) goto <D.5470>; else goto <D.5471>;
  <D.5470>:
  D.5463 = &ctx->in;
  _byte_reverse (D.5463, 16);
  <D.5471>:
  D.5472 = &ctx->buf;
  D.5463 = &ctx->in;
  md5_transform (D.5472, D.5463);
  D.5463 = &ctx->in;
  memset (D.5463, 0, 56);
  goto <D.5473>;
  <D.5467>:
  D.5474 = count + 4294967288;
  D.5475 = (long unsigned int) D.5474;
  memset (p, 0, D.5475);
  <D.5473>:
  D.5469 = ctx->doByteReverse;
  if (D.5469 != 0) goto <D.5476>; else goto <D.5477>;
  <D.5476>:
  D.5463 = &ctx->in;
  _byte_reverse (D.5463, 14);
  <D.5477>:
  D.5463 = &ctx->in;
  D.5478 = D.5463 + 56;
  D.5461 = ctx->bits[0];
  *D.5478 = D.5461;
  D.5463 = &ctx->in;
  D.5479 = D.5463 + 60;
  D.5480 = ctx->bits[1];
  *D.5479 = D.5480;
  D.5472 = &ctx->buf;
  D.5463 = &ctx->in;
  md5_transform (D.5472, D.5463);
  D.5469 = ctx->doByteReverse;
  if (D.5469 != 0) goto <D.5481>; else goto <D.5482>;
  <D.5481>:
  D.5472 = &ctx->buf;
  _byte_reverse (D.5472, 4);
  <D.5482>:
  D.5472 = &ctx->buf;
  memcpy (digest, D.5472, 16);
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__, __nothrow__, __leaf__))
memset (void * __dest, int __ch, size_t __len)
{
  void * D.5483;
  long unsigned int D.5484;

  D.5484 = __builtin_object_size (__dest, 0);
  D.5483 = __builtin___memset_chk (__dest, __ch, __len, D.5484);
  return D.5483;
}


mono_md5_get_digest (const guchar * buffer, gint buffer_size, guchar * digest)
{
  unsigned int buffer_size.2;
  struct MonoMD5Context ctx;

  try
    {
      mono_md5_init (&ctx);
      buffer_size.2 = (unsigned int) buffer_size;
      mono_md5_update (&ctx, buffer, buffer_size.2);
      mono_md5_final (&ctx, digest);
    }
  finally
    {
      ctx = {CLOBBER};
    }
}


mono_md5_get_digest_from_file (const gchar * filename, guchar * digest)
{
  unsigned int nb_bytes_read.3;
  long unsigned int D.5490;
  int D.5491;
  struct MonoMD5Context ctx;
  guchar tmp_buf[1024];
  gint nb_bytes_read;
  struct FILE * fp;

  try
    {
      mono_md5_init (&ctx);
      fp = fopen (filename, "r");
      if (fp == 0B) goto <D.5487>; else goto <D.5488>;
      <D.5487>:
      return;
      <D.5488>:
      goto <D.5203>;
      <D.5202>:
      nb_bytes_read.3 = (unsigned int) nb_bytes_read;
      mono_md5_update (&ctx, &tmp_buf, nb_bytes_read.3);
      <D.5203>:
      D.5490 = fread (&tmp_buf, 1, 1024, fp);
      nb_bytes_read = (gint) D.5490;
      if (nb_bytes_read > 0) goto <D.5202>; else goto <D.5204>;
      <D.5204>:
      D.5491 = ferror (fp);
      if (D.5491 != 0) goto <D.5492>; else goto <D.5493>;
      <D.5492>:
      fclose (fp);
      return;
      <D.5493>:
      fclose (fp);
      mono_md5_final (&ctx, digest);
    }
  finally
    {
      ctx = {CLOBBER};
      tmp_buf = {CLOBBER};
    }
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__))
fread (void * restrict __ptr, size_t __size, size_t __n, struct FILE * restrict __stream)
{
  long unsigned int D.5497;
  int D.5502;
  int D.5504;
  long unsigned int D.5506;
  size_t D.5507;
  long unsigned int D.5508;
  long unsigned int D.5509;
  long unsigned int D.5510;
  long unsigned int D.5513;

  D.5497 = __builtin_object_size (__ptr, 0);
  if (D.5497 != 18446744073709551615) goto <D.5498>; else goto <D.5499>;
  <D.5498>:
  D.5502 = __builtin_constant_p (__size);
  if (D.5502 == 0) goto <D.5500>; else goto <D.5503>;
  <D.5503>:
  D.5504 = __builtin_constant_p (__n);
  if (D.5504 == 0) goto <D.5500>; else goto <D.5505>;
  <D.5505>:
  D.5506 = __size | __n;
  if (D.5506 > 4294967295) goto <D.5500>; else goto <D.5501>;
  <D.5500>:
  D.5508 = __builtin_object_size (__ptr, 0);
  D.5507 = __fread_chk (__ptr, D.5508, __size, __n, __stream);
  return D.5507;
  <D.5501>:
  D.5509 = __size * __n;
  D.5510 = __builtin_object_size (__ptr, 0);
  if (D.5509 > D.5510) goto <D.5511>; else goto <D.5512>;
  <D.5511>:
  D.5513 = __builtin_object_size (__ptr, 0);
  D.5507 = __fread_chk_warn (__ptr, D.5513, __size, __n, __stream);
  return D.5507;
  <D.5512>:
  <D.5499>:
  D.5507 = __fread_alias (__ptr, __size, __n, __stream);
  return D.5507;
}


