Build _ctypes.pyd for win AMD64 into the MSVC project file.
Since MSVC doesn't know about .asm files, a helper batch file is needed
to find ml64.exe in predefined locations.  The helper script hardcodes
the path to the MS Platform SDK.
diff --git a/PCbuild/_ctypes.vcproj b/PCbuild/_ctypes.vcproj
index a77fdd4..748ee44 100644
--- a/PCbuild/_ctypes.vcproj
+++ b/PCbuild/_ctypes.vcproj
@@ -4,6 +4,7 @@
 	Version="7.10"
 	Name="_ctypes"
 	ProjectGUID="{F22F40F4-D318-40DC-96B3-88DC81CE0894}"
+	RootNamespace="_ctypes"
 	Keyword="Win32Proj">
 	<Platforms>
 		<Platform
@@ -128,7 +129,7 @@
 			CharacterSet="2">
 			<Tool
 				Name="VCCLCompilerTool"
-				AdditionalOptions=" /USECL:MS_OPTERON"
+				AdditionalOptions=" /USECL:MS_OPTERON /GS-"
 				InlineFunctionExpansion="1"
 				AdditionalIncludeDirectories="..\Include,..\PC,..\Modules\_ctypes\libffi_msvc"
 				PreprocessorDefinitions="WIN32;NDEBUG;_WINDOWS"
@@ -268,6 +269,41 @@
 		</File>
 		<File
 			RelativePath="..\Modules\_ctypes\libffi_msvc\win32.c">
+			<FileConfiguration
+				Name="ReleaseAMD64|Win32"
+				ExcludedFromBuild="TRUE">
+				<Tool
+					Name="VCCLCompilerTool"/>
+			</FileConfiguration>
+		</File>
+		<File
+			RelativePath="..\Modules\_ctypes\libffi_msvc\win64.asm">
+			<FileConfiguration
+				Name="Debug|Win32"
+				ExcludedFromBuild="TRUE">
+				<Tool
+					Name="VCCustomBuildTool"/>
+			</FileConfiguration>
+			<FileConfiguration
+				Name="Release|Win32"
+				ExcludedFromBuild="TRUE">
+				<Tool
+					Name="VCCustomBuildTool"/>
+			</FileConfiguration>
+			<FileConfiguration
+				Name="ReleaseAMD64|Win32">
+				<Tool
+					Name="VCCustomBuildTool"
+					CommandLine="amd64_ml64 /nologo /c /Fo &quot;$(IntDir)\win64.obj&quot; &quot;$(InputPath)&quot;
+"
+					Outputs="&quot;$(IntDir)\win64.obj&quot;"/>
+			</FileConfiguration>
+			<FileConfiguration
+				Name="ReleaseItanium|Win32"
+				ExcludedFromBuild="TRUE">
+				<Tool
+					Name="VCCustomBuildTool"/>
+			</FileConfiguration>
 		</File>
 	</Files>
 	<Globals>
diff --git a/PCbuild/amd64_ml64.bat b/PCbuild/amd64_ml64.bat
new file mode 100644
index 0000000..fa9acf1
--- /dev/null
+++ b/PCbuild/amd64_ml64.bat
@@ -0,0 +1,17 @@
+@echo off
+rem Try to find the AMD64 assembler and call it with the supplied arguments.
+
+set MLEXE=Microsoft Platform SDK\Bin\Win64\x86\AMD64\ml64.EXE
+
+rem For the environment variables see also
+rem http://msdn.microsoft.com/library/en-us/win64/win64/wow64_implementation_details.asp
+
+if exist "%ProgramFiles%\%MLEXE%" (
+  set ML64="%ProgramFiles%\%MLEXE%"
+) else if exist "%ProgramW6432%\%MLEXE%" (
+  set ML64="%ProgramW6432%\%MLEXE%"
+) else (
+  set ML64=ml64.exe
+)
+
+%ML64% %*