mono_security_set_mode (MonoSecurityMode mode)
{
  mono_security_mode = mode;
}


mono_security_get_mode ()
{
  MonoSecurityMode D.16633;

  D.16633 = mono_security_mode;
  return D.16633;
}


mono_activate_security_manager ()
{
  mono_security_manager_activated = 1;
}


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

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


mono_security_manager_get_methods ()
{
  struct MonoClass * D.16638;
  struct MonoSecurityManager * D.16641;
  struct MonoImage * D.16642;
  struct MonoClass * D.16643;
  _Bool D.16644;
  long int D.16645;
  long int D.16646;
  unsigned int D.16649;
  unsigned int D.16650;
  struct MonoMethod * D.16653;
  struct MonoMethod * D.16654;
  _Bool D.16655;
  long int D.16656;
  long int D.16657;
  struct MonoMethod * D.16660;
  struct MonoMethod * D.16661;
  _Bool D.16662;
  long int D.16663;
  long int D.16664;
  struct MonoMethod * D.16667;
  struct MonoMethod * D.16668;
  _Bool D.16669;
  long int D.16670;
  long int D.16671;
  struct MonoMethod * D.16674;
  struct MonoMethod * D.16675;
  _Bool D.16676;
  long int D.16677;
  long int D.16678;
  struct MonoMethod * D.16681;
  struct MonoMethod * D.16682;
  _Bool D.16683;
  long int D.16684;
  long int D.16685;
  struct MonoMethod * D.16688;
  struct MonoMethod * D.16689;
  _Bool D.16690;
  long int D.16691;
  long int D.16692;
  struct MonoMethod * D.16695;
  struct MonoMethod * D.16696;
  _Bool D.16697;
  long int D.16698;
  long int D.16699;
  struct MonoMethod * D.16702;
  struct MonoMethod * D.16703;
  _Bool D.16704;
  long int D.16705;
  long int D.16706;
  struct MonoMethod * D.16709;
  struct MonoMethod * D.16710;
  _Bool D.16711;
  long int D.16712;
  long int D.16713;
  struct MonoClass * D.16716;
  struct MonoClass * D.16717;
  _Bool D.16718;
  long int D.16719;
  long int D.16720;
  struct MonoClass * D.16723;
  struct MonoClass * D.16724;
  _Bool D.16725;
  long int D.16726;
  long int D.16727;

  D.16638 = secman.securitymanager;
  if (D.16638 != 0B) goto <D.16639>; else goto <D.16640>;
  <D.16639>:
  D.16641 = &secman;
  return D.16641;
  <D.16640>:
  D.16642 = mono_defaults.corlib;
  D.16643 = mono_class_from_name (D.16642, "System.Security", "SecurityManager");
  secman.securitymanager = D.16643;
  D.16638 = secman.securitymanager;
  D.16644 = D.16638 == 0B;
  D.16645 = (long int) D.16644;
  D.16646 = __builtin_expect (D.16645, 0);
  if (D.16646 != 0) goto <D.16647>; else goto <D.16648>;
  <D.16647>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 59, "secman.securitymanager");
  <D.16648>:
  D.16638 = secman.securitymanager;
  D.16649 = BIT_FIELD_REF <*D.16638, 32, 160>;
  D.16650 = D.16649 & 1;
  if (D.16650 == 0) goto <D.16651>; else goto <D.16652>;
  <D.16651>:
  D.16638 = secman.securitymanager;
  mono_class_init (D.16638);
  <D.16652>:
  D.16638 = secman.securitymanager;
  D.16653 = mono_class_get_method_from_name (D.16638, "InternalDemand", 2);
  secman.demand = D.16653;
  D.16654 = secman.demand;
  D.16655 = D.16654 == 0B;
  D.16656 = (long int) D.16655;
  D.16657 = __builtin_expect (D.16656, 0);
  if (D.16657 != 0) goto <D.16658>; else goto <D.16659>;
  <D.16658>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 65, "secman.demand");
  <D.16659>:
  D.16638 = secman.securitymanager;
  D.16660 = mono_class_get_method_from_name (D.16638, "InternalDemandChoice", 2);
  secman.demandchoice = D.16660;
  D.16661 = secman.demandchoice;
  D.16662 = D.16661 == 0B;
  D.16663 = (long int) D.16662;
  D.16664 = __builtin_expect (D.16663, 0);
  if (D.16664 != 0) goto <D.16665>; else goto <D.16666>;
  <D.16665>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 69, "secman.demandchoice");
  <D.16666>:
  D.16638 = secman.securitymanager;
  D.16667 = mono_class_get_method_from_name (D.16638, "DemandUnmanaged", 0);
  secman.demandunmanaged = D.16667;
  D.16668 = secman.demandunmanaged;
  D.16669 = D.16668 == 0B;
  D.16670 = (long int) D.16669;
  D.16671 = __builtin_expect (D.16670, 0);
  if (D.16671 != 0) goto <D.16672>; else goto <D.16673>;
  <D.16672>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 73, "secman.demandunmanaged");
  <D.16673>:
  D.16638 = secman.securitymanager;
  D.16674 = mono_class_get_method_from_name (D.16638, "InheritanceDemand", 3);
  secman.inheritancedemand = D.16674;
  D.16675 = secman.inheritancedemand;
  D.16676 = D.16675 == 0B;
  D.16677 = (long int) D.16676;
  D.16678 = __builtin_expect (D.16677, 0);
  if (D.16678 != 0) goto <D.16679>; else goto <D.16680>;
  <D.16679>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 77, "secman.inheritancedemand");
  <D.16680>:
  D.16638 = secman.securitymanager;
  D.16681 = mono_class_get_method_from_name (D.16638, "InheritanceDemandSecurityException", 4);
  secman.inheritsecurityexception = D.16681;
  D.16682 = secman.inheritsecurityexception;
  D.16683 = D.16682 == 0B;
  D.16684 = (long int) D.16683;
  D.16685 = __builtin_expect (D.16684, 0);
  if (D.16685 != 0) goto <D.16686>; else goto <D.16687>;
  <D.16686>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 81, "secman.inheritsecurityexception");
  <D.16687>:
  D.16638 = secman.securitymanager;
  D.16688 = mono_class_get_method_from_name (D.16638, "LinkDemand", 3);
  secman.linkdemand = D.16688;
  D.16689 = secman.linkdemand;
  D.16690 = D.16689 == 0B;
  D.16691 = (long int) D.16690;
  D.16692 = __builtin_expect (D.16691, 0);
  if (D.16692 != 0) goto <D.16693>; else goto <D.16694>;
  <D.16693>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 85, "secman.linkdemand");
  <D.16694>:
  D.16638 = secman.securitymanager;
  D.16695 = mono_class_get_method_from_name (D.16638, "LinkDemandUnmanaged", 1);
  secman.linkdemandunmanaged = D.16695;
  D.16696 = secman.linkdemandunmanaged;
  D.16697 = D.16696 == 0B;
  D.16698 = (long int) D.16697;
  D.16699 = __builtin_expect (D.16698, 0);
  if (D.16699 != 0) goto <D.16700>; else goto <D.16701>;
  <D.16700>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 89, "secman.linkdemandunmanaged");
  <D.16701>:
  D.16638 = secman.securitymanager;
  D.16702 = mono_class_get_method_from_name (D.16638, "LinkDemandFullTrust", 1);
  secman.linkdemandfulltrust = D.16702;
  D.16703 = secman.linkdemandfulltrust;
  D.16704 = D.16703 == 0B;
  D.16705 = (long int) D.16704;
  D.16706 = __builtin_expect (D.16705, 0);
  if (D.16706 != 0) goto <D.16707>; else goto <D.16708>;
  <D.16707>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 93, "secman.linkdemandfulltrust");
  <D.16708>:
  D.16638 = secman.securitymanager;
  D.16709 = mono_class_get_method_from_name (D.16638, "LinkDemandSecurityException", 2);
  secman.linkdemandsecurityexception = D.16709;
  D.16710 = secman.linkdemandsecurityexception;
  D.16711 = D.16710 == 0B;
  D.16712 = (long int) D.16711;
  D.16713 = __builtin_expect (D.16712, 0);
  if (D.16713 != 0) goto <D.16714>; else goto <D.16715>;
  <D.16714>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 97, "secman.linkdemandsecurityexception");
  <D.16715>:
  D.16642 = mono_defaults.corlib;
  D.16716 = mono_class_from_name (D.16642, "System.Security", "AllowPartiallyTrustedCallersAttribute");
  secman.allowpartiallytrustedcallers = D.16716;
  D.16717 = secman.allowpartiallytrustedcallers;
  D.16718 = D.16717 == 0B;
  D.16719 = (long int) D.16718;
  D.16720 = __builtin_expect (D.16719, 0);
  if (D.16720 != 0) goto <D.16721>; else goto <D.16722>;
  <D.16721>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 101, "secman.allowpartiallytrustedcallers");
  <D.16722>:
  D.16642 = mono_defaults.corlib;
  D.16723 = mono_class_from_name (D.16642, "System.Security", "SuppressUnmanagedCodeSecurityAttribute");
  secman.suppressunmanagedcodesecurity = D.16723;
  D.16724 = secman.suppressunmanagedcodesecurity;
  D.16725 = D.16724 == 0B;
  D.16726 = (long int) D.16725;
  D.16727 = __builtin_expect (D.16726, 0);
  if (D.16727 != 0) goto <D.16728>; else goto <D.16729>;
  <D.16728>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 105, "secman.suppressunmanagedcodesecurity");
  <D.16729>:
  D.16641 = &secman;
  return D.16641;
}


mono_secman_inheritancedemand_class (struct MonoClass * klass, struct MonoClass * parent)
{
  unsigned char D.16731;
  struct MonoImage * D.16734;
  struct MonoImage * D.16735;
  struct MonoImage * D.16738;
  unsigned char D.16741;
  int D.16744;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.16731 = klass->exception_type;
      if (D.16731 != 0) goto <D.16732>; else goto <D.16733>;
      <D.16732>:
      return;
      <D.16733>:
      D.16734 = klass->image;
      D.16735 = mono_defaults.corlib;
      if (D.16734 == D.16735) goto <D.16736>; else goto <D.16737>;
      <D.16736>:
      D.16738 = parent->image;
      D.16735 = mono_defaults.corlib;
      if (D.16738 == D.16735) goto <D.16739>; else goto <D.16740>;
      <D.16739>:
      return;
      <D.16740>:
      <D.16737>:
      D.16741 = mono_declsec_get_inheritdemands_class (parent, &demands);
      if (D.16741 != 0) goto <D.16742>; else goto <D.16743>;
      <D.16742>:
      D.16744 = mono_secman_inheritance_check (klass, &demands);
      if (D.16744 == 0) goto <D.16745>; else goto <D.16746>;
      <D.16745>:
      mono_class_set_failure (klass, 2, 0B);
      <D.16746>:
      <D.16743>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


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


mono_secman_inheritancedemand_method (struct MonoMethod * override, struct MonoMethod * base)
{
  struct MonoClass * D.16758;
  unsigned char D.16759;
  struct MonoImage * D.16762;
  struct MonoImage * D.16763;
  struct MonoClass * D.16766;
  struct MonoImage * D.16767;
  unsigned char D.16770;
  int D.16773;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.16758 = override->klass;
      D.16759 = D.16758->exception_type;
      if (D.16759 != 0) goto <D.16760>; else goto <D.16761>;
      <D.16760>:
      return;
      <D.16761>:
      D.16758 = override->klass;
      D.16762 = D.16758->image;
      D.16763 = mono_defaults.corlib;
      if (D.16762 == D.16763) goto <D.16764>; else goto <D.16765>;
      <D.16764>:
      D.16766 = base->klass;
      D.16767 = D.16766->image;
      D.16763 = mono_defaults.corlib;
      if (D.16767 == D.16763) goto <D.16768>; else goto <D.16769>;
      <D.16768>:
      return;
      <D.16769>:
      <D.16765>:
      D.16770 = mono_declsec_get_inheritdemands_method (base, &demands);
      if (D.16770 != 0) goto <D.16771>; else goto <D.16772>;
      <D.16771>:
      D.16758 = override->klass;
      D.16773 = mono_secman_inheritance_check (D.16758, &demands);
      if (D.16773 == 0) goto <D.16774>; else goto <D.16775>;
      <D.16774>:
      D.16758 = override->klass;
      mono_class_set_failure (D.16758, 2, base);
      <D.16775>:
      <D.16772>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


mono_is_ecma_key (const char * publickey, int size)
{
  const char * D.16783;
  char D.16784;
  gboolean D.16785;
  sizetype i.1;
  const char * D.16787;
  char D.16788;
  int i;

  if (publickey == 0B) goto <D.16779>; else goto <D.16781>;
  <D.16781>:
  if (size != 16) goto <D.16779>; else goto <D.16782>;
  <D.16782>:
  D.16783 = publickey + 8;
  D.16784 = *D.16783;
  if (D.16784 != 4) goto <D.16779>; else goto <D.16780>;
  <D.16779>:
  D.16785 = 0;
  return D.16785;
  <D.16780>:
  i = 0;
  goto <D.16608>;
  <D.16607>:
  i.1 = (sizetype) i;
  D.16787 = publickey + i.1;
  D.16788 = *D.16787;
  if (D.16788 != 0) goto <D.16789>; else goto <D.16790>;
  <D.16789>:
  if (i != 8) goto <D.16791>; else goto <D.16792>;
  <D.16791>:
  D.16785 = 0;
  return D.16785;
  <D.16792>:
  <D.16790>:
  i = i + 1;
  <D.16608>:
  if (i < size) goto <D.16607>; else goto <D.16609>;
  <D.16609>:
  D.16785 = 1;
  return D.16785;
}


mono_get_context_capture_method ()
{
  unsigned char mono_security_manager_activated.2;
  struct MonoImage * D.16797;
  struct MonoAssembly * D.16798;
  short unsigned int D.16799;
  struct MonoMethod * D.16802;
  struct MonoClass * D.16803;
  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.16795>; else goto <D.16796>;
  <D.16795>:
  D.16797 = mono_defaults.corlib;
  D.16798 = mono_image_get_assembly (D.16797);
  D.16799 = D.16798->aname.major;
  if (D.16799 <= 1) goto <D.16800>; else goto <D.16801>;
  <D.16800>:
  D.16802 = 0B;
  return D.16802;
  <D.16801>:
  <D.16796>:
  D.16803 = mono_defaults.executioncontext_class;
  if (D.16803 != 0B) goto <D.16804>; else goto <D.16805>;
  <D.16804>:
  method.3 = method;
  if (method.3 == 0B) goto <D.16807>; else goto <D.16808>;
  <D.16807>:
  D.16803 = mono_defaults.executioncontext_class;
  mono_class_init (D.16803);
  D.16803 = mono_defaults.executioncontext_class;
  method.4 = mono_class_get_method_from_name (D.16803, "Capture", 0);
  method = method.4;
  <D.16808>:
  <D.16805>:
  D.16802 = method;
  return D.16802;
}


ves_icall_System_Security_SecurityManager_get_SecurityEnabled ()
{
  unsigned char mono_security_manager_activated.5;
  MonoBoolean D.16814;
  <unnamed type> D.16815;
  _Bool D.16816;

  mono_security_manager_activated.5 = mono_security_manager_activated;
  if (mono_security_manager_activated.5 == 0) goto <D.16812>; else goto <D.16813>;
  <D.16812>:
  D.16815 = mono_security_get_mode ();
  D.16816 = D.16815 == 1;
  D.16814 = (MonoBoolean) D.16816;
  return D.16814;
  <D.16813>:
  D.16814 = mono_security_manager_enabled;
  return D.16814;
}


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


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

  mono_security_manager_activated.7 = mono_security_manager_activated;
  if (mono_security_manager_activated.7 == 0) goto <D.16822>; else goto <D.16823>;
  <D.16822>:
  D.16824 = 0;
  return D.16824;
  <D.16823>:
  D.16824 = mono_security_manager_execution;
  return D.16824;
}


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


ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (struct MonoReflectionMethod * m, struct MonoDeclSecurityActions * kactions, struct MonoDeclSecurityActions * mactions)
{
  unsigned int D.16831;
  unsigned int D.16832;
  struct MonoClass * D.16834;
  short unsigned int D.16837;
  int D.16838;
  int D.16839;
  unsigned int D.16841;
  unsigned int D.16842;
  MonoBoolean D.16843;
  struct MonoMethod * method;

  method = m->method;
  D.16831 = BIT_FIELD_REF <*method, 32, 160>;
  D.16832 = D.16831 & 124;
  if (D.16832 == 24) goto <D.16829>; else goto <D.16833>;
  <D.16833>:
  D.16831 = BIT_FIELD_REF <*method, 32, 160>;
  D.16832 = D.16831 & 124;
  if (D.16832 == 28) goto <D.16829>; else goto <D.16830>;
  <D.16829>:
  method = mono_marshal_method_from_wrapper (method);
  <D.16830>:
  D.16834 = method->klass;
  mono_class_init (D.16834);
  D.16837 = method->flags;
  D.16838 = (int) D.16837;
  D.16839 = D.16838 & 16384;
  if (D.16839 != 0) goto <D.16835>; else goto <D.16840>;
  <D.16840>:
  D.16834 = method->klass;
  D.16841 = D.16834->flags;
  D.16842 = D.16841 & 262144;
  if (D.16842 != 0) goto <D.16835>; else goto <D.16836>;
  <D.16835>:
  memset (kactions, 0, 36);
  memset (mactions, 0, 36);
  D.16843 = mono_declsec_get_linkdemands (method, kactions, mactions);
  return D.16843;
  <D.16836>:
  D.16843 = 0;
  return D.16843;
}


memset (void * __dest, int __ch, size_t __len)
{
  int D.16847;
  int D.16852;
  void * D.16854;
  unsigned int D.16855;

  D.16847 = __builtin_constant_p (__len);
  if (D.16847 != 0) goto <D.16848>; else goto <D.16849>;
  <D.16848>:
  if (__len == 0) goto <D.16850>; else goto <D.16851>;
  <D.16850>:
  D.16852 = __builtin_constant_p (__ch);
  if (D.16852 == 0) goto <D.16845>; else goto <D.16853>;
  <D.16853>:
  if (__ch != 0) goto <D.16845>; else goto <D.16846>;
  <D.16845>:
  __warn_memset_zero_len ();
  D.16854 = __dest;
  return D.16854;
  <D.16846>:
  <D.16851>:
  <D.16849>:
  D.16855 = __builtin_object_size (__dest, 0);
  D.16854 = __builtin___memset_chk (__dest, __ch, __len, D.16855);
  return D.16854;
}


