monoeg_g_module_open (const gchar * file, GModuleFlags flags)
{
  unsigned int D.4691;
  unsigned int D.4694;
  struct GModule * D.4699;
  int f;
  struct GModule * module;
  void * handle;

  f = 0;
  flags = flags & 3;
  D.4691 = flags & 1;
  if (D.4691 != 0) goto <D.4692>; else goto <D.4693>;
  <D.4692>:
  f = f | 1;
  <D.4693>:
  D.4694 = flags & 2;
  if (D.4694 != 0) goto <D.4695>; else goto <D.4696>;
  <D.4695>:
  f = f;
  <D.4696>:
  handle = dlopen (file, f);
  if (handle == 0B) goto <D.4697>; else goto <D.4698>;
  <D.4697>:
  D.4699 = 0B;
  return D.4699;
  <D.4698>:
  module = monoeg_malloc (4);
  module->handle = handle;
  D.4699 = module;
  return D.4699;
}


monoeg_g_module_symbol (struct GModule * module, const gchar * symbol_name, void * * symbol)
{
  _Bool D.4701;
  _Bool D.4702;
  _Bool D.4703;
  gboolean D.4706;
  void * D.4710;
  void * D.4711;
  void * D.4712;
  _Bool D.4713;

  D.4701 = symbol_name == 0B;
  D.4702 = symbol == 0B;
  D.4703 = D.4701 | D.4702;
  if (D.4703 != 0) goto <D.4704>; else goto <D.4705>;
  <D.4704>:
  D.4706 = 0;
  return D.4706;
  <D.4705>:
  if (module == 0B) goto <D.4707>; else goto <D.4709>;
  <D.4709>:
  D.4710 = module->handle;
  if (D.4710 == 0B) goto <D.4707>; else goto <D.4708>;
  <D.4707>:
  D.4706 = 0;
  return D.4706;
  <D.4708>:
  D.4710 = module->handle;
  D.4711 = dlsym (D.4710, symbol_name);
  *symbol = D.4711;
  D.4712 = *symbol;
  D.4713 = D.4712 != 0B;
  D.4706 = (gboolean) D.4713;
  return D.4706;
}


monoeg_g_module_error ()
{
  const gchar * D.4715;

  D.4715 = dlerror ();
  return D.4715;
}


monoeg_g_module_close (struct GModule * module)
{
  void * D.4720;
  gboolean D.4721;
  int D.4722;
  _Bool D.4723;
  void * handle;

  if (module == 0B) goto <D.4717>; else goto <D.4719>;
  <D.4719>:
  D.4720 = module->handle;
  if (D.4720 == 0B) goto <D.4717>; else goto <D.4718>;
  <D.4717>:
  D.4721 = 0;
  return D.4721;
  <D.4718>:
  handle = module->handle;
  module->handle = 0B;
  monoeg_g_free (module);
  D.4722 = dlclose (handle);
  D.4723 = D.4722 == 0;
  D.4721 = (gboolean) D.4723;
  return D.4721;
}


monoeg_g_module_build_path (const gchar * directory, const gchar * module_name)
{
  gchar * D.4727;
  int D.4728;
  char D.4733;
  char * lib_prefix;

  lib_prefix = "";
  if (module_name == 0B) goto <D.4725>; else goto <D.4726>;
  <D.4725>:
  D.4727 = 0B;
  return D.4727;
  <D.4726>:
  D.4728 = strncmp (module_name, "lib", 3);
  if (D.4728 != 0) goto <D.4729>; else goto <D.4730>;
  <D.4729>:
  lib_prefix = "lib";
  <D.4730>:
  if (directory != 0B) goto <D.4731>; else goto <D.4732>;
  <D.4731>:
  D.4733 = *directory;
  if (D.4733 != 0) goto <D.4734>; else goto <D.4735>;
  <D.4734>:
  D.4727 = monoeg_g_strdup_printf ("%s/%s%s.so", directory, lib_prefix, module_name);
  return D.4727;
  <D.4735>:
  <D.4732>:
  D.4727 = monoeg_g_strdup_printf ("%s%s.so", lib_prefix, module_name);
  return D.4727;
}


