mono_mb_new_no_dup_name (struct MonoClass * klass, const char * name, MonoWrapperType type)
{
  struct MonoMethodBuilder * D.17101;
  struct MonoMethodBuilder * mb;

  mb = mono_mb_new_base (klass, type);
  mb->name = name;
  mb->no_dup_name = 1;
  D.17101 = mb;
  return D.17101;
}


mono_mb_new_base (struct MonoClass * klass, MonoWrapperType type)
{
  _Bool D.17103;
  long int D.17104;
  long int D.17105;
  unsigned char D.17108;
  <unnamed-unsigned:5> D.17109;
  unsigned int D.17110;
  long unsigned int D.17111;
  void * D.17112;
  struct MonoMethodBuilder * D.17113;
  struct MonoMethodBuilder * mb;
  struct MonoMethod * m;

  D.17103 = klass == 0B;
  D.17104 = (long int) D.17103;
  D.17105 = __builtin_expect (D.17104, 0);
  if (D.17105 != 0) goto <D.17106>; else goto <D.17107>;
  <D.17106>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-builder.c", 57, "klass != NULL");
  <D.17107>:
  mb = monoeg_malloc0 (88);
  m = monoeg_malloc0 (56);
  mb->method = m;
  m->klass = klass;
  m->inline_info = 1;
  D.17108 = (unsigned char) type;
  D.17109 = (<unnamed-unsigned:5>) D.17108;
  m->wrapper_type = D.17109;
  mb->code_size = 40;
  D.17110 = mb->code_size;
  D.17111 = (long unsigned int) D.17110;
  D.17112 = monoeg_malloc (D.17111);
  mb->code = D.17112;
  mono_mb_add_data (mb, 0B);
  D.17113 = mb;
  return D.17113;
}


mono_mb_new (struct MonoClass * klass, const char * name, MonoWrapperType type)
{
  gchar * D.17115;
  struct MonoMethodBuilder * D.17116;
  struct MonoMethodBuilder * mb;

  mb = mono_mb_new_base (klass, type);
  D.17115 = monoeg_strdup (name);
  mb->name = D.17115;
  D.17116 = mb;
  return D.17116;
}


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

  if (str != 0B) goto <D.17118>; else goto <D.17119>;
  <D.17118>:
  D.17120 = __strdup (str);
  return D.17120;
  <D.17119>:
  D.17120 = 0B;
  return D.17120;
}


mono_mb_free (struct MonoMethodBuilder * mb)
{
  struct GList * D.17122;
  int D.17123;
  struct MonoMethod * D.17126;
  int D.17127;
  char * D.17130;
  unsigned char * D.17131;

  D.17122 = mb->locals_list;
  monoeg_g_list_free (D.17122);
  D.17123 = mb->dynamic;
  if (D.17123 == 0) goto <D.17124>; else goto <D.17125>;
  <D.17124>:
  D.17126 = mb->method;
  monoeg_g_free (D.17126);
  D.17127 = mb->no_dup_name;
  if (D.17127 == 0) goto <D.17128>; else goto <D.17129>;
  <D.17128>:
  D.17130 = mb->name;
  monoeg_g_free (D.17130);
  <D.17129>:
  D.17131 = mb->code;
  monoeg_g_free (D.17131);
  <D.17125>:
  monoeg_g_free (mb);
}


mono_mb_create_method (struct MonoMethodBuilder * mb, struct MonoMethodSignature * signature, int max_stack)
{
  _Bool D.17132;
  long int D.17133;
  long int D.17134;
  struct MonoMethod * D.17137;
  struct MonoClass * D.17138;
  int D.17139;
  char * D.17142;
  int D.17143;
  long unsigned int D.17144;
  long unsigned int D.17145;
  long unsigned int D.17146;
  unsigned char * D.17147;
  void * D.17148;
  struct MonoType * D.17149;
  int D.17151;
  char * D.17155;
  unsigned int D.17156;
  unsigned int D.17157;
  unsigned int D.17158;
  void * D.17159;
  long unsigned int D.17160;
  const unsigned char * D.17161;
  unsigned char D.17162;
  unsigned char D.17163;
  short unsigned int D.17166;
  short unsigned int D.17167;
  short unsigned int D.17170;
  <unnamed-unsigned:15> D.17171;
  short unsigned int D.17172;
  int D.17173;
  short unsigned int D.17174;
  <unnamed-unsigned:15> D.17175;
  struct MonoExceptionClause * D.17176;
  int D.17177;
  unsigned char D.17178;
  <unnamed-unsigned:1> D.17179;
  void * D.17180;
  unsigned int D.17181;
  unsigned char D.17184;
  unsigned char D.17185;
  int D.17188;
  long unsigned int D.17189;
  long unsigned int D.17190;
  unsigned int D.17192;
  unsigned int D.17193;
  long unsigned int D.17194;
  void * D.17195;
  int i.0;
  long unsigned int D.17197;
  long unsigned int D.17198;
  void * * D.17199;
  void * D.17200;
  const char * * D.17201;
  short unsigned int D.17204;
  unsigned int D.17205;
  unsigned int D.17206;
  long unsigned int D.17207;
  char * * D.17208;
  const char * * D.17209;
  const char * D.17210;
  char * D.17211;
  int D.17212;
  struct GHashTable * D.17213;
  struct GHashTable * D.17216;
  struct MonoMethod * D.17217;
  struct MonoMethodHeader * header;
  struct MonoMethodWrapper * mw;
  struct MonoImage * image;
  struct MonoMethod * method;
  struct GList * l;
  int i;

  D.17132 = mb == 0B;
  D.17133 = (long int) D.17132;
  D.17134 = __builtin_expect (D.17133, 0);
  if (D.17134 != 0) goto <D.17135>; else goto <D.17136>;
  <D.17135>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-builder.c", 132, "mb != NULL");
  <D.17136>:
  D.17137 = mb->method;
  D.17138 = D.17137->klass;
  image = D.17138->image;
  D.17139 = mb->dynamic;
  if (D.17139 != 0) goto <D.17140>; else goto <D.17141>;
  <D.17140>:
  method = mb->method;
  mw = method;
  D.17142 = mb->name;
  method->name = D.17142;
  method->dynamic = 1;
  D.17143 = mb->locals;
  D.17144 = (long unsigned int) D.17143;
  D.17145 = D.17144 + 4;
  D.17146 = D.17145 * 8;
  header = monoeg_malloc0 (D.17146);
  mw->header = header;
  D.17147 = mb->code;
  header->code = D.17147;
  i = 0;
  l = mb->locals_list;
  goto <D.16939>;
  <D.16938>:
  D.17148 = l->data;
  D.17149 = mono_metadata_type_dup (0B, D.17148);
  header->locals[i] = D.17149;
  l = l->next;
  i = i + 1;
  <D.16939>:
  if (l != 0B) goto <D.16938>; else goto <D.16940>;
  <D.16940>:
  goto <D.17150>;
  <D.17141>:
  method = mono_image_alloc0 (image, 56);
  D.17137 = mb->method;
  memcpy (method, D.17137, 56);
  mw = method;
  D.17151 = mb->no_dup_name;
  if (D.17151 != 0) goto <D.17152>; else goto <D.17153>;
  <D.17152>:
  D.17142 = mb->name;
  method->name = D.17142;
  goto <D.17154>;
  <D.17153>:
  D.17142 = mb->name;
  D.17155 = mono_image_strdup (image, D.17142);
  method->name = D.17155;
  <D.17154>:
  D.17143 = mb->locals;
  D.17144 = (long unsigned int) D.17143;
  D.17145 = D.17144 + 4;
  D.17156 = (unsigned int) D.17145;
  D.17157 = D.17156 * 8;
  header = mono_image_alloc0 (image, D.17157);
  mw->header = header;
  D.17158 = mb->pos;
  D.17159 = mono_image_alloc (image, D.17158);
  header->code = D.17159;
  D.17158 = mb->pos;
  D.17160 = (long unsigned int) D.17158;
  D.17147 = mb->code;
  D.17161 = header->code;
  memcpy (D.17161, D.17147, D.17160);
  i = 0;
  l = mb->locals_list;
  goto <D.16942>;
  <D.16941>:
  D.17148 = l->data;
  header->locals[i] = D.17148;
  l = l->next;
  i = i + 1;
  <D.16942>:
  if (l != 0B) goto <D.16941>; else goto <D.16943>;
  <D.16943>:
  <D.17150>:
  method->signature = signature;
  D.17162 = BIT_FIELD_REF <*signature, 8, 112>;
  D.17163 = D.17162 & 64;
  if (D.17163 == 0) goto <D.17164>; else goto <D.17165>;
  <D.17164>:
  D.17166 = method->flags;
  D.17167 = D.17166 | 16;
  method->flags = D.17167;
  <D.17165>:
  if (max_stack <= 7) goto <D.17168>; else goto <D.17169>;
  <D.17168>:
  max_stack = 8;
  <D.17169>:
  D.17170 = (short unsigned int) max_stack;
  D.17171 = (<unnamed-unsigned:15>) D.17170;
  header->max_stack = D.17171;
  D.17158 = mb->pos;
  header->code_size = D.17158;
  D.17143 = mb->locals;
  D.17172 = (short unsigned int) D.17143;
  header->num_locals = D.17172;
  header->init_locals = 1;
  D.17173 = mb->num_clauses;
  D.17174 = (short unsigned int) D.17173;
  D.17175 = (<unnamed-unsigned:15>) D.17174;
  header->num_clauses = D.17175;
  D.17176 = mb->clauses;
  header->clauses = D.17176;
  D.17177 = mb->skip_visibility;
  D.17178 = (unsigned char) D.17177;
  D.17179 = (<unnamed-unsigned:1>) D.17178;
  method->skip_visibility = D.17179;
  D.17180 = mw->method_data;
  D.17181 = monoeg_g_list_length (D.17180);
  i = (int) D.17181;
  if (i != 0) goto <D.17182>; else goto <D.17183>;
  <D.17182>:
  {
    struct GList * tmp;
    void * * data;

    D.17180 = mw->method_data;
    l = monoeg_g_list_reverse (D.17180);
    D.17184 = BIT_FIELD_REF <*method, 8, 264>;
    D.17185 = D.17184 & 2;
    if (D.17185 != 0) goto <D.17186>; else goto <D.17187>;
    <D.17186>:
    D.17188 = i + 1;
    D.17189 = (long unsigned int) D.17188;
    D.17190 = D.17189 * 8;
    data = monoeg_malloc (D.17190);
    goto <D.17191>;
    <D.17187>:
    D.17188 = i + 1;
    D.17189 = (long unsigned int) D.17188;
    D.17192 = (unsigned int) D.17189;
    D.17193 = D.17192 * 8;
    data = mono_image_alloc (image, D.17193);
    <D.17191>:
    D.17194 = (long unsigned int) i;
    D.17195 = (void *) D.17194;
    *data = D.17195;
    i = 1;
    tmp = l;
    goto <D.16947>;
    <D.16946>:
    i.0 = i;
    i = i.0 + 1;
    D.17197 = (long unsigned int) i.0;
    D.17198 = D.17197 * 8;
    D.17199 = data + D.17198;
    D.17200 = tmp->data;
    *D.17199 = D.17200;
    tmp = tmp->next;
    <D.16947>:
    if (tmp != 0B) goto <D.16946>; else goto <D.16948>;
    <D.16948>:
    monoeg_g_list_free (l);
    mw->method_data = data;
  }
  <D.17183>:
  D.17201 = mb->param_names;
  if (D.17201 != 0B) goto <D.17202>; else goto <D.17203>;
  <D.17202>:
  {
    char * * param_names;

    D.17204 = signature->param_count;
    D.17205 = (unsigned int) D.17204;
    D.17206 = D.17205 * 8;
    param_names = mono_image_alloc0 (image, D.17206);
    i = 0;
    goto <D.16951>;
    <D.16950>:
    D.17194 = (long unsigned int) i;
    D.17207 = D.17194 * 8;
    D.17208 = param_names + D.17207;
    D.17201 = mb->param_names;
    D.17194 = (long unsigned int) i;
    D.17207 = D.17194 * 8;
    D.17209 = D.17201 + D.17207;
    D.17210 = *D.17209;
    D.17211 = mono_image_strdup (image, D.17210);
    *D.17208 = D.17211;
    i = i + 1;
    <D.16951>:
    D.17204 = signature->param_count;
    D.17212 = (int) D.17204;
    if (D.17212 > i) goto <D.16950>; else goto <D.16952>;
    <D.16952>:
    mono_image_lock (image);
    D.17213 = image->wrapper_param_names;
    if (D.17213 == 0B) goto <D.17214>; else goto <D.17215>;
    <D.17214>:
    D.17216 = monoeg_g_hash_table_new (0B, 0B);
    image->wrapper_param_names = D.17216;
    <D.17215>:
    D.17213 = image->wrapper_param_names;
    monoeg_g_hash_table_insert_replace (D.17213, method, param_names, 0);
    mono_image_unlock (image);
  }
  <D.17203>:
  D.17217 = method;
  return D.17217;
}


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

  D.17220 = __builtin_object_size (__dest, 0);
  D.17219 = __builtin___memcpy_chk (__dest, __src, __len, D.17220);
  return D.17219;
}


mono_mb_add_data (struct MonoMethodBuilder * mb, void * data)
{
  _Bool D.17222;
  long int D.17223;
  long int D.17224;
  void * D.17227;
  struct GList * D.17228;
  guint32 D.17229;
  struct MonoMethodWrapper * mw;

  D.17222 = mb == 0B;
  D.17223 = (long int) D.17222;
  D.17224 = __builtin_expect (D.17223, 0);
  if (D.17224 != 0) goto <D.17225>; else goto <D.17226>;
  <D.17225>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-builder.c", 254, "mb != NULL");
  <D.17226>:
  mw = mb->method;
  D.17227 = mw->method_data;
  D.17228 = monoeg_g_list_prepend (D.17227, data);
  mw->method_data = D.17228;
  D.17227 = mw->method_data;
  D.17229 = monoeg_g_list_length (D.17227);
  return D.17229;
}


mono_mb_add_local (struct MonoMethodBuilder * mb, struct MonoType * type)
{
  _Bool D.17231;
  long int D.17232;
  long int D.17233;
  _Bool D.17236;
  long int D.17237;
  long int D.17238;
  struct GList * D.17241;
  struct GList * D.17242;
  int D.17243;
  int D.17244;
  int D.17245;
  int res;

  D.17231 = mb == 0B;
  D.17232 = (long int) D.17231;
  D.17233 = __builtin_expect (D.17232, 0);
  if (D.17233 != 0) goto <D.17234>; else goto <D.17235>;
  <D.17234>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-builder.c", 271, "mb != NULL");
  <D.17235>:
  D.17236 = type == 0B;
  D.17237 = (long int) D.17236;
  D.17238 = __builtin_expect (D.17237, 0);
  if (D.17238 != 0) goto <D.17239>; else goto <D.17240>;
  <D.17239>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-builder.c", 272, "type != NULL");
  <D.17240>:
  res = mb->locals;
  D.17241 = mb->locals_list;
  D.17242 = monoeg_g_list_append (D.17241, type);
  mb->locals_list = D.17242;
  D.17243 = mb->locals;
  D.17244 = D.17243 + 1;
  mb->locals = D.17244;
  D.17245 = res;
  return D.17245;
}


mono_mb_patch_addr (struct MonoMethodBuilder * mb, int pos, int value)
{
  unsigned char * D.17247;
  sizetype D.17248;
  unsigned char * D.17249;
  unsigned char D.17250;
  sizetype D.17251;
  unsigned char * D.17252;
  int D.17253;
  unsigned char D.17254;
  sizetype D.17255;
  unsigned char * D.17256;
  int D.17257;
  unsigned char D.17258;
  sizetype D.17259;
  unsigned char * D.17260;
  unsigned int value.1;
  unsigned int D.17262;
  unsigned char D.17263;

  D.17247 = mb->code;
  D.17248 = (sizetype) pos;
  D.17249 = D.17247 + D.17248;
  D.17250 = (unsigned char) value;
  *D.17249 = D.17250;
  D.17247 = mb->code;
  D.17248 = (sizetype) pos;
  D.17251 = D.17248 + 1;
  D.17252 = D.17247 + D.17251;
  D.17253 = value >> 8;
  D.17254 = (unsigned char) D.17253;
  *D.17252 = D.17254;
  D.17247 = mb->code;
  D.17248 = (sizetype) pos;
  D.17255 = D.17248 + 2;
  D.17256 = D.17247 + D.17255;
  D.17257 = value >> 16;
  D.17258 = (unsigned char) D.17257;
  *D.17256 = D.17258;
  D.17247 = mb->code;
  D.17248 = (sizetype) pos;
  D.17259 = D.17248 + 3;
  D.17260 = D.17247 + D.17259;
  value.1 = (unsigned int) value;
  D.17262 = value.1 >> 24;
  D.17263 = (unsigned char) D.17262;
  *D.17260 = D.17263;
}


mono_mb_patch_addr_s (struct MonoMethodBuilder * mb, int pos, gint8 value)
{
  unsigned char * D.17264;
  sizetype D.17265;
  gint8 * D.17266;

  D.17264 = mb->code;
  D.17265 = (sizetype) pos;
  D.17266 = D.17264 + D.17265;
  *D.17266 = value;
}


mono_mb_emit_byte (struct MonoMethodBuilder * mb, guint8 op)
{
  unsigned int D.17267;
  unsigned int D.17268;
  unsigned int D.17271;
  unsigned int D.17272;
  long unsigned int D.17273;
  unsigned char * D.17274;
  void * D.17275;
  unsigned int D.17276;
  unsigned int D.17277;
  sizetype D.17278;
  unsigned char * D.17279;

  D.17267 = mb->pos;
  D.17268 = mb->code_size;
  if (D.17267 >= D.17268) goto <D.17269>; else goto <D.17270>;
  <D.17269>:
  D.17268 = mb->code_size;
  D.17268 = mb->code_size;
  D.17271 = D.17268 >> 1;
  D.17272 = D.17268 + D.17271;
  mb->code_size = D.17272;
  D.17268 = mb->code_size;
  D.17273 = (long unsigned int) D.17268;
  D.17274 = mb->code;
  D.17275 = monoeg_realloc (D.17274, D.17273);
  mb->code = D.17275;
  <D.17270>:
  D.17274 = mb->code;
  D.17267 = mb->pos;
  D.17276 = D.17267;
  D.17277 = D.17276 + 1;
  mb->pos = D.17277;
  D.17278 = (sizetype) D.17276;
  D.17279 = D.17274 + D.17278;
  *D.17279 = op;
}


mono_mb_emit_ldflda (struct MonoMethodBuilder * mb, gint32 offset)
{
  mono_mb_emit_byte (mb, 240);
  mono_mb_emit_byte (mb, 1);
  if (offset != 0) goto <D.17280>; else goto <D.17281>;
  <D.17280>:
  mono_mb_emit_icon (mb, offset);
  mono_mb_emit_byte (mb, 88);
  <D.17281>:
}


mono_mb_emit_i4 (struct MonoMethodBuilder * mb, gint32 data)
{
  unsigned int D.17282;
  unsigned int D.17283;
  unsigned int D.17284;
  unsigned int D.17287;
  unsigned int D.17288;
  long unsigned int D.17289;
  unsigned char * D.17290;
  void * D.17291;
  int D.17292;

  D.17282 = mb->pos;
  D.17283 = D.17282 + 4;
  D.17284 = mb->code_size;
  if (D.17283 >= D.17284) goto <D.17285>; else goto <D.17286>;
  <D.17285>:
  D.17284 = mb->code_size;
  D.17284 = mb->code_size;
  D.17287 = D.17284 >> 1;
  D.17288 = D.17284 + D.17287;
  mb->code_size = D.17288;
  D.17284 = mb->code_size;
  D.17289 = (long unsigned int) D.17284;
  D.17290 = mb->code;
  D.17291 = monoeg_realloc (D.17290, D.17289);
  mb->code = D.17291;
  <D.17286>:
  D.17282 = mb->pos;
  D.17292 = (int) D.17282;
  mono_mb_patch_addr (mb, D.17292, data);
  D.17282 = mb->pos;
  D.17283 = D.17282 + 4;
  mb->pos = D.17283;
}


mono_mb_emit_i2 (struct MonoMethodBuilder * mb, gint16 data)
{
  unsigned int D.17293;
  unsigned int D.17294;
  unsigned int D.17295;
  unsigned int D.17298;
  unsigned int D.17299;
  long unsigned int D.17300;
  unsigned char * D.17301;
  void * D.17302;
  sizetype D.17303;
  unsigned char * D.17304;
  unsigned char D.17305;
  unsigned int D.17306;
  sizetype D.17307;
  unsigned char * D.17308;
  short int D.17309;
  unsigned char D.17310;

  D.17293 = mb->pos;
  D.17294 = D.17293 + 2;
  D.17295 = mb->code_size;
  if (D.17294 >= D.17295) goto <D.17296>; else goto <D.17297>;
  <D.17296>:
  D.17295 = mb->code_size;
  D.17295 = mb->code_size;
  D.17298 = D.17295 >> 1;
  D.17299 = D.17295 + D.17298;
  mb->code_size = D.17299;
  D.17295 = mb->code_size;
  D.17300 = (long unsigned int) D.17295;
  D.17301 = mb->code;
  D.17302 = monoeg_realloc (D.17301, D.17300);
  mb->code = D.17302;
  <D.17297>:
  D.17301 = mb->code;
  D.17293 = mb->pos;
  D.17303 = (sizetype) D.17293;
  D.17304 = D.17301 + D.17303;
  D.17305 = (unsigned char) data;
  *D.17304 = D.17305;
  D.17301 = mb->code;
  D.17293 = mb->pos;
  D.17306 = D.17293 + 1;
  D.17307 = (sizetype) D.17306;
  D.17308 = D.17301 + D.17307;
  D.17309 = data >> 8;
  D.17310 = (unsigned char) D.17309;
  *D.17308 = D.17310;
  D.17293 = mb->pos;
  D.17294 = D.17293 + 2;
  mb->pos = D.17294;
}


mono_mb_emit_op (struct MonoMethodBuilder * mb, guint8 op, void * data)
{
  int D.17311;
  unsigned int D.17312;
  int D.17313;

  D.17311 = (int) op;
  mono_mb_emit_byte (mb, D.17311);
  D.17312 = mono_mb_add_data (mb, data);
  D.17313 = (int) D.17312;
  mono_mb_emit_i4 (mb, D.17313);
}


mono_mb_emit_ldstr (struct MonoMethodBuilder * mb, char * str)
{
  mono_mb_emit_op (mb, 114, str);
}


mono_mb_emit_ldarg (struct MonoMethodBuilder * mb, guint argnum)
{
  unsigned char D.17316;
  unsigned char D.17317;
  int D.17318;
  int D.17322;
  short int D.17324;
  int D.17325;

  if (argnum <= 3) goto <D.17314>; else goto <D.17315>;
  <D.17314>:
  D.17316 = (unsigned char) argnum;
  D.17317 = D.17316 + 2;
  D.17318 = (int) D.17317;
  mono_mb_emit_byte (mb, D.17318);
  goto <D.17319>;
  <D.17315>:
  if (argnum <= 255) goto <D.17320>; else goto <D.17321>;
  <D.17320>:
  mono_mb_emit_byte (mb, 14);
  D.17316 = (unsigned char) argnum;
  D.17322 = (int) D.17316;
  mono_mb_emit_byte (mb, D.17322);
  goto <D.17323>;
  <D.17321>:
  mono_mb_emit_byte (mb, 254);
  mono_mb_emit_byte (mb, 9);
  D.17324 = (short int) argnum;
  D.17325 = (int) D.17324;
  mono_mb_emit_i2 (mb, D.17325);
  <D.17323>:
  <D.17319>:
}


mono_mb_emit_ldarg_addr (struct MonoMethodBuilder * mb, guint argnum)
{
  unsigned char D.17328;
  int D.17329;
  short int D.17331;
  int D.17332;

  if (argnum <= 255) goto <D.17326>; else goto <D.17327>;
  <D.17326>:
  mono_mb_emit_byte (mb, 15);
  D.17328 = (unsigned char) argnum;
  D.17329 = (int) D.17328;
  mono_mb_emit_byte (mb, D.17329);
  goto <D.17330>;
  <D.17327>:
  mono_mb_emit_byte (mb, 254);
  mono_mb_emit_byte (mb, 10);
  D.17331 = (short int) argnum;
  D.17332 = (int) D.17331;
  mono_mb_emit_i2 (mb, D.17332);
  <D.17330>:
}


mono_mb_emit_ldloc_addr (struct MonoMethodBuilder * mb, guint locnum)
{
  unsigned char D.17335;
  int D.17336;
  short int D.17338;
  int D.17339;

  if (locnum <= 255) goto <D.17333>; else goto <D.17334>;
  <D.17333>:
  mono_mb_emit_byte (mb, 18);
  D.17335 = (unsigned char) locnum;
  D.17336 = (int) D.17335;
  mono_mb_emit_byte (mb, D.17336);
  goto <D.17337>;
  <D.17334>:
  mono_mb_emit_byte (mb, 254);
  mono_mb_emit_byte (mb, 13);
  D.17338 = (short int) locnum;
  D.17339 = (int) D.17338;
  mono_mb_emit_i2 (mb, D.17339);
  <D.17337>:
}


mono_mb_emit_ldloc (struct MonoMethodBuilder * mb, guint num)
{
  unsigned char D.17342;
  unsigned char D.17343;
  int D.17344;
  int D.17348;
  short int D.17350;
  int D.17351;

  if (num <= 3) goto <D.17340>; else goto <D.17341>;
  <D.17340>:
  D.17342 = (unsigned char) num;
  D.17343 = D.17342 + 6;
  D.17344 = (int) D.17343;
  mono_mb_emit_byte (mb, D.17344);
  goto <D.17345>;
  <D.17341>:
  if (num <= 255) goto <D.17346>; else goto <D.17347>;
  <D.17346>:
  mono_mb_emit_byte (mb, 17);
  D.17342 = (unsigned char) num;
  D.17348 = (int) D.17342;
  mono_mb_emit_byte (mb, D.17348);
  goto <D.17349>;
  <D.17347>:
  mono_mb_emit_byte (mb, 254);
  mono_mb_emit_byte (mb, 12);
  D.17350 = (short int) num;
  D.17351 = (int) D.17350;
  mono_mb_emit_i2 (mb, D.17351);
  <D.17349>:
  <D.17345>:
}


mono_mb_emit_stloc (struct MonoMethodBuilder * mb, guint num)
{
  unsigned char D.17354;
  unsigned char D.17355;
  int D.17356;
  int D.17360;
  short int D.17362;
  int D.17363;

  if (num <= 3) goto <D.17352>; else goto <D.17353>;
  <D.17352>:
  D.17354 = (unsigned char) num;
  D.17355 = D.17354 + 10;
  D.17356 = (int) D.17355;
  mono_mb_emit_byte (mb, D.17356);
  goto <D.17357>;
  <D.17353>:
  if (num <= 255) goto <D.17358>; else goto <D.17359>;
  <D.17358>:
  mono_mb_emit_byte (mb, 19);
  D.17354 = (unsigned char) num;
  D.17360 = (int) D.17354;
  mono_mb_emit_byte (mb, D.17360);
  goto <D.17361>;
  <D.17359>:
  mono_mb_emit_byte (mb, 254);
  mono_mb_emit_byte (mb, 14);
  D.17362 = (short int) num;
  D.17363 = (int) D.17362;
  mono_mb_emit_i2 (mb, D.17363);
  <D.17361>:
  <D.17357>:
}


mono_mb_emit_icon (struct MonoMethodBuilder * mb, gint32 value)
{
  unsigned int value.2;
  unsigned int D.17365;
  unsigned char D.17368;
  unsigned char D.17369;
  int D.17370;
  unsigned int D.17372;
  int D.17375;

  value.2 = (unsigned int) value;
  D.17365 = value.2 + 1;
  if (D.17365 <= 8) goto <D.17366>; else goto <D.17367>;
  <D.17366>:
  D.17368 = (unsigned char) value;
  D.17369 = D.17368 + 22;
  D.17370 = (int) D.17369;
  mono_mb_emit_byte (mb, D.17370);
  goto <D.17371>;
  <D.17367>:
  value.2 = (unsigned int) value;
  D.17372 = value.2 + 128;
  if (D.17372 <= 255) goto <D.17373>; else goto <D.17374>;
  <D.17373>:
  mono_mb_emit_byte (mb, 31);
  D.17368 = (unsigned char) value;
  D.17375 = (int) D.17368;
  mono_mb_emit_byte (mb, D.17375);
  goto <D.17376>;
  <D.17374>:
  mono_mb_emit_byte (mb, 32);
  mono_mb_emit_i4 (mb, value);
  <D.17376>:
  <D.17371>:
}


mono_mb_get_label (struct MonoMethodBuilder * mb)
{
  int D.17377;
  unsigned int D.17378;

  D.17378 = mb->pos;
  D.17377 = (int) D.17378;
  return D.17377;
}


mono_mb_get_pos (struct MonoMethodBuilder * mb)
{
  int D.17380;
  unsigned int D.17381;

  D.17381 = mb->pos;
  D.17380 = (int) D.17381;
  return D.17380;
}


mono_mb_emit_branch (struct MonoMethodBuilder * mb, guint8 op)
{
  int D.17383;
  guint32 D.17384;
  guint32 res;

  D.17383 = (int) op;
  mono_mb_emit_byte (mb, D.17383);
  res = mb->pos;
  mono_mb_emit_i4 (mb, 0);
  D.17384 = res;
  return D.17384;
}


mono_mb_emit_short_branch (struct MonoMethodBuilder * mb, guint8 op)
{
  int D.17386;
  guint32 D.17387;
  guint32 res;

  D.17386 = (int) op;
  mono_mb_emit_byte (mb, D.17386);
  res = mb->pos;
  mono_mb_emit_byte (mb, 0);
  D.17387 = res;
  return D.17387;
}


mono_mb_emit_branch_label (struct MonoMethodBuilder * mb, guint8 op, guint32 label)
{
  int D.17389;
  unsigned int D.17390;
  unsigned int D.17391;
  unsigned int D.17392;
  int D.17393;

  D.17389 = (int) op;
  mono_mb_emit_byte (mb, D.17389);
  D.17390 = mb->pos;
  D.17391 = label - D.17390;
  D.17392 = D.17391 + 4294967292;
  D.17393 = (int) D.17392;
  mono_mb_emit_i4 (mb, D.17393);
}


mono_mb_patch_branch (struct MonoMethodBuilder * mb, guint32 pos)
{
  unsigned int D.17394;
  unsigned int D.17395;
  unsigned int D.17396;
  int D.17397;
  int pos.3;

  D.17394 = mb->pos;
  D.17395 = D.17394 - pos;
  D.17396 = D.17395 + 4294967292;
  D.17397 = (int) D.17396;
  pos.3 = (int) pos;
  mono_mb_patch_addr (mb, pos.3, D.17397);
}


mono_mb_patch_short_branch (struct MonoMethodBuilder * mb, guint32 pos)
{
  unsigned int D.17399;
  unsigned char D.17400;
  unsigned char D.17401;
  unsigned char D.17402;
  unsigned char D.17403;
  signed char D.17404;
  int D.17405;
  int pos.4;

  D.17399 = mb->pos;
  D.17400 = (unsigned char) D.17399;
  D.17401 = (unsigned char) pos;
  D.17402 = D.17400 - D.17401;
  D.17403 = D.17402 + 255;
  D.17404 = (signed char) D.17403;
  D.17405 = (int) D.17404;
  pos.4 = (int) pos;
  mono_mb_patch_addr_s (mb, pos.4, D.17405);
}


mono_mb_emit_ptr (struct MonoMethodBuilder * mb, void * ptr)
{
  mono_mb_emit_byte (mb, 240);
  mono_mb_emit_op (mb, 2, ptr);
}


mono_mb_emit_calli (struct MonoMethodBuilder * mb, struct MonoMethodSignature * sig)
{
  mono_mb_emit_op (mb, 41, sig);
}


mono_mb_emit_managed_call (struct MonoMethodBuilder * mb, struct MonoMethod * method, struct MonoMethodSignature * opt_sig)
{
  mono_mb_emit_op (mb, 40, method);
}


mono_mb_emit_native_call (struct MonoMethodBuilder * mb, struct MonoMethodSignature * sig, void * func)
{
  mono_mb_emit_ptr (mb, func);
  mono_mb_emit_calli (mb, sig);
}


mono_mb_emit_icall (struct MonoMethodBuilder * mb, void * func)
{
  mono_mb_emit_byte (mb, 240);
  mono_mb_emit_op (mb, 0, func);
}


mono_mb_emit_exception_full (struct MonoMethodBuilder * mb, const char * exc_nspace, const char * exc_name, const char * msg)
{
  struct MonoImage * D.17407;
  _Bool D.17408;
  long int D.17409;
  long int D.17410;
  struct MonoMethod * ctor;
  struct MonoClass * mme;

  ctor = 0B;
  D.17407 = mono_defaults.corlib;
  mme = mono_class_from_name (D.17407, exc_nspace, exc_name);
  mono_class_init (mme);
  ctor = mono_class_get_method_from_name (mme, ".ctor", 0);
  D.17408 = ctor == 0B;
  D.17409 = (long int) D.17408;
  D.17410 = __builtin_expect (D.17409, 0);
  if (D.17410 != 0) goto <D.17411>; else goto <D.17412>;
  <D.17411>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "method-builder.c", 535, "ctor");
  <D.17412>:
  mono_mb_emit_op (mb, 115, ctor);
  if (msg != 0B) goto <D.17413>; else goto <D.17414>;
  <D.17413>:
  mono_mb_emit_byte (mb, 37);
  mono_mb_emit_ldflda (mb, 32);
  mono_mb_emit_ldstr (mb, msg);
  mono_mb_emit_byte (mb, 81);
  <D.17414>:
  mono_mb_emit_byte (mb, 122);
}


mono_mb_emit_exception (struct MonoMethodBuilder * mb, const char * exc_name, const char * msg)
{
  mono_mb_emit_exception_full (mb, "System", exc_name, msg);
}


mono_mb_emit_add_to_local (struct MonoMethodBuilder * mb, guint16 local, gint32 incr)
{
  unsigned int D.17415;

  D.17415 = (unsigned int) local;
  mono_mb_emit_ldloc (mb, D.17415);
  mono_mb_emit_icon (mb, incr);
  mono_mb_emit_byte (mb, 88);
  D.17415 = (unsigned int) local;
  mono_mb_emit_stloc (mb, D.17415);
}


mono_mb_set_clauses (struct MonoMethodBuilder * mb, int num_clauses, struct MonoExceptionClause * clauses)
{
  mb->num_clauses = num_clauses;
  mb->clauses = clauses;
}


mono_mb_set_param_names (struct MonoMethodBuilder * mb, const char * * param_names)
{
  mb->param_names = param_names;
}


