diff --git a/dlls/kernel32/tests/atom.c b/dlls/kernel32/tests/atom.c
index a0f99d1..0c17408 100644
--- a/dlls/kernel32/tests/atom.c
+++ b/dlls/kernel32/tests/atom.c
@@ -266,7 +266,7 @@
             {
                 /* len == 0 with ERROR_MORE_DATA is on NT3.51 */
                 ok(len == 1 || (len == 0 && GetLastError() == ERROR_MORE_DATA),
-                         "0x%04x: got %u with %d (excepted '1' or '0' with "
+                         "0x%04x: got %u with %d (expected '1' or '0' with "
                          "ERROR_MORE_DATA)\n", i, len, GetLastError());
                 ok(outW[1] == DOUBLE('.'), "buffer overwrite\n");
             }
diff --git a/dlls/shell32/shell32_main.c b/dlls/shell32/shell32_main.c
index 5370b99..97d8e98 100644
--- a/dlls/shell32/shell32_main.c
+++ b/dlls/shell32/shell32_main.c
@@ -1183,7 +1183,7 @@
  * SHELL32 DllMain
  *
  * NOTES
- *  calling oleinitialize here breaks sone apps.
+ *  calling oleinitialize here breaks some apps.
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
 {
diff --git a/dlls/shlwapi/shlwapi_main.c b/dlls/shlwapi/shlwapi_main.c
index b51d3d6..78c4520 100644
--- a/dlls/shlwapi/shlwapi_main.c
+++ b/dlls/shlwapi/shlwapi_main.c
@@ -51,7 +51,7 @@
  * SHLWAPI DllMain
  *
  * NOTES
- *  calling oleinitialize here breaks sone apps.
+ *  calling oleinitialize here breaks some apps.
  */
 BOOL WINAPI DllMain(HINSTANCE hinstDLL, DWORD fdwReason, LPVOID fImpLoad)
 {
diff --git a/dlls/urlmon/tests/misc.c b/dlls/urlmon/tests/misc.c
index c45428c..ea634c1 100644
--- a/dlls/urlmon/tests/misc.c
+++ b/dlls/urlmon/tests/misc.c
@@ -766,7 +766,7 @@
     CoTaskMemFree(mime);
 
     hres = pFindMimeFromData(NULL, NULL, NULL, 0, NULL, 0, &mime, 0);
-    ok(hres == E_INVALIDARG, "FindMimeFromData failed: %08x, excepted E_INVALIDARG\n", hres);
+    ok(hres == E_INVALIDARG, "FindMimeFromData failed: %08x, expected E_INVALIDARG\n", hres);
 
     hres = pFindMimeFromData(NULL, NULL, NULL, 0, mimeTextPlain, 0, &mime, 0);
     ok(hres == E_INVALIDARG, "FindMimeFromData failed: %08x, expected E_INVALIDARG\n", hres);
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c
index a203336..9e111f8 100644
--- a/dlls/ws2_32/tests/sock.c
+++ b/dlls/ws2_32/tests/sock.c
@@ -5263,7 +5263,7 @@
     todo_wine ok(GetLastError() == ERROR_NETNAME_DELETED, "Last error was %d\n", GetLastError());
     ok(key == 125, "Key is %lu\n", key);
     ok(num_bytes == 0, "Number of bytes received is %u\n", num_bytes);
-    ok(olp == &ov, "Overlaped structure is at %p\n", olp);
+    ok(olp == &ov, "Overlapped structure is at %p\n", olp);
 
     SetLastError(0xdeadbeef);
     key = 0xdeadbeef;
@@ -5274,8 +5274,8 @@
     ok(bret == FALSE, "GetQueuedCompletionStatus returned %d\n", bret );
     ok(GetLastError() == WAIT_TIMEOUT, "Last error was %d\n", GetLastError());
     ok(key == 0xdeadbeef, "Key is %lu\n", key);
-    ok(num_bytes == 0xdeadbeef, "Number of bytes transfered is %u\n", num_bytes);
-    ok(!olp, "Overlaped structure is at %p\n", olp);
+    ok(num_bytes == 0xdeadbeef, "Number of bytes transferred is %u\n", num_bytes);
+    ok(!olp, "Overlapped structure is at %p\n", olp);
 
     if (dest != INVALID_SOCKET)
         closesocket(dest);
@@ -5324,8 +5324,8 @@
     ok(bret == FALSE, "GetQueuedCompletionStatus returned %u\n", bret );
     ok(GetLastError() == WAIT_TIMEOUT, "Last error was %d\n", GetLastError());
     ok(key == 0xdeadbeef, "Key is %lu\n", key);
-    ok(num_bytes == 0xdeadbeef, "Number of bytes transfered is %u\n", num_bytes);
-    ok(!olp, "Overlaped structure is at %p\n", olp);
+    ok(num_bytes == 0xdeadbeef, "Number of bytes transferred is %u\n", num_bytes);
+    ok(!olp, "Overlapped structure is at %p\n", olp);
 
     if (dest != INVALID_SOCKET)
         closesocket(dest);
@@ -5399,8 +5399,8 @@
     ok(bret == FALSE, "failed to get completion status %u\n", bret);
     todo_wine ok(GetLastError() == ERROR_OPERATION_ABORTED, "Last error was %d\n", GetLastError());
     todo_wine ok(key == 125, "Key is %lu\n", key);
-    todo_wine ok(num_bytes == 0, "Number of bytes transfered is %u\n", num_bytes);
-    todo_wine ok(olp == &ov, "Overlaped structure is at %p\n", olp);
+    todo_wine ok(num_bytes == 0, "Number of bytes transferred is %u\n", num_bytes);
+    todo_wine ok(olp == &ov, "Overlapped structure is at %p\n", olp);
     todo_wine ok(olp && (olp->Internal == (ULONG)STATUS_CANCELLED), "Internal status is %lx\n", olp ? olp->Internal : 0);
 
     SetLastError(0xdeadbeef);
@@ -5411,8 +5411,8 @@
     ok(bret == FALSE, "failed to get completion status %u\n", bret);
     ok(GetLastError() == WAIT_TIMEOUT, "Last error was %d\n", GetLastError());
     ok(key == 0xdeadbeef, "Key is %lu\n", key);
-    ok(num_bytes == 0xdeadbeef, "Number of bytes transfered is %u\n", num_bytes);
-    ok(!olp, "Overlaped structure is at %p\n", olp);
+    ok(num_bytes == 0xdeadbeef, "Number of bytes transferred is %u\n", num_bytes);
+    ok(!olp, "Overlapped structure is at %p\n", olp);
 
     src = socket(AF_INET, SOCK_STREAM, 0);
     if (src == INVALID_SOCKET)
@@ -5484,8 +5484,8 @@
     ok(bret == TRUE, "failed to get completion status %u\n", bret);
     ok(GetLastError() == 0xdeadbeef, "Last error was %d\n", GetLastError());
     ok(key == 125, "Key is %lu\n", key);
-    ok(num_bytes == 0, "Number of bytes transfered is %u\n", num_bytes);
-    ok(olp == &ov, "Overlaped structure is at %p\n", olp);
+    ok(num_bytes == 0, "Number of bytes transferred is %u\n", num_bytes);
+    ok(olp == &ov, "Overlapped structure is at %p\n", olp);
     ok(olp && (olp->Internal == (ULONG)STATUS_SUCCESS), "Internal status is %lx\n", olp ? olp->Internal : 0);
 
     SetLastError(0xdeadbeef);
@@ -5496,8 +5496,8 @@
     ok(bret == FALSE, "failed to get completion status %u\n", bret);
     ok(GetLastError() == WAIT_TIMEOUT, "Last error was %d\n", GetLastError());
     ok(key == 0xdeadbeef, "Key is %lu\n", key);
-    ok(num_bytes == 0xdeadbeef, "Number of bytes transfered is %u\n", num_bytes);
-    ok(!olp, "Overlaped structure is at %p\n", olp);
+    ok(num_bytes == 0xdeadbeef, "Number of bytes transferred is %u\n", num_bytes);
+    ok(!olp, "Overlapped structure is at %p\n", olp);
 
     if (dest != INVALID_SOCKET)
         closesocket(dest);
@@ -5584,8 +5584,8 @@
     ok(bret == TRUE, "failed to get completion status %u\n", bret);
     ok(GetLastError() == 0xdeadbeef, "Last error was %d\n", GetLastError());
     ok(key == 125, "Key is %lu\n", key);
-    ok(num_bytes == 1, "Number of bytes transfered is %u\n", num_bytes);
-    ok(olp == &ov, "Overlaped structure is at %p\n", olp);
+    ok(num_bytes == 1, "Number of bytes transferred is %u\n", num_bytes);
+    ok(olp == &ov, "Overlapped structure is at %p\n", olp);
     ok(olp && (olp->Internal == (ULONG)STATUS_SUCCESS), "Internal status is %lx\n", olp ? olp->Internal : 0);
 
     SetLastError(0xdeadbeef);
@@ -5596,8 +5596,8 @@
     ok(bret == FALSE, "failed to get completion status %u\n", bret);
     ok(GetLastError() == WAIT_TIMEOUT, "Last error was %d\n", GetLastError());
     ok(key == 0xdeadbeef, "Key is %lu\n", key);
-    ok(num_bytes == 0xdeadbeef, "Number of bytes transfered is %u\n", num_bytes);
-    ok(!olp, "Overlaped structure is at %p\n", olp);
+    ok(num_bytes == 0xdeadbeef, "Number of bytes transferred is %u\n", num_bytes);
+    ok(!olp, "Overlapped structure is at %p\n", olp);
 
 
     if (dest != INVALID_SOCKET)
@@ -5684,8 +5684,8 @@
     ok(bret == FALSE, "failed to get completion status %u\n", bret);
     todo_wine ok((GetLastError() == ERROR_NETNAME_DELETED) || (GetLastError() == ERROR_CONNECTION_ABORTED), "Last error was %d\n", GetLastError());
     ok(key == 125, "Key is %lu\n", key);
-    ok(num_bytes == 0, "Number of bytes transfered is %u\n", num_bytes);
-    ok(olp == &ov, "Overlaped structure is at %p\n", olp);
+    ok(num_bytes == 0, "Number of bytes transferred is %u\n", num_bytes);
+    ok(olp == &ov, "Overlapped structure is at %p\n", olp);
     todo_wine ok(olp && ((olp->Internal == (ULONG)STATUS_LOCAL_DISCONNECT)
                       || (olp->Internal == (ULONG)STATUS_CONNECTION_ABORTED)), "Internal status is %lx\n", olp ? olp->Internal : 0);
 
@@ -5697,8 +5697,8 @@
     ok(bret == FALSE, "failed to get completion status %u\n", bret);
     ok(GetLastError() == WAIT_TIMEOUT, "Last error was %d\n", GetLastError());
     ok(key == 0xdeadbeef, "Key is %lu\n", key);
-    ok(num_bytes == 0xdeadbeef, "Number of bytes transfered is %u\n", num_bytes);
-    ok(!olp, "Overlaped structure is at %p\n", olp);
+    ok(num_bytes == 0xdeadbeef, "Number of bytes transferred is %u\n", num_bytes);
+    ok(!olp, "Overlapped structure is at %p\n", olp);
 
 
     end:
