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

  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.5040 = _endian.0->b[0];
  if (D.5040 == 68) goto <D.5041>; else goto <D.5042>;
  <D.5041>:
  ctx->doByteReverse = 1;
  goto <D.5043>;
  <D.5042>:
  ctx->doByteReverse = 0;
  <D.5043>:
}


mono_md5_update (struct MonoMD5Context * ctx, const guchar * buf, guint32 len)
{
  unsigned int D.5044;
  unsigned int D.5045;
  unsigned int D.5046;
  unsigned int D.5049;
  unsigned int D.5050;
  unsigned int D.5051;
  unsigned int D.5052;
  unsigned int D.5053;
  sizetype D.5056;
  long unsigned int D.5059;
  long unsigned int D.5060;
  int D.5061;
  guchar[64] * D.5064;
  guint32[4] * D.5065;
  guint32 t;

  t = ctx->bits[0];
  D.5044 = len << 3;
  D.5045 = D.5044 + t;
  ctx->bits[0] = D.5045;
  D.5046 = ctx->bits[0];
  if (D.5046 < t) goto <D.5047>; else goto <D.5048>;
  <D.5047>:
  D.5049 = ctx->bits[1];
  D.5050 = D.5049 + 1;
  ctx->bits[1] = D.5050;
  <D.5048>:
  D.5049 = ctx->bits[1];
  D.5051 = len >> 29;
  D.5052 = D.5049 + D.5051;
  ctx->bits[1] = D.5052;
  D.5053 = t >> 3;
  t = D.5053 & 63;
  if (t != 0) goto <D.5054>; else goto <D.5055>;
  <D.5054>:
  {
    guchar * p;

    D.5056 = (sizetype) t;
    p = &ctx->in[D.5056];
    t = 64 - t;
    if (len < t) goto <D.5057>; else goto <D.5058>;
    <D.5057>:
    D.5059 = (long unsigned int) len;
    memcpy (p, buf, D.5059);
    return;
    <D.5058>:
    D.5060 = (long unsigned int) t;
    memcpy (p, buf, D.5060);
    D.5061 = ctx->doByteReverse;
    if (D.5061 != 0) goto <D.5062>; else goto <D.5063>;
    <D.5062>:
    D.5064 = &ctx->in;
    _byte_reverse (D.5064, 16);
    <D.5063>:
    D.5064 = &ctx->in;
    D.5065 = &ctx->buf;
    md5_transform (D.5065, D.5064);
    D.5056 = (sizetype) t;
    buf = buf + D.5056;
    len = len - t;
  }
  <D.5055>:
  goto <D.5005>;
  <D.5004>:
  D.5064 = &ctx->in;
  memcpy (D.5064, buf, 64);
  D.5061 = ctx->doByteReverse;
  if (D.5061 != 0) goto <D.5066>; else goto <D.5067>;
  <D.5066>:
  D.5064 = &ctx->in;
  _byte_reverse (D.5064, 16);
  <D.5067>:
  D.5064 = &ctx->in;
  D.5065 = &ctx->buf;
  md5_transform (D.5065, D.5064);
  buf = buf + 64;
  len = len + 4294967232;
  <D.5005>:
  if (len > 63) goto <D.5004>; else goto <D.5006>;
  <D.5006>:
  D.5059 = (long unsigned int) len;
  D.5064 = &ctx->in;
  memcpy (D.5064, buf, D.5059);
}


_byte_reverse (guchar * buf, guint32 longs)
{
  guchar * D.5069;
  unsigned char D.5070;
  unsigned int D.5071;
  unsigned int D.5072;
  guchar * D.5073;
  unsigned char D.5074;
  unsigned int D.5075;
  unsigned int D.5076;
  unsigned int D.5077;
  guchar * D.5078;
  unsigned char D.5079;
  unsigned int D.5080;
  unsigned int D.5081;
  unsigned char D.5082;
  unsigned int D.5083;
  unsigned int D.5084;
  guint32 t;

  <D.4992>:
  D.5069 = buf + 3;
  D.5070 = *D.5069;
  D.5071 = (unsigned int) D.5070;
  D.5072 = D.5071 << 8;
  D.5073 = buf + 2;
  D.5074 = *D.5073;
  D.5075 = (unsigned int) D.5074;
  D.5076 = D.5072 | D.5075;
  D.5077 = D.5076 << 16;
  D.5078 = buf + 1;
  D.5079 = *D.5078;
  D.5080 = (unsigned int) D.5079;
  D.5081 = D.5080 << 8;
  D.5082 = *buf;
  D.5083 = (unsigned int) D.5082;
  D.5084 = D.5081 | D.5083;
  t = D.5077 | D.5084;
  MEM[(guint32 *)buf] = t;
  buf = buf + 4;
  longs = longs + 4294967295;
  if (longs != 0) goto <D.4992>; else goto <D.4993>;
  <D.4993>:
}


md5_transform (guint32 * buf, const guint32 * in)
{
  unsigned int D.5085;
  unsigned int D.5086;
  unsigned int D.5087;
  unsigned int D.5088;
  unsigned int D.5089;
  unsigned int D.5090;
  unsigned int D.5091;
  unsigned int D.5092;
  unsigned int D.5093;
  const guint32 * D.5094;
  unsigned int D.5095;
  unsigned int D.5096;
  unsigned int D.5097;
  unsigned int D.5098;
  unsigned int D.5099;
  unsigned int D.5100;
  const guint32 * D.5101;
  unsigned int D.5102;
  unsigned int D.5103;
  unsigned int D.5104;
  unsigned int D.5105;
  unsigned int D.5106;
  unsigned int D.5107;
  const guint32 * D.5108;
  unsigned int D.5109;
  unsigned int D.5110;
  unsigned int D.5111;
  const guint32 * D.5112;
  unsigned int D.5113;
  unsigned int D.5114;
  unsigned int D.5115;
  const guint32 * D.5116;
  unsigned int D.5117;
  unsigned int D.5118;
  unsigned int D.5119;
  const guint32 * D.5120;
  unsigned int D.5121;
  unsigned int D.5122;
  unsigned int D.5123;
  const guint32 * D.5124;
  unsigned int D.5125;
  unsigned int D.5126;
  unsigned int D.5127;
  const guint32 * D.5128;
  unsigned int D.5129;
  unsigned int D.5130;
  unsigned int D.5131;
  const guint32 * D.5132;
  unsigned int D.5133;
  unsigned int D.5134;
  unsigned int D.5135;
  const guint32 * D.5136;
  unsigned int D.5137;
  unsigned int D.5138;
  unsigned int D.5139;
  const guint32 * D.5140;
  unsigned int D.5141;
  unsigned int D.5142;
  unsigned int D.5143;
  const guint32 * D.5144;
  unsigned int D.5145;
  unsigned int D.5146;
  unsigned int D.5147;
  const guint32 * D.5148;
  unsigned int D.5149;
  unsigned int D.5150;
  unsigned int D.5151;
  const guint32 * D.5152;
  unsigned int D.5153;
  unsigned int D.5154;
  unsigned int D.5155;
  const guint32 * D.5156;
  unsigned int D.5157;
  unsigned int D.5158;
  unsigned int D.5159;
  unsigned int D.5160;
  unsigned int D.5161;
  unsigned int D.5162;
  unsigned int D.5163;
  unsigned int D.5164;
  unsigned int D.5165;
  unsigned int D.5166;
  unsigned int D.5167;
  unsigned int D.5168;
  unsigned int D.5169;
  unsigned int D.5170;
  unsigned int D.5171;
  unsigned int D.5172;
  unsigned int D.5173;
  unsigned int D.5174;
  unsigned int D.5175;
  unsigned int D.5176;
  unsigned int D.5177;
  unsigned int D.5178;
  unsigned int D.5179;
  unsigned int D.5180;
  unsigned int D.5181;
  unsigned int D.5182;
  unsigned int D.5183;
  unsigned int D.5184;
  unsigned int D.5185;
  unsigned int D.5186;
  unsigned int D.5187;
  unsigned int D.5188;
  unsigned int D.5189;
  unsigned int D.5190;
  unsigned int D.5191;
  unsigned int D.5192;
  unsigned int D.5193;
  unsigned int D.5194;
  unsigned int D.5195;
  unsigned int D.5196;
  unsigned int D.5197;
  unsigned int D.5198;
  unsigned int D.5199;
  unsigned int D.5200;
  unsigned int D.5201;
  unsigned int D.5202;
  unsigned int D.5203;
  unsigned int D.5204;
  unsigned int D.5205;
  unsigned int D.5206;
  unsigned int D.5207;
  unsigned int D.5208;
  unsigned int D.5209;
  unsigned int D.5210;
  unsigned int D.5211;
  unsigned int D.5212;
  unsigned int D.5213;
  unsigned int D.5214;
  unsigned int D.5215;
  unsigned int D.5216;
  unsigned int D.5217;
  unsigned int D.5218;
  unsigned int D.5219;
  unsigned int D.5220;
  unsigned int D.5221;
  unsigned int D.5222;
  unsigned int D.5223;
  unsigned int D.5224;
  unsigned int D.5225;
  unsigned int D.5226;
  unsigned int D.5227;
  unsigned int D.5228;
  unsigned int D.5229;
  unsigned int D.5230;
  unsigned int D.5231;
  unsigned int D.5232;
  unsigned int D.5233;
  unsigned int D.5234;
  unsigned int D.5235;
  unsigned int D.5236;
  unsigned int D.5237;
  unsigned int D.5238;
  unsigned int D.5239;
  unsigned int D.5240;
  unsigned int D.5241;
  unsigned int D.5242;
  unsigned int D.5243;
  unsigned int D.5244;
  unsigned int D.5245;
  unsigned int D.5246;
  unsigned int D.5247;
  unsigned int D.5248;
  unsigned int D.5249;
  unsigned int D.5250;
  unsigned int D.5251;
  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;
  unsigned int 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;
  unsigned int 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;
  unsigned int D.5275;
  unsigned int D.5276;
  unsigned int D.5277;
  unsigned int D.5278;
  unsigned int D.5279;
  unsigned int D.5280;
  unsigned int D.5281;
  guint32 * D.5282;
  unsigned int D.5283;
  unsigned int D.5284;
  guint32 * D.5285;
  unsigned int D.5286;
  unsigned int D.5287;
  guint32 * D.5288;
  unsigned int D.5289;
  unsigned int D.5290;
  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.5085 = c ^ d;
  D.5086 = D.5085 & b;
  D.5087 = D.5086 ^ d;
  D.5088 = *in;
  D.5089 = D.5087 + D.5088;
  D.5090 = D.5089 + a;
  a = D.5090 + 3614090360;
  a = a r>> 25;
  a = a + b;
  D.5091 = b ^ c;
  D.5092 = D.5091 & a;
  D.5093 = D.5092 ^ c;
  D.5094 = in + 4;
  D.5095 = *D.5094;
  D.5096 = D.5093 + D.5095;
  D.5097 = D.5096 + d;
  d = D.5097 + 3905402710;
  d = d r>> 20;
  d = d + a;
  D.5098 = a ^ b;
  D.5099 = D.5098 & d;
  D.5100 = D.5099 ^ b;
  D.5101 = in + 8;
  D.5102 = *D.5101;
  D.5103 = D.5100 + D.5102;
  D.5104 = D.5103 + c;
  c = D.5104 + 606105819;
  c = c r>> 15;
  c = c + d;
  D.5105 = d ^ a;
  D.5106 = D.5105 & c;
  D.5107 = D.5106 ^ a;
  D.5108 = in + 12;
  D.5109 = *D.5108;
  D.5110 = D.5107 + D.5109;
  D.5111 = D.5110 + b;
  b = D.5111 + 3250441966;
  b = b r>> 10;
  b = b + c;
  D.5085 = c ^ d;
  D.5086 = D.5085 & b;
  D.5087 = D.5086 ^ d;
  D.5112 = in + 16;
  D.5113 = *D.5112;
  D.5114 = D.5087 + D.5113;
  D.5115 = D.5114 + a;
  a = D.5115 + 4118548399;
  a = a r>> 25;
  a = a + b;
  D.5091 = b ^ c;
  D.5092 = D.5091 & a;
  D.5093 = D.5092 ^ c;
  D.5116 = in + 20;
  D.5117 = *D.5116;
  D.5118 = D.5093 + D.5117;
  D.5119 = D.5118 + d;
  d = D.5119 + 1200080426;
  d = d r>> 20;
  d = d + a;
  D.5098 = a ^ b;
  D.5099 = D.5098 & d;
  D.5100 = D.5099 ^ b;
  D.5120 = in + 24;
  D.5121 = *D.5120;
  D.5122 = D.5100 + D.5121;
  D.5123 = D.5122 + c;
  c = D.5123 + 2821735955;
  c = c r>> 15;
  c = c + d;
  D.5105 = d ^ a;
  D.5106 = D.5105 & c;
  D.5107 = D.5106 ^ a;
  D.5124 = in + 28;
  D.5125 = *D.5124;
  D.5126 = D.5107 + D.5125;
  D.5127 = D.5126 + b;
  b = D.5127 + 4249261313;
  b = b r>> 10;
  b = b + c;
  D.5085 = c ^ d;
  D.5086 = D.5085 & b;
  D.5087 = D.5086 ^ d;
  D.5128 = in + 32;
  D.5129 = *D.5128;
  D.5130 = D.5087 + D.5129;
  D.5131 = D.5130 + a;
  a = D.5131 + 1770035416;
  a = a r>> 25;
  a = a + b;
  D.5091 = b ^ c;
  D.5092 = D.5091 & a;
  D.5093 = D.5092 ^ c;
  D.5132 = in + 36;
  D.5133 = *D.5132;
  D.5134 = D.5093 + D.5133;
  D.5135 = D.5134 + d;
  d = D.5135 + 2336552879;
  d = d r>> 20;
  d = d + a;
  D.5098 = a ^ b;
  D.5099 = D.5098 & d;
  D.5100 = D.5099 ^ b;
  D.5136 = in + 40;
  D.5137 = *D.5136;
  D.5138 = D.5100 + D.5137;
  D.5139 = D.5138 + c;
  c = D.5139 + 4294925233;
  c = c r>> 15;
  c = c + d;
  D.5105 = d ^ a;
  D.5106 = D.5105 & c;
  D.5107 = D.5106 ^ a;
  D.5140 = in + 44;
  D.5141 = *D.5140;
  D.5142 = D.5107 + D.5141;
  D.5143 = D.5142 + b;
  b = D.5143 + 2304563134;
  b = b r>> 10;
  b = b + c;
  D.5085 = c ^ d;
  D.5086 = D.5085 & b;
  D.5087 = D.5086 ^ d;
  D.5144 = in + 48;
  D.5145 = *D.5144;
  D.5146 = D.5087 + D.5145;
  D.5147 = D.5146 + a;
  a = D.5147 + 1804603682;
  a = a r>> 25;
  a = a + b;
  D.5091 = b ^ c;
  D.5092 = D.5091 & a;
  D.5093 = D.5092 ^ c;
  D.5148 = in + 52;
  D.5149 = *D.5148;
  D.5150 = D.5093 + D.5149;
  D.5151 = D.5150 + d;
  d = D.5151 + 4254626195;
  d = d r>> 20;
  d = d + a;
  D.5098 = a ^ b;
  D.5099 = D.5098 & d;
  D.5100 = D.5099 ^ b;
  D.5152 = in + 56;
  D.5153 = *D.5152;
  D.5154 = D.5100 + D.5153;
  D.5155 = D.5154 + c;
  c = D.5155 + 2792965006;
  c = c r>> 15;
  c = c + d;
  D.5105 = d ^ a;
  D.5106 = D.5105 & c;
  D.5107 = D.5106 ^ a;
  D.5156 = in + 60;
  D.5157 = *D.5156;
  D.5158 = D.5107 + D.5157;
  D.5159 = D.5158 + b;
  b = D.5159 + 1236535329;
  b = b r>> 10;
  b = b + c;
  D.5091 = b ^ c;
  D.5160 = D.5091 & d;
  D.5161 = D.5160 ^ c;
  D.5094 = in + 4;
  D.5095 = *D.5094;
  D.5162 = D.5161 + D.5095;
  D.5163 = D.5162 + a;
  a = D.5163 + 4129170786;
  a = a r>> 27;
  a = a + b;
  D.5098 = a ^ b;
  D.5164 = D.5098 & c;
  D.5165 = D.5164 ^ b;
  D.5120 = in + 24;
  D.5121 = *D.5120;
  D.5166 = D.5165 + D.5121;
  D.5167 = D.5166 + d;
  d = D.5167 + 3225465664;
  d = d r>> 23;
  d = d + a;
  D.5105 = d ^ a;
  D.5168 = D.5105 & b;
  D.5169 = D.5168 ^ a;
  D.5140 = in + 44;
  D.5141 = *D.5140;
  D.5170 = D.5169 + D.5141;
  D.5171 = D.5170 + c;
  c = D.5171 + 643717713;
  c = c r>> 18;
  c = c + d;
  D.5085 = c ^ d;
  D.5172 = D.5085 & a;
  D.5173 = D.5172 ^ d;
  D.5088 = *in;
  D.5174 = D.5173 + D.5088;
  D.5175 = D.5174 + b;
  b = D.5175 + 3921069994;
  b = b r>> 12;
  b = b + c;
  D.5091 = b ^ c;
  D.5160 = D.5091 & d;
  D.5161 = D.5160 ^ c;
  D.5116 = in + 20;
  D.5117 = *D.5116;
  D.5176 = D.5161 + D.5117;
  D.5177 = D.5176 + a;
  a = D.5177 + 3593408605;
  a = a r>> 27;
  a = a + b;
  D.5098 = a ^ b;
  D.5164 = D.5098 & c;
  D.5165 = D.5164 ^ b;
  D.5136 = in + 40;
  D.5137 = *D.5136;
  D.5178 = D.5165 + D.5137;
  D.5179 = D.5178 + d;
  d = D.5179 + 38016083;
  d = d r>> 23;
  d = d + a;
  D.5105 = d ^ a;
  D.5168 = D.5105 & b;
  D.5169 = D.5168 ^ a;
  D.5156 = in + 60;
  D.5157 = *D.5156;
  D.5180 = D.5169 + D.5157;
  D.5181 = D.5180 + c;
  c = D.5181 + 3634488961;
  c = c r>> 18;
  c = c + d;
  D.5085 = c ^ d;
  D.5172 = D.5085 & a;
  D.5173 = D.5172 ^ d;
  D.5112 = in + 16;
  D.5113 = *D.5112;
  D.5182 = D.5173 + D.5113;
  D.5183 = D.5182 + b;
  b = D.5183 + 3889429448;
  b = b r>> 12;
  b = b + c;
  D.5091 = b ^ c;
  D.5160 = D.5091 & d;
  D.5161 = D.5160 ^ c;
  D.5132 = in + 36;
  D.5133 = *D.5132;
  D.5184 = D.5161 + D.5133;
  D.5185 = D.5184 + a;
  a = D.5185 + 568446438;
  a = a r>> 27;
  a = a + b;
  D.5098 = a ^ b;
  D.5164 = D.5098 & c;
  D.5165 = D.5164 ^ b;
  D.5152 = in + 56;
  D.5153 = *D.5152;
  D.5186 = D.5165 + D.5153;
  D.5187 = D.5186 + d;
  d = D.5187 + 3275163606;
  d = d r>> 23;
  d = d + a;
  D.5105 = d ^ a;
  D.5168 = D.5105 & b;
  D.5169 = D.5168 ^ a;
  D.5108 = in + 12;
  D.5109 = *D.5108;
  D.5188 = D.5169 + D.5109;
  D.5189 = D.5188 + c;
  c = D.5189 + 4107603335;
  c = c r>> 18;
  c = c + d;
  D.5085 = c ^ d;
  D.5172 = D.5085 & a;
  D.5173 = D.5172 ^ d;
  D.5128 = in + 32;
  D.5129 = *D.5128;
  D.5190 = D.5173 + D.5129;
  D.5191 = D.5190 + b;
  b = D.5191 + 1163531501;
  b = b r>> 12;
  b = b + c;
  D.5091 = b ^ c;
  D.5160 = D.5091 & d;
  D.5161 = D.5160 ^ c;
  D.5148 = in + 52;
  D.5149 = *D.5148;
  D.5192 = D.5161 + D.5149;
  D.5193 = D.5192 + a;
  a = D.5193 + 2850285829;
  a = a r>> 27;
  a = a + b;
  D.5098 = a ^ b;
  D.5164 = D.5098 & c;
  D.5165 = D.5164 ^ b;
  D.5101 = in + 8;
  D.5102 = *D.5101;
  D.5194 = D.5165 + D.5102;
  D.5195 = D.5194 + d;
  d = D.5195 + 4243563512;
  d = d r>> 23;
  d = d + a;
  D.5105 = d ^ a;
  D.5168 = D.5105 & b;
  D.5169 = D.5168 ^ a;
  D.5124 = in + 28;
  D.5125 = *D.5124;
  D.5196 = D.5169 + D.5125;
  D.5197 = D.5196 + c;
  c = D.5197 + 1735328473;
  c = c r>> 18;
  c = c + d;
  D.5085 = c ^ d;
  D.5172 = D.5085 & a;
  D.5173 = D.5172 ^ d;
  D.5144 = in + 48;
  D.5145 = *D.5144;
  D.5198 = D.5173 + D.5145;
  D.5199 = D.5198 + b;
  b = D.5199 + 2368359562;
  b = b r>> 12;
  b = b + c;
  D.5091 = b ^ c;
  D.5200 = D.5091 ^ d;
  D.5116 = in + 20;
  D.5117 = *D.5116;
  D.5201 = D.5200 + D.5117;
  D.5202 = D.5201 + a;
  a = D.5202 + 4294588738;
  a = a r>> 28;
  a = a + b;
  D.5098 = a ^ b;
  D.5203 = D.5098 ^ c;
  D.5128 = in + 32;
  D.5129 = *D.5128;
  D.5204 = D.5203 + D.5129;
  D.5205 = D.5204 + d;
  d = D.5205 + 2272392833;
  d = d r>> 21;
  d = d + a;
  D.5105 = d ^ a;
  D.5206 = D.5105 ^ b;
  D.5140 = in + 44;
  D.5141 = *D.5140;
  D.5207 = D.5206 + D.5141;
  D.5208 = D.5207 + c;
  c = D.5208 + 1839030562;
  c = c r>> 16;
  c = c + d;
  D.5085 = c ^ d;
  D.5209 = D.5085 ^ a;
  D.5152 = in + 56;
  D.5153 = *D.5152;
  D.5210 = D.5209 + D.5153;
  D.5211 = D.5210 + b;
  b = D.5211 + 4259657740;
  b = b r>> 9;
  b = b + c;
  D.5091 = b ^ c;
  D.5200 = D.5091 ^ d;
  D.5094 = in + 4;
  D.5095 = *D.5094;
  D.5212 = D.5200 + D.5095;
  D.5213 = D.5212 + a;
  a = D.5213 + 2763975236;
  a = a r>> 28;
  a = a + b;
  D.5098 = a ^ b;
  D.5203 = D.5098 ^ c;
  D.5112 = in + 16;
  D.5113 = *D.5112;
  D.5214 = D.5203 + D.5113;
  D.5215 = D.5214 + d;
  d = D.5215 + 1272893353;
  d = d r>> 21;
  d = d + a;
  D.5105 = d ^ a;
  D.5206 = D.5105 ^ b;
  D.5124 = in + 28;
  D.5125 = *D.5124;
  D.5216 = D.5206 + D.5125;
  D.5217 = D.5216 + c;
  c = D.5217 + 4139469664;
  c = c r>> 16;
  c = c + d;
  D.5085 = c ^ d;
  D.5209 = D.5085 ^ a;
  D.5136 = in + 40;
  D.5137 = *D.5136;
  D.5218 = D.5209 + D.5137;
  D.5219 = D.5218 + b;
  b = D.5219 + 3200236656;
  b = b r>> 9;
  b = b + c;
  D.5091 = b ^ c;
  D.5200 = D.5091 ^ d;
  D.5148 = in + 52;
  D.5149 = *D.5148;
  D.5220 = D.5200 + D.5149;
  D.5221 = D.5220 + a;
  a = D.5221 + 681279174;
  a = a r>> 28;
  a = a + b;
  D.5098 = a ^ b;
  D.5203 = D.5098 ^ c;
  D.5088 = *in;
  D.5222 = D.5203 + D.5088;
  D.5223 = D.5222 + d;
  d = D.5223 + 3936430074;
  d = d r>> 21;
  d = d + a;
  D.5105 = d ^ a;
  D.5206 = D.5105 ^ b;
  D.5108 = in + 12;
  D.5109 = *D.5108;
  D.5224 = D.5206 + D.5109;
  D.5225 = D.5224 + c;
  c = D.5225 + 3572445317;
  c = c r>> 16;
  c = c + d;
  D.5085 = c ^ d;
  D.5209 = D.5085 ^ a;
  D.5120 = in + 24;
  D.5121 = *D.5120;
  D.5226 = D.5209 + D.5121;
  D.5227 = D.5226 + b;
  b = D.5227 + 76029189;
  b = b r>> 9;
  b = b + c;
  D.5091 = b ^ c;
  D.5200 = D.5091 ^ d;
  D.5132 = in + 36;
  D.5133 = *D.5132;
  D.5228 = D.5200 + D.5133;
  D.5229 = D.5228 + a;
  a = D.5229 + 3654602809;
  a = a r>> 28;
  a = a + b;
  D.5098 = a ^ b;
  D.5203 = D.5098 ^ c;
  D.5144 = in + 48;
  D.5145 = *D.5144;
  D.5230 = D.5203 + D.5145;
  D.5231 = D.5230 + d;
  d = D.5231 + 3873151461;
  d = d r>> 21;
  d = d + a;
  D.5105 = d ^ a;
  D.5206 = D.5105 ^ b;
  D.5156 = in + 60;
  D.5157 = *D.5156;
  D.5232 = D.5206 + D.5157;
  D.5233 = D.5232 + c;
  c = D.5233 + 530742520;
  c = c r>> 16;
  c = c + d;
  D.5085 = c ^ d;
  D.5209 = D.5085 ^ a;
  D.5101 = in + 8;
  D.5102 = *D.5101;
  D.5234 = D.5209 + D.5102;
  D.5235 = D.5234 + b;
  b = D.5235 + 3299628645;
  b = b r>> 9;
  b = b + c;
  D.5236 = ~d;
  D.5237 = D.5236 | b;
  D.5238 = D.5237 ^ c;
  D.5088 = *in;
  D.5239 = D.5238 + D.5088;
  D.5240 = D.5239 + a;
  a = D.5240 + 4096336452;
  a = a r>> 26;
  a = a + b;
  D.5241 = ~c;
  D.5242 = D.5241 | a;
  D.5243 = D.5242 ^ b;
  D.5124 = in + 28;
  D.5125 = *D.5124;
  D.5244 = D.5243 + D.5125;
  D.5245 = D.5244 + d;
  d = D.5245 + 1126891415;
  d = d r>> 22;
  d = d + a;
  D.5246 = ~b;
  D.5247 = D.5246 | d;
  D.5248 = D.5247 ^ a;
  D.5152 = in + 56;
  D.5153 = *D.5152;
  D.5249 = D.5248 + D.5153;
  D.5250 = D.5249 + c;
  c = D.5250 + 2878612391;
  c = c r>> 17;
  c = c + d;
  D.5251 = ~a;
  D.5252 = D.5251 | c;
  D.5253 = D.5252 ^ d;
  D.5116 = in + 20;
  D.5117 = *D.5116;
  D.5254 = D.5253 + D.5117;
  D.5255 = D.5254 + b;
  b = D.5255 + 4237533241;
  b = b r>> 11;
  b = b + c;
  D.5236 = ~d;
  D.5237 = D.5236 | b;
  D.5238 = D.5237 ^ c;
  D.5144 = in + 48;
  D.5145 = *D.5144;
  D.5256 = D.5238 + D.5145;
  D.5257 = D.5256 + a;
  a = D.5257 + 1700485571;
  a = a r>> 26;
  a = a + b;
  D.5241 = ~c;
  D.5242 = D.5241 | a;
  D.5243 = D.5242 ^ b;
  D.5108 = in + 12;
  D.5109 = *D.5108;
  D.5258 = D.5243 + D.5109;
  D.5259 = D.5258 + d;
  d = D.5259 + 2399980690;
  d = d r>> 22;
  d = d + a;
  D.5246 = ~b;
  D.5247 = D.5246 | d;
  D.5248 = D.5247 ^ a;
  D.5136 = in + 40;
  D.5137 = *D.5136;
  D.5260 = D.5248 + D.5137;
  D.5261 = D.5260 + c;
  c = D.5261 + 4293915773;
  c = c r>> 17;
  c = c + d;
  D.5251 = ~a;
  D.5252 = D.5251 | c;
  D.5253 = D.5252 ^ d;
  D.5094 = in + 4;
  D.5095 = *D.5094;
  D.5262 = D.5253 + D.5095;
  D.5263 = D.5262 + b;
  b = D.5263 + 2240044497;
  b = b r>> 11;
  b = b + c;
  D.5236 = ~d;
  D.5237 = D.5236 | b;
  D.5238 = D.5237 ^ c;
  D.5128 = in + 32;
  D.5129 = *D.5128;
  D.5264 = D.5238 + D.5129;
  D.5265 = D.5264 + a;
  a = D.5265 + 1873313359;
  a = a r>> 26;
  a = a + b;
  D.5241 = ~c;
  D.5242 = D.5241 | a;
  D.5243 = D.5242 ^ b;
  D.5156 = in + 60;
  D.5157 = *D.5156;
  D.5266 = D.5243 + D.5157;
  D.5267 = D.5266 + d;
  d = D.5267 + 4264355552;
  d = d r>> 22;
  d = d + a;
  D.5246 = ~b;
  D.5247 = D.5246 | d;
  D.5248 = D.5247 ^ a;
  D.5120 = in + 24;
  D.5121 = *D.5120;
  D.5268 = D.5248 + D.5121;
  D.5269 = D.5268 + c;
  c = D.5269 + 2734768916;
  c = c r>> 17;
  c = c + d;
  D.5251 = ~a;
  D.5252 = D.5251 | c;
  D.5253 = D.5252 ^ d;
  D.5148 = in + 52;
  D.5149 = *D.5148;
  D.5270 = D.5253 + D.5149;
  D.5271 = D.5270 + b;
  b = D.5271 + 1309151649;
  b = b r>> 11;
  b = b + c;
  D.5236 = ~d;
  D.5237 = D.5236 | b;
  D.5238 = D.5237 ^ c;
  D.5112 = in + 16;
  D.5113 = *D.5112;
  D.5272 = D.5238 + D.5113;
  D.5273 = D.5272 + a;
  a = D.5273 + 4149444226;
  a = a r>> 26;
  a = a + b;
  D.5241 = ~c;
  D.5242 = D.5241 | a;
  D.5243 = D.5242 ^ b;
  D.5140 = in + 44;
  D.5141 = *D.5140;
  D.5274 = D.5243 + D.5141;
  D.5275 = D.5274 + d;
  d = D.5275 + 3174756917;
  d = d r>> 22;
  d = d + a;
  D.5246 = ~b;
  D.5247 = D.5246 | d;
  D.5248 = D.5247 ^ a;
  D.5101 = in + 8;
  D.5102 = *D.5101;
  D.5276 = D.5248 + D.5102;
  D.5277 = D.5276 + c;
  c = D.5277 + 718787259;
  c = c r>> 17;
  c = c + d;
  D.5251 = ~a;
  D.5252 = D.5251 | c;
  D.5253 = D.5252 ^ d;
  D.5132 = in + 36;
  D.5133 = *D.5132;
  D.5278 = D.5253 + D.5133;
  D.5279 = D.5278 + b;
  b = D.5279 + 3951481745;
  b = b r>> 11;
  b = b + c;
  D.5280 = *buf;
  D.5281 = D.5280 + a;
  *buf = D.5281;
  D.5282 = buf + 4;
  D.5282 = buf + 4;
  D.5283 = *D.5282;
  D.5284 = D.5283 + b;
  *D.5282 = D.5284;
  D.5285 = buf + 8;
  D.5285 = buf + 8;
  D.5286 = *D.5285;
  D.5287 = D.5286 + c;
  *D.5285 = D.5287;
  D.5288 = buf + 12;
  D.5288 = buf + 12;
  D.5289 = *D.5288;
  D.5290 = D.5289 + d;
  *D.5288 = D.5290;
}


memcpy (void * restrict __dest, const void * restrict __src, size_t __len)
{
  void * D.5291;
  long unsigned int D.5292;

  D.5292 = __builtin_object_size (__dest, 0);
  D.5291 = __builtin___memcpy_chk (__dest, __src, __len, D.5292);
  return D.5291;
}


mono_md5_final (struct MonoMD5Context * ctx, guchar * digest)
{
  unsigned int D.5294;
  unsigned int D.5295;
  sizetype D.5296;
  guchar * p.1;
  long unsigned int D.5300;
  int D.5301;
  guchar[64] * D.5304;
  guint32[4] * D.5305;
  unsigned int D.5307;
  long unsigned int D.5308;
  guchar * D.5311;
  guchar * D.5312;
  unsigned int D.5313;
  guint32 count;
  guchar * p;

  D.5294 = ctx->bits[0];
  D.5295 = D.5294 >> 3;
  count = D.5295 & 63;
  D.5296 = (sizetype) count;
  p = &ctx->in[D.5296];
  p.1 = p;
  p = p.1 + 1;
  *p.1 = 128;
  count = 63 - count;
  if (count <= 7) goto <D.5298>; else goto <D.5299>;
  <D.5298>:
  D.5300 = (long unsigned int) count;
  memset (p, 0, D.5300);
  D.5301 = ctx->doByteReverse;
  if (D.5301 != 0) goto <D.5302>; else goto <D.5303>;
  <D.5302>:
  D.5304 = &ctx->in;
  _byte_reverse (D.5304, 16);
  <D.5303>:
  D.5304 = &ctx->in;
  D.5305 = &ctx->buf;
  md5_transform (D.5305, D.5304);
  D.5304 = &ctx->in;
  memset (D.5304, 0, 56);
  goto <D.5306>;
  <D.5299>:
  D.5307 = count + 4294967288;
  D.5308 = (long unsigned int) D.5307;
  memset (p, 0, D.5308);
  <D.5306>:
  D.5301 = ctx->doByteReverse;
  if (D.5301 != 0) goto <D.5309>; else goto <D.5310>;
  <D.5309>:
  D.5304 = &ctx->in;
  _byte_reverse (D.5304, 14);
  <D.5310>:
  D.5311 = &ctx->in[56];
  D.5294 = ctx->bits[0];
  MEM[(guint32 *)D.5311] = D.5294;
  D.5312 = &ctx->in[60];
  D.5313 = ctx->bits[1];
  MEM[(guint32 *)D.5312] = D.5313;
  D.5304 = &ctx->in;
  D.5305 = &ctx->buf;
  md5_transform (D.5305, D.5304);
  D.5301 = ctx->doByteReverse;
  if (D.5301 != 0) goto <D.5314>; else goto <D.5315>;
  <D.5314>:
  D.5305 = &ctx->buf;
  _byte_reverse (D.5305, 4);
  <D.5315>:
  D.5305 = &ctx->buf;
  memcpy (digest, D.5305, 16);
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.5318;
  int D.5323;
  void * D.5325;
  long unsigned int D.5326;

  D.5318 = __builtin_constant_p (__len);
  if (D.5318 != 0) goto <D.5319>; else goto <D.5320>;
  <D.5319>:
  if (__len == 0) goto <D.5321>; else goto <D.5322>;
  <D.5321>:
  D.5323 = __builtin_constant_p (__ch);
  if (D.5323 == 0) goto <D.5316>; else goto <D.5324>;
  <D.5324>:
  if (__ch != 0) goto <D.5316>; else goto <D.5317>;
  <D.5316>:
  __warn_memset_zero_len ();
  D.5325 = __dest;
  return D.5325;
  <D.5317>:
  <D.5322>:
  <D.5320>:
  D.5326 = __builtin_object_size (__dest, 0);
  D.5325 = __builtin___memset_chk (__dest, __ch, __len, D.5326);
  return D.5325;
}


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.5332;
  int D.5333;
  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.5329>; else goto <D.5330>;
      <D.5329>:
      return;
      <D.5330>:
      goto <D.5036>;
      <D.5035>:
      nb_bytes_read.3 = (unsigned int) nb_bytes_read;
      mono_md5_update (&ctx, &tmp_buf, nb_bytes_read.3);
      <D.5036>:
      D.5332 = fread (&tmp_buf, 1, 1024, fp);
      nb_bytes_read = (gint) D.5332;
      if (nb_bytes_read > 0) goto <D.5035>; else goto <D.5037>;
      <D.5037>:
      D.5333 = ferror (fp);
      if (D.5333 != 0) goto <D.5334>; else goto <D.5335>;
      <D.5334>:
      fclose (fp);
      return;
      <D.5335>:
      fclose (fp);
      mono_md5_final (&ctx, digest);
    }
  finally
    {
      ctx = {CLOBBER};
      tmp_buf = {CLOBBER};
    }
}


fread (void * restrict __ptr, size_t __size, size_t __n, struct FILE * restrict __stream)
{
  long unsigned int D.5339;
  int D.5344;
  int D.5346;
  long unsigned int D.5348;
  size_t D.5349;
  long unsigned int D.5350;
  long unsigned int D.5351;
  long unsigned int D.5352;
  long unsigned int D.5355;

  D.5339 = __builtin_object_size (__ptr, 0);
  if (D.5339 != 18446744073709551615) goto <D.5340>; else goto <D.5341>;
  <D.5340>:
  D.5344 = __builtin_constant_p (__size);
  if (D.5344 == 0) goto <D.5342>; else goto <D.5345>;
  <D.5345>:
  D.5346 = __builtin_constant_p (__n);
  if (D.5346 == 0) goto <D.5342>; else goto <D.5347>;
  <D.5347>:
  D.5348 = __size | __n;
  if (D.5348 > 4294967295) goto <D.5342>; else goto <D.5343>;
  <D.5342>:
  D.5350 = __builtin_object_size (__ptr, 0);
  D.5349 = __fread_chk (__ptr, D.5350, __size, __n, __stream);
  return D.5349;
  <D.5343>:
  D.5351 = __size * __n;
  D.5352 = __builtin_object_size (__ptr, 0);
  if (D.5351 > D.5352) goto <D.5353>; else goto <D.5354>;
  <D.5353>:
  D.5355 = __builtin_object_size (__ptr, 0);
  D.5349 = __fread_chk_warn (__ptr, D.5355, __size, __n, __stream);
  return D.5349;
  <D.5354>:
  <D.5341>:
  D.5349 = __fread_alias (__ptr, __size, __n, __stream);
  return D.5349;
}


