mono_security_set_mode (MonoSecurityMode mode)
{
  mono_security_mode = mode;
}


mono_security_get_mode ()
{
  MonoSecurityMode D.17561;

  D.17561 = mono_security_mode;
  return D.17561;
}


mono_activate_security_manager ()
{
  mono_security_manager_activated = 1;
}


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

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


mono_security_manager_get_methods ()
{
  struct MonoClass * D.17566;
  struct MonoSecurityManager * D.17569;
  struct MonoImage * D.17570;
  struct MonoClass * D.17571;
  _Bool D.17572;
  long int D.17573;
  long int D.17574;
  long unsigned int D.17577;
  long unsigned int D.17578;
  struct MonoMethod * D.17581;
  struct MonoMethod * D.17582;
  _Bool D.17583;
  long int D.17584;
  long int D.17585;
  struct MonoMethod * D.17588;
  struct MonoMethod * D.17589;
  _Bool D.17590;
  long int D.17591;
  long int D.17592;
  struct MonoMethod * D.17595;
  struct MonoMethod * D.17596;
  _Bool D.17597;
  long int D.17598;
  long int D.17599;
  struct MonoMethod * D.17602;
  struct MonoMethod * D.17603;
  _Bool D.17604;
  long int D.17605;
  long int D.17606;
  struct MonoMethod * D.17609;
  struct MonoMethod * D.17610;
  _Bool D.17611;
  long int D.17612;
  long int D.17613;
  struct MonoMethod * D.17616;
  struct MonoMethod * D.17617;
  _Bool D.17618;
  long int D.17619;
  long int D.17620;
  struct MonoMethod * D.17623;
  struct MonoMethod * D.17624;
  _Bool D.17625;
  long int D.17626;
  long int D.17627;
  struct MonoMethod * D.17630;
  struct MonoMethod * D.17631;
  _Bool D.17632;
  long int D.17633;
  long int D.17634;
  struct MonoMethod * D.17637;
  struct MonoMethod * D.17638;
  _Bool D.17639;
  long int D.17640;
  long int D.17641;
  struct MonoClass * D.17644;
  struct MonoClass * D.17645;
  _Bool D.17646;
  long int D.17647;
  long int D.17648;
  struct MonoClass * D.17651;
  struct MonoClass * D.17652;
  _Bool D.17653;
  long int D.17654;
  long int D.17655;

  D.17566 = secman.securitymanager;
  if (D.17566 != 0B) goto <D.17567>; else goto <D.17568>;
  <D.17567>:
  D.17569 = &secman;
  return D.17569;
  <D.17568>:
  D.17570 = mono_defaults.corlib;
  D.17571 = mono_class_from_name (D.17570, "System.Security", "SecurityManager");
  secman.securitymanager = D.17571;
  D.17566 = secman.securitymanager;
  D.17572 = D.17566 == 0B;
  D.17573 = (long int) D.17572;
  D.17574 = __builtin_expect (D.17573, 0);
  if (D.17574 != 0) goto <D.17575>; else goto <D.17576>;
  <D.17575>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 59, "secman.securitymanager");
  <D.17576>:
  D.17566 = secman.securitymanager;
  D.17577 = BIT_FIELD_REF <*D.17566, 64, 256>;
  D.17578 = D.17577 & 1;
  if (D.17578 == 0) goto <D.17579>; else goto <D.17580>;
  <D.17579>:
  D.17566 = secman.securitymanager;
  mono_class_init (D.17566);
  <D.17580>:
  D.17566 = secman.securitymanager;
  D.17581 = mono_class_get_method_from_name (D.17566, "InternalDemand", 2);
  secman.demand = D.17581;
  D.17582 = secman.demand;
  D.17583 = D.17582 == 0B;
  D.17584 = (long int) D.17583;
  D.17585 = __builtin_expect (D.17584, 0);
  if (D.17585 != 0) goto <D.17586>; else goto <D.17587>;
  <D.17586>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 65, "secman.demand");
  <D.17587>:
  D.17566 = secman.securitymanager;
  D.17588 = mono_class_get_method_from_name (D.17566, "InternalDemandChoice", 2);
  secman.demandchoice = D.17588;
  D.17589 = secman.demandchoice;
  D.17590 = D.17589 == 0B;
  D.17591 = (long int) D.17590;
  D.17592 = __builtin_expect (D.17591, 0);
  if (D.17592 != 0) goto <D.17593>; else goto <D.17594>;
  <D.17593>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 69, "secman.demandchoice");
  <D.17594>:
  D.17566 = secman.securitymanager;
  D.17595 = mono_class_get_method_from_name (D.17566, "DemandUnmanaged", 0);
  secman.demandunmanaged = D.17595;
  D.17596 = secman.demandunmanaged;
  D.17597 = D.17596 == 0B;
  D.17598 = (long int) D.17597;
  D.17599 = __builtin_expect (D.17598, 0);
  if (D.17599 != 0) goto <D.17600>; else goto <D.17601>;
  <D.17600>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 73, "secman.demandunmanaged");
  <D.17601>:
  D.17566 = secman.securitymanager;
  D.17602 = mono_class_get_method_from_name (D.17566, "InheritanceDemand", 3);
  secman.inheritancedemand = D.17602;
  D.17603 = secman.inheritancedemand;
  D.17604 = D.17603 == 0B;
  D.17605 = (long int) D.17604;
  D.17606 = __builtin_expect (D.17605, 0);
  if (D.17606 != 0) goto <D.17607>; else goto <D.17608>;
  <D.17607>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 77, "secman.inheritancedemand");
  <D.17608>:
  D.17566 = secman.securitymanager;
  D.17609 = mono_class_get_method_from_name (D.17566, "InheritanceDemandSecurityException", 4);
  secman.inheritsecurityexception = D.17609;
  D.17610 = secman.inheritsecurityexception;
  D.17611 = D.17610 == 0B;
  D.17612 = (long int) D.17611;
  D.17613 = __builtin_expect (D.17612, 0);
  if (D.17613 != 0) goto <D.17614>; else goto <D.17615>;
  <D.17614>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 81, "secman.inheritsecurityexception");
  <D.17615>:
  D.17566 = secman.securitymanager;
  D.17616 = mono_class_get_method_from_name (D.17566, "LinkDemand", 3);
  secman.linkdemand = D.17616;
  D.17617 = secman.linkdemand;
  D.17618 = D.17617 == 0B;
  D.17619 = (long int) D.17618;
  D.17620 = __builtin_expect (D.17619, 0);
  if (D.17620 != 0) goto <D.17621>; else goto <D.17622>;
  <D.17621>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 85, "secman.linkdemand");
  <D.17622>:
  D.17566 = secman.securitymanager;
  D.17623 = mono_class_get_method_from_name (D.17566, "LinkDemandUnmanaged", 1);
  secman.linkdemandunmanaged = D.17623;
  D.17624 = secman.linkdemandunmanaged;
  D.17625 = D.17624 == 0B;
  D.17626 = (long int) D.17625;
  D.17627 = __builtin_expect (D.17626, 0);
  if (D.17627 != 0) goto <D.17628>; else goto <D.17629>;
  <D.17628>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 89, "secman.linkdemandunmanaged");
  <D.17629>:
  D.17566 = secman.securitymanager;
  D.17630 = mono_class_get_method_from_name (D.17566, "LinkDemandFullTrust", 1);
  secman.linkdemandfulltrust = D.17630;
  D.17631 = secman.linkdemandfulltrust;
  D.17632 = D.17631 == 0B;
  D.17633 = (long int) D.17632;
  D.17634 = __builtin_expect (D.17633, 0);
  if (D.17634 != 0) goto <D.17635>; else goto <D.17636>;
  <D.17635>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 93, "secman.linkdemandfulltrust");
  <D.17636>:
  D.17566 = secman.securitymanager;
  D.17637 = mono_class_get_method_from_name (D.17566, "LinkDemandSecurityException", 2);
  secman.linkdemandsecurityexception = D.17637;
  D.17638 = secman.linkdemandsecurityexception;
  D.17639 = D.17638 == 0B;
  D.17640 = (long int) D.17639;
  D.17641 = __builtin_expect (D.17640, 0);
  if (D.17641 != 0) goto <D.17642>; else goto <D.17643>;
  <D.17642>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 97, "secman.linkdemandsecurityexception");
  <D.17643>:
  D.17570 = mono_defaults.corlib;
  D.17644 = mono_class_from_name (D.17570, "System.Security", "AllowPartiallyTrustedCallersAttribute");
  secman.allowpartiallytrustedcallers = D.17644;
  D.17645 = secman.allowpartiallytrustedcallers;
  D.17646 = D.17645 == 0B;
  D.17647 = (long int) D.17646;
  D.17648 = __builtin_expect (D.17647, 0);
  if (D.17648 != 0) goto <D.17649>; else goto <D.17650>;
  <D.17649>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 101, "secman.allowpartiallytrustedcallers");
  <D.17650>:
  D.17570 = mono_defaults.corlib;
  D.17651 = mono_class_from_name (D.17570, "System.Security", "SuppressUnmanagedCodeSecurityAttribute");
  secman.suppressunmanagedcodesecurity = D.17651;
  D.17652 = secman.suppressunmanagedcodesecurity;
  D.17653 = D.17652 == 0B;
  D.17654 = (long int) D.17653;
  D.17655 = __builtin_expect (D.17654, 0);
  if (D.17655 != 0) goto <D.17656>; else goto <D.17657>;
  <D.17656>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 105, "secman.suppressunmanagedcodesecurity");
  <D.17657>:
  D.17569 = &secman;
  return D.17569;
}


mono_secman_inheritancedemand_class (struct MonoClass * klass, struct MonoClass * parent)
{
  unsigned char D.17659;
  struct MonoImage * D.17662;
  struct MonoImage * D.17663;
  struct MonoImage * D.17666;
  unsigned char D.17669;
  int D.17672;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.17659 = klass->exception_type;
      if (D.17659 != 0) goto <D.17660>; else goto <D.17661>;
      <D.17660>:
      return;
      <D.17661>:
      D.17662 = klass->image;
      D.17663 = mono_defaults.corlib;
      if (D.17662 == D.17663) goto <D.17664>; else goto <D.17665>;
      <D.17664>:
      D.17666 = parent->image;
      D.17663 = mono_defaults.corlib;
      if (D.17666 == D.17663) goto <D.17667>; else goto <D.17668>;
      <D.17667>:
      return;
      <D.17668>:
      <D.17665>:
      D.17669 = mono_declsec_get_inheritdemands_class (parent, &demands);
      if (D.17669 != 0) goto <D.17670>; else goto <D.17671>;
      <D.17670>:
      D.17672 = mono_secman_inheritance_check (klass, &demands);
      if (D.17672 == 0) goto <D.17673>; else goto <D.17674>;
      <D.17673>:
      mono_class_set_failure (klass, 2, 0B);
      <D.17674>:
      <D.17671>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


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


mono_secman_inheritancedemand_method (struct MonoMethod * override, struct MonoMethod * base)
{
  struct MonoClass * D.17686;
  unsigned char D.17687;
  struct MonoImage * D.17690;
  struct MonoImage * D.17691;
  struct MonoClass * D.17694;
  struct MonoImage * D.17695;
  unsigned char D.17698;
  int D.17701;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.17686 = override->klass;
      D.17687 = D.17686->exception_type;
      if (D.17687 != 0) goto <D.17688>; else goto <D.17689>;
      <D.17688>:
      return;
      <D.17689>:
      D.17686 = override->klass;
      D.17690 = D.17686->image;
      D.17691 = mono_defaults.corlib;
      if (D.17690 == D.17691) goto <D.17692>; else goto <D.17693>;
      <D.17692>:
      D.17694 = base->klass;
      D.17695 = D.17694->image;
      D.17691 = mono_defaults.corlib;
      if (D.17695 == D.17691) goto <D.17696>; else goto <D.17697>;
      <D.17696>:
      return;
      <D.17697>:
      <D.17693>:
      D.17698 = mono_declsec_get_inheritdemands_method (base, &demands);
      if (D.17698 != 0) goto <D.17699>; else goto <D.17700>;
      <D.17699>:
      D.17686 = override->klass;
      D.17701 = mono_secman_inheritance_check (D.17686, &demands);
      if (D.17701 == 0) goto <D.17702>; else goto <D.17703>;
      <D.17702>:
      D.17686 = override->klass;
      mono_class_set_failure (D.17686, 2, base);
      <D.17703>:
      <D.17700>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


mono_is_ecma_key (const char * publickey, int size)
{
  const char * D.17711;
  char D.17712;
  gboolean D.17713;
  sizetype D.17714;
  const char * D.17715;
  char D.17716;
  int i;

  if (publickey == 0B) goto <D.17707>; else goto <D.17709>;
  <D.17709>:
  if (size != 16) goto <D.17707>; else goto <D.17710>;
  <D.17710>:
  D.17711 = publickey + 8;
  D.17712 = *D.17711;
  if (D.17712 != 4) goto <D.17707>; else goto <D.17708>;
  <D.17707>:
  D.17713 = 0;
  return D.17713;
  <D.17708>:
  i = 0;
  goto <D.17536>;
  <D.17535>:
  D.17714 = (sizetype) i;
  D.17715 = publickey + D.17714;
  D.17716 = *D.17715;
  if (D.17716 != 0) goto <D.17717>; else goto <D.17718>;
  <D.17717>:
  if (i != 8) goto <D.17719>; else goto <D.17720>;
  <D.17719>:
  D.17713 = 0;
  return D.17713;
  <D.17720>:
  <D.17718>:
  i = i + 1;
  <D.17536>:
  if (i < size) goto <D.17535>; else goto <D.17537>;
  <D.17537>:
  D.17713 = 1;
  return D.17713;
}


mono_get_context_capture_method ()
{
  unsigned char mono_security_manager_activated.1;
  struct MonoImage * D.17725;
  struct MonoAssembly * D.17726;
  short unsigned int D.17727;
  struct MonoMethod * D.17730;
  struct MonoClass * D.17731;
  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.17723>; else goto <D.17724>;
  <D.17723>:
  D.17725 = mono_defaults.corlib;
  D.17726 = mono_image_get_assembly (D.17725);
  D.17727 = D.17726->aname.major;
  if (D.17727 <= 1) goto <D.17728>; else goto <D.17729>;
  <D.17728>:
  D.17730 = 0B;
  return D.17730;
  <D.17729>:
  <D.17724>:
  D.17731 = mono_defaults.executioncontext_class;
  if (D.17731 != 0B) goto <D.17732>; else goto <D.17733>;
  <D.17732>:
  method.2 = method;
  if (method.2 == 0B) goto <D.17735>; else goto <D.17736>;
  <D.17735>:
  D.17731 = mono_defaults.executioncontext_class;
  mono_class_init (D.17731);
  D.17731 = mono_defaults.executioncontext_class;
  method.3 = mono_class_get_method_from_name (D.17731, "Capture", 0);
  method = method.3;
  <D.17736>:
  <D.17733>:
  D.17730 = method;
  return D.17730;
}


ves_icall_System_Security_SecurityManager_get_SecurityEnabled ()
{
  unsigned char mono_security_manager_activated.4;
  MonoBoolean D.17742;
  <unnamed type> D.17743;
  _Bool D.17744;

  mono_security_manager_activated.4 = mono_security_manager_activated;
  if (mono_security_manager_activated.4 == 0) goto <D.17740>; else goto <D.17741>;
  <D.17740>:
  D.17743 = mono_security_get_mode ();
  D.17744 = D.17743 == 1;
  D.17742 = (MonoBoolean) D.17744;
  return D.17742;
  <D.17741>:
  D.17742 = mono_security_manager_enabled;
  return D.17742;
}


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.17747>; else goto <D.17748>;
  <D.17747>:
  mono_security_manager_enabled = value;
  <D.17748>:
}


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

  mono_security_manager_activated.6 = mono_security_manager_activated;
  if (mono_security_manager_activated.6 == 0) goto <D.17750>; else goto <D.17751>;
  <D.17750>:
  D.17752 = 0;
  return D.17752;
  <D.17751>:
  D.17752 = mono_security_manager_execution;
  return D.17752;
}


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.17755>; else goto <D.17756>;
  <D.17755>:
  mono_security_manager_execution = value;
  <D.17756>:
}


ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (struct MonoReflectionMethod * m, struct MonoDeclSecurityActions * kactions, struct MonoDeclSecurityActions * mactions)
{
  long unsigned int D.17759;
  long unsigned int D.17760;
  struct MonoClass * D.17762;
  short unsigned int D.17765;
  int D.17766;
  int D.17767;
  unsigned int D.17769;
  unsigned int D.17770;
  MonoBoolean D.17771;
  struct MonoMethod * method;

  method = m->method;
  D.17759 = BIT_FIELD_REF <*method, 64, 256>;
  D.17760 = D.17759 & 124;
  if (D.17760 == 24) goto <D.17757>; else goto <D.17761>;
  <D.17761>:
  D.17759 = BIT_FIELD_REF <*method, 64, 256>;
  D.17760 = D.17759 & 124;
  if (D.17760 == 28) goto <D.17757>; else goto <D.17758>;
  <D.17757>:
  method = mono_marshal_method_from_wrapper (method);
  <D.17758>:
  D.17762 = method->klass;
  mono_class_init (D.17762);
  D.17765 = method->flags;
  D.17766 = (int) D.17765;
  D.17767 = D.17766 & 16384;
  if (D.17767 != 0) goto <D.17763>; else goto <D.17768>;
  <D.17768>:
  D.17762 = method->klass;
  D.17769 = D.17762->flags;
  D.17770 = D.17769 & 262144;
  if (D.17770 != 0) goto <D.17763>; else goto <D.17764>;
  <D.17763>:
  memset (kactions, 0, 48);
  memset (mactions, 0, 48);
  D.17771 = mono_declsec_get_linkdemands (method, kactions, mactions);
  return D.17771;
  <D.17764>:
  D.17771 = 0;
  return D.17771;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.17775;
  int D.17780;
  void * D.17782;
  long unsigned int D.17783;

  D.17775 = __builtin_constant_p (__len);
  if (D.17775 != 0) goto <D.17776>; else goto <D.17777>;
  <D.17776>:
  if (__len == 0) goto <D.17778>; else goto <D.17779>;
  <D.17778>:
  D.17780 = __builtin_constant_p (__ch);
  if (D.17780 == 0) goto <D.17773>; else goto <D.17781>;
  <D.17781>:
  if (__ch != 0) goto <D.17773>; else goto <D.17774>;
  <D.17773>:
  __warn_memset_zero_len ();
  D.17782 = __dest;
  return D.17782;
  <D.17774>:
  <D.17779>:
  <D.17777>:
  D.17783 = __builtin_object_size (__dest, 0);
  D.17782 = __builtin___memset_chk (__dest, __ch, __len, D.17783);
  return D.17782;
}


