monoeg_g_module_open (const gchar * file, GModuleFlags flags)
{
  unsigned int D.4711;
  unsigned int D.4714;
  struct GModule * D.4719;
  int f;
  struct GModule * module;
  void * handle;

  f = 0;
  flags = flags & 3;
  D.4711 = flags & 1;
  if (D.4711 != 0) goto <D.4712>; else goto <D.4713>;
  <D.4712>:
  f = f | 1;
  <D.4713>:
  D.4714 = flags & 2;
  if (D.4714 != 0) goto <D.4715>; else goto <D.4716>;
  <D.4715>:
  f = f;
  <D.4716>:
  handle = dlopen (file, f);
  if (handle == 0B) goto <D.4717>; else goto <D.4718>;
  <D.4717>:
  D.4719 = 0B;
  return D.4719;
  <D.4718>:
  module = monoeg_malloc (4);
  module->handle = handle;
  D.4719 = module;
  return D.4719;
}


monoeg_g_module_symbol (struct GModule * module, const gchar * symbol_name, void * * symbol)
{
  gboolean D.4724;
  void * D.4728;
  void * D.4729;
  void * D.4730;
  _Bool D.4731;

  if (symbol_name == 0B) goto <D.4721>; else goto <D.4723>;
  <D.4723>:
  if (symbol == 0B) goto <D.4721>; else goto <D.4722>;
  <D.4721>:
  D.4724 = 0;
  return D.4724;
  <D.4722>:
  if (module == 0B) goto <D.4725>; else goto <D.4727>;
  <D.4727>:
  D.4728 = module->handle;
  if (D.4728 == 0B) goto <D.4725>; else goto <D.4726>;
  <D.4725>:
  D.4724 = 0;
  return D.4724;
  <D.4726>:
  D.4728 = module->handle;
  D.4729 = dlsym (D.4728, symbol_name);
  *symbol = D.4729;
  D.4730 = *symbol;
  D.4731 = D.4730 != 0B;
  D.4724 = (gboolean) D.4731;
  return D.4724;
}


monoeg_g_module_error ()
{
  const gchar * D.4733;

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


monoeg_g_module_close (struct GModule * module)
{
  void * D.4738;
  gboolean D.4739;
  int D.4740;
  _Bool D.4741;
  void * handle;

  if (module == 0B) goto <D.4735>; else goto <D.4737>;
  <D.4737>:
  D.4738 = module->handle;
  if (D.4738 == 0B) goto <D.4735>; else goto <D.4736>;
  <D.4735>:
  D.4739 = 0;
  return D.4739;
  <D.4736>:
  handle = module->handle;
  module->handle = 0B;
  monoeg_g_free (module);
  D.4740 = dlclose (handle);
  D.4741 = D.4740 == 0;
  D.4739 = (gboolean) D.4741;
  return D.4739;
}


monoeg_g_module_build_path (const gchar * directory, const gchar * module_name)
{
  gchar * D.4745;
  int D.4746;
  char D.4751;
  char * lib_prefix;

  lib_prefix = "";
  if (module_name == 0B) goto <D.4743>; else goto <D.4744>;
  <D.4743>:
  D.4745 = 0B;
  return D.4745;
  <D.4744>:
  D.4746 = strncmp (module_name, "lib", 3);
  if (D.4746 != 0) goto <D.4747>; else goto <D.4748>;
  <D.4747>:
  lib_prefix = "lib";
  <D.4748>:
  if (directory != 0B) goto <D.4749>; else goto <D.4750>;
  <D.4749>:
  D.4751 = *directory;
  if (D.4751 != 0) goto <D.4752>; else goto <D.4753>;
  <D.4752>:
  D.4745 = monoeg_g_strdup_printf ("%s/%s%s.so", directory, lib_prefix, module_name);
  return D.4745;
  <D.4753>:
  <D.4750>:
  D.4745 = monoeg_g_strdup_printf ("%s%s.so", lib_prefix, module_name);
  return D.4745;
}


