struct cr3_32 * shadow_cr3 = (struct cr3_32 *)&(info->shdw_pg_state.shadow_cr3);
        struct cr3_32 * guest_cr3 = (struct cr3_32 *)&(info->shdw_pg_state.guest_cr3);
 
+       PrintDebug("fooo1\n");
+
        /* Delete the current Page Tables */
-       delete_page_tables_pde32((pde32_t *)CR3_TO_PDE32(shadow_cr3));
+       delete_page_tables_pde32((pde32_t *)CR3_TO_PDE32(*(uint_t*)shadow_cr3));
 
+       PrintDebug("fooo2\n");
        *guest_cr3 = *new_cr3;
 
        // Something like this
 
 extern struct vmm_os_hooks * os_hooks;
 
 void delete_page_tables_pde32(pde32_t * pde) {
-  int i, j;
+  int i;//, j;
 
   if (pde == NULL) { 
     return;
   for (i = 0; (i < MAX_PDE32_ENTRIES); i++) {
     if (pde[i].present) {
       pte32_t * pte = (pte32_t *)(pde[i].pt_base_addr << PAGE_POWER);
-      
-      for (j = 0; (j < MAX_PTE32_ENTRIES); j++) {
+
+      /*
+       for (j = 0; (j < MAX_PTE32_ENTRIES); j++) {
        if ((pte[j].present)) {
-         os_hooks->free_page((void *)(pte[j].page_base_addr << PAGE_POWER));
+       os_hooks->free_page((void *)(pte[j].page_base_addr << PAGE_POWER));
        }
-      }
-      
+       }
+      */
+      //PrintDebug("Deleting PTE %d (%x)\n", i, pte);
       os_hooks->free_page(pte);
     }
   }
 
+  //  PrintDebug("Deleting PDE (%x)\n", pde);
   os_hooks->free_page(pde);
 }