mono_security_set_mode (MonoSecurityMode mode)
{
  mono_security_mode = mode;
}


mono_security_get_mode ()
{
  MonoSecurityMode D.19218;

  D.19218 = mono_security_mode;
  return D.19218;
}


mono_activate_security_manager ()
{
  mono_security_manager_activated = 1;
}


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

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


mono_security_manager_get_methods ()
{
  struct MonoClass * D.19223;
  struct MonoSecurityManager * D.19226;
  struct MonoImage * D.19227;
  struct MonoClass * D.19228;
  _Bool D.19229;
  long int D.19230;
  long int D.19231;
  unsigned char D.19234;
  unsigned char D.19235;
  struct MonoMethod * D.19238;
  struct MonoMethod * D.19239;
  _Bool D.19240;
  long int D.19241;
  long int D.19242;
  struct MonoMethod * D.19245;
  struct MonoMethod * D.19246;
  _Bool D.19247;
  long int D.19248;
  long int D.19249;
  struct MonoMethod * D.19252;
  struct MonoMethod * D.19253;
  _Bool D.19254;
  long int D.19255;
  long int D.19256;
  struct MonoMethod * D.19259;
  struct MonoMethod * D.19260;
  _Bool D.19261;
  long int D.19262;
  long int D.19263;
  struct MonoMethod * D.19266;
  struct MonoMethod * D.19267;
  _Bool D.19268;
  long int D.19269;
  long int D.19270;
  struct MonoMethod * D.19273;
  struct MonoMethod * D.19274;
  _Bool D.19275;
  long int D.19276;
  long int D.19277;
  struct MonoMethod * D.19280;
  struct MonoMethod * D.19281;
  _Bool D.19282;
  long int D.19283;
  long int D.19284;
  struct MonoMethod * D.19287;
  struct MonoMethod * D.19288;
  _Bool D.19289;
  long int D.19290;
  long int D.19291;
  struct MonoMethod * D.19294;
  struct MonoMethod * D.19295;
  _Bool D.19296;
  long int D.19297;
  long int D.19298;
  struct MonoClass * D.19301;
  struct MonoClass * D.19302;
  _Bool D.19303;
  long int D.19304;
  long int D.19305;
  struct MonoClass * D.19308;
  struct MonoClass * D.19309;
  _Bool D.19310;
  long int D.19311;
  long int D.19312;

  D.19223 = secman.securitymanager;
  if (D.19223 != 0B) goto <D.19224>; else goto <D.19225>;
  <D.19224>:
  D.19226 = &secman;
  return D.19226;
  <D.19225>:
  D.19227 = mono_defaults.corlib;
  D.19228 = mono_class_from_name (D.19227, "System.Security", "SecurityManager");
  secman.securitymanager = D.19228;
  D.19223 = secman.securitymanager;
  D.19229 = D.19223 == 0B;
  D.19230 = (long int) D.19229;
  D.19231 = __builtin_expect (D.19230, 0);
  if (D.19231 != 0) goto <D.19232>; else goto <D.19233>;
  <D.19232>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 59, "secman.securitymanager");
  <D.19233>:
  D.19223 = secman.securitymanager;
  D.19234 = BIT_FIELD_REF <*D.19223, 8, 160>;
  D.19235 = D.19234 & 1;
  if (D.19235 == 0) goto <D.19236>; else goto <D.19237>;
  <D.19236>:
  D.19223 = secman.securitymanager;
  mono_class_init (D.19223);
  <D.19237>:
  D.19223 = secman.securitymanager;
  D.19238 = mono_class_get_method_from_name (D.19223, "InternalDemand", 2);
  secman.demand = D.19238;
  D.19239 = secman.demand;
  D.19240 = D.19239 == 0B;
  D.19241 = (long int) D.19240;
  D.19242 = __builtin_expect (D.19241, 0);
  if (D.19242 != 0) goto <D.19243>; else goto <D.19244>;
  <D.19243>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 65, "secman.demand");
  <D.19244>:
  D.19223 = secman.securitymanager;
  D.19245 = mono_class_get_method_from_name (D.19223, "InternalDemandChoice", 2);
  secman.demandchoice = D.19245;
  D.19246 = secman.demandchoice;
  D.19247 = D.19246 == 0B;
  D.19248 = (long int) D.19247;
  D.19249 = __builtin_expect (D.19248, 0);
  if (D.19249 != 0) goto <D.19250>; else goto <D.19251>;
  <D.19250>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 69, "secman.demandchoice");
  <D.19251>:
  D.19223 = secman.securitymanager;
  D.19252 = mono_class_get_method_from_name (D.19223, "DemandUnmanaged", 0);
  secman.demandunmanaged = D.19252;
  D.19253 = secman.demandunmanaged;
  D.19254 = D.19253 == 0B;
  D.19255 = (long int) D.19254;
  D.19256 = __builtin_expect (D.19255, 0);
  if (D.19256 != 0) goto <D.19257>; else goto <D.19258>;
  <D.19257>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 73, "secman.demandunmanaged");
  <D.19258>:
  D.19223 = secman.securitymanager;
  D.19259 = mono_class_get_method_from_name (D.19223, "InheritanceDemand", 3);
  secman.inheritancedemand = D.19259;
  D.19260 = secman.inheritancedemand;
  D.19261 = D.19260 == 0B;
  D.19262 = (long int) D.19261;
  D.19263 = __builtin_expect (D.19262, 0);
  if (D.19263 != 0) goto <D.19264>; else goto <D.19265>;
  <D.19264>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 77, "secman.inheritancedemand");
  <D.19265>:
  D.19223 = secman.securitymanager;
  D.19266 = mono_class_get_method_from_name (D.19223, "InheritanceDemandSecurityException", 4);
  secman.inheritsecurityexception = D.19266;
  D.19267 = secman.inheritsecurityexception;
  D.19268 = D.19267 == 0B;
  D.19269 = (long int) D.19268;
  D.19270 = __builtin_expect (D.19269, 0);
  if (D.19270 != 0) goto <D.19271>; else goto <D.19272>;
  <D.19271>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 81, "secman.inheritsecurityexception");
  <D.19272>:
  D.19223 = secman.securitymanager;
  D.19273 = mono_class_get_method_from_name (D.19223, "LinkDemand", 3);
  secman.linkdemand = D.19273;
  D.19274 = secman.linkdemand;
  D.19275 = D.19274 == 0B;
  D.19276 = (long int) D.19275;
  D.19277 = __builtin_expect (D.19276, 0);
  if (D.19277 != 0) goto <D.19278>; else goto <D.19279>;
  <D.19278>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 85, "secman.linkdemand");
  <D.19279>:
  D.19223 = secman.securitymanager;
  D.19280 = mono_class_get_method_from_name (D.19223, "LinkDemandUnmanaged", 1);
  secman.linkdemandunmanaged = D.19280;
  D.19281 = secman.linkdemandunmanaged;
  D.19282 = D.19281 == 0B;
  D.19283 = (long int) D.19282;
  D.19284 = __builtin_expect (D.19283, 0);
  if (D.19284 != 0) goto <D.19285>; else goto <D.19286>;
  <D.19285>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 89, "secman.linkdemandunmanaged");
  <D.19286>:
  D.19223 = secman.securitymanager;
  D.19287 = mono_class_get_method_from_name (D.19223, "LinkDemandFullTrust", 1);
  secman.linkdemandfulltrust = D.19287;
  D.19288 = secman.linkdemandfulltrust;
  D.19289 = D.19288 == 0B;
  D.19290 = (long int) D.19289;
  D.19291 = __builtin_expect (D.19290, 0);
  if (D.19291 != 0) goto <D.19292>; else goto <D.19293>;
  <D.19292>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 93, "secman.linkdemandfulltrust");
  <D.19293>:
  D.19223 = secman.securitymanager;
  D.19294 = mono_class_get_method_from_name (D.19223, "LinkDemandSecurityException", 2);
  secman.linkdemandsecurityexception = D.19294;
  D.19295 = secman.linkdemandsecurityexception;
  D.19296 = D.19295 == 0B;
  D.19297 = (long int) D.19296;
  D.19298 = __builtin_expect (D.19297, 0);
  if (D.19298 != 0) goto <D.19299>; else goto <D.19300>;
  <D.19299>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 97, "secman.linkdemandsecurityexception");
  <D.19300>:
  D.19227 = mono_defaults.corlib;
  D.19301 = mono_class_from_name (D.19227, "System.Security", "AllowPartiallyTrustedCallersAttribute");
  secman.allowpartiallytrustedcallers = D.19301;
  D.19302 = secman.allowpartiallytrustedcallers;
  D.19303 = D.19302 == 0B;
  D.19304 = (long int) D.19303;
  D.19305 = __builtin_expect (D.19304, 0);
  if (D.19305 != 0) goto <D.19306>; else goto <D.19307>;
  <D.19306>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 101, "secman.allowpartiallytrustedcallers");
  <D.19307>:
  D.19227 = mono_defaults.corlib;
  D.19308 = mono_class_from_name (D.19227, "System.Security", "SuppressUnmanagedCodeSecurityAttribute");
  secman.suppressunmanagedcodesecurity = D.19308;
  D.19309 = secman.suppressunmanagedcodesecurity;
  D.19310 = D.19309 == 0B;
  D.19311 = (long int) D.19310;
  D.19312 = __builtin_expect (D.19311, 0);
  if (D.19312 != 0) goto <D.19313>; else goto <D.19314>;
  <D.19313>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 105, "secman.suppressunmanagedcodesecurity");
  <D.19314>:
  D.19226 = &secman;
  return D.19226;
}


mono_secman_inheritancedemand_class (struct MonoClass * klass, struct MonoClass * parent)
{
  unsigned char D.19316;
  struct MonoImage * D.19319;
  struct MonoImage * D.19320;
  struct MonoImage * D.19323;
  unsigned char D.19326;
  int D.19329;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.19316 = klass->exception_type;
      if (D.19316 != 0) goto <D.19317>; else goto <D.19318>;
      <D.19317>:
      return;
      <D.19318>:
      D.19319 = klass->image;
      D.19320 = mono_defaults.corlib;
      if (D.19319 == D.19320) goto <D.19321>; else goto <D.19322>;
      <D.19321>:
      D.19323 = parent->image;
      D.19320 = mono_defaults.corlib;
      if (D.19323 == D.19320) goto <D.19324>; else goto <D.19325>;
      <D.19324>:
      return;
      <D.19325>:
      <D.19322>:
      D.19326 = mono_declsec_get_inheritdemands_class (parent, &demands);
      if (D.19326 != 0) goto <D.19327>; else goto <D.19328>;
      <D.19327>:
      D.19329 = mono_secman_inheritance_check (klass, &demands);
      if (D.19329 == 0) goto <D.19330>; else goto <D.19331>;
      <D.19330>:
      mono_class_set_failure (klass, 2, 0B);
      <D.19331>:
      <D.19328>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


mono_secman_inheritance_check (struct MonoClass * klass, struct MonoDeclSecurityActions * demands)
{
  struct MonoImage * D.19335;
  struct MonoAppDomain * D.19336;
  struct MonoMethod * D.19337;
  gboolean D.19338;
  void * D.19339;
  unsigned char D.19340;
  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.19335 = klass->image;
      assembly = mono_image_get_assembly (D.19335);
      refass = mono_assembly_get_object (domain, assembly);
      D.19336 = domain->domain;
      args[0] = D.19336;
      args[1] = refass;
      args[2] = demands;
      D.19337 = secman->inheritancedemand;
      res = mono_runtime_invoke (D.19337, 0B, &args, 0B);
      D.19339 = mono_object_unbox (res);
      D.19340 = MEM[(MonoBoolean *)D.19339];
      D.19338 = (gboolean) D.19340;
      return D.19338;
    }
  finally
    {
      args = {CLOBBER};
    }
}


mono_secman_inheritancedemand_method (struct MonoMethod * override, struct MonoMethod * base)
{
  struct MonoClass * D.19343;
  unsigned char D.19344;
  struct MonoImage * D.19347;
  struct MonoImage * D.19348;
  struct MonoClass * D.19351;
  struct MonoImage * D.19352;
  unsigned char D.19355;
  int D.19358;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.19343 = override->klass;
      D.19344 = D.19343->exception_type;
      if (D.19344 != 0) goto <D.19345>; else goto <D.19346>;
      <D.19345>:
      return;
      <D.19346>:
      D.19343 = override->klass;
      D.19347 = D.19343->image;
      D.19348 = mono_defaults.corlib;
      if (D.19347 == D.19348) goto <D.19349>; else goto <D.19350>;
      <D.19349>:
      D.19351 = base->klass;
      D.19352 = D.19351->image;
      D.19348 = mono_defaults.corlib;
      if (D.19352 == D.19348) goto <D.19353>; else goto <D.19354>;
      <D.19353>:
      return;
      <D.19354>:
      <D.19350>:
      D.19355 = mono_declsec_get_inheritdemands_method (base, &demands);
      if (D.19355 != 0) goto <D.19356>; else goto <D.19357>;
      <D.19356>:
      D.19343 = override->klass;
      D.19358 = mono_secman_inheritance_check (D.19343, &demands);
      if (D.19358 == 0) goto <D.19359>; else goto <D.19360>;
      <D.19359>:
      D.19343 = override->klass;
      mono_class_set_failure (D.19343, 2, base);
      <D.19360>:
      <D.19357>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


mono_is_ecma_key (const char * publickey, int size)
{
  _Bool D.19366;
  _Bool D.19367;
  _Bool D.19368;
  const char * D.19370;
  char D.19371;
  gboolean D.19372;
  sizetype i.1;
  const char * D.19374;
  char D.19375;
  int i;

  D.19366 = publickey == 0B;
  D.19367 = size != 16;
  D.19368 = D.19366 | D.19367;
  if (D.19368 != 0) goto <D.19364>; else goto <D.19369>;
  <D.19369>:
  D.19370 = publickey + 8;
  D.19371 = *D.19370;
  if (D.19371 != 4) goto <D.19364>; else goto <D.19365>;
  <D.19364>:
  D.19372 = 0;
  return D.19372;
  <D.19365>:
  i = 0;
  goto <D.19191>;
  <D.19190>:
  i.1 = (sizetype) i;
  D.19374 = publickey + i.1;
  D.19375 = *D.19374;
  if (D.19375 != 0) goto <D.19376>; else goto <D.19377>;
  <D.19376>:
  if (i != 8) goto <D.19378>; else goto <D.19379>;
  <D.19378>:
  D.19372 = 0;
  return D.19372;
  <D.19379>:
  <D.19377>:
  i = i + 1;
  <D.19191>:
  if (i < size) goto <D.19190>; else goto <D.19192>;
  <D.19192>:
  D.19372 = 1;
  return D.19372;
}


mono_get_context_capture_method ()
{
  unsigned char mono_security_manager_activated.2;
  struct MonoImage * D.19384;
  struct MonoAssembly * D.19385;
  short unsigned int D.19386;
  struct MonoMethod * D.19389;
  struct MonoClass * D.19390;
  struct MonoMethod * method.3;
  struct MonoMethod * method.4;
  static struct MonoMethod * method = 0B;

  mono_security_manager_activated.2 = mono_security_manager_activated;
  if (mono_security_manager_activated.2 == 0) goto <D.19382>; else goto <D.19383>;
  <D.19382>:
  D.19384 = mono_defaults.corlib;
  D.19385 = mono_image_get_assembly (D.19384);
  D.19386 = D.19385->aname.major;
  if (D.19386 <= 1) goto <D.19387>; else goto <D.19388>;
  <D.19387>:
  D.19389 = 0B;
  return D.19389;
  <D.19388>:
  <D.19383>:
  D.19390 = mono_defaults.executioncontext_class;
  if (D.19390 != 0B) goto <D.19391>; else goto <D.19392>;
  <D.19391>:
  method.3 = method;
  if (method.3 == 0B) goto <D.19394>; else goto <D.19395>;
  <D.19394>:
  D.19390 = mono_defaults.executioncontext_class;
  mono_class_init (D.19390);
  D.19390 = mono_defaults.executioncontext_class;
  method.4 = mono_class_get_method_from_name (D.19390, "Capture", 0);
  method = method.4;
  <D.19395>:
  <D.19392>:
  D.19389 = method;
  return D.19389;
}


ves_icall_System_Security_SecurityManager_get_SecurityEnabled ()
{
  unsigned char mono_security_manager_activated.5;
  MonoBoolean D.19401;
  <unnamed type> D.19402;
  _Bool D.19403;

  mono_security_manager_activated.5 = mono_security_manager_activated;
  if (mono_security_manager_activated.5 == 0) goto <D.19399>; else goto <D.19400>;
  <D.19399>:
  D.19402 = mono_security_get_mode ();
  D.19403 = D.19402 == 1;
  D.19401 = (MonoBoolean) D.19403;
  return D.19401;
  <D.19400>:
  D.19401 = mono_security_manager_enabled;
  return D.19401;
}


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

  mono_security_manager_activated.6 = mono_security_manager_activated;
  if (mono_security_manager_activated.6 != 0) goto <D.19406>; else goto <D.19407>;
  <D.19406>:
  mono_security_manager_enabled = value;
  <D.19407>:
}


ves_icall_System_Security_SecurityManager_get_CheckExecutionRights ()
{
  unsigned char mono_security_manager_activated.7;
  MonoBoolean D.19411;

  mono_security_manager_activated.7 = mono_security_manager_activated;
  if (mono_security_manager_activated.7 == 0) goto <D.19409>; else goto <D.19410>;
  <D.19409>:
  D.19411 = 0;
  return D.19411;
  <D.19410>:
  D.19411 = mono_security_manager_execution;
  return D.19411;
}


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

  mono_security_manager_activated.8 = mono_security_manager_activated;
  if (mono_security_manager_activated.8 != 0) goto <D.19414>; else goto <D.19415>;
  <D.19414>:
  mono_security_manager_execution = value;
  <D.19415>:
}


ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (struct MonoReflectionMethod * m, struct MonoDeclSecurityActions * kactions, struct MonoDeclSecurityActions * mactions)
{
  unsigned char D.19416;
  unsigned char D.19417;
  _Bool D.19418;
  _Bool D.19419;
  _Bool D.19420;
  struct MonoClass * D.19423;
  short unsigned int D.19426;
  int D.19427;
  int D.19428;
  unsigned int D.19430;
  unsigned int D.19431;
  MonoBoolean D.19432;
  struct MonoMethod * method;

  method = m->method;
  D.19416 = BIT_FIELD_REF <*method, 8, 160>;
  D.19417 = D.19416 & 124;
  D.19418 = D.19417 == 24;
  D.19419 = D.19417 == 28;
  D.19420 = D.19418 | D.19419;
  if (D.19420 != 0) goto <D.19421>; else goto <D.19422>;
  <D.19421>:
  method = mono_marshal_method_from_wrapper (method);
  <D.19422>:
  D.19423 = method->klass;
  mono_class_init (D.19423);
  D.19426 = method->flags;
  D.19427 = (int) D.19426;
  D.19428 = D.19427 & 16384;
  if (D.19428 != 0) goto <D.19424>; else goto <D.19429>;
  <D.19429>:
  D.19423 = method->klass;
  D.19430 = D.19423->flags;
  D.19431 = D.19430 & 262144;
  if (D.19431 != 0) goto <D.19424>; else goto <D.19425>;
  <D.19424>:
  memset (kactions, 0, 36);
  memset (mactions, 0, 36);
  D.19432 = mono_declsec_get_linkdemands (method, kactions, mactions);
  return D.19432;
  <D.19425>:
  D.19432 = 0;
  return D.19432;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.19436;
  int D.19441;
  void * D.19443;
  unsigned int D.19444;

  D.19436 = __builtin_constant_p (__len);
  if (D.19436 != 0) goto <D.19437>; else goto <D.19438>;
  <D.19437>:
  if (__len == 0) goto <D.19439>; else goto <D.19440>;
  <D.19439>:
  D.19441 = __builtin_constant_p (__ch);
  if (D.19441 == 0) goto <D.19434>; else goto <D.19442>;
  <D.19442>:
  if (__ch != 0) goto <D.19434>; else goto <D.19435>;
  <D.19434>:
  __warn_memset_zero_len ();
  D.19443 = __dest;
  return D.19443;
  <D.19435>:
  <D.19440>:
  <D.19438>:
  D.19444 = __builtin_object_size (__dest, 0);
  D.19443 = __builtin___memset_chk (__dest, __ch, __len, D.19444);
  return D.19443;
}


