monoeg_g_module_open (const gchar * file, GModuleFlags flags)
{
  unsigned int D.5144;
  unsigned int D.5147;
  struct GModule * D.5152;
  int f;
  struct GModule * module;
  void * handle;

  f = 0;
  flags = flags & 3;
  D.5144 = flags & 1;
  if (D.5144 != 0) goto <D.5145>; else goto <D.5146>;
  <D.5145>:
  f = f | 1;
  <D.5146>:
  D.5147 = flags & 2;
  if (D.5147 != 0) goto <D.5148>; else goto <D.5149>;
  <D.5148>:
  f = f;
  <D.5149>:
  handle = dlopen (file, f);
  if (handle == 0B) goto <D.5150>; else goto <D.5151>;
  <D.5150>:
  D.5152 = 0B;
  return D.5152;
  <D.5151>:
  module = monoeg_malloc (8);
  module->handle = handle;
  D.5152 = module;
  return D.5152;
}


monoeg_g_module_symbol (struct GModule * module, const gchar * symbol_name, void * * symbol)
{
  gboolean D.5157;
  void * D.5161;
  void * D.5162;
  void * D.5163;
  _Bool D.5164;

  if (symbol_name == 0B) goto <D.5154>; else goto <D.5156>;
  <D.5156>:
  if (symbol == 0B) goto <D.5154>; else goto <D.5155>;
  <D.5154>:
  D.5157 = 0;
  return D.5157;
  <D.5155>:
  if (module == 0B) goto <D.5158>; else goto <D.5160>;
  <D.5160>:
  D.5161 = module->handle;
  if (D.5161 == 0B) goto <D.5158>; else goto <D.5159>;
  <D.5158>:
  D.5157 = 0;
  return D.5157;
  <D.5159>:
  D.5161 = module->handle;
  D.5162 = dlsym (D.5161, symbol_name);
  *symbol = D.5162;
  D.5163 = *symbol;
  D.5164 = D.5163 != 0B;
  D.5157 = (gboolean) D.5164;
  return D.5157;
}


monoeg_g_module_error ()
{
  const gchar * D.5166;

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


monoeg_g_module_close (struct GModule * module)
{
  void * D.5171;
  gboolean D.5172;
  int D.5173;
  _Bool D.5174;
  void * handle;

  if (module == 0B) goto <D.5168>; else goto <D.5170>;
  <D.5170>:
  D.5171 = module->handle;
  if (D.5171 == 0B) goto <D.5168>; else goto <D.5169>;
  <D.5168>:
  D.5172 = 0;
  return D.5172;
  <D.5169>:
  handle = module->handle;
  module->handle = 0B;
  monoeg_g_free (module);
  D.5173 = dlclose (handle);
  D.5174 = D.5173 == 0;
  D.5172 = (gboolean) D.5174;
  return D.5172;
}


monoeg_g_module_build_path (const gchar * directory, const gchar * module_name)
{
  gchar * D.5178;
  int D.5179;
  char D.5184;
  char * lib_prefix;

  lib_prefix = "";
  if (module_name == 0B) goto <D.5176>; else goto <D.5177>;
  <D.5176>:
  D.5178 = 0B;
  return D.5178;
  <D.5177>:
  D.5179 = strncmp (module_name, "lib", 3);
  if (D.5179 != 0) goto <D.5180>; else goto <D.5181>;
  <D.5180>:
  lib_prefix = "lib";
  <D.5181>:
  if (directory != 0B) goto <D.5182>; else goto <D.5183>;
  <D.5182>:
  D.5184 = *directory;
  if (D.5184 != 0) goto <D.5185>; else goto <D.5186>;
  <D.5185>:
  D.5178 = monoeg_g_strdup_printf ("%s/%s%s.so", directory, lib_prefix, module_name);
  return D.5178;
  <D.5186>:
  <D.5183>:
  D.5178 = monoeg_g_strdup_printf ("%s%s.so", lib_prefix, module_name);
  return D.5178;
}


