diff --git a/Usermode/Libraries/ld-acess.so_src/common.h b/Usermode/Libraries/ld-acess.so_src/common.h
index e0620c264da9224f642b9afaa818d9375091f304..af620be660a9bb57022adaadd41e2769f70b2bd5 100644
--- a/Usermode/Libraries/ld-acess.so_src/common.h
+++ b/Usermode/Libraries/ld-acess.so_src/common.h
@@ -18,6 +18,8 @@ typedef uint8_t 	Uint8;
 typedef uint16_t	Uint16;
 typedef uint32_t	Uint32;
 
+#define ASSERT(cnd) do { if( !(cnd) ) { _SysDebug("ASSERT: "#cnd" failed"); *(volatile int*)1 = 123; } } while(0)
+
 // HACK: Replace with underscored
 #define SysDebug	_SysDebug
 
@@ -32,6 +34,11 @@ typedef struct {
 	char	*Name;
 }	tLoadedLib;
 
+typedef struct {
+	void	*Value;
+	const char	*Name;
+} tLocalExport;
+
 // === GLOBALS ===
 extern tLoadedLib	gLoadedLibraries[MAX_LOADED_LIBRARIES];
 
diff --git a/Usermode/Libraries/ld-acess.so_src/export.c b/Usermode/Libraries/ld-acess.so_src/export.c
index e40dd8eb250324624397de216db9f8a0dda881c6..5a7e6e0dd801b2e176f4b444b698c8435a29bde1 100644
--- a/Usermode/Libraries/ld-acess.so_src/export.c
+++ b/Usermode/Libraries/ld-acess.so_src/export.c
@@ -26,10 +26,7 @@ extern void	_ZN4_sys5debugEPKcz(const char *,...);	// C++ "_sys::debug" used by
 #define SYSCALL6(name,num)	EXP(name),
 
 // === CONSTANTS ===
-const struct {
-	void	*Value;
-	char	*Name;
-}	caLocalExports[] = {
+const tLocalExport caLocalExports[] = {
 	EXP(gLoadedLibraries),
 	EXP(_errno),
 	EXP(ldacess_DumpLoadedLibraries),
@@ -44,14 +41,6 @@ const struct {
 	{0, "__cxa_type_match"},
 	{0, "__cxa_begin_cleanup"},
 	#endif
-#if 0
-	EXP(__umoddi3),
-	EXP(__udivdi3),
-	EXP(__divsi3),
-	EXP(__modsi3),
-	EXP(__udivsi3),
-	EXP(__umodsi3)
-#endif
 };
 
 const int	ciNumLocalExports = sizeof(caLocalExports)/sizeof(caLocalExports[0]);
diff --git a/Usermode/Libraries/ld-acess.so_src/loadlib.c b/Usermode/Libraries/ld-acess.so_src/loadlib.c
index 31dcbd8acfa23840d954df1e2b555c7a78fee44f..2a0830302c923e33b1d1bda9717817d6b9e89070 100644
--- a/Usermode/Libraries/ld-acess.so_src/loadlib.c
+++ b/Usermode/Libraries/ld-acess.so_src/loadlib.c
@@ -18,10 +18,7 @@
 #define MAX_QUEUED_ENTRYPOINTS	8
 
 // === IMPORTS ===
-extern const struct {
-	void	*Value;
-	char	*Name;
-}	caLocalExports[];
+extern const tLocalExport	caLocalExports[];
 extern const int	ciNumLocalExports;
 extern char	**gEnvP;
 extern char	gLinkedBase[];
@@ -48,11 +45,9 @@ void ldacess_DumpLoadedLibraries(void)
 {
 	for( int i = 0; i < MAX_LOADED_LIBRARIES; i ++ )
 	{
-		if(gLoadedLibraries[i].Base == 0)	break;	// Last entry has Base set to NULL
-		_SysDebug("%p: %s",
-			gLoadedLibraries[i].Base,
-			gLoadedLibraries[i].Name
-			);
+		const tLoadedLib* ll = &gLoadedLibraries[i];
+		if(ll->Base == 0)	break;	// Last entry has Base set to NULL
+		_SysDebug("%p: %s", ll->Base, ll->Name);
 	}
 }
 
@@ -150,7 +145,6 @@ void *LoadLibrary(const char *SoName, const char *SearchDir, char **envp)
  */
 void *IsFileLoaded(const char *file)
 {
-	 int	i;
 	DEBUGS("IsFileLoaded: (file='%s')", file);
 
 	// Applications link against either libld-acess.so or ld-acess.so
@@ -161,7 +155,7 @@ void *IsFileLoaded(const char *file)
 		return &gLinkedBase;
 	}
 
-	for( i = 0; i < MAX_LOADED_LIBRARIES; i++ )
+	for( int i = 0; i < MAX_LOADED_LIBRARIES; i++ )
 	{
 		if(gLoadedLibraries[i].Base == 0)	break;	// Last entry has Base set to NULL
 		DEBUGS(" strcmp('%s', '%s')", gLoadedLibraries[i].Name, file);
@@ -216,7 +210,6 @@ void AddLoaded(const char *File, void *base)
  */
 void Unload(void *Base)
 {	
-	 int	i, j;
 	 int	id;
 	char	*str;
 	for( id = 0; id < MAX_LOADED_LIBRARIES; id++ )
@@ -231,8 +224,8 @@ void Unload(void *Base)
 	str = gLoadedLibraries[id].Name;
 	
 	// Compact Loaded List
-	j = id;
-	for( i = j + 1; i < MAX_LOADED_LIBRARIES; i++, j++ )
+	int j = id;
+	for( int i = j + 1; i < MAX_LOADED_LIBRARIES; i++, j++ )
 	{
 		if(gLoadedLibraries[i].Base == 0)	break;
 		// Compact String
@@ -256,14 +249,18 @@ void Unload(void *Base)
 */
 int GetSymbol(const char *name, void **Value, size_t *Size, void *IgnoreBase)
 {
+	ASSERT(name);
+	ASSERT(Value);
+	ASSERT(Size);
 	//SysDebug("GetSymbol: (%s)");
 	for( int i = 0; i < ciNumLocalExports; i ++ )
 	{
-		if( strcmp(caLocalExports[i].Name, name) == 0 ) {
-			*Value = caLocalExports[i].Value;
+		const tLocalExport* le = &caLocalExports[i];
+		if( strcmp(le->Name, name) == 0 ) {
+			*Value = le->Value;
 			if(Size)
 				*Size = 0;
-			//SysDebug("GetSymbol: Local %p+0x%x", *Value, 0);
+			DEBUGS("'%s' = Local %p+%#x", name, le->Value, 0);
 			return 1;
 		}
 	}
@@ -271,31 +268,34 @@ int GetSymbol(const char *name, void **Value, size_t *Size, void *IgnoreBase)
 	bool have_weak = false;	
 	for(int i = 0; i < MAX_LOADED_LIBRARIES && gLoadedLibraries[i].Base != 0; i ++)
 	{
+		const tLoadedLib* ll = &gLoadedLibraries[i];
 		// Allow ignoring the current module
-		if( gLoadedLibraries[i].Base == IgnoreBase ) {
+		if( ll->Base == IgnoreBase ) {
 			//SysDebug("GetSymbol: Ignore %p", gLoadedLibraries[i].Base);
 			continue ;
 		}
 		
-		//SysDebug(" GetSymbol: Trying 0x%x, '%s'",
-		//	gLoadedLibraries[i].Base, gLoadedLibraries[i].Name);
+		//SysDebug(" GetSymbol: Trying 0x%x, '%s'", ll->Base, ll->Name);
 		void	*tmpval;
 		size_t	tmpsize;
-		int rv = GetSymbolFromBase(gLoadedLibraries[i].Base, name, &tmpval, &tmpsize);
+		int rv = GetSymbolFromBase(ll->Base, name, &tmpval, &tmpsize);
 		if(rv)
 		{
 			*Value = tmpval;
 			*Size = tmpsize;
 			if( rv == 1 ) {
+				DEBUGS("'%s' = %p '%s' Strong %p+%#x", name, ll->Base, ll->Name, *Value, *Size);
 				return 1;
 			}
 			have_weak = true;
 		}
 	}
 	if(have_weak) {
+		DEBUGS("'%s' = Weak %p+%#x", name, *Value, *Size);
 		return 2;
 	}
 	else {
+		DEBUGS("'%s' = ?", name);
 		return 0;
 	}
 }