diff --git a/dlls/kernel/kernel_main.c b/dlls/kernel/kernel_main.c
index 0a69fa9..2789616 100644
--- a/dlls/kernel/kernel_main.c
+++ b/dlls/kernel/kernel_main.c
@@ -110,72 +110,7 @@
  *
  * Entry point for kernel functions that do nothing.
  */
-LONG WINAPI KERNEL_nop(void) { return 0; }
-
-
-/***************************************************************************
- *
- * Win 2.x string functions now moved to USER
- *
- * We rather want to implement them here instead of doing Callouts
- */
-
-/***********************************************************************
- *		KERNEL_AnsiNext16 (KERNEL.77)
- */
-SEGPTR WINAPI KERNEL_AnsiNext16(SEGPTR current)
+LONG WINAPI KERNEL_nop(void)
 {
-    return (*(char *)MapSL(current)) ? current + 1 : current;
-}
-
-/***********************************************************************
- *		KERNEL_AnsiPrev16(KERNEL.78)
- */	
-SEGPTR WINAPI KERNEL_AnsiPrev16( SEGPTR start, SEGPTR current )
-{
-    return (current==start)?start:current-1;
-}
-
-/***********************************************************************
- *		KERNEL_AnsiUpper16 (KERNEL.79)
- */
-SEGPTR WINAPI KERNEL_AnsiUpper16( SEGPTR strOrChar )
-{
-    /* uppercase only one char if strOrChar < 0x10000 */
-    if (HIWORD(strOrChar))
-    {
-        char *s = MapSL(strOrChar);
-	while (*s) {
-	    *s = toupper(*s);
-	    s++;
-	}
-        return strOrChar;
-    }
-    else return toupper((char)strOrChar);
-}
-
-/***********************************************************************
- *		KERNEL_AnsiLower16 (KERNEL.80)
- */
-SEGPTR WINAPI KERNEL_AnsiLower16( SEGPTR strOrChar )
-{
-    /* lowercase only one char if strOrChar < 0x10000 */
-    if (HIWORD(strOrChar))
-    {
-        char *s = MapSL(strOrChar);
-	while (*s) {
-	    *s = tolower(*s);
-	    s++;
-	}
-        return strOrChar;
-    }
-    else return tolower((char)strOrChar);
-}
-
-/***********************************************************************
- *		KERNEL_lstrcmp16 (KERNEL.87)
- */
-INT16 WINAPI KERNEL_lstrcmp16( LPCSTR str1, LPCSTR str2 )
-{
-    return (INT16)strcmp( str1, str2 );
+    return 0;
 }
