mono_security_set_mode (MonoSecurityMode mode)
{
  mono_security_mode = mode;
}


mono_security_get_mode ()
{
  MonoSecurityMode D.17031;

  D.17031 = mono_security_mode;
  return D.17031;
}


mono_activate_security_manager ()
{
  mono_security_manager_activated = 1;
}


mono_is_security_manager_active ()
{
  gboolean D.17033;
  unsigned char mono_security_manager_activated.0;

  mono_security_manager_activated.0 = mono_security_manager_activated;
  D.17033 = (gboolean) mono_security_manager_activated.0;
  return D.17033;
}


mono_security_manager_get_methods ()
{
  struct MonoClass * D.17036;
  struct MonoSecurityManager * D.17039;
  struct MonoImage * D.17040;
  struct MonoClass * D.17041;
  _Bool D.17042;
  long int D.17043;
  long int D.17044;
  unsigned char D.17047;
  unsigned char D.17048;
  struct MonoMethod * D.17051;
  struct MonoMethod * D.17052;
  _Bool D.17053;
  long int D.17054;
  long int D.17055;
  struct MonoMethod * D.17058;
  struct MonoMethod * D.17059;
  _Bool D.17060;
  long int D.17061;
  long int D.17062;
  struct MonoMethod * D.17065;
  struct MonoMethod * D.17066;
  _Bool D.17067;
  long int D.17068;
  long int D.17069;
  struct MonoMethod * D.17072;
  struct MonoMethod * D.17073;
  _Bool D.17074;
  long int D.17075;
  long int D.17076;
  struct MonoMethod * D.17079;
  struct MonoMethod * D.17080;
  _Bool D.17081;
  long int D.17082;
  long int D.17083;
  struct MonoMethod * D.17086;
  struct MonoMethod * D.17087;
  _Bool D.17088;
  long int D.17089;
  long int D.17090;
  struct MonoMethod * D.17093;
  struct MonoMethod * D.17094;
  _Bool D.17095;
  long int D.17096;
  long int D.17097;
  struct MonoMethod * D.17100;
  struct MonoMethod * D.17101;
  _Bool D.17102;
  long int D.17103;
  long int D.17104;
  struct MonoMethod * D.17107;
  struct MonoMethod * D.17108;
  _Bool D.17109;
  long int D.17110;
  long int D.17111;
  struct MonoClass * D.17114;
  struct MonoClass * D.17115;
  _Bool D.17116;
  long int D.17117;
  long int D.17118;
  struct MonoClass * D.17121;
  struct MonoClass * D.17122;
  _Bool D.17123;
  long int D.17124;
  long int D.17125;

  D.17036 = secman.securitymanager;
  if (D.17036 != 0B) goto <D.17037>; else goto <D.17038>;
  <D.17037>:
  D.17039 = &secman;
  return D.17039;
  <D.17038>:
  D.17040 = mono_defaults.corlib;
  D.17041 = mono_class_from_name (D.17040, "System.Security", "SecurityManager");
  secman.securitymanager = D.17041;
  D.17036 = secman.securitymanager;
  D.17042 = D.17036 == 0B;
  D.17043 = (long int) D.17042;
  D.17044 = __builtin_expect (D.17043, 0);
  if (D.17044 != 0) goto <D.17045>; else goto <D.17046>;
  <D.17045>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 59, "secman.securitymanager");
  <D.17046>:
  D.17036 = secman.securitymanager;
  D.17047 = BIT_FIELD_REF <*D.17036, 8, 256>;
  D.17048 = D.17047 & 1;
  if (D.17048 == 0) goto <D.17049>; else goto <D.17050>;
  <D.17049>:
  D.17036 = secman.securitymanager;
  mono_class_init (D.17036);
  <D.17050>:
  D.17036 = secman.securitymanager;
  D.17051 = mono_class_get_method_from_name (D.17036, "InternalDemand", 2);
  secman.demand = D.17051;
  D.17052 = secman.demand;
  D.17053 = D.17052 == 0B;
  D.17054 = (long int) D.17053;
  D.17055 = __builtin_expect (D.17054, 0);
  if (D.17055 != 0) goto <D.17056>; else goto <D.17057>;
  <D.17056>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 65, "secman.demand");
  <D.17057>:
  D.17036 = secman.securitymanager;
  D.17058 = mono_class_get_method_from_name (D.17036, "InternalDemandChoice", 2);
  secman.demandchoice = D.17058;
  D.17059 = secman.demandchoice;
  D.17060 = D.17059 == 0B;
  D.17061 = (long int) D.17060;
  D.17062 = __builtin_expect (D.17061, 0);
  if (D.17062 != 0) goto <D.17063>; else goto <D.17064>;
  <D.17063>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 69, "secman.demandchoice");
  <D.17064>:
  D.17036 = secman.securitymanager;
  D.17065 = mono_class_get_method_from_name (D.17036, "DemandUnmanaged", 0);
  secman.demandunmanaged = D.17065;
  D.17066 = secman.demandunmanaged;
  D.17067 = D.17066 == 0B;
  D.17068 = (long int) D.17067;
  D.17069 = __builtin_expect (D.17068, 0);
  if (D.17069 != 0) goto <D.17070>; else goto <D.17071>;
  <D.17070>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 73, "secman.demandunmanaged");
  <D.17071>:
  D.17036 = secman.securitymanager;
  D.17072 = mono_class_get_method_from_name (D.17036, "InheritanceDemand", 3);
  secman.inheritancedemand = D.17072;
  D.17073 = secman.inheritancedemand;
  D.17074 = D.17073 == 0B;
  D.17075 = (long int) D.17074;
  D.17076 = __builtin_expect (D.17075, 0);
  if (D.17076 != 0) goto <D.17077>; else goto <D.17078>;
  <D.17077>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 77, "secman.inheritancedemand");
  <D.17078>:
  D.17036 = secman.securitymanager;
  D.17079 = mono_class_get_method_from_name (D.17036, "InheritanceDemandSecurityException", 4);
  secman.inheritsecurityexception = D.17079;
  D.17080 = secman.inheritsecurityexception;
  D.17081 = D.17080 == 0B;
  D.17082 = (long int) D.17081;
  D.17083 = __builtin_expect (D.17082, 0);
  if (D.17083 != 0) goto <D.17084>; else goto <D.17085>;
  <D.17084>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 81, "secman.inheritsecurityexception");
  <D.17085>:
  D.17036 = secman.securitymanager;
  D.17086 = mono_class_get_method_from_name (D.17036, "LinkDemand", 3);
  secman.linkdemand = D.17086;
  D.17087 = secman.linkdemand;
  D.17088 = D.17087 == 0B;
  D.17089 = (long int) D.17088;
  D.17090 = __builtin_expect (D.17089, 0);
  if (D.17090 != 0) goto <D.17091>; else goto <D.17092>;
  <D.17091>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 85, "secman.linkdemand");
  <D.17092>:
  D.17036 = secman.securitymanager;
  D.17093 = mono_class_get_method_from_name (D.17036, "LinkDemandUnmanaged", 1);
  secman.linkdemandunmanaged = D.17093;
  D.17094 = secman.linkdemandunmanaged;
  D.17095 = D.17094 == 0B;
  D.17096 = (long int) D.17095;
  D.17097 = __builtin_expect (D.17096, 0);
  if (D.17097 != 0) goto <D.17098>; else goto <D.17099>;
  <D.17098>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 89, "secman.linkdemandunmanaged");
  <D.17099>:
  D.17036 = secman.securitymanager;
  D.17100 = mono_class_get_method_from_name (D.17036, "LinkDemandFullTrust", 1);
  secman.linkdemandfulltrust = D.17100;
  D.17101 = secman.linkdemandfulltrust;
  D.17102 = D.17101 == 0B;
  D.17103 = (long int) D.17102;
  D.17104 = __builtin_expect (D.17103, 0);
  if (D.17104 != 0) goto <D.17105>; else goto <D.17106>;
  <D.17105>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 93, "secman.linkdemandfulltrust");
  <D.17106>:
  D.17036 = secman.securitymanager;
  D.17107 = mono_class_get_method_from_name (D.17036, "LinkDemandSecurityException", 2);
  secman.linkdemandsecurityexception = D.17107;
  D.17108 = secman.linkdemandsecurityexception;
  D.17109 = D.17108 == 0B;
  D.17110 = (long int) D.17109;
  D.17111 = __builtin_expect (D.17110, 0);
  if (D.17111 != 0) goto <D.17112>; else goto <D.17113>;
  <D.17112>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 97, "secman.linkdemandsecurityexception");
  <D.17113>:
  D.17040 = mono_defaults.corlib;
  D.17114 = mono_class_from_name (D.17040, "System.Security", "AllowPartiallyTrustedCallersAttribute");
  secman.allowpartiallytrustedcallers = D.17114;
  D.17115 = secman.allowpartiallytrustedcallers;
  D.17116 = D.17115 == 0B;
  D.17117 = (long int) D.17116;
  D.17118 = __builtin_expect (D.17117, 0);
  if (D.17118 != 0) goto <D.17119>; else goto <D.17120>;
  <D.17119>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 101, "secman.allowpartiallytrustedcallers");
  <D.17120>:
  D.17040 = mono_defaults.corlib;
  D.17121 = mono_class_from_name (D.17040, "System.Security", "SuppressUnmanagedCodeSecurityAttribute");
  secman.suppressunmanagedcodesecurity = D.17121;
  D.17122 = secman.suppressunmanagedcodesecurity;
  D.17123 = D.17122 == 0B;
  D.17124 = (long int) D.17123;
  D.17125 = __builtin_expect (D.17124, 0);
  if (D.17125 != 0) goto <D.17126>; else goto <D.17127>;
  <D.17126>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 105, "secman.suppressunmanagedcodesecurity");
  <D.17127>:
  D.17039 = &secman;
  return D.17039;
}


mono_secman_inheritancedemand_class (struct MonoClass * klass, struct MonoClass * parent)
{
  unsigned char D.17129;
  struct MonoImage * D.17132;
  struct MonoImage * D.17133;
  struct MonoImage * D.17136;
  unsigned char D.17139;
  int D.17142;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.17129 = klass->exception_type;
      if (D.17129 != 0) goto <D.17130>; else goto <D.17131>;
      <D.17130>:
      return;
      <D.17131>:
      D.17132 = klass->image;
      D.17133 = mono_defaults.corlib;
      if (D.17132 == D.17133) goto <D.17134>; else goto <D.17135>;
      <D.17134>:
      D.17136 = parent->image;
      D.17133 = mono_defaults.corlib;
      if (D.17136 == D.17133) goto <D.17137>; else goto <D.17138>;
      <D.17137>:
      return;
      <D.17138>:
      <D.17135>:
      D.17139 = mono_declsec_get_inheritdemands_class (parent, &demands);
      if (D.17139 != 0) goto <D.17140>; else goto <D.17141>;
      <D.17140>:
      D.17142 = mono_secman_inheritance_check (klass, &demands);
      if (D.17142 == 0) goto <D.17143>; else goto <D.17144>;
      <D.17143>:
      mono_class_set_failure (klass, 2, 0B);
      <D.17144>:
      <D.17141>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


mono_secman_inheritance_check (struct MonoClass * klass, struct MonoDeclSecurityActions * demands)
{
  struct MonoImage * D.17148;
  struct MonoAppDomain * D.17149;
  struct MonoMethod * D.17150;
  gboolean D.17151;
  void * D.17152;
  unsigned char D.17153;
  struct MonoSecurityManager * secman;
  struct MonoDomain * domain;
  struct MonoAssembly * assembly;
  struct MonoReflectionAssembly * refass;
  struct MonoObject * res;
  void * args[3];

  try
    {
      secman = mono_security_manager_get_methods ();
      domain = mono_domain_get ();
      D.17148 = klass->image;
      assembly = mono_image_get_assembly (D.17148);
      refass = mono_assembly_get_object (domain, assembly);
      D.17149 = domain->domain;
      args[0] = D.17149;
      args[1] = refass;
      args[2] = demands;
      D.17150 = secman->inheritancedemand;
      res = mono_runtime_invoke (D.17150, 0B, &args, 0B);
      D.17152 = mono_object_unbox (res);
      D.17153 = MEM[(MonoBoolean *)D.17152];
      D.17151 = (gboolean) D.17153;
      return D.17151;
    }
  finally
    {
      args = {CLOBBER};
    }
}


mono_secman_inheritancedemand_method (struct MonoMethod * override, struct MonoMethod * base)
{
  struct MonoClass * D.17156;
  unsigned char D.17157;
  struct MonoImage * D.17160;
  struct MonoImage * D.17161;
  struct MonoClass * D.17164;
  struct MonoImage * D.17165;
  unsigned char D.17168;
  int D.17171;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.17156 = override->klass;
      D.17157 = D.17156->exception_type;
      if (D.17157 != 0) goto <D.17158>; else goto <D.17159>;
      <D.17158>:
      return;
      <D.17159>:
      D.17156 = override->klass;
      D.17160 = D.17156->image;
      D.17161 = mono_defaults.corlib;
      if (D.17160 == D.17161) goto <D.17162>; else goto <D.17163>;
      <D.17162>:
      D.17164 = base->klass;
      D.17165 = D.17164->image;
      D.17161 = mono_defaults.corlib;
      if (D.17165 == D.17161) goto <D.17166>; else goto <D.17167>;
      <D.17166>:
      return;
      <D.17167>:
      <D.17163>:
      D.17168 = mono_declsec_get_inheritdemands_method (base, &demands);
      if (D.17168 != 0) goto <D.17169>; else goto <D.17170>;
      <D.17169>:
      D.17156 = override->klass;
      D.17171 = mono_secman_inheritance_check (D.17156, &demands);
      if (D.17171 == 0) goto <D.17172>; else goto <D.17173>;
      <D.17172>:
      D.17156 = override->klass;
      mono_class_set_failure (D.17156, 2, base);
      <D.17173>:
      <D.17170>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


mono_is_ecma_key (const char * publickey, int size)
{
  _Bool D.17179;
  _Bool D.17180;
  _Bool D.17181;
  const char * D.17183;
  char D.17184;
  gboolean D.17185;
  sizetype D.17186;
  const char * D.17187;
  char D.17188;
  int i;

  D.17179 = publickey == 0B;
  D.17180 = size != 16;
  D.17181 = D.17179 | D.17180;
  if (D.17181 != 0) goto <D.17177>; else goto <D.17182>;
  <D.17182>:
  D.17183 = publickey + 8;
  D.17184 = *D.17183;
  if (D.17184 != 4) goto <D.17177>; else goto <D.17178>;
  <D.17177>:
  D.17185 = 0;
  return D.17185;
  <D.17178>:
  i = 0;
  goto <D.17006>;
  <D.17005>:
  D.17186 = (sizetype) i;
  D.17187 = publickey + D.17186;
  D.17188 = *D.17187;
  if (D.17188 != 0) goto <D.17189>; else goto <D.17190>;
  <D.17189>:
  if (i != 8) goto <D.17191>; else goto <D.17192>;
  <D.17191>:
  D.17185 = 0;
  return D.17185;
  <D.17192>:
  <D.17190>:
  i = i + 1;
  <D.17006>:
  if (i < size) goto <D.17005>; else goto <D.17007>;
  <D.17007>:
  D.17185 = 1;
  return D.17185;
}


mono_get_context_capture_method ()
{
  unsigned char mono_security_manager_activated.1;
  struct MonoImage * D.17197;
  struct MonoAssembly * D.17198;
  short unsigned int D.17199;
  struct MonoMethod * D.17202;
  struct MonoClass * D.17203;
  struct MonoMethod * method.2;
  struct MonoMethod * method.3;
  static struct MonoMethod * method = 0B;

  mono_security_manager_activated.1 = mono_security_manager_activated;
  if (mono_security_manager_activated.1 == 0) goto <D.17195>; else goto <D.17196>;
  <D.17195>:
  D.17197 = mono_defaults.corlib;
  D.17198 = mono_image_get_assembly (D.17197);
  D.17199 = D.17198->aname.major;
  if (D.17199 <= 1) goto <D.17200>; else goto <D.17201>;
  <D.17200>:
  D.17202 = 0B;
  return D.17202;
  <D.17201>:
  <D.17196>:
  D.17203 = mono_defaults.executioncontext_class;
  if (D.17203 != 0B) goto <D.17204>; else goto <D.17205>;
  <D.17204>:
  method.2 = method;
  if (method.2 == 0B) goto <D.17207>; else goto <D.17208>;
  <D.17207>:
  D.17203 = mono_defaults.executioncontext_class;
  mono_class_init (D.17203);
  D.17203 = mono_defaults.executioncontext_class;
  method.3 = mono_class_get_method_from_name (D.17203, "Capture", 0);
  method = method.3;
  <D.17208>:
  <D.17205>:
  D.17202 = method;
  return D.17202;
}


ves_icall_System_Security_SecurityManager_get_SecurityEnabled ()
{
  unsigned char mono_security_manager_activated.4;
  MonoBoolean D.17214;
  <unnamed type> D.17215;
  _Bool D.17216;

  mono_security_manager_activated.4 = mono_security_manager_activated;
  if (mono_security_manager_activated.4 == 0) goto <D.17212>; else goto <D.17213>;
  <D.17212>:
  D.17215 = mono_security_get_mode ();
  D.17216 = D.17215 == 1;
  D.17214 = (MonoBoolean) D.17216;
  return D.17214;
  <D.17213>:
  D.17214 = mono_security_manager_enabled;
  return D.17214;
}


ves_icall_System_Security_SecurityManager_set_SecurityEnabled (MonoBoolean value)
{
  unsigned char mono_security_manager_activated.5;

  mono_security_manager_activated.5 = mono_security_manager_activated;
  if (mono_security_manager_activated.5 != 0) goto <D.17219>; else goto <D.17220>;
  <D.17219>:
  mono_security_manager_enabled = value;
  <D.17220>:
}


ves_icall_System_Security_SecurityManager_get_CheckExecutionRights ()
{
  unsigned char mono_security_manager_activated.6;
  MonoBoolean D.17224;

  mono_security_manager_activated.6 = mono_security_manager_activated;
  if (mono_security_manager_activated.6 == 0) goto <D.17222>; else goto <D.17223>;
  <D.17222>:
  D.17224 = 0;
  return D.17224;
  <D.17223>:
  D.17224 = mono_security_manager_execution;
  return D.17224;
}


ves_icall_System_Security_SecurityManager_set_CheckExecutionRights (MonoBoolean value)
{
  unsigned char mono_security_manager_activated.7;

  mono_security_manager_activated.7 = mono_security_manager_activated;
  if (mono_security_manager_activated.7 != 0) goto <D.17227>; else goto <D.17228>;
  <D.17227>:
  mono_security_manager_execution = value;
  <D.17228>:
}


ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (struct MonoReflectionMethod * m, struct MonoDeclSecurityActions * kactions, struct MonoDeclSecurityActions * mactions)
{
  unsigned char D.17229;
  unsigned char D.17230;
  _Bool D.17231;
  _Bool D.17232;
  _Bool D.17233;
  struct MonoClass * D.17236;
  short unsigned int D.17239;
  int D.17240;
  int D.17241;
  unsigned int D.17243;
  unsigned int D.17244;
  MonoBoolean D.17245;
  struct MonoMethod * method;

  method = m->method;
  D.17229 = BIT_FIELD_REF <*method, 8, 256>;
  D.17230 = D.17229 & 124;
  D.17231 = D.17230 == 24;
  D.17232 = D.17230 == 28;
  D.17233 = D.17231 | D.17232;
  if (D.17233 != 0) goto <D.17234>; else goto <D.17235>;
  <D.17234>:
  method = mono_marshal_method_from_wrapper (method);
  <D.17235>:
  D.17236 = method->klass;
  mono_class_init (D.17236);
  D.17239 = method->flags;
  D.17240 = (int) D.17239;
  D.17241 = D.17240 & 16384;
  if (D.17241 != 0) goto <D.17237>; else goto <D.17242>;
  <D.17242>:
  D.17236 = method->klass;
  D.17243 = D.17236->flags;
  D.17244 = D.17243 & 262144;
  if (D.17244 != 0) goto <D.17237>; else goto <D.17238>;
  <D.17237>:
  memset (kactions, 0, 48);
  memset (mactions, 0, 48);
  D.17245 = mono_declsec_get_linkdemands (method, kactions, mactions);
  return D.17245;
  <D.17238>:
  D.17245 = 0;
  return D.17245;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.17249;
  int D.17254;
  void * D.17256;
  long unsigned int D.17257;

  D.17249 = __builtin_constant_p (__len);
  if (D.17249 != 0) goto <D.17250>; else goto <D.17251>;
  <D.17250>:
  if (__len == 0) goto <D.17252>; else goto <D.17253>;
  <D.17252>:
  D.17254 = __builtin_constant_p (__ch);
  if (D.17254 == 0) goto <D.17247>; else goto <D.17255>;
  <D.17255>:
  if (__ch != 0) goto <D.17247>; else goto <D.17248>;
  <D.17247>:
  __warn_memset_zero_len ();
  D.17256 = __dest;
  return D.17256;
  <D.17248>:
  <D.17253>:
  <D.17251>:
  D.17257 = __builtin_object_size (__dest, 0);
  D.17256 = __builtin___memset_chk (__dest, __ch, __len, D.17257);
  return D.17256;
}


