monoeg_g_module_open (const gchar * file, GModuleFlags flags)
{
  unsigned int D.5555;
  unsigned int D.5558;
  struct GModule * D.5563;
  int f;
  struct GModule * module;
  void * handle;

  f = 0;
  flags = flags & 3;
  D.5555 = flags & 1;
  if (D.5555 != 0) goto <D.5556>; else goto <D.5557>;
  <D.5556>:
  f = f | 1;
  <D.5557>:
  D.5558 = flags & 2;
  if (D.5558 != 0) goto <D.5559>; else goto <D.5560>;
  <D.5559>:
  f = f;
  <D.5560>:
  handle = dlopen (file, f);
  if (handle == 0B) goto <D.5561>; else goto <D.5562>;
  <D.5561>:
  D.5563 = 0B;
  return D.5563;
  <D.5562>:
  module = monoeg_malloc (8);
  module->handle = handle;
  D.5563 = module;
  return D.5563;
}


monoeg_g_module_symbol (struct GModule * module, const gchar * symbol_name, void * * symbol)
{
  gboolean D.5568;
  void * D.5572;
  void * D.5573;
  void * D.5574;
  _Bool D.5575;

  if (symbol_name == 0B) goto <D.5565>; else goto <D.5567>;
  <D.5567>:
  if (symbol == 0B) goto <D.5565>; else goto <D.5566>;
  <D.5565>:
  D.5568 = 0;
  return D.5568;
  <D.5566>:
  if (module == 0B) goto <D.5569>; else goto <D.5571>;
  <D.5571>:
  D.5572 = module->handle;
  if (D.5572 == 0B) goto <D.5569>; else goto <D.5570>;
  <D.5569>:
  D.5568 = 0;
  return D.5568;
  <D.5570>:
  D.5572 = module->handle;
  D.5573 = dlsym (D.5572, symbol_name);
  *symbol = D.5573;
  D.5574 = *symbol;
  D.5575 = D.5574 != 0B;
  D.5568 = (gboolean) D.5575;
  return D.5568;
}


monoeg_g_module_error ()
{
  const gchar * D.5577;

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


monoeg_g_module_close (struct GModule * module)
{
  void * D.5582;
  gboolean D.5583;
  int D.5584;
  _Bool D.5585;
  void * handle;

  if (module == 0B) goto <D.5579>; else goto <D.5581>;
  <D.5581>:
  D.5582 = module->handle;
  if (D.5582 == 0B) goto <D.5579>; else goto <D.5580>;
  <D.5579>:
  D.5583 = 0;
  return D.5583;
  <D.5580>:
  handle = module->handle;
  module->handle = 0B;
  monoeg_g_free (module);
  D.5584 = dlclose (handle);
  D.5585 = D.5584 == 0;
  D.5583 = (gboolean) D.5585;
  return D.5583;
}


monoeg_g_module_build_path (const gchar * directory, const gchar * module_name)
{
  gchar * D.5589;
  int D.5590;
  char D.5595;
  char * lib_prefix;

  lib_prefix = "";
  if (module_name == 0B) goto <D.5587>; else goto <D.5588>;
  <D.5587>:
  D.5589 = 0B;
  return D.5589;
  <D.5588>:
  D.5590 = strncmp (module_name, "lib", 3);
  if (D.5590 != 0) goto <D.5591>; else goto <D.5592>;
  <D.5591>:
  lib_prefix = "lib";
  <D.5592>:
  if (directory != 0B) goto <D.5593>; else goto <D.5594>;
  <D.5593>:
  D.5595 = *directory;
  if (D.5595 != 0) goto <D.5596>; else goto <D.5597>;
  <D.5596>:
  D.5589 = monoeg_g_strdup_printf ("%s/%s%s.so", directory, lib_prefix, module_name);
  return D.5589;
  <D.5597>:
  <D.5594>:
  D.5589 = monoeg_g_strdup_printf ("%s%s.so", lib_prefix, module_name);
  return D.5589;
}


