__attribute__((visibility ("hidden")))
mono_security_set_mode (MonoSecurityMode mode)
{
  mono_security_mode = mode;
}


__attribute__((visibility ("hidden")))
mono_security_get_mode ()
{
  MonoSecurityMode D.17175;

  D.17175 = mono_security_mode;
  return D.17175;
}


__attribute__((visibility ("hidden")))
mono_activate_security_manager ()
{
  mono_security_manager_activated = 1;
}


__attribute__((visibility ("hidden")))
mono_is_security_manager_active ()
{
  gboolean D.17177;
  unsigned char mono_security_manager_activated.0;

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


__attribute__((visibility ("hidden")))
mono_security_manager_get_methods ()
{
  struct MonoClass * D.17180;
  struct MonoSecurityManager * D.17183;
  struct MonoImage * D.17184;
  struct MonoClass * D.17185;
  _Bool D.17186;
  long int D.17187;
  long int D.17188;
  long unsigned int D.17191;
  long unsigned int D.17192;
  struct MonoMethod * D.17195;
  struct MonoMethod * D.17196;
  _Bool D.17197;
  long int D.17198;
  long int D.17199;
  struct MonoMethod * D.17202;
  struct MonoMethod * D.17203;
  _Bool D.17204;
  long int D.17205;
  long int D.17206;
  struct MonoMethod * D.17209;
  struct MonoMethod * D.17210;
  _Bool D.17211;
  long int D.17212;
  long int D.17213;
  struct MonoMethod * D.17216;
  struct MonoMethod * D.17217;
  _Bool D.17218;
  long int D.17219;
  long int D.17220;
  struct MonoMethod * D.17223;
  struct MonoMethod * D.17224;
  _Bool D.17225;
  long int D.17226;
  long int D.17227;
  struct MonoMethod * D.17230;
  struct MonoMethod * D.17231;
  _Bool D.17232;
  long int D.17233;
  long int D.17234;
  struct MonoMethod * D.17237;
  struct MonoMethod * D.17238;
  _Bool D.17239;
  long int D.17240;
  long int D.17241;
  struct MonoMethod * D.17244;
  struct MonoMethod * D.17245;
  _Bool D.17246;
  long int D.17247;
  long int D.17248;
  struct MonoMethod * D.17251;
  struct MonoMethod * D.17252;
  _Bool D.17253;
  long int D.17254;
  long int D.17255;
  struct MonoClass * D.17258;
  struct MonoClass * D.17259;
  _Bool D.17260;
  long int D.17261;
  long int D.17262;
  struct MonoClass * D.17265;
  struct MonoClass * D.17266;
  _Bool D.17267;
  long int D.17268;
  long int D.17269;

  D.17180 = secman.securitymanager;
  if (D.17180 != 0B) goto <D.17181>; else goto <D.17182>;
  <D.17181>:
  D.17183 = &secman;
  return D.17183;
  <D.17182>:
  D.17184 = mono_defaults.corlib;
  D.17185 = mono_class_from_name (D.17184, "System.Security", "SecurityManager");
  secman.securitymanager = D.17185;
  D.17180 = secman.securitymanager;
  D.17186 = D.17180 == 0B;
  D.17187 = (long int) D.17186;
  D.17188 = __builtin_expect (D.17187, 0);
  if (D.17188 != 0) goto <D.17189>; else goto <D.17190>;
  <D.17189>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 59, "secman.securitymanager");
  <D.17190>:
  D.17180 = secman.securitymanager;
  D.17191 = BIT_FIELD_REF <*D.17180, 64, 256>;
  D.17192 = D.17191 & 9223372036854775808;
  if (D.17192 == 0) goto <D.17193>; else goto <D.17194>;
  <D.17193>:
  D.17180 = secman.securitymanager;
  mono_class_init (D.17180);
  <D.17194>:
  D.17180 = secman.securitymanager;
  D.17195 = mono_class_get_method_from_name (D.17180, "InternalDemand", 2);
  secman.demand = D.17195;
  D.17196 = secman.demand;
  D.17197 = D.17196 == 0B;
  D.17198 = (long int) D.17197;
  D.17199 = __builtin_expect (D.17198, 0);
  if (D.17199 != 0) goto <D.17200>; else goto <D.17201>;
  <D.17200>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 65, "secman.demand");
  <D.17201>:
  D.17180 = secman.securitymanager;
  D.17202 = mono_class_get_method_from_name (D.17180, "InternalDemandChoice", 2);
  secman.demandchoice = D.17202;
  D.17203 = secman.demandchoice;
  D.17204 = D.17203 == 0B;
  D.17205 = (long int) D.17204;
  D.17206 = __builtin_expect (D.17205, 0);
  if (D.17206 != 0) goto <D.17207>; else goto <D.17208>;
  <D.17207>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 69, "secman.demandchoice");
  <D.17208>:
  D.17180 = secman.securitymanager;
  D.17209 = mono_class_get_method_from_name (D.17180, "DemandUnmanaged", 0);
  secman.demandunmanaged = D.17209;
  D.17210 = secman.demandunmanaged;
  D.17211 = D.17210 == 0B;
  D.17212 = (long int) D.17211;
  D.17213 = __builtin_expect (D.17212, 0);
  if (D.17213 != 0) goto <D.17214>; else goto <D.17215>;
  <D.17214>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 73, "secman.demandunmanaged");
  <D.17215>:
  D.17180 = secman.securitymanager;
  D.17216 = mono_class_get_method_from_name (D.17180, "InheritanceDemand", 3);
  secman.inheritancedemand = D.17216;
  D.17217 = secman.inheritancedemand;
  D.17218 = D.17217 == 0B;
  D.17219 = (long int) D.17218;
  D.17220 = __builtin_expect (D.17219, 0);
  if (D.17220 != 0) goto <D.17221>; else goto <D.17222>;
  <D.17221>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 77, "secman.inheritancedemand");
  <D.17222>:
  D.17180 = secman.securitymanager;
  D.17223 = mono_class_get_method_from_name (D.17180, "InheritanceDemandSecurityException", 4);
  secman.inheritsecurityexception = D.17223;
  D.17224 = secman.inheritsecurityexception;
  D.17225 = D.17224 == 0B;
  D.17226 = (long int) D.17225;
  D.17227 = __builtin_expect (D.17226, 0);
  if (D.17227 != 0) goto <D.17228>; else goto <D.17229>;
  <D.17228>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 81, "secman.inheritsecurityexception");
  <D.17229>:
  D.17180 = secman.securitymanager;
  D.17230 = mono_class_get_method_from_name (D.17180, "LinkDemand", 3);
  secman.linkdemand = D.17230;
  D.17231 = secman.linkdemand;
  D.17232 = D.17231 == 0B;
  D.17233 = (long int) D.17232;
  D.17234 = __builtin_expect (D.17233, 0);
  if (D.17234 != 0) goto <D.17235>; else goto <D.17236>;
  <D.17235>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 85, "secman.linkdemand");
  <D.17236>:
  D.17180 = secman.securitymanager;
  D.17237 = mono_class_get_method_from_name (D.17180, "LinkDemandUnmanaged", 1);
  secman.linkdemandunmanaged = D.17237;
  D.17238 = secman.linkdemandunmanaged;
  D.17239 = D.17238 == 0B;
  D.17240 = (long int) D.17239;
  D.17241 = __builtin_expect (D.17240, 0);
  if (D.17241 != 0) goto <D.17242>; else goto <D.17243>;
  <D.17242>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 89, "secman.linkdemandunmanaged");
  <D.17243>:
  D.17180 = secman.securitymanager;
  D.17244 = mono_class_get_method_from_name (D.17180, "LinkDemandFullTrust", 1);
  secman.linkdemandfulltrust = D.17244;
  D.17245 = secman.linkdemandfulltrust;
  D.17246 = D.17245 == 0B;
  D.17247 = (long int) D.17246;
  D.17248 = __builtin_expect (D.17247, 0);
  if (D.17248 != 0) goto <D.17249>; else goto <D.17250>;
  <D.17249>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 93, "secman.linkdemandfulltrust");
  <D.17250>:
  D.17180 = secman.securitymanager;
  D.17251 = mono_class_get_method_from_name (D.17180, "LinkDemandSecurityException", 2);
  secman.linkdemandsecurityexception = D.17251;
  D.17252 = secman.linkdemandsecurityexception;
  D.17253 = D.17252 == 0B;
  D.17254 = (long int) D.17253;
  D.17255 = __builtin_expect (D.17254, 0);
  if (D.17255 != 0) goto <D.17256>; else goto <D.17257>;
  <D.17256>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 97, "secman.linkdemandsecurityexception");
  <D.17257>:
  D.17184 = mono_defaults.corlib;
  D.17258 = mono_class_from_name (D.17184, "System.Security", "AllowPartiallyTrustedCallersAttribute");
  secman.allowpartiallytrustedcallers = D.17258;
  D.17259 = secman.allowpartiallytrustedcallers;
  D.17260 = D.17259 == 0B;
  D.17261 = (long int) D.17260;
  D.17262 = __builtin_expect (D.17261, 0);
  if (D.17262 != 0) goto <D.17263>; else goto <D.17264>;
  <D.17263>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 101, "secman.allowpartiallytrustedcallers");
  <D.17264>:
  D.17184 = mono_defaults.corlib;
  D.17265 = mono_class_from_name (D.17184, "System.Security", "SuppressUnmanagedCodeSecurityAttribute");
  secman.suppressunmanagedcodesecurity = D.17265;
  D.17266 = secman.suppressunmanagedcodesecurity;
  D.17267 = D.17266 == 0B;
  D.17268 = (long int) D.17267;
  D.17269 = __builtin_expect (D.17268, 0);
  if (D.17269 != 0) goto <D.17270>; else goto <D.17271>;
  <D.17270>:
  monoeg_assertion_message ("* Assertion at %s:%d, condition `%s\' not met\n", "security-manager.c", 105, "secman.suppressunmanagedcodesecurity");
  <D.17271>:
  D.17183 = &secman;
  return D.17183;
}


__attribute__((visibility ("hidden")))
mono_secman_inheritancedemand_class (struct MonoClass * klass, struct MonoClass * parent)
{
  unsigned char D.17273;
  struct MonoImage * D.17276;
  struct MonoImage * D.17277;
  struct MonoImage * D.17280;
  unsigned char D.17283;
  int D.17286;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.17273 = klass->exception_type;
      if (D.17273 != 0) goto <D.17274>; else goto <D.17275>;
      <D.17274>:
      return;
      <D.17275>:
      D.17276 = klass->image;
      D.17277 = mono_defaults.corlib;
      if (D.17276 == D.17277) goto <D.17278>; else goto <D.17279>;
      <D.17278>:
      D.17280 = parent->image;
      D.17277 = mono_defaults.corlib;
      if (D.17280 == D.17277) goto <D.17281>; else goto <D.17282>;
      <D.17281>:
      return;
      <D.17282>:
      <D.17279>:
      D.17283 = mono_declsec_get_inheritdemands_class (parent, &demands);
      if (D.17283 != 0) goto <D.17284>; else goto <D.17285>;
      <D.17284>:
      D.17286 = mono_secman_inheritance_check (klass, &demands);
      if (D.17286 == 0) goto <D.17287>; else goto <D.17288>;
      <D.17287>:
      mono_class_set_failure (klass, 2, 0B);
      <D.17288>:
      <D.17285>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


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


__attribute__((visibility ("hidden")))
mono_secman_inheritancedemand_method (struct MonoMethod * override, struct MonoMethod * base)
{
  struct MonoClass * D.17300;
  unsigned char D.17301;
  struct MonoImage * D.17304;
  struct MonoImage * D.17305;
  struct MonoClass * D.17308;
  struct MonoImage * D.17309;
  unsigned char D.17312;
  int D.17315;
  struct MonoDeclSecurityActions demands;

  try
    {
      D.17300 = override->klass;
      D.17301 = D.17300->exception_type;
      if (D.17301 != 0) goto <D.17302>; else goto <D.17303>;
      <D.17302>:
      return;
      <D.17303>:
      D.17300 = override->klass;
      D.17304 = D.17300->image;
      D.17305 = mono_defaults.corlib;
      if (D.17304 == D.17305) goto <D.17306>; else goto <D.17307>;
      <D.17306>:
      D.17308 = base->klass;
      D.17309 = D.17308->image;
      D.17305 = mono_defaults.corlib;
      if (D.17309 == D.17305) goto <D.17310>; else goto <D.17311>;
      <D.17310>:
      return;
      <D.17311>:
      <D.17307>:
      D.17312 = mono_declsec_get_inheritdemands_method (base, &demands);
      if (D.17312 != 0) goto <D.17313>; else goto <D.17314>;
      <D.17313>:
      D.17300 = override->klass;
      D.17315 = mono_secman_inheritance_check (D.17300, &demands);
      if (D.17315 == 0) goto <D.17316>; else goto <D.17317>;
      <D.17316>:
      D.17300 = override->klass;
      mono_class_set_failure (D.17300, 2, base);
      <D.17317>:
      <D.17314>:
    }
  finally
    {
      demands = {CLOBBER};
    }
}


__attribute__((visibility ("hidden")))
mono_is_ecma_key (const char * publickey, int size)
{
  const char * D.17325;
  char D.17326;
  gboolean D.17327;
  sizetype D.17328;
  const char * D.17329;
  char D.17330;
  int i;

  if (publickey == 0B) goto <D.17321>; else goto <D.17323>;
  <D.17323>:
  if (size != 16) goto <D.17321>; else goto <D.17324>;
  <D.17324>:
  D.17325 = publickey + 8;
  D.17326 = *D.17325;
  if (D.17326 != 4) goto <D.17321>; else goto <D.17322>;
  <D.17321>:
  D.17327 = 0;
  return D.17327;
  <D.17322>:
  i = 0;
  goto <D.17150>;
  <D.17149>:
  D.17328 = (sizetype) i;
  D.17329 = publickey + D.17328;
  D.17330 = *D.17329;
  if (D.17330 != 0) goto <D.17331>; else goto <D.17332>;
  <D.17331>:
  if (i != 8) goto <D.17333>; else goto <D.17334>;
  <D.17333>:
  D.17327 = 0;
  return D.17327;
  <D.17334>:
  <D.17332>:
  i = i + 1;
  <D.17150>:
  if (i < size) goto <D.17149>; else goto <D.17151>;
  <D.17151>:
  D.17327 = 1;
  return D.17327;
}


__attribute__((visibility ("hidden")))
mono_get_context_capture_method ()
{
  unsigned char mono_security_manager_activated.1;
  struct MonoImage * D.17339;
  struct MonoAssembly * D.17340;
  short unsigned int D.17341;
  struct MonoMethod * D.17344;
  struct MonoClass * D.17345;
  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.17337>; else goto <D.17338>;
  <D.17337>:
  D.17339 = mono_defaults.corlib;
  D.17340 = mono_image_get_assembly (D.17339);
  D.17341 = D.17340->aname.major;
  if (D.17341 <= 1) goto <D.17342>; else goto <D.17343>;
  <D.17342>:
  D.17344 = 0B;
  return D.17344;
  <D.17343>:
  <D.17338>:
  D.17345 = mono_defaults.executioncontext_class;
  if (D.17345 != 0B) goto <D.17346>; else goto <D.17347>;
  <D.17346>:
  method.2 = method;
  if (method.2 == 0B) goto <D.17349>; else goto <D.17350>;
  <D.17349>:
  D.17345 = mono_defaults.executioncontext_class;
  mono_class_init (D.17345);
  D.17345 = mono_defaults.executioncontext_class;
  method.3 = mono_class_get_method_from_name (D.17345, "Capture", 0);
  method = method.3;
  <D.17350>:
  <D.17347>:
  D.17344 = method;
  return D.17344;
}


__attribute__((visibility ("hidden")))
ves_icall_System_Security_SecurityManager_get_SecurityEnabled ()
{
  unsigned char mono_security_manager_activated.4;
  MonoBoolean D.17356;
  <unnamed type> D.17357;
  _Bool D.17358;

  mono_security_manager_activated.4 = mono_security_manager_activated;
  if (mono_security_manager_activated.4 == 0) goto <D.17354>; else goto <D.17355>;
  <D.17354>:
  D.17357 = mono_security_get_mode ();
  D.17358 = D.17357 == 1;
  D.17356 = (MonoBoolean) D.17358;
  return D.17356;
  <D.17355>:
  D.17356 = mono_security_manager_enabled;
  return D.17356;
}


__attribute__((visibility ("hidden")))
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.17361>; else goto <D.17362>;
  <D.17361>:
  mono_security_manager_enabled = value;
  <D.17362>:
}


__attribute__((visibility ("hidden")))
ves_icall_System_Security_SecurityManager_get_CheckExecutionRights ()
{
  unsigned char mono_security_manager_activated.6;
  MonoBoolean D.17366;

  mono_security_manager_activated.6 = mono_security_manager_activated;
  if (mono_security_manager_activated.6 == 0) goto <D.17364>; else goto <D.17365>;
  <D.17364>:
  D.17366 = 0;
  return D.17366;
  <D.17365>:
  D.17366 = mono_security_manager_execution;
  return D.17366;
}


__attribute__((visibility ("hidden")))
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.17369>; else goto <D.17370>;
  <D.17369>:
  mono_security_manager_execution = value;
  <D.17370>:
}


__attribute__((visibility ("hidden")))
ves_icall_System_Security_SecurityManager_GetLinkDemandSecurity (struct MonoReflectionMethod * m, struct MonoDeclSecurityActions * kactions, struct MonoDeclSecurityActions * mactions)
{
  long unsigned int D.17373;
  long unsigned int D.17374;
  struct MonoClass * D.17376;
  short unsigned int D.17379;
  int D.17380;
  int D.17381;
  unsigned int D.17383;
  unsigned int D.17384;
  MonoBoolean D.17385;
  struct MonoMethod * method;

  method = m->method;
  D.17373 = BIT_FIELD_REF <*method, 64, 256>;
  D.17374 = D.17373 & 4467570830351532032;
  if (D.17374 == 864691128455135232) goto <D.17371>; else goto <D.17375>;
  <D.17375>:
  D.17373 = BIT_FIELD_REF <*method, 64, 256>;
  D.17374 = D.17373 & 4467570830351532032;
  if (D.17374 == 1008806316530991104) goto <D.17371>; else goto <D.17372>;
  <D.17371>:
  method = mono_marshal_method_from_wrapper (method);
  <D.17372>:
  D.17376 = method->klass;
  mono_class_init (D.17376);
  D.17379 = method->flags;
  D.17380 = (int) D.17379;
  D.17381 = D.17380 & 16384;
  if (D.17381 != 0) goto <D.17377>; else goto <D.17382>;
  <D.17382>:
  D.17376 = method->klass;
  D.17383 = D.17376->flags;
  D.17384 = D.17383 & 262144;
  if (D.17384 != 0) goto <D.17377>; else goto <D.17378>;
  <D.17377>:
  memset (kactions, 0, 48);
  memset (mactions, 0, 48);
  D.17385 = mono_declsec_get_linkdemands (method, kactions, mactions);
  return D.17385;
  <D.17378>:
  D.17385 = 0;
  return D.17385;
}


__attribute__((__artificial__, __gnu_inline__, __always_inline__, __nothrow__, __leaf__))
memset (void * __dest, int __ch, size_t __len)
{
  void * D.17387;
  long unsigned int D.17388;

  D.17388 = __builtin_object_size (__dest, 0);
  D.17387 = __builtin___memset_chk (__dest, __ch, __len, D.17388);
  return D.17387;
}


