Microsoft does things backwards sometimes, and this is yet another example of this.
System32 is the 64-bit Windows system directory and
SysWOW64 is the 32-bit Windows system directory — entirely the opposite way around to what the directory names would suggest.
In Windows, there is a "Windows" directory and a "System" directory, and this has been true all of the way back to when Windows was 16-bit.
Windows programs are supposed to locate them using system API functions such as
GetSystemDirectory(); and if everyone had done that the world would be quite different at this point. But too many people foolishly hardwired the actual name of the directory,
\Windows\System32, into their programs, and then ported those programs from 32-bit Windows to 64-bit Windows. As a consequence, a whole lot of programs were looking for 64-bit executables and libraries in the
\Windows\System32 directory, whose name they had hardwired. (Ironically, there was the same issue when migrating from 16-bit Windows to 32-bit Windows. The 16-bit "System" directory was
So the people at Microsoft chose to make
\Windows\System32 the directory that native, 64-bit, Windows programs would find the 64-bit executables and libraries in, and, since 32-bit programs run on top of a shim layer anyway in 64-bit Windows, accesses to the "System" directory by 32-bit programs are redirected to a new
Hence the bizarre situation that now obtains.