mono_debug_init_method (struct MonoCompile * cfg, struct MonoBasicBlock * start_block, guint32 breakpoint_id)
{
  int D.22049;
  struct MiniDebugMethodInfo * info;

  D.22049 = mono_debug_enabled ();
  if (D.22049 == 0) goto <D.22050>; else goto <D.22051>;
  <D.22050>:
  return;
  <D.22051>:
  info = monoeg_malloc0 (16);
  info->breakpoint_id = breakpoint_id;
  cfg->debug_info = info;
}


mono_debug_open_method (struct MonoCompile * cfg)
{
  struct MonoMethod * D.22055;
  struct MonoClass * D.22056;
  _Bool D.22057;
  long int D.22058;
  long int D.22059;
  struct GArray * D.22062;
  short unsigned int D.22063;
  unsigned int D.22064;
  unsigned int D.22065;
  unsigned int D.22066;
  void * D.22067;
  struct MiniDebugMethodInfo * info;
  struct MonoDebugMethodJitInfo * jit;
  struct MonoMethodHeader * header;

  info = cfg->debug_info;
  if (info == 0B) goto <D.22053>; else goto <D.22054>;
  <D.22053>:
  return;
  <D.22054>:
  D.22055 = cfg->method;
  D.22056 = D.22055->klass;
  mono_class_init (D.22056);
  header = cfg->header;
  D.22057 = header == 0B;
  D.22058 = (long int) D.22057;
  D.22059 = __builtin_expect (D.22058, 0);
  if (D.22059 != 0) goto <D.22060>; else goto <D.22061>;
  <D.22060>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "debug-mini.c", 77, "header");
  <D.22061>:
  jit = monoeg_malloc0 (56);
  info->jit = jit;
  D.22062 = monoeg_g_array_new (0, 1, 8);
  info->line_numbers = D.22062;
  D.22063 = header->num_locals;
  D.22064 = (unsigned int) D.22063;
  jit->num_locals = D.22064;
  D.22065 = jit->num_locals;
  D.22066 = D.22065 * 24;
  D.22067 = monoeg_malloc0 (D.22066);
  jit->locals = D.22067;
}


mono_debug_close_method (struct MonoCompile * cfg)
{
  struct MonoDebugMethodJitInfo * D.22072;
  unsigned char * D.22075;
  unsigned int D.22076;
  unsigned int D.22077;
  unsigned int D.22078;
  unsigned int D.22081;
  short unsigned int D.22082;
  unsigned int D.22083;
  unsigned int D.22084;
  unsigned int D.22085;
  void * D.22086;
  struct MonoInst * * D.22087;
  unsigned int i.0;
  unsigned int D.22089;
  struct MonoInst * * D.22090;
  struct MonoInst * D.22091;
  struct MonoDebugVarInfo * D.22092;
  unsigned int D.22093;
  struct MonoDebugVarInfo * D.22094;
  unsigned int i.1;
  unsigned int D.22096;
  unsigned int D.22097;
  unsigned int D.22098;
  void * D.22101;
  struct MonoInst * * D.22102;
  struct MonoInst * D.22103;
  struct MonoDebugVarInfo * D.22104;
  <unnamed-unsigned:1> D.22105;
  int D.22106;
  int D.22107;
  unsigned int D.22108;
  unsigned int D.22109;
  struct MonoInst * * D.22110;
  struct MonoInst * D.22111;
  struct MonoDebugVarInfo * D.22112;
  struct MonoDebugVarInfo * D.22113;
  struct MonoInst * D.22114;
  void * D.22117;
  void * D.22118;
  struct MonoDebugVarInfo * D.22119;
  struct MonoInst * D.22120;
  struct MonoDebugVarInfo * D.22121;
  struct GArray * D.22122;
  int D.22123;
  unsigned int D.22124;
  unsigned int D.22125;
  unsigned int D.22126;
  void * D.22127;
  struct MonoDebugLineNumberEntry * D.22128;
  unsigned int D.22129;
  struct MonoDebugLineNumberEntry * D.22130;
  gchar * D.22131;
  struct MonoDebugLineNumberEntry * D.22132;
  struct MonoMethod * D.22133;
  struct MonoDomain * D.22134;
  struct MiniDebugMethodInfo * info;
  struct MonoDebugMethodJitInfo * jit;
  struct MonoMethodHeader * header;
  struct MonoMethodSignature * sig;
  struct MonoDebugMethodAddress * debug_info;
  struct MonoMethod * method;
  int i;

  info = cfg->debug_info;
  if (info == 0B) goto <D.22069>; else goto <D.22071>;
  <D.22071>:
  D.22072 = info->jit;
  if (D.22072 == 0B) goto <D.22069>; else goto <D.22070>;
  <D.22069>:
  if (info != 0B) goto <D.22073>; else goto <D.22074>;
  <D.22073>:
  monoeg_g_free (info);
  <D.22074>:
  return;
  <D.22070>:
  method = cfg->method;
  header = cfg->header;
  sig = mono_method_signature (method);
  jit = info->jit;
  D.22075 = cfg->native_code;
  jit->code_start = D.22075;
  D.22076 = cfg->epilog_begin;
  jit->epilogue_begin = D.22076;
  D.22077 = cfg->code_len;
  jit->code_size = D.22077;
  D.22078 = jit->epilogue_begin;
  if (D.22078 != 0) goto <D.22079>; else goto <D.22080>;
  <D.22079>:
  D.22078 = jit->epilogue_begin;
  D.22081 = header->code_size;
  record_line_number (info, D.22078, D.22081);
  <D.22080>:
  D.22082 = sig->param_count;
  D.22083 = (unsigned int) D.22082;
  jit->num_params = D.22083;
  D.22084 = jit->num_params;
  D.22085 = D.22084 * 24;
  D.22086 = monoeg_malloc0 (D.22085);
  jit->params = D.22086;
  i = 0;
  goto <D.21877>;
  <D.21876>:
  D.22087 = cfg->locals;
  i.0 = (unsigned int) i;
  D.22089 = i.0 * 4;
  D.22090 = D.22087 + D.22089;
  D.22091 = *D.22090;
  D.22092 = jit->locals;
  i.0 = (unsigned int) i;
  D.22093 = i.0 * 24;
  D.22094 = D.22092 + D.22093;
  write_variable (D.22091, D.22094);
  i = i + 1;
  <D.21877>:
  i.1 = (unsigned int) i;
  D.22096 = jit->num_locals;
  if (i.1 < D.22096) goto <D.21876>; else goto <D.21878>;
  <D.21878>:
  D.22097 = BIT_FIELD_REF <*sig, 32, 64>;
  D.22098 = D.22097 & 4194304;
  if (D.22098 != 0) goto <D.22099>; else goto <D.22100>;
  <D.22099>:
  D.22101 = monoeg_malloc0 (24);
  jit->this_var = D.22101;
  D.22102 = cfg->args;
  D.22103 = *D.22102;
  D.22104 = jit->this_var;
  write_variable (D.22103, D.22104);
  <D.22100>:
  i = 0;
  goto <D.21880>;
  <D.21879>:
  D.22102 = cfg->args;
  D.22105 = sig->hasthis;
  D.22106 = (int) D.22105;
  D.22107 = D.22106 + i;
  D.22108 = (unsigned int) D.22107;
  D.22109 = D.22108 * 4;
  D.22110 = D.22102 + D.22109;
  D.22111 = *D.22110;
  D.22112 = jit->params;
  i.0 = (unsigned int) i;
  D.22093 = i.0 * 24;
  D.22113 = D.22112 + D.22093;
  write_variable (D.22111, D.22113);
  i = i + 1;
  <D.21880>:
  i.1 = (unsigned int) i;
  D.22084 = jit->num_params;
  if (i.1 < D.22084) goto <D.21879>; else goto <D.21881>;
  <D.21881>:
  D.22114 = cfg->gsharedvt_info_var;
  if (D.22114 != 0B) goto <D.22115>; else goto <D.22116>;
  <D.22115>:
  D.22117 = monoeg_malloc0 (24);
  jit->gsharedvt_info_var = D.22117;
  D.22118 = monoeg_malloc0 (24);
  jit->gsharedvt_locals_var = D.22118;
  D.22114 = cfg->gsharedvt_info_var;
  D.22119 = jit->gsharedvt_info_var;
  write_variable (D.22114, D.22119);
  D.22120 = cfg->gsharedvt_locals_var;
  D.22121 = jit->gsharedvt_locals_var;
  write_variable (D.22120, D.22121);
  <D.22116>:
  D.22122 = info->line_numbers;
  D.22123 = D.22122->len;
  D.22124 = (unsigned int) D.22123;
  jit->num_line_numbers = D.22124;
  D.22125 = jit->num_line_numbers;
  D.22126 = D.22125 * 8;
  D.22127 = monoeg_malloc0 (D.22126);
  jit->line_numbers = D.22127;
  i = 0;
  goto <D.21883>;
  <D.21882>:
  D.22128 = jit->line_numbers;
  i.0 = (unsigned int) i;
  D.22129 = i.0 * 8;
  D.22130 = D.22128 + D.22129;
  D.22122 = info->line_numbers;
  D.22131 = D.22122->data;
  i.0 = (unsigned int) i;
  D.22129 = i.0 * 8;
  D.22132 = D.22131 + D.22129;
  *D.22130 = *D.22132;
  i = i + 1;
  <D.21883>:
  i.1 = (unsigned int) i;
  D.22125 = jit->num_line_numbers;
  if (i.1 < D.22125) goto <D.21882>; else goto <D.21884>;
  <D.21884>:
  D.22133 = cfg->method_to_register;
  D.22134 = cfg->domain;
  debug_info = mono_debug_add_method (D.22133, jit, D.22134);
  mono_debug_add_vg_method (method, jit);
  mono_debug_free_method_jit_info (jit);
  mono_debug_free_method (cfg);
}


record_line_number (struct MiniDebugMethodInfo * info, guint32 address, guint32 offset)
{
  struct GArray * D.22136;
  struct MonoDebugLineNumberEntry lne;

  try
    {
      lne.native_offset = address;
      lne.il_offset = offset;
      D.22136 = info->line_numbers;
      monoeg_g_array_append_vals (D.22136, &lne, 1);
    }
  finally
    {
      lne = {CLOBBER};
    }
}


write_variable (struct MonoInst * inst, struct MonoDebugVarInfo * var)
{
  struct MonoType * D.22137;
  short unsigned int D.22138;
  int D.22141;
  unsigned int D.22142;
  unsigned char D.22144;
  int D.22145;
  int D.22146;
  int D.22152;
  int D.22153;
  unsigned int D.22154;
  int D.22155;
  unsigned int D.22156;
  int D.22160;
  unsigned int D.22161;
  int D.22165;
  int D.22166;
  unsigned int D.22167;
  short unsigned int D.22171;
  _Bool D.22172;
  long int D.22173;
  long int D.22174;
  int D.22177;
  unsigned int D.22178;
  int D.22179;
  int D.22180;
  unsigned int D.22181;

  D.22137 = inst->data.op[1].vtype;
  var->type = D.22137;
  D.22138 = inst->opcode;
  if (D.22138 == 366) goto <D.22139>; else goto <D.22140>;
  <D.22139>:
  D.22141 = inst->dreg;
  D.22142 = (unsigned int) D.22141;
  var->index = D.22142;
  goto <D.22143>;
  <D.22140>:
  D.22144 = inst->flags;
  D.22145 = (int) D.22144;
  D.22146 = D.22145 & 2;
  if (D.22146 != 0) goto <D.22147>; else goto <D.22148>;
  <D.22147>:
  var->index = 805306368;
  goto <D.22149>;
  <D.22148>:
  D.22138 = inst->opcode;
  if (D.22138 == 367) goto <D.22150>; else goto <D.22151>;
  <D.22150>:
  D.22152 = inst->sreg1;
  D.22153 = D.22152 | 268435456;
  D.22154 = (unsigned int) D.22153;
  var->index = D.22154;
  D.22155 = inst->data.op[0].const_val;
  D.22156 = (unsigned int) D.22155;
  var->offset = D.22156;
  goto <D.22157>;
  <D.22151>:
  D.22138 = inst->opcode;
  if (D.22138 == 332) goto <D.22158>; else goto <D.22159>;
  <D.22158>:
  D.22152 = inst->sreg1;
  D.22160 = D.22152 | 1073741824;
  D.22161 = (unsigned int) D.22160;
  var->index = D.22161;
  D.22155 = inst->data.op[0].const_val;
  D.22156 = (unsigned int) D.22155;
  var->offset = D.22156;
  goto <D.22162>;
  <D.22159>:
  D.22138 = inst->opcode;
  if (D.22138 == 331) goto <D.22163>; else goto <D.22164>;
  <D.22163>:
  D.22165 = inst->data.op[1].const_val;
  D.22166 = D.22165 | 1342177280;
  D.22167 = (unsigned int) D.22166;
  var->index = D.22167;
  goto <D.22168>;
  <D.22164>:
  D.22138 = inst->opcode;
  if (D.22138 == 368) goto <D.22169>; else goto <D.22170>;
  <D.22169>:
  {
    struct MonoInst * vtaddr;

    vtaddr = inst->data.op[0].src;
    D.22171 = vtaddr->opcode;
    D.22172 = D.22171 != 367;
    D.22173 = (long int) D.22172;
    D.22174 = __builtin_expect (D.22173, 0);
    if (D.22174 != 0) goto <D.22175>; else goto <D.22176>;
    <D.22175>:
    monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "debug-mini.c", 107, "vtaddr->opcode == OP_REGOFFSET");
    <D.22176>:
    D.22177 = vtaddr->data.op[0].const_val;
    D.22178 = (unsigned int) D.22177;
    var->offset = D.22178;
    D.22179 = vtaddr->sreg1;
    D.22180 = D.22179 | 1610612736;
    D.22181 = (unsigned int) D.22180;
    var->index = D.22181;
  }
  goto <D.22182>;
  <D.22170>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "debug-mini.c", 111);
  <D.22182>:
  <D.22168>:
  <D.22162>:
  <D.22157>:
  <D.22149>:
  <D.22143>:
}


mono_debug_add_vg_method (struct MonoMethod * method, struct MonoDebugMethodJitInfo * jit)
{

}


mono_debug_free_method (struct MonoCompile * cfg)
{
  struct GArray * D.22185;
  struct MiniDebugMethodInfo * info;

  info = cfg->debug_info;
  if (info != 0B) goto <D.22183>; else goto <D.22184>;
  <D.22183>:
  D.22185 = info->line_numbers;
  if (D.22185 != 0B) goto <D.22186>; else goto <D.22187>;
  <D.22186>:
  D.22185 = info->line_numbers;
  monoeg_g_array_free (D.22185, 1);
  <D.22187>:
  monoeg_g_free (info);
  cfg->debug_info = 0B;
  <D.22184>:
}


mono_debug_record_line_number (struct MonoCompile * cfg, struct MonoInst * ins, guint32 address)
{
  struct MonoDebugMethodJitInfo * D.22191;
  const unsigned char * D.22193;
  _Bool D.22194;
  long int D.22195;
  long int D.22196;
  const unsigned char * D.22201;
  unsigned int D.22203;
  const unsigned char * D.22204;
  int D.22205;
  int D.22206;
  int D.22207;
  unsigned int D.22208;
  struct MiniDebugMethodInfo * info;
  struct MonoMethodHeader * header;
  guint32 offset;

  info = cfg->debug_info;
  if (info == 0B) goto <D.22188>; else goto <D.22190>;
  <D.22190>:
  D.22191 = info->jit;
  if (D.22191 == 0B) goto <D.22188>; else goto <D.22192>;
  <D.22192>:
  D.22193 = ins->cil_code;
  if (D.22193 == 0B) goto <D.22188>; else goto <D.22189>;
  <D.22188>:
  return;
  <D.22189>:
  header = cfg->header;
  D.22194 = header == 0B;
  D.22195 = (long int) D.22194;
  D.22196 = __builtin_expect (D.22195, 0);
  if (D.22196 != 0) goto <D.22197>; else goto <D.22198>;
  <D.22197>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "debug-mini.c", 308, "header");
  <D.22198>:
  D.22193 = ins->cil_code;
  D.22201 = header->code;
  if (D.22193 < D.22201) goto <D.22199>; else goto <D.22202>;
  <D.22202>:
  D.22193 = ins->cil_code;
  D.22201 = header->code;
  D.22203 = header->code_size;
  D.22204 = D.22201 + D.22203;
  if (D.22193 > D.22204) goto <D.22199>; else goto <D.22200>;
  <D.22199>:
  return;
  <D.22200>:
  D.22193 = ins->cil_code;
  D.22205 = (int) D.22193;
  D.22201 = header->code;
  D.22206 = (int) D.22201;
  D.22207 = D.22205 - D.22206;
  offset = (guint32) D.22207;
  D.22208 = info->has_line_numbers;
  if (D.22208 == 0) goto <D.22209>; else goto <D.22210>;
  <D.22209>:
  D.22191 = info->jit;
  D.22191->prologue_end = address;
  info->has_line_numbers = 1;
  <D.22210>:
  record_line_number (info, address, offset);
}


mono_debug_open_block (struct MonoCompile * cfg, struct MonoBasicBlock * bb, guint32 address)
{
  struct MonoDebugMethodJitInfo * D.22215;
  unsigned char * D.22217;
  _Bool D.22218;
  long int D.22219;
  long int D.22220;
  const unsigned char * D.22225;
  unsigned int D.22227;
  const unsigned char * D.22228;
  int D.22229;
  int D.22230;
  int D.22231;
  unsigned int D.22232;
  struct MiniDebugMethodInfo * info;
  struct MonoMethodHeader * header;
  guint32 offset;

  info = cfg->debug_info;
  if (info == 0B) goto <D.22212>; else goto <D.22214>;
  <D.22214>:
  D.22215 = info->jit;
  if (D.22215 == 0B) goto <D.22212>; else goto <D.22216>;
  <D.22216>:
  D.22217 = bb->cil_code;
  if (D.22217 == 0B) goto <D.22212>; else goto <D.22213>;
  <D.22212>:
  return;
  <D.22213>:
  header = cfg->header;
  D.22218 = header == 0B;
  D.22219 = (long int) D.22218;
  D.22220 = __builtin_expect (D.22219, 0);
  if (D.22220 != 0) goto <D.22221>; else goto <D.22222>;
  <D.22221>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "debug-mini.c", 335, "header");
  <D.22222>:
  D.22217 = bb->cil_code;
  D.22225 = header->code;
  if (D.22217 < D.22225) goto <D.22223>; else goto <D.22226>;
  <D.22226>:
  D.22217 = bb->cil_code;
  D.22225 = header->code;
  D.22227 = header->code_size;
  D.22228 = D.22225 + D.22227;
  if (D.22217 > D.22228) goto <D.22223>; else goto <D.22224>;
  <D.22223>:
  return;
  <D.22224>:
  D.22217 = bb->cil_code;
  D.22229 = (int) D.22217;
  D.22225 = header->code;
  D.22230 = (int) D.22225;
  D.22231 = D.22229 - D.22230;
  offset = (guint32) D.22231;
  D.22232 = info->has_line_numbers;
  if (D.22232 == 0) goto <D.22233>; else goto <D.22234>;
  <D.22233>:
  D.22215 = info->jit;
  D.22215->prologue_end = address;
  info->has_line_numbers = 1;
  <D.22234>:
  record_line_number (info, address, offset);
}


mono_debug_serialize_debug_info (struct MonoCompile * cfg, guint8 * * out_buf, guint32 * buf_len)
{
  struct MonoMethod * D.22236;
  struct MonoDomain * D.22237;
  unsigned int D.22240;
  unsigned int D.22241;
  unsigned int D.22242;
  unsigned int D.22243;
  unsigned int D.22244;
  unsigned int D.22245;
  unsigned int D.22246;
  unsigned int D.22247;
  int D.22248;
  guint8 * p.2;
  unsigned int D.22250;
  int D.22251;
  unsigned int D.22252;
  int D.22253;
  struct MonoDebugVarInfo * D.22254;
  unsigned int i.3;
  unsigned int D.22256;
  struct MonoDebugVarInfo * D.22257;
  unsigned int i.4;
  struct MonoMethodSignature * D.22259;
  unsigned int D.22260;
  unsigned int D.22261;
  struct MonoDebugVarInfo * D.22264;
  struct MonoDebugVarInfo * D.22265;
  struct MonoDebugVarInfo * D.22266;
  struct MonoDebugVarInfo * D.22267;
  struct MonoDebugVarInfo * D.22270;
  int D.22272;
  struct MonoDebugLineNumberEntry * D.22273;
  unsigned int D.22274;
  unsigned int D.22275;
  unsigned int D.22276;
  int D.22277;
  unsigned int D.22278;
  unsigned int D.22279;
  int D.22280;
  int p.5;
  int buf.6;
  int D.22283;
  unsigned int D.22284;
  _Bool D.22285;
  long int D.22286;
  long int D.22287;
  struct MonoDebugMethodJitInfo * jit;
  guint32 size;
  guint32 prev_offset;
  guint32 prev_native_offset;
  guint8 * buf;
  guint8 * p;
  int i;

  try
    {
      D.22236 = cfg->method;
      D.22237 = mono_domain_get ();
      jit = mono_debug_find_method (D.22236, D.22237);
      if (jit == 0B) goto <D.22238>; else goto <D.22239>;
      <D.22238>:
      *buf_len = 0;
      return;
      <D.22239>:
      D.22240 = jit->num_params;
      D.22241 = jit->num_locals;
      D.22242 = D.22240 + D.22241;
      D.22243 = jit->num_line_numbers;
      D.22244 = D.22242 + D.22243;
      D.22245 = D.22244 + 1;
      D.22246 = D.22245 * 10;
      size = D.22246 + 64;
      buf = monoeg_malloc (size);
      p = buf;
      D.22247 = jit->epilogue_begin;
      D.22248 = (int) D.22247;
      p.2 = p;
      encode_value (D.22248, p.2, &p);
      D.22250 = jit->prologue_end;
      D.22251 = (int) D.22250;
      p.2 = p;
      encode_value (D.22251, p.2, &p);
      D.22252 = jit->code_size;
      D.22253 = (int) D.22252;
      p.2 = p;
      encode_value (D.22253, p.2, &p);
      i = 0;
      goto <D.21944>;
      <D.21943>:
      D.22254 = jit->params;
      i.3 = (unsigned int) i;
      D.22256 = i.3 * 24;
      D.22257 = D.22254 + D.22256;
      p.2 = p;
      serialize_variable (D.22257, p.2, &p);
      i = i + 1;
      <D.21944>:
      i.4 = (unsigned int) i;
      D.22240 = jit->num_params;
      if (i.4 < D.22240) goto <D.21943>; else goto <D.21945>;
      <D.21945>:
      D.22236 = cfg->method;
      D.22259 = mono_method_signature (D.22236);
      D.22260 = BIT_FIELD_REF <*D.22259, 32, 64>;
      D.22261 = D.22260 & 4194304;
      if (D.22261 != 0) goto <D.22262>; else goto <D.22263>;
      <D.22262>:
      D.22264 = jit->this_var;
      p.2 = p;
      serialize_variable (D.22264, p.2, &p);
      <D.22263>:
      i = 0;
      goto <D.21947>;
      <D.21946>:
      D.22265 = jit->locals;
      i.3 = (unsigned int) i;
      D.22256 = i.3 * 24;
      D.22266 = D.22265 + D.22256;
      p.2 = p;
      serialize_variable (D.22266, p.2, &p);
      i = i + 1;
      <D.21947>:
      i.4 = (unsigned int) i;
      D.22241 = jit->num_locals;
      if (i.4 < D.22241) goto <D.21946>; else goto <D.21948>;
      <D.21948>:
      D.22267 = jit->gsharedvt_info_var;
      if (D.22267 != 0B) goto <D.22268>; else goto <D.22269>;
      <D.22268>:
      p.2 = p;
      encode_value (1, p.2, &p);
      D.22267 = jit->gsharedvt_info_var;
      p.2 = p;
      serialize_variable (D.22267, p.2, &p);
      D.22270 = jit->gsharedvt_locals_var;
      p.2 = p;
      serialize_variable (D.22270, p.2, &p);
      goto <D.22271>;
      <D.22269>:
      p.2 = p;
      encode_value (0, p.2, &p);
      <D.22271>:
      D.22243 = jit->num_line_numbers;
      D.22272 = (int) D.22243;
      p.2 = p;
      encode_value (D.22272, p.2, &p);
      prev_offset = 0;
      prev_native_offset = 0;
      i = 0;
      goto <D.21951>;
      <D.21950>:
      {
        struct MonoDebugLineNumberEntry * lne;

        D.22273 = jit->line_numbers;
        i.3 = (unsigned int) i;
        D.22274 = i.3 * 8;
        lne = D.22273 + D.22274;
        D.22275 = lne->il_offset;
        D.22276 = D.22275 - prev_offset;
        D.22277 = (int) D.22276;
        p.2 = p;
        encode_value (D.22277, p.2, &p);
        D.22278 = lne->native_offset;
        D.22279 = D.22278 - prev_native_offset;
        D.22280 = (int) D.22279;
        p.2 = p;
        encode_value (D.22280, p.2, &p);
        prev_offset = lne->il_offset;
        prev_native_offset = lne->native_offset;
      }
      i = i + 1;
      <D.21951>:
      i.4 = (unsigned int) i;
      D.22243 = jit->num_line_numbers;
      if (i.4 < D.22243) goto <D.21950>; else goto <D.21952>;
      <D.21952>:
      p.2 = p;
      p.5 = (int) p.2;
      buf.6 = (int) buf;
      D.22283 = p.5 - buf.6;
      D.22284 = (unsigned int) D.22283;
      D.22285 = D.22284 >= size;
      D.22286 = (long int) D.22285;
      D.22287 = __builtin_expect (D.22286, 0);
      if (D.22287 != 0) goto <D.22288>; else goto <D.22289>;
      <D.22288>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "debug-mini.c", 491, "p - buf < size");
      <D.22289>:
      *out_buf = buf;
      p.2 = p;
      p.5 = (int) p.2;
      buf.6 = (int) buf;
      D.22283 = p.5 - buf.6;
      D.22284 = (unsigned int) D.22283;
      *buf_len = D.22284;
    }
  finally
    {
      p = {CLOBBER};
    }
}


serialize_variable (struct MonoDebugVarInfo * var, guint8 * p, guint8 * * endbuf)
{
  unsigned int D.22293;
  int D.22294;
  guint8 * p.7;
  unsigned int D.22296;
  int D.22297;
  guint32 flags;

  D.22293 = var->index;
  flags = D.22293 & 4026531840;
  D.22293 = var->index;
  D.22294 = (int) D.22293;
  p.7 = p;
  encode_value (D.22294, p.7, &p);
  switch (flags) <default: <D.21930>, case 0: <D.21923>, case 268435456: <D.21925>, case 805306368: <D.21929>, case 1073741824: <D.21926>, case 1342177280: <D.21927>, case 1610612736: <D.21928>>
  <D.21923>:
  goto <D.21924>;
  <D.21925>:
  <D.21926>:
  D.22296 = var->offset;
  D.22297 = (int) D.22296;
  p.7 = p;
  encode_value (D.22297, p.7, &p);
  goto <D.21924>;
  <D.21927>:
  <D.21928>:
  <D.21929>:
  goto <D.21924>;
  <D.21930>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "debug-mini.c", 435);
  <D.21924>:
  p.7 = p;
  *endbuf = p.7;
}


encode_value (gint32 value, guint8 * buf, guint8 * * endbuf)
{
  unsigned int value.8;
  guint8 * p.9;
  unsigned char D.22303;
  int D.22307;
  signed char D.22308;
  signed char D.22309;
  unsigned char D.22310;
  guint8 * D.22311;
  unsigned char D.22312;
  int D.22316;
  signed char D.22317;
  signed char D.22318;
  unsigned char D.22319;
  int D.22320;
  unsigned char D.22321;
  guint8 * D.22322;
  unsigned char D.22323;
  guint8 * D.22324;
  unsigned int D.22326;
  unsigned char D.22327;
  guint8 * D.22328;
  guint8 * p;

  p = buf;
  value.8 = (unsigned int) value;
  if (value.8 <= 127) goto <D.22300>; else goto <D.22301>;
  <D.22300>:
  p.9 = p;
  p = p.9 + 1;
  D.22303 = (unsigned char) value;
  *p.9 = D.22303;
  goto <D.22304>;
  <D.22301>:
  value.8 = (unsigned int) value;
  if (value.8 <= 16383) goto <D.22305>; else goto <D.22306>;
  <D.22305>:
  D.22307 = value >> 8;
  D.22308 = (signed char) D.22307;
  D.22309 = D.22308 | -128;
  D.22310 = (unsigned char) D.22309;
  *p = D.22310;
  D.22311 = p + 1;
  D.22312 = (unsigned char) value;
  *D.22311 = D.22312;
  p = p + 2;
  goto <D.22313>;
  <D.22306>:
  value.8 = (unsigned int) value;
  if (value.8 <= 536870911) goto <D.22314>; else goto <D.22315>;
  <D.22314>:
  D.22316 = value >> 24;
  D.22317 = (signed char) D.22316;
  D.22318 = D.22317 | -64;
  D.22319 = (unsigned char) D.22318;
  *p = D.22319;
  D.22311 = p + 1;
  D.22320 = value >> 16;
  D.22321 = (unsigned char) D.22320;
  *D.22311 = D.22321;
  D.22322 = p + 2;
  D.22307 = value >> 8;
  D.22323 = (unsigned char) D.22307;
  *D.22322 = D.22323;
  D.22324 = p + 3;
  D.22312 = (unsigned char) value;
  *D.22324 = D.22312;
  p = p + 4;
  goto <D.22325>;
  <D.22315>:
  *p = 255;
  D.22311 = p + 1;
  value.8 = (unsigned int) value;
  D.22326 = value.8 >> 24;
  D.22327 = (unsigned char) D.22326;
  *D.22311 = D.22327;
  D.22322 = p + 2;
  D.22320 = value >> 16;
  D.22321 = (unsigned char) D.22320;
  *D.22322 = D.22321;
  D.22324 = p + 3;
  D.22307 = value >> 8;
  D.22323 = (unsigned char) D.22307;
  *D.22324 = D.22323;
  D.22328 = p + 4;
  D.22312 = (unsigned char) value;
  *D.22328 = D.22312;
  p = p + 5;
  <D.22325>:
  <D.22313>:
  <D.22304>:
  if (endbuf != 0B) goto <D.22329>; else goto <D.22330>;
  <D.22329>:
  *endbuf = p;
  <D.22330>:
}


mono_debug_add_aot_method (struct MonoDomain * domain, struct MonoMethod * method, guint8 * code_start, guint8 * debug_info, guint32 debug_info_len)
{
  int D.22331;
  short unsigned int D.22336;
  unsigned int D.22337;
  unsigned int D.22338;
  short unsigned int D.22340;
  unsigned int D.22341;
  unsigned int D.22342;
  unsigned int D.22344;
  unsigned int D.22345;
  struct MonoDebugMethodJitInfo * jit;

  D.22331 = mono_debug_enabled ();
  if (D.22331 == 0) goto <D.22332>; else goto <D.22333>;
  <D.22332>:
  return;
  <D.22333>:
  D.22336 = method->iflags;
  D.22337 = (unsigned int) D.22336;
  D.22338 = D.22337 & 4099;
  if (D.22338 != 0) goto <D.22334>; else goto <D.22339>;
  <D.22339>:
  D.22340 = method->flags;
  D.22341 = (unsigned int) D.22340;
  D.22342 = D.22341 & 9216;
  if (D.22342 != 0) goto <D.22334>; else goto <D.22343>;
  <D.22343>:
  D.22344 = BIT_FIELD_REF <*method, 32, 160>;
  D.22345 = D.22344 & 124;
  if (D.22345 != 0) goto <D.22334>; else goto <D.22335>;
  <D.22334>:
  return;
  <D.22335>:
  if (debug_info_len == 0) goto <D.22346>; else goto <D.22347>;
  <D.22346>:
  return;
  <D.22347>:
  jit = deserialize_debug_info (method, code_start, debug_info, debug_info_len);
  mono_debug_add_method (method, jit, domain);
  mono_debug_add_vg_method (method, jit);
  mono_debug_free_method_jit_info (jit);
}


deserialize_debug_info (struct MonoMethod * method, guint8 * code_start, guint8 * buf, guint32 buf_len)
{
  _Bool D.22349;
  long int D.22350;
  long int D.22351;
  short unsigned int D.22354;
  unsigned int D.22355;
  unsigned int D.22356;
  unsigned int D.22357;
  void * D.22358;
  struct MonoMethodSignature * D.22359;
  short unsigned int D.22360;
  unsigned int D.22361;
  unsigned int D.22362;
  unsigned int D.22363;
  void * D.22364;
  guint8 * p.10;
  int D.22366;
  unsigned int D.22367;
  int D.22368;
  unsigned int D.22369;
  int D.22370;
  unsigned int D.22371;
  struct MonoDebugVarInfo * D.22372;
  unsigned int i.11;
  unsigned int D.22374;
  struct MonoDebugVarInfo * D.22375;
  unsigned int i.12;
  struct MonoMethodSignature * D.22377;
  unsigned int D.22378;
  unsigned int D.22379;
  void * D.22382;
  struct MonoDebugVarInfo * D.22383;
  struct MonoDebugVarInfo * D.22384;
  struct MonoDebugVarInfo * D.22385;
  int D.22386;
  void * D.22389;
  void * D.22390;
  struct MonoDebugVarInfo * D.22391;
  struct MonoDebugVarInfo * D.22392;
  int D.22393;
  unsigned int D.22394;
  unsigned int D.22395;
  unsigned int D.22396;
  void * D.22397;
  struct MonoDebugLineNumberEntry * D.22398;
  unsigned int D.22399;
  int D.22400;
  int D.22401;
  unsigned int native_offset.13;
  unsigned int offset.14;
  struct MonoDebugMethodJitInfo * D.22404;
  struct MonoMethodHeader * header;
  gint32 offset;
  gint32 native_offset;
  gint32 prev_offset;
  gint32 prev_native_offset;
  struct MonoDebugMethodJitInfo * jit;
  guint8 * p;
  int i;

  try
    {
      header = mono_method_get_header (method);
      D.22349 = header == 0B;
      D.22350 = (long int) D.22349;
      D.22351 = __builtin_expect (D.22350, 0);
      if (D.22351 != 0) goto <D.22352>; else goto <D.22353>;
      <D.22352>:
      monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "debug-mini.c", 533, "header");
      <D.22353>:
      jit = monoeg_malloc0 (56);
      jit->code_start = code_start;
      D.22354 = header->num_locals;
      D.22355 = (unsigned int) D.22354;
      jit->num_locals = D.22355;
      D.22356 = jit->num_locals;
      D.22357 = D.22356 * 24;
      D.22358 = monoeg_malloc0 (D.22357);
      jit->locals = D.22358;
      D.22359 = mono_method_signature (method);
      D.22360 = D.22359->param_count;
      D.22361 = (unsigned int) D.22360;
      jit->num_params = D.22361;
      D.22362 = jit->num_params;
      D.22363 = D.22362 * 24;
      D.22364 = monoeg_malloc0 (D.22363);
      jit->params = D.22364;
      p = buf;
      p.10 = p;
      D.22366 = decode_value (p.10, &p);
      D.22367 = (unsigned int) D.22366;
      jit->epilogue_begin = D.22367;
      p.10 = p;
      D.22368 = decode_value (p.10, &p);
      D.22369 = (unsigned int) D.22368;
      jit->prologue_end = D.22369;
      p.10 = p;
      D.22370 = decode_value (p.10, &p);
      D.22371 = (unsigned int) D.22370;
      jit->code_size = D.22371;
      i = 0;
      goto <D.21982>;
      <D.21981>:
      D.22372 = jit->params;
      i.11 = (unsigned int) i;
      D.22374 = i.11 * 24;
      D.22375 = D.22372 + D.22374;
      p.10 = p;
      deserialize_variable (D.22375, p.10, &p);
      i = i + 1;
      <D.21982>:
      i.12 = (unsigned int) i;
      D.22362 = jit->num_params;
      if (i.12 < D.22362) goto <D.21981>; else goto <D.21983>;
      <D.21983>:
      D.22377 = mono_method_signature (method);
      D.22378 = BIT_FIELD_REF <*D.22377, 32, 64>;
      D.22379 = D.22378 & 4194304;
      if (D.22379 != 0) goto <D.22380>; else goto <D.22381>;
      <D.22380>:
      D.22382 = monoeg_malloc0 (24);
      jit->this_var = D.22382;
      D.22383 = jit->this_var;
      p.10 = p;
      deserialize_variable (D.22383, p.10, &p);
      <D.22381>:
      i = 0;
      goto <D.21985>;
      <D.21984>:
      D.22384 = jit->locals;
      i.11 = (unsigned int) i;
      D.22374 = i.11 * 24;
      D.22385 = D.22384 + D.22374;
      p.10 = p;
      deserialize_variable (D.22385, p.10, &p);
      i = i + 1;
      <D.21985>:
      i.12 = (unsigned int) i;
      D.22356 = jit->num_locals;
      if (i.12 < D.22356) goto <D.21984>; else goto <D.21986>;
      <D.21986>:
      p.10 = p;
      D.22386 = decode_value (p.10, &p);
      if (D.22386 != 0) goto <D.22387>; else goto <D.22388>;
      <D.22387>:
      D.22389 = monoeg_malloc0 (24);
      jit->gsharedvt_info_var = D.22389;
      D.22390 = monoeg_malloc0 (24);
      jit->gsharedvt_locals_var = D.22390;
      D.22391 = jit->gsharedvt_info_var;
      p.10 = p;
      deserialize_variable (D.22391, p.10, &p);
      D.22392 = jit->gsharedvt_locals_var;
      p.10 = p;
      deserialize_variable (D.22392, p.10, &p);
      <D.22388>:
      p.10 = p;
      D.22393 = decode_value (p.10, &p);
      D.22394 = (unsigned int) D.22393;
      jit->num_line_numbers = D.22394;
      D.22395 = jit->num_line_numbers;
      D.22396 = D.22395 * 8;
      D.22397 = monoeg_malloc0 (D.22396);
      jit->line_numbers = D.22397;
      prev_offset = 0;
      prev_native_offset = 0;
      i = 0;
      goto <D.21989>;
      <D.21988>:
      {
        struct MonoDebugLineNumberEntry * lne;

        D.22398 = jit->line_numbers;
        i.11 = (unsigned int) i;
        D.22399 = i.11 * 8;
        lne = D.22398 + D.22399;
        p.10 = p;
        D.22400 = decode_value (p.10, &p);
        offset = D.22400 + prev_offset;
        p.10 = p;
        D.22401 = decode_value (p.10, &p);
        native_offset = D.22401 + prev_native_offset;
        native_offset.13 = (unsigned int) native_offset;
        lne->native_offset = native_offset.13;
        offset.14 = (unsigned int) offset;
        lne->il_offset = offset.14;
        prev_offset = offset;
        prev_native_offset = native_offset;
      }
      i = i + 1;
      <D.21989>:
      i.12 = (unsigned int) i;
      D.22395 = jit->num_line_numbers;
      if (i.12 < D.22395) goto <D.21988>; else goto <D.21990>;
      <D.21990>:
      mono_metadata_free_mh (header);
      D.22404 = jit;
      return D.22404;
    }
  finally
    {
      p = {CLOBBER};
    }
}


deserialize_variable (struct MonoDebugVarInfo * var, guint8 * p, guint8 * * endbuf)
{
  guint8 * p.15;
  int D.22408;
  unsigned int D.22409;
  unsigned int D.22410;
  int D.22411;
  unsigned int D.22412;
  guint32 flags;

  p.15 = p;
  D.22408 = decode_value (p.15, &p);
  D.22409 = (unsigned int) D.22408;
  var->index = D.22409;
  D.22410 = var->index;
  flags = D.22410 & 4026531840;
  switch (flags) <default: <D.21966>, case 0: <D.21959>, case 268435456: <D.21961>, case 805306368: <D.21965>, case 1073741824: <D.21962>, case 1342177280: <D.21963>, case 1610612736: <D.21964>>
  <D.21959>:
  goto <D.21960>;
  <D.21961>:
  <D.21962>:
  p.15 = p;
  D.22411 = decode_value (p.15, &p);
  D.22412 = (unsigned int) D.22411;
  var->offset = D.22412;
  goto <D.21960>;
  <D.21963>:
  <D.21964>:
  <D.21965>:
  goto <D.21960>;
  <D.21966>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "debug-mini.c", 518);
  <D.21960>:
  p.15 = p;
  *endbuf = p.15;
}


decode_value (guint8 * ptr, guint8 * * rptr)
{
  signed char b.16;
  int D.22418;
  int D.22419;
  int D.22422;
  int D.22423;
  guint8 * D.22424;
  unsigned char D.22425;
  int D.22426;
  int D.22430;
  int D.22431;
  int D.22432;
  int D.22433;
  guint8 * D.22434;
  unsigned char D.22435;
  int D.22436;
  int D.22437;
  int D.22438;
  guint8 * D.22439;
  unsigned char D.22440;
  int D.22441;
  int D.22443;
  int D.22444;
  int D.22445;
  int D.22446;
  int D.22447;
  guint8 * D.22448;
  unsigned char D.22449;
  int D.22450;
  gint32 D.22453;
  guint8 b;
  gint32 len;

  b = *ptr;
  b.16 = (signed char) b;
  if (b.16 >= 0) goto <D.22415>; else goto <D.22416>;
  <D.22415>:
  len = (gint32) b;
  ptr = ptr + 1;
  goto <D.22417>;
  <D.22416>:
  D.22418 = (int) b;
  D.22419 = D.22418 & 64;
  if (D.22419 == 0) goto <D.22420>; else goto <D.22421>;
  <D.22420>:
  D.22418 = (int) b;
  D.22422 = D.22418 & 63;
  D.22423 = D.22422 << 8;
  D.22424 = ptr + 1;
  D.22425 = *D.22424;
  D.22426 = (int) D.22425;
  len = D.22423 | D.22426;
  ptr = ptr + 2;
  goto <D.22427>;
  <D.22421>:
  if (b != 255) goto <D.22428>; else goto <D.22429>;
  <D.22428>:
  D.22418 = (int) b;
  D.22430 = D.22418 & 31;
  D.22431 = D.22430 << 24;
  D.22424 = ptr + 1;
  D.22425 = *D.22424;
  D.22426 = (int) D.22425;
  D.22432 = D.22426 << 16;
  D.22433 = D.22431 | D.22432;
  D.22434 = ptr + 2;
  D.22435 = *D.22434;
  D.22436 = (int) D.22435;
  D.22437 = D.22436 << 8;
  D.22438 = D.22433 | D.22437;
  D.22439 = ptr + 3;
  D.22440 = *D.22439;
  D.22441 = (int) D.22440;
  len = D.22438 | D.22441;
  ptr = ptr + 4;
  goto <D.22442>;
  <D.22429>:
  D.22424 = ptr + 1;
  D.22425 = *D.22424;
  D.22426 = (int) D.22425;
  D.22443 = D.22426 << 24;
  D.22434 = ptr + 2;
  D.22435 = *D.22434;
  D.22436 = (int) D.22435;
  D.22444 = D.22436 << 16;
  D.22445 = D.22443 | D.22444;
  D.22439 = ptr + 3;
  D.22440 = *D.22439;
  D.22441 = (int) D.22440;
  D.22446 = D.22441 << 8;
  D.22447 = D.22445 | D.22446;
  D.22448 = ptr + 4;
  D.22449 = *D.22448;
  D.22450 = (int) D.22449;
  len = D.22447 | D.22450;
  ptr = ptr + 5;
  <D.22442>:
  <D.22427>:
  <D.22417>:
  if (rptr != 0B) goto <D.22451>; else goto <D.22452>;
  <D.22451>:
  *rptr = ptr;
  <D.22452>:
  D.22453 = len;
  return D.22453;
}


mono_debug_print_vars (void * ip, gboolean only_arguments)
{
  struct MonoMethod * D.22457;
  unsigned int D.22462;
  unsigned int D.22463;
  struct MonoMethod * D.22464;
  struct MonoDebugVarInfo * D.22465;
  struct MonoDebugVarInfo * D.22468;
  unsigned int i.17;
  unsigned int D.22470;
  struct MonoDebugVarInfo * D.22471;
  const char * iftmp.18;
  unsigned int D.22473;
  char * * D.22474;
  char * D.22475;
  unsigned int i.19;
  struct MonoDebugVarInfo * D.22481;
  struct MonoDebugVarInfo * D.22482;
  unsigned int D.22483;
  struct MonoDomain * domain;
  struct MonoJitInfo * ji;
  struct MonoDebugMethodJitInfo * jit;
  int i;

  domain = mono_domain_get ();
  ji = mono_jit_info_table_find (domain, ip);
  if (ji == 0B) goto <D.22455>; else goto <D.22456>;
  <D.22455>:
  return;
  <D.22456>:
  D.22457 = jinfo_get_method (ji);
  jit = mono_debug_find_method (D.22457, domain);
  if (jit == 0B) goto <D.22458>; else goto <D.22459>;
  <D.22458>:
  return;
  <D.22459>:
  if (only_arguments != 0) goto <D.22460>; else goto <D.22461>;
  <D.22460>:
  {
    char * * names;

    D.22462 = jit->num_params;
    D.22463 = D.22462 * 4;
    names = monoeg_malloc (D.22463);
    D.22464 = jinfo_get_method (ji);
    mono_method_get_param_names (D.22464, names);
    D.22465 = jit->this_var;
    if (D.22465 != 0B) goto <D.22466>; else goto <D.22467>;
    <D.22466>:
    D.22465 = jit->this_var;
    print_var_info (D.22465, 0, "this", "Arg");
    <D.22467>:
    i = 0;
    goto <D.22023>;
    <D.22022>:
    D.22468 = jit->params;
    i.17 = (unsigned int) i;
    D.22470 = i.17 * 24;
    D.22471 = D.22468 + D.22470;
    i.17 = (unsigned int) i;
    D.22473 = i.17 * 4;
    D.22474 = names + D.22473;
    D.22475 = *D.22474;
    if (D.22475 != 0B) goto <D.22476>; else goto <D.22477>;
    <D.22476>:
    i.17 = (unsigned int) i;
    D.22473 = i.17 * 4;
    D.22474 = names + D.22473;
    iftmp.18 = *D.22474;
    goto <D.22478>;
    <D.22477>:
    iftmp.18 = "unknown name";
    <D.22478>:
    print_var_info (D.22471, i, iftmp.18, "Arg");
    i = i + 1;
    <D.22023>:
    i.19 = (unsigned int) i;
    D.22462 = jit->num_params;
    if (i.19 < D.22462) goto <D.22022>; else goto <D.22024>;
    <D.22024>:
    monoeg_g_free (names);
  }
  goto <D.22480>;
  <D.22461>:
  i = 0;
  goto <D.22026>;
  <D.22025>:
  D.22481 = jit->locals;
  i.17 = (unsigned int) i;
  D.22470 = i.17 * 24;
  D.22482 = D.22481 + D.22470;
  print_var_info (D.22482, i, "", "Local");
  i = i + 1;
  <D.22026>:
  i.19 = (unsigned int) i;
  D.22483 = jit->num_locals;
  if (i.19 < D.22483) goto <D.22025>; else goto <D.22027>;
  <D.22027>:
  <D.22480>:
  mono_debug_free_method_jit_info (jit);
}


jinfo_get_method (struct MonoJitInfo * ji)
{
  struct MonoMethod * D.22485;

  D.22485 = mono_jit_info_get_method (ji);
  return D.22485;
}


print_var_info (struct MonoDebugVarInfo * info, int idx, const char * name, const char * type)
{
  unsigned int D.22487;
  unsigned int D.22488;
  int D.22489;
  int D.22490;
  const char * D.22491;
  const char * D.22492;
  unsigned int D.22493;
  const char * D.22494;
  const char * D.22495;

  D.22487 = info->index;
  D.22488 = D.22487 & 4026531840;
  switch (D.22488) <default: <D.22012>, case 0: <D.22005>, case 268435456: <D.22007>, case 536870912: <D.22011>, case 1073741824: <D.22008>, case 1342177280: <D.22009>, case 1610612736: <D.22010>>
  <D.22005>:
  D.22487 = info->index;
  D.22489 = (int) D.22487;
  D.22490 = D.22489 & 268435455;
  D.22491 = mono_arch_regname (D.22490);
  monoeg_g_print ("%s %s (%d) in register %s\n", type, name, idx, D.22491);
  goto <D.22006>;
  <D.22007>:
  D.22487 = info->index;
  D.22489 = (int) D.22487;
  D.22490 = D.22489 & 268435455;
  D.22492 = mono_arch_regname (D.22490);
  D.22493 = info->offset;
  monoeg_g_print ("%s %s (%d) in memory: base register %s + %d\n", type, name, idx, D.22492, D.22493);
  goto <D.22006>;
  <D.22008>:
  D.22487 = info->index;
  D.22489 = (int) D.22487;
  D.22490 = D.22489 & 268435455;
  D.22494 = mono_arch_regname (D.22490);
  D.22493 = info->offset;
  monoeg_g_print ("%s %s (%d) in indir memory: base register %s + %d\n", type, name, idx, D.22494, D.22493);
  goto <D.22006>;
  <D.22009>:
  monoeg_g_print ("%s %s (%d) gsharedvt local.\n", type, name, idx);
  goto <D.22006>;
  <D.22010>:
  D.22487 = info->index;
  D.22489 = (int) D.22487;
  D.22490 = D.22489 & 268435455;
  D.22495 = mono_arch_regname (D.22490);
  D.22493 = info->offset;
  monoeg_g_print ("%s %s (%d) vt address: base register %s + %d\n", type, name, idx, D.22495, D.22493);
  goto <D.22006>;
  <D.22011>:
  <D.22012>:
  monoeg_assertion_message ("* Assertion: should not be reached at %s:%d\n", "debug-mini.c", 636);
  <D.22006>:
}


mono_debugger_insert_breakpoint (const gchar * method_name, gboolean include_namespace)
{
  int D.22498;
  struct MonoMethodDesc * desc;

  desc = mono_method_desc_new (method_name, include_namespace);
  if (desc == 0B) goto <D.22496>; else goto <D.22497>;
  <D.22496>:
  D.22498 = 0;
  return D.22498;
  <D.22497>:
  D.22498 = mono_debugger_insert_breakpoint_full (desc);
  return D.22498;
}


mono_debugger_insert_breakpoint_full (struct MonoMethodDesc * desc)
{
  int last_breakpoint_id.20;
  int last_breakpoint_id.21;
  unsigned int last_breakpoint_id.22;
  struct GPtrArray * breakpoints.23;
  struct GPtrArray * breakpoints.24;
  int D.22507;
  unsigned int D.22508;
  static int last_breakpoint_id = 0;
  struct MiniDebugBreakpointInfo * info;

  info = monoeg_malloc0 (8);
  info->desc = desc;
  last_breakpoint_id.20 = last_breakpoint_id;
  last_breakpoint_id.21 = last_breakpoint_id.20 + 1;
  last_breakpoint_id = last_breakpoint_id.21;
  last_breakpoint_id.20 = last_breakpoint_id;
  last_breakpoint_id.22 = (unsigned int) last_breakpoint_id.20;
  info->index = last_breakpoint_id.22;
  breakpoints.23 = breakpoints;
  if (breakpoints.23 == 0B) goto <D.22504>; else goto <D.22505>;
  <D.22504>:
  breakpoints.24 = monoeg_g_ptr_array_new ();
  breakpoints = breakpoints.24;
  <D.22505>:
  breakpoints.23 = breakpoints;
  monoeg_g_ptr_array_add (breakpoints.23, info);
  D.22508 = info->index;
  D.22507 = (int) D.22508;
  return D.22507;
}


mono_debugger_method_has_breakpoint (struct MonoMethod * method)
{
  struct GPtrArray * breakpoints.25;
  int D.22513;
  void * * D.22514;
  unsigned int i.26;
  unsigned int D.22516;
  void * * D.22517;
  struct MonoMethodDesc * D.22518;
  int D.22519;
  unsigned int D.22522;
  unsigned int i.27;
  unsigned int D.22524;
  int i;

  breakpoints.25 = breakpoints;
  if (breakpoints.25 == 0B) goto <D.22511>; else goto <D.22512>;
  <D.22511>:
  D.22513 = 0;
  return D.22513;
  <D.22512>:
  i = 0;
  goto <D.22046>;
  <D.22045>:
  {
    struct MiniDebugBreakpointInfo * info;

    breakpoints.25 = breakpoints;
    D.22514 = breakpoints.25->pdata;
    i.26 = (unsigned int) i;
    D.22516 = i.26 * 4;
    D.22517 = D.22514 + D.22516;
    info = *D.22517;
    D.22518 = info->desc;
    D.22519 = mono_method_desc_full_match (D.22518, method);
    if (D.22519 == 0) goto <D.22520>; else goto <D.22521>;
    <D.22520>:
    // predicted unlikely by continue predictor.
    goto <D.22044>;
    <D.22521>:
    D.22522 = info->index;
    D.22513 = (int) D.22522;
    return D.22513;
  }
  <D.22044>:
  i = i + 1;
  <D.22046>:
  i.27 = (unsigned int) i;
  breakpoints.25 = breakpoints;
  D.22524 = breakpoints.25->len;
  if (i.27 < D.22524) goto <D.22045>; else goto <D.22047>;
  <D.22047>:
  D.22513 = 0;
  return D.22513;
}


