 +DEFINE_LHASH_OF(FUNCTION);
 diff --git a/crypto/CMakeLists.txt b/crypto/CMakeLists.txt
 new file mode 100644
-index 0000000..9016c70
+index 0000000..6234cf4
 --- /dev/null
 +++ b/crypto/CMakeLists.txt
-@@ -0,0 +1,1854 @@
+@@ -0,0 +1,1849 @@
 +set(lib_name crypto)
 +########################################
 +set(gen_file include/buildinf.h)

+    -DOPENSSL_USE_NODELETE
+    )
+  set(asmDir asmfromnode/archs/linux-x86_64/asm)
+endif()
+if(EXISTS ${CMAKE_SOURCE_DIR}/${asmDir} AND IS_DIRECTORY ${CMAKE_SOURCE_DIR}/${asmDir})
+  set(ASM_BUILD TRUE)

+list(APPEND ${lib_name}_libsrcs ${x509v3_srcs})
+########################################
+set(asmDir ../${asmDir}/crypto)
+if(MSVC)
+  set(asmExt asm)
+elseif(UNIX)
+  set(asmExt s)
+endif()
+if(ASM_BUILD)
+  set(root_asm_srcs
+    ${asmDir}/x86_64cpuid.${asmExt} # cpuid_asm_src
+    )
+  source_group(asm FILES ${root_asm_srcs})
+  set(asm_srcs ${root_asm_srcs})
+  ##########
+  set(aes_asm_srcs
+    ${asmDir}/aes/aesni-mb-x86_64.${asmExt}
+    ${asmDir}/aes/aesni-sha1-x86_64.${asmExt}
+    ${asmDir}/aes/aesni-sha256-x86_64.${asmExt}
+    ${asmDir}/aes/aesni-x86_64.${asmExt}
+    #${asmDir}/aes/aes-x86_64.${asmExt} # multiple definition of AES_encrypt (first defined in aes_core.c)
+    #${asmDir}/aes/bsaes-x86_64.${asmExt} # not in aes_asm_src (Configurations/00-base-templates.conf)
+    ${asmDir}/aes/vpaes-x86_64.${asmExt}
+    )
+  source_group(aes\\asm FILES ${aes_asm_srcs})
+  list(APPEND asm_srcs ${aes_asm_srcs})
+  ##########
+  set(bn_asm_srcs
+    bn/asm/x86_64-gcc.c
+    ${asmDir}/bn/rsaz-avx2.${asmExt}
+    ${asmDir}/bn/rsaz-x86_64.${asmExt}
+    ${asmDir}/bn/x86_64-gf2m.${asmExt}
+    ${asmDir}/bn/x86_64-mont5.${asmExt}
+    ${asmDir}/bn/x86_64-mont.${asmExt}
+    )
+  source_group(bn\\asm FILES ${bn_asm_srcs})
+  list(APPEND asm_srcs ${bn_asm_srcs})
+  ##########
+  set(camellia_asm_srcs
+    ${asmDir}/camellia/cmll-x86_64.${asmExt}
+    )
+  source_group(camellia\\asm FILES ${camellia_asm_srcs})
+  list(APPEND asm_srcs ${camellia_asm_srcs})
+  ##########
+  set(chacha_asm_srcs
+    ${asmDir}/chacha/chacha-x86_64.${asmExt}
+    )
+  source_group(chacha\\asm FILES ${chacha_asm_srcs})
+  list(APPEND asm_srcs ${chacha_asm_srcs})
+  ##########
+  set(ec_asm_srcs
+    ${asmDir}/ec/ecp_nistz256-x86_64.${asmExt}
+    ${asmDir}/ec/x25519-x86_64.${asmExt}
+    )
+  source_group(ec\\asm FILES ${ec_asm_srcs})
+  list(APPEND asm_srcs ${ec_asm_srcs})
+  ##########
+  set(md5_asm_srcs
+    ${asmDir}/md5/md5-x86_64.${asmExt}
+    )
+  source_group(md5\\asm FILES ${md5_asm_srcs})
+  list(APPEND asm_srcs ${md5_asm_srcs})
+  ##########
+  set(modes_asm_srcs
+    ${asmDir}/modes/aesni-gcm-x86_64.${asmExt}
+    ${asmDir}/modes/ghash-x86_64.${asmExt}
+    )
+  source_group(modes\\asm FILES ${modes_asm_srcs})
+  list(APPEND asm_srcs ${modes_asm_srcs})
+  ##########
+  set(poly1305_asm_srcs
+    ${asmDir}/poly1305/poly1305-x86_64.${asmExt}
+    )
+  source_group(poly1305\\asm FILES ${poly1305_asm_srcs})
+  list(APPEND asm_srcs ${poly1305_asm_srcs})
+  ##########
+  set(rc4_asm_srcs
+    ${asmDir}/rc4/rc4-md5-x86_64.${asmExt}
+    ${asmDir}/rc4/rc4-x86_64.${asmExt}
+    )
+  source_group(rc4\\asm FILES ${rc4_asm_srcs})
+  list(APPEND asm_srcs ${rc4_asm_srcs})
+  ##########
+  set(sha_asm_srcs
+    ${asmDir}/sha/keccak1600-x86_64.${asmExt}
+    ${asmDir}/sha/sha1-mb-x86_64.${asmExt}
+    ${asmDir}/sha/sha1-x86_64.${asmExt}
+    ${asmDir}/sha/sha256-mb-x86_64.${asmExt}
+    ${asmDir}/sha/sha256-x86_64.${asmExt}
+    ${asmDir}/sha/sha512-x86_64.${asmExt}
+    )
+  source_group(sha\\asm FILES ${sha_asm_srcs})
+  list(APPEND asm_srcs ${sha_asm_srcs})
+  ##########
+  set(whrlpool_asm_srcs
+    ${asmDir}/whrlpool/wp-x86_64.${asmExt}
+    )
+  source_group(whrlpool\\asm FILES ${whrlpool_asm_srcs})
+  list(APPEND asm_srcs ${whrlpool_asm_srcs})
+  ##########
+  if(UNIX) # gcc can compile .s files with the C compiler
+    set_property(SOURCE ${asm_srcs} PROPERTY LANGUAGE C)
+  endif()
+  list(APPEND ${lib_name}_libsrcs ${asm_srcs})
+endif()
+########################################
+add_library(${lib_name} STATIC ${${lib_name}_libsrcs})
