mono_property_hash_new ()
{
  struct GHashTable * D.7247;
  struct MonoPropertyHash * D.7248;
  struct MonoPropertyHash * hash;

  hash = monoeg_malloc0 (4);
  D.7247 = monoeg_g_hash_table_new (0B, 0B);
  hash->hashes = D.7247;
  D.7248 = hash;
  return D.7248;
}


mono_property_hash_destroy (struct MonoPropertyHash * hash)
{
  struct GHashTable * D.7250;

  D.7250 = hash->hashes;
  monoeg_g_hash_table_foreach (D.7250, free_hash, 0B);
  D.7250 = hash->hashes;
  monoeg_g_hash_table_destroy (D.7250);
  monoeg_g_free (hash);
}


free_hash (void * key, void * value, void * user_data)
{
  struct GHashTable * hash;

  hash = value;
  monoeg_g_hash_table_destroy (hash);
}


mono_property_hash_insert (struct MonoPropertyHash * hash, void * object, guint32 property, void * value)
{
  struct GHashTable * D.7251;
  const void * property.0;
  void * property.1;
  struct GHashTable * prop_hash;

  D.7251 = hash->hashes;
  property.0 = (const void *) property;
  prop_hash = monoeg_g_hash_table_lookup (D.7251, property.0);
  if (prop_hash == 0B) goto <D.7253>; else goto <D.7254>;
  <D.7253>:
  prop_hash = monoeg_g_hash_table_new (0B, 0B);
  D.7251 = hash->hashes;
  property.1 = (void *) property;
  monoeg_g_hash_table_insert_replace (D.7251, property.1, prop_hash, 0);
  <D.7254>:
  monoeg_g_hash_table_insert_replace (prop_hash, object, value, 0);
}


mono_property_hash_remove_object (struct MonoPropertyHash * hash, void * object)
{
  struct GHashTable * D.7256;

  D.7256 = hash->hashes;
  monoeg_g_hash_table_foreach (D.7256, remove_object, object);
}


remove_object (void * key, void * value, void * user_data)
{
  struct GHashTable * prop_hash;

  prop_hash = value;
  monoeg_g_hash_table_remove (prop_hash, user_data);
}


mono_property_hash_lookup (struct MonoPropertyHash * hash, void * object, guint32 property)
{
  struct GHashTable * D.7257;
  const void * property.2;
  void * D.7261;
  struct GHashTable * prop_hash;

  D.7257 = hash->hashes;
  property.2 = (const void *) property;
  prop_hash = monoeg_g_hash_table_lookup (D.7257, property.2);
  if (prop_hash == 0B) goto <D.7259>; else goto <D.7260>;
  <D.7259>:
  D.7261 = 0B;
  return D.7261;
  <D.7260>:
  D.7261 = monoeg_g_hash_table_lookup (prop_hash, object);
  return D.7261;
}


