 +  bn/asm/sparcv9-mont.pl
 +  bn/asm/via-mont.pl
 +  bn/asm/vis3-mont.pl
-+  bn/asm/x86_64-gcc.c
++  bn/asm/x86_64-gcc.c # TRICKY part of bn_asm_srcs below
 +  bn/asm/x86_64-gf2m.pl
 +  bn/asm/x86_64-mont5.pl
 +  bn/asm/x86_64-mont.pl

diff --git a/CMakeLists.txt b/CMakeLists.txt
new file mode 100644
index 0000000..aaedfaa
--- /dev/null
+++ b/CMakeLists.txt
@@ -0,0 +1,57 @@
+cmake_minimum_required(VERSION 3.12)
+project(openssl)
+include(flags OPTIONAL)
+########################################
+set_property(GLOBAL PROPERTY USE_FOLDERS ON) # enables MSVC Solution Folders
+add_definitions(
+  -DOPENSSL_NO_ASM
+  -DOPENSSL_THREADS
+  -D_REENTRANT
+  )
+if(WIN32)
+  add_definitions(
+    -DOPENSSL_SYS_WIN32
+    -DOPENSSL_NO_AFALGENG
+    -DWIN32_LEAN_AND_MEAN
+    -DUNICODE -D_UNICODE
+    -D_CRT_SECURE_NO_DEPRECATE
+    -D_WINSOCK_DEPRECATED_NO_WARNINGS
+    )
+endif()
+########################################
+function(compareCmakeFilesys files)
+  file(GLOB_RECURSE filesys RELATIVE ${CMAKE_CURRENT_LIST_DIR} *)

+  )
+if(WIN32)
+  set(DSO_SCHEME_MACROS
+    DSO_WIN32
+    )
+elseif(UNIX)
+  set(DSO_SCHEME_MACROS
