monoeg_g_module_open (const gchar * file, GModuleFlags flags)
{
  unsigned int D.7300;
  unsigned int D.7303;
  struct GModule * D.7308;
  int f;
  struct GModule * module;
  void * handle;

  f = 0;
  flags = flags & 3;
  D.7300 = flags & 1;
  if (D.7300 != 0) goto <D.7301>; else goto <D.7302>;
  <D.7301>:
  f = f | 1;
  <D.7302>:
  D.7303 = flags & 2;
  if (D.7303 != 0) goto <D.7304>; else goto <D.7305>;
  <D.7304>:
  f = f;
  <D.7305>:
  handle = dlopen (file, f);
  if (handle == 0B) goto <D.7306>; else goto <D.7307>;
  <D.7306>:
  D.7308 = 0B;
  return D.7308;
  <D.7307>:
  module = monoeg_malloc (4);
  module->handle = handle;
  D.7308 = module;
  return D.7308;
}


monoeg_g_module_symbol (struct GModule * module, const gchar * symbol_name, void * * symbol)
{
  _Bool D.7310;
  _Bool D.7311;
  _Bool D.7312;
  gboolean D.7315;
  void * D.7319;
  void * D.7320;
  void * D.7321;
  _Bool D.7322;

  D.7310 = symbol_name == 0B;
  D.7311 = symbol == 0B;
  D.7312 = D.7310 | D.7311;
  if (D.7312 != 0) goto <D.7313>; else goto <D.7314>;
  <D.7313>:
  D.7315 = 0;
  return D.7315;
  <D.7314>:
  if (module == 0B) goto <D.7316>; else goto <D.7318>;
  <D.7318>:
  D.7319 = module->handle;
  if (D.7319 == 0B) goto <D.7316>; else goto <D.7317>;
  <D.7316>:
  D.7315 = 0;
  return D.7315;
  <D.7317>:
  D.7319 = module->handle;
  D.7320 = dlsym (D.7319, symbol_name);
  *symbol = D.7320;
  D.7321 = *symbol;
  D.7322 = D.7321 != 0B;
  D.7315 = (gboolean) D.7322;
  return D.7315;
}


monoeg_g_module_error ()
{
  const gchar * D.7324;

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


monoeg_g_module_close (struct GModule * module)
{
  void * D.7329;
  gboolean D.7330;
  int D.7331;
  _Bool D.7332;
  void * handle;

  if (module == 0B) goto <D.7326>; else goto <D.7328>;
  <D.7328>:
  D.7329 = module->handle;
  if (D.7329 == 0B) goto <D.7326>; else goto <D.7327>;
  <D.7326>:
  D.7330 = 0;
  return D.7330;
  <D.7327>:
  handle = module->handle;
  module->handle = 0B;
  monoeg_g_free (module);
  D.7331 = dlclose (handle);
  D.7332 = D.7331 == 0;
  D.7330 = (gboolean) D.7332;
  return D.7330;
}


monoeg_g_module_build_path (const gchar * directory, const gchar * module_name)
{
  gchar * D.7336;
  int D.7337;
  char D.7342;
  char * lib_prefix;

  lib_prefix = "";
  if (module_name == 0B) goto <D.7334>; else goto <D.7335>;
  <D.7334>:
  D.7336 = 0B;
  return D.7336;
  <D.7335>:
  D.7337 = strncmp (module_name, "lib", 3);
  if (D.7337 != 0) goto <D.7338>; else goto <D.7339>;
  <D.7338>:
  lib_prefix = "lib";
  <D.7339>:
  if (directory != 0B) goto <D.7340>; else goto <D.7341>;
  <D.7340>:
  D.7342 = *directory;
  if (D.7342 != 0) goto <D.7343>; else goto <D.7344>;
  <D.7343>:
  D.7336 = monoeg_g_strdup_printf ("%s/%s%s.so", directory, lib_prefix, module_name);
  return D.7336;
  <D.7344>:
  <D.7341>:
  D.7336 = monoeg_g_strdup_printf ("%s%s.so", lib_prefix, module_name);
  return D.7336;
}


