Moved heap functions to ntdll.
Got rid of internal heap flags.
Reimplemented MapLS to not depend on the segptr heap.

diff --git a/include/winbase.h b/include/winbase.h
index 9355baf..388dda8 100644
--- a/include/winbase.h
+++ b/include/winbase.h
@@ -985,20 +985,33 @@
 
 /*int WinMain(HINSTANCE, HINSTANCE prev, char *cmd, int show);*/
 
-LONG WINAPI RtlEnterCriticalSection( CRITICAL_SECTION *crit );
-LONG WINAPI RtlLeaveCriticalSection( CRITICAL_SECTION *crit );
-LONG WINAPI RtlDeleteCriticalSection( CRITICAL_SECTION *crit );
-BOOL WINAPI RtlTryEnterCriticalSection( CRITICAL_SECTION *crit );
-/* FIXME: need to use defines because we don't have proper imports yet */
+/* FIXME: need to use defines because we don't have proper imports everywhere yet */
+#ifndef have_proper_imports
+LONG        WINAPI RtlEnterCriticalSection( CRITICAL_SECTION *crit );
+LONG        WINAPI RtlLeaveCriticalSection( CRITICAL_SECTION *crit );
+LONG        WINAPI RtlDeleteCriticalSection( CRITICAL_SECTION *crit );
+BOOL        WINAPI RtlTryEnterCriticalSection( CRITICAL_SECTION *crit );
+PVOID       WINAPI RtlAllocateHeap(HANDLE,ULONG,ULONG);
+BOOLEAN     WINAPI RtlFreeHeap(HANDLE,ULONG,PVOID);
+PVOID       WINAPI RtlReAllocateHeap(HANDLE,ULONG,PVOID,ULONG);
+ULONG       WINAPI RtlSizeHeap(HANDLE,ULONG,PVOID);
+#define     HeapAlloc(heap,flags,size) RtlAllocateHeap(heap,flags,size)
+#define     HeapFree(heap,flags,ptr) RtlFreeHeap(heap,flags,ptr)
+#define     HeapReAlloc(heap,flags,ptr,size) RtlReAllocateHeap(heap,flags,ptr,size)
+#define     HeapSize(heap,flags,ptr) RtlSizeHeap(heap,flags,ptr)
 #define     EnterCriticalSection(crit) RtlEnterCriticalSection(crit)
 #define     LeaveCriticalSection(crit) RtlLeaveCriticalSection(crit)
 #define     DeleteCriticalSection(crit) RtlDeleteCriticalSection(crit)
 #define     TryEnterCriticalSection(crit) RtlTryEnterCriticalSection(crit)
-#if 0
-void      WINAPI DeleteCriticalSection(CRITICAL_SECTION *lpCrit);
-void      WINAPI EnterCriticalSection(CRITICAL_SECTION *lpCrit);
-BOOL      WINAPI TryEnterCriticalSection(CRITICAL_SECTION *lpCrit);
-void      WINAPI LeaveCriticalSection(CRITICAL_SECTION *lpCrit);
+#else
+LPVOID      WINAPI HeapAlloc(HANDLE,DWORD,DWORD);
+BOOL        WINAPI HeapFree(HANDLE,DWORD,LPVOID);
+LPVOID      WINAPI HeapReAlloc(HANDLE,DWORD,LPVOID,DWORD);
+DWORD       WINAPI HeapSize(HANDLE,DWORD,LPVOID);
+void        WINAPI DeleteCriticalSection(CRITICAL_SECTION *lpCrit);
+void        WINAPI EnterCriticalSection(CRITICAL_SECTION *lpCrit);
+BOOL        WINAPI TryEnterCriticalSection(CRITICAL_SECTION *lpCrit);
+void        WINAPI LeaveCriticalSection(CRITICAL_SECTION *lpCrit);
 #endif
 
 void      WINAPI InitializeCriticalSection(CRITICAL_SECTION *lpCrit);
@@ -1237,14 +1250,10 @@
 BOOL        WINAPI GetUserNameW(LPWSTR,LPDWORD);
 #define     GetUserName WINELIB_NAME_AW(GetUserName)
 VOID        WINAPI GlobalMemoryStatus(LPMEMORYSTATUS);
-LPVOID      WINAPI HeapAlloc(HANDLE,DWORD,DWORD);
 DWORD       WINAPI HeapCompact(HANDLE,DWORD);
 HANDLE    WINAPI HeapCreate(DWORD,DWORD,DWORD);
 BOOL      WINAPI HeapDestroy(HANDLE);
-BOOL      WINAPI HeapFree(HANDLE,DWORD,LPVOID);
 BOOL      WINAPI HeapLock(HANDLE);
-LPVOID      WINAPI HeapReAlloc(HANDLE,DWORD,LPVOID,DWORD);
-DWORD       WINAPI HeapSize(HANDLE,DWORD,LPVOID);
 BOOL      WINAPI HeapUnlock(HANDLE);
 BOOL      WINAPI HeapValidate(HANDLE,DWORD,LPCVOID);
 BOOL        WINAPI HeapWalk(HANDLE,LPPROCESS_HEAP_ENTRY);