__attribute__((visibility ("hidden")))
mono_method_has_declsec (struct MonoMethod * method)
{
  long unsigned int D.22211;
  long unsigned int D.22212;
  MonoBoolean D.22216;
  struct MonoClass * D.22221;
  unsigned int D.22222;
  unsigned int D.22223;
  short unsigned int D.22225;
  int D.22226;
  int D.22227;
  const char * D.22228;
  int D.22229;

  InterlockedIncrement (&mono_jit_stats.cas_declsec_check);
  D.22211 = BIT_FIELD_REF <*method, 64, 256>;
  D.22212 = D.22211 & 4467570830351532032;
  if (D.22212 == 864691128455135232) goto <D.22208>; else goto <D.22213>;
  <D.22213>:
  D.22211 = BIT_FIELD_REF <*method, 64, 256>;
  D.22212 = D.22211 & 4467570830351532032;
  if (D.22212 == 1008806316530991104) goto <D.22208>; else goto <D.22209>;
  <D.22208>:
  method = mono_marshal_method_from_wrapper (method);
  if (method == 0B) goto <D.22214>; else goto <D.22215>;
  <D.22214>:
  D.22216 = 0;
  return D.22216;
  <D.22215>:
  goto <D.22210>;
  <D.22209>:
  D.22211 = BIT_FIELD_REF <*method, 64, 256>;
  D.22212 = D.22211 & 4467570830351532032;
  if (D.22212 != 0) goto <D.22217>; else goto <D.22218>;
  <D.22217>:
  D.22216 = 0;
  return D.22216;
  <D.22218>:
  <D.22210>:
  D.22221 = method->klass;
  D.22222 = D.22221->flags;
  D.22223 = D.22222 & 262144;
  if (D.22223 != 0) goto <D.22219>; else goto <D.22224>;
  <D.22224>:
  D.22225 = method->flags;
  D.22226 = (int) D.22225;
  D.22227 = D.22226 & 16384;
  if (D.22227 != 0) goto <D.22219>; else goto <D.22220>;
  <D.22219>:
  D.22228 = method->name;
  D.22229 = strcmp (D.22228, ".cctor");
  if (D.22229 != 0) goto <D.22230>; else goto <D.22231>;
  <D.22230>:
  D.22216 = 1;
  return D.22216;
  <D.22231>:
  <D.22220>:
  D.22216 = 0;
  return D.22216;
}


InterlockedIncrement (volatile gint32 * val)
{
  gint32 D.22233;
  unsigned int D.22234;

  D.22234 = __sync_add_and_fetch_4 (val, 1);
  D.22233 = (gint32) D.22234;
  return D.22233;
}


__attribute__((__gnu_inline__, nothrow, leaf, pure))
strcmp (const char * __s1, const char * __s2)
{
  int iftmp.0;
  int iftmp.1;
  int D.22244;
  char * __p1;
  char * __p2;
  int __ret;

  __p1 = __s1;
  __p2 = __s2;
  __asm__ __volatile__("   slr   0,0
0: clst  %1,%2
   jo    0b
   ipm   %0
   srl   %0,28" : "=d" __ret, "=&a" __p1, "=&a" __p2 : "1" __p1, "2" __p2 : "0", "memory", "cc");
  if (__ret != 0) goto <D.22237>; else goto <D.22238>;
  <D.22237>:
  if (__ret == 1) goto <D.22240>; else goto <D.22241>;
  <D.22240>:
  iftmp.1 = -1;
  goto <D.22242>;
  <D.22241>:
  iftmp.1 = 1;
  <D.22242>:
  iftmp.0 = iftmp.1;
  goto <D.22243>;
  <D.22238>:
  iftmp.0 = 0;
  <D.22243>:
  __ret = iftmp.0;
  D.22244 = __ret;
  return D.22244;
}


__attribute__((visibility ("hidden")))
mono_declsec_cache_stack_modifiers (struct MonoJitInfo * jinfo)
{
  unsigned int D.22248;
  _Bool D.22249;
  <unnamed-signed:1> D.22250;
  unsigned int D.22251;
  _Bool D.22252;
  <unnamed-signed:1> D.22253;
  unsigned int D.22254;
  _Bool D.22255;
  <unnamed-signed:1> D.22256;
  struct MonoClass * D.22257;
  struct MonoMethodCasInfo * info;
  struct MonoMethod * method;
  guint32 flags;

  info = mono_jit_info_get_cas_info (jinfo);
  if (info == 0B) goto <D.22246>; else goto <D.22247>;
  <D.22246>:
  return;
  <D.22247>:
  method = jinfo_get_method (jinfo);
  flags = mono_declsec_flags_from_method (method);
  D.22248 = flags & 4;
  D.22249 = D.22248 != 0;
  D.22250 = (<unnamed-signed:1>) D.22249;
  info->cas_method_assert = D.22250;
  D.22251 = flags & 8;
  D.22252 = D.22251 != 0;
  D.22253 = (<unnamed-signed:1>) D.22252;
  info->cas_method_deny = D.22253;
  D.22254 = flags & 16;
  D.22255 = D.22254 != 0;
  D.22256 = (<unnamed-signed:1>) D.22255;
  info->cas_method_permitonly = D.22256;
  D.22257 = method->klass;
  flags = mono_declsec_flags_from_class (D.22257);
  D.22248 = flags & 4;
  D.22249 = D.22248 != 0;
  D.22250 = (<unnamed-signed:1>) D.22249;
  info->cas_class_assert = D.22250;
  D.22251 = flags & 8;
  D.22252 = D.22251 != 0;
  D.22253 = (<unnamed-signed:1>) D.22252;
  info->cas_class_deny = D.22253;
  D.22254 = flags & 16;
  D.22255 = D.22254 != 0;
  D.22256 = (<unnamed-signed:1>) D.22255;
  info->cas_class_permitonly = D.22256;
}


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

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


__attribute__((visibility ("hidden")))
mono_declsec_create_frame (struct MonoDomain * domain, struct MonoJitInfo * jinfo)
{
  struct MonoClass * D.22261;
  unsigned int D.22264;
  unsigned int D.22265;
  unsigned char D.22268;
  struct MonoReflectionMethod * * D.22271;
  struct MonoReflectionMethod * D.22272;
  struct MonoAppDomain * * D.22273;
  struct MonoAppDomain * D.22274;
  unsigned int D.22278;
  struct MonoDeclSecurityEntry * D.22280;
  unsigned int D.22283;
  struct MonoClass * D.22286;
  unsigned int D.22290;
  struct MonoDeclSecurityEntry * D.22292;
  unsigned int D.22295;
  unsigned int D.22301;
  struct MonoDeclSecurityEntry * D.22303;
  unsigned int D.22306;
  struct MonoSecurityFrame * D.22309;
  struct MonoSecurityFrame * frame;
  struct MonoMethodCasInfo * info;
  struct MonoMethod * method;

  D.22261 = mono_defaults.runtimesecurityframe_class;
  frame = mono_object_new (domain, D.22261);
  method = jinfo_get_method (jinfo);
  info = mono_jit_info_get_cas_info (jinfo);
  if (info != 0B) goto <D.22262>; else goto <D.22263>;
  <D.22262>:
  D.22264 = BIT_FIELD_REF <*info, 32, 0>;
  D.22265 = D.22264 & 2147483648;
  if (D.22265 == 0) goto <D.22266>; else goto <D.22267>;
  <D.22266>:
  D.22268 = mono_method_has_declsec (method);
  if (D.22268 != 0) goto <D.22269>; else goto <D.22270>;
  <D.22269>:
  mono_declsec_cache_stack_modifiers (jinfo);
  <D.22270>:
  info->cas_inited = -1;
  <D.22267>:
  <D.22263>:
  D.22271 = &frame->method;
  D.22272 = mono_method_get_object (domain, method, 0B);
  mono_gc_wbarrier_set_field (frame, D.22271, D.22272);
  D.22273 = &frame->domain;
  D.22274 = domain->domain;
  mono_gc_wbarrier_set_field (frame, D.22273, D.22274);
  if (info != 0B) goto <D.22277>; else goto <D.22275>;
  <D.22277>:
  D.22264 = BIT_FIELD_REF <*info, 32, 0>;
  D.22278 = D.22264 & 134217728;
  if (D.22278 != 0) goto <D.22279>; else goto <D.22275>;
  <D.22279>:
  D.22280 = &frame->assert;
  mono_declsec_get_method_action (method, 3, D.22280);
  goto <D.22276>;
  <D.22275>:
  if (info != 0B) goto <D.22281>; else goto <D.22282>;
  <D.22281>:
  D.22264 = BIT_FIELD_REF <*info, 32, 0>;
  D.22283 = D.22264 & 1073741824;
  if (D.22283 != 0) goto <D.22284>; else goto <D.22285>;
  <D.22284>:
  D.22286 = method->klass;
  D.22280 = &frame->assert;
  mono_declsec_get_class_action (D.22286, 3, D.22280);
  <D.22285>:
  <D.22282>:
  <D.22276>:
  if (info != 0B) goto <D.22289>; else goto <D.22287>;
  <D.22289>:
  D.22264 = BIT_FIELD_REF <*info, 32, 0>;
  D.22290 = D.22264 & 67108864;
  if (D.22290 != 0) goto <D.22291>; else goto <D.22287>;
  <D.22291>:
  D.22292 = &frame->deny;
  mono_declsec_get_method_action (method, 4, D.22292);
  goto <D.22288>;
  <D.22287>:
  if (info != 0B) goto <D.22293>; else goto <D.22294>;
  <D.22293>:
  D.22264 = BIT_FIELD_REF <*info, 32, 0>;
  D.22295 = D.22264 & 536870912;
  if (D.22295 != 0) goto <D.22296>; else goto <D.22297>;
  <D.22296>:
  D.22286 = method->klass;
  D.22292 = &frame->deny;
  mono_declsec_get_class_action (D.22286, 4, D.22292);
  <D.22297>:
  <D.22294>:
  <D.22288>:
  if (info != 0B) goto <D.22300>; else goto <D.22298>;
  <D.22300>:
  D.22264 = BIT_FIELD_REF <*info, 32, 0>;
  D.22301 = D.22264 & 33554432;
  if (D.22301 != 0) goto <D.22302>; else goto <D.22298>;
  <D.22302>:
  D.22303 = &frame->permitonly;
  mono_declsec_get_method_action (method, 5, D.22303);
  goto <D.22299>;
  <D.22298>:
  if (info != 0B) goto <D.22304>; else goto <D.22305>;
  <D.22304>:
  D.22264 = BIT_FIELD_REF <*info, 32, 0>;
  D.22306 = D.22264 & 268435456;
  if (D.22306 != 0) goto <D.22307>; else goto <D.22308>;
  <D.22307>:
  D.22286 = method->klass;
  D.22303 = &frame->permitonly;
  mono_declsec_get_class_action (D.22286, 5, D.22303);
  <D.22308>:
  <D.22305>:
  <D.22299>:
  D.22309 = frame;
  return D.22309;
}


__attribute__((visibility ("hidden")))
mono_declsec_linkdemand (struct MonoDomain * domain, struct MonoMethod * caller, struct MonoMethod * callee)
{
  struct MonoClass * D.22311;
  struct MonoImage * D.22312;
  struct MonoImage * D.22313;
  struct MonoClass * D.22316;
  struct MonoImage * D.22317;
  guint32 D.22320;
  short unsigned int D.22321;
  int D.22322;
  int D.22323;
  int D.22326;
  short unsigned int D.22330;
  int D.22331;
  int D.22332;
  int D.22335;
  int D.22340;
  unsigned char D.22345;
  int D.22348;
  guint32 violation;

  violation = 0;
  D.22311 = caller->klass;
  D.22312 = D.22311->image;
  D.22313 = mono_defaults.corlib;
  if (D.22312 == D.22313) goto <D.22314>; else goto <D.22315>;
  <D.22314>:
  D.22316 = callee->klass;
  D.22317 = D.22316->image;
  D.22313 = mono_defaults.corlib;
  if (D.22317 == D.22313) goto <D.22318>; else goto <D.22319>;
  <D.22318>:
  D.22320 = violation;
  return D.22320;
  <D.22319>:
  <D.22315>:
  D.22321 = callee->iflags;
  D.22322 = (int) D.22321;
  D.22323 = D.22322 & 4096;
  if (D.22323 != 0) goto <D.22324>; else goto <D.22325>;
  <D.22324>:
  D.22326 = mono_declsec_linkdemand_icall (domain, caller, callee);
  if (D.22326 != 0) goto <D.22327>; else goto <D.22328>;
  <D.22327>:
  violation = 4;
  <D.22328>:
  goto <D.22329>;
  <D.22325>:
  D.22330 = callee->flags;
  D.22331 = (int) D.22330;
  D.22332 = D.22331 & 8192;
  if (D.22332 != 0) goto <D.22333>; else goto <D.22334>;
  <D.22333>:
  D.22335 = mono_declsec_linkdemand_pinvoke (domain, caller, callee);
  if (D.22335 != 0) goto <D.22336>; else goto <D.22337>;
  <D.22336>:
  violation = 8;
  <D.22337>:
  <D.22334>:
  <D.22329>:
  if (violation == 0) goto <D.22338>; else goto <D.22339>;
  <D.22338>:
  D.22340 = mono_declsec_linkdemand_aptc (domain, caller, callee);
  if (D.22340 != 0) goto <D.22341>; else goto <D.22342>;
  <D.22341>:
  violation = 2;
  <D.22342>:
  <D.22339>:
  if (violation == 0) goto <D.22343>; else goto <D.22344>;
  <D.22343>:
  D.22345 = mono_method_has_declsec (callee);
  if (D.22345 != 0) goto <D.22346>; else goto <D.22347>;
  <D.22346>:
  D.22348 = mono_declsec_linkdemand_standard (domain, caller, callee);
  if (D.22348 != 0) goto <D.22349>; else goto <D.22350>;
  <D.22349>:
  violation = 1;
  <D.22350>:
  <D.22347>:
  <D.22344>:
  D.22320 = violation;
  return D.22320;
}


mono_declsec_linkdemand_icall (struct MonoDomain * domain, struct MonoMethod * caller, struct MonoMethod * icall)
{
  struct MonoClass * D.22352;
  struct MonoImage * D.22353;
  <unnamed-unsigned:2> D.22354;
  int D.22355;
  int D.22356;
  <unnamed-unsigned:2> iftmp.2;
  unsigned int size.3;
  int size.4;
  int D.22362;
  int D.22366;
  gboolean D.22369;
  struct MonoClass * D.22370;
  struct MonoImage * D.22371;
  int D.22372;
  _Bool D.22373;
  struct MonoAssembly * assembly;

  InterlockedIncrement (&mono_jit_stats.cas_linkdemand_icall);
  D.22352 = icall->klass;
  D.22353 = D.22352->image;
  assembly = mono_image_get_assembly (D.22353);
  D.22354 = assembly->ecma;
  D.22355 = (int) D.22354;
  D.22356 = D.22355 & 2;
  if (D.22356 == 0) goto <D.22357>; else goto <D.22358>;
  <D.22357>:
  {
    guint32 size;
    const char * pk;

    try
      {
        size = 0;
        D.22352 = icall->klass;
        D.22353 = D.22352->image;
        pk = mono_image_get_public_key (D.22353, &size);
        size.3 = size;
        size.4 = (int) size.3;
        D.22362 = mono_is_ecma_key (pk, size.4);
        if (D.22362 != 0) goto <D.22363>; else goto <D.22364>;
        <D.22363>:
        iftmp.2 = 3;
        goto <D.22365>;
        <D.22364>:
        iftmp.2 = 2;
        <D.22365>:
        assembly->ecma = iftmp.2;
      }
    finally
      {
        size = {CLOBBER};
      }
  }
  <D.22358>:
  D.22354 = assembly->ecma;
  D.22355 = (int) D.22354;
  D.22366 = D.22355 & 1;
  if (D.22366 != 0) goto <D.22367>; else goto <D.22368>;
  <D.22367>:
  D.22369 = 0;
  return D.22369;
  <D.22368>:
  D.22370 = caller->klass;
  D.22371 = D.22370->image;
  assembly = mono_image_get_assembly (D.22371);
  D.22372 = mono_declsec_is_assembly_fulltrust (domain, assembly);
  D.22373 = D.22372 == 0;
  D.22369 = (gboolean) D.22373;
  return D.22369;
}


mono_declsec_is_assembly_fulltrust (struct MonoDomain * domain, struct MonoAssembly * assembly)
{
  <unnamed-unsigned:2> D.22375;
  int D.22376;
  int D.22377;
  struct MonoMethod * D.22384;
  void * D.22385;
  unsigned char D.22386;
  gboolean D.22389;
  int D.22390;

  D.22375 = assembly->fulltrust;
  D.22376 = (int) D.22375;
  D.22377 = D.22376 & 2;
  if (D.22377 == 0) goto <D.22378>; else goto <D.22379>;
  <D.22378>:
  {
    struct MonoReflectionAssembly * refass;
    struct MonoSecurityManager * secman;

    refass = mono_assembly_get_object (domain, assembly);
    secman = mono_security_manager_get_methods ();
    if (secman != 0B) goto <D.22380>; else goto <D.22381>;
    <D.22380>:
    if (refass != 0B) goto <D.22382>; else goto <D.22383>;
    <D.22382>:
    {
      struct MonoObject * res;
      void * args[1];

      try
        {
          args[0] = refass;
          D.22384 = secman->linkdemandfulltrust;
          res = mono_runtime_invoke (D.22384, 0B, &args, 0B);
          D.22385 = mono_object_unbox (res);
          D.22386 = MEM[(MonoBoolean *)D.22385];
          if (D.22386 != 0) goto <D.22387>; else goto <D.22388>;
          <D.22387>:
          assembly->fulltrust = 3;
          D.22389 = 1;
          return D.22389;
          <D.22388>:
        }
      finally
        {
          args = {CLOBBER};
        }
    }
    <D.22383>:
    <D.22381>:
    assembly->fulltrust = 2;
    D.22389 = 0;
    return D.22389;
  }
  <D.22379>:
  D.22375 = assembly->fulltrust;
  D.22390 = (int) D.22375;
  D.22389 = D.22390 & 1;
  return D.22389;
}


mono_declsec_linkdemand_pinvoke (struct MonoDomain * domain, struct MonoMethod * caller, struct MonoMethod * native)
{
  struct MonoClass * D.22394;
  struct MonoImage * D.22395;
  <unnamed-unsigned:2> D.22396;
  int D.22397;
  int D.22398;
  <unnamed-unsigned:2> D.22401;
  unsigned int D.22402;
  unsigned int D.22403;
  gboolean D.22406;
  struct MonoMethod * D.22411;
  void * D.22412;
  unsigned char D.22413;
  int D.22416;
  struct MonoAssembly * assembly;

  D.22394 = caller->klass;
  D.22395 = D.22394->image;
  assembly = mono_image_get_assembly (D.22395);
  InterlockedIncrement (&mono_jit_stats.cas_linkdemand_pinvoke);
  D.22396 = assembly->unmanaged;
  D.22397 = (int) D.22396;
  D.22398 = D.22397 & 2;
  if (D.22398 == 0) goto <D.22399>; else goto <D.22400>;
  <D.22399>:
  D.22401 = assembly->fulltrust;
  D.22402 = (unsigned int) D.22401;
  D.22403 = D.22402 & 3;
  if (D.22403 == 3) goto <D.22404>; else goto <D.22405>;
  <D.22404>:
  assembly->unmanaged = 3;
  D.22406 = 0;
  return D.22406;
  <D.22405>:
  {
    struct MonoReflectionAssembly * refass;
    struct MonoSecurityManager * secman;

    refass = mono_assembly_get_object (domain, assembly);
    secman = mono_security_manager_get_methods ();
    if (secman != 0B) goto <D.22407>; else goto <D.22408>;
    <D.22407>:
    if (refass != 0B) goto <D.22409>; else goto <D.22410>;
    <D.22409>:
    {
      struct MonoObject * res;
      void * args[1];

      try
        {
          args[0] = refass;
          D.22411 = secman->linkdemandunmanaged;
          res = mono_runtime_invoke (D.22411, 0B, &args, 0B);
          D.22412 = mono_object_unbox (res);
          D.22413 = MEM[(MonoBoolean *)D.22412];
          if (D.22413 != 0) goto <D.22414>; else goto <D.22415>;
          <D.22414>:
          assembly->unmanaged = 3;
          D.22406 = 0;
          return D.22406;
          <D.22415>:
        }
      finally
        {
          args = {CLOBBER};
        }
    }
    <D.22410>:
    <D.22408>:
  }
  assembly->unmanaged = 2;
  <D.22400>:
  D.22396 = assembly->unmanaged;
  D.22397 = (int) D.22396;
  D.22416 = D.22397 & 1;
  if (D.22416 != 0) goto <D.22417>; else goto <D.22418>;
  <D.22417>:
  D.22406 = 0;
  return D.22406;
  <D.22418>:
  D.22406 = 1;
  return D.22406;
}


mono_declsec_linkdemand_aptc (struct MonoDomain * domain, struct MonoMethod * caller, struct MonoMethod * callee)
{
  struct MonoClass * D.22422;
  struct MonoImage * D.22423;
  struct MonoClass * D.22424;
  struct MonoImage * D.22425;
  gboolean D.22428;
  unsigned int D.22431;
  unsigned int D.22432;
  short unsigned int D.22434;
  int D.22435;
  int D.22436;
  const char * D.22439;
  unsigned int size.5;
  <unnamed-unsigned:2> D.22442;
  int D.22443;
  int D.22444;
  struct MonoClass * D.22451;
  <unnamed-unsigned:2> iftmp.6;
  int D.22458;
  int D.22461;
  struct MonoSecurityManager * secman;
  struct MonoAssembly * assembly;
  guint32 size;

  try
    {
      secman = 0B;
      size = 0;
      InterlockedIncrement (&mono_jit_stats.cas_linkdemand_aptc);
      D.22422 = caller->klass;
      D.22423 = D.22422->image;
      D.22424 = callee->klass;
      D.22425 = D.22424->image;
      if (D.22423 == D.22425) goto <D.22426>; else goto <D.22427>;
      <D.22426>:
      D.22428 = 0;
      return D.22428;
      <D.22427>:
      D.22424 = callee->klass;
      D.22431 = D.22424->flags;
      D.22432 = D.22431 & 1;
      if (D.22432 == 0) goto <D.22429>; else goto <D.22433>;
      <D.22433>:
      D.22434 = callee->flags;
      D.22435 = (int) D.22434;
      D.22436 = D.22435 & 6;
      if (D.22436 == 0) goto <D.22429>; else goto <D.22430>;
      <D.22429>:
      D.22428 = 0;
      return D.22428;
      <D.22430>:
      D.22424 = callee->klass;
      D.22425 = D.22424->image;
      D.22439 = mono_image_get_public_key (D.22425, &size);
      if (D.22439 == 0B) goto <D.22437>; else goto <D.22440>;
      <D.22440>:
      size.5 = size;
      if (size.5 <= 15) goto <D.22437>; else goto <D.22438>;
      <D.22437>:
      D.22428 = 0;
      return D.22428;
      <D.22438>:
      D.22424 = callee->klass;
      D.22425 = D.22424->image;
      assembly = mono_image_get_assembly (D.22425);
      D.22442 = assembly->aptc;
      D.22443 = (int) D.22442;
      D.22444 = D.22443 & 2;
      if (D.22444 == 0) goto <D.22445>; else goto <D.22446>;
      <D.22445>:
      {
        struct MonoCustomAttrInfo * cinfo;
        gboolean result;

        cinfo = mono_custom_attrs_from_assembly (assembly);
        result = 0;
        secman = mono_security_manager_get_methods ();
        if (secman != 0B) goto <D.22447>; else goto <D.22448>;
        <D.22447>:
        if (cinfo != 0B) goto <D.22449>; else goto <D.22450>;
        <D.22449>:
        D.22451 = secman->allowpartiallytrustedcallers;
        result = mono_custom_attrs_has_attr (cinfo, D.22451);
        <D.22450>:
        <D.22448>:
        if (cinfo != 0B) goto <D.22452>; else goto <D.22453>;
        <D.22452>:
        mono_custom_attrs_free (cinfo);
        <D.22453>:
        if (result != 0) goto <D.22455>; else goto <D.22456>;
        <D.22455>:
        iftmp.6 = 3;
        goto <D.22457>;
        <D.22456>:
        iftmp.6 = 2;
        <D.22457>:
        assembly->aptc = iftmp.6;
      }
      <D.22446>:
      D.22442 = assembly->aptc;
      D.22443 = (int) D.22442;
      D.22458 = D.22443 & 1;
      if (D.22458 != 0) goto <D.22459>; else goto <D.22460>;
      <D.22459>:
      D.22428 = 0;
      return D.22428;
      <D.22460>:
      D.22422 = caller->klass;
      D.22423 = D.22422->image;
      assembly = mono_image_get_assembly (D.22423);
      D.22461 = mono_declsec_is_assembly_fulltrust (domain, assembly);
      if (D.22461 != 0) goto <D.22462>; else goto <D.22463>;
      <D.22462>:
      D.22428 = 0;
      return D.22428;
      <D.22463>:
      D.22428 = 1;
      return D.22428;
    }
  finally
    {
      size = {CLOBBER};
    }
}


mono_declsec_linkdemand_standard (struct MonoDomain * domain, struct MonoMethod * caller, struct MonoMethod * callee)
{
  unsigned char D.22466;
  struct MonoClass * D.22469;
  struct MonoImage * D.22470;
  struct MonoMethod * D.22471;
  gboolean D.22472;
  void * D.22473;
  unsigned char D.22474;
  _Bool D.22475;
  struct MonoDeclSecurityActions linkclass;
  struct MonoDeclSecurityActions linkmethod;

  try
    {
      InterlockedIncrement (&mono_jit_stats.cas_linkdemand);
      D.22466 = mono_declsec_get_linkdemands (callee, &linkclass, &linkmethod);
      if (D.22466 != 0) goto <D.22467>; else goto <D.22468>;
      <D.22467>:
      {
        struct MonoAssembly * assembly;
        struct MonoReflectionAssembly * refass;
        struct MonoSecurityManager * secman;
        struct MonoObject * res;
        void * args[3];

        try
          {
            D.22469 = caller->klass;
            D.22470 = D.22469->image;
            assembly = mono_image_get_assembly (D.22470);
            refass = mono_assembly_get_object (domain, assembly);
            secman = mono_security_manager_get_methods ();
            args[0] = refass;
            args[1] = &linkclass;
            args[2] = &linkmethod;
            D.22471 = secman->linkdemand;
            res = mono_runtime_invoke (D.22471, 0B, &args, 0B);
            D.22473 = mono_object_unbox (res);
            D.22474 = MEM[(MonoBoolean *)D.22473];
            D.22475 = D.22474 == 0;
            D.22472 = (gboolean) D.22475;
            return D.22472;
          }
        finally
          {
            args = {CLOBBER};
          }
      }
      <D.22468>:
      D.22472 = 0;
      return D.22472;
    }
  finally
    {
      linkclass = {CLOBBER};
      linkmethod = {CLOBBER};
    }
}


