summaryrefslogtreecommitdiff
path: root/main/openssl/crypto/aes/asm/aes-586.pl
diff options
context:
space:
mode:
authorArne Schwabe <arne@rfc2549.org>2014-02-13 15:53:13 +0100
committerArne Schwabe <arne@rfc2549.org>2014-02-13 15:53:13 +0100
commitdfd5ef42cf6b68bd7ee7b522ac3c9a55cd54c889 (patch)
tree39061cd184fac30537df44c379a4ecb18d119bc6 /main/openssl/crypto/aes/asm/aes-586.pl
parentb91aedc11393608ba7fb38f358c35ece662fd1b7 (diff)
Move to new gradle project structure (drop Eclipse support, add initial remote demo project)
--HG-- rename : build.gradle => main/build.gradle rename : jni/Android.mk => main/jni/Android.mk rename : jni/Application.mk => main/jni/Application.mk rename : jni/dummy.cpp => main/jni/dummy.cpp rename : jni/jbcrypto.cpp => main/jni/jbcrypto.cpp rename : jni/jniglue.c => main/jni/jniglue.c rename : jni/jniglue.h => main/jni/jniglue.h rename : jni/minivpn.c => main/jni/minivpn.c rename : lzo/AUTHORS => main/lzo/AUTHORS rename : lzo/Android.mk => main/lzo/Android.mk rename : lzo/B/00README.TXT => main/lzo/B/00README.TXT rename : lzo/B/clean.bat => main/lzo/B/clean.bat rename : lzo/B/done.bat => main/lzo/B/done.bat rename : lzo/B/dos16/bc.bat => main/lzo/B/dos16/bc.bat rename : lzo/B/dos16/bc.rsp => main/lzo/B/dos16/bc.rsp rename : lzo/B/dos16/bc_286.bat => main/lzo/B/dos16/bc_286.bat rename : lzo/B/dos16/bc_pp.bat => main/lzo/B/dos16/bc_pp.bat rename : lzo/B/dos16/dm.bat => main/lzo/B/dos16/dm.bat rename : lzo/B/dos16/mc.bat => main/lzo/B/dos16/mc.bat rename : lzo/B/dos16/mc_qc.bat => main/lzo/B/dos16/mc_qc.bat rename : lzo/B/dos16/qc.bat => main/lzo/B/dos16/qc.bat rename : lzo/B/dos16/sc.bat => main/lzo/B/dos16/sc.bat rename : lzo/B/dos16/tc.bat => main/lzo/B/dos16/tc.bat rename : lzo/B/dos16/vc.bat => main/lzo/B/dos16/vc.bat rename : lzo/B/dos16/vc_qc.bat => main/lzo/B/dos16/vc_qc.bat rename : lzo/B/dos16/wc.bat => main/lzo/B/dos16/wc.bat rename : lzo/B/dos16/wc.rsp => main/lzo/B/dos16/wc.rsp rename : lzo/B/dos32/bc_pp.bat => main/lzo/B/dos32/bc_pp.bat rename : lzo/B/dos32/dj2.bat => main/lzo/B/dos32/dj2.bat rename : lzo/B/dos32/dj2.opt => main/lzo/B/dos32/dj2.opt rename : lzo/B/dos32/dm.bat => main/lzo/B/dos32/dm.bat rename : lzo/B/dos32/emx.bat => main/lzo/B/dos32/emx.bat rename : lzo/B/dos32/highc.bat => main/lzo/B/dos32/highc.bat rename : lzo/B/dos32/highc.rsp => main/lzo/B/dos32/highc.rsp rename : lzo/B/dos32/ndp.bat => main/lzo/B/dos32/ndp.bat rename : lzo/B/dos32/ndp.rsp => main/lzo/B/dos32/ndp.rsp rename : lzo/B/dos32/sc.bat => main/lzo/B/dos32/sc.bat rename : lzo/B/dos32/wc.bat => main/lzo/B/dos32/wc.bat rename : lzo/B/dos32/zc.bat => main/lzo/B/dos32/zc.bat rename : lzo/B/generic/Makefile => main/lzo/B/generic/Makefile rename : lzo/B/generic/build.sh => main/lzo/B/generic/build.sh rename : lzo/B/generic/build_freestanding.sh => main/lzo/B/generic/build_freestanding.sh rename : lzo/B/generic/build_gcc.sh => main/lzo/B/generic/build_gcc.sh rename : lzo/B/generic/clean.sh => main/lzo/B/generic/clean.sh rename : lzo/B/os2/emx.bat => main/lzo/B/os2/emx.bat rename : lzo/B/os2/wc.bat => main/lzo/B/os2/wc.bat rename : lzo/B/os2/zc.bat => main/lzo/B/os2/zc.bat rename : lzo/B/os2_16/mc.bat => main/lzo/B/os2_16/mc.bat rename : lzo/B/os2_16/wc.bat => main/lzo/B/os2_16/wc.bat rename : lzo/B/prepare.bat => main/lzo/B/prepare.bat rename : lzo/B/src.rsp => main/lzo/B/src.rsp rename : lzo/B/unset.bat => main/lzo/B/unset.bat rename : lzo/B/win16/bc.bat => main/lzo/B/win16/bc.bat rename : lzo/B/win16/dm.bat => main/lzo/B/win16/dm.bat rename : lzo/B/win16/mc.bat => main/lzo/B/win16/mc.bat rename : lzo/B/win16/sc.bat => main/lzo/B/win16/sc.bat rename : lzo/B/win16/vc.bat => main/lzo/B/win16/vc.bat rename : lzo/B/win16/wc.bat => main/lzo/B/win16/wc.bat rename : lzo/B/win32/bc.bat => main/lzo/B/win32/bc.bat rename : lzo/B/win32/bc.rsp => main/lzo/B/win32/bc.rsp rename : lzo/B/win32/cygwin.bat => main/lzo/B/win32/cygwin.bat rename : lzo/B/win32/cygwin.rsp => main/lzo/B/win32/cygwin.rsp rename : lzo/B/win32/dm.bat => main/lzo/B/win32/dm.bat rename : lzo/B/win32/ic.bat => main/lzo/B/win32/ic.bat rename : lzo/B/win32/lccwin32.bat => main/lzo/B/win32/lccwin32.bat rename : lzo/B/win32/mingw.bat => main/lzo/B/win32/mingw.bat rename : lzo/B/win32/mwerks.bat => main/lzo/B/win32/mwerks.bat rename : lzo/B/win32/pellesc.bat => main/lzo/B/win32/pellesc.bat rename : lzo/B/win32/pgi.bat => main/lzo/B/win32/pgi.bat rename : lzo/B/win32/pw32.bat => main/lzo/B/win32/pw32.bat rename : lzo/B/win32/rsxnt.bat => main/lzo/B/win32/rsxnt.bat rename : lzo/B/win32/sc.bat => main/lzo/B/win32/sc.bat rename : lzo/B/win32/vc.bat => main/lzo/B/win32/vc.bat rename : lzo/B/win32/vc.rsp => main/lzo/B/win32/vc.rsp rename : lzo/B/win32/vc_dll.bat => main/lzo/B/win32/vc_dll.bat rename : lzo/B/win32/vc_dll.def => main/lzo/B/win32/vc_dll.def rename : lzo/B/win32/wc.bat => main/lzo/B/win32/wc.bat rename : lzo/B/win32/wc.rsp => main/lzo/B/win32/wc.rsp rename : lzo/B/win64/ic.bat => main/lzo/B/win64/ic.bat rename : lzo/B/win64/ic_dll.bat => main/lzo/B/win64/ic_dll.bat rename : lzo/B/win64/vc.bat => main/lzo/B/win64/vc.bat rename : lzo/B/win64/vc.rsp => main/lzo/B/win64/vc.rsp rename : lzo/B/win64/vc_dll.bat => main/lzo/B/win64/vc_dll.bat rename : lzo/B/win64/vc_dll.def => main/lzo/B/win64/vc_dll.def rename : lzo/BUGS => main/lzo/BUGS rename : lzo/COPYING => main/lzo/COPYING rename : lzo/ChangeLog => main/lzo/ChangeLog rename : lzo/INSTALL => main/lzo/INSTALL rename : lzo/Makefile => main/lzo/Makefile rename : lzo/Makefile.am => main/lzo/Makefile.am rename : lzo/Makefile.in => main/lzo/Makefile.in rename : lzo/NEWS => main/lzo/NEWS rename : lzo/README => main/lzo/README rename : lzo/README.ANDROID => main/lzo/README.ANDROID rename : lzo/THANKS => main/lzo/THANKS rename : lzo/aclocal.m4 => main/lzo/aclocal.m4 rename : lzo/asm/i386/00README.TXT => main/lzo/asm/i386/00README.TXT rename : lzo/asm/i386/obj/coff32/lzo1c_s1.o => main/lzo/asm/i386/obj/coff32/lzo1c_s1.o rename : lzo/asm/i386/obj/coff32/lzo1c_s2.o => main/lzo/asm/i386/obj/coff32/lzo1c_s2.o rename : lzo/asm/i386/obj/coff32/lzo1f_f1.o => main/lzo/asm/i386/obj/coff32/lzo1f_f1.o rename : lzo/asm/i386/obj/coff32/lzo1f_f2.o => main/lzo/asm/i386/obj/coff32/lzo1f_f2.o rename : lzo/asm/i386/obj/coff32/lzo1x_f1.o => main/lzo/asm/i386/obj/coff32/lzo1x_f1.o rename : lzo/asm/i386/obj/coff32/lzo1x_f2.o => main/lzo/asm/i386/obj/coff32/lzo1x_f2.o rename : lzo/asm/i386/obj/coff32/lzo1x_s1.o => main/lzo/asm/i386/obj/coff32/lzo1x_s1.o rename : lzo/asm/i386/obj/coff32/lzo1x_s2.o => main/lzo/asm/i386/obj/coff32/lzo1x_s2.o rename : lzo/asm/i386/obj/coff32/lzo1y_f1.o => main/lzo/asm/i386/obj/coff32/lzo1y_f1.o rename : lzo/asm/i386/obj/coff32/lzo1y_f2.o => main/lzo/asm/i386/obj/coff32/lzo1y_f2.o rename : lzo/asm/i386/obj/coff32/lzo1y_s1.o => main/lzo/asm/i386/obj/coff32/lzo1y_s1.o rename : lzo/asm/i386/obj/coff32/lzo1y_s2.o => main/lzo/asm/i386/obj/coff32/lzo1y_s2.o rename : lzo/asm/i386/obj/elf32/lzo1c_s1.o => main/lzo/asm/i386/obj/elf32/lzo1c_s1.o rename : lzo/asm/i386/obj/elf32/lzo1c_s2.o => main/lzo/asm/i386/obj/elf32/lzo1c_s2.o rename : lzo/asm/i386/obj/elf32/lzo1f_f1.o => main/lzo/asm/i386/obj/elf32/lzo1f_f1.o rename : lzo/asm/i386/obj/elf32/lzo1f_f2.o => main/lzo/asm/i386/obj/elf32/lzo1f_f2.o rename : lzo/asm/i386/obj/elf32/lzo1x_f1.o => main/lzo/asm/i386/obj/elf32/lzo1x_f1.o rename : lzo/asm/i386/obj/elf32/lzo1x_f2.o => main/lzo/asm/i386/obj/elf32/lzo1x_f2.o rename : lzo/asm/i386/obj/elf32/lzo1x_s1.o => main/lzo/asm/i386/obj/elf32/lzo1x_s1.o rename : lzo/asm/i386/obj/elf32/lzo1x_s2.o => main/lzo/asm/i386/obj/elf32/lzo1x_s2.o rename : lzo/asm/i386/obj/elf32/lzo1y_f1.o => main/lzo/asm/i386/obj/elf32/lzo1y_f1.o rename : lzo/asm/i386/obj/elf32/lzo1y_f2.o => main/lzo/asm/i386/obj/elf32/lzo1y_f2.o rename : lzo/asm/i386/obj/elf32/lzo1y_s1.o => main/lzo/asm/i386/obj/elf32/lzo1y_s1.o rename : lzo/asm/i386/obj/elf32/lzo1y_s2.o => main/lzo/asm/i386/obj/elf32/lzo1y_s2.o rename : lzo/asm/i386/obj/omf32/lzo1c_s1.obj => main/lzo/asm/i386/obj/omf32/lzo1c_s1.obj rename : lzo/asm/i386/obj/omf32/lzo1c_s2.obj => main/lzo/asm/i386/obj/omf32/lzo1c_s2.obj rename : lzo/asm/i386/obj/omf32/lzo1f_f1.obj => main/lzo/asm/i386/obj/omf32/lzo1f_f1.obj rename : lzo/asm/i386/obj/omf32/lzo1f_f2.obj => main/lzo/asm/i386/obj/omf32/lzo1f_f2.obj rename : lzo/asm/i386/obj/omf32/lzo1x_f1.obj => main/lzo/asm/i386/obj/omf32/lzo1x_f1.obj rename : lzo/asm/i386/obj/omf32/lzo1x_f2.obj => main/lzo/asm/i386/obj/omf32/lzo1x_f2.obj rename : lzo/asm/i386/obj/omf32/lzo1x_s1.obj => main/lzo/asm/i386/obj/omf32/lzo1x_s1.obj rename : lzo/asm/i386/obj/omf32/lzo1x_s2.obj => main/lzo/asm/i386/obj/omf32/lzo1x_s2.obj rename : lzo/asm/i386/obj/omf32/lzo1y_f1.obj => main/lzo/asm/i386/obj/omf32/lzo1y_f1.obj rename : lzo/asm/i386/obj/omf32/lzo1y_f2.obj => main/lzo/asm/i386/obj/omf32/lzo1y_f2.obj rename : lzo/asm/i386/obj/omf32/lzo1y_s1.obj => main/lzo/asm/i386/obj/omf32/lzo1y_s1.obj rename : lzo/asm/i386/obj/omf32/lzo1y_s2.obj => main/lzo/asm/i386/obj/omf32/lzo1y_s2.obj rename : lzo/asm/i386/obj/win32/lzo1c_s1.obj => main/lzo/asm/i386/obj/win32/lzo1c_s1.obj rename : lzo/asm/i386/obj/win32/lzo1c_s2.obj => main/lzo/asm/i386/obj/win32/lzo1c_s2.obj rename : lzo/asm/i386/obj/win32/lzo1f_f1.obj => main/lzo/asm/i386/obj/win32/lzo1f_f1.obj rename : lzo/asm/i386/obj/win32/lzo1f_f2.obj => main/lzo/asm/i386/obj/win32/lzo1f_f2.obj rename : lzo/asm/i386/obj/win32/lzo1x_f1.obj => main/lzo/asm/i386/obj/win32/lzo1x_f1.obj rename : lzo/asm/i386/obj/win32/lzo1x_f2.obj => main/lzo/asm/i386/obj/win32/lzo1x_f2.obj rename : lzo/asm/i386/obj/win32/lzo1x_s1.obj => main/lzo/asm/i386/obj/win32/lzo1x_s1.obj rename : lzo/asm/i386/obj/win32/lzo1x_s2.obj => main/lzo/asm/i386/obj/win32/lzo1x_s2.obj rename : lzo/asm/i386/obj/win32/lzo1y_f1.obj => main/lzo/asm/i386/obj/win32/lzo1y_f1.obj rename : lzo/asm/i386/obj/win32/lzo1y_f2.obj => main/lzo/asm/i386/obj/win32/lzo1y_f2.obj rename : lzo/asm/i386/obj/win32/lzo1y_s1.obj => main/lzo/asm/i386/obj/win32/lzo1y_s1.obj rename : lzo/asm/i386/obj/win32/lzo1y_s2.obj => main/lzo/asm/i386/obj/win32/lzo1y_s2.obj rename : lzo/asm/i386/src/enter.ash => main/lzo/asm/i386/src/enter.ash rename : lzo/asm/i386/src/leave.ash => main/lzo/asm/i386/src/leave.ash rename : lzo/asm/i386/src/lzo1c_d.ash => main/lzo/asm/i386/src/lzo1c_d.ash rename : lzo/asm/i386/src/lzo1c_s1.S => main/lzo/asm/i386/src/lzo1c_s1.S rename : lzo/asm/i386/src/lzo1c_s2.S => main/lzo/asm/i386/src/lzo1c_s2.S rename : lzo/asm/i386/src/lzo1f_d.ash => main/lzo/asm/i386/src/lzo1f_d.ash rename : lzo/asm/i386/src/lzo1f_f1.S => main/lzo/asm/i386/src/lzo1f_f1.S rename : lzo/asm/i386/src/lzo1f_f2.S => main/lzo/asm/i386/src/lzo1f_f2.S rename : lzo/asm/i386/src/lzo1x_d.ash => main/lzo/asm/i386/src/lzo1x_d.ash rename : lzo/asm/i386/src/lzo1x_f1.S => main/lzo/asm/i386/src/lzo1x_f1.S rename : lzo/asm/i386/src/lzo1x_f2.S => main/lzo/asm/i386/src/lzo1x_f2.S rename : lzo/asm/i386/src/lzo1x_s1.S => main/lzo/asm/i386/src/lzo1x_s1.S rename : lzo/asm/i386/src/lzo1x_s2.S => main/lzo/asm/i386/src/lzo1x_s2.S rename : lzo/asm/i386/src/lzo1y_f1.S => main/lzo/asm/i386/src/lzo1y_f1.S rename : lzo/asm/i386/src/lzo1y_f2.S => main/lzo/asm/i386/src/lzo1y_f2.S rename : lzo/asm/i386/src/lzo1y_s1.S => main/lzo/asm/i386/src/lzo1y_s1.S rename : lzo/asm/i386/src/lzo1y_s2.S => main/lzo/asm/i386/src/lzo1y_s2.S rename : lzo/asm/i386/src/lzo_asm.h => main/lzo/asm/i386/src/lzo_asm.h rename : lzo/asm/i386/src_gas/all/asm_all.S => main/lzo/asm/i386/src_gas/all/asm_all.S rename : lzo/asm/i386/src_gas/asminit.def => main/lzo/asm/i386/src_gas/asminit.def rename : lzo/asm/i386/src_gas/lzo1c_s1.S => main/lzo/asm/i386/src_gas/lzo1c_s1.S rename : lzo/asm/i386/src_gas/lzo1c_s2.S => main/lzo/asm/i386/src_gas/lzo1c_s2.S rename : lzo/asm/i386/src_gas/lzo1f_f1.S => main/lzo/asm/i386/src_gas/lzo1f_f1.S rename : lzo/asm/i386/src_gas/lzo1f_f2.S => main/lzo/asm/i386/src_gas/lzo1f_f2.S rename : lzo/asm/i386/src_gas/lzo1x_f1.S => main/lzo/asm/i386/src_gas/lzo1x_f1.S rename : lzo/asm/i386/src_gas/lzo1x_f2.S => main/lzo/asm/i386/src_gas/lzo1x_f2.S rename : lzo/asm/i386/src_gas/lzo1x_s1.S => main/lzo/asm/i386/src_gas/lzo1x_s1.S rename : lzo/asm/i386/src_gas/lzo1x_s2.S => main/lzo/asm/i386/src_gas/lzo1x_s2.S rename : lzo/asm/i386/src_gas/lzo1y_f1.S => main/lzo/asm/i386/src_gas/lzo1y_f1.S rename : lzo/asm/i386/src_gas/lzo1y_f2.S => main/lzo/asm/i386/src_gas/lzo1y_f2.S rename : lzo/asm/i386/src_gas/lzo1y_s1.S => main/lzo/asm/i386/src_gas/lzo1y_s1.S rename : lzo/asm/i386/src_gas/lzo1y_s2.S => main/lzo/asm/i386/src_gas/lzo1y_s2.S rename : lzo/asm/i386/src_masm/all/asm_all.asm => main/lzo/asm/i386/src_masm/all/asm_all.asm rename : lzo/asm/i386/src_masm/asminit.def => main/lzo/asm/i386/src_masm/asminit.def rename : lzo/asm/i386/src_masm/lzo1c_s1.asm => main/lzo/asm/i386/src_masm/lzo1c_s1.asm rename : lzo/asm/i386/src_masm/lzo1c_s2.asm => main/lzo/asm/i386/src_masm/lzo1c_s2.asm rename : lzo/asm/i386/src_masm/lzo1f_f1.asm => main/lzo/asm/i386/src_masm/lzo1f_f1.asm rename : lzo/asm/i386/src_masm/lzo1f_f2.asm => main/lzo/asm/i386/src_masm/lzo1f_f2.asm rename : lzo/asm/i386/src_masm/lzo1x_f1.asm => main/lzo/asm/i386/src_masm/lzo1x_f1.asm rename : lzo/asm/i386/src_masm/lzo1x_f2.asm => main/lzo/asm/i386/src_masm/lzo1x_f2.asm rename : lzo/asm/i386/src_masm/lzo1x_s1.asm => main/lzo/asm/i386/src_masm/lzo1x_s1.asm rename : lzo/asm/i386/src_masm/lzo1x_s2.asm => main/lzo/asm/i386/src_masm/lzo1x_s2.asm rename : lzo/asm/i386/src_masm/lzo1y_f1.asm => main/lzo/asm/i386/src_masm/lzo1y_f1.asm rename : lzo/asm/i386/src_masm/lzo1y_f2.asm => main/lzo/asm/i386/src_masm/lzo1y_f2.asm rename : lzo/asm/i386/src_masm/lzo1y_s1.asm => main/lzo/asm/i386/src_masm/lzo1y_s1.asm rename : lzo/asm/i386/src_masm/lzo1y_s2.asm => main/lzo/asm/i386/src_masm/lzo1y_s2.asm rename : lzo/asm/i386/src_nasm/all/asm_all.asm => main/lzo/asm/i386/src_nasm/all/asm_all.asm rename : lzo/asm/i386/src_nasm/asminit.def => main/lzo/asm/i386/src_nasm/asminit.def rename : lzo/asm/i386/src_nasm/lzo1c_s1.asm => main/lzo/asm/i386/src_nasm/lzo1c_s1.asm rename : lzo/asm/i386/src_nasm/lzo1c_s2.asm => main/lzo/asm/i386/src_nasm/lzo1c_s2.asm rename : lzo/asm/i386/src_nasm/lzo1f_f1.asm => main/lzo/asm/i386/src_nasm/lzo1f_f1.asm rename : lzo/asm/i386/src_nasm/lzo1f_f2.asm => main/lzo/asm/i386/src_nasm/lzo1f_f2.asm rename : lzo/asm/i386/src_nasm/lzo1x_f1.asm => main/lzo/asm/i386/src_nasm/lzo1x_f1.asm rename : lzo/asm/i386/src_nasm/lzo1x_f2.asm => main/lzo/asm/i386/src_nasm/lzo1x_f2.asm rename : lzo/asm/i386/src_nasm/lzo1x_s1.asm => main/lzo/asm/i386/src_nasm/lzo1x_s1.asm rename : lzo/asm/i386/src_nasm/lzo1x_s2.asm => main/lzo/asm/i386/src_nasm/lzo1x_s2.asm rename : lzo/asm/i386/src_nasm/lzo1y_f1.asm => main/lzo/asm/i386/src_nasm/lzo1y_f1.asm rename : lzo/asm/i386/src_nasm/lzo1y_f2.asm => main/lzo/asm/i386/src_nasm/lzo1y_f2.asm rename : lzo/asm/i386/src_nasm/lzo1y_s1.asm => main/lzo/asm/i386/src_nasm/lzo1y_s1.asm rename : lzo/asm/i386/src_nasm/lzo1y_s2.asm => main/lzo/asm/i386/src_nasm/lzo1y_s2.asm rename : lzo/autoconf/compile => main/lzo/autoconf/compile rename : lzo/autoconf/config.guess => main/lzo/autoconf/config.guess rename : lzo/autoconf/config.rpath => main/lzo/autoconf/config.rpath rename : lzo/autoconf/config.sub => main/lzo/autoconf/config.sub rename : lzo/autoconf/depcomp => main/lzo/autoconf/depcomp rename : lzo/autoconf/install-sh => main/lzo/autoconf/install-sh rename : lzo/autoconf/local.m4 => main/lzo/autoconf/local.m4 rename : lzo/autoconf/ltmain.sh => main/lzo/autoconf/ltmain.sh rename : lzo/autoconf/mdate-sh => main/lzo/autoconf/mdate-sh rename : lzo/autoconf/missing => main/lzo/autoconf/missing rename : lzo/autoconf/mkinstalldirs => main/lzo/autoconf/mkinstalldirs rename : lzo/autoconf/py-compile => main/lzo/autoconf/py-compile rename : lzo/autoconf/shtool => main/lzo/autoconf/shtool rename : lzo/autoconf/ylwrap => main/lzo/autoconf/ylwrap rename : lzo/config.h => main/lzo/config.h rename : lzo/config.hin => main/lzo/config.hin rename : lzo/config.log => main/lzo/config.log rename : lzo/config.status => main/lzo/config.status rename : lzo/configure => main/lzo/configure rename : lzo/configure.ac => main/lzo/configure.ac rename : lzo/doc/LZO.FAQ => main/lzo/doc/LZO.FAQ rename : lzo/doc/LZO.TXT => main/lzo/doc/LZO.TXT rename : lzo/doc/LZOAPI.TXT => main/lzo/doc/LZOAPI.TXT rename : lzo/doc/LZOTEST.TXT => main/lzo/doc/LZOTEST.TXT rename : lzo/examples/.deps/dict.Po => main/lzo/examples/.deps/dict.Po rename : lzo/examples/.deps/lzopack.Po => main/lzo/examples/.deps/lzopack.Po rename : lzo/examples/.deps/overlap.Po => main/lzo/examples/.deps/overlap.Po rename : lzo/examples/.deps/precomp.Po => main/lzo/examples/.deps/precomp.Po rename : lzo/examples/.deps/precomp2.Po => main/lzo/examples/.deps/precomp2.Po rename : lzo/examples/.deps/simple.Po => main/lzo/examples/.deps/simple.Po rename : lzo/examples/Makefile => main/lzo/examples/Makefile rename : lzo/examples/Makefile.am => main/lzo/examples/Makefile.am rename : lzo/examples/Makefile.in => main/lzo/examples/Makefile.in rename : lzo/examples/dict.c => main/lzo/examples/dict.c rename : lzo/examples/lzopack.c => main/lzo/examples/lzopack.c rename : lzo/examples/overlap.c => main/lzo/examples/overlap.c rename : lzo/examples/portab.h => main/lzo/examples/portab.h rename : lzo/examples/portab_a.h => main/lzo/examples/portab_a.h rename : lzo/examples/precomp.c => main/lzo/examples/precomp.c rename : lzo/examples/precomp2.c => main/lzo/examples/precomp2.c rename : lzo/examples/simple.c => main/lzo/examples/simple.c rename : lzo/include/Makefile => main/lzo/include/Makefile rename : lzo/include/Makefile.am => main/lzo/include/Makefile.am rename : lzo/include/Makefile.in => main/lzo/include/Makefile.in rename : lzo/include/lzo/Makefile => main/lzo/include/lzo/Makefile rename : lzo/include/lzo/Makefile.am => main/lzo/include/lzo/Makefile.am rename : lzo/include/lzo/Makefile.in => main/lzo/include/lzo/Makefile.in rename : lzo/include/lzo/lzo1.h => main/lzo/include/lzo/lzo1.h rename : lzo/include/lzo/lzo1a.h => main/lzo/include/lzo/lzo1a.h rename : lzo/include/lzo/lzo1b.h => main/lzo/include/lzo/lzo1b.h rename : lzo/include/lzo/lzo1c.h => main/lzo/include/lzo/lzo1c.h rename : lzo/include/lzo/lzo1f.h => main/lzo/include/lzo/lzo1f.h rename : lzo/include/lzo/lzo1x.h => main/lzo/include/lzo/lzo1x.h rename : lzo/include/lzo/lzo1y.h => main/lzo/include/lzo/lzo1y.h rename : lzo/include/lzo/lzo1z.h => main/lzo/include/lzo/lzo1z.h rename : lzo/include/lzo/lzo2a.h => main/lzo/include/lzo/lzo2a.h rename : lzo/include/lzo/lzo_asm.h => main/lzo/include/lzo/lzo_asm.h rename : lzo/include/lzo/lzoconf.h => main/lzo/include/lzo/lzoconf.h rename : lzo/include/lzo/lzodefs.h => main/lzo/include/lzo/lzodefs.h rename : lzo/include/lzo/lzoutil.h => main/lzo/include/lzo/lzoutil.h rename : lzo/libtool => main/lzo/libtool rename : lzo/lzotest/.deps/lzotest.Po => main/lzo/lzotest/.deps/lzotest.Po rename : lzo/lzotest/Makefile => main/lzo/lzotest/Makefile rename : lzo/lzotest/Makefile.am => main/lzo/lzotest/Makefile.am rename : lzo/lzotest/Makefile.in => main/lzo/lzotest/Makefile.in rename : lzo/lzotest/asm.h => main/lzo/lzotest/asm.h rename : lzo/lzotest/db.h => main/lzo/lzotest/db.h rename : lzo/lzotest/lzotest.c => main/lzo/lzotest/lzotest.c rename : lzo/lzotest/mygetopt.ch => main/lzo/lzotest/mygetopt.ch rename : lzo/lzotest/mygetopt.h => main/lzo/lzotest/mygetopt.h rename : lzo/lzotest/wrap.h => main/lzo/lzotest/wrap.h rename : lzo/lzotest/wrapmisc.h => main/lzo/lzotest/wrapmisc.h rename : lzo/minilzo/.deps/minilzo.Po => main/lzo/minilzo/.deps/minilzo.Po rename : lzo/minilzo/.deps/testmini.Po => main/lzo/minilzo/.deps/testmini.Po rename : lzo/minilzo/Makefile => main/lzo/minilzo/Makefile rename : lzo/minilzo/Makefile.am => main/lzo/minilzo/Makefile.am rename : lzo/minilzo/Makefile.in => main/lzo/minilzo/Makefile.in rename : lzo/minilzo/Makefile.minilzo => main/lzo/minilzo/Makefile.minilzo rename : lzo/minilzo/README.LZO => main/lzo/minilzo/README.LZO rename : lzo/minilzo/minilzo.c => main/lzo/minilzo/minilzo.c rename : lzo/minilzo/minilzo.h => main/lzo/minilzo/minilzo.h rename : lzo/minilzo/testmini.c => main/lzo/minilzo/testmini.c rename : lzo/src/.deps/lzo1.Plo => main/lzo/src/.deps/lzo1.Plo rename : lzo/src/.deps/lzo1_99.Plo => main/lzo/src/.deps/lzo1_99.Plo rename : lzo/src/.deps/lzo1a.Plo => main/lzo/src/.deps/lzo1a.Plo rename : lzo/src/.deps/lzo1a_99.Plo => main/lzo/src/.deps/lzo1a_99.Plo rename : lzo/src/.deps/lzo1b_1.Plo => main/lzo/src/.deps/lzo1b_1.Plo rename : lzo/src/.deps/lzo1b_2.Plo => main/lzo/src/.deps/lzo1b_2.Plo rename : lzo/src/.deps/lzo1b_3.Plo => main/lzo/src/.deps/lzo1b_3.Plo rename : lzo/src/.deps/lzo1b_4.Plo => main/lzo/src/.deps/lzo1b_4.Plo rename : lzo/src/.deps/lzo1b_5.Plo => main/lzo/src/.deps/lzo1b_5.Plo rename : lzo/src/.deps/lzo1b_6.Plo => main/lzo/src/.deps/lzo1b_6.Plo rename : lzo/src/.deps/lzo1b_7.Plo => main/lzo/src/.deps/lzo1b_7.Plo rename : lzo/src/.deps/lzo1b_8.Plo => main/lzo/src/.deps/lzo1b_8.Plo rename : lzo/src/.deps/lzo1b_9.Plo => main/lzo/src/.deps/lzo1b_9.Plo rename : lzo/src/.deps/lzo1b_99.Plo => main/lzo/src/.deps/lzo1b_99.Plo rename : lzo/src/.deps/lzo1b_9x.Plo => main/lzo/src/.deps/lzo1b_9x.Plo rename : lzo/src/.deps/lzo1b_cc.Plo => main/lzo/src/.deps/lzo1b_cc.Plo rename : lzo/src/.deps/lzo1b_d1.Plo => main/lzo/src/.deps/lzo1b_d1.Plo rename : lzo/src/.deps/lzo1b_d2.Plo => main/lzo/src/.deps/lzo1b_d2.Plo rename : lzo/src/.deps/lzo1b_rr.Plo => main/lzo/src/.deps/lzo1b_rr.Plo rename : lzo/src/.deps/lzo1b_xx.Plo => main/lzo/src/.deps/lzo1b_xx.Plo rename : lzo/src/.deps/lzo1c_1.Plo => main/lzo/src/.deps/lzo1c_1.Plo rename : lzo/src/.deps/lzo1c_2.Plo => main/lzo/src/.deps/lzo1c_2.Plo rename : lzo/src/.deps/lzo1c_3.Plo => main/lzo/src/.deps/lzo1c_3.Plo rename : lzo/src/.deps/lzo1c_4.Plo => main/lzo/src/.deps/lzo1c_4.Plo rename : lzo/src/.deps/lzo1c_5.Plo => main/lzo/src/.deps/lzo1c_5.Plo rename : lzo/src/.deps/lzo1c_6.Plo => main/lzo/src/.deps/lzo1c_6.Plo rename : lzo/src/.deps/lzo1c_7.Plo => main/lzo/src/.deps/lzo1c_7.Plo rename : lzo/src/.deps/lzo1c_8.Plo => main/lzo/src/.deps/lzo1c_8.Plo rename : lzo/src/.deps/lzo1c_9.Plo => main/lzo/src/.deps/lzo1c_9.Plo rename : lzo/src/.deps/lzo1c_99.Plo => main/lzo/src/.deps/lzo1c_99.Plo rename : lzo/src/.deps/lzo1c_9x.Plo => main/lzo/src/.deps/lzo1c_9x.Plo rename : lzo/src/.deps/lzo1c_cc.Plo => main/lzo/src/.deps/lzo1c_cc.Plo rename : lzo/src/.deps/lzo1c_d1.Plo => main/lzo/src/.deps/lzo1c_d1.Plo rename : lzo/src/.deps/lzo1c_d2.Plo => main/lzo/src/.deps/lzo1c_d2.Plo rename : lzo/src/.deps/lzo1c_rr.Plo => main/lzo/src/.deps/lzo1c_rr.Plo rename : lzo/src/.deps/lzo1c_xx.Plo => main/lzo/src/.deps/lzo1c_xx.Plo rename : lzo/src/.deps/lzo1f_1.Plo => main/lzo/src/.deps/lzo1f_1.Plo rename : lzo/src/.deps/lzo1f_9x.Plo => main/lzo/src/.deps/lzo1f_9x.Plo rename : lzo/src/.deps/lzo1f_d1.Plo => main/lzo/src/.deps/lzo1f_d1.Plo rename : lzo/src/.deps/lzo1f_d2.Plo => main/lzo/src/.deps/lzo1f_d2.Plo rename : lzo/src/.deps/lzo1x_1.Plo => main/lzo/src/.deps/lzo1x_1.Plo rename : lzo/src/.deps/lzo1x_1k.Plo => main/lzo/src/.deps/lzo1x_1k.Plo rename : lzo/src/.deps/lzo1x_1l.Plo => main/lzo/src/.deps/lzo1x_1l.Plo rename : lzo/src/.deps/lzo1x_1o.Plo => main/lzo/src/.deps/lzo1x_1o.Plo rename : lzo/src/.deps/lzo1x_9x.Plo => main/lzo/src/.deps/lzo1x_9x.Plo rename : lzo/src/.deps/lzo1x_d1.Plo => main/lzo/src/.deps/lzo1x_d1.Plo rename : lzo/src/.deps/lzo1x_d2.Plo => main/lzo/src/.deps/lzo1x_d2.Plo rename : lzo/src/.deps/lzo1x_d3.Plo => main/lzo/src/.deps/lzo1x_d3.Plo rename : lzo/src/.deps/lzo1x_o.Plo => main/lzo/src/.deps/lzo1x_o.Plo rename : lzo/src/.deps/lzo1y_1.Plo => main/lzo/src/.deps/lzo1y_1.Plo rename : lzo/src/.deps/lzo1y_9x.Plo => main/lzo/src/.deps/lzo1y_9x.Plo rename : lzo/src/.deps/lzo1y_d1.Plo => main/lzo/src/.deps/lzo1y_d1.Plo rename : lzo/src/.deps/lzo1y_d2.Plo => main/lzo/src/.deps/lzo1y_d2.Plo rename : lzo/src/.deps/lzo1y_d3.Plo => main/lzo/src/.deps/lzo1y_d3.Plo rename : lzo/src/.deps/lzo1y_o.Plo => main/lzo/src/.deps/lzo1y_o.Plo rename : lzo/src/.deps/lzo1z_9x.Plo => main/lzo/src/.deps/lzo1z_9x.Plo rename : lzo/src/.deps/lzo1z_d1.Plo => main/lzo/src/.deps/lzo1z_d1.Plo rename : lzo/src/.deps/lzo1z_d2.Plo => main/lzo/src/.deps/lzo1z_d2.Plo rename : lzo/src/.deps/lzo1z_d3.Plo => main/lzo/src/.deps/lzo1z_d3.Plo rename : lzo/src/.deps/lzo2a_9x.Plo => main/lzo/src/.deps/lzo2a_9x.Plo rename : lzo/src/.deps/lzo2a_d1.Plo => main/lzo/src/.deps/lzo2a_d1.Plo rename : lzo/src/.deps/lzo2a_d2.Plo => main/lzo/src/.deps/lzo2a_d2.Plo rename : lzo/src/.deps/lzo_crc.Plo => main/lzo/src/.deps/lzo_crc.Plo rename : lzo/src/.deps/lzo_init.Plo => main/lzo/src/.deps/lzo_init.Plo rename : lzo/src/.deps/lzo_ptr.Plo => main/lzo/src/.deps/lzo_ptr.Plo rename : lzo/src/.deps/lzo_str.Plo => main/lzo/src/.deps/lzo_str.Plo rename : lzo/src/.deps/lzo_util.Plo => main/lzo/src/.deps/lzo_util.Plo rename : lzo/src/Makefile => main/lzo/src/Makefile rename : lzo/src/Makefile.am => main/lzo/src/Makefile.am rename : lzo/src/Makefile.in => main/lzo/src/Makefile.in rename : lzo/src/compr1b.h => main/lzo/src/compr1b.h rename : lzo/src/compr1c.h => main/lzo/src/compr1c.h rename : lzo/src/config1.h => main/lzo/src/config1.h rename : lzo/src/config1a.h => main/lzo/src/config1a.h rename : lzo/src/config1b.h => main/lzo/src/config1b.h rename : lzo/src/config1c.h => main/lzo/src/config1c.h rename : lzo/src/config1f.h => main/lzo/src/config1f.h rename : lzo/src/config1x.h => main/lzo/src/config1x.h rename : lzo/src/config1y.h => main/lzo/src/config1y.h rename : lzo/src/config1z.h => main/lzo/src/config1z.h rename : lzo/src/config2a.h => main/lzo/src/config2a.h rename : lzo/src/lzo1.c => main/lzo/src/lzo1.c rename : lzo/src/lzo1_99.c => main/lzo/src/lzo1_99.c rename : lzo/src/lzo1_cm.ch => main/lzo/src/lzo1_cm.ch rename : lzo/src/lzo1_d.ch => main/lzo/src/lzo1_d.ch rename : lzo/src/lzo1a.c => main/lzo/src/lzo1a.c rename : lzo/src/lzo1a_99.c => main/lzo/src/lzo1a_99.c rename : lzo/src/lzo1a_cm.ch => main/lzo/src/lzo1a_cm.ch rename : lzo/src/lzo1a_cr.ch => main/lzo/src/lzo1a_cr.ch rename : lzo/src/lzo1a_de.h => main/lzo/src/lzo1a_de.h rename : lzo/src/lzo1b_1.c => main/lzo/src/lzo1b_1.c rename : lzo/src/lzo1b_2.c => main/lzo/src/lzo1b_2.c rename : lzo/src/lzo1b_3.c => main/lzo/src/lzo1b_3.c rename : lzo/src/lzo1b_4.c => main/lzo/src/lzo1b_4.c rename : lzo/src/lzo1b_5.c => main/lzo/src/lzo1b_5.c rename : lzo/src/lzo1b_6.c => main/lzo/src/lzo1b_6.c rename : lzo/src/lzo1b_7.c => main/lzo/src/lzo1b_7.c rename : lzo/src/lzo1b_8.c => main/lzo/src/lzo1b_8.c rename : lzo/src/lzo1b_9.c => main/lzo/src/lzo1b_9.c rename : lzo/src/lzo1b_99.c => main/lzo/src/lzo1b_99.c rename : lzo/src/lzo1b_9x.c => main/lzo/src/lzo1b_9x.c rename : lzo/src/lzo1b_c.ch => main/lzo/src/lzo1b_c.ch rename : lzo/src/lzo1b_cc.c => main/lzo/src/lzo1b_cc.c rename : lzo/src/lzo1b_cc.h => main/lzo/src/lzo1b_cc.h rename : lzo/src/lzo1b_cm.ch => main/lzo/src/lzo1b_cm.ch rename : lzo/src/lzo1b_cr.ch => main/lzo/src/lzo1b_cr.ch rename : lzo/src/lzo1b_d.ch => main/lzo/src/lzo1b_d.ch rename : lzo/src/lzo1b_d1.c => main/lzo/src/lzo1b_d1.c rename : lzo/src/lzo1b_d2.c => main/lzo/src/lzo1b_d2.c rename : lzo/src/lzo1b_de.h => main/lzo/src/lzo1b_de.h rename : lzo/src/lzo1b_r.ch => main/lzo/src/lzo1b_r.ch rename : lzo/src/lzo1b_rr.c => main/lzo/src/lzo1b_rr.c rename : lzo/src/lzo1b_sm.ch => main/lzo/src/lzo1b_sm.ch rename : lzo/src/lzo1b_tm.ch => main/lzo/src/lzo1b_tm.ch rename : lzo/src/lzo1b_xx.c => main/lzo/src/lzo1b_xx.c rename : lzo/src/lzo1c_1.c => main/lzo/src/lzo1c_1.c rename : lzo/src/lzo1c_2.c => main/lzo/src/lzo1c_2.c rename : lzo/src/lzo1c_3.c => main/lzo/src/lzo1c_3.c rename : lzo/src/lzo1c_4.c => main/lzo/src/lzo1c_4.c rename : lzo/src/lzo1c_5.c => main/lzo/src/lzo1c_5.c rename : lzo/src/lzo1c_6.c => main/lzo/src/lzo1c_6.c rename : lzo/src/lzo1c_7.c => main/lzo/src/lzo1c_7.c rename : lzo/src/lzo1c_8.c => main/lzo/src/lzo1c_8.c rename : lzo/src/lzo1c_9.c => main/lzo/src/lzo1c_9.c rename : lzo/src/lzo1c_99.c => main/lzo/src/lzo1c_99.c rename : lzo/src/lzo1c_9x.c => main/lzo/src/lzo1c_9x.c rename : lzo/src/lzo1c_cc.c => main/lzo/src/lzo1c_cc.c rename : lzo/src/lzo1c_cc.h => main/lzo/src/lzo1c_cc.h rename : lzo/src/lzo1c_d1.c => main/lzo/src/lzo1c_d1.c rename : lzo/src/lzo1c_d2.c => main/lzo/src/lzo1c_d2.c rename : lzo/src/lzo1c_rr.c => main/lzo/src/lzo1c_rr.c rename : lzo/src/lzo1c_xx.c => main/lzo/src/lzo1c_xx.c rename : lzo/src/lzo1f_1.c => main/lzo/src/lzo1f_1.c rename : lzo/src/lzo1f_9x.c => main/lzo/src/lzo1f_9x.c rename : lzo/src/lzo1f_d.ch => main/lzo/src/lzo1f_d.ch rename : lzo/src/lzo1f_d1.c => main/lzo/src/lzo1f_d1.c rename : lzo/src/lzo1f_d2.c => main/lzo/src/lzo1f_d2.c rename : lzo/src/lzo1x_1.c => main/lzo/src/lzo1x_1.c rename : lzo/src/lzo1x_1k.c => main/lzo/src/lzo1x_1k.c rename : lzo/src/lzo1x_1l.c => main/lzo/src/lzo1x_1l.c rename : lzo/src/lzo1x_1o.c => main/lzo/src/lzo1x_1o.c rename : lzo/src/lzo1x_9x.c => main/lzo/src/lzo1x_9x.c rename : lzo/src/lzo1x_c.ch => main/lzo/src/lzo1x_c.ch rename : lzo/src/lzo1x_d.ch => main/lzo/src/lzo1x_d.ch rename : lzo/src/lzo1x_d1.c => main/lzo/src/lzo1x_d1.c rename : lzo/src/lzo1x_d2.c => main/lzo/src/lzo1x_d2.c rename : lzo/src/lzo1x_d3.c => main/lzo/src/lzo1x_d3.c rename : lzo/src/lzo1x_o.c => main/lzo/src/lzo1x_o.c rename : lzo/src/lzo1x_oo.ch => main/lzo/src/lzo1x_oo.ch rename : lzo/src/lzo1y_1.c => main/lzo/src/lzo1y_1.c rename : lzo/src/lzo1y_9x.c => main/lzo/src/lzo1y_9x.c rename : lzo/src/lzo1y_d1.c => main/lzo/src/lzo1y_d1.c rename : lzo/src/lzo1y_d2.c => main/lzo/src/lzo1y_d2.c rename : lzo/src/lzo1y_d3.c => main/lzo/src/lzo1y_d3.c rename : lzo/src/lzo1y_o.c => main/lzo/src/lzo1y_o.c rename : lzo/src/lzo1z_9x.c => main/lzo/src/lzo1z_9x.c rename : lzo/src/lzo1z_d1.c => main/lzo/src/lzo1z_d1.c rename : lzo/src/lzo1z_d2.c => main/lzo/src/lzo1z_d2.c rename : lzo/src/lzo1z_d3.c => main/lzo/src/lzo1z_d3.c rename : lzo/src/lzo2a_9x.c => main/lzo/src/lzo2a_9x.c rename : lzo/src/lzo2a_d.ch => main/lzo/src/lzo2a_d.ch rename : lzo/src/lzo2a_d1.c => main/lzo/src/lzo2a_d1.c rename : lzo/src/lzo2a_d2.c => main/lzo/src/lzo2a_d2.c rename : lzo/src/lzo_conf.h => main/lzo/src/lzo_conf.h rename : lzo/src/lzo_crc.c => main/lzo/src/lzo_crc.c rename : lzo/src/lzo_dict.h => main/lzo/src/lzo_dict.h rename : lzo/src/lzo_dll.ch => main/lzo/src/lzo_dll.ch rename : lzo/src/lzo_func.ch => main/lzo/src/lzo_func.ch rename : lzo/src/lzo_init.c => main/lzo/src/lzo_init.c rename : lzo/src/lzo_mchw.ch => main/lzo/src/lzo_mchw.ch rename : lzo/src/lzo_ptr.c => main/lzo/src/lzo_ptr.c rename : lzo/src/lzo_ptr.h => main/lzo/src/lzo_ptr.h rename : lzo/src/lzo_str.c => main/lzo/src/lzo_str.c rename : lzo/src/lzo_swd.ch => main/lzo/src/lzo_swd.ch rename : lzo/src/lzo_util.c => main/lzo/src/lzo_util.c rename : lzo/src/miniacc.h => main/lzo/src/miniacc.h rename : lzo/src/stats1a.h => main/lzo/src/stats1a.h rename : lzo/src/stats1b.h => main/lzo/src/stats1b.h rename : lzo/src/stats1c.h => main/lzo/src/stats1c.h rename : lzo/stamp-h1 => main/lzo/stamp-h1 rename : lzo/tests/.deps/align.Po => main/lzo/tests/.deps/align.Po rename : lzo/tests/.deps/chksum.Po => main/lzo/tests/.deps/chksum.Po rename : lzo/tests/.deps/promote.Po => main/lzo/tests/.deps/promote.Po rename : lzo/tests/.deps/sizes.Po => main/lzo/tests/.deps/sizes.Po rename : lzo/tests/Makefile => main/lzo/tests/Makefile rename : lzo/tests/Makefile.am => main/lzo/tests/Makefile.am rename : lzo/tests/Makefile.in => main/lzo/tests/Makefile.in rename : lzo/tests/align.c => main/lzo/tests/align.c rename : lzo/tests/chksum.c => main/lzo/tests/chksum.c rename : lzo/tests/promote.c => main/lzo/tests/promote.c rename : lzo/tests/sizes.c => main/lzo/tests/sizes.c rename : lzo/util/check.sh => main/lzo/util/check.sh rename : lzo/util/checkasm.sh => main/lzo/util/checkasm.sh rename : lzo/util/notime.pl => main/lzo/util/notime.pl rename : lzo/util/overlap.sh => main/lzo/util/overlap.sh rename : lzo/util/shortf.pl => main/lzo/util/shortf.pl rename : lzo/util/table.pl => main/lzo/util/table.pl rename : lzo/util/uncompr.pl => main/lzo/util/uncompr.pl rename : openssl/Android.mk => main/openssl/Android.mk rename : openssl/CleanSpec.mk => main/openssl/CleanSpec.mk rename : openssl/MODULE_LICENSE_BSD_LIKE => main/openssl/MODULE_LICENSE_BSD_LIKE rename : openssl/NOTICE => main/openssl/NOTICE rename : openssl/README.android => main/openssl/README.android rename : openssl/ThirdPartyProject.prop => main/openssl/ThirdPartyProject.prop rename : openssl/android-config.mk => main/openssl/android-config.mk rename : openssl/android.testssl/CAss.cnf => main/openssl/android.testssl/CAss.cnf rename : openssl/android.testssl/Uss.cnf => main/openssl/android.testssl/Uss.cnf rename : openssl/android.testssl/server2.pem => main/openssl/android.testssl/server2.pem rename : openssl/android.testssl/testssl => main/openssl/android.testssl/testssl rename : openssl/android.testssl/testssl.sh => main/openssl/android.testssl/testssl.sh rename : openssl/apps/Android.mk => main/openssl/apps/Android.mk rename : openssl/apps/CA.pl => main/openssl/apps/CA.pl rename : openssl/apps/CA.pl.in => main/openssl/apps/CA.pl.in rename : openssl/apps/CA.sh => main/openssl/apps/CA.sh rename : openssl/apps/app_rand.c => main/openssl/apps/app_rand.c rename : openssl/apps/apps.c => main/openssl/apps/apps.c rename : openssl/apps/apps.h => main/openssl/apps/apps.h rename : openssl/apps/asn1pars.c => main/openssl/apps/asn1pars.c rename : openssl/apps/ca-cert.srl => main/openssl/apps/ca-cert.srl rename : openssl/apps/ca-key.pem => main/openssl/apps/ca-key.pem rename : openssl/apps/ca-req.pem => main/openssl/apps/ca-req.pem rename : openssl/apps/ca.c => main/openssl/apps/ca.c rename : openssl/apps/cert.pem => main/openssl/apps/cert.pem rename : openssl/apps/ciphers.c => main/openssl/apps/ciphers.c rename : openssl/apps/client.pem => main/openssl/apps/client.pem rename : openssl/apps/cms.c => main/openssl/apps/cms.c rename : openssl/apps/crl.c => main/openssl/apps/crl.c rename : openssl/apps/crl2p7.c => main/openssl/apps/crl2p7.c rename : openssl/apps/dgst.c => main/openssl/apps/dgst.c rename : openssl/apps/dh.c => main/openssl/apps/dh.c rename : openssl/apps/dh1024.pem => main/openssl/apps/dh1024.pem rename : openssl/apps/dh2048.pem => main/openssl/apps/dh2048.pem rename : openssl/apps/dh4096.pem => main/openssl/apps/dh4096.pem rename : openssl/apps/dh512.pem => main/openssl/apps/dh512.pem rename : openssl/apps/dhparam.c => main/openssl/apps/dhparam.c rename : openssl/apps/dsa-ca.pem => main/openssl/apps/dsa-ca.pem rename : openssl/apps/dsa-pca.pem => main/openssl/apps/dsa-pca.pem rename : openssl/apps/dsa.c => main/openssl/apps/dsa.c rename : openssl/apps/dsa1024.pem => main/openssl/apps/dsa1024.pem rename : openssl/apps/dsa512.pem => main/openssl/apps/dsa512.pem rename : openssl/apps/dsap.pem => main/openssl/apps/dsap.pem rename : openssl/apps/dsaparam.c => main/openssl/apps/dsaparam.c rename : openssl/apps/ec.c => main/openssl/apps/ec.c rename : openssl/apps/ecparam.c => main/openssl/apps/ecparam.c rename : openssl/apps/enc.c => main/openssl/apps/enc.c rename : openssl/apps/engine.c => main/openssl/apps/engine.c rename : openssl/apps/errstr.c => main/openssl/apps/errstr.c rename : openssl/apps/gendh.c => main/openssl/apps/gendh.c rename : openssl/apps/gendsa.c => main/openssl/apps/gendsa.c rename : openssl/apps/genpkey.c => main/openssl/apps/genpkey.c rename : openssl/apps/genrsa.c => main/openssl/apps/genrsa.c rename : openssl/apps/md4.c => main/openssl/apps/md4.c rename : openssl/apps/nseq.c => main/openssl/apps/nseq.c rename : openssl/apps/ocsp.c => main/openssl/apps/ocsp.c rename : openssl/apps/oid.cnf => main/openssl/apps/oid.cnf rename : openssl/apps/openssl.c => main/openssl/apps/openssl.c rename : openssl/apps/openssl.cnf => main/openssl/apps/openssl.cnf rename : openssl/apps/passwd.c => main/openssl/apps/passwd.c rename : openssl/apps/pca-cert.srl => main/openssl/apps/pca-cert.srl rename : openssl/apps/pca-key.pem => main/openssl/apps/pca-key.pem rename : openssl/apps/pca-req.pem => main/openssl/apps/pca-req.pem rename : openssl/apps/pkcs12.c => main/openssl/apps/pkcs12.c rename : openssl/apps/pkcs7.c => main/openssl/apps/pkcs7.c rename : openssl/apps/pkcs8.c => main/openssl/apps/pkcs8.c rename : openssl/apps/pkey.c => main/openssl/apps/pkey.c rename : openssl/apps/pkeyparam.c => main/openssl/apps/pkeyparam.c rename : openssl/apps/pkeyutl.c => main/openssl/apps/pkeyutl.c rename : openssl/apps/prime.c => main/openssl/apps/prime.c rename : openssl/apps/privkey.pem => main/openssl/apps/privkey.pem rename : openssl/apps/progs.h => main/openssl/apps/progs.h rename : openssl/apps/progs.pl => main/openssl/apps/progs.pl rename : openssl/apps/rand.c => main/openssl/apps/rand.c rename : openssl/apps/req.c => main/openssl/apps/req.c rename : openssl/apps/req.pem => main/openssl/apps/req.pem rename : openssl/apps/rsa.c => main/openssl/apps/rsa.c rename : openssl/apps/rsa8192.pem => main/openssl/apps/rsa8192.pem rename : openssl/apps/rsautl.c => main/openssl/apps/rsautl.c rename : openssl/apps/s1024key.pem => main/openssl/apps/s1024key.pem rename : openssl/apps/s1024req.pem => main/openssl/apps/s1024req.pem rename : openssl/apps/s512-key.pem => main/openssl/apps/s512-key.pem rename : openssl/apps/s512-req.pem => main/openssl/apps/s512-req.pem rename : openssl/apps/s_apps.h => main/openssl/apps/s_apps.h rename : openssl/apps/s_cb.c => main/openssl/apps/s_cb.c rename : openssl/apps/s_client.c => main/openssl/apps/s_client.c rename : openssl/apps/s_server.c => main/openssl/apps/s_server.c rename : openssl/apps/s_socket.c => main/openssl/apps/s_socket.c rename : openssl/apps/s_time.c => main/openssl/apps/s_time.c rename : openssl/apps/server.pem => main/openssl/apps/server.pem rename : openssl/apps/server.srl => main/openssl/apps/server.srl rename : openssl/apps/server2.pem => main/openssl/apps/server2.pem rename : openssl/apps/sess_id.c => main/openssl/apps/sess_id.c rename : openssl/apps/smime.c => main/openssl/apps/smime.c rename : openssl/apps/speed.c => main/openssl/apps/speed.c rename : openssl/apps/spkac.c => main/openssl/apps/spkac.c rename : openssl/apps/testCA.pem => main/openssl/apps/testCA.pem rename : openssl/apps/testdsa.h => main/openssl/apps/testdsa.h rename : openssl/apps/testrsa.h => main/openssl/apps/testrsa.h rename : openssl/apps/timeouts.h => main/openssl/apps/timeouts.h rename : openssl/apps/verify.c => main/openssl/apps/verify.c rename : openssl/apps/version.c => main/openssl/apps/version.c rename : openssl/apps/winrand.c => main/openssl/apps/winrand.c rename : openssl/apps/x509.c => main/openssl/apps/x509.c rename : openssl/crypto/Android.mk => main/openssl/crypto/Android.mk rename : openssl/crypto/LPdir_nyi.c => main/openssl/crypto/LPdir_nyi.c rename : openssl/crypto/LPdir_unix.c => main/openssl/crypto/LPdir_unix.c rename : openssl/crypto/LPdir_win.c => main/openssl/crypto/LPdir_win.c rename : openssl/crypto/LPdir_wince.c => main/openssl/crypto/LPdir_wince.c rename : openssl/crypto/aes/README => main/openssl/crypto/aes/README rename : openssl/crypto/aes/aes.h => main/openssl/crypto/aes/aes.h rename : openssl/crypto/aes/aes_cbc.c => main/openssl/crypto/aes/aes_cbc.c rename : openssl/crypto/aes/aes_cfb.c => main/openssl/crypto/aes/aes_cfb.c rename : openssl/crypto/aes/aes_core.c => main/openssl/crypto/aes/aes_core.c rename : openssl/crypto/aes/aes_ctr.c => main/openssl/crypto/aes/aes_ctr.c rename : openssl/crypto/aes/aes_ecb.c => main/openssl/crypto/aes/aes_ecb.c rename : openssl/crypto/aes/aes_ige.c => main/openssl/crypto/aes/aes_ige.c rename : openssl/crypto/aes/aes_locl.h => main/openssl/crypto/aes/aes_locl.h rename : openssl/crypto/aes/aes_misc.c => main/openssl/crypto/aes/aes_misc.c rename : openssl/crypto/aes/aes_ofb.c => main/openssl/crypto/aes/aes_ofb.c rename : openssl/crypto/aes/aes_wrap.c => main/openssl/crypto/aes/aes_wrap.c rename : openssl/crypto/aes/aes_x86core.c => main/openssl/crypto/aes/aes_x86core.c rename : openssl/crypto/aes/asm/aes-586.pl => main/openssl/crypto/aes/asm/aes-586.pl rename : openssl/crypto/aes/asm/aes-armv4.pl => main/openssl/crypto/aes/asm/aes-armv4.pl rename : openssl/crypto/aes/asm/aes-armv4.s => main/openssl/crypto/aes/asm/aes-armv4.s rename : openssl/crypto/aes/asm/aes-ia64.S => main/openssl/crypto/aes/asm/aes-ia64.S rename : openssl/crypto/aes/asm/aes-ppc.pl => main/openssl/crypto/aes/asm/aes-ppc.pl rename : openssl/crypto/aes/asm/aes-s390x.pl => main/openssl/crypto/aes/asm/aes-s390x.pl rename : openssl/crypto/aes/asm/aes-sparcv9.pl => main/openssl/crypto/aes/asm/aes-sparcv9.pl rename : openssl/crypto/aes/asm/aes-x86_64.pl => main/openssl/crypto/aes/asm/aes-x86_64.pl rename : openssl/crypto/alphacpuid.pl => main/openssl/crypto/alphacpuid.pl rename : openssl/crypto/asn1/a_bitstr.c => main/openssl/crypto/asn1/a_bitstr.c rename : openssl/crypto/asn1/a_bool.c => main/openssl/crypto/asn1/a_bool.c rename : openssl/crypto/asn1/a_bytes.c => main/openssl/crypto/asn1/a_bytes.c rename : openssl/crypto/asn1/a_d2i_fp.c => main/openssl/crypto/asn1/a_d2i_fp.c rename : openssl/crypto/asn1/a_digest.c => main/openssl/crypto/asn1/a_digest.c rename : openssl/crypto/asn1/a_dup.c => main/openssl/crypto/asn1/a_dup.c rename : openssl/crypto/asn1/a_enum.c => main/openssl/crypto/asn1/a_enum.c rename : openssl/crypto/asn1/a_gentm.c => main/openssl/crypto/asn1/a_gentm.c rename : openssl/crypto/asn1/a_i2d_fp.c => main/openssl/crypto/asn1/a_i2d_fp.c rename : openssl/crypto/asn1/a_int.c => main/openssl/crypto/asn1/a_int.c rename : openssl/crypto/asn1/a_mbstr.c => main/openssl/crypto/asn1/a_mbstr.c rename : openssl/crypto/asn1/a_object.c => main/openssl/crypto/asn1/a_object.c rename : openssl/crypto/asn1/a_octet.c => main/openssl/crypto/asn1/a_octet.c rename : openssl/crypto/asn1/a_print.c => main/openssl/crypto/asn1/a_print.c rename : openssl/crypto/asn1/a_set.c => main/openssl/crypto/asn1/a_set.c rename : openssl/crypto/asn1/a_sign.c => main/openssl/crypto/asn1/a_sign.c rename : openssl/crypto/asn1/a_strex.c => main/openssl/crypto/asn1/a_strex.c rename : openssl/crypto/asn1/a_strnid.c => main/openssl/crypto/asn1/a_strnid.c rename : openssl/crypto/asn1/a_time.c => main/openssl/crypto/asn1/a_time.c rename : openssl/crypto/asn1/a_type.c => main/openssl/crypto/asn1/a_type.c rename : openssl/crypto/asn1/a_utctm.c => main/openssl/crypto/asn1/a_utctm.c rename : openssl/crypto/asn1/a_utf8.c => main/openssl/crypto/asn1/a_utf8.c rename : openssl/crypto/asn1/a_verify.c => main/openssl/crypto/asn1/a_verify.c rename : openssl/crypto/asn1/ameth_lib.c => main/openssl/crypto/asn1/ameth_lib.c rename : openssl/crypto/asn1/asn1.h => main/openssl/crypto/asn1/asn1.h rename : openssl/crypto/asn1/asn1_err.c => main/openssl/crypto/asn1/asn1_err.c rename : openssl/crypto/asn1/asn1_gen.c => main/openssl/crypto/asn1/asn1_gen.c rename : openssl/crypto/asn1/asn1_lib.c => main/openssl/crypto/asn1/asn1_lib.c rename : openssl/crypto/asn1/asn1_locl.h => main/openssl/crypto/asn1/asn1_locl.h rename : openssl/crypto/asn1/asn1_mac.h => main/openssl/crypto/asn1/asn1_mac.h rename : openssl/crypto/asn1/asn1_par.c => main/openssl/crypto/asn1/asn1_par.c rename : openssl/crypto/asn1/asn1t.h => main/openssl/crypto/asn1/asn1t.h rename : openssl/crypto/asn1/asn_mime.c => main/openssl/crypto/asn1/asn_mime.c rename : openssl/crypto/asn1/asn_moid.c => main/openssl/crypto/asn1/asn_moid.c rename : openssl/crypto/asn1/asn_pack.c => main/openssl/crypto/asn1/asn_pack.c rename : openssl/crypto/asn1/bio_asn1.c => main/openssl/crypto/asn1/bio_asn1.c rename : openssl/crypto/asn1/bio_ndef.c => main/openssl/crypto/asn1/bio_ndef.c rename : openssl/crypto/asn1/charmap.h => main/openssl/crypto/asn1/charmap.h rename : openssl/crypto/asn1/charmap.pl => main/openssl/crypto/asn1/charmap.pl rename : openssl/crypto/asn1/d2i_pr.c => main/openssl/crypto/asn1/d2i_pr.c rename : openssl/crypto/asn1/d2i_pu.c => main/openssl/crypto/asn1/d2i_pu.c rename : openssl/crypto/asn1/evp_asn1.c => main/openssl/crypto/asn1/evp_asn1.c rename : openssl/crypto/asn1/f_enum.c => main/openssl/crypto/asn1/f_enum.c rename : openssl/crypto/asn1/f_int.c => main/openssl/crypto/asn1/f_int.c rename : openssl/crypto/asn1/f_string.c => main/openssl/crypto/asn1/f_string.c rename : openssl/crypto/asn1/i2d_pr.c => main/openssl/crypto/asn1/i2d_pr.c rename : openssl/crypto/asn1/i2d_pu.c => main/openssl/crypto/asn1/i2d_pu.c rename : openssl/crypto/asn1/n_pkey.c => main/openssl/crypto/asn1/n_pkey.c rename : openssl/crypto/asn1/nsseq.c => main/openssl/crypto/asn1/nsseq.c rename : openssl/crypto/asn1/p5_pbe.c => main/openssl/crypto/asn1/p5_pbe.c rename : openssl/crypto/asn1/p5_pbev2.c => main/openssl/crypto/asn1/p5_pbev2.c rename : openssl/crypto/asn1/p8_pkey.c => main/openssl/crypto/asn1/p8_pkey.c rename : openssl/crypto/asn1/t_bitst.c => main/openssl/crypto/asn1/t_bitst.c rename : openssl/crypto/asn1/t_crl.c => main/openssl/crypto/asn1/t_crl.c rename : openssl/crypto/asn1/t_pkey.c => main/openssl/crypto/asn1/t_pkey.c rename : openssl/crypto/asn1/t_req.c => main/openssl/crypto/asn1/t_req.c rename : openssl/crypto/asn1/t_spki.c => main/openssl/crypto/asn1/t_spki.c rename : openssl/crypto/asn1/t_x509.c => main/openssl/crypto/asn1/t_x509.c rename : openssl/crypto/asn1/t_x509a.c => main/openssl/crypto/asn1/t_x509a.c rename : openssl/crypto/asn1/tasn_dec.c => main/openssl/crypto/asn1/tasn_dec.c rename : openssl/crypto/asn1/tasn_enc.c => main/openssl/crypto/asn1/tasn_enc.c rename : openssl/crypto/asn1/tasn_fre.c => main/openssl/crypto/asn1/tasn_fre.c rename : openssl/crypto/asn1/tasn_new.c => main/openssl/crypto/asn1/tasn_new.c rename : openssl/crypto/asn1/tasn_prn.c => main/openssl/crypto/asn1/tasn_prn.c rename : openssl/crypto/asn1/tasn_typ.c => main/openssl/crypto/asn1/tasn_typ.c rename : openssl/crypto/asn1/tasn_utl.c => main/openssl/crypto/asn1/tasn_utl.c rename : openssl/crypto/asn1/x_algor.c => main/openssl/crypto/asn1/x_algor.c rename : openssl/crypto/asn1/x_attrib.c => main/openssl/crypto/asn1/x_attrib.c rename : openssl/crypto/asn1/x_bignum.c => main/openssl/crypto/asn1/x_bignum.c rename : openssl/crypto/asn1/x_crl.c => main/openssl/crypto/asn1/x_crl.c rename : openssl/crypto/asn1/x_exten.c => main/openssl/crypto/asn1/x_exten.c rename : openssl/crypto/asn1/x_info.c => main/openssl/crypto/asn1/x_info.c rename : openssl/crypto/asn1/x_long.c => main/openssl/crypto/asn1/x_long.c rename : openssl/crypto/asn1/x_name.c => main/openssl/crypto/asn1/x_name.c rename : openssl/crypto/asn1/x_nx509.c => main/openssl/crypto/asn1/x_nx509.c rename : openssl/crypto/asn1/x_pkey.c => main/openssl/crypto/asn1/x_pkey.c rename : openssl/crypto/asn1/x_pubkey.c => main/openssl/crypto/asn1/x_pubkey.c rename : openssl/crypto/asn1/x_req.c => main/openssl/crypto/asn1/x_req.c rename : openssl/crypto/asn1/x_sig.c => main/openssl/crypto/asn1/x_sig.c rename : openssl/crypto/asn1/x_spki.c => main/openssl/crypto/asn1/x_spki.c rename : openssl/crypto/asn1/x_val.c => main/openssl/crypto/asn1/x_val.c rename : openssl/crypto/asn1/x_x509.c => main/openssl/crypto/asn1/x_x509.c rename : openssl/crypto/asn1/x_x509a.c => main/openssl/crypto/asn1/x_x509a.c rename : openssl/crypto/bf/COPYRIGHT => main/openssl/crypto/bf/COPYRIGHT rename : openssl/crypto/bf/asm/bf-586.pl => main/openssl/crypto/bf/asm/bf-586.pl rename : openssl/crypto/bf/asm/bf-686.pl => main/openssl/crypto/bf/asm/bf-686.pl rename : openssl/crypto/bf/bf_cfb64.c => main/openssl/crypto/bf/bf_cfb64.c rename : openssl/crypto/bf/bf_ecb.c => main/openssl/crypto/bf/bf_ecb.c rename : openssl/crypto/bf/bf_enc.c => main/openssl/crypto/bf/bf_enc.c rename : openssl/crypto/bf/bf_locl.h => main/openssl/crypto/bf/bf_locl.h rename : openssl/crypto/bf/bf_ofb64.c => main/openssl/crypto/bf/bf_ofb64.c rename : openssl/crypto/bf/bf_pi.h => main/openssl/crypto/bf/bf_pi.h rename : openssl/crypto/bf/bf_skey.c => main/openssl/crypto/bf/bf_skey.c rename : openssl/crypto/bf/blowfish.h => main/openssl/crypto/bf/blowfish.h rename : openssl/crypto/bio/b_dump.c => main/openssl/crypto/bio/b_dump.c rename : openssl/crypto/bio/b_print.c => main/openssl/crypto/bio/b_print.c rename : openssl/crypto/bio/b_sock.c => main/openssl/crypto/bio/b_sock.c rename : openssl/crypto/bio/bf_buff.c => main/openssl/crypto/bio/bf_buff.c rename : openssl/crypto/bio/bf_lbuf.c => main/openssl/crypto/bio/bf_lbuf.c rename : openssl/crypto/bio/bf_nbio.c => main/openssl/crypto/bio/bf_nbio.c rename : openssl/crypto/bio/bf_null.c => main/openssl/crypto/bio/bf_null.c rename : openssl/crypto/bio/bio.h => main/openssl/crypto/bio/bio.h rename : openssl/crypto/bio/bio_cb.c => main/openssl/crypto/bio/bio_cb.c rename : openssl/crypto/bio/bio_err.c => main/openssl/crypto/bio/bio_err.c rename : openssl/crypto/bio/bio_lcl.h => main/openssl/crypto/bio/bio_lcl.h rename : openssl/crypto/bio/bio_lib.c => main/openssl/crypto/bio/bio_lib.c rename : openssl/crypto/bio/bss_acpt.c => main/openssl/crypto/bio/bss_acpt.c rename : openssl/crypto/bio/bss_bio.c => main/openssl/crypto/bio/bss_bio.c rename : openssl/crypto/bio/bss_conn.c => main/openssl/crypto/bio/bss_conn.c rename : openssl/crypto/bio/bss_dgram.c => main/openssl/crypto/bio/bss_dgram.c rename : openssl/crypto/bio/bss_fd.c => main/openssl/crypto/bio/bss_fd.c rename : openssl/crypto/bio/bss_file.c => main/openssl/crypto/bio/bss_file.c rename : openssl/crypto/bio/bss_log.c => main/openssl/crypto/bio/bss_log.c rename : openssl/crypto/bio/bss_mem.c => main/openssl/crypto/bio/bss_mem.c rename : openssl/crypto/bio/bss_null.c => main/openssl/crypto/bio/bss_null.c rename : openssl/crypto/bio/bss_sock.c => main/openssl/crypto/bio/bss_sock.c rename : openssl/crypto/bn/asm/README => main/openssl/crypto/bn/asm/README rename : openssl/crypto/bn/asm/alpha-mont.pl => main/openssl/crypto/bn/asm/alpha-mont.pl rename : openssl/crypto/bn/asm/armv4-mont.pl => main/openssl/crypto/bn/asm/armv4-mont.pl rename : openssl/crypto/bn/asm/armv4-mont.s => main/openssl/crypto/bn/asm/armv4-mont.s rename : openssl/crypto/bn/asm/bn-586.pl => main/openssl/crypto/bn/asm/bn-586.pl rename : openssl/crypto/bn/asm/co-586.pl => main/openssl/crypto/bn/asm/co-586.pl rename : openssl/crypto/bn/asm/ia64.S => main/openssl/crypto/bn/asm/ia64.S rename : openssl/crypto/bn/asm/mips3-mont.pl => main/openssl/crypto/bn/asm/mips3-mont.pl rename : openssl/crypto/bn/asm/mips3.s => main/openssl/crypto/bn/asm/mips3.s rename : openssl/crypto/bn/asm/pa-risc2.s => main/openssl/crypto/bn/asm/pa-risc2.s rename : openssl/crypto/bn/asm/pa-risc2W.s => main/openssl/crypto/bn/asm/pa-risc2W.s rename : openssl/crypto/bn/asm/ppc-mont.pl => main/openssl/crypto/bn/asm/ppc-mont.pl rename : openssl/crypto/bn/asm/ppc.pl => main/openssl/crypto/bn/asm/ppc.pl rename : openssl/crypto/bn/asm/ppc64-mont.pl => main/openssl/crypto/bn/asm/ppc64-mont.pl rename : openssl/crypto/bn/asm/s390x-mont.pl => main/openssl/crypto/bn/asm/s390x-mont.pl rename : openssl/crypto/bn/asm/s390x.S => main/openssl/crypto/bn/asm/s390x.S rename : openssl/crypto/bn/asm/sparcv8.S => main/openssl/crypto/bn/asm/sparcv8.S rename : openssl/crypto/bn/asm/sparcv8plus.S => main/openssl/crypto/bn/asm/sparcv8plus.S rename : openssl/crypto/bn/asm/sparcv9-mont.pl => main/openssl/crypto/bn/asm/sparcv9-mont.pl rename : openssl/crypto/bn/asm/sparcv9a-mont.pl => main/openssl/crypto/bn/asm/sparcv9a-mont.pl rename : openssl/crypto/bn/asm/via-mont.pl => main/openssl/crypto/bn/asm/via-mont.pl rename : openssl/crypto/bn/asm/x86-mont.pl => main/openssl/crypto/bn/asm/x86-mont.pl rename : openssl/crypto/bn/asm/x86.pl => main/openssl/crypto/bn/asm/x86.pl rename : openssl/crypto/bn/asm/x86/add.pl => main/openssl/crypto/bn/asm/x86/add.pl rename : openssl/crypto/bn/asm/x86/comba.pl => main/openssl/crypto/bn/asm/x86/comba.pl rename : openssl/crypto/bn/asm/x86/div.pl => main/openssl/crypto/bn/asm/x86/div.pl rename : openssl/crypto/bn/asm/x86/f => main/openssl/crypto/bn/asm/x86/f rename : openssl/crypto/bn/asm/x86/mul.pl => main/openssl/crypto/bn/asm/x86/mul.pl rename : openssl/crypto/bn/asm/x86/mul_add.pl => main/openssl/crypto/bn/asm/x86/mul_add.pl rename : openssl/crypto/bn/asm/x86/sqr.pl => main/openssl/crypto/bn/asm/x86/sqr.pl rename : openssl/crypto/bn/asm/x86/sub.pl => main/openssl/crypto/bn/asm/x86/sub.pl rename : openssl/crypto/bn/asm/x86_64-gcc.c => main/openssl/crypto/bn/asm/x86_64-gcc.c rename : openssl/crypto/bn/asm/x86_64-mont.pl => main/openssl/crypto/bn/asm/x86_64-mont.pl rename : openssl/crypto/bn/bn.h => main/openssl/crypto/bn/bn.h rename : openssl/crypto/bn/bn.mul => main/openssl/crypto/bn/bn.mul rename : openssl/crypto/bn/bn_add.c => main/openssl/crypto/bn/bn_add.c rename : openssl/crypto/bn/bn_asm.c => main/openssl/crypto/bn/bn_asm.c rename : openssl/crypto/bn/bn_blind.c => main/openssl/crypto/bn/bn_blind.c rename : openssl/crypto/bn/bn_const.c => main/openssl/crypto/bn/bn_const.c rename : openssl/crypto/bn/bn_ctx.c => main/openssl/crypto/bn/bn_ctx.c rename : openssl/crypto/bn/bn_depr.c => main/openssl/crypto/bn/bn_depr.c rename : openssl/crypto/bn/bn_div.c => main/openssl/crypto/bn/bn_div.c rename : openssl/crypto/bn/bn_err.c => main/openssl/crypto/bn/bn_err.c rename : openssl/crypto/bn/bn_exp.c => main/openssl/crypto/bn/bn_exp.c rename : openssl/crypto/bn/bn_exp2.c => main/openssl/crypto/bn/bn_exp2.c rename : openssl/crypto/bn/bn_gcd.c => main/openssl/crypto/bn/bn_gcd.c rename : openssl/crypto/bn/bn_gf2m.c => main/openssl/crypto/bn/bn_gf2m.c rename : openssl/crypto/bn/bn_kron.c => main/openssl/crypto/bn/bn_kron.c rename : openssl/crypto/bn/bn_lcl.h => main/openssl/crypto/bn/bn_lcl.h rename : openssl/crypto/bn/bn_lib.c => main/openssl/crypto/bn/bn_lib.c rename : openssl/crypto/bn/bn_mod.c => main/openssl/crypto/bn/bn_mod.c rename : openssl/crypto/bn/bn_mont.c => main/openssl/crypto/bn/bn_mont.c rename : openssl/crypto/bn/bn_mpi.c => main/openssl/crypto/bn/bn_mpi.c rename : openssl/crypto/bn/bn_mul.c => main/openssl/crypto/bn/bn_mul.c rename : openssl/crypto/bn/bn_nist.c => main/openssl/crypto/bn/bn_nist.c rename : openssl/crypto/bn/bn_prime.c => main/openssl/crypto/bn/bn_prime.c rename : openssl/crypto/bn/bn_prime.h => main/openssl/crypto/bn/bn_prime.h rename : openssl/crypto/bn/bn_prime.pl => main/openssl/crypto/bn/bn_prime.pl rename : openssl/crypto/bn/bn_print.c => main/openssl/crypto/bn/bn_print.c rename : openssl/crypto/bn/bn_rand.c => main/openssl/crypto/bn/bn_rand.c rename : openssl/crypto/bn/bn_recp.c => main/openssl/crypto/bn/bn_recp.c rename : openssl/crypto/bn/bn_shift.c => main/openssl/crypto/bn/bn_shift.c rename : openssl/crypto/bn/bn_sqr.c => main/openssl/crypto/bn/bn_sqr.c rename : openssl/crypto/bn/bn_sqrt.c => main/openssl/crypto/bn/bn_sqrt.c rename : openssl/crypto/bn/bn_word.c => main/openssl/crypto/bn/bn_word.c rename : openssl/crypto/bn/bnspeed.c => main/openssl/crypto/bn/bnspeed.c rename : openssl/crypto/bn/bntest.c => main/openssl/crypto/bn/bntest.c rename : openssl/crypto/bn/divtest.c => main/openssl/crypto/bn/divtest.c rename : openssl/crypto/bn/exp.c => main/openssl/crypto/bn/exp.c rename : openssl/crypto/bn/expspeed.c => main/openssl/crypto/bn/expspeed.c rename : openssl/crypto/bn/exptest.c => main/openssl/crypto/bn/exptest.c rename : openssl/crypto/bn/todo => main/openssl/crypto/bn/todo rename : openssl/crypto/buffer/buf_err.c => main/openssl/crypto/buffer/buf_err.c rename : openssl/crypto/buffer/buffer.c => main/openssl/crypto/buffer/buffer.c rename : openssl/crypto/buffer/buffer.h => main/openssl/crypto/buffer/buffer.h rename : openssl/crypto/comp/c_rle.c => main/openssl/crypto/comp/c_rle.c rename : openssl/crypto/comp/c_zlib.c => main/openssl/crypto/comp/c_zlib.c rename : openssl/crypto/comp/comp.h => main/openssl/crypto/comp/comp.h rename : openssl/crypto/comp/comp_err.c => main/openssl/crypto/comp/comp_err.c rename : openssl/crypto/comp/comp_lib.c => main/openssl/crypto/comp/comp_lib.c rename : openssl/crypto/conf/README => main/openssl/crypto/conf/README rename : openssl/crypto/conf/cnf_save.c => main/openssl/crypto/conf/cnf_save.c rename : openssl/crypto/conf/conf.h => main/openssl/crypto/conf/conf.h rename : openssl/crypto/conf/conf_api.c => main/openssl/crypto/conf/conf_api.c rename : openssl/crypto/conf/conf_api.h => main/openssl/crypto/conf/conf_api.h rename : openssl/crypto/conf/conf_def.c => main/openssl/crypto/conf/conf_def.c rename : openssl/crypto/conf/conf_def.h => main/openssl/crypto/conf/conf_def.h rename : openssl/crypto/conf/conf_err.c => main/openssl/crypto/conf/conf_err.c rename : openssl/crypto/conf/conf_lib.c => main/openssl/crypto/conf/conf_lib.c rename : openssl/crypto/conf/conf_mall.c => main/openssl/crypto/conf/conf_mall.c rename : openssl/crypto/conf/conf_mod.c => main/openssl/crypto/conf/conf_mod.c rename : openssl/crypto/conf/conf_sap.c => main/openssl/crypto/conf/conf_sap.c rename : openssl/crypto/conf/keysets.pl => main/openssl/crypto/conf/keysets.pl rename : openssl/crypto/conf/ssleay.cnf => main/openssl/crypto/conf/ssleay.cnf rename : openssl/crypto/conf/test.c => main/openssl/crypto/conf/test.c rename : openssl/crypto/cpt_err.c => main/openssl/crypto/cpt_err.c rename : openssl/crypto/cryptlib.c => main/openssl/crypto/cryptlib.c rename : openssl/crypto/cryptlib.h => main/openssl/crypto/cryptlib.h rename : openssl/crypto/crypto.h => main/openssl/crypto/crypto.h rename : openssl/crypto/cversion.c => main/openssl/crypto/cversion.c rename : openssl/crypto/des/COPYRIGHT => main/openssl/crypto/des/COPYRIGHT rename : openssl/crypto/des/DES.pm => main/openssl/crypto/des/DES.pm rename : openssl/crypto/des/DES.xs => main/openssl/crypto/des/DES.xs rename : openssl/crypto/des/FILES0 => main/openssl/crypto/des/FILES0 rename : openssl/crypto/des/INSTALL => main/openssl/crypto/des/INSTALL rename : openssl/crypto/des/Imakefile => main/openssl/crypto/des/Imakefile rename : openssl/crypto/des/KERBEROS => main/openssl/crypto/des/KERBEROS rename : openssl/crypto/des/README => main/openssl/crypto/des/README rename : openssl/crypto/des/VERSION => main/openssl/crypto/des/VERSION rename : openssl/crypto/des/asm/crypt586.pl => main/openssl/crypto/des/asm/crypt586.pl rename : openssl/crypto/des/asm/des-586.pl => main/openssl/crypto/des/asm/des-586.pl rename : openssl/crypto/des/asm/des_enc.m4 => main/openssl/crypto/des/asm/des_enc.m4 rename : openssl/crypto/des/asm/desboth.pl => main/openssl/crypto/des/asm/desboth.pl rename : openssl/crypto/des/asm/readme => main/openssl/crypto/des/asm/readme rename : openssl/crypto/des/cbc3_enc.c => main/openssl/crypto/des/cbc3_enc.c rename : openssl/crypto/des/cbc_cksm.c => main/openssl/crypto/des/cbc_cksm.c rename : openssl/crypto/des/cbc_enc.c => main/openssl/crypto/des/cbc_enc.c rename : openssl/crypto/des/cfb64ede.c => main/openssl/crypto/des/cfb64ede.c rename : openssl/crypto/des/cfb64enc.c => main/openssl/crypto/des/cfb64enc.c rename : openssl/crypto/des/cfb_enc.c => main/openssl/crypto/des/cfb_enc.c rename : openssl/crypto/des/des.c => main/openssl/crypto/des/des.c rename : openssl/crypto/des/des.h => main/openssl/crypto/des/des.h rename : openssl/crypto/des/des.pod => main/openssl/crypto/des/des.pod rename : openssl/crypto/des/des3s.cpp => main/openssl/crypto/des/des3s.cpp rename : openssl/crypto/des/des_enc.c => main/openssl/crypto/des/des_enc.c rename : openssl/crypto/des/des_locl.h => main/openssl/crypto/des/des_locl.h rename : openssl/crypto/des/des_old.c => main/openssl/crypto/des/des_old.c rename : openssl/crypto/des/des_old.h => main/openssl/crypto/des/des_old.h rename : openssl/crypto/des/des_old2.c => main/openssl/crypto/des/des_old2.c rename : openssl/crypto/des/des_opts.c => main/openssl/crypto/des/des_opts.c rename : openssl/crypto/des/des_ver.h => main/openssl/crypto/des/des_ver.h rename : openssl/crypto/des/dess.cpp => main/openssl/crypto/des/dess.cpp rename : openssl/crypto/des/destest.c => main/openssl/crypto/des/destest.c rename : openssl/crypto/des/ecb3_enc.c => main/openssl/crypto/des/ecb3_enc.c rename : openssl/crypto/des/ecb_enc.c => main/openssl/crypto/des/ecb_enc.c rename : openssl/crypto/des/ede_cbcm_enc.c => main/openssl/crypto/des/ede_cbcm_enc.c rename : openssl/crypto/des/enc_read.c => main/openssl/crypto/des/enc_read.c rename : openssl/crypto/des/enc_writ.c => main/openssl/crypto/des/enc_writ.c rename : openssl/crypto/des/fcrypt.c => main/openssl/crypto/des/fcrypt.c rename : openssl/crypto/des/fcrypt_b.c => main/openssl/crypto/des/fcrypt_b.c rename : openssl/crypto/des/makefile.bc => main/openssl/crypto/des/makefile.bc rename : openssl/crypto/des/ncbc_enc.c => main/openssl/crypto/des/ncbc_enc.c rename : openssl/crypto/des/ofb64ede.c => main/openssl/crypto/des/ofb64ede.c rename : openssl/crypto/des/ofb64enc.c => main/openssl/crypto/des/ofb64enc.c rename : openssl/crypto/des/ofb_enc.c => main/openssl/crypto/des/ofb_enc.c rename : openssl/crypto/des/options.txt => main/openssl/crypto/des/options.txt rename : openssl/crypto/des/pcbc_enc.c => main/openssl/crypto/des/pcbc_enc.c rename : openssl/crypto/des/qud_cksm.c => main/openssl/crypto/des/qud_cksm.c rename : openssl/crypto/des/rand_key.c => main/openssl/crypto/des/rand_key.c rename : openssl/crypto/des/read2pwd.c => main/openssl/crypto/des/read2pwd.c rename : openssl/crypto/des/read_pwd.c => main/openssl/crypto/des/read_pwd.c rename : openssl/crypto/des/rpc_des.h => main/openssl/crypto/des/rpc_des.h rename : openssl/crypto/des/rpc_enc.c => main/openssl/crypto/des/rpc_enc.c rename : openssl/crypto/des/rpw.c => main/openssl/crypto/des/rpw.c rename : openssl/crypto/des/set_key.c => main/openssl/crypto/des/set_key.c rename : openssl/crypto/des/speed.c => main/openssl/crypto/des/speed.c rename : openssl/crypto/des/spr.h => main/openssl/crypto/des/spr.h rename : openssl/crypto/des/str2key.c => main/openssl/crypto/des/str2key.c rename : openssl/crypto/des/t/test => main/openssl/crypto/des/t/test rename : openssl/crypto/des/times/486-50.sol => main/openssl/crypto/des/times/486-50.sol rename : openssl/crypto/des/times/586-100.lnx => main/openssl/crypto/des/times/586-100.lnx rename : openssl/crypto/des/times/686-200.fre => main/openssl/crypto/des/times/686-200.fre rename : openssl/crypto/des/times/aix.cc => main/openssl/crypto/des/times/aix.cc rename : openssl/crypto/des/times/alpha.cc => main/openssl/crypto/des/times/alpha.cc rename : openssl/crypto/des/times/hpux.cc => main/openssl/crypto/des/times/hpux.cc rename : openssl/crypto/des/times/sparc.gcc => main/openssl/crypto/des/times/sparc.gcc rename : openssl/crypto/des/times/usparc.cc => main/openssl/crypto/des/times/usparc.cc rename : openssl/crypto/des/typemap => main/openssl/crypto/des/typemap rename : openssl/crypto/des/xcbc_enc.c => main/openssl/crypto/des/xcbc_enc.c rename : openssl/crypto/dh/dh.h => main/openssl/crypto/dh/dh.h rename : openssl/crypto/dh/dh1024.pem => main/openssl/crypto/dh/dh1024.pem rename : openssl/crypto/dh/dh192.pem => main/openssl/crypto/dh/dh192.pem rename : openssl/crypto/dh/dh2048.pem => main/openssl/crypto/dh/dh2048.pem rename : openssl/crypto/dh/dh4096.pem => main/openssl/crypto/dh/dh4096.pem rename : openssl/crypto/dh/dh512.pem => main/openssl/crypto/dh/dh512.pem rename : openssl/crypto/dh/dh_ameth.c => main/openssl/crypto/dh/dh_ameth.c rename : openssl/crypto/dh/dh_asn1.c => main/openssl/crypto/dh/dh_asn1.c rename : openssl/crypto/dh/dh_check.c => main/openssl/crypto/dh/dh_check.c rename : openssl/crypto/dh/dh_depr.c => main/openssl/crypto/dh/dh_depr.c rename : openssl/crypto/dh/dh_err.c => main/openssl/crypto/dh/dh_err.c rename : openssl/crypto/dh/dh_gen.c => main/openssl/crypto/dh/dh_gen.c rename : openssl/crypto/dh/dh_key.c => main/openssl/crypto/dh/dh_key.c rename : openssl/crypto/dh/dh_lib.c => main/openssl/crypto/dh/dh_lib.c rename : openssl/crypto/dh/dh_pmeth.c => main/openssl/crypto/dh/dh_pmeth.c rename : openssl/crypto/dh/dhtest.c => main/openssl/crypto/dh/dhtest.c rename : openssl/crypto/dh/example => main/openssl/crypto/dh/example rename : openssl/crypto/dh/generate => main/openssl/crypto/dh/generate rename : openssl/crypto/dh/p1024.c => main/openssl/crypto/dh/p1024.c rename : openssl/crypto/dh/p192.c => main/openssl/crypto/dh/p192.c rename : openssl/crypto/dh/p512.c => main/openssl/crypto/dh/p512.c rename : openssl/crypto/dsa/README => main/openssl/crypto/dsa/README rename : openssl/crypto/dsa/dsa.h => main/openssl/crypto/dsa/dsa.h rename : openssl/crypto/dsa/dsa_ameth.c => main/openssl/crypto/dsa/dsa_ameth.c rename : openssl/crypto/dsa/dsa_asn1.c => main/openssl/crypto/dsa/dsa_asn1.c rename : openssl/crypto/dsa/dsa_depr.c => main/openssl/crypto/dsa/dsa_depr.c rename : openssl/crypto/dsa/dsa_err.c => main/openssl/crypto/dsa/dsa_err.c rename : openssl/crypto/dsa/dsa_gen.c => main/openssl/crypto/dsa/dsa_gen.c rename : openssl/crypto/dsa/dsa_key.c => main/openssl/crypto/dsa/dsa_key.c rename : openssl/crypto/dsa/dsa_lib.c => main/openssl/crypto/dsa/dsa_lib.c rename : openssl/crypto/dsa/dsa_locl.h => main/openssl/crypto/dsa/dsa_locl.h rename : openssl/crypto/dsa/dsa_ossl.c => main/openssl/crypto/dsa/dsa_ossl.c rename : openssl/crypto/dsa/dsa_pmeth.c => main/openssl/crypto/dsa/dsa_pmeth.c rename : openssl/crypto/dsa/dsa_prn.c => main/openssl/crypto/dsa/dsa_prn.c rename : openssl/crypto/dsa/dsa_sign.c => main/openssl/crypto/dsa/dsa_sign.c rename : openssl/crypto/dsa/dsa_vrf.c => main/openssl/crypto/dsa/dsa_vrf.c rename : openssl/crypto/dsa/dsagen.c => main/openssl/crypto/dsa/dsagen.c rename : openssl/crypto/dsa/dsatest.c => main/openssl/crypto/dsa/dsatest.c rename : openssl/crypto/dsa/fips186a.txt => main/openssl/crypto/dsa/fips186a.txt rename : openssl/crypto/dso/README => main/openssl/crypto/dso/README rename : openssl/crypto/dso/dso.h => main/openssl/crypto/dso/dso.h rename : openssl/crypto/dso/dso_dl.c => main/openssl/crypto/dso/dso_dl.c rename : openssl/crypto/dso/dso_dlfcn.c => main/openssl/crypto/dso/dso_dlfcn.c rename : openssl/crypto/dso/dso_err.c => main/openssl/crypto/dso/dso_err.c rename : openssl/crypto/dso/dso_lib.c => main/openssl/crypto/dso/dso_lib.c rename : openssl/crypto/dso/dso_null.c => main/openssl/crypto/dso/dso_null.c rename : openssl/crypto/dso/dso_openssl.c => main/openssl/crypto/dso/dso_openssl.c rename : openssl/crypto/ebcdic.c => main/openssl/crypto/ebcdic.c rename : openssl/crypto/ebcdic.h => main/openssl/crypto/ebcdic.h rename : openssl/crypto/ec/ec.h => main/openssl/crypto/ec/ec.h rename : openssl/crypto/ec/ec2_mult.c => main/openssl/crypto/ec/ec2_mult.c rename : openssl/crypto/ec/ec2_smpl.c => main/openssl/crypto/ec/ec2_smpl.c rename : openssl/crypto/ec/ec_ameth.c => main/openssl/crypto/ec/ec_ameth.c rename : openssl/crypto/ec/ec_asn1.c => main/openssl/crypto/ec/ec_asn1.c rename : openssl/crypto/ec/ec_check.c => main/openssl/crypto/ec/ec_check.c rename : openssl/crypto/ec/ec_curve.c => main/openssl/crypto/ec/ec_curve.c rename : openssl/crypto/ec/ec_cvt.c => main/openssl/crypto/ec/ec_cvt.c rename : openssl/crypto/ec/ec_err.c => main/openssl/crypto/ec/ec_err.c rename : openssl/crypto/ec/ec_key.c => main/openssl/crypto/ec/ec_key.c rename : openssl/crypto/ec/ec_lcl.h => main/openssl/crypto/ec/ec_lcl.h rename : openssl/crypto/ec/ec_lib.c => main/openssl/crypto/ec/ec_lib.c rename : openssl/crypto/ec/ec_mult.c => main/openssl/crypto/ec/ec_mult.c rename : openssl/crypto/ec/ec_pmeth.c => main/openssl/crypto/ec/ec_pmeth.c rename : openssl/crypto/ec/ec_print.c => main/openssl/crypto/ec/ec_print.c rename : openssl/crypto/ec/eck_prn.c => main/openssl/crypto/ec/eck_prn.c rename : openssl/crypto/ec/ecp_mont.c => main/openssl/crypto/ec/ecp_mont.c rename : openssl/crypto/ec/ecp_nist.c => main/openssl/crypto/ec/ecp_nist.c rename : openssl/crypto/ec/ecp_smpl.c => main/openssl/crypto/ec/ecp_smpl.c rename : openssl/crypto/ec/ectest.c => main/openssl/crypto/ec/ectest.c rename : openssl/crypto/ecdh/ecdh.h => main/openssl/crypto/ecdh/ecdh.h rename : openssl/crypto/ecdh/ecdhtest.c => main/openssl/crypto/ecdh/ecdhtest.c rename : openssl/crypto/ecdh/ech_err.c => main/openssl/crypto/ecdh/ech_err.c rename : openssl/crypto/ecdh/ech_key.c => main/openssl/crypto/ecdh/ech_key.c rename : openssl/crypto/ecdh/ech_lib.c => main/openssl/crypto/ecdh/ech_lib.c rename : openssl/crypto/ecdh/ech_locl.h => main/openssl/crypto/ecdh/ech_locl.h rename : openssl/crypto/ecdh/ech_ossl.c => main/openssl/crypto/ecdh/ech_ossl.c rename : openssl/crypto/ecdsa/ecdsa.h => main/openssl/crypto/ecdsa/ecdsa.h rename : openssl/crypto/ecdsa/ecdsatest.c => main/openssl/crypto/ecdsa/ecdsatest.c rename : openssl/crypto/ecdsa/ecs_asn1.c => main/openssl/crypto/ecdsa/ecs_asn1.c rename : openssl/crypto/ecdsa/ecs_err.c => main/openssl/crypto/ecdsa/ecs_err.c rename : openssl/crypto/ecdsa/ecs_lib.c => main/openssl/crypto/ecdsa/ecs_lib.c rename : openssl/crypto/ecdsa/ecs_locl.h => main/openssl/crypto/ecdsa/ecs_locl.h rename : openssl/crypto/ecdsa/ecs_ossl.c => main/openssl/crypto/ecdsa/ecs_ossl.c rename : openssl/crypto/ecdsa/ecs_sign.c => main/openssl/crypto/ecdsa/ecs_sign.c rename : openssl/crypto/ecdsa/ecs_vrf.c => main/openssl/crypto/ecdsa/ecs_vrf.c rename : openssl/crypto/engine/README => main/openssl/crypto/engine/README rename : openssl/crypto/engine/eng_all.c => main/openssl/crypto/engine/eng_all.c rename : openssl/crypto/engine/eng_cnf.c => main/openssl/crypto/engine/eng_cnf.c rename : openssl/crypto/engine/eng_cryptodev.c => main/openssl/crypto/engine/eng_cryptodev.c rename : openssl/crypto/engine/eng_ctrl.c => main/openssl/crypto/engine/eng_ctrl.c rename : openssl/crypto/engine/eng_dyn.c => main/openssl/crypto/engine/eng_dyn.c rename : openssl/crypto/engine/eng_err.c => main/openssl/crypto/engine/eng_err.c rename : openssl/crypto/engine/eng_fat.c => main/openssl/crypto/engine/eng_fat.c rename : openssl/crypto/engine/eng_init.c => main/openssl/crypto/engine/eng_init.c rename : openssl/crypto/engine/eng_int.h => main/openssl/crypto/engine/eng_int.h rename : openssl/crypto/engine/eng_lib.c => main/openssl/crypto/engine/eng_lib.c rename : openssl/crypto/engine/eng_list.c => main/openssl/crypto/engine/eng_list.c rename : openssl/crypto/engine/eng_openssl.c => main/openssl/crypto/engine/eng_openssl.c rename : openssl/crypto/engine/eng_pkey.c => main/openssl/crypto/engine/eng_pkey.c rename : openssl/crypto/engine/eng_table.c => main/openssl/crypto/engine/eng_table.c rename : openssl/crypto/engine/engine.h => main/openssl/crypto/engine/engine.h rename : openssl/crypto/engine/enginetest.c => main/openssl/crypto/engine/enginetest.c rename : openssl/crypto/engine/tb_cipher.c => main/openssl/crypto/engine/tb_cipher.c rename : openssl/crypto/engine/tb_dh.c => main/openssl/crypto/engine/tb_dh.c rename : openssl/crypto/engine/tb_digest.c => main/openssl/crypto/engine/tb_digest.c rename : openssl/crypto/engine/tb_dsa.c => main/openssl/crypto/engine/tb_dsa.c rename : openssl/crypto/engine/tb_ecdh.c => main/openssl/crypto/engine/tb_ecdh.c rename : openssl/crypto/engine/tb_ecdsa.c => main/openssl/crypto/engine/tb_ecdsa.c rename : openssl/crypto/engine/tb_rand.c => main/openssl/crypto/engine/tb_rand.c rename : openssl/crypto/engine/tb_rsa.c => main/openssl/crypto/engine/tb_rsa.c rename : openssl/crypto/engine/tb_store.c => main/openssl/crypto/engine/tb_store.c rename : openssl/crypto/err/err.c => main/openssl/crypto/err/err.c rename : openssl/crypto/err/err.h => main/openssl/crypto/err/err.h rename : openssl/crypto/err/err_all.c => main/openssl/crypto/err/err_all.c rename : openssl/crypto/err/err_prn.c => main/openssl/crypto/err/err_prn.c rename : openssl/crypto/err/openssl.ec => main/openssl/crypto/err/openssl.ec rename : openssl/crypto/evp/bio_b64.c => main/openssl/crypto/evp/bio_b64.c rename : openssl/crypto/evp/bio_enc.c => main/openssl/crypto/evp/bio_enc.c rename : openssl/crypto/evp/bio_md.c => main/openssl/crypto/evp/bio_md.c rename : openssl/crypto/evp/bio_ok.c => main/openssl/crypto/evp/bio_ok.c rename : openssl/crypto/evp/c_all.c => main/openssl/crypto/evp/c_all.c rename : openssl/crypto/evp/c_allc.c => main/openssl/crypto/evp/c_allc.c rename : openssl/crypto/evp/c_alld.c => main/openssl/crypto/evp/c_alld.c rename : openssl/crypto/evp/digest.c => main/openssl/crypto/evp/digest.c rename : openssl/crypto/evp/e_aes.c => main/openssl/crypto/evp/e_aes.c rename : openssl/crypto/evp/e_bf.c => main/openssl/crypto/evp/e_bf.c rename : openssl/crypto/evp/e_camellia.c => main/openssl/crypto/evp/e_camellia.c rename : openssl/crypto/evp/e_cast.c => main/openssl/crypto/evp/e_cast.c rename : openssl/crypto/evp/e_des.c => main/openssl/crypto/evp/e_des.c rename : openssl/crypto/evp/e_des3.c => main/openssl/crypto/evp/e_des3.c rename : openssl/crypto/evp/e_dsa.c => main/openssl/crypto/evp/e_dsa.c rename : openssl/crypto/evp/e_idea.c => main/openssl/crypto/evp/e_idea.c rename : openssl/crypto/evp/e_null.c => main/openssl/crypto/evp/e_null.c rename : openssl/crypto/evp/e_old.c => main/openssl/crypto/evp/e_old.c rename : openssl/crypto/evp/e_rc2.c => main/openssl/crypto/evp/e_rc2.c rename : openssl/crypto/evp/e_rc4.c => main/openssl/crypto/evp/e_rc4.c rename : openssl/crypto/evp/e_rc5.c => main/openssl/crypto/evp/e_rc5.c rename : openssl/crypto/evp/e_seed.c => main/openssl/crypto/evp/e_seed.c rename : openssl/crypto/evp/e_xcbc_d.c => main/openssl/crypto/evp/e_xcbc_d.c rename : openssl/crypto/evp/encode.c => main/openssl/crypto/evp/encode.c rename : openssl/crypto/evp/evp.h => main/openssl/crypto/evp/evp.h rename : openssl/crypto/evp/evp_acnf.c => main/openssl/crypto/evp/evp_acnf.c rename : openssl/crypto/evp/evp_enc.c => main/openssl/crypto/evp/evp_enc.c rename : openssl/crypto/evp/evp_err.c => main/openssl/crypto/evp/evp_err.c rename : openssl/crypto/evp/evp_key.c => main/openssl/crypto/evp/evp_key.c rename : openssl/crypto/evp/evp_lib.c => main/openssl/crypto/evp/evp_lib.c rename : openssl/crypto/evp/evp_locl.h => main/openssl/crypto/evp/evp_locl.h rename : openssl/crypto/evp/evp_pbe.c => main/openssl/crypto/evp/evp_pbe.c rename : openssl/crypto/evp/evp_pkey.c => main/openssl/crypto/evp/evp_pkey.c rename : openssl/crypto/evp/evp_test.c => main/openssl/crypto/evp/evp_test.c rename : openssl/crypto/evp/evptests.txt => main/openssl/crypto/evp/evptests.txt rename : openssl/crypto/evp/m_dss.c => main/openssl/crypto/evp/m_dss.c rename : openssl/crypto/evp/m_dss1.c => main/openssl/crypto/evp/m_dss1.c rename : openssl/crypto/evp/m_ecdsa.c => main/openssl/crypto/evp/m_ecdsa.c rename : openssl/crypto/evp/m_md4.c => main/openssl/crypto/evp/m_md4.c rename : openssl/crypto/evp/m_md5.c => main/openssl/crypto/evp/m_md5.c rename : openssl/crypto/evp/m_mdc2.c => main/openssl/crypto/evp/m_mdc2.c rename : openssl/crypto/evp/m_null.c => main/openssl/crypto/evp/m_null.c rename : openssl/crypto/evp/m_ripemd.c => main/openssl/crypto/evp/m_ripemd.c rename : openssl/crypto/evp/m_sha1.c => main/openssl/crypto/evp/m_sha1.c rename : openssl/crypto/evp/m_sigver.c => main/openssl/crypto/evp/m_sigver.c rename : openssl/crypto/evp/m_wp.c => main/openssl/crypto/evp/m_wp.c rename : openssl/crypto/evp/names.c => main/openssl/crypto/evp/names.c rename : openssl/crypto/evp/openbsd_hw.c => main/openssl/crypto/evp/openbsd_hw.c rename : openssl/crypto/evp/p5_crpt.c => main/openssl/crypto/evp/p5_crpt.c rename : openssl/crypto/evp/p5_crpt2.c => main/openssl/crypto/evp/p5_crpt2.c rename : openssl/crypto/evp/p_dec.c => main/openssl/crypto/evp/p_dec.c rename : openssl/crypto/evp/p_enc.c => main/openssl/crypto/evp/p_enc.c rename : openssl/crypto/evp/p_lib.c => main/openssl/crypto/evp/p_lib.c rename : openssl/crypto/evp/p_open.c => main/openssl/crypto/evp/p_open.c rename : openssl/crypto/evp/p_seal.c => main/openssl/crypto/evp/p_seal.c rename : openssl/crypto/evp/p_sign.c => main/openssl/crypto/evp/p_sign.c rename : openssl/crypto/evp/p_verify.c => main/openssl/crypto/evp/p_verify.c rename : openssl/crypto/evp/pmeth_fn.c => main/openssl/crypto/evp/pmeth_fn.c rename : openssl/crypto/evp/pmeth_gn.c => main/openssl/crypto/evp/pmeth_gn.c rename : openssl/crypto/evp/pmeth_lib.c => main/openssl/crypto/evp/pmeth_lib.c rename : openssl/crypto/ex_data.c => main/openssl/crypto/ex_data.c rename : openssl/crypto/hmac/hm_ameth.c => main/openssl/crypto/hmac/hm_ameth.c rename : openssl/crypto/hmac/hm_pmeth.c => main/openssl/crypto/hmac/hm_pmeth.c rename : openssl/crypto/hmac/hmac.c => main/openssl/crypto/hmac/hmac.c rename : openssl/crypto/hmac/hmac.h => main/openssl/crypto/hmac/hmac.h rename : openssl/crypto/hmac/hmactest.c => main/openssl/crypto/hmac/hmactest.c rename : openssl/crypto/ia64cpuid.S => main/openssl/crypto/ia64cpuid.S rename : openssl/crypto/jpake/jpake.c => main/openssl/crypto/jpake/jpake.c rename : openssl/crypto/jpake/jpake.h => main/openssl/crypto/jpake/jpake.h rename : openssl/crypto/jpake/jpake_err.c => main/openssl/crypto/jpake/jpake_err.c rename : openssl/crypto/jpake/jpaketest.c => main/openssl/crypto/jpake/jpaketest.c rename : openssl/crypto/krb5/krb5_asn.c => main/openssl/crypto/krb5/krb5_asn.c rename : openssl/crypto/krb5/krb5_asn.h => main/openssl/crypto/krb5/krb5_asn.h rename : openssl/crypto/lhash/lh_stats.c => main/openssl/crypto/lhash/lh_stats.c rename : openssl/crypto/lhash/lh_test.c => main/openssl/crypto/lhash/lh_test.c rename : openssl/crypto/lhash/lhash.c => main/openssl/crypto/lhash/lhash.c rename : openssl/crypto/lhash/lhash.h => main/openssl/crypto/lhash/lhash.h rename : openssl/crypto/lhash/num.pl => main/openssl/crypto/lhash/num.pl rename : openssl/crypto/md32_common.h => main/openssl/crypto/md32_common.h rename : openssl/crypto/md4/md4.c => main/openssl/crypto/md4/md4.c rename : openssl/crypto/md4/md4.h => main/openssl/crypto/md4/md4.h rename : openssl/crypto/md4/md4_dgst.c => main/openssl/crypto/md4/md4_dgst.c rename : openssl/crypto/md4/md4_locl.h => main/openssl/crypto/md4/md4_locl.h rename : openssl/crypto/md4/md4_one.c => main/openssl/crypto/md4/md4_one.c rename : openssl/crypto/md4/md4s.cpp => main/openssl/crypto/md4/md4s.cpp rename : openssl/crypto/md4/md4test.c => main/openssl/crypto/md4/md4test.c rename : openssl/crypto/md5/asm/md5-586.pl => main/openssl/crypto/md5/asm/md5-586.pl rename : openssl/crypto/md5/asm/md5-ia64.S => main/openssl/crypto/md5/asm/md5-ia64.S rename : openssl/crypto/md5/asm/md5-x86_64.pl => main/openssl/crypto/md5/asm/md5-x86_64.pl rename : openssl/crypto/md5/md5.c => main/openssl/crypto/md5/md5.c rename : openssl/crypto/md5/md5.h => main/openssl/crypto/md5/md5.h rename : openssl/crypto/md5/md5_dgst.c => main/openssl/crypto/md5/md5_dgst.c rename : openssl/crypto/md5/md5_locl.h => main/openssl/crypto/md5/md5_locl.h rename : openssl/crypto/md5/md5_one.c => main/openssl/crypto/md5/md5_one.c rename : openssl/crypto/md5/md5s.cpp => main/openssl/crypto/md5/md5s.cpp rename : openssl/crypto/md5/md5test.c => main/openssl/crypto/md5/md5test.c rename : openssl/crypto/mdc2/mdc2.h => main/openssl/crypto/mdc2/mdc2.h rename : openssl/crypto/mdc2/mdc2_one.c => main/openssl/crypto/mdc2/mdc2_one.c rename : openssl/crypto/mdc2/mdc2dgst.c => main/openssl/crypto/mdc2/mdc2dgst.c rename : openssl/crypto/mdc2/mdc2test.c => main/openssl/crypto/mdc2/mdc2test.c rename : openssl/crypto/mem.c => main/openssl/crypto/mem.c rename : openssl/crypto/mem_clr.c => main/openssl/crypto/mem_clr.c rename : openssl/crypto/mem_dbg.c => main/openssl/crypto/mem_dbg.c rename : openssl/crypto/modes/cbc128.c => main/openssl/crypto/modes/cbc128.c rename : openssl/crypto/modes/cfb128.c => main/openssl/crypto/modes/cfb128.c rename : openssl/crypto/modes/ctr128.c => main/openssl/crypto/modes/ctr128.c rename : openssl/crypto/modes/ofb128.c => main/openssl/crypto/modes/ofb128.c rename : openssl/crypto/o_dir.c => main/openssl/crypto/o_dir.c rename : openssl/crypto/o_dir.h => main/openssl/crypto/o_dir.h rename : openssl/crypto/o_dir_test.c => main/openssl/crypto/o_dir_test.c rename : openssl/crypto/o_str.c => main/openssl/crypto/o_str.c rename : openssl/crypto/o_str.h => main/openssl/crypto/o_str.h rename : openssl/crypto/o_time.c => main/openssl/crypto/o_time.c rename : openssl/crypto/o_time.h => main/openssl/crypto/o_time.h rename : openssl/crypto/objects/o_names.c => main/openssl/crypto/objects/o_names.c rename : openssl/crypto/objects/obj_dat.c => main/openssl/crypto/objects/obj_dat.c rename : openssl/crypto/objects/obj_dat.h => main/openssl/crypto/objects/obj_dat.h rename : openssl/crypto/objects/obj_dat.pl => main/openssl/crypto/objects/obj_dat.pl rename : openssl/crypto/objects/obj_err.c => main/openssl/crypto/objects/obj_err.c rename : openssl/crypto/objects/obj_lib.c => main/openssl/crypto/objects/obj_lib.c rename : openssl/crypto/objects/obj_mac.h => main/openssl/crypto/objects/obj_mac.h rename : openssl/crypto/objects/obj_mac.num => main/openssl/crypto/objects/obj_mac.num rename : openssl/crypto/objects/obj_xref.c => main/openssl/crypto/objects/obj_xref.c rename : openssl/crypto/objects/obj_xref.h => main/openssl/crypto/objects/obj_xref.h rename : openssl/crypto/objects/obj_xref.txt => main/openssl/crypto/objects/obj_xref.txt rename : openssl/crypto/objects/objects.README => main/openssl/crypto/objects/objects.README rename : openssl/crypto/objects/objects.h => main/openssl/crypto/objects/objects.h rename : openssl/crypto/objects/objects.pl => main/openssl/crypto/objects/objects.pl rename : openssl/crypto/objects/objects.txt => main/openssl/crypto/objects/objects.txt rename : openssl/crypto/objects/objxref.pl => main/openssl/crypto/objects/objxref.pl rename : openssl/crypto/ocsp/ocsp.h => main/openssl/crypto/ocsp/ocsp.h rename : openssl/crypto/ocsp/ocsp_asn.c => main/openssl/crypto/ocsp/ocsp_asn.c rename : openssl/crypto/ocsp/ocsp_cl.c => main/openssl/crypto/ocsp/ocsp_cl.c rename : openssl/crypto/ocsp/ocsp_err.c => main/openssl/crypto/ocsp/ocsp_err.c rename : openssl/crypto/ocsp/ocsp_ext.c => main/openssl/crypto/ocsp/ocsp_ext.c rename : openssl/crypto/ocsp/ocsp_ht.c => main/openssl/crypto/ocsp/ocsp_ht.c rename : openssl/crypto/ocsp/ocsp_lib.c => main/openssl/crypto/ocsp/ocsp_lib.c rename : openssl/crypto/ocsp/ocsp_prn.c => main/openssl/crypto/ocsp/ocsp_prn.c rename : openssl/crypto/ocsp/ocsp_srv.c => main/openssl/crypto/ocsp/ocsp_srv.c rename : openssl/crypto/ocsp/ocsp_vfy.c => main/openssl/crypto/ocsp/ocsp_vfy.c rename : openssl/crypto/opensslconf.h => main/openssl/crypto/opensslconf.h rename : openssl/crypto/opensslconf.h.in => main/openssl/crypto/opensslconf.h.in rename : openssl/crypto/opensslv.h => main/openssl/crypto/opensslv.h rename : openssl/crypto/ossl_typ.h => main/openssl/crypto/ossl_typ.h rename : openssl/crypto/pem/message => main/openssl/crypto/pem/message rename : openssl/crypto/pem/pem.h => main/openssl/crypto/pem/pem.h rename : openssl/crypto/pem/pem2.h => main/openssl/crypto/pem/pem2.h rename : openssl/crypto/pem/pem_all.c => main/openssl/crypto/pem/pem_all.c rename : openssl/crypto/pem/pem_err.c => main/openssl/crypto/pem/pem_err.c rename : openssl/crypto/pem/pem_info.c => main/openssl/crypto/pem/pem_info.c rename : openssl/crypto/pem/pem_lib.c => main/openssl/crypto/pem/pem_lib.c rename : openssl/crypto/pem/pem_oth.c => main/openssl/crypto/pem/pem_oth.c rename : openssl/crypto/pem/pem_pk8.c => main/openssl/crypto/pem/pem_pk8.c rename : openssl/crypto/pem/pem_pkey.c => main/openssl/crypto/pem/pem_pkey.c rename : openssl/crypto/pem/pem_seal.c => main/openssl/crypto/pem/pem_seal.c rename : openssl/crypto/pem/pem_sign.c => main/openssl/crypto/pem/pem_sign.c rename : openssl/crypto/pem/pem_x509.c => main/openssl/crypto/pem/pem_x509.c rename : openssl/crypto/pem/pem_xaux.c => main/openssl/crypto/pem/pem_xaux.c rename : openssl/crypto/pem/pkcs7.lis => main/openssl/crypto/pem/pkcs7.lis rename : openssl/crypto/pem/pvkfmt.c => main/openssl/crypto/pem/pvkfmt.c rename : openssl/crypto/perlasm/cbc.pl => main/openssl/crypto/perlasm/cbc.pl rename : openssl/crypto/perlasm/ppc-xlate.pl => main/openssl/crypto/perlasm/ppc-xlate.pl rename : openssl/crypto/perlasm/readme => main/openssl/crypto/perlasm/readme rename : openssl/crypto/perlasm/x86_64-xlate.pl => main/openssl/crypto/perlasm/x86_64-xlate.pl rename : openssl/crypto/perlasm/x86asm.pl => main/openssl/crypto/perlasm/x86asm.pl rename : openssl/crypto/perlasm/x86gas.pl => main/openssl/crypto/perlasm/x86gas.pl rename : openssl/crypto/perlasm/x86masm.pl => main/openssl/crypto/perlasm/x86masm.pl rename : openssl/crypto/perlasm/x86nasm.pl => main/openssl/crypto/perlasm/x86nasm.pl rename : openssl/crypto/pkcs12/p12_add.c => main/openssl/crypto/pkcs12/p12_add.c rename : openssl/crypto/pkcs12/p12_asn.c => main/openssl/crypto/pkcs12/p12_asn.c rename : openssl/crypto/pkcs12/p12_attr.c => main/openssl/crypto/pkcs12/p12_attr.c rename : openssl/crypto/pkcs12/p12_crpt.c => main/openssl/crypto/pkcs12/p12_crpt.c rename : openssl/crypto/pkcs12/p12_crt.c => main/openssl/crypto/pkcs12/p12_crt.c rename : openssl/crypto/pkcs12/p12_decr.c => main/openssl/crypto/pkcs12/p12_decr.c rename : openssl/crypto/pkcs12/p12_init.c => main/openssl/crypto/pkcs12/p12_init.c rename : openssl/crypto/pkcs12/p12_key.c => main/openssl/crypto/pkcs12/p12_key.c rename : openssl/crypto/pkcs12/p12_kiss.c => main/openssl/crypto/pkcs12/p12_kiss.c rename : openssl/crypto/pkcs12/p12_mutl.c => main/openssl/crypto/pkcs12/p12_mutl.c rename : openssl/crypto/pkcs12/p12_npas.c => main/openssl/crypto/pkcs12/p12_npas.c rename : openssl/crypto/pkcs12/p12_p8d.c => main/openssl/crypto/pkcs12/p12_p8d.c rename : openssl/crypto/pkcs12/p12_p8e.c => main/openssl/crypto/pkcs12/p12_p8e.c rename : openssl/crypto/pkcs12/p12_utl.c => main/openssl/crypto/pkcs12/p12_utl.c rename : openssl/crypto/pkcs12/pk12err.c => main/openssl/crypto/pkcs12/pk12err.c rename : openssl/crypto/pkcs12/pkcs12.h => main/openssl/crypto/pkcs12/pkcs12.h rename : openssl/crypto/pkcs7/bio_ber.c => main/openssl/crypto/pkcs7/bio_ber.c rename : openssl/crypto/pkcs7/dec.c => main/openssl/crypto/pkcs7/dec.c rename : openssl/crypto/pkcs7/des.pem => main/openssl/crypto/pkcs7/des.pem rename : openssl/crypto/pkcs7/doc => main/openssl/crypto/pkcs7/doc rename : openssl/crypto/pkcs7/enc.c => main/openssl/crypto/pkcs7/enc.c rename : openssl/crypto/pkcs7/es1.pem => main/openssl/crypto/pkcs7/es1.pem rename : openssl/crypto/pkcs7/example.c => main/openssl/crypto/pkcs7/example.c rename : openssl/crypto/pkcs7/example.h => main/openssl/crypto/pkcs7/example.h rename : openssl/crypto/pkcs7/info.pem => main/openssl/crypto/pkcs7/info.pem rename : openssl/crypto/pkcs7/infokey.pem => main/openssl/crypto/pkcs7/infokey.pem rename : openssl/crypto/pkcs7/p7/a1 => main/openssl/crypto/pkcs7/p7/a1 rename : openssl/crypto/pkcs7/p7/a2 => main/openssl/crypto/pkcs7/p7/a2 rename : openssl/crypto/pkcs7/p7/cert.p7c => main/openssl/crypto/pkcs7/p7/cert.p7c rename : openssl/crypto/pkcs7/p7/smime.p7m => main/openssl/crypto/pkcs7/p7/smime.p7m rename : openssl/crypto/pkcs7/p7/smime.p7s => main/openssl/crypto/pkcs7/p7/smime.p7s rename : openssl/crypto/pkcs7/pk7_asn1.c => main/openssl/crypto/pkcs7/pk7_asn1.c rename : openssl/crypto/pkcs7/pk7_attr.c => main/openssl/crypto/pkcs7/pk7_attr.c rename : openssl/crypto/pkcs7/pk7_dgst.c => main/openssl/crypto/pkcs7/pk7_dgst.c rename : openssl/crypto/pkcs7/pk7_doit.c => main/openssl/crypto/pkcs7/pk7_doit.c rename : openssl/crypto/pkcs7/pk7_enc.c => main/openssl/crypto/pkcs7/pk7_enc.c rename : openssl/crypto/pkcs7/pk7_lib.c => main/openssl/crypto/pkcs7/pk7_lib.c rename : openssl/crypto/pkcs7/pk7_mime.c => main/openssl/crypto/pkcs7/pk7_mime.c rename : openssl/crypto/pkcs7/pk7_smime.c => main/openssl/crypto/pkcs7/pk7_smime.c rename : openssl/crypto/pkcs7/pkcs7.h => main/openssl/crypto/pkcs7/pkcs7.h rename : openssl/crypto/pkcs7/pkcs7err.c => main/openssl/crypto/pkcs7/pkcs7err.c rename : openssl/crypto/pkcs7/server.pem => main/openssl/crypto/pkcs7/server.pem rename : openssl/crypto/pkcs7/sign.c => main/openssl/crypto/pkcs7/sign.c rename : openssl/crypto/pkcs7/t/3des.pem => main/openssl/crypto/pkcs7/t/3des.pem rename : openssl/crypto/pkcs7/t/3dess.pem => main/openssl/crypto/pkcs7/t/3dess.pem rename : openssl/crypto/pkcs7/t/c.pem => main/openssl/crypto/pkcs7/t/c.pem rename : openssl/crypto/pkcs7/t/ff => main/openssl/crypto/pkcs7/t/ff rename : openssl/crypto/pkcs7/t/msie-e => main/openssl/crypto/pkcs7/t/msie-e rename : openssl/crypto/pkcs7/t/msie-e.pem => main/openssl/crypto/pkcs7/t/msie-e.pem rename : openssl/crypto/pkcs7/t/msie-enc-01 => main/openssl/crypto/pkcs7/t/msie-enc-01 rename : openssl/crypto/pkcs7/t/msie-enc-01.pem => main/openssl/crypto/pkcs7/t/msie-enc-01.pem rename : openssl/crypto/pkcs7/t/msie-enc-02 => main/openssl/crypto/pkcs7/t/msie-enc-02 rename : openssl/crypto/pkcs7/t/msie-enc-02.pem => main/openssl/crypto/pkcs7/t/msie-enc-02.pem rename : openssl/crypto/pkcs7/t/msie-s-a-e => main/openssl/crypto/pkcs7/t/msie-s-a-e rename : openssl/crypto/pkcs7/t/msie-s-a-e.pem => main/openssl/crypto/pkcs7/t/msie-s-a-e.pem rename : openssl/crypto/pkcs7/t/nav-smime => main/openssl/crypto/pkcs7/t/nav-smime rename : openssl/crypto/pkcs7/t/s.pem => main/openssl/crypto/pkcs7/t/s.pem rename : openssl/crypto/pkcs7/t/server.pem => main/openssl/crypto/pkcs7/t/server.pem rename : openssl/crypto/pkcs7/verify.c => main/openssl/crypto/pkcs7/verify.c rename : openssl/crypto/ppccpuid.pl => main/openssl/crypto/ppccpuid.pl rename : openssl/crypto/pqueue/pq_test.c => main/openssl/crypto/pqueue/pq_test.c rename : openssl/crypto/pqueue/pqueue.c => main/openssl/crypto/pqueue/pqueue.c rename : openssl/crypto/pqueue/pqueue.h => main/openssl/crypto/pqueue/pqueue.h rename : openssl/crypto/rand/md_rand.c => main/openssl/crypto/rand/md_rand.c rename : openssl/crypto/rand/rand.h => main/openssl/crypto/rand/rand.h rename : openssl/crypto/rand/rand_egd.c => main/openssl/crypto/rand/rand_egd.c rename : openssl/crypto/rand/rand_err.c => main/openssl/crypto/rand/rand_err.c rename : openssl/crypto/rand/rand_lcl.h => main/openssl/crypto/rand/rand_lcl.h rename : openssl/crypto/rand/rand_lib.c => main/openssl/crypto/rand/rand_lib.c rename : openssl/crypto/rand/rand_nw.c => main/openssl/crypto/rand/rand_nw.c rename : openssl/crypto/rand/rand_os2.c => main/openssl/crypto/rand/rand_os2.c rename : openssl/crypto/rand/rand_unix.c => main/openssl/crypto/rand/rand_unix.c rename : openssl/crypto/rand/rand_win.c => main/openssl/crypto/rand/rand_win.c rename : openssl/crypto/rand/randfile.c => main/openssl/crypto/rand/randfile.c rename : openssl/crypto/rand/randtest.c => main/openssl/crypto/rand/randtest.c rename : openssl/crypto/rc2/rc2.h => main/openssl/crypto/rc2/rc2.h rename : openssl/crypto/rc2/rc2_cbc.c => main/openssl/crypto/rc2/rc2_cbc.c rename : openssl/crypto/rc2/rc2_ecb.c => main/openssl/crypto/rc2/rc2_ecb.c rename : openssl/crypto/rc2/rc2_locl.h => main/openssl/crypto/rc2/rc2_locl.h rename : openssl/crypto/rc2/rc2_skey.c => main/openssl/crypto/rc2/rc2_skey.c rename : openssl/crypto/rc2/rc2cfb64.c => main/openssl/crypto/rc2/rc2cfb64.c rename : openssl/crypto/rc2/rc2ofb64.c => main/openssl/crypto/rc2/rc2ofb64.c rename : openssl/crypto/rc2/rc2speed.c => main/openssl/crypto/rc2/rc2speed.c rename : openssl/crypto/rc2/rc2test.c => main/openssl/crypto/rc2/rc2test.c rename : openssl/crypto/rc2/rrc2.doc => main/openssl/crypto/rc2/rrc2.doc rename : openssl/crypto/rc2/tab.c => main/openssl/crypto/rc2/tab.c rename : openssl/crypto/rc2/version => main/openssl/crypto/rc2/version rename : openssl/crypto/rc4/asm/rc4-586.pl => main/openssl/crypto/rc4/asm/rc4-586.pl rename : openssl/crypto/rc4/asm/rc4-ia64.pl => main/openssl/crypto/rc4/asm/rc4-ia64.pl rename : openssl/crypto/rc4/asm/rc4-s390x.pl => main/openssl/crypto/rc4/asm/rc4-s390x.pl rename : openssl/crypto/rc4/asm/rc4-x86_64.pl => main/openssl/crypto/rc4/asm/rc4-x86_64.pl rename : openssl/crypto/rc4/rc4.c => main/openssl/crypto/rc4/rc4.c rename : openssl/crypto/rc4/rc4.h => main/openssl/crypto/rc4/rc4.h rename : openssl/crypto/rc4/rc4_enc.c => main/openssl/crypto/rc4/rc4_enc.c rename : openssl/crypto/rc4/rc4_locl.h => main/openssl/crypto/rc4/rc4_locl.h rename : openssl/crypto/rc4/rc4_skey.c => main/openssl/crypto/rc4/rc4_skey.c rename : openssl/crypto/rc4/rc4s.cpp => main/openssl/crypto/rc4/rc4s.cpp rename : openssl/crypto/rc4/rc4speed.c => main/openssl/crypto/rc4/rc4speed.c rename : openssl/crypto/rc4/rc4test.c => main/openssl/crypto/rc4/rc4test.c rename : openssl/crypto/rc4/rrc4.doc => main/openssl/crypto/rc4/rrc4.doc rename : openssl/crypto/ripemd/README => main/openssl/crypto/ripemd/README rename : openssl/crypto/ripemd/asm/rips.cpp => main/openssl/crypto/ripemd/asm/rips.cpp rename : openssl/crypto/ripemd/asm/rmd-586.pl => main/openssl/crypto/ripemd/asm/rmd-586.pl rename : openssl/crypto/ripemd/ripemd.h => main/openssl/crypto/ripemd/ripemd.h rename : openssl/crypto/ripemd/rmd160.c => main/openssl/crypto/ripemd/rmd160.c rename : openssl/crypto/ripemd/rmd_dgst.c => main/openssl/crypto/ripemd/rmd_dgst.c rename : openssl/crypto/ripemd/rmd_locl.h => main/openssl/crypto/ripemd/rmd_locl.h rename : openssl/crypto/ripemd/rmd_one.c => main/openssl/crypto/ripemd/rmd_one.c rename : openssl/crypto/ripemd/rmdconst.h => main/openssl/crypto/ripemd/rmdconst.h rename : openssl/crypto/ripemd/rmdtest.c => main/openssl/crypto/ripemd/rmdtest.c rename : openssl/crypto/rsa/rsa.h => main/openssl/crypto/rsa/rsa.h rename : openssl/crypto/rsa/rsa_ameth.c => main/openssl/crypto/rsa/rsa_ameth.c rename : openssl/crypto/rsa/rsa_asn1.c => main/openssl/crypto/rsa/rsa_asn1.c rename : openssl/crypto/rsa/rsa_chk.c => main/openssl/crypto/rsa/rsa_chk.c rename : openssl/crypto/rsa/rsa_depr.c => main/openssl/crypto/rsa/rsa_depr.c rename : openssl/crypto/rsa/rsa_eay.c => main/openssl/crypto/rsa/rsa_eay.c rename : openssl/crypto/rsa/rsa_err.c => main/openssl/crypto/rsa/rsa_err.c rename : openssl/crypto/rsa/rsa_gen.c => main/openssl/crypto/rsa/rsa_gen.c rename : openssl/crypto/rsa/rsa_lib.c => main/openssl/crypto/rsa/rsa_lib.c rename : openssl/crypto/rsa/rsa_locl.h => main/openssl/crypto/rsa/rsa_locl.h rename : openssl/crypto/rsa/rsa_none.c => main/openssl/crypto/rsa/rsa_none.c rename : openssl/crypto/rsa/rsa_null.c => main/openssl/crypto/rsa/rsa_null.c rename : openssl/crypto/rsa/rsa_oaep.c => main/openssl/crypto/rsa/rsa_oaep.c rename : openssl/crypto/rsa/rsa_pk1.c => main/openssl/crypto/rsa/rsa_pk1.c rename : openssl/crypto/rsa/rsa_pmeth.c => main/openssl/crypto/rsa/rsa_pmeth.c rename : openssl/crypto/rsa/rsa_prn.c => main/openssl/crypto/rsa/rsa_prn.c rename : openssl/crypto/rsa/rsa_pss.c => main/openssl/crypto/rsa/rsa_pss.c rename : openssl/crypto/rsa/rsa_saos.c => main/openssl/crypto/rsa/rsa_saos.c rename : openssl/crypto/rsa/rsa_sign.c => main/openssl/crypto/rsa/rsa_sign.c rename : openssl/crypto/rsa/rsa_ssl.c => main/openssl/crypto/rsa/rsa_ssl.c rename : openssl/crypto/rsa/rsa_test.c => main/openssl/crypto/rsa/rsa_test.c rename : openssl/crypto/rsa/rsa_x931.c => main/openssl/crypto/rsa/rsa_x931.c rename : openssl/crypto/s390xcap.c => main/openssl/crypto/s390xcap.c rename : openssl/crypto/s390xcpuid.S => main/openssl/crypto/s390xcpuid.S rename : openssl/crypto/sha/asm/README => main/openssl/crypto/sha/asm/README rename : openssl/crypto/sha/asm/sha1-586.pl => main/openssl/crypto/sha/asm/sha1-586.pl rename : openssl/crypto/sha/asm/sha1-armv4-large.pl => main/openssl/crypto/sha/asm/sha1-armv4-large.pl rename : openssl/crypto/sha/asm/sha1-armv4-large.s => main/openssl/crypto/sha/asm/sha1-armv4-large.s rename : openssl/crypto/sha/asm/sha1-ia64.pl => main/openssl/crypto/sha/asm/sha1-ia64.pl rename : openssl/crypto/sha/asm/sha1-ppc.pl => main/openssl/crypto/sha/asm/sha1-ppc.pl rename : openssl/crypto/sha/asm/sha1-s390x.pl => main/openssl/crypto/sha/asm/sha1-s390x.pl rename : openssl/crypto/sha/asm/sha1-sparcv9.pl => main/openssl/crypto/sha/asm/sha1-sparcv9.pl rename : openssl/crypto/sha/asm/sha1-sparcv9a.pl => main/openssl/crypto/sha/asm/sha1-sparcv9a.pl rename : openssl/crypto/sha/asm/sha1-thumb.pl => main/openssl/crypto/sha/asm/sha1-thumb.pl rename : openssl/crypto/sha/asm/sha1-x86_64.pl => main/openssl/crypto/sha/asm/sha1-x86_64.pl rename : openssl/crypto/sha/asm/sha256-586.pl => main/openssl/crypto/sha/asm/sha256-586.pl rename : openssl/crypto/sha/asm/sha256-armv4.pl => main/openssl/crypto/sha/asm/sha256-armv4.pl rename : openssl/crypto/sha/asm/sha256-armv4.s => main/openssl/crypto/sha/asm/sha256-armv4.s rename : openssl/crypto/sha/asm/sha512-586.pl => main/openssl/crypto/sha/asm/sha512-586.pl rename : openssl/crypto/sha/asm/sha512-armv4.pl => main/openssl/crypto/sha/asm/sha512-armv4.pl rename : openssl/crypto/sha/asm/sha512-armv4.s => main/openssl/crypto/sha/asm/sha512-armv4.s rename : openssl/crypto/sha/asm/sha512-ia64.pl => main/openssl/crypto/sha/asm/sha512-ia64.pl rename : openssl/crypto/sha/asm/sha512-ppc.pl => main/openssl/crypto/sha/asm/sha512-ppc.pl rename : openssl/crypto/sha/asm/sha512-s390x.pl => main/openssl/crypto/sha/asm/sha512-s390x.pl rename : openssl/crypto/sha/asm/sha512-sparcv9.pl => main/openssl/crypto/sha/asm/sha512-sparcv9.pl rename : openssl/crypto/sha/asm/sha512-x86_64.pl => main/openssl/crypto/sha/asm/sha512-x86_64.pl rename : openssl/crypto/sha/sha.c => main/openssl/crypto/sha/sha.c rename : openssl/crypto/sha/sha.h => main/openssl/crypto/sha/sha.h rename : openssl/crypto/sha/sha1.c => main/openssl/crypto/sha/sha1.c rename : openssl/crypto/sha/sha1_one.c => main/openssl/crypto/sha/sha1_one.c rename : openssl/crypto/sha/sha1dgst.c => main/openssl/crypto/sha/sha1dgst.c rename : openssl/crypto/sha/sha1test.c => main/openssl/crypto/sha/sha1test.c rename : openssl/crypto/sha/sha256.c => main/openssl/crypto/sha/sha256.c rename : openssl/crypto/sha/sha256t.c => main/openssl/crypto/sha/sha256t.c rename : openssl/crypto/sha/sha512.c => main/openssl/crypto/sha/sha512.c rename : openssl/crypto/sha/sha512t.c => main/openssl/crypto/sha/sha512t.c rename : openssl/crypto/sha/sha_dgst.c => main/openssl/crypto/sha/sha_dgst.c rename : openssl/crypto/sha/sha_locl.h => main/openssl/crypto/sha/sha_locl.h rename : openssl/crypto/sha/shatest.c => main/openssl/crypto/sha/shatest.c rename : openssl/crypto/sparccpuid.S => main/openssl/crypto/sparccpuid.S rename : openssl/crypto/sparcv9cap.c => main/openssl/crypto/sparcv9cap.c rename : openssl/crypto/stack/safestack.h => main/openssl/crypto/stack/safestack.h rename : openssl/crypto/stack/stack.c => main/openssl/crypto/stack/stack.c rename : openssl/crypto/stack/stack.h => main/openssl/crypto/stack/stack.h rename : openssl/crypto/store/README => main/openssl/crypto/store/README rename : openssl/crypto/store/store.h => main/openssl/crypto/store/store.h rename : openssl/crypto/store/str_err.c => main/openssl/crypto/store/str_err.c rename : openssl/crypto/store/str_lib.c => main/openssl/crypto/store/str_lib.c rename : openssl/crypto/store/str_locl.h => main/openssl/crypto/store/str_locl.h rename : openssl/crypto/store/str_mem.c => main/openssl/crypto/store/str_mem.c rename : openssl/crypto/store/str_meth.c => main/openssl/crypto/store/str_meth.c rename : openssl/crypto/symhacks.h => main/openssl/crypto/symhacks.h rename : openssl/crypto/threads/README => main/openssl/crypto/threads/README rename : openssl/crypto/threads/mttest.c => main/openssl/crypto/threads/mttest.c rename : openssl/crypto/threads/netware.bat => main/openssl/crypto/threads/netware.bat rename : openssl/crypto/threads/profile.sh => main/openssl/crypto/threads/profile.sh rename : openssl/crypto/threads/ptest.bat => main/openssl/crypto/threads/ptest.bat rename : openssl/crypto/threads/pthread.sh => main/openssl/crypto/threads/pthread.sh rename : openssl/crypto/threads/pthread2.sh => main/openssl/crypto/threads/pthread2.sh rename : openssl/crypto/threads/purify.sh => main/openssl/crypto/threads/purify.sh rename : openssl/crypto/threads/solaris.sh => main/openssl/crypto/threads/solaris.sh rename : openssl/crypto/threads/th-lock.c => main/openssl/crypto/threads/th-lock.c rename : openssl/crypto/ts/ts_err.c => main/openssl/crypto/ts/ts_err.c rename : openssl/crypto/txt_db/txt_db.c => main/openssl/crypto/txt_db/txt_db.c rename : openssl/crypto/txt_db/txt_db.h => main/openssl/crypto/txt_db/txt_db.h rename : openssl/crypto/ui/ui.h => main/openssl/crypto/ui/ui.h rename : openssl/crypto/ui/ui_compat.c => main/openssl/crypto/ui/ui_compat.c rename : openssl/crypto/ui/ui_compat.h => main/openssl/crypto/ui/ui_compat.h rename : openssl/crypto/ui/ui_err.c => main/openssl/crypto/ui/ui_err.c rename : openssl/crypto/ui/ui_lib.c => main/openssl/crypto/ui/ui_lib.c rename : openssl/crypto/ui/ui_locl.h => main/openssl/crypto/ui/ui_locl.h rename : openssl/crypto/ui/ui_openssl.c => main/openssl/crypto/ui/ui_openssl.c rename : openssl/crypto/ui/ui_util.c => main/openssl/crypto/ui/ui_util.c rename : openssl/crypto/uid.c => main/openssl/crypto/uid.c rename : openssl/crypto/x509/by_dir.c => main/openssl/crypto/x509/by_dir.c rename : openssl/crypto/x509/by_file.c => main/openssl/crypto/x509/by_file.c rename : openssl/crypto/x509/x509.h => main/openssl/crypto/x509/x509.h rename : openssl/crypto/x509/x509_att.c => main/openssl/crypto/x509/x509_att.c rename : openssl/crypto/x509/x509_cmp.c => main/openssl/crypto/x509/x509_cmp.c rename : openssl/crypto/x509/x509_d2.c => main/openssl/crypto/x509/x509_d2.c rename : openssl/crypto/x509/x509_def.c => main/openssl/crypto/x509/x509_def.c rename : openssl/crypto/x509/x509_err.c => main/openssl/crypto/x509/x509_err.c rename : openssl/crypto/x509/x509_ext.c => main/openssl/crypto/x509/x509_ext.c rename : openssl/crypto/x509/x509_lu.c => main/openssl/crypto/x509/x509_lu.c rename : openssl/crypto/x509/x509_obj.c => main/openssl/crypto/x509/x509_obj.c rename : openssl/crypto/x509/x509_r2x.c => main/openssl/crypto/x509/x509_r2x.c rename : openssl/crypto/x509/x509_req.c => main/openssl/crypto/x509/x509_req.c rename : openssl/crypto/x509/x509_set.c => main/openssl/crypto/x509/x509_set.c rename : openssl/crypto/x509/x509_trs.c => main/openssl/crypto/x509/x509_trs.c rename : openssl/crypto/x509/x509_txt.c => main/openssl/crypto/x509/x509_txt.c rename : openssl/crypto/x509/x509_v3.c => main/openssl/crypto/x509/x509_v3.c rename : openssl/crypto/x509/x509_vfy.c => main/openssl/crypto/x509/x509_vfy.c rename : openssl/crypto/x509/x509_vfy.h => main/openssl/crypto/x509/x509_vfy.h rename : openssl/crypto/x509/x509_vpm.c => main/openssl/crypto/x509/x509_vpm.c rename : openssl/crypto/x509/x509cset.c => main/openssl/crypto/x509/x509cset.c rename : openssl/crypto/x509/x509name.c => main/openssl/crypto/x509/x509name.c rename : openssl/crypto/x509/x509rset.c => main/openssl/crypto/x509/x509rset.c rename : openssl/crypto/x509/x509spki.c => main/openssl/crypto/x509/x509spki.c rename : openssl/crypto/x509/x509type.c => main/openssl/crypto/x509/x509type.c rename : openssl/crypto/x509/x_all.c => main/openssl/crypto/x509/x_all.c rename : openssl/crypto/x509v3/ext_dat.h => main/openssl/crypto/x509v3/ext_dat.h rename : openssl/crypto/x509v3/pcy_cache.c => main/openssl/crypto/x509v3/pcy_cache.c rename : openssl/crypto/x509v3/pcy_data.c => main/openssl/crypto/x509v3/pcy_data.c rename : openssl/crypto/x509v3/pcy_int.h => main/openssl/crypto/x509v3/pcy_int.h rename : openssl/crypto/x509v3/pcy_lib.c => main/openssl/crypto/x509v3/pcy_lib.c rename : openssl/crypto/x509v3/pcy_map.c => main/openssl/crypto/x509v3/pcy_map.c rename : openssl/crypto/x509v3/pcy_node.c => main/openssl/crypto/x509v3/pcy_node.c rename : openssl/crypto/x509v3/pcy_tree.c => main/openssl/crypto/x509v3/pcy_tree.c rename : openssl/crypto/x509v3/tabtest.c => main/openssl/crypto/x509v3/tabtest.c rename : openssl/crypto/x509v3/v3_addr.c => main/openssl/crypto/x509v3/v3_addr.c rename : openssl/crypto/x509v3/v3_akey.c => main/openssl/crypto/x509v3/v3_akey.c rename : openssl/crypto/x509v3/v3_akeya.c => main/openssl/crypto/x509v3/v3_akeya.c rename : openssl/crypto/x509v3/v3_alt.c => main/openssl/crypto/x509v3/v3_alt.c rename : openssl/crypto/x509v3/v3_asid.c => main/openssl/crypto/x509v3/v3_asid.c rename : openssl/crypto/x509v3/v3_bcons.c => main/openssl/crypto/x509v3/v3_bcons.c rename : openssl/crypto/x509v3/v3_bitst.c => main/openssl/crypto/x509v3/v3_bitst.c rename : openssl/crypto/x509v3/v3_conf.c => main/openssl/crypto/x509v3/v3_conf.c rename : openssl/crypto/x509v3/v3_cpols.c => main/openssl/crypto/x509v3/v3_cpols.c rename : openssl/crypto/x509v3/v3_crld.c => main/openssl/crypto/x509v3/v3_crld.c rename : openssl/crypto/x509v3/v3_enum.c => main/openssl/crypto/x509v3/v3_enum.c rename : openssl/crypto/x509v3/v3_extku.c => main/openssl/crypto/x509v3/v3_extku.c rename : openssl/crypto/x509v3/v3_genn.c => main/openssl/crypto/x509v3/v3_genn.c rename : openssl/crypto/x509v3/v3_ia5.c => main/openssl/crypto/x509v3/v3_ia5.c rename : openssl/crypto/x509v3/v3_info.c => main/openssl/crypto/x509v3/v3_info.c rename : openssl/crypto/x509v3/v3_int.c => main/openssl/crypto/x509v3/v3_int.c rename : openssl/crypto/x509v3/v3_lib.c => main/openssl/crypto/x509v3/v3_lib.c rename : openssl/crypto/x509v3/v3_ncons.c => main/openssl/crypto/x509v3/v3_ncons.c rename : openssl/crypto/x509v3/v3_ocsp.c => main/openssl/crypto/x509v3/v3_ocsp.c rename : openssl/crypto/x509v3/v3_pci.c => main/openssl/crypto/x509v3/v3_pci.c rename : openssl/crypto/x509v3/v3_pcia.c => main/openssl/crypto/x509v3/v3_pcia.c rename : openssl/crypto/x509v3/v3_pcons.c => main/openssl/crypto/x509v3/v3_pcons.c rename : openssl/crypto/x509v3/v3_pku.c => main/openssl/crypto/x509v3/v3_pku.c rename : openssl/crypto/x509v3/v3_pmaps.c => main/openssl/crypto/x509v3/v3_pmaps.c rename : openssl/crypto/x509v3/v3_prn.c => main/openssl/crypto/x509v3/v3_prn.c rename : openssl/crypto/x509v3/v3_purp.c => main/openssl/crypto/x509v3/v3_purp.c rename : openssl/crypto/x509v3/v3_skey.c => main/openssl/crypto/x509v3/v3_skey.c rename : openssl/crypto/x509v3/v3_sxnet.c => main/openssl/crypto/x509v3/v3_sxnet.c rename : openssl/crypto/x509v3/v3_utl.c => main/openssl/crypto/x509v3/v3_utl.c rename : openssl/crypto/x509v3/v3conf.c => main/openssl/crypto/x509v3/v3conf.c rename : openssl/crypto/x509v3/v3err.c => main/openssl/crypto/x509v3/v3err.c rename : openssl/crypto/x509v3/v3prin.c => main/openssl/crypto/x509v3/v3prin.c rename : openssl/crypto/x509v3/x509v3.h => main/openssl/crypto/x509v3/x509v3.h rename : openssl/crypto/x86_64cpuid.pl => main/openssl/crypto/x86_64cpuid.pl rename : openssl/crypto/x86cpuid.pl => main/openssl/crypto/x86cpuid.pl rename : openssl/e_os.h => main/openssl/e_os.h rename : openssl/e_os2.h => main/openssl/e_os2.h rename : openssl/import_openssl.sh => main/openssl/import_openssl.sh rename : openssl/include/openssl/aes.h => main/openssl/include/openssl/aes.h rename : openssl/include/openssl/asn1.h => main/openssl/include/openssl/asn1.h rename : openssl/include/openssl/asn1_mac.h => main/openssl/include/openssl/asn1_mac.h rename : openssl/include/openssl/asn1t.h => main/openssl/include/openssl/asn1t.h rename : openssl/include/openssl/bio.h => main/openssl/include/openssl/bio.h rename : openssl/include/openssl/blowfish.h => main/openssl/include/openssl/blowfish.h rename : openssl/include/openssl/bn.h => main/openssl/include/openssl/bn.h rename : openssl/include/openssl/buffer.h => main/openssl/include/openssl/buffer.h rename : openssl/include/openssl/comp.h => main/openssl/include/openssl/comp.h rename : openssl/include/openssl/conf.h => main/openssl/include/openssl/conf.h rename : openssl/include/openssl/conf_api.h => main/openssl/include/openssl/conf_api.h rename : openssl/include/openssl/crypto.h => main/openssl/include/openssl/crypto.h rename : openssl/include/openssl/des.h => main/openssl/include/openssl/des.h rename : openssl/include/openssl/des_old.h => main/openssl/include/openssl/des_old.h rename : openssl/include/openssl/dh.h => main/openssl/include/openssl/dh.h rename : openssl/include/openssl/dsa.h => main/openssl/include/openssl/dsa.h rename : openssl/include/openssl/dso.h => main/openssl/include/openssl/dso.h rename : openssl/include/openssl/dtls1.h => main/openssl/include/openssl/dtls1.h rename : openssl/include/openssl/e_os2.h => main/openssl/include/openssl/e_os2.h rename : openssl/include/openssl/ebcdic.h => main/openssl/include/openssl/ebcdic.h rename : openssl/include/openssl/ec.h => main/openssl/include/openssl/ec.h rename : openssl/include/openssl/ecdh.h => main/openssl/include/openssl/ecdh.h rename : openssl/include/openssl/ecdsa.h => main/openssl/include/openssl/ecdsa.h rename : openssl/include/openssl/engine.h => main/openssl/include/openssl/engine.h rename : openssl/include/openssl/err.h => main/openssl/include/openssl/err.h rename : openssl/include/openssl/evp.h => main/openssl/include/openssl/evp.h rename : openssl/include/openssl/hmac.h => main/openssl/include/openssl/hmac.h rename : openssl/include/openssl/krb5_asn.h => main/openssl/include/openssl/krb5_asn.h rename : openssl/include/openssl/kssl.h => main/openssl/include/openssl/kssl.h rename : openssl/include/openssl/lhash.h => main/openssl/include/openssl/lhash.h rename : openssl/include/openssl/md4.h => main/openssl/include/openssl/md4.h rename : openssl/include/openssl/md5.h => main/openssl/include/openssl/md5.h rename : openssl/include/openssl/modes.h => main/openssl/include/openssl/modes.h rename : openssl/include/openssl/obj_mac.h => main/openssl/include/openssl/obj_mac.h rename : openssl/include/openssl/objects.h => main/openssl/include/openssl/objects.h rename : openssl/include/openssl/ocsp.h => main/openssl/include/openssl/ocsp.h rename : openssl/include/openssl/opensslconf.h => main/openssl/include/openssl/opensslconf.h rename : openssl/include/openssl/opensslv.h => main/openssl/include/openssl/opensslv.h rename : openssl/include/openssl/ossl_typ.h => main/openssl/include/openssl/ossl_typ.h rename : openssl/include/openssl/pem.h => main/openssl/include/openssl/pem.h rename : openssl/include/openssl/pem2.h => main/openssl/include/openssl/pem2.h rename : openssl/include/openssl/pkcs12.h => main/openssl/include/openssl/pkcs12.h rename : openssl/include/openssl/pkcs7.h => main/openssl/include/openssl/pkcs7.h rename : openssl/include/openssl/pqueue.h => main/openssl/include/openssl/pqueue.h rename : openssl/include/openssl/rand.h => main/openssl/include/openssl/rand.h rename : openssl/include/openssl/rc2.h => main/openssl/include/openssl/rc2.h rename : openssl/include/openssl/rc4.h => main/openssl/include/openssl/rc4.h rename : openssl/include/openssl/ripemd.h => main/openssl/include/openssl/ripemd.h rename : openssl/include/openssl/rsa.h => main/openssl/include/openssl/rsa.h rename : openssl/include/openssl/safestack.h => main/openssl/include/openssl/safestack.h rename : openssl/include/openssl/sha.h => main/openssl/include/openssl/sha.h rename : openssl/include/openssl/ssl.h => main/openssl/include/openssl/ssl.h rename : openssl/include/openssl/ssl2.h => main/openssl/include/openssl/ssl2.h rename : openssl/include/openssl/ssl23.h => main/openssl/include/openssl/ssl23.h rename : openssl/include/openssl/ssl3.h => main/openssl/include/openssl/ssl3.h rename : openssl/include/openssl/stack.h => main/openssl/include/openssl/stack.h rename : openssl/include/openssl/symhacks.h => main/openssl/include/openssl/symhacks.h rename : openssl/include/openssl/tls1.h => main/openssl/include/openssl/tls1.h rename : openssl/include/openssl/ts.h => main/openssl/include/openssl/ts.h rename : openssl/include/openssl/txt_db.h => main/openssl/include/openssl/txt_db.h rename : openssl/include/openssl/ui.h => main/openssl/include/openssl/ui.h rename : openssl/include/openssl/ui_compat.h => main/openssl/include/openssl/ui_compat.h rename : openssl/include/openssl/x509.h => main/openssl/include/openssl/x509.h rename : openssl/include/openssl/x509_vfy.h => main/openssl/include/openssl/x509_vfy.h rename : openssl/include/openssl/x509v3.h => main/openssl/include/openssl/x509v3.h rename : openssl/openssl.config => main/openssl/openssl.config rename : openssl/openssl.version => main/openssl/openssl.version rename : openssl/patches/README => main/openssl/patches/README rename : openssl/patches/apps_Android.mk => main/openssl/patches/apps_Android.mk rename : openssl/patches/crypto_Android.mk => main/openssl/patches/crypto_Android.mk rename : openssl/patches/handshake_cutthrough.patch => main/openssl/patches/handshake_cutthrough.patch rename : openssl/patches/jsse.patch => main/openssl/patches/jsse.patch rename : openssl/patches/npn.patch => main/openssl/patches/npn.patch rename : openssl/patches/progs.patch => main/openssl/patches/progs.patch rename : openssl/patches/sha1_armv4_large.patch => main/openssl/patches/sha1_armv4_large.patch rename : openssl/patches/small_records.patch => main/openssl/patches/small_records.patch rename : openssl/patches/ssl_Android.mk => main/openssl/patches/ssl_Android.mk rename : openssl/patches/sslv3_uninit_padding.patch => main/openssl/patches/sslv3_uninit_padding.patch rename : openssl/patches/testssl.sh => main/openssl/patches/testssl.sh rename : openssl/ssl/Android.mk => main/openssl/ssl/Android.mk rename : openssl/ssl/Makefile => main/openssl/ssl/Makefile rename : openssl/ssl/bio_ssl.c => main/openssl/ssl/bio_ssl.c rename : openssl/ssl/d1_both.c => main/openssl/ssl/d1_both.c rename : openssl/ssl/d1_clnt.c => main/openssl/ssl/d1_clnt.c rename : openssl/ssl/d1_enc.c => main/openssl/ssl/d1_enc.c rename : openssl/ssl/d1_lib.c => main/openssl/ssl/d1_lib.c rename : openssl/ssl/d1_meth.c => main/openssl/ssl/d1_meth.c rename : openssl/ssl/d1_pkt.c => main/openssl/ssl/d1_pkt.c rename : openssl/ssl/d1_srvr.c => main/openssl/ssl/d1_srvr.c rename : openssl/ssl/dtls1.h => main/openssl/ssl/dtls1.h rename : openssl/ssl/kssl.c => main/openssl/ssl/kssl.c rename : openssl/ssl/kssl.h => main/openssl/ssl/kssl.h rename : openssl/ssl/kssl_lcl.h => main/openssl/ssl/kssl_lcl.h rename : openssl/ssl/s23_clnt.c => main/openssl/ssl/s23_clnt.c rename : openssl/ssl/s23_lib.c => main/openssl/ssl/s23_lib.c rename : openssl/ssl/s23_meth.c => main/openssl/ssl/s23_meth.c rename : openssl/ssl/s23_pkt.c => main/openssl/ssl/s23_pkt.c rename : openssl/ssl/s23_srvr.c => main/openssl/ssl/s23_srvr.c rename : openssl/ssl/s2_clnt.c => main/openssl/ssl/s2_clnt.c rename : openssl/ssl/s2_enc.c => main/openssl/ssl/s2_enc.c rename : openssl/ssl/s2_lib.c => main/openssl/ssl/s2_lib.c rename : openssl/ssl/s2_meth.c => main/openssl/ssl/s2_meth.c rename : openssl/ssl/s2_pkt.c => main/openssl/ssl/s2_pkt.c rename : openssl/ssl/s2_srvr.c => main/openssl/ssl/s2_srvr.c rename : openssl/ssl/s3_both.c => main/openssl/ssl/s3_both.c rename : openssl/ssl/s3_clnt.c => main/openssl/ssl/s3_clnt.c rename : openssl/ssl/s3_enc.c => main/openssl/ssl/s3_enc.c rename : openssl/ssl/s3_lib.c => main/openssl/ssl/s3_lib.c rename : openssl/ssl/s3_meth.c => main/openssl/ssl/s3_meth.c rename : openssl/ssl/s3_pkt.c => main/openssl/ssl/s3_pkt.c rename : openssl/ssl/s3_srvr.c => main/openssl/ssl/s3_srvr.c rename : openssl/ssl/ssl.h => main/openssl/ssl/ssl.h rename : openssl/ssl/ssl2.h => main/openssl/ssl/ssl2.h rename : openssl/ssl/ssl23.h => main/openssl/ssl/ssl23.h rename : openssl/ssl/ssl3.h => main/openssl/ssl/ssl3.h rename : openssl/ssl/ssl_algs.c => main/openssl/ssl/ssl_algs.c rename : openssl/ssl/ssl_asn1.c => main/openssl/ssl/ssl_asn1.c rename : openssl/ssl/ssl_cert.c => main/openssl/ssl/ssl_cert.c rename : openssl/ssl/ssl_ciph.c => main/openssl/ssl/ssl_ciph.c rename : openssl/ssl/ssl_err.c => main/openssl/ssl/ssl_err.c rename : openssl/ssl/ssl_err2.c => main/openssl/ssl/ssl_err2.c rename : openssl/ssl/ssl_lib.c => main/openssl/ssl/ssl_lib.c rename : openssl/ssl/ssl_locl.h => main/openssl/ssl/ssl_locl.h rename : openssl/ssl/ssl_rsa.c => main/openssl/ssl/ssl_rsa.c rename : openssl/ssl/ssl_sess.c => main/openssl/ssl/ssl_sess.c rename : openssl/ssl/ssl_stat.c => main/openssl/ssl/ssl_stat.c rename : openssl/ssl/ssl_txt.c => main/openssl/ssl/ssl_txt.c rename : openssl/ssl/ssltest.c => main/openssl/ssl/ssltest.c rename : openssl/ssl/t1_clnt.c => main/openssl/ssl/t1_clnt.c rename : openssl/ssl/t1_enc.c => main/openssl/ssl/t1_enc.c rename : openssl/ssl/t1_lib.c => main/openssl/ssl/t1_lib.c rename : openssl/ssl/t1_meth.c => main/openssl/ssl/t1_meth.c rename : openssl/ssl/t1_reneg.c => main/openssl/ssl/t1_reneg.c rename : openssl/ssl/t1_srvr.c => main/openssl/ssl/t1_srvr.c rename : openssl/ssl/tls1.h => main/openssl/ssl/tls1.h rename : openvpn/.gitignore => main/openvpn/.gitignore rename : openvpn/.mailmap => main/openvpn/.mailmap rename : openvpn/.svncommitters => main/openvpn/.svncommitters rename : openvpn/AUTHORS => main/openvpn/AUTHORS rename : openvpn/Android.mk => main/openvpn/Android.mk rename : openvpn/COPYING => main/openvpn/COPYING rename : openvpn/COPYRIGHT.GPL => main/openvpn/COPYRIGHT.GPL rename : openvpn/ChangeLog => main/openvpn/ChangeLog rename : openvpn/INSTALL => main/openvpn/INSTALL rename : openvpn/INSTALL-win32.txt => main/openvpn/INSTALL-win32.txt rename : openvpn/Makefile.am => main/openvpn/Makefile.am rename : openvpn/NEWS => main/openvpn/NEWS rename : openvpn/PORTS => main/openvpn/PORTS rename : openvpn/README => main/openvpn/README rename : openvpn/README.IPv6 => main/openvpn/README.IPv6 rename : openvpn/README.polarssl => main/openvpn/README.polarssl rename : openvpn/TODO.IPv6 => main/openvpn/TODO.IPv6 rename : openvpn/build/Makefile.am => main/openvpn/build/Makefile.am rename : openvpn/build/ltrc.inc => main/openvpn/build/ltrc.inc rename : openvpn/build/msvc/Makefile.am => main/openvpn/build/msvc/Makefile.am rename : openvpn/build/msvc/msvc-generate/Makefile.am => main/openvpn/build/msvc/msvc-generate/Makefile.am rename : openvpn/build/msvc/msvc-generate/Makefile.mak => main/openvpn/build/msvc/msvc-generate/Makefile.mak rename : openvpn/build/msvc/msvc-generate/msvc-generate.js => main/openvpn/build/msvc/msvc-generate/msvc-generate.js rename : openvpn/build/msvc/msvc-generate/msvc-generate.vcxproj => main/openvpn/build/msvc/msvc-generate/msvc-generate.vcxproj rename : openvpn/compat.m4 => main/openvpn/compat.m4 rename : openvpn/config-msvc-version.h.in => main/openvpn/config-msvc-version.h.in rename : openvpn/config-msvc.h => main/openvpn/config-msvc.h rename : openvpn/config-version.h => main/openvpn/config-version.h rename : openvpn/config.h => main/openvpn/config.h rename : openvpn/configure.ac => main/openvpn/configure.ac rename : openvpn/contrib/OCSP_check/OCSP_check.sh => main/openvpn/contrib/OCSP_check/OCSP_check.sh rename : openvpn/contrib/README => main/openvpn/contrib/README rename : openvpn/contrib/multilevel-init.patch => main/openvpn/contrib/multilevel-init.patch rename : openvpn/contrib/openvpn-fwmarkroute-1.00/README => main/openvpn/contrib/openvpn-fwmarkroute-1.00/README rename : openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.down => main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.down rename : openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up => main/openvpn/contrib/openvpn-fwmarkroute-1.00/fwmarkroute.up rename : openvpn/contrib/pull-resolv-conf/client.down => main/openvpn/contrib/pull-resolv-conf/client.down rename : openvpn/contrib/pull-resolv-conf/client.up => main/openvpn/contrib/pull-resolv-conf/client.up rename : openvpn/debug/doval => main/openvpn/debug/doval rename : openvpn/debug/dovalns => main/openvpn/debug/dovalns rename : openvpn/debug/valgrind-suppress => main/openvpn/debug/valgrind-suppress rename : openvpn/distro/Makefile.am => main/openvpn/distro/Makefile.am rename : openvpn/distro/rpm/Makefile.am => main/openvpn/distro/rpm/Makefile.am rename : openvpn/distro/rpm/openvpn.init.d.rhel => main/openvpn/distro/rpm/openvpn.init.d.rhel rename : openvpn/distro/rpm/openvpn.init.d.suse => main/openvpn/distro/rpm/openvpn.init.d.suse rename : openvpn/distro/rpm/openvpn.spec => main/openvpn/distro/rpm/openvpn.spec rename : openvpn/distro/rpm/openvpn.spec.in => main/openvpn/distro/rpm/openvpn.spec.in rename : openvpn/doc/Makefile.am => main/openvpn/doc/Makefile.am rename : openvpn/doc/README.plugins => main/openvpn/doc/README.plugins rename : openvpn/doc/android.txt => main/openvpn/doc/android.txt rename : openvpn/doc/doxygen/doc_compression.h => main/openvpn/doc/doxygen/doc_compression.h rename : openvpn/doc/doxygen/doc_control_processor.h => main/openvpn/doc/doxygen/doc_control_processor.h rename : openvpn/doc/doxygen/doc_control_tls.h => main/openvpn/doc/doxygen/doc_control_tls.h rename : openvpn/doc/doxygen/doc_data_control.h => main/openvpn/doc/doxygen/doc_data_control.h rename : openvpn/doc/doxygen/doc_data_crypto.h => main/openvpn/doc/doxygen/doc_data_crypto.h rename : openvpn/doc/doxygen/doc_eventloop.h => main/openvpn/doc/doxygen/doc_eventloop.h rename : openvpn/doc/doxygen/doc_external_multiplexer.h => main/openvpn/doc/doxygen/doc_external_multiplexer.h rename : openvpn/doc/doxygen/doc_fragmentation.h => main/openvpn/doc/doxygen/doc_fragmentation.h rename : openvpn/doc/doxygen/doc_internal_multiplexer.h => main/openvpn/doc/doxygen/doc_internal_multiplexer.h rename : openvpn/doc/doxygen/doc_key_generation.h => main/openvpn/doc/doxygen/doc_key_generation.h rename : openvpn/doc/doxygen/doc_mainpage.h => main/openvpn/doc/doxygen/doc_mainpage.h rename : openvpn/doc/doxygen/doc_memory_management.h => main/openvpn/doc/doxygen/doc_memory_management.h rename : openvpn/doc/doxygen/doc_protocol_overview.h => main/openvpn/doc/doxygen/doc_protocol_overview.h rename : openvpn/doc/doxygen/doc_reliable.h => main/openvpn/doc/doxygen/doc_reliable.h rename : openvpn/doc/doxygen/doc_tunnel_state.h => main/openvpn/doc/doxygen/doc_tunnel_state.h rename : openvpn/doc/doxygen/openvpn.doxyfile => main/openvpn/doc/doxygen/openvpn.doxyfile rename : openvpn/doc/management-notes.txt => main/openvpn/doc/management-notes.txt rename : openvpn/doc/openvpn.8 => main/openvpn/doc/openvpn.8 rename : openvpn/include/Makefile.am => main/openvpn/include/Makefile.am rename : openvpn/include/openvpn-plugin.h => main/openvpn/include/openvpn-plugin.h rename : openvpn/m4/.keep => main/openvpn/m4/.keep rename : openvpn/m4/ax_emptyarray.m4 => main/openvpn/m4/ax_emptyarray.m4 rename : openvpn/m4/ax_socklen_t.m4 => main/openvpn/m4/ax_socklen_t.m4 rename : openvpn/m4/ax_varargs.m4 => main/openvpn/m4/ax_varargs.m4 rename : openvpn/m4/pkg.m4 => main/openvpn/m4/pkg.m4 rename : openvpn/msvc-build.bat => main/openvpn/msvc-build.bat rename : openvpn/msvc-dev.bat => main/openvpn/msvc-dev.bat rename : openvpn/msvc-env.bat => main/openvpn/msvc-env.bat rename : openvpn/openvpn.sln => main/openvpn/openvpn.sln rename : openvpn/sample/Makefile.am => main/openvpn/sample/Makefile.am rename : openvpn/sample/sample-config-files/README => main/openvpn/sample/sample-config-files/README rename : openvpn/sample/sample-config-files/client.conf => main/openvpn/sample/sample-config-files/client.conf rename : openvpn/sample/sample-config-files/firewall.sh => main/openvpn/sample/sample-config-files/firewall.sh rename : openvpn/sample/sample-config-files/home.up => main/openvpn/sample/sample-config-files/home.up rename : openvpn/sample/sample-config-files/loopback-client => main/openvpn/sample/sample-config-files/loopback-client rename : openvpn/sample/sample-config-files/loopback-server => main/openvpn/sample/sample-config-files/loopback-server rename : openvpn/sample/sample-config-files/office.up => main/openvpn/sample/sample-config-files/office.up rename : openvpn/sample/sample-config-files/openvpn-shutdown.sh => main/openvpn/sample/sample-config-files/openvpn-shutdown.sh rename : openvpn/sample/sample-config-files/openvpn-startup.sh => main/openvpn/sample/sample-config-files/openvpn-startup.sh rename : openvpn/sample/sample-config-files/server.conf => main/openvpn/sample/sample-config-files/server.conf rename : openvpn/sample/sample-config-files/static-home.conf => main/openvpn/sample/sample-config-files/static-home.conf rename : openvpn/sample/sample-config-files/static-office.conf => main/openvpn/sample/sample-config-files/static-office.conf rename : openvpn/sample/sample-config-files/tls-home.conf => main/openvpn/sample/sample-config-files/tls-home.conf rename : openvpn/sample/sample-config-files/tls-office.conf => main/openvpn/sample/sample-config-files/tls-office.conf rename : openvpn/sample/sample-config-files/xinetd-client-config => main/openvpn/sample/sample-config-files/xinetd-client-config rename : openvpn/sample/sample-config-files/xinetd-server-config => main/openvpn/sample/sample-config-files/xinetd-server-config rename : openvpn/sample/sample-keys/README => main/openvpn/sample/sample-keys/README rename : openvpn/sample/sample-keys/ca.crt => main/openvpn/sample/sample-keys/ca.crt rename : openvpn/sample/sample-keys/ca.key => main/openvpn/sample/sample-keys/ca.key rename : openvpn/sample/sample-keys/client.crt => main/openvpn/sample/sample-keys/client.crt rename : openvpn/sample/sample-keys/client.key => main/openvpn/sample/sample-keys/client.key rename : openvpn/sample/sample-keys/dh1024.pem => main/openvpn/sample/sample-keys/dh1024.pem rename : openvpn/sample/sample-keys/pass.crt => main/openvpn/sample/sample-keys/pass.crt rename : openvpn/sample/sample-keys/pass.key => main/openvpn/sample/sample-keys/pass.key rename : openvpn/sample/sample-keys/pkcs12.p12 => main/openvpn/sample/sample-keys/pkcs12.p12 rename : openvpn/sample/sample-keys/server.crt => main/openvpn/sample/sample-keys/server.crt rename : openvpn/sample/sample-keys/server.key => main/openvpn/sample/sample-keys/server.key rename : openvpn/sample/sample-plugins/defer/README => main/openvpn/sample/sample-plugins/defer/README rename : openvpn/sample/sample-plugins/defer/build => main/openvpn/sample/sample-plugins/defer/build rename : openvpn/sample/sample-plugins/defer/simple.c => main/openvpn/sample/sample-plugins/defer/simple.c rename : openvpn/sample/sample-plugins/defer/simple.def => main/openvpn/sample/sample-plugins/defer/simple.def rename : openvpn/sample/sample-plugins/defer/winbuild => main/openvpn/sample/sample-plugins/defer/winbuild rename : openvpn/sample/sample-plugins/log/build => main/openvpn/sample/sample-plugins/log/build rename : openvpn/sample/sample-plugins/log/log.c => main/openvpn/sample/sample-plugins/log/log.c rename : openvpn/sample/sample-plugins/log/log_v3.c => main/openvpn/sample/sample-plugins/log/log_v3.c rename : openvpn/sample/sample-plugins/log/winbuild => main/openvpn/sample/sample-plugins/log/winbuild rename : openvpn/sample/sample-plugins/simple/README => main/openvpn/sample/sample-plugins/simple/README rename : openvpn/sample/sample-plugins/simple/build => main/openvpn/sample/sample-plugins/simple/build rename : openvpn/sample/sample-plugins/simple/simple.c => main/openvpn/sample/sample-plugins/simple/simple.c rename : openvpn/sample/sample-plugins/simple/simple.def => main/openvpn/sample/sample-plugins/simple/simple.def rename : openvpn/sample/sample-plugins/simple/winbuild => main/openvpn/sample/sample-plugins/simple/winbuild rename : openvpn/sample/sample-scripts/auth-pam.pl => main/openvpn/sample/sample-scripts/auth-pam.pl rename : openvpn/sample/sample-scripts/bridge-start => main/openvpn/sample/sample-scripts/bridge-start rename : openvpn/sample/sample-scripts/bridge-stop => main/openvpn/sample/sample-scripts/bridge-stop rename : openvpn/sample/sample-scripts/ucn.pl => main/openvpn/sample/sample-scripts/ucn.pl rename : openvpn/sample/sample-scripts/verify-cn => main/openvpn/sample/sample-scripts/verify-cn rename : openvpn/sample/sample-windows/sample.ovpn => main/openvpn/sample/sample-windows/sample.ovpn rename : openvpn/src/Makefile.am => main/openvpn/src/Makefile.am rename : openvpn/src/compat/Makefile.am => main/openvpn/src/compat/Makefile.am rename : openvpn/src/compat/compat-basename.c => main/openvpn/src/compat/compat-basename.c rename : openvpn/src/compat/compat-daemon.c => main/openvpn/src/compat/compat-daemon.c rename : openvpn/src/compat/compat-dirname.c => main/openvpn/src/compat/compat-dirname.c rename : openvpn/src/compat/compat-gettimeofday.c => main/openvpn/src/compat/compat-gettimeofday.c rename : openvpn/src/compat/compat-inet_ntop.c => main/openvpn/src/compat/compat-inet_ntop.c rename : openvpn/src/compat/compat-inet_pton.c => main/openvpn/src/compat/compat-inet_pton.c rename : openvpn/src/compat/compat-lz4.c => main/openvpn/src/compat/compat-lz4.c rename : openvpn/src/compat/compat-lz4.h => main/openvpn/src/compat/compat-lz4.h rename : openvpn/src/compat/compat-stdbool.h => main/openvpn/src/compat/compat-stdbool.h rename : openvpn/src/compat/compat.h => main/openvpn/src/compat/compat.h rename : openvpn/src/compat/compat.vcxproj => main/openvpn/src/compat/compat.vcxproj rename : openvpn/src/compat/compat.vcxproj.filters => main/openvpn/src/compat/compat.vcxproj.filters rename : openvpn/src/openvpn/Makefile.am => main/openvpn/src/openvpn/Makefile.am rename : openvpn/src/openvpn/base64.c => main/openvpn/src/openvpn/base64.c rename : openvpn/src/openvpn/base64.h => main/openvpn/src/openvpn/base64.h rename : openvpn/src/openvpn/basic.h => main/openvpn/src/openvpn/basic.h rename : openvpn/src/openvpn/breakpad.cpp => main/openvpn/src/openvpn/breakpad.cpp rename : openvpn/src/openvpn/breakpad.h => main/openvpn/src/openvpn/breakpad.h rename : openvpn/src/openvpn/buffer.c => main/openvpn/src/openvpn/buffer.c rename : openvpn/src/openvpn/buffer.h => main/openvpn/src/openvpn/buffer.h rename : openvpn/src/openvpn/circ_list.h => main/openvpn/src/openvpn/circ_list.h rename : openvpn/src/openvpn/clinat.c => main/openvpn/src/openvpn/clinat.c rename : openvpn/src/openvpn/clinat.h => main/openvpn/src/openvpn/clinat.h rename : openvpn/src/openvpn/common.h => main/openvpn/src/openvpn/common.h rename : openvpn/src/openvpn/comp-lz4.c => main/openvpn/src/openvpn/comp-lz4.c rename : openvpn/src/openvpn/comp-lz4.h => main/openvpn/src/openvpn/comp-lz4.h rename : openvpn/src/openvpn/comp.c => main/openvpn/src/openvpn/comp.c rename : openvpn/src/openvpn/comp.h => main/openvpn/src/openvpn/comp.h rename : openvpn/src/openvpn/compstub.c => main/openvpn/src/openvpn/compstub.c rename : openvpn/src/openvpn/console.c => main/openvpn/src/openvpn/console.c rename : openvpn/src/openvpn/console.h => main/openvpn/src/openvpn/console.h rename : openvpn/src/openvpn/crypto.c => main/openvpn/src/openvpn/crypto.c rename : openvpn/src/openvpn/crypto.h => main/openvpn/src/openvpn/crypto.h rename : openvpn/src/openvpn/crypto_backend.h => main/openvpn/src/openvpn/crypto_backend.h rename : openvpn/src/openvpn/crypto_openssl.c => main/openvpn/src/openvpn/crypto_openssl.c rename : openvpn/src/openvpn/crypto_openssl.h => main/openvpn/src/openvpn/crypto_openssl.h rename : openvpn/src/openvpn/crypto_polarssl.c => main/openvpn/src/openvpn/crypto_polarssl.c rename : openvpn/src/openvpn/crypto_polarssl.h => main/openvpn/src/openvpn/crypto_polarssl.h rename : openvpn/src/openvpn/cryptoapi.c => main/openvpn/src/openvpn/cryptoapi.c rename : openvpn/src/openvpn/cryptoapi.h => main/openvpn/src/openvpn/cryptoapi.h rename : openvpn/src/openvpn/dhcp.c => main/openvpn/src/openvpn/dhcp.c rename : openvpn/src/openvpn/dhcp.h => main/openvpn/src/openvpn/dhcp.h rename : openvpn/src/openvpn/errlevel.h => main/openvpn/src/openvpn/errlevel.h rename : openvpn/src/openvpn/error.c => main/openvpn/src/openvpn/error.c rename : openvpn/src/openvpn/error.h => main/openvpn/src/openvpn/error.h rename : openvpn/src/openvpn/event.c => main/openvpn/src/openvpn/event.c rename : openvpn/src/openvpn/event.h => main/openvpn/src/openvpn/event.h rename : openvpn/src/openvpn/fdmisc.c => main/openvpn/src/openvpn/fdmisc.c rename : openvpn/src/openvpn/fdmisc.h => main/openvpn/src/openvpn/fdmisc.h rename : openvpn/src/openvpn/forward-inline.h => main/openvpn/src/openvpn/forward-inline.h rename : openvpn/src/openvpn/forward.c => main/openvpn/src/openvpn/forward.c rename : openvpn/src/openvpn/forward.h => main/openvpn/src/openvpn/forward.h rename : openvpn/src/openvpn/fragment.c => main/openvpn/src/openvpn/fragment.c rename : openvpn/src/openvpn/fragment.h => main/openvpn/src/openvpn/fragment.h rename : openvpn/src/openvpn/gremlin.c => main/openvpn/src/openvpn/gremlin.c rename : openvpn/src/openvpn/gremlin.h => main/openvpn/src/openvpn/gremlin.h rename : openvpn/src/openvpn/helper.c => main/openvpn/src/openvpn/helper.c rename : openvpn/src/openvpn/helper.h => main/openvpn/src/openvpn/helper.h rename : openvpn/src/openvpn/httpdigest.c => main/openvpn/src/openvpn/httpdigest.c rename : openvpn/src/openvpn/httpdigest.h => main/openvpn/src/openvpn/httpdigest.h rename : openvpn/src/openvpn/init.c => main/openvpn/src/openvpn/init.c rename : openvpn/src/openvpn/init.h => main/openvpn/src/openvpn/init.h rename : openvpn/src/openvpn/integer.h => main/openvpn/src/openvpn/integer.h rename : openvpn/src/openvpn/interval.c => main/openvpn/src/openvpn/interval.c rename : openvpn/src/openvpn/interval.h => main/openvpn/src/openvpn/interval.h rename : openvpn/src/openvpn/list.c => main/openvpn/src/openvpn/list.c rename : openvpn/src/openvpn/list.h => main/openvpn/src/openvpn/list.h rename : openvpn/src/openvpn/lladdr.c => main/openvpn/src/openvpn/lladdr.c rename : openvpn/src/openvpn/lladdr.h => main/openvpn/src/openvpn/lladdr.h rename : openvpn/src/openvpn/lzo.c => main/openvpn/src/openvpn/lzo.c rename : openvpn/src/openvpn/lzo.h => main/openvpn/src/openvpn/lzo.h rename : openvpn/src/openvpn/manage.c => main/openvpn/src/openvpn/manage.c rename : openvpn/src/openvpn/manage.h => main/openvpn/src/openvpn/manage.h rename : openvpn/src/openvpn/mbuf.c => main/openvpn/src/openvpn/mbuf.c rename : openvpn/src/openvpn/mbuf.h => main/openvpn/src/openvpn/mbuf.h rename : openvpn/src/openvpn/memdbg.h => main/openvpn/src/openvpn/memdbg.h rename : openvpn/src/openvpn/misc.c => main/openvpn/src/openvpn/misc.c rename : openvpn/src/openvpn/misc.h => main/openvpn/src/openvpn/misc.h rename : openvpn/src/openvpn/mroute.c => main/openvpn/src/openvpn/mroute.c rename : openvpn/src/openvpn/mroute.h => main/openvpn/src/openvpn/mroute.h rename : openvpn/src/openvpn/mss.c => main/openvpn/src/openvpn/mss.c rename : openvpn/src/openvpn/mss.h => main/openvpn/src/openvpn/mss.h rename : openvpn/src/openvpn/mstats.c => main/openvpn/src/openvpn/mstats.c rename : openvpn/src/openvpn/mstats.h => main/openvpn/src/openvpn/mstats.h rename : openvpn/src/openvpn/mtcp.c => main/openvpn/src/openvpn/mtcp.c rename : openvpn/src/openvpn/mtcp.h => main/openvpn/src/openvpn/mtcp.h rename : openvpn/src/openvpn/mtu.c => main/openvpn/src/openvpn/mtu.c rename : openvpn/src/openvpn/mtu.h => main/openvpn/src/openvpn/mtu.h rename : openvpn/src/openvpn/mudp.c => main/openvpn/src/openvpn/mudp.c rename : openvpn/src/openvpn/mudp.h => main/openvpn/src/openvpn/mudp.h rename : openvpn/src/openvpn/multi.c => main/openvpn/src/openvpn/multi.c rename : openvpn/src/openvpn/multi.h => main/openvpn/src/openvpn/multi.h rename : openvpn/src/openvpn/ntlm.c => main/openvpn/src/openvpn/ntlm.c rename : openvpn/src/openvpn/ntlm.h => main/openvpn/src/openvpn/ntlm.h rename : openvpn/src/openvpn/occ-inline.h => main/openvpn/src/openvpn/occ-inline.h rename : openvpn/src/openvpn/occ.c => main/openvpn/src/openvpn/occ.c rename : openvpn/src/openvpn/occ.h => main/openvpn/src/openvpn/occ.h rename : openvpn/src/openvpn/openvpn.c => main/openvpn/src/openvpn/openvpn.c rename : openvpn/src/openvpn/openvpn.h => main/openvpn/src/openvpn/openvpn.h rename : openvpn/src/openvpn/openvpn.vcxproj => main/openvpn/src/openvpn/openvpn.vcxproj rename : openvpn/src/openvpn/openvpn.vcxproj.filters => main/openvpn/src/openvpn/openvpn.vcxproj.filters rename : openvpn/src/openvpn/openvpn_win32_resources.rc => main/openvpn/src/openvpn/openvpn_win32_resources.rc rename : openvpn/src/openvpn/options.c => main/openvpn/src/openvpn/options.c rename : openvpn/src/openvpn/options.h => main/openvpn/src/openvpn/options.h rename : openvpn/src/openvpn/otime.c => main/openvpn/src/openvpn/otime.c rename : openvpn/src/openvpn/otime.h => main/openvpn/src/openvpn/otime.h rename : openvpn/src/openvpn/packet_id.c => main/openvpn/src/openvpn/packet_id.c rename : openvpn/src/openvpn/packet_id.h => main/openvpn/src/openvpn/packet_id.h rename : openvpn/src/openvpn/perf.c => main/openvpn/src/openvpn/perf.c rename : openvpn/src/openvpn/perf.h => main/openvpn/src/openvpn/perf.h rename : openvpn/src/openvpn/pf-inline.h => main/openvpn/src/openvpn/pf-inline.h rename : openvpn/src/openvpn/pf.c => main/openvpn/src/openvpn/pf.c rename : openvpn/src/openvpn/pf.h => main/openvpn/src/openvpn/pf.h rename : openvpn/src/openvpn/ping-inline.h => main/openvpn/src/openvpn/ping-inline.h rename : openvpn/src/openvpn/ping.c => main/openvpn/src/openvpn/ping.c rename : openvpn/src/openvpn/ping.h => main/openvpn/src/openvpn/ping.h rename : openvpn/src/openvpn/pkcs11.c => main/openvpn/src/openvpn/pkcs11.c rename : openvpn/src/openvpn/pkcs11.h => main/openvpn/src/openvpn/pkcs11.h rename : openvpn/src/openvpn/pkcs11_backend.h => main/openvpn/src/openvpn/pkcs11_backend.h rename : openvpn/src/openvpn/pkcs11_openssl.c => main/openvpn/src/openvpn/pkcs11_openssl.c rename : openvpn/src/openvpn/pkcs11_polarssl.c => main/openvpn/src/openvpn/pkcs11_polarssl.c rename : openvpn/src/openvpn/platform.c => main/openvpn/src/openvpn/platform.c rename : openvpn/src/openvpn/platform.h => main/openvpn/src/openvpn/platform.h rename : openvpn/src/openvpn/plugin.c => main/openvpn/src/openvpn/plugin.c rename : openvpn/src/openvpn/plugin.h => main/openvpn/src/openvpn/plugin.h rename : openvpn/src/openvpn/pool.c => main/openvpn/src/openvpn/pool.c rename : openvpn/src/openvpn/pool.h => main/openvpn/src/openvpn/pool.h rename : openvpn/src/openvpn/proto.c => main/openvpn/src/openvpn/proto.c rename : openvpn/src/openvpn/proto.h => main/openvpn/src/openvpn/proto.h rename : openvpn/src/openvpn/proxy.c => main/openvpn/src/openvpn/proxy.c rename : openvpn/src/openvpn/proxy.h => main/openvpn/src/openvpn/proxy.h rename : openvpn/src/openvpn/ps.c => main/openvpn/src/openvpn/ps.c rename : openvpn/src/openvpn/ps.h => main/openvpn/src/openvpn/ps.h rename : openvpn/src/openvpn/push.c => main/openvpn/src/openvpn/push.c rename : openvpn/src/openvpn/push.h => main/openvpn/src/openvpn/push.h rename : openvpn/src/openvpn/pushlist.h => main/openvpn/src/openvpn/pushlist.h rename : openvpn/src/openvpn/reliable.c => main/openvpn/src/openvpn/reliable.c rename : openvpn/src/openvpn/reliable.h => main/openvpn/src/openvpn/reliable.h rename : openvpn/src/openvpn/route.c => main/openvpn/src/openvpn/route.c rename : openvpn/src/openvpn/route.h => main/openvpn/src/openvpn/route.h rename : openvpn/src/openvpn/schedule.c => main/openvpn/src/openvpn/schedule.c rename : openvpn/src/openvpn/schedule.h => main/openvpn/src/openvpn/schedule.h rename : openvpn/src/openvpn/session_id.c => main/openvpn/src/openvpn/session_id.c rename : openvpn/src/openvpn/session_id.h => main/openvpn/src/openvpn/session_id.h rename : openvpn/src/openvpn/shaper.c => main/openvpn/src/openvpn/shaper.c rename : openvpn/src/openvpn/shaper.h => main/openvpn/src/openvpn/shaper.h rename : openvpn/src/openvpn/sig.c => main/openvpn/src/openvpn/sig.c rename : openvpn/src/openvpn/sig.h => main/openvpn/src/openvpn/sig.h rename : openvpn/src/openvpn/snappy.c => main/openvpn/src/openvpn/snappy.c rename : openvpn/src/openvpn/snappy.h => main/openvpn/src/openvpn/snappy.h rename : openvpn/src/openvpn/socket.c => main/openvpn/src/openvpn/socket.c rename : openvpn/src/openvpn/socket.h => main/openvpn/src/openvpn/socket.h rename : openvpn/src/openvpn/socks.c => main/openvpn/src/openvpn/socks.c rename : openvpn/src/openvpn/socks.h => main/openvpn/src/openvpn/socks.h rename : openvpn/src/openvpn/ssl.c => main/openvpn/src/openvpn/ssl.c rename : openvpn/src/openvpn/ssl.h => main/openvpn/src/openvpn/ssl.h rename : openvpn/src/openvpn/ssl_backend.h => main/openvpn/src/openvpn/ssl_backend.h rename : openvpn/src/openvpn/ssl_common.h => main/openvpn/src/openvpn/ssl_common.h rename : openvpn/src/openvpn/ssl_openssl.c => main/openvpn/src/openvpn/ssl_openssl.c rename : openvpn/src/openvpn/ssl_openssl.h => main/openvpn/src/openvpn/ssl_openssl.h rename : openvpn/src/openvpn/ssl_polarssl.c => main/openvpn/src/openvpn/ssl_polarssl.c rename : openvpn/src/openvpn/ssl_polarssl.h => main/openvpn/src/openvpn/ssl_polarssl.h rename : openvpn/src/openvpn/ssl_verify.c => main/openvpn/src/openvpn/ssl_verify.c rename : openvpn/src/openvpn/ssl_verify.h => main/openvpn/src/openvpn/ssl_verify.h rename : openvpn/src/openvpn/ssl_verify_backend.h => main/openvpn/src/openvpn/ssl_verify_backend.h rename : openvpn/src/openvpn/ssl_verify_openssl.c => main/openvpn/src/openvpn/ssl_verify_openssl.c rename : openvpn/src/openvpn/ssl_verify_openssl.h => main/openvpn/src/openvpn/ssl_verify_openssl.h rename : openvpn/src/openvpn/ssl_verify_polarssl.c => main/openvpn/src/openvpn/ssl_verify_polarssl.c rename : openvpn/src/openvpn/ssl_verify_polarssl.h => main/openvpn/src/openvpn/ssl_verify_polarssl.h rename : openvpn/src/openvpn/status.c => main/openvpn/src/openvpn/status.c rename : openvpn/src/openvpn/status.h => main/openvpn/src/openvpn/status.h rename : openvpn/src/openvpn/syshead.h => main/openvpn/src/openvpn/syshead.h rename : openvpn/src/openvpn/tun.c => main/openvpn/src/openvpn/tun.c rename : openvpn/src/openvpn/tun.h => main/openvpn/src/openvpn/tun.h rename : openvpn/src/openvpn/win32.c => main/openvpn/src/openvpn/win32.c rename : openvpn/src/openvpn/win32.h => main/openvpn/src/openvpn/win32.h rename : openvpn/src/openvpnserv/Makefile.am => main/openvpn/src/openvpnserv/Makefile.am rename : openvpn/src/openvpnserv/openvpnserv.c => main/openvpn/src/openvpnserv/openvpnserv.c rename : openvpn/src/openvpnserv/openvpnserv.vcxproj => main/openvpn/src/openvpnserv/openvpnserv.vcxproj rename : openvpn/src/openvpnserv/openvpnserv.vcxproj.filters => main/openvpn/src/openvpnserv/openvpnserv.vcxproj.filters rename : openvpn/src/openvpnserv/openvpnserv_resources.rc => main/openvpn/src/openvpnserv/openvpnserv_resources.rc rename : openvpn/src/openvpnserv/service.c => main/openvpn/src/openvpnserv/service.c rename : openvpn/src/openvpnserv/service.h => main/openvpn/src/openvpnserv/service.h rename : openvpn/src/plugins/Makefile.am => main/openvpn/src/plugins/Makefile.am rename : openvpn/src/plugins/Makefile.in => main/openvpn/src/plugins/Makefile.in rename : openvpn/src/plugins/auth-pam/Makefile.am => main/openvpn/src/plugins/auth-pam/Makefile.am rename : openvpn/src/plugins/auth-pam/Makefile.in => main/openvpn/src/plugins/auth-pam/Makefile.in rename : openvpn/src/plugins/auth-pam/README.auth-pam => main/openvpn/src/plugins/auth-pam/README.auth-pam rename : openvpn/src/plugins/auth-pam/auth-pam.c => main/openvpn/src/plugins/auth-pam/auth-pam.c rename : openvpn/src/plugins/auth-pam/auth-pam.exports => main/openvpn/src/plugins/auth-pam/auth-pam.exports rename : openvpn/src/plugins/auth-pam/pamdl.c => main/openvpn/src/plugins/auth-pam/pamdl.c rename : openvpn/src/plugins/auth-pam/pamdl.h => main/openvpn/src/plugins/auth-pam/pamdl.h rename : openvpn/src/plugins/down-root/Makefile.am => main/openvpn/src/plugins/down-root/Makefile.am rename : openvpn/src/plugins/down-root/Makefile.in => main/openvpn/src/plugins/down-root/Makefile.in rename : openvpn/src/plugins/down-root/README.down-root => main/openvpn/src/plugins/down-root/README.down-root rename : openvpn/src/plugins/down-root/down-root.c => main/openvpn/src/plugins/down-root/down-root.c rename : openvpn/src/plugins/down-root/down-root.exports => main/openvpn/src/plugins/down-root/down-root.exports rename : openvpn/tests/Makefile.am => main/openvpn/tests/Makefile.am rename : openvpn/tests/t_client.rc-sample => main/openvpn/tests/t_client.rc-sample rename : openvpn/tests/t_client.sh.in => main/openvpn/tests/t_client.sh.in rename : openvpn/tests/t_cltsrv-down.sh => main/openvpn/tests/t_cltsrv-down.sh rename : openvpn/tests/t_cltsrv.sh => main/openvpn/tests/t_cltsrv.sh rename : openvpn/tests/t_lpback.sh => main/openvpn/tests/t_lpback.sh rename : openvpn/version.m4 => main/openvpn/version.m4 rename : openvpn/version.sh.in => main/openvpn/version.sh.in rename : snappy/Android.mk => main/snappy/Android.mk rename : snappy/COPYING => main/snappy/COPYING rename : snappy/conf/config.h => main/snappy/conf/config.h rename : snappy/snappy-c.cc => main/snappy/snappy-c.cc rename : snappy/snappy-c.h => main/snappy/snappy-c.h rename : snappy/snappy-internal.h => main/snappy/snappy-internal.h rename : snappy/snappy-sinksource.cc => main/snappy/snappy-sinksource.cc rename : snappy/snappy-sinksource.h => main/snappy/snappy-sinksource.h rename : snappy/snappy-stubs-internal.cc => main/snappy/snappy-stubs-internal.cc rename : snappy/snappy-stubs-internal.h => main/snappy/snappy-stubs-internal.h rename : snappy/snappy-stubs-public.h => main/snappy/snappy-stubs-public.h rename : snappy/snappy-stubs-public.h.in => main/snappy/snappy-stubs-public.h.in rename : snappy/snappy-test.cc => main/snappy/snappy-test.cc rename : snappy/snappy-test.h => main/snappy/snappy-test.h rename : snappy/snappy.cc => main/snappy/snappy.cc rename : snappy/snappy.h => main/snappy/snappy.h rename : snappy/snappy_unittest.cc => main/snappy/snappy_unittest.cc rename : AndroidManifest.xml => main/src/main/AndroidManifest.xml rename : src/de/blinkt/openvpn/FileProvider.java => main/src/main/java/de/blinkt/openvpn/FileProvider.java rename : src/de/blinkt/openvpn/LaunchVPN.java => main/src/main/java/de/blinkt/openvpn/LaunchVPN.java rename : src/de/blinkt/openvpn/OnBootReceiver.java => main/src/main/java/de/blinkt/openvpn/OnBootReceiver.java rename : src/de/blinkt/openvpn/VpnProfile.java => main/src/main/java/de/blinkt/openvpn/VpnProfile.java rename : src/de/blinkt/openvpn/activities/ConfigConverter.java => main/src/main/java/de/blinkt/openvpn/activities/ConfigConverter.java rename : src/de/blinkt/openvpn/activities/CreateShortcuts.java => main/src/main/java/de/blinkt/openvpn/activities/CreateShortcuts.java rename : src/de/blinkt/openvpn/activities/DisconnectVPN.java => main/src/main/java/de/blinkt/openvpn/activities/DisconnectVPN.java rename : src/de/blinkt/openvpn/activities/FileSelect.java => main/src/main/java/de/blinkt/openvpn/activities/FileSelect.java rename : src/de/blinkt/openvpn/activities/LogWindow.java => main/src/main/java/de/blinkt/openvpn/activities/LogWindow.java rename : src/de/blinkt/openvpn/activities/MainActivity.java => main/src/main/java/de/blinkt/openvpn/activities/MainActivity.java rename : src/de/blinkt/openvpn/activities/VPNPreferences.java => main/src/main/java/de/blinkt/openvpn/activities/VPNPreferences.java rename : src/de/blinkt/openvpn/api/APIVpnProfile.java => main/src/main/java/de/blinkt/openvpn/api/APIVpnProfile.java rename : src/de/blinkt/openvpn/api/ConfirmDialog.java => main/src/main/java/de/blinkt/openvpn/api/ConfirmDialog.java rename : src/de/blinkt/openvpn/api/ExternalAppDatabase.java => main/src/main/java/de/blinkt/openvpn/api/ExternalAppDatabase.java rename : src/de/blinkt/openvpn/api/ExternalOpenVPNService.java => main/src/main/java/de/blinkt/openvpn/api/ExternalOpenVPNService.java rename : src/de/blinkt/openvpn/api/GrantPermissionsActivity.java => main/src/main/java/de/blinkt/openvpn/api/GrantPermissionsActivity.java rename : src/de/blinkt/openvpn/api/SecurityRemoteException.java => main/src/main/java/de/blinkt/openvpn/api/SecurityRemoteException.java rename : src/de/blinkt/openvpn/core/CIDRIP.java => main/src/main/java/de/blinkt/openvpn/core/CIDRIP.java rename : src/de/blinkt/openvpn/core/ConfigParser.java => main/src/main/java/de/blinkt/openvpn/core/ConfigParser.java rename : src/de/blinkt/openvpn/core/DeviceStateReceiver.java => main/src/main/java/de/blinkt/openvpn/core/DeviceStateReceiver.java rename : src/de/blinkt/openvpn/core/GetRestrictionReceiver.java => main/src/main/java/de/blinkt/openvpn/core/GetRestrictionReceiver.java rename : src/de/blinkt/openvpn/core/ICSOpenVPNApplication.java => main/src/main/java/de/blinkt/openvpn/core/ICSOpenVPNApplication.java rename : src/de/blinkt/openvpn/core/NativeUtils.java => main/src/main/java/de/blinkt/openvpn/core/NativeUtils.java rename : src/de/blinkt/openvpn/core/NetworkSpace.java => main/src/main/java/de/blinkt/openvpn/core/NetworkSpace.java rename : src/de/blinkt/openvpn/core/OpenVPNManagement.java => main/src/main/java/de/blinkt/openvpn/core/OpenVPNManagement.java rename : src/de/blinkt/openvpn/core/OpenVPNThread.java => main/src/main/java/de/blinkt/openvpn/core/OpenVPNThread.java rename : src/de/blinkt/openvpn/core/OpenVpnManagementThread.java => main/src/main/java/de/blinkt/openvpn/core/OpenVpnManagementThread.java rename : src/de/blinkt/openvpn/core/OpenVpnService.java => main/src/main/java/de/blinkt/openvpn/core/OpenVpnService.java rename : src/de/blinkt/openvpn/core/PRNGFixes.java => main/src/main/java/de/blinkt/openvpn/core/PRNGFixes.java rename : src/de/blinkt/openvpn/core/ProfileManager.java => main/src/main/java/de/blinkt/openvpn/core/ProfileManager.java rename : src/de/blinkt/openvpn/core/ProxyDetection.java => main/src/main/java/de/blinkt/openvpn/core/ProxyDetection.java rename : src/de/blinkt/openvpn/core/VPNLaunchHelper.java => main/src/main/java/de/blinkt/openvpn/core/VPNLaunchHelper.java rename : src/de/blinkt/openvpn/core/VpnStatus.java => main/src/main/java/de/blinkt/openvpn/core/VpnStatus.java rename : src/de/blinkt/openvpn/core/X509Utils.java => main/src/main/java/de/blinkt/openvpn/core/X509Utils.java rename : src/de/blinkt/openvpn/fragments/AboutFragment.java => main/src/main/java/de/blinkt/openvpn/fragments/AboutFragment.java rename : src/de/blinkt/openvpn/fragments/FaqFragment.java => main/src/main/java/de/blinkt/openvpn/fragments/FaqFragment.java rename : src/de/blinkt/openvpn/fragments/FileSelectionFragment.java => main/src/main/java/de/blinkt/openvpn/fragments/FileSelectionFragment.java rename : src/de/blinkt/openvpn/fragments/GeneralSettings.java => main/src/main/java/de/blinkt/openvpn/fragments/GeneralSettings.java rename : src/de/blinkt/openvpn/fragments/InlineFileTab.java => main/src/main/java/de/blinkt/openvpn/fragments/InlineFileTab.java rename : src/de/blinkt/openvpn/fragments/LogFragment.java => main/src/main/java/de/blinkt/openvpn/fragments/LogFragment.java rename : src/de/blinkt/openvpn/fragments/OpenVpnPreferencesFragment.java => main/src/main/java/de/blinkt/openvpn/fragments/OpenVpnPreferencesFragment.java rename : src/de/blinkt/openvpn/fragments/SendDumpFragment.java => main/src/main/java/de/blinkt/openvpn/fragments/SendDumpFragment.java rename : src/de/blinkt/openvpn/fragments/Settings_Authentication.java => main/src/main/java/de/blinkt/openvpn/fragments/Settings_Authentication.java rename : src/de/blinkt/openvpn/fragments/Settings_Basic.java => main/src/main/java/de/blinkt/openvpn/fragments/Settings_Basic.java rename : src/de/blinkt/openvpn/fragments/Settings_IP.java => main/src/main/java/de/blinkt/openvpn/fragments/Settings_IP.java rename : src/de/blinkt/openvpn/fragments/Settings_Obscure.java => main/src/main/java/de/blinkt/openvpn/fragments/Settings_Obscure.java rename : src/de/blinkt/openvpn/fragments/Settings_Routing.java => main/src/main/java/de/blinkt/openvpn/fragments/Settings_Routing.java rename : src/de/blinkt/openvpn/fragments/ShowConfigFragment.java => main/src/main/java/de/blinkt/openvpn/fragments/ShowConfigFragment.java rename : src/de/blinkt/openvpn/fragments/Utils.java => main/src/main/java/de/blinkt/openvpn/fragments/Utils.java rename : src/de/blinkt/openvpn/fragments/VPNProfileList.java => main/src/main/java/de/blinkt/openvpn/fragments/VPNProfileList.java rename : src/de/blinkt/openvpn/views/FileSelectLayout.java => main/src/main/java/de/blinkt/openvpn/views/FileSelectLayout.java rename : src/de/blinkt/openvpn/views/RemoteCNPreference.java => main/src/main/java/de/blinkt/openvpn/views/RemoteCNPreference.java rename : src/de/blinkt/openvpn/views/SeekBarTicks.java => main/src/main/java/de/blinkt/openvpn/views/SeekBarTicks.java rename : src/org/spongycastle/util/encoders/Base64.java => main/src/main/java/org/spongycastle/util/encoders/Base64.java rename : src/org/spongycastle/util/encoders/Base64Encoder.java => main/src/main/java/org/spongycastle/util/encoders/Base64Encoder.java rename : src/org/spongycastle/util/encoders/Encoder.java => main/src/main/java/org/spongycastle/util/encoders/Encoder.java rename : src/org/spongycastle/util/io/pem/PemGenerationException.java => main/src/main/java/org/spongycastle/util/io/pem/PemGenerationException.java rename : src/org/spongycastle/util/io/pem/PemHeader.java => main/src/main/java/org/spongycastle/util/io/pem/PemHeader.java rename : src/org/spongycastle/util/io/pem/PemObject.java => main/src/main/java/org/spongycastle/util/io/pem/PemObject.java rename : src/org/spongycastle/util/io/pem/PemObjectGenerator.java => main/src/main/java/org/spongycastle/util/io/pem/PemObjectGenerator.java rename : src/org/spongycastle/util/io/pem/PemReader.java => main/src/main/java/org/spongycastle/util/io/pem/PemReader.java rename : src/org/spongycastle/util/io/pem/PemWriter.java => main/src/main/java/org/spongycastle/util/io/pem/PemWriter.java
Diffstat (limited to 'main/openssl/crypto/aes/asm/aes-586.pl')
-rwxr-xr-xmain/openssl/crypto/aes/asm/aes-586.pl2980
1 files changed, 2980 insertions, 0 deletions
diff --git a/main/openssl/crypto/aes/asm/aes-586.pl b/main/openssl/crypto/aes/asm/aes-586.pl
new file mode 100755
index 00000000..aab40e6f
--- /dev/null
+++ b/main/openssl/crypto/aes/asm/aes-586.pl
@@ -0,0 +1,2980 @@
+#!/usr/bin/env perl
+#
+# ====================================================================
+# Written by Andy Polyakov <appro@fy.chalmers.se> for the OpenSSL
+# project. The module is, however, dual licensed under OpenSSL and
+# CRYPTOGAMS licenses depending on where you obtain it. For further
+# details see http://www.openssl.org/~appro/cryptogams/.
+# ====================================================================
+#
+# Version 4.3.
+#
+# You might fail to appreciate this module performance from the first
+# try. If compared to "vanilla" linux-ia32-icc target, i.e. considered
+# to be *the* best Intel C compiler without -KPIC, performance appears
+# to be virtually identical... But try to re-configure with shared
+# library support... Aha! Intel compiler "suddenly" lags behind by 30%
+# [on P4, more on others]:-) And if compared to position-independent
+# code generated by GNU C, this code performs *more* than *twice* as
+# fast! Yes, all this buzz about PIC means that unlike other hand-
+# coded implementations, this one was explicitly designed to be safe
+# to use even in shared library context... This also means that this
+# code isn't necessarily absolutely fastest "ever," because in order
+# to achieve position independence an extra register has to be
+# off-loaded to stack, which affects the benchmark result.
+#
+# Special note about instruction choice. Do you recall RC4_INT code
+# performing poorly on P4? It might be the time to figure out why.
+# RC4_INT code implies effective address calculations in base+offset*4
+# form. Trouble is that it seems that offset scaling turned to be
+# critical path... At least eliminating scaling resulted in 2.8x RC4
+# performance improvement [as you might recall]. As AES code is hungry
+# for scaling too, I [try to] avoid the latter by favoring off-by-2
+# shifts and masking the result with 0xFF<<2 instead of "boring" 0xFF.
+#
+# As was shown by Dean Gaudet <dean@arctic.org>, the above note turned
+# void. Performance improvement with off-by-2 shifts was observed on
+# intermediate implementation, which was spilling yet another register
+# to stack... Final offset*4 code below runs just a tad faster on P4,
+# but exhibits up to 10% improvement on other cores.
+#
+# Second version is "monolithic" replacement for aes_core.c, which in
+# addition to AES_[de|en]crypt implements AES_set_[de|en]cryption_key.
+# This made it possible to implement little-endian variant of the
+# algorithm without modifying the base C code. Motivating factor for
+# the undertaken effort was that it appeared that in tight IA-32
+# register window little-endian flavor could achieve slightly higher
+# Instruction Level Parallelism, and it indeed resulted in up to 15%
+# better performance on most recent µ-archs...
+#
+# Third version adds AES_cbc_encrypt implementation, which resulted in
+# up to 40% performance imrovement of CBC benchmark results. 40% was
+# observed on P4 core, where "overall" imrovement coefficient, i.e. if
+# compared to PIC generated by GCC and in CBC mode, was observed to be
+# as large as 4x:-) CBC performance is virtually identical to ECB now
+# and on some platforms even better, e.g. 17.6 "small" cycles/byte on
+# Opteron, because certain function prologues and epilogues are
+# effectively taken out of the loop...
+#
+# Version 3.2 implements compressed tables and prefetch of these tables
+# in CBC[!] mode. Former means that 3/4 of table references are now
+# misaligned, which unfortunately has negative impact on elder IA-32
+# implementations, Pentium suffered 30% penalty, PIII - 10%.
+#
+# Version 3.3 avoids L1 cache aliasing between stack frame and
+# S-boxes, and 3.4 - L1 cache aliasing even between key schedule. The
+# latter is achieved by copying the key schedule to controlled place in
+# stack. This unfortunately has rather strong impact on small block CBC
+# performance, ~2x deterioration on 16-byte block if compared to 3.3.
+#
+# Version 3.5 checks if there is L1 cache aliasing between user-supplied
+# key schedule and S-boxes and abstains from copying the former if
+# there is no. This allows end-user to consciously retain small block
+# performance by aligning key schedule in specific manner.
+#
+# Version 3.6 compresses Td4 to 256 bytes and prefetches it in ECB.
+#
+# Current ECB performance numbers for 128-bit key in CPU cycles per
+# processed byte [measure commonly used by AES benchmarkers] are:
+#
+# small footprint fully unrolled
+# P4 24 22
+# AMD K8 20 19
+# PIII 25 23
+# Pentium 81 78
+#
+# Version 3.7 reimplements outer rounds as "compact." Meaning that
+# first and last rounds reference compact 256 bytes S-box. This means
+# that first round consumes a lot more CPU cycles and that encrypt
+# and decrypt performance becomes asymmetric. Encrypt performance
+# drops by 10-12%, while decrypt - by 20-25%:-( 256 bytes S-box is
+# aggressively pre-fetched.
+#
+# Version 4.0 effectively rolls back to 3.6 and instead implements
+# additional set of functions, _[x86|sse]_AES_[en|de]crypt_compact,
+# which use exclusively 256 byte S-box. These functions are to be
+# called in modes not concealing plain text, such as ECB, or when
+# we're asked to process smaller amount of data [or unconditionally
+# on hyper-threading CPU]. Currently it's called unconditionally from
+# AES_[en|de]crypt, which affects all modes, but CBC. CBC routine
+# still needs to be modified to switch between slower and faster
+# mode when appropriate... But in either case benchmark landscape
+# changes dramatically and below numbers are CPU cycles per processed
+# byte for 128-bit key.
+#
+# ECB encrypt ECB decrypt CBC large chunk
+# P4 56[60] 84[100] 23
+# AMD K8 48[44] 70[79] 18
+# PIII 41[50] 61[91] 24
+# Core 2 32[38] 45[70] 18.5
+# Pentium 120 160 77
+#
+# Version 4.1 switches to compact S-box even in key schedule setup.
+#
+# Version 4.2 prefetches compact S-box in every SSE round or in other
+# words every cache-line is *guaranteed* to be accessed within ~50
+# cycles window. Why just SSE? Because it's needed on hyper-threading
+# CPU! Which is also why it's prefetched with 64 byte stride. Best
+# part is that it has no negative effect on performance:-)
+#
+# Version 4.3 implements switch between compact and non-compact block
+# functions in AES_cbc_encrypt depending on how much data was asked
+# to be processed in one stroke.
+#
+######################################################################
+# Timing attacks are classified in two classes: synchronous when
+# attacker consciously initiates cryptographic operation and collects
+# timing data of various character afterwards, and asynchronous when
+# malicious code is executed on same CPU simultaneously with AES,
+# instruments itself and performs statistical analysis of this data.
+#
+# As far as synchronous attacks go the root to the AES timing
+# vulnerability is twofold. Firstly, of 256 S-box elements at most 160
+# are referred to in single 128-bit block operation. Well, in C
+# implementation with 4 distinct tables it's actually as little as 40
+# references per 256 elements table, but anyway... Secondly, even
+# though S-box elements are clustered into smaller amount of cache-
+# lines, smaller than 160 and even 40, it turned out that for certain
+# plain-text pattern[s] or simply put chosen plain-text and given key
+# few cache-lines remain unaccessed during block operation. Now, if
+# attacker can figure out this access pattern, he can deduct the key
+# [or at least part of it]. The natural way to mitigate this kind of
+# attacks is to minimize the amount of cache-lines in S-box and/or
+# prefetch them to ensure that every one is accessed for more uniform
+# timing. But note that *if* plain-text was concealed in such way that
+# input to block function is distributed *uniformly*, then attack
+# wouldn't apply. Now note that some encryption modes, most notably
+# CBC, do mask the plain-text in this exact way [secure cipher output
+# is distributed uniformly]. Yes, one still might find input that
+# would reveal the information about given key, but if amount of
+# candidate inputs to be tried is larger than amount of possible key
+# combinations then attack becomes infeasible. This is why revised
+# AES_cbc_encrypt "dares" to switch to larger S-box when larger chunk
+# of data is to be processed in one stroke. The current size limit of
+# 512 bytes is chosen to provide same [diminishigly low] probability
+# for cache-line to remain untouched in large chunk operation with
+# large S-box as for single block operation with compact S-box and
+# surely needs more careful consideration...
+#
+# As for asynchronous attacks. There are two flavours: attacker code
+# being interleaved with AES on hyper-threading CPU at *instruction*
+# level, and two processes time sharing single core. As for latter.
+# Two vectors. 1. Given that attacker process has higher priority,
+# yield execution to process performing AES just before timer fires
+# off the scheduler, immediately regain control of CPU and analyze the
+# cache state. For this attack to be efficient attacker would have to
+# effectively slow down the operation by several *orders* of magnitute,
+# by ratio of time slice to duration of handful of AES rounds, which
+# unlikely to remain unnoticed. Not to mention that this also means
+# that he would spend correspondigly more time to collect enough
+# statistical data to mount the attack. It's probably appropriate to
+# say that if adeversary reckons that this attack is beneficial and
+# risks to be noticed, you probably have larger problems having him
+# mere opportunity. In other words suggested code design expects you
+# to preclude/mitigate this attack by overall system security design.
+# 2. Attacker manages to make his code interrupt driven. In order for
+# this kind of attack to be feasible, interrupt rate has to be high
+# enough, again comparable to duration of handful of AES rounds. But
+# is there interrupt source of such rate? Hardly, not even 1Gbps NIC
+# generates interrupts at such raging rate...
+#
+# And now back to the former, hyper-threading CPU or more specifically
+# Intel P4. Recall that asynchronous attack implies that malicious
+# code instruments itself. And naturally instrumentation granularity
+# has be noticeably lower than duration of codepath accessing S-box.
+# Given that all cache-lines are accessed during that time that is.
+# Current implementation accesses *all* cache-lines within ~50 cycles
+# window, which is actually *less* than RDTSC latency on Intel P4!
+
+$0 =~ m/(.*[\/\\])[^\/\\]+$/; $dir=$1;
+push(@INC,"${dir}","${dir}../../perlasm");
+require "x86asm.pl";
+
+&asm_init($ARGV[0],"aes-586.pl",$x86only = $ARGV[$#ARGV] eq "386");
+&static_label("AES_Te");
+&static_label("AES_Td");
+
+$s0="eax";
+$s1="ebx";
+$s2="ecx";
+$s3="edx";
+$key="edi";
+$acc="esi";
+$tbl="ebp";
+
+# stack frame layout in _[x86|sse]_AES_* routines, frame is allocated
+# by caller
+$__ra=&DWP(0,"esp"); # return address
+$__s0=&DWP(4,"esp"); # s0 backing store
+$__s1=&DWP(8,"esp"); # s1 backing store
+$__s2=&DWP(12,"esp"); # s2 backing store
+$__s3=&DWP(16,"esp"); # s3 backing store
+$__key=&DWP(20,"esp"); # pointer to key schedule
+$__end=&DWP(24,"esp"); # pointer to end of key schedule
+$__tbl=&DWP(28,"esp"); # %ebp backing store
+
+# stack frame layout in AES_[en|crypt] routines, which differs from
+# above by 4 and overlaps by %ebp backing store
+$_tbl=&DWP(24,"esp");
+$_esp=&DWP(28,"esp");
+
+sub _data_word() { my $i; while(defined($i=shift)) { &data_word($i,$i); } }
+
+$speed_limit=512; # chunks smaller than $speed_limit are
+ # processed with compact routine in CBC mode
+$small_footprint=1; # $small_footprint=1 code is ~5% slower [on
+ # recent µ-archs], but ~5 times smaller!
+ # I favor compact code to minimize cache
+ # contention and in hope to "collect" 5% back
+ # in real-life applications...
+
+$vertical_spin=0; # shift "verticaly" defaults to 0, because of
+ # its proof-of-concept status...
+# Note that there is no decvert(), as well as last encryption round is
+# performed with "horizontal" shifts. This is because this "vertical"
+# implementation [one which groups shifts on a given $s[i] to form a
+# "column," unlike "horizontal" one, which groups shifts on different
+# $s[i] to form a "row"] is work in progress. It was observed to run
+# few percents faster on Intel cores, but not AMD. On AMD K8 core it's
+# whole 12% slower:-( So we face a trade-off... Shall it be resolved
+# some day? Till then the code is considered experimental and by
+# default remains dormant...
+
+sub encvert()
+{ my ($te,@s) = @_;
+ my $v0 = $acc, $v1 = $key;
+
+ &mov ($v0,$s[3]); # copy s3
+ &mov (&DWP(4,"esp"),$s[2]); # save s2
+ &mov ($v1,$s[0]); # copy s0
+ &mov (&DWP(8,"esp"),$s[1]); # save s1
+
+ &movz ($s[2],&HB($s[0]));
+ &and ($s[0],0xFF);
+ &mov ($s[0],&DWP(0,$te,$s[0],8)); # s0>>0
+ &shr ($v1,16);
+ &mov ($s[3],&DWP(3,$te,$s[2],8)); # s0>>8
+ &movz ($s[1],&HB($v1));
+ &and ($v1,0xFF);
+ &mov ($s[2],&DWP(2,$te,$v1,8)); # s0>>16
+ &mov ($v1,$v0);
+ &mov ($s[1],&DWP(1,$te,$s[1],8)); # s0>>24
+
+ &and ($v0,0xFF);
+ &xor ($s[3],&DWP(0,$te,$v0,8)); # s3>>0
+ &movz ($v0,&HB($v1));
+ &shr ($v1,16);
+ &xor ($s[2],&DWP(3,$te,$v0,8)); # s3>>8
+ &movz ($v0,&HB($v1));
+ &and ($v1,0xFF);
+ &xor ($s[1],&DWP(2,$te,$v1,8)); # s3>>16
+ &mov ($v1,&DWP(4,"esp")); # restore s2
+ &xor ($s[0],&DWP(1,$te,$v0,8)); # s3>>24
+
+ &mov ($v0,$v1);
+ &and ($v1,0xFF);
+ &xor ($s[2],&DWP(0,$te,$v1,8)); # s2>>0
+ &movz ($v1,&HB($v0));
+ &shr ($v0,16);
+ &xor ($s[1],&DWP(3,$te,$v1,8)); # s2>>8
+ &movz ($v1,&HB($v0));
+ &and ($v0,0xFF);
+ &xor ($s[0],&DWP(2,$te,$v0,8)); # s2>>16
+ &mov ($v0,&DWP(8,"esp")); # restore s1
+ &xor ($s[3],&DWP(1,$te,$v1,8)); # s2>>24
+
+ &mov ($v1,$v0);
+ &and ($v0,0xFF);
+ &xor ($s[1],&DWP(0,$te,$v0,8)); # s1>>0
+ &movz ($v0,&HB($v1));
+ &shr ($v1,16);
+ &xor ($s[0],&DWP(3,$te,$v0,8)); # s1>>8
+ &movz ($v0,&HB($v1));
+ &and ($v1,0xFF);
+ &xor ($s[3],&DWP(2,$te,$v1,8)); # s1>>16
+ &mov ($key,$__key); # reincarnate v1 as key
+ &xor ($s[2],&DWP(1,$te,$v0,8)); # s1>>24
+}
+
+# Another experimental routine, which features "horizontal spin," but
+# eliminates one reference to stack. Strangely enough runs slower...
+sub enchoriz()
+{ my $v0 = $key, $v1 = $acc;
+
+ &movz ($v0,&LB($s0)); # 3, 2, 1, 0*
+ &rotr ($s2,8); # 8,11,10, 9
+ &mov ($v1,&DWP(0,$te,$v0,8)); # 0
+ &movz ($v0,&HB($s1)); # 7, 6, 5*, 4
+ &rotr ($s3,16); # 13,12,15,14
+ &xor ($v1,&DWP(3,$te,$v0,8)); # 5
+ &movz ($v0,&HB($s2)); # 8,11,10*, 9
+ &rotr ($s0,16); # 1, 0, 3, 2
+ &xor ($v1,&DWP(2,$te,$v0,8)); # 10
+ &movz ($v0,&HB($s3)); # 13,12,15*,14
+ &xor ($v1,&DWP(1,$te,$v0,8)); # 15, t[0] collected
+ &mov ($__s0,$v1); # t[0] saved
+
+ &movz ($v0,&LB($s1)); # 7, 6, 5, 4*
+ &shr ($s1,16); # -, -, 7, 6
+ &mov ($v1,&DWP(0,$te,$v0,8)); # 4
+ &movz ($v0,&LB($s3)); # 13,12,15,14*
+ &xor ($v1,&DWP(2,$te,$v0,8)); # 14
+ &movz ($v0,&HB($s0)); # 1, 0, 3*, 2
+ &and ($s3,0xffff0000); # 13,12, -, -
+ &xor ($v1,&DWP(1,$te,$v0,8)); # 3
+ &movz ($v0,&LB($s2)); # 8,11,10, 9*
+ &or ($s3,$s1); # 13,12, 7, 6
+ &xor ($v1,&DWP(3,$te,$v0,8)); # 9, t[1] collected
+ &mov ($s1,$v1); # s[1]=t[1]
+
+ &movz ($v0,&LB($s0)); # 1, 0, 3, 2*
+ &shr ($s2,16); # -, -, 8,11
+ &mov ($v1,&DWP(2,$te,$v0,8)); # 2
+ &movz ($v0,&HB($s3)); # 13,12, 7*, 6
+ &xor ($v1,&DWP(1,$te,$v0,8)); # 7
+ &movz ($v0,&HB($s2)); # -, -, 8*,11
+ &xor ($v1,&DWP(0,$te,$v0,8)); # 8
+ &mov ($v0,$s3);
+ &shr ($v0,24); # 13
+ &xor ($v1,&DWP(3,$te,$v0,8)); # 13, t[2] collected
+
+ &movz ($v0,&LB($s2)); # -, -, 8,11*
+ &shr ($s0,24); # 1*
+ &mov ($s2,&DWP(1,$te,$v0,8)); # 11
+ &xor ($s2,&DWP(3,$te,$s0,8)); # 1
+ &mov ($s0,$__s0); # s[0]=t[0]
+ &movz ($v0,&LB($s3)); # 13,12, 7, 6*
+ &shr ($s3,16); # , ,13,12
+ &xor ($s2,&DWP(2,$te,$v0,8)); # 6
+ &mov ($key,$__key); # reincarnate v0 as key
+ &and ($s3,0xff); # , ,13,12*
+ &mov ($s3,&DWP(0,$te,$s3,8)); # 12
+ &xor ($s3,$s2); # s[2]=t[3] collected
+ &mov ($s2,$v1); # s[2]=t[2]
+}
+
+# More experimental code... SSE one... Even though this one eliminates
+# *all* references to stack, it's not faster...
+sub sse_encbody()
+{
+ &movz ($acc,&LB("eax")); # 0
+ &mov ("ecx",&DWP(0,$tbl,$acc,8)); # 0
+ &pshufw ("mm2","mm0",0x0d); # 7, 6, 3, 2
+ &movz ("edx",&HB("eax")); # 1
+ &mov ("edx",&DWP(3,$tbl,"edx",8)); # 1
+ &shr ("eax",16); # 5, 4
+
+ &movz ($acc,&LB("ebx")); # 10
+ &xor ("ecx",&DWP(2,$tbl,$acc,8)); # 10
+ &pshufw ("mm6","mm4",0x08); # 13,12, 9, 8
+ &movz ($acc,&HB("ebx")); # 11
+ &xor ("edx",&DWP(1,$tbl,$acc,8)); # 11
+ &shr ("ebx",16); # 15,14
+
+ &movz ($acc,&HB("eax")); # 5
+ &xor ("ecx",&DWP(3,$tbl,$acc,8)); # 5
+ &movq ("mm3",QWP(16,$key));
+ &movz ($acc,&HB("ebx")); # 15
+ &xor ("ecx",&DWP(1,$tbl,$acc,8)); # 15
+ &movd ("mm0","ecx"); # t[0] collected
+
+ &movz ($acc,&LB("eax")); # 4
+ &mov ("ecx",&DWP(0,$tbl,$acc,8)); # 4
+ &movd ("eax","mm2"); # 7, 6, 3, 2
+ &movz ($acc,&LB("ebx")); # 14
+ &xor ("ecx",&DWP(2,$tbl,$acc,8)); # 14
+ &movd ("ebx","mm6"); # 13,12, 9, 8
+
+ &movz ($acc,&HB("eax")); # 3
+ &xor ("ecx",&DWP(1,$tbl,$acc,8)); # 3
+ &movz ($acc,&HB("ebx")); # 9
+ &xor ("ecx",&DWP(3,$tbl,$acc,8)); # 9
+ &movd ("mm1","ecx"); # t[1] collected
+
+ &movz ($acc,&LB("eax")); # 2
+ &mov ("ecx",&DWP(2,$tbl,$acc,8)); # 2
+ &shr ("eax",16); # 7, 6
+ &punpckldq ("mm0","mm1"); # t[0,1] collected
+ &movz ($acc,&LB("ebx")); # 8
+ &xor ("ecx",&DWP(0,$tbl,$acc,8)); # 8
+ &shr ("ebx",16); # 13,12
+
+ &movz ($acc,&HB("eax")); # 7
+ &xor ("ecx",&DWP(1,$tbl,$acc,8)); # 7
+ &pxor ("mm0","mm3");
+ &movz ("eax",&LB("eax")); # 6
+ &xor ("edx",&DWP(2,$tbl,"eax",8)); # 6
+ &pshufw ("mm1","mm0",0x08); # 5, 4, 1, 0
+ &movz ($acc,&HB("ebx")); # 13
+ &xor ("ecx",&DWP(3,$tbl,$acc,8)); # 13
+ &xor ("ecx",&DWP(24,$key)); # t[2]
+ &movd ("mm4","ecx"); # t[2] collected
+ &movz ("ebx",&LB("ebx")); # 12
+ &xor ("edx",&DWP(0,$tbl,"ebx",8)); # 12
+ &shr ("ecx",16);
+ &movd ("eax","mm1"); # 5, 4, 1, 0
+ &mov ("ebx",&DWP(28,$key)); # t[3]
+ &xor ("ebx","edx");
+ &movd ("mm5","ebx"); # t[3] collected
+ &and ("ebx",0xffff0000);
+ &or ("ebx","ecx");
+
+ &punpckldq ("mm4","mm5"); # t[2,3] collected
+}
+
+######################################################################
+# "Compact" block function
+######################################################################
+
+sub enccompact()
+{ my $Fn = mov;
+ while ($#_>5) { pop(@_); $Fn=sub{}; }
+ my ($i,$te,@s)=@_;
+ my $tmp = $key;
+ my $out = $i==3?$s[0]:$acc;
+
+ # $Fn is used in first compact round and its purpose is to
+ # void restoration of some values from stack, so that after
+ # 4xenccompact with extra argument $key value is left there...
+ if ($i==3) { &$Fn ($key,$__key); }##%edx
+ else { &mov ($out,$s[0]); }
+ &and ($out,0xFF);
+ if ($i==1) { &shr ($s[0],16); }#%ebx[1]
+ if ($i==2) { &shr ($s[0],24); }#%ecx[2]
+ &movz ($out,&BP(-128,$te,$out,1));
+
+ if ($i==3) { $tmp=$s[1]; }##%eax
+ &movz ($tmp,&HB($s[1]));
+ &movz ($tmp,&BP(-128,$te,$tmp,1));
+ &shl ($tmp,8);
+ &xor ($out,$tmp);
+
+ if ($i==3) { $tmp=$s[2]; &mov ($s[1],$__s0); }##%ebx
+ else { &mov ($tmp,$s[2]);
+ &shr ($tmp,16); }
+ if ($i==2) { &and ($s[1],0xFF); }#%edx[2]
+ &and ($tmp,0xFF);
+ &movz ($tmp,&BP(-128,$te,$tmp,1));
+ &shl ($tmp,16);
+ &xor ($out,$tmp);
+
+ if ($i==3) { $tmp=$s[3]; &mov ($s[2],$__s1); }##%ecx
+ elsif($i==2){ &movz ($tmp,&HB($s[3])); }#%ebx[2]
+ else { &mov ($tmp,$s[3]);
+ &shr ($tmp,24); }
+ &movz ($tmp,&BP(-128,$te,$tmp,1));
+ &shl ($tmp,24);
+ &xor ($out,$tmp);
+ if ($i<2) { &mov (&DWP(4+4*$i,"esp"),$out); }
+ if ($i==3) { &mov ($s[3],$acc); }
+ &comment();
+}
+
+sub enctransform()
+{ my @s = ($s0,$s1,$s2,$s3);
+ my $i = shift;
+ my $tmp = $tbl;
+ my $r2 = $key ;
+
+ &mov ($acc,$s[$i]);
+ &and ($acc,0x80808080);
+ &mov ($tmp,$acc);
+ &shr ($tmp,7);
+ &lea ($r2,&DWP(0,$s[$i],$s[$i]));
+ &sub ($acc,$tmp);
+ &and ($r2,0xfefefefe);
+ &and ($acc,0x1b1b1b1b);
+ &mov ($tmp,$s[$i]);
+ &xor ($acc,$r2); # r2
+
+ &xor ($s[$i],$acc); # r0 ^ r2
+ &rotl ($s[$i],24);
+ &xor ($s[$i],$acc) # ROTATE(r2^r0,24) ^ r2
+ &rotr ($tmp,16);
+ &xor ($s[$i],$tmp);
+ &rotr ($tmp,8);
+ &xor ($s[$i],$tmp);
+}
+
+&function_begin_B("_x86_AES_encrypt_compact");
+ # note that caller is expected to allocate stack frame for me!
+ &mov ($__key,$key); # save key
+
+ &xor ($s0,&DWP(0,$key)); # xor with key
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &mov ($acc,&DWP(240,$key)); # load key->rounds
+ &lea ($acc,&DWP(-2,$acc,$acc));
+ &lea ($acc,&DWP(0,$key,$acc,8));
+ &mov ($__end,$acc); # end of key schedule
+
+ # prefetch Te4
+ &mov ($key,&DWP(0-128,$tbl));
+ &mov ($acc,&DWP(32-128,$tbl));
+ &mov ($key,&DWP(64-128,$tbl));
+ &mov ($acc,&DWP(96-128,$tbl));
+ &mov ($key,&DWP(128-128,$tbl));
+ &mov ($acc,&DWP(160-128,$tbl));
+ &mov ($key,&DWP(192-128,$tbl));
+ &mov ($acc,&DWP(224-128,$tbl));
+
+ &set_label("loop",16);
+
+ &enccompact(0,$tbl,$s0,$s1,$s2,$s3,1);
+ &enccompact(1,$tbl,$s1,$s2,$s3,$s0,1);
+ &enccompact(2,$tbl,$s2,$s3,$s0,$s1,1);
+ &enccompact(3,$tbl,$s3,$s0,$s1,$s2,1);
+ &enctransform(2);
+ &enctransform(3);
+ &enctransform(0);
+ &enctransform(1);
+ &mov ($key,$__key);
+ &mov ($tbl,$__tbl);
+ &add ($key,16); # advance rd_key
+ &xor ($s0,&DWP(0,$key));
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &cmp ($key,$__end);
+ &mov ($__key,$key);
+ &jb (&label("loop"));
+
+ &enccompact(0,$tbl,$s0,$s1,$s2,$s3);
+ &enccompact(1,$tbl,$s1,$s2,$s3,$s0);
+ &enccompact(2,$tbl,$s2,$s3,$s0,$s1);
+ &enccompact(3,$tbl,$s3,$s0,$s1,$s2);
+
+ &xor ($s0,&DWP(16,$key));
+ &xor ($s1,&DWP(20,$key));
+ &xor ($s2,&DWP(24,$key));
+ &xor ($s3,&DWP(28,$key));
+
+ &ret ();
+&function_end_B("_x86_AES_encrypt_compact");
+
+######################################################################
+# "Compact" SSE block function.
+######################################################################
+#
+# Performance is not actually extraordinary in comparison to pure
+# x86 code. In particular encrypt performance is virtually the same.
+# Decrypt performance on the other hand is 15-20% better on newer
+# µ-archs [but we're thankful for *any* improvement here], and ~50%
+# better on PIII:-) And additionally on the pros side this code
+# eliminates redundant references to stack and thus relieves/
+# minimizes the pressure on the memory bus.
+#
+# MMX register layout lsb
+# +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+# | mm4 | mm0 |
+# +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+# | s3 | s2 | s1 | s0 |
+# +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+# |15|14|13|12|11|10| 9| 8| 7| 6| 5| 4| 3| 2| 1| 0|
+# +--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+--+
+#
+# Indexes translate as s[N/4]>>(8*(N%4)), e.g. 5 means s1>>8.
+# In this terms encryption and decryption "compact" permutation
+# matrices can be depicted as following:
+#
+# encryption lsb # decryption lsb
+# +----++----+----+----+----+ # +----++----+----+----+----+
+# | t0 || 15 | 10 | 5 | 0 | # | t0 || 7 | 10 | 13 | 0 |
+# +----++----+----+----+----+ # +----++----+----+----+----+
+# | t1 || 3 | 14 | 9 | 4 | # | t1 || 11 | 14 | 1 | 4 |
+# +----++----+----+----+----+ # +----++----+----+----+----+
+# | t2 || 7 | 2 | 13 | 8 | # | t2 || 15 | 2 | 5 | 8 |
+# +----++----+----+----+----+ # +----++----+----+----+----+
+# | t3 || 11 | 6 | 1 | 12 | # | t3 || 3 | 6 | 9 | 12 |
+# +----++----+----+----+----+ # +----++----+----+----+----+
+#
+######################################################################
+# Why not xmm registers? Short answer. It was actually tested and
+# was not any faster, but *contrary*, most notably on Intel CPUs.
+# Longer answer. Main advantage of using mm registers is that movd
+# latency is lower, especially on Intel P4. While arithmetic
+# instructions are twice as many, they can be scheduled every cycle
+# and not every second one when they are operating on xmm register,
+# so that "arithmetic throughput" remains virtually the same. And
+# finally the code can be executed even on elder SSE-only CPUs:-)
+
+sub sse_enccompact()
+{
+ &pshufw ("mm1","mm0",0x08); # 5, 4, 1, 0
+ &pshufw ("mm5","mm4",0x0d); # 15,14,11,10
+ &movd ("eax","mm1"); # 5, 4, 1, 0
+ &movd ("ebx","mm5"); # 15,14,11,10
+
+ &movz ($acc,&LB("eax")); # 0
+ &movz ("ecx",&BP(-128,$tbl,$acc,1)); # 0
+ &pshufw ("mm2","mm0",0x0d); # 7, 6, 3, 2
+ &movz ("edx",&HB("eax")); # 1
+ &movz ("edx",&BP(-128,$tbl,"edx",1)); # 1
+ &shl ("edx",8); # 1
+ &shr ("eax",16); # 5, 4
+
+ &movz ($acc,&LB("ebx")); # 10
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 10
+ &shl ($acc,16); # 10
+ &or ("ecx",$acc); # 10
+ &pshufw ("mm6","mm4",0x08); # 13,12, 9, 8
+ &movz ($acc,&HB("ebx")); # 11
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 11
+ &shl ($acc,24); # 11
+ &or ("edx",$acc); # 11
+ &shr ("ebx",16); # 15,14
+
+ &movz ($acc,&HB("eax")); # 5
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 5
+ &shl ($acc,8); # 5
+ &or ("ecx",$acc); # 5
+ &movz ($acc,&HB("ebx")); # 15
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 15
+ &shl ($acc,24); # 15
+ &or ("ecx",$acc); # 15
+ &movd ("mm0","ecx"); # t[0] collected
+
+ &movz ($acc,&LB("eax")); # 4
+ &movz ("ecx",&BP(-128,$tbl,$acc,1)); # 4
+ &movd ("eax","mm2"); # 7, 6, 3, 2
+ &movz ($acc,&LB("ebx")); # 14
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 14
+ &shl ($acc,16); # 14
+ &or ("ecx",$acc); # 14
+
+ &movd ("ebx","mm6"); # 13,12, 9, 8
+ &movz ($acc,&HB("eax")); # 3
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 3
+ &shl ($acc,24); # 3
+ &or ("ecx",$acc); # 3
+ &movz ($acc,&HB("ebx")); # 9
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 9
+ &shl ($acc,8); # 9
+ &or ("ecx",$acc); # 9
+ &movd ("mm1","ecx"); # t[1] collected
+
+ &movz ($acc,&LB("ebx")); # 8
+ &movz ("ecx",&BP(-128,$tbl,$acc,1)); # 8
+ &shr ("ebx",16); # 13,12
+ &movz ($acc,&LB("eax")); # 2
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 2
+ &shl ($acc,16); # 2
+ &or ("ecx",$acc); # 2
+ &shr ("eax",16); # 7, 6
+
+ &punpckldq ("mm0","mm1"); # t[0,1] collected
+
+ &movz ($acc,&HB("eax")); # 7
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 7
+ &shl ($acc,24); # 7
+ &or ("ecx",$acc); # 7
+ &and ("eax",0xff); # 6
+ &movz ("eax",&BP(-128,$tbl,"eax",1)); # 6
+ &shl ("eax",16); # 6
+ &or ("edx","eax"); # 6
+ &movz ($acc,&HB("ebx")); # 13
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 13
+ &shl ($acc,8); # 13
+ &or ("ecx",$acc); # 13
+ &movd ("mm4","ecx"); # t[2] collected
+ &and ("ebx",0xff); # 12
+ &movz ("ebx",&BP(-128,$tbl,"ebx",1)); # 12
+ &or ("edx","ebx"); # 12
+ &movd ("mm5","edx"); # t[3] collected
+
+ &punpckldq ("mm4","mm5"); # t[2,3] collected
+}
+
+ if (!$x86only) {
+&function_begin_B("_sse_AES_encrypt_compact");
+ &pxor ("mm0",&QWP(0,$key)); # 7, 6, 5, 4, 3, 2, 1, 0
+ &pxor ("mm4",&QWP(8,$key)); # 15,14,13,12,11,10, 9, 8
+
+ # note that caller is expected to allocate stack frame for me!
+ &mov ($acc,&DWP(240,$key)); # load key->rounds
+ &lea ($acc,&DWP(-2,$acc,$acc));
+ &lea ($acc,&DWP(0,$key,$acc,8));
+ &mov ($__end,$acc); # end of key schedule
+
+ &mov ($s0,0x1b1b1b1b); # magic constant
+ &mov (&DWP(8,"esp"),$s0);
+ &mov (&DWP(12,"esp"),$s0);
+
+ # prefetch Te4
+ &mov ($s0,&DWP(0-128,$tbl));
+ &mov ($s1,&DWP(32-128,$tbl));
+ &mov ($s2,&DWP(64-128,$tbl));
+ &mov ($s3,&DWP(96-128,$tbl));
+ &mov ($s0,&DWP(128-128,$tbl));
+ &mov ($s1,&DWP(160-128,$tbl));
+ &mov ($s2,&DWP(192-128,$tbl));
+ &mov ($s3,&DWP(224-128,$tbl));
+
+ &set_label("loop",16);
+ &sse_enccompact();
+ &add ($key,16);
+ &cmp ($key,$__end);
+ &ja (&label("out"));
+
+ &movq ("mm2",&QWP(8,"esp"));
+ &pxor ("mm3","mm3"); &pxor ("mm7","mm7");
+ &movq ("mm1","mm0"); &movq ("mm5","mm4"); # r0
+ &pcmpgtb("mm3","mm0"); &pcmpgtb("mm7","mm4");
+ &pand ("mm3","mm2"); &pand ("mm7","mm2");
+ &pshufw ("mm2","mm0",0xb1); &pshufw ("mm6","mm4",0xb1);# ROTATE(r0,16)
+ &paddb ("mm0","mm0"); &paddb ("mm4","mm4");
+ &pxor ("mm0","mm3"); &pxor ("mm4","mm7"); # = r2
+ &pshufw ("mm3","mm2",0xb1); &pshufw ("mm7","mm6",0xb1);# r0
+ &pxor ("mm1","mm0"); &pxor ("mm5","mm4"); # r0^r2
+ &pxor ("mm0","mm2"); &pxor ("mm4","mm6"); # ^= ROTATE(r0,16)
+
+ &movq ("mm2","mm3"); &movq ("mm6","mm7");
+ &pslld ("mm3",8); &pslld ("mm7",8);
+ &psrld ("mm2",24); &psrld ("mm6",24);
+ &pxor ("mm0","mm3"); &pxor ("mm4","mm7"); # ^= r0<<8
+ &pxor ("mm0","mm2"); &pxor ("mm4","mm6"); # ^= r0>>24
+
+ &movq ("mm3","mm1"); &movq ("mm7","mm5");
+ &movq ("mm2",&QWP(0,$key)); &movq ("mm6",&QWP(8,$key));
+ &psrld ("mm1",8); &psrld ("mm5",8);
+ &mov ($s0,&DWP(0-128,$tbl));
+ &pslld ("mm3",24); &pslld ("mm7",24);
+ &mov ($s1,&DWP(64-128,$tbl));
+ &pxor ("mm0","mm1"); &pxor ("mm4","mm5"); # ^= (r2^r0)<<8
+ &mov ($s2,&DWP(128-128,$tbl));
+ &pxor ("mm0","mm3"); &pxor ("mm4","mm7"); # ^= (r2^r0)>>24
+ &mov ($s3,&DWP(192-128,$tbl));
+
+ &pxor ("mm0","mm2"); &pxor ("mm4","mm6");
+ &jmp (&label("loop"));
+
+ &set_label("out",16);
+ &pxor ("mm0",&QWP(0,$key));
+ &pxor ("mm4",&QWP(8,$key));
+
+ &ret ();
+&function_end_B("_sse_AES_encrypt_compact");
+ }
+
+######################################################################
+# Vanilla block function.
+######################################################################
+
+sub encstep()
+{ my ($i,$te,@s) = @_;
+ my $tmp = $key;
+ my $out = $i==3?$s[0]:$acc;
+
+ # lines marked with #%e?x[i] denote "reordered" instructions...
+ if ($i==3) { &mov ($key,$__key); }##%edx
+ else { &mov ($out,$s[0]);
+ &and ($out,0xFF); }
+ if ($i==1) { &shr ($s[0],16); }#%ebx[1]
+ if ($i==2) { &shr ($s[0],24); }#%ecx[2]
+ &mov ($out,&DWP(0,$te,$out,8));
+
+ if ($i==3) { $tmp=$s[1]; }##%eax
+ &movz ($tmp,&HB($s[1]));
+ &xor ($out,&DWP(3,$te,$tmp,8));
+
+ if ($i==3) { $tmp=$s[2]; &mov ($s[1],$__s0); }##%ebx
+ else { &mov ($tmp,$s[2]);
+ &shr ($tmp,16); }
+ if ($i==2) { &and ($s[1],0xFF); }#%edx[2]
+ &and ($tmp,0xFF);
+ &xor ($out,&DWP(2,$te,$tmp,8));
+
+ if ($i==3) { $tmp=$s[3]; &mov ($s[2],$__s1); }##%ecx
+ elsif($i==2){ &movz ($tmp,&HB($s[3])); }#%ebx[2]
+ else { &mov ($tmp,$s[3]);
+ &shr ($tmp,24) }
+ &xor ($out,&DWP(1,$te,$tmp,8));
+ if ($i<2) { &mov (&DWP(4+4*$i,"esp"),$out); }
+ if ($i==3) { &mov ($s[3],$acc); }
+ &comment();
+}
+
+sub enclast()
+{ my ($i,$te,@s)=@_;
+ my $tmp = $key;
+ my $out = $i==3?$s[0]:$acc;
+
+ if ($i==3) { &mov ($key,$__key); }##%edx
+ else { &mov ($out,$s[0]); }
+ &and ($out,0xFF);
+ if ($i==1) { &shr ($s[0],16); }#%ebx[1]
+ if ($i==2) { &shr ($s[0],24); }#%ecx[2]
+ &mov ($out,&DWP(2,$te,$out,8));
+ &and ($out,0x000000ff);
+
+ if ($i==3) { $tmp=$s[1]; }##%eax
+ &movz ($tmp,&HB($s[1]));
+ &mov ($tmp,&DWP(0,$te,$tmp,8));
+ &and ($tmp,0x0000ff00);
+ &xor ($out,$tmp);
+
+ if ($i==3) { $tmp=$s[2]; &mov ($s[1],$__s0); }##%ebx
+ else { &mov ($tmp,$s[2]);
+ &shr ($tmp,16); }
+ if ($i==2) { &and ($s[1],0xFF); }#%edx[2]
+ &and ($tmp,0xFF);
+ &mov ($tmp,&DWP(0,$te,$tmp,8));
+ &and ($tmp,0x00ff0000);
+ &xor ($out,$tmp);
+
+ if ($i==3) { $tmp=$s[3]; &mov ($s[2],$__s1); }##%ecx
+ elsif($i==2){ &movz ($tmp,&HB($s[3])); }#%ebx[2]
+ else { &mov ($tmp,$s[3]);
+ &shr ($tmp,24); }
+ &mov ($tmp,&DWP(2,$te,$tmp,8));
+ &and ($tmp,0xff000000);
+ &xor ($out,$tmp);
+ if ($i<2) { &mov (&DWP(4+4*$i,"esp"),$out); }
+ if ($i==3) { &mov ($s[3],$acc); }
+}
+
+&function_begin_B("_x86_AES_encrypt");
+ if ($vertical_spin) {
+ # I need high parts of volatile registers to be accessible...
+ &exch ($s1="edi",$key="ebx");
+ &mov ($s2="esi",$acc="ecx");
+ }
+
+ # note that caller is expected to allocate stack frame for me!
+ &mov ($__key,$key); # save key
+
+ &xor ($s0,&DWP(0,$key)); # xor with key
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &mov ($acc,&DWP(240,$key)); # load key->rounds
+
+ if ($small_footprint) {
+ &lea ($acc,&DWP(-2,$acc,$acc));
+ &lea ($acc,&DWP(0,$key,$acc,8));
+ &mov ($__end,$acc); # end of key schedule
+
+ &set_label("loop",16);
+ if ($vertical_spin) {
+ &encvert($tbl,$s0,$s1,$s2,$s3);
+ } else {
+ &encstep(0,$tbl,$s0,$s1,$s2,$s3);
+ &encstep(1,$tbl,$s1,$s2,$s3,$s0);
+ &encstep(2,$tbl,$s2,$s3,$s0,$s1);
+ &encstep(3,$tbl,$s3,$s0,$s1,$s2);
+ }
+ &add ($key,16); # advance rd_key
+ &xor ($s0,&DWP(0,$key));
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+ &cmp ($key,$__end);
+ &mov ($__key,$key);
+ &jb (&label("loop"));
+ }
+ else {
+ &cmp ($acc,10);
+ &jle (&label("10rounds"));
+ &cmp ($acc,12);
+ &jle (&label("12rounds"));
+
+ &set_label("14rounds",4);
+ for ($i=1;$i<3;$i++) {
+ if ($vertical_spin) {
+ &encvert($tbl,$s0,$s1,$s2,$s3);
+ } else {
+ &encstep(0,$tbl,$s0,$s1,$s2,$s3);
+ &encstep(1,$tbl,$s1,$s2,$s3,$s0);
+ &encstep(2,$tbl,$s2,$s3,$s0,$s1);
+ &encstep(3,$tbl,$s3,$s0,$s1,$s2);
+ }
+ &xor ($s0,&DWP(16*$i+0,$key));
+ &xor ($s1,&DWP(16*$i+4,$key));
+ &xor ($s2,&DWP(16*$i+8,$key));
+ &xor ($s3,&DWP(16*$i+12,$key));
+ }
+ &add ($key,32);
+ &mov ($__key,$key); # advance rd_key
+ &set_label("12rounds",4);
+ for ($i=1;$i<3;$i++) {
+ if ($vertical_spin) {
+ &encvert($tbl,$s0,$s1,$s2,$s3);
+ } else {
+ &encstep(0,$tbl,$s0,$s1,$s2,$s3);
+ &encstep(1,$tbl,$s1,$s2,$s3,$s0);
+ &encstep(2,$tbl,$s2,$s3,$s0,$s1);
+ &encstep(3,$tbl,$s3,$s0,$s1,$s2);
+ }
+ &xor ($s0,&DWP(16*$i+0,$key));
+ &xor ($s1,&DWP(16*$i+4,$key));
+ &xor ($s2,&DWP(16*$i+8,$key));
+ &xor ($s3,&DWP(16*$i+12,$key));
+ }
+ &add ($key,32);
+ &mov ($__key,$key); # advance rd_key
+ &set_label("10rounds",4);
+ for ($i=1;$i<10;$i++) {
+ if ($vertical_spin) {
+ &encvert($tbl,$s0,$s1,$s2,$s3);
+ } else {
+ &encstep(0,$tbl,$s0,$s1,$s2,$s3);
+ &encstep(1,$tbl,$s1,$s2,$s3,$s0);
+ &encstep(2,$tbl,$s2,$s3,$s0,$s1);
+ &encstep(3,$tbl,$s3,$s0,$s1,$s2);
+ }
+ &xor ($s0,&DWP(16*$i+0,$key));
+ &xor ($s1,&DWP(16*$i+4,$key));
+ &xor ($s2,&DWP(16*$i+8,$key));
+ &xor ($s3,&DWP(16*$i+12,$key));
+ }
+ }
+
+ if ($vertical_spin) {
+ # "reincarnate" some registers for "horizontal" spin...
+ &mov ($s1="ebx",$key="edi");
+ &mov ($s2="ecx",$acc="esi");
+ }
+ &enclast(0,$tbl,$s0,$s1,$s2,$s3);
+ &enclast(1,$tbl,$s1,$s2,$s3,$s0);
+ &enclast(2,$tbl,$s2,$s3,$s0,$s1);
+ &enclast(3,$tbl,$s3,$s0,$s1,$s2);
+
+ &add ($key,$small_footprint?16:160);
+ &xor ($s0,&DWP(0,$key));
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &ret ();
+
+&set_label("AES_Te",64); # Yes! I keep it in the code segment!
+ &_data_word(0xa56363c6, 0x847c7cf8, 0x997777ee, 0x8d7b7bf6);
+ &_data_word(0x0df2f2ff, 0xbd6b6bd6, 0xb16f6fde, 0x54c5c591);
+ &_data_word(0x50303060, 0x03010102, 0xa96767ce, 0x7d2b2b56);
+ &_data_word(0x19fefee7, 0x62d7d7b5, 0xe6abab4d, 0x9a7676ec);
+ &_data_word(0x45caca8f, 0x9d82821f, 0x40c9c989, 0x877d7dfa);
+ &_data_word(0x15fafaef, 0xeb5959b2, 0xc947478e, 0x0bf0f0fb);
+ &_data_word(0xecadad41, 0x67d4d4b3, 0xfda2a25f, 0xeaafaf45);
+ &_data_word(0xbf9c9c23, 0xf7a4a453, 0x967272e4, 0x5bc0c09b);
+ &_data_word(0xc2b7b775, 0x1cfdfde1, 0xae93933d, 0x6a26264c);
+ &_data_word(0x5a36366c, 0x413f3f7e, 0x02f7f7f5, 0x4fcccc83);
+ &_data_word(0x5c343468, 0xf4a5a551, 0x34e5e5d1, 0x08f1f1f9);
+ &_data_word(0x937171e2, 0x73d8d8ab, 0x53313162, 0x3f15152a);
+ &_data_word(0x0c040408, 0x52c7c795, 0x65232346, 0x5ec3c39d);
+ &_data_word(0x28181830, 0xa1969637, 0x0f05050a, 0xb59a9a2f);
+ &_data_word(0x0907070e, 0x36121224, 0x9b80801b, 0x3de2e2df);
+ &_data_word(0x26ebebcd, 0x6927274e, 0xcdb2b27f, 0x9f7575ea);
+ &_data_word(0x1b090912, 0x9e83831d, 0x742c2c58, 0x2e1a1a34);
+ &_data_word(0x2d1b1b36, 0xb26e6edc, 0xee5a5ab4, 0xfba0a05b);
+ &_data_word(0xf65252a4, 0x4d3b3b76, 0x61d6d6b7, 0xceb3b37d);
+ &_data_word(0x7b292952, 0x3ee3e3dd, 0x712f2f5e, 0x97848413);
+ &_data_word(0xf55353a6, 0x68d1d1b9, 0x00000000, 0x2cededc1);
+ &_data_word(0x60202040, 0x1ffcfce3, 0xc8b1b179, 0xed5b5bb6);
+ &_data_word(0xbe6a6ad4, 0x46cbcb8d, 0xd9bebe67, 0x4b393972);
+ &_data_word(0xde4a4a94, 0xd44c4c98, 0xe85858b0, 0x4acfcf85);
+ &_data_word(0x6bd0d0bb, 0x2aefefc5, 0xe5aaaa4f, 0x16fbfbed);
+ &_data_word(0xc5434386, 0xd74d4d9a, 0x55333366, 0x94858511);
+ &_data_word(0xcf45458a, 0x10f9f9e9, 0x06020204, 0x817f7ffe);
+ &_data_word(0xf05050a0, 0x443c3c78, 0xba9f9f25, 0xe3a8a84b);
+ &_data_word(0xf35151a2, 0xfea3a35d, 0xc0404080, 0x8a8f8f05);
+ &_data_word(0xad92923f, 0xbc9d9d21, 0x48383870, 0x04f5f5f1);
+ &_data_word(0xdfbcbc63, 0xc1b6b677, 0x75dadaaf, 0x63212142);
+ &_data_word(0x30101020, 0x1affffe5, 0x0ef3f3fd, 0x6dd2d2bf);
+ &_data_word(0x4ccdcd81, 0x140c0c18, 0x35131326, 0x2fececc3);
+ &_data_word(0xe15f5fbe, 0xa2979735, 0xcc444488, 0x3917172e);
+ &_data_word(0x57c4c493, 0xf2a7a755, 0x827e7efc, 0x473d3d7a);
+ &_data_word(0xac6464c8, 0xe75d5dba, 0x2b191932, 0x957373e6);
+ &_data_word(0xa06060c0, 0x98818119, 0xd14f4f9e, 0x7fdcdca3);
+ &_data_word(0x66222244, 0x7e2a2a54, 0xab90903b, 0x8388880b);
+ &_data_word(0xca46468c, 0x29eeeec7, 0xd3b8b86b, 0x3c141428);
+ &_data_word(0x79dedea7, 0xe25e5ebc, 0x1d0b0b16, 0x76dbdbad);
+ &_data_word(0x3be0e0db, 0x56323264, 0x4e3a3a74, 0x1e0a0a14);
+ &_data_word(0xdb494992, 0x0a06060c, 0x6c242448, 0xe45c5cb8);
+ &_data_word(0x5dc2c29f, 0x6ed3d3bd, 0xefacac43, 0xa66262c4);
+ &_data_word(0xa8919139, 0xa4959531, 0x37e4e4d3, 0x8b7979f2);
+ &_data_word(0x32e7e7d5, 0x43c8c88b, 0x5937376e, 0xb76d6dda);
+ &_data_word(0x8c8d8d01, 0x64d5d5b1, 0xd24e4e9c, 0xe0a9a949);
+ &_data_word(0xb46c6cd8, 0xfa5656ac, 0x07f4f4f3, 0x25eaeacf);
+ &_data_word(0xaf6565ca, 0x8e7a7af4, 0xe9aeae47, 0x18080810);
+ &_data_word(0xd5baba6f, 0x887878f0, 0x6f25254a, 0x722e2e5c);
+ &_data_word(0x241c1c38, 0xf1a6a657, 0xc7b4b473, 0x51c6c697);
+ &_data_word(0x23e8e8cb, 0x7cdddda1, 0x9c7474e8, 0x211f1f3e);
+ &_data_word(0xdd4b4b96, 0xdcbdbd61, 0x868b8b0d, 0x858a8a0f);
+ &_data_word(0x907070e0, 0x423e3e7c, 0xc4b5b571, 0xaa6666cc);
+ &_data_word(0xd8484890, 0x05030306, 0x01f6f6f7, 0x120e0e1c);
+ &_data_word(0xa36161c2, 0x5f35356a, 0xf95757ae, 0xd0b9b969);
+ &_data_word(0x91868617, 0x58c1c199, 0x271d1d3a, 0xb99e9e27);
+ &_data_word(0x38e1e1d9, 0x13f8f8eb, 0xb398982b, 0x33111122);
+ &_data_word(0xbb6969d2, 0x70d9d9a9, 0x898e8e07, 0xa7949433);
+ &_data_word(0xb69b9b2d, 0x221e1e3c, 0x92878715, 0x20e9e9c9);
+ &_data_word(0x49cece87, 0xff5555aa, 0x78282850, 0x7adfdfa5);
+ &_data_word(0x8f8c8c03, 0xf8a1a159, 0x80898909, 0x170d0d1a);
+ &_data_word(0xdabfbf65, 0x31e6e6d7, 0xc6424284, 0xb86868d0);
+ &_data_word(0xc3414182, 0xb0999929, 0x772d2d5a, 0x110f0f1e);
+ &_data_word(0xcbb0b07b, 0xfc5454a8, 0xd6bbbb6d, 0x3a16162c);
+
+#Te4 # four copies of Te4 to choose from to avoid L1 aliasing
+ &data_byte(0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5);
+ &data_byte(0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76);
+ &data_byte(0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0);
+ &data_byte(0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0);
+ &data_byte(0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc);
+ &data_byte(0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15);
+ &data_byte(0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a);
+ &data_byte(0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75);
+ &data_byte(0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0);
+ &data_byte(0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84);
+ &data_byte(0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b);
+ &data_byte(0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf);
+ &data_byte(0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85);
+ &data_byte(0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8);
+ &data_byte(0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5);
+ &data_byte(0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2);
+ &data_byte(0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17);
+ &data_byte(0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73);
+ &data_byte(0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88);
+ &data_byte(0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb);
+ &data_byte(0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c);
+ &data_byte(0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79);
+ &data_byte(0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9);
+ &data_byte(0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08);
+ &data_byte(0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6);
+ &data_byte(0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a);
+ &data_byte(0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e);
+ &data_byte(0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e);
+ &data_byte(0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94);
+ &data_byte(0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf);
+ &data_byte(0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68);
+ &data_byte(0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16);
+
+ &data_byte(0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5);
+ &data_byte(0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76);
+ &data_byte(0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0);
+ &data_byte(0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0);
+ &data_byte(0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc);
+ &data_byte(0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15);
+ &data_byte(0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a);
+ &data_byte(0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75);
+ &data_byte(0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0);
+ &data_byte(0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84);
+ &data_byte(0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b);
+ &data_byte(0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf);
+ &data_byte(0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85);
+ &data_byte(0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8);
+ &data_byte(0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5);
+ &data_byte(0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2);
+ &data_byte(0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17);
+ &data_byte(0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73);
+ &data_byte(0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88);
+ &data_byte(0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb);
+ &data_byte(0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c);
+ &data_byte(0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79);
+ &data_byte(0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9);
+ &data_byte(0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08);
+ &data_byte(0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6);
+ &data_byte(0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a);
+ &data_byte(0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e);
+ &data_byte(0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e);
+ &data_byte(0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94);
+ &data_byte(0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf);
+ &data_byte(0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68);
+ &data_byte(0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16);
+
+ &data_byte(0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5);
+ &data_byte(0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76);
+ &data_byte(0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0);
+ &data_byte(0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0);
+ &data_byte(0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc);
+ &data_byte(0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15);
+ &data_byte(0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a);
+ &data_byte(0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75);
+ &data_byte(0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0);
+ &data_byte(0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84);
+ &data_byte(0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b);
+ &data_byte(0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf);
+ &data_byte(0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85);
+ &data_byte(0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8);
+ &data_byte(0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5);
+ &data_byte(0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2);
+ &data_byte(0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17);
+ &data_byte(0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73);
+ &data_byte(0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88);
+ &data_byte(0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb);
+ &data_byte(0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c);
+ &data_byte(0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79);
+ &data_byte(0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9);
+ &data_byte(0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08);
+ &data_byte(0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6);
+ &data_byte(0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a);
+ &data_byte(0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e);
+ &data_byte(0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e);
+ &data_byte(0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94);
+ &data_byte(0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf);
+ &data_byte(0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68);
+ &data_byte(0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16);
+
+ &data_byte(0x63, 0x7c, 0x77, 0x7b, 0xf2, 0x6b, 0x6f, 0xc5);
+ &data_byte(0x30, 0x01, 0x67, 0x2b, 0xfe, 0xd7, 0xab, 0x76);
+ &data_byte(0xca, 0x82, 0xc9, 0x7d, 0xfa, 0x59, 0x47, 0xf0);
+ &data_byte(0xad, 0xd4, 0xa2, 0xaf, 0x9c, 0xa4, 0x72, 0xc0);
+ &data_byte(0xb7, 0xfd, 0x93, 0x26, 0x36, 0x3f, 0xf7, 0xcc);
+ &data_byte(0x34, 0xa5, 0xe5, 0xf1, 0x71, 0xd8, 0x31, 0x15);
+ &data_byte(0x04, 0xc7, 0x23, 0xc3, 0x18, 0x96, 0x05, 0x9a);
+ &data_byte(0x07, 0x12, 0x80, 0xe2, 0xeb, 0x27, 0xb2, 0x75);
+ &data_byte(0x09, 0x83, 0x2c, 0x1a, 0x1b, 0x6e, 0x5a, 0xa0);
+ &data_byte(0x52, 0x3b, 0xd6, 0xb3, 0x29, 0xe3, 0x2f, 0x84);
+ &data_byte(0x53, 0xd1, 0x00, 0xed, 0x20, 0xfc, 0xb1, 0x5b);
+ &data_byte(0x6a, 0xcb, 0xbe, 0x39, 0x4a, 0x4c, 0x58, 0xcf);
+ &data_byte(0xd0, 0xef, 0xaa, 0xfb, 0x43, 0x4d, 0x33, 0x85);
+ &data_byte(0x45, 0xf9, 0x02, 0x7f, 0x50, 0x3c, 0x9f, 0xa8);
+ &data_byte(0x51, 0xa3, 0x40, 0x8f, 0x92, 0x9d, 0x38, 0xf5);
+ &data_byte(0xbc, 0xb6, 0xda, 0x21, 0x10, 0xff, 0xf3, 0xd2);
+ &data_byte(0xcd, 0x0c, 0x13, 0xec, 0x5f, 0x97, 0x44, 0x17);
+ &data_byte(0xc4, 0xa7, 0x7e, 0x3d, 0x64, 0x5d, 0x19, 0x73);
+ &data_byte(0x60, 0x81, 0x4f, 0xdc, 0x22, 0x2a, 0x90, 0x88);
+ &data_byte(0x46, 0xee, 0xb8, 0x14, 0xde, 0x5e, 0x0b, 0xdb);
+ &data_byte(0xe0, 0x32, 0x3a, 0x0a, 0x49, 0x06, 0x24, 0x5c);
+ &data_byte(0xc2, 0xd3, 0xac, 0x62, 0x91, 0x95, 0xe4, 0x79);
+ &data_byte(0xe7, 0xc8, 0x37, 0x6d, 0x8d, 0xd5, 0x4e, 0xa9);
+ &data_byte(0x6c, 0x56, 0xf4, 0xea, 0x65, 0x7a, 0xae, 0x08);
+ &data_byte(0xba, 0x78, 0x25, 0x2e, 0x1c, 0xa6, 0xb4, 0xc6);
+ &data_byte(0xe8, 0xdd, 0x74, 0x1f, 0x4b, 0xbd, 0x8b, 0x8a);
+ &data_byte(0x70, 0x3e, 0xb5, 0x66, 0x48, 0x03, 0xf6, 0x0e);
+ &data_byte(0x61, 0x35, 0x57, 0xb9, 0x86, 0xc1, 0x1d, 0x9e);
+ &data_byte(0xe1, 0xf8, 0x98, 0x11, 0x69, 0xd9, 0x8e, 0x94);
+ &data_byte(0x9b, 0x1e, 0x87, 0xe9, 0xce, 0x55, 0x28, 0xdf);
+ &data_byte(0x8c, 0xa1, 0x89, 0x0d, 0xbf, 0xe6, 0x42, 0x68);
+ &data_byte(0x41, 0x99, 0x2d, 0x0f, 0xb0, 0x54, 0xbb, 0x16);
+#rcon:
+ &data_word(0x00000001, 0x00000002, 0x00000004, 0x00000008);
+ &data_word(0x00000010, 0x00000020, 0x00000040, 0x00000080);
+ &data_word(0x0000001b, 0x00000036, 0x00000000, 0x00000000);
+ &data_word(0x00000000, 0x00000000, 0x00000000, 0x00000000);
+&function_end_B("_x86_AES_encrypt");
+
+# void AES_encrypt (const void *inp,void *out,const AES_KEY *key);
+&function_begin("AES_encrypt");
+ &mov ($acc,&wparam(0)); # load inp
+ &mov ($key,&wparam(2)); # load key
+
+ &mov ($s0,"esp");
+ &sub ("esp",36);
+ &and ("esp",-64); # align to cache-line
+
+ # place stack frame just "above" the key schedule
+ &lea ($s1,&DWP(-64-63,$key));
+ &sub ($s1,"esp");
+ &neg ($s1);
+ &and ($s1,0x3C0); # modulo 1024, but aligned to cache-line
+ &sub ("esp",$s1);
+ &add ("esp",4); # 4 is reserved for caller's return address
+ &mov ($_esp,$s0); # save stack pointer
+
+ &call (&label("pic_point")); # make it PIC!
+ &set_label("pic_point");
+ &blindpop($tbl);
+ &picmeup($s0,"OPENSSL_ia32cap_P",$tbl,&label("pic_point")) if (!$x86only);
+ &lea ($tbl,&DWP(&label("AES_Te")."-".&label("pic_point"),$tbl));
+
+ # pick Te4 copy which can't "overlap" with stack frame or key schedule
+ &lea ($s1,&DWP(768-4,"esp"));
+ &sub ($s1,$tbl);
+ &and ($s1,0x300);
+ &lea ($tbl,&DWP(2048+128,$tbl,$s1));
+
+ if (!$x86only) {
+ &bt (&DWP(0,$s0),25); # check for SSE bit
+ &jnc (&label("x86"));
+
+ &movq ("mm0",&QWP(0,$acc));
+ &movq ("mm4",&QWP(8,$acc));
+ &call ("_sse_AES_encrypt_compact");
+ &mov ("esp",$_esp); # restore stack pointer
+ &mov ($acc,&wparam(1)); # load out
+ &movq (&QWP(0,$acc),"mm0"); # write output data
+ &movq (&QWP(8,$acc),"mm4");
+ &emms ();
+ &function_end_A();
+ }
+ &set_label("x86",16);
+ &mov ($_tbl,$tbl);
+ &mov ($s0,&DWP(0,$acc)); # load input data
+ &mov ($s1,&DWP(4,$acc));
+ &mov ($s2,&DWP(8,$acc));
+ &mov ($s3,&DWP(12,$acc));
+ &call ("_x86_AES_encrypt_compact");
+ &mov ("esp",$_esp); # restore stack pointer
+ &mov ($acc,&wparam(1)); # load out
+ &mov (&DWP(0,$acc),$s0); # write output data
+ &mov (&DWP(4,$acc),$s1);
+ &mov (&DWP(8,$acc),$s2);
+ &mov (&DWP(12,$acc),$s3);
+&function_end("AES_encrypt");
+
+#--------------------------------------------------------------------#
+
+######################################################################
+# "Compact" block function
+######################################################################
+
+sub deccompact()
+{ my $Fn = mov;
+ while ($#_>5) { pop(@_); $Fn=sub{}; }
+ my ($i,$td,@s)=@_;
+ my $tmp = $key;
+ my $out = $i==3?$s[0]:$acc;
+
+ # $Fn is used in first compact round and its purpose is to
+ # void restoration of some values from stack, so that after
+ # 4xdeccompact with extra argument $key, $s0 and $s1 values
+ # are left there...
+ if($i==3) { &$Fn ($key,$__key); }
+ else { &mov ($out,$s[0]); }
+ &and ($out,0xFF);
+ &movz ($out,&BP(-128,$td,$out,1));
+
+ if ($i==3) { $tmp=$s[1]; }
+ &movz ($tmp,&HB($s[1]));
+ &movz ($tmp,&BP(-128,$td,$tmp,1));
+ &shl ($tmp,8);
+ &xor ($out,$tmp);
+
+ if ($i==3) { $tmp=$s[2]; &mov ($s[1],$acc); }
+ else { mov ($tmp,$s[2]); }
+ &shr ($tmp,16);
+ &and ($tmp,0xFF);
+ &movz ($tmp,&BP(-128,$td,$tmp,1));
+ &shl ($tmp,16);
+ &xor ($out,$tmp);
+
+ if ($i==3) { $tmp=$s[3]; &$Fn ($s[2],$__s1); }
+ else { &mov ($tmp,$s[3]); }
+ &shr ($tmp,24);
+ &movz ($tmp,&BP(-128,$td,$tmp,1));
+ &shl ($tmp,24);
+ &xor ($out,$tmp);
+ if ($i<2) { &mov (&DWP(4+4*$i,"esp"),$out); }
+ if ($i==3) { &$Fn ($s[3],$__s0); }
+}
+
+# must be called with 2,3,0,1 as argument sequence!!!
+sub dectransform()
+{ my @s = ($s0,$s1,$s2,$s3);
+ my $i = shift;
+ my $tmp = $key;
+ my $tp2 = @s[($i+2)%4]; $tp2 = @s[2] if ($i==1);
+ my $tp4 = @s[($i+3)%4]; $tp4 = @s[3] if ($i==1);
+ my $tp8 = $tbl;
+
+ &mov ($acc,$s[$i]);
+ &and ($acc,0x80808080);
+ &mov ($tmp,$acc);
+ &shr ($tmp,7);
+ &lea ($tp2,&DWP(0,$s[$i],$s[$i]));
+ &sub ($acc,$tmp);
+ &and ($tp2,0xfefefefe);
+ &and ($acc,0x1b1b1b1b);
+ &xor ($acc,$tp2);
+ &mov ($tp2,$acc);
+
+ &and ($acc,0x80808080);
+ &mov ($tmp,$acc);
+ &shr ($tmp,7);
+ &lea ($tp4,&DWP(0,$tp2,$tp2));
+ &sub ($acc,$tmp);
+ &and ($tp4,0xfefefefe);
+ &and ($acc,0x1b1b1b1b);
+ &xor ($tp2,$s[$i]); # tp2^tp1
+ &xor ($acc,$tp4);
+ &mov ($tp4,$acc);
+
+ &and ($acc,0x80808080);
+ &mov ($tmp,$acc);
+ &shr ($tmp,7);
+ &lea ($tp8,&DWP(0,$tp4,$tp4));
+ &sub ($acc,$tmp);
+ &and ($tp8,0xfefefefe);
+ &and ($acc,0x1b1b1b1b);
+ &xor ($tp4,$s[$i]); # tp4^tp1
+ &rotl ($s[$i],8); # = ROTATE(tp1,8)
+ &xor ($tp8,$acc);
+
+ &xor ($s[$i],$tp2);
+ &xor ($tp2,$tp8);
+ &rotl ($tp2,24);
+ &xor ($s[$i],$tp4);
+ &xor ($tp4,$tp8);
+ &rotl ($tp4,16);
+ &xor ($s[$i],$tp8); # ^= tp8^(tp4^tp1)^(tp2^tp1)
+ &rotl ($tp8,8);
+ &xor ($s[$i],$tp2); # ^= ROTATE(tp8^tp2^tp1,24)
+ &xor ($s[$i],$tp4); # ^= ROTATE(tp8^tp4^tp1,16)
+ &mov ($s[0],$__s0) if($i==2); #prefetch $s0
+ &mov ($s[1],$__s1) if($i==3); #prefetch $s1
+ &mov ($s[2],$__s2) if($i==1);
+ &xor ($s[$i],$tp8); # ^= ROTATE(tp8,8)
+
+ &mov ($s[3],$__s3) if($i==1);
+ &mov (&DWP(4+4*$i,"esp"),$s[$i]) if($i>=2);
+}
+
+&function_begin_B("_x86_AES_decrypt_compact");
+ # note that caller is expected to allocate stack frame for me!
+ &mov ($__key,$key); # save key
+
+ &xor ($s0,&DWP(0,$key)); # xor with key
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &mov ($acc,&DWP(240,$key)); # load key->rounds
+
+ &lea ($acc,&DWP(-2,$acc,$acc));
+ &lea ($acc,&DWP(0,$key,$acc,8));
+ &mov ($__end,$acc); # end of key schedule
+
+ # prefetch Td4
+ &mov ($key,&DWP(0-128,$tbl));
+ &mov ($acc,&DWP(32-128,$tbl));
+ &mov ($key,&DWP(64-128,$tbl));
+ &mov ($acc,&DWP(96-128,$tbl));
+ &mov ($key,&DWP(128-128,$tbl));
+ &mov ($acc,&DWP(160-128,$tbl));
+ &mov ($key,&DWP(192-128,$tbl));
+ &mov ($acc,&DWP(224-128,$tbl));
+
+ &set_label("loop",16);
+
+ &deccompact(0,$tbl,$s0,$s3,$s2,$s1,1);
+ &deccompact(1,$tbl,$s1,$s0,$s3,$s2,1);
+ &deccompact(2,$tbl,$s2,$s1,$s0,$s3,1);
+ &deccompact(3,$tbl,$s3,$s2,$s1,$s0,1);
+ &dectransform(2);
+ &dectransform(3);
+ &dectransform(0);
+ &dectransform(1);
+ &mov ($key,$__key);
+ &mov ($tbl,$__tbl);
+ &add ($key,16); # advance rd_key
+ &xor ($s0,&DWP(0,$key));
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &cmp ($key,$__end);
+ &mov ($__key,$key);
+ &jb (&label("loop"));
+
+ &deccompact(0,$tbl,$s0,$s3,$s2,$s1);
+ &deccompact(1,$tbl,$s1,$s0,$s3,$s2);
+ &deccompact(2,$tbl,$s2,$s1,$s0,$s3);
+ &deccompact(3,$tbl,$s3,$s2,$s1,$s0);
+
+ &xor ($s0,&DWP(16,$key));
+ &xor ($s1,&DWP(20,$key));
+ &xor ($s2,&DWP(24,$key));
+ &xor ($s3,&DWP(28,$key));
+
+ &ret ();
+&function_end_B("_x86_AES_decrypt_compact");
+
+######################################################################
+# "Compact" SSE block function.
+######################################################################
+
+sub sse_deccompact()
+{
+ &pshufw ("mm1","mm0",0x0c); # 7, 6, 1, 0
+ &movd ("eax","mm1"); # 7, 6, 1, 0
+
+ &pshufw ("mm5","mm4",0x09); # 13,12,11,10
+ &movz ($acc,&LB("eax")); # 0
+ &movz ("ecx",&BP(-128,$tbl,$acc,1)); # 0
+ &movd ("ebx","mm5"); # 13,12,11,10
+ &movz ("edx",&HB("eax")); # 1
+ &movz ("edx",&BP(-128,$tbl,"edx",1)); # 1
+ &shl ("edx",8); # 1
+
+ &pshufw ("mm2","mm0",0x06); # 3, 2, 5, 4
+ &movz ($acc,&LB("ebx")); # 10
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 10
+ &shl ($acc,16); # 10
+ &or ("ecx",$acc); # 10
+ &shr ("eax",16); # 7, 6
+ &movz ($acc,&HB("ebx")); # 11
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 11
+ &shl ($acc,24); # 11
+ &or ("edx",$acc); # 11
+ &shr ("ebx",16); # 13,12
+
+ &pshufw ("mm6","mm4",0x03); # 9, 8,15,14
+ &movz ($acc,&HB("eax")); # 7
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 7
+ &shl ($acc,24); # 7
+ &or ("ecx",$acc); # 7
+ &movz ($acc,&HB("ebx")); # 13
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 13
+ &shl ($acc,8); # 13
+ &or ("ecx",$acc); # 13
+ &movd ("mm0","ecx"); # t[0] collected
+
+ &movz ($acc,&LB("eax")); # 6
+ &movd ("eax","mm2"); # 3, 2, 5, 4
+ &movz ("ecx",&BP(-128,$tbl,$acc,1)); # 6
+ &shl ("ecx",16); # 6
+ &movz ($acc,&LB("ebx")); # 12
+ &movd ("ebx","mm6"); # 9, 8,15,14
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 12
+ &or ("ecx",$acc); # 12
+
+ &movz ($acc,&LB("eax")); # 4
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 4
+ &or ("edx",$acc); # 4
+ &movz ($acc,&LB("ebx")); # 14
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 14
+ &shl ($acc,16); # 14
+ &or ("edx",$acc); # 14
+ &movd ("mm1","edx"); # t[1] collected
+
+ &movz ($acc,&HB("eax")); # 5
+ &movz ("edx",&BP(-128,$tbl,$acc,1)); # 5
+ &shl ("edx",8); # 5
+ &movz ($acc,&HB("ebx")); # 15
+ &shr ("eax",16); # 3, 2
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 15
+ &shl ($acc,24); # 15
+ &or ("edx",$acc); # 15
+ &shr ("ebx",16); # 9, 8
+
+ &punpckldq ("mm0","mm1"); # t[0,1] collected
+
+ &movz ($acc,&HB("ebx")); # 9
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 9
+ &shl ($acc,8); # 9
+ &or ("ecx",$acc); # 9
+ &and ("ebx",0xff); # 8
+ &movz ("ebx",&BP(-128,$tbl,"ebx",1)); # 8
+ &or ("edx","ebx"); # 8
+ &movz ($acc,&LB("eax")); # 2
+ &movz ($acc,&BP(-128,$tbl,$acc,1)); # 2
+ &shl ($acc,16); # 2
+ &or ("edx",$acc); # 2
+ &movd ("mm4","edx"); # t[2] collected
+ &movz ("eax",&HB("eax")); # 3
+ &movz ("eax",&BP(-128,$tbl,"eax",1)); # 3
+ &shl ("eax",24); # 3
+ &or ("ecx","eax"); # 3
+ &movd ("mm5","ecx"); # t[3] collected
+
+ &punpckldq ("mm4","mm5"); # t[2,3] collected
+}
+
+ if (!$x86only) {
+&function_begin_B("_sse_AES_decrypt_compact");
+ &pxor ("mm0",&QWP(0,$key)); # 7, 6, 5, 4, 3, 2, 1, 0
+ &pxor ("mm4",&QWP(8,$key)); # 15,14,13,12,11,10, 9, 8
+
+ # note that caller is expected to allocate stack frame for me!
+ &mov ($acc,&DWP(240,$key)); # load key->rounds
+ &lea ($acc,&DWP(-2,$acc,$acc));
+ &lea ($acc,&DWP(0,$key,$acc,8));
+ &mov ($__end,$acc); # end of key schedule
+
+ &mov ($s0,0x1b1b1b1b); # magic constant
+ &mov (&DWP(8,"esp"),$s0);
+ &mov (&DWP(12,"esp"),$s0);
+
+ # prefetch Td4
+ &mov ($s0,&DWP(0-128,$tbl));
+ &mov ($s1,&DWP(32-128,$tbl));
+ &mov ($s2,&DWP(64-128,$tbl));
+ &mov ($s3,&DWP(96-128,$tbl));
+ &mov ($s0,&DWP(128-128,$tbl));
+ &mov ($s1,&DWP(160-128,$tbl));
+ &mov ($s2,&DWP(192-128,$tbl));
+ &mov ($s3,&DWP(224-128,$tbl));
+
+ &set_label("loop",16);
+ &sse_deccompact();
+ &add ($key,16);
+ &cmp ($key,$__end);
+ &ja (&label("out"));
+
+ # ROTATE(x^y,N) == ROTATE(x,N)^ROTATE(y,N)
+ &movq ("mm3","mm0"); &movq ("mm7","mm4");
+ &movq ("mm2","mm0",1); &movq ("mm6","mm4",1);
+ &movq ("mm1","mm0"); &movq ("mm5","mm4");
+ &pshufw ("mm0","mm0",0xb1); &pshufw ("mm4","mm4",0xb1);# = ROTATE(tp0,16)
+ &pslld ("mm2",8); &pslld ("mm6",8);
+ &psrld ("mm3",8); &psrld ("mm7",8);
+ &pxor ("mm0","mm2"); &pxor ("mm4","mm6"); # ^= tp0<<8
+ &pxor ("mm0","mm3"); &pxor ("mm4","mm7"); # ^= tp0>>8
+ &pslld ("mm2",16); &pslld ("mm6",16);
+ &psrld ("mm3",16); &psrld ("mm7",16);
+ &pxor ("mm0","mm2"); &pxor ("mm4","mm6"); # ^= tp0<<24
+ &pxor ("mm0","mm3"); &pxor ("mm4","mm7"); # ^= tp0>>24
+
+ &movq ("mm3",&QWP(8,"esp"));
+ &pxor ("mm2","mm2"); &pxor ("mm6","mm6");
+ &pcmpgtb("mm2","mm1"); &pcmpgtb("mm6","mm5");
+ &pand ("mm2","mm3"); &pand ("mm6","mm3");
+ &paddb ("mm1","mm1"); &paddb ("mm5","mm5");
+ &pxor ("mm1","mm2"); &pxor ("mm5","mm6"); # tp2
+ &movq ("mm3","mm1"); &movq ("mm7","mm5");
+ &movq ("mm2","mm1"); &movq ("mm6","mm5");
+ &pxor ("mm0","mm1"); &pxor ("mm4","mm5"); # ^= tp2
+ &pslld ("mm3",24); &pslld ("mm7",24);
+ &psrld ("mm2",8); &psrld ("mm6",8);
+ &pxor ("mm0","mm3"); &pxor ("mm4","mm7"); # ^= tp2<<24
+ &pxor ("mm0","mm2"); &pxor ("mm4","mm6"); # ^= tp2>>8
+
+ &movq ("mm2",&QWP(8,"esp"));
+ &pxor ("mm3","mm3"); &pxor ("mm7","mm7");
+ &pcmpgtb("mm3","mm1"); &pcmpgtb("mm7","mm5");
+ &pand ("mm3","mm2"); &pand ("mm7","mm2");
+ &paddb ("mm1","mm1"); &paddb ("mm5","mm5");
+ &pxor ("mm1","mm3"); &pxor ("mm5","mm7"); # tp4
+ &pshufw ("mm3","mm1",0xb1); &pshufw ("mm7","mm5",0xb1);
+ &pxor ("mm0","mm1"); &pxor ("mm4","mm5"); # ^= tp4
+ &pxor ("mm0","mm3"); &pxor ("mm4","mm7"); # ^= ROTATE(tp4,16)
+
+ &pxor ("mm3","mm3"); &pxor ("mm7","mm7");
+ &pcmpgtb("mm3","mm1"); &pcmpgtb("mm7","mm5");
+ &pand ("mm3","mm2"); &pand ("mm7","mm2");
+ &paddb ("mm1","mm1"); &paddb ("mm5","mm5");
+ &pxor ("mm1","mm3"); &pxor ("mm5","mm7"); # tp8
+ &pxor ("mm0","mm1"); &pxor ("mm4","mm5"); # ^= tp8
+ &movq ("mm3","mm1"); &movq ("mm7","mm5");
+ &pshufw ("mm2","mm1",0xb1); &pshufw ("mm6","mm5",0xb1);
+ &pxor ("mm0","mm2"); &pxor ("mm4","mm6"); # ^= ROTATE(tp8,16)
+ &pslld ("mm1",8); &pslld ("mm5",8);
+ &psrld ("mm3",8); &psrld ("mm7",8);
+ &movq ("mm2",&QWP(0,$key)); &movq ("mm6",&QWP(8,$key));
+ &pxor ("mm0","mm1"); &pxor ("mm4","mm5"); # ^= tp8<<8
+ &pxor ("mm0","mm3"); &pxor ("mm4","mm7"); # ^= tp8>>8
+ &mov ($s0,&DWP(0-128,$tbl));
+ &pslld ("mm1",16); &pslld ("mm5",16);
+ &mov ($s1,&DWP(64-128,$tbl));
+ &psrld ("mm3",16); &psrld ("mm7",16);
+ &mov ($s2,&DWP(128-128,$tbl));
+ &pxor ("mm0","mm1"); &pxor ("mm4","mm5"); # ^= tp8<<24
+ &mov ($s3,&DWP(192-128,$tbl));
+ &pxor ("mm0","mm3"); &pxor ("mm4","mm7"); # ^= tp8>>24
+
+ &pxor ("mm0","mm2"); &pxor ("mm4","mm6");
+ &jmp (&label("loop"));
+
+ &set_label("out",16);
+ &pxor ("mm0",&QWP(0,$key));
+ &pxor ("mm4",&QWP(8,$key));
+
+ &ret ();
+&function_end_B("_sse_AES_decrypt_compact");
+ }
+
+######################################################################
+# Vanilla block function.
+######################################################################
+
+sub decstep()
+{ my ($i,$td,@s) = @_;
+ my $tmp = $key;
+ my $out = $i==3?$s[0]:$acc;
+
+ # no instructions are reordered, as performance appears
+ # optimal... or rather that all attempts to reorder didn't
+ # result in better performance [which by the way is not a
+ # bit lower than ecryption].
+ if($i==3) { &mov ($key,$__key); }
+ else { &mov ($out,$s[0]); }
+ &and ($out,0xFF);
+ &mov ($out,&DWP(0,$td,$out,8));
+
+ if ($i==3) { $tmp=$s[1]; }
+ &movz ($tmp,&HB($s[1]));
+ &xor ($out,&DWP(3,$td,$tmp,8));
+
+ if ($i==3) { $tmp=$s[2]; &mov ($s[1],$acc); }
+ else { &mov ($tmp,$s[2]); }
+ &shr ($tmp,16);
+ &and ($tmp,0xFF);
+ &xor ($out,&DWP(2,$td,$tmp,8));
+
+ if ($i==3) { $tmp=$s[3]; &mov ($s[2],$__s1); }
+ else { &mov ($tmp,$s[3]); }
+ &shr ($tmp,24);
+ &xor ($out,&DWP(1,$td,$tmp,8));
+ if ($i<2) { &mov (&DWP(4+4*$i,"esp"),$out); }
+ if ($i==3) { &mov ($s[3],$__s0); }
+ &comment();
+}
+
+sub declast()
+{ my ($i,$td,@s)=@_;
+ my $tmp = $key;
+ my $out = $i==3?$s[0]:$acc;
+
+ if($i==0) { &lea ($td,&DWP(2048+128,$td));
+ &mov ($tmp,&DWP(0-128,$td));
+ &mov ($acc,&DWP(32-128,$td));
+ &mov ($tmp,&DWP(64-128,$td));
+ &mov ($acc,&DWP(96-128,$td));
+ &mov ($tmp,&DWP(128-128,$td));
+ &mov ($acc,&DWP(160-128,$td));
+ &mov ($tmp,&DWP(192-128,$td));
+ &mov ($acc,&DWP(224-128,$td));
+ &lea ($td,&DWP(-128,$td)); }
+ if($i==3) { &mov ($key,$__key); }
+ else { &mov ($out,$s[0]); }
+ &and ($out,0xFF);
+ &movz ($out,&BP(0,$td,$out,1));
+
+ if ($i==3) { $tmp=$s[1]; }
+ &movz ($tmp,&HB($s[1]));
+ &movz ($tmp,&BP(0,$td,$tmp,1));
+ &shl ($tmp,8);
+ &xor ($out,$tmp);
+
+ if ($i==3) { $tmp=$s[2]; &mov ($s[1],$acc); }
+ else { mov ($tmp,$s[2]); }
+ &shr ($tmp,16);
+ &and ($tmp,0xFF);
+ &movz ($tmp,&BP(0,$td,$tmp,1));
+ &shl ($tmp,16);
+ &xor ($out,$tmp);
+
+ if ($i==3) { $tmp=$s[3]; &mov ($s[2],$__s1); }
+ else { &mov ($tmp,$s[3]); }
+ &shr ($tmp,24);
+ &movz ($tmp,&BP(0,$td,$tmp,1));
+ &shl ($tmp,24);
+ &xor ($out,$tmp);
+ if ($i<2) { &mov (&DWP(4+4*$i,"esp"),$out); }
+ if ($i==3) { &mov ($s[3],$__s0);
+ &lea ($td,&DWP(-2048,$td)); }
+}
+
+&function_begin_B("_x86_AES_decrypt");
+ # note that caller is expected to allocate stack frame for me!
+ &mov ($__key,$key); # save key
+
+ &xor ($s0,&DWP(0,$key)); # xor with key
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &mov ($acc,&DWP(240,$key)); # load key->rounds
+
+ if ($small_footprint) {
+ &lea ($acc,&DWP(-2,$acc,$acc));
+ &lea ($acc,&DWP(0,$key,$acc,8));
+ &mov ($__end,$acc); # end of key schedule
+ &set_label("loop",16);
+ &decstep(0,$tbl,$s0,$s3,$s2,$s1);
+ &decstep(1,$tbl,$s1,$s0,$s3,$s2);
+ &decstep(2,$tbl,$s2,$s1,$s0,$s3);
+ &decstep(3,$tbl,$s3,$s2,$s1,$s0);
+ &add ($key,16); # advance rd_key
+ &xor ($s0,&DWP(0,$key));
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+ &cmp ($key,$__end);
+ &mov ($__key,$key);
+ &jb (&label("loop"));
+ }
+ else {
+ &cmp ($acc,10);
+ &jle (&label("10rounds"));
+ &cmp ($acc,12);
+ &jle (&label("12rounds"));
+
+ &set_label("14rounds",4);
+ for ($i=1;$i<3;$i++) {
+ &decstep(0,$tbl,$s0,$s3,$s2,$s1);
+ &decstep(1,$tbl,$s1,$s0,$s3,$s2);
+ &decstep(2,$tbl,$s2,$s1,$s0,$s3);
+ &decstep(3,$tbl,$s3,$s2,$s1,$s0);
+ &xor ($s0,&DWP(16*$i+0,$key));
+ &xor ($s1,&DWP(16*$i+4,$key));
+ &xor ($s2,&DWP(16*$i+8,$key));
+ &xor ($s3,&DWP(16*$i+12,$key));
+ }
+ &add ($key,32);
+ &mov ($__key,$key); # advance rd_key
+ &set_label("12rounds",4);
+ for ($i=1;$i<3;$i++) {
+ &decstep(0,$tbl,$s0,$s3,$s2,$s1);
+ &decstep(1,$tbl,$s1,$s0,$s3,$s2);
+ &decstep(2,$tbl,$s2,$s1,$s0,$s3);
+ &decstep(3,$tbl,$s3,$s2,$s1,$s0);
+ &xor ($s0,&DWP(16*$i+0,$key));
+ &xor ($s1,&DWP(16*$i+4,$key));
+ &xor ($s2,&DWP(16*$i+8,$key));
+ &xor ($s3,&DWP(16*$i+12,$key));
+ }
+ &add ($key,32);
+ &mov ($__key,$key); # advance rd_key
+ &set_label("10rounds",4);
+ for ($i=1;$i<10;$i++) {
+ &decstep(0,$tbl,$s0,$s3,$s2,$s1);
+ &decstep(1,$tbl,$s1,$s0,$s3,$s2);
+ &decstep(2,$tbl,$s2,$s1,$s0,$s3);
+ &decstep(3,$tbl,$s3,$s2,$s1,$s0);
+ &xor ($s0,&DWP(16*$i+0,$key));
+ &xor ($s1,&DWP(16*$i+4,$key));
+ &xor ($s2,&DWP(16*$i+8,$key));
+ &xor ($s3,&DWP(16*$i+12,$key));
+ }
+ }
+
+ &declast(0,$tbl,$s0,$s3,$s2,$s1);
+ &declast(1,$tbl,$s1,$s0,$s3,$s2);
+ &declast(2,$tbl,$s2,$s1,$s0,$s3);
+ &declast(3,$tbl,$s3,$s2,$s1,$s0);
+
+ &add ($key,$small_footprint?16:160);
+ &xor ($s0,&DWP(0,$key));
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &ret ();
+
+&set_label("AES_Td",64); # Yes! I keep it in the code segment!
+ &_data_word(0x50a7f451, 0x5365417e, 0xc3a4171a, 0x965e273a);
+ &_data_word(0xcb6bab3b, 0xf1459d1f, 0xab58faac, 0x9303e34b);
+ &_data_word(0x55fa3020, 0xf66d76ad, 0x9176cc88, 0x254c02f5);
+ &_data_word(0xfcd7e54f, 0xd7cb2ac5, 0x80443526, 0x8fa362b5);
+ &_data_word(0x495ab1de, 0x671bba25, 0x980eea45, 0xe1c0fe5d);
+ &_data_word(0x02752fc3, 0x12f04c81, 0xa397468d, 0xc6f9d36b);
+ &_data_word(0xe75f8f03, 0x959c9215, 0xeb7a6dbf, 0xda595295);
+ &_data_word(0x2d83bed4, 0xd3217458, 0x2969e049, 0x44c8c98e);
+ &_data_word(0x6a89c275, 0x78798ef4, 0x6b3e5899, 0xdd71b927);
+ &_data_word(0xb64fe1be, 0x17ad88f0, 0x66ac20c9, 0xb43ace7d);
+ &_data_word(0x184adf63, 0x82311ae5, 0x60335197, 0x457f5362);
+ &_data_word(0xe07764b1, 0x84ae6bbb, 0x1ca081fe, 0x942b08f9);
+ &_data_word(0x58684870, 0x19fd458f, 0x876cde94, 0xb7f87b52);
+ &_data_word(0x23d373ab, 0xe2024b72, 0x578f1fe3, 0x2aab5566);
+ &_data_word(0x0728ebb2, 0x03c2b52f, 0x9a7bc586, 0xa50837d3);
+ &_data_word(0xf2872830, 0xb2a5bf23, 0xba6a0302, 0x5c8216ed);
+ &_data_word(0x2b1ccf8a, 0x92b479a7, 0xf0f207f3, 0xa1e2694e);
+ &_data_word(0xcdf4da65, 0xd5be0506, 0x1f6234d1, 0x8afea6c4);
+ &_data_word(0x9d532e34, 0xa055f3a2, 0x32e18a05, 0x75ebf6a4);
+ &_data_word(0x39ec830b, 0xaaef6040, 0x069f715e, 0x51106ebd);
+ &_data_word(0xf98a213e, 0x3d06dd96, 0xae053edd, 0x46bde64d);
+ &_data_word(0xb58d5491, 0x055dc471, 0x6fd40604, 0xff155060);
+ &_data_word(0x24fb9819, 0x97e9bdd6, 0xcc434089, 0x779ed967);
+ &_data_word(0xbd42e8b0, 0x888b8907, 0x385b19e7, 0xdbeec879);
+ &_data_word(0x470a7ca1, 0xe90f427c, 0xc91e84f8, 0x00000000);
+ &_data_word(0x83868009, 0x48ed2b32, 0xac70111e, 0x4e725a6c);
+ &_data_word(0xfbff0efd, 0x5638850f, 0x1ed5ae3d, 0x27392d36);
+ &_data_word(0x64d90f0a, 0x21a65c68, 0xd1545b9b, 0x3a2e3624);
+ &_data_word(0xb1670a0c, 0x0fe75793, 0xd296eeb4, 0x9e919b1b);
+ &_data_word(0x4fc5c080, 0xa220dc61, 0x694b775a, 0x161a121c);
+ &_data_word(0x0aba93e2, 0xe52aa0c0, 0x43e0223c, 0x1d171b12);
+ &_data_word(0x0b0d090e, 0xadc78bf2, 0xb9a8b62d, 0xc8a91e14);
+ &_data_word(0x8519f157, 0x4c0775af, 0xbbdd99ee, 0xfd607fa3);
+ &_data_word(0x9f2601f7, 0xbcf5725c, 0xc53b6644, 0x347efb5b);
+ &_data_word(0x7629438b, 0xdcc623cb, 0x68fcedb6, 0x63f1e4b8);
+ &_data_word(0xcadc31d7, 0x10856342, 0x40229713, 0x2011c684);
+ &_data_word(0x7d244a85, 0xf83dbbd2, 0x1132f9ae, 0x6da129c7);
+ &_data_word(0x4b2f9e1d, 0xf330b2dc, 0xec52860d, 0xd0e3c177);
+ &_data_word(0x6c16b32b, 0x99b970a9, 0xfa489411, 0x2264e947);
+ &_data_word(0xc48cfca8, 0x1a3ff0a0, 0xd82c7d56, 0xef903322);
+ &_data_word(0xc74e4987, 0xc1d138d9, 0xfea2ca8c, 0x360bd498);
+ &_data_word(0xcf81f5a6, 0x28de7aa5, 0x268eb7da, 0xa4bfad3f);
+ &_data_word(0xe49d3a2c, 0x0d927850, 0x9bcc5f6a, 0x62467e54);
+ &_data_word(0xc2138df6, 0xe8b8d890, 0x5ef7392e, 0xf5afc382);
+ &_data_word(0xbe805d9f, 0x7c93d069, 0xa92dd56f, 0xb31225cf);
+ &_data_word(0x3b99acc8, 0xa77d1810, 0x6e639ce8, 0x7bbb3bdb);
+ &_data_word(0x097826cd, 0xf418596e, 0x01b79aec, 0xa89a4f83);
+ &_data_word(0x656e95e6, 0x7ee6ffaa, 0x08cfbc21, 0xe6e815ef);
+ &_data_word(0xd99be7ba, 0xce366f4a, 0xd4099fea, 0xd67cb029);
+ &_data_word(0xafb2a431, 0x31233f2a, 0x3094a5c6, 0xc066a235);
+ &_data_word(0x37bc4e74, 0xa6ca82fc, 0xb0d090e0, 0x15d8a733);
+ &_data_word(0x4a9804f1, 0xf7daec41, 0x0e50cd7f, 0x2ff69117);
+ &_data_word(0x8dd64d76, 0x4db0ef43, 0x544daacc, 0xdf0496e4);
+ &_data_word(0xe3b5d19e, 0x1b886a4c, 0xb81f2cc1, 0x7f516546);
+ &_data_word(0x04ea5e9d, 0x5d358c01, 0x737487fa, 0x2e410bfb);
+ &_data_word(0x5a1d67b3, 0x52d2db92, 0x335610e9, 0x1347d66d);
+ &_data_word(0x8c61d79a, 0x7a0ca137, 0x8e14f859, 0x893c13eb);
+ &_data_word(0xee27a9ce, 0x35c961b7, 0xede51ce1, 0x3cb1477a);
+ &_data_word(0x59dfd29c, 0x3f73f255, 0x79ce1418, 0xbf37c773);
+ &_data_word(0xeacdf753, 0x5baafd5f, 0x146f3ddf, 0x86db4478);
+ &_data_word(0x81f3afca, 0x3ec468b9, 0x2c342438, 0x5f40a3c2);
+ &_data_word(0x72c31d16, 0x0c25e2bc, 0x8b493c28, 0x41950dff);
+ &_data_word(0x7101a839, 0xdeb30c08, 0x9ce4b4d8, 0x90c15664);
+ &_data_word(0x6184cb7b, 0x70b632d5, 0x745c6c48, 0x4257b8d0);
+
+#Td4: # four copies of Td4 to choose from to avoid L1 aliasing
+ &data_byte(0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38);
+ &data_byte(0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb);
+ &data_byte(0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87);
+ &data_byte(0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb);
+ &data_byte(0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d);
+ &data_byte(0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e);
+ &data_byte(0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2);
+ &data_byte(0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25);
+ &data_byte(0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16);
+ &data_byte(0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92);
+ &data_byte(0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda);
+ &data_byte(0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84);
+ &data_byte(0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a);
+ &data_byte(0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06);
+ &data_byte(0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02);
+ &data_byte(0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b);
+ &data_byte(0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea);
+ &data_byte(0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73);
+ &data_byte(0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85);
+ &data_byte(0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e);
+ &data_byte(0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89);
+ &data_byte(0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b);
+ &data_byte(0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20);
+ &data_byte(0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4);
+ &data_byte(0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31);
+ &data_byte(0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f);
+ &data_byte(0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d);
+ &data_byte(0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef);
+ &data_byte(0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0);
+ &data_byte(0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61);
+ &data_byte(0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26);
+ &data_byte(0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d);
+
+ &data_byte(0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38);
+ &data_byte(0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb);
+ &data_byte(0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87);
+ &data_byte(0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb);
+ &data_byte(0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d);
+ &data_byte(0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e);
+ &data_byte(0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2);
+ &data_byte(0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25);
+ &data_byte(0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16);
+ &data_byte(0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92);
+ &data_byte(0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda);
+ &data_byte(0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84);
+ &data_byte(0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a);
+ &data_byte(0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06);
+ &data_byte(0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02);
+ &data_byte(0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b);
+ &data_byte(0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea);
+ &data_byte(0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73);
+ &data_byte(0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85);
+ &data_byte(0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e);
+ &data_byte(0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89);
+ &data_byte(0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b);
+ &data_byte(0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20);
+ &data_byte(0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4);
+ &data_byte(0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31);
+ &data_byte(0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f);
+ &data_byte(0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d);
+ &data_byte(0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef);
+ &data_byte(0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0);
+ &data_byte(0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61);
+ &data_byte(0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26);
+ &data_byte(0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d);
+
+ &data_byte(0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38);
+ &data_byte(0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb);
+ &data_byte(0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87);
+ &data_byte(0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb);
+ &data_byte(0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d);
+ &data_byte(0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e);
+ &data_byte(0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2);
+ &data_byte(0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25);
+ &data_byte(0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16);
+ &data_byte(0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92);
+ &data_byte(0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda);
+ &data_byte(0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84);
+ &data_byte(0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a);
+ &data_byte(0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06);
+ &data_byte(0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02);
+ &data_byte(0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b);
+ &data_byte(0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea);
+ &data_byte(0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73);
+ &data_byte(0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85);
+ &data_byte(0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e);
+ &data_byte(0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89);
+ &data_byte(0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b);
+ &data_byte(0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20);
+ &data_byte(0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4);
+ &data_byte(0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31);
+ &data_byte(0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f);
+ &data_byte(0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d);
+ &data_byte(0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef);
+ &data_byte(0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0);
+ &data_byte(0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61);
+ &data_byte(0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26);
+ &data_byte(0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d);
+
+ &data_byte(0x52, 0x09, 0x6a, 0xd5, 0x30, 0x36, 0xa5, 0x38);
+ &data_byte(0xbf, 0x40, 0xa3, 0x9e, 0x81, 0xf3, 0xd7, 0xfb);
+ &data_byte(0x7c, 0xe3, 0x39, 0x82, 0x9b, 0x2f, 0xff, 0x87);
+ &data_byte(0x34, 0x8e, 0x43, 0x44, 0xc4, 0xde, 0xe9, 0xcb);
+ &data_byte(0x54, 0x7b, 0x94, 0x32, 0xa6, 0xc2, 0x23, 0x3d);
+ &data_byte(0xee, 0x4c, 0x95, 0x0b, 0x42, 0xfa, 0xc3, 0x4e);
+ &data_byte(0x08, 0x2e, 0xa1, 0x66, 0x28, 0xd9, 0x24, 0xb2);
+ &data_byte(0x76, 0x5b, 0xa2, 0x49, 0x6d, 0x8b, 0xd1, 0x25);
+ &data_byte(0x72, 0xf8, 0xf6, 0x64, 0x86, 0x68, 0x98, 0x16);
+ &data_byte(0xd4, 0xa4, 0x5c, 0xcc, 0x5d, 0x65, 0xb6, 0x92);
+ &data_byte(0x6c, 0x70, 0x48, 0x50, 0xfd, 0xed, 0xb9, 0xda);
+ &data_byte(0x5e, 0x15, 0x46, 0x57, 0xa7, 0x8d, 0x9d, 0x84);
+ &data_byte(0x90, 0xd8, 0xab, 0x00, 0x8c, 0xbc, 0xd3, 0x0a);
+ &data_byte(0xf7, 0xe4, 0x58, 0x05, 0xb8, 0xb3, 0x45, 0x06);
+ &data_byte(0xd0, 0x2c, 0x1e, 0x8f, 0xca, 0x3f, 0x0f, 0x02);
+ &data_byte(0xc1, 0xaf, 0xbd, 0x03, 0x01, 0x13, 0x8a, 0x6b);
+ &data_byte(0x3a, 0x91, 0x11, 0x41, 0x4f, 0x67, 0xdc, 0xea);
+ &data_byte(0x97, 0xf2, 0xcf, 0xce, 0xf0, 0xb4, 0xe6, 0x73);
+ &data_byte(0x96, 0xac, 0x74, 0x22, 0xe7, 0xad, 0x35, 0x85);
+ &data_byte(0xe2, 0xf9, 0x37, 0xe8, 0x1c, 0x75, 0xdf, 0x6e);
+ &data_byte(0x47, 0xf1, 0x1a, 0x71, 0x1d, 0x29, 0xc5, 0x89);
+ &data_byte(0x6f, 0xb7, 0x62, 0x0e, 0xaa, 0x18, 0xbe, 0x1b);
+ &data_byte(0xfc, 0x56, 0x3e, 0x4b, 0xc6, 0xd2, 0x79, 0x20);
+ &data_byte(0x9a, 0xdb, 0xc0, 0xfe, 0x78, 0xcd, 0x5a, 0xf4);
+ &data_byte(0x1f, 0xdd, 0xa8, 0x33, 0x88, 0x07, 0xc7, 0x31);
+ &data_byte(0xb1, 0x12, 0x10, 0x59, 0x27, 0x80, 0xec, 0x5f);
+ &data_byte(0x60, 0x51, 0x7f, 0xa9, 0x19, 0xb5, 0x4a, 0x0d);
+ &data_byte(0x2d, 0xe5, 0x7a, 0x9f, 0x93, 0xc9, 0x9c, 0xef);
+ &data_byte(0xa0, 0xe0, 0x3b, 0x4d, 0xae, 0x2a, 0xf5, 0xb0);
+ &data_byte(0xc8, 0xeb, 0xbb, 0x3c, 0x83, 0x53, 0x99, 0x61);
+ &data_byte(0x17, 0x2b, 0x04, 0x7e, 0xba, 0x77, 0xd6, 0x26);
+ &data_byte(0xe1, 0x69, 0x14, 0x63, 0x55, 0x21, 0x0c, 0x7d);
+&function_end_B("_x86_AES_decrypt");
+
+# void AES_decrypt (const void *inp,void *out,const AES_KEY *key);
+&function_begin("AES_decrypt");
+ &mov ($acc,&wparam(0)); # load inp
+ &mov ($key,&wparam(2)); # load key
+
+ &mov ($s0,"esp");
+ &sub ("esp",36);
+ &and ("esp",-64); # align to cache-line
+
+ # place stack frame just "above" the key schedule
+ &lea ($s1,&DWP(-64-63,$key));
+ &sub ($s1,"esp");
+ &neg ($s1);
+ &and ($s1,0x3C0); # modulo 1024, but aligned to cache-line
+ &sub ("esp",$s1);
+ &add ("esp",4); # 4 is reserved for caller's return address
+ &mov ($_esp,$s0); # save stack pointer
+
+ &call (&label("pic_point")); # make it PIC!
+ &set_label("pic_point");
+ &blindpop($tbl);
+ &picmeup($s0,"OPENSSL_ia32cap_P",$tbl,&label("pic_point")) if(!$x86only);
+ &lea ($tbl,&DWP(&label("AES_Td")."-".&label("pic_point"),$tbl));
+
+ # pick Td4 copy which can't "overlap" with stack frame or key schedule
+ &lea ($s1,&DWP(768-4,"esp"));
+ &sub ($s1,$tbl);
+ &and ($s1,0x300);
+ &lea ($tbl,&DWP(2048+128,$tbl,$s1));
+
+ if (!$x86only) {
+ &bt (&DWP(0,$s0),25); # check for SSE bit
+ &jnc (&label("x86"));
+
+ &movq ("mm0",&QWP(0,$acc));
+ &movq ("mm4",&QWP(8,$acc));
+ &call ("_sse_AES_decrypt_compact");
+ &mov ("esp",$_esp); # restore stack pointer
+ &mov ($acc,&wparam(1)); # load out
+ &movq (&QWP(0,$acc),"mm0"); # write output data
+ &movq (&QWP(8,$acc),"mm4");
+ &emms ();
+ &function_end_A();
+ }
+ &set_label("x86",16);
+ &mov ($_tbl,$tbl);
+ &mov ($s0,&DWP(0,$acc)); # load input data
+ &mov ($s1,&DWP(4,$acc));
+ &mov ($s2,&DWP(8,$acc));
+ &mov ($s3,&DWP(12,$acc));
+ &call ("_x86_AES_decrypt_compact");
+ &mov ("esp",$_esp); # restore stack pointer
+ &mov ($acc,&wparam(1)); # load out
+ &mov (&DWP(0,$acc),$s0); # write output data
+ &mov (&DWP(4,$acc),$s1);
+ &mov (&DWP(8,$acc),$s2);
+ &mov (&DWP(12,$acc),$s3);
+&function_end("AES_decrypt");
+
+# void AES_cbc_encrypt (const void char *inp, unsigned char *out,
+# size_t length, const AES_KEY *key,
+# unsigned char *ivp,const int enc);
+{
+# stack frame layout
+# -4(%esp) # return address 0(%esp)
+# 0(%esp) # s0 backing store 4(%esp)
+# 4(%esp) # s1 backing store 8(%esp)
+# 8(%esp) # s2 backing store 12(%esp)
+# 12(%esp) # s3 backing store 16(%esp)
+# 16(%esp) # key backup 20(%esp)
+# 20(%esp) # end of key schedule 24(%esp)
+# 24(%esp) # %ebp backup 28(%esp)
+# 28(%esp) # %esp backup
+my $_inp=&DWP(32,"esp"); # copy of wparam(0)
+my $_out=&DWP(36,"esp"); # copy of wparam(1)
+my $_len=&DWP(40,"esp"); # copy of wparam(2)
+my $_key=&DWP(44,"esp"); # copy of wparam(3)
+my $_ivp=&DWP(48,"esp"); # copy of wparam(4)
+my $_tmp=&DWP(52,"esp"); # volatile variable
+#
+my $ivec=&DWP(60,"esp"); # ivec[16]
+my $aes_key=&DWP(76,"esp"); # copy of aes_key
+my $mark=&DWP(76+240,"esp"); # copy of aes_key->rounds
+
+&function_begin("AES_cbc_encrypt");
+ &mov ($s2 eq "ecx"? $s2 : "",&wparam(2)); # load len
+ &cmp ($s2,0);
+ &je (&label("drop_out"));
+
+ &call (&label("pic_point")); # make it PIC!
+ &set_label("pic_point");
+ &blindpop($tbl);
+ &picmeup($s0,"OPENSSL_ia32cap_P",$tbl,&label("pic_point")) if(!$x86only);
+
+ &cmp (&wparam(5),0);
+ &lea ($tbl,&DWP(&label("AES_Te")."-".&label("pic_point"),$tbl));
+ &jne (&label("picked_te"));
+ &lea ($tbl,&DWP(&label("AES_Td")."-".&label("AES_Te"),$tbl));
+ &set_label("picked_te");
+
+ # one can argue if this is required
+ &pushf ();
+ &cld ();
+
+ &cmp ($s2,$speed_limit);
+ &jb (&label("slow_way"));
+ &test ($s2,15);
+ &jnz (&label("slow_way"));
+ if (!$x86only) {
+ &bt (&DWP(0,$s0),28); # check for hyper-threading bit
+ &jc (&label("slow_way"));
+ }
+ # pre-allocate aligned stack frame...
+ &lea ($acc,&DWP(-80-244,"esp"));
+ &and ($acc,-64);
+
+ # ... and make sure it doesn't alias with $tbl modulo 4096
+ &mov ($s0,$tbl);
+ &lea ($s1,&DWP(2048+256,$tbl));
+ &mov ($s3,$acc);
+ &and ($s0,0xfff); # s = %ebp&0xfff
+ &and ($s1,0xfff); # e = (%ebp+2048+256)&0xfff
+ &and ($s3,0xfff); # p = %esp&0xfff
+
+ &cmp ($s3,$s1); # if (p>=e) %esp =- (p-e);
+ &jb (&label("tbl_break_out"));
+ &sub ($s3,$s1);
+ &sub ($acc,$s3);
+ &jmp (&label("tbl_ok"));
+ &set_label("tbl_break_out",4); # else %esp -= (p-s)&0xfff + framesz;
+ &sub ($s3,$s0);
+ &and ($s3,0xfff);
+ &add ($s3,384);
+ &sub ($acc,$s3);
+ &set_label("tbl_ok",4);
+
+ &lea ($s3,&wparam(0)); # obtain pointer to parameter block
+ &exch ("esp",$acc); # allocate stack frame
+ &add ("esp",4); # reserve for return address!
+ &mov ($_tbl,$tbl); # save %ebp
+ &mov ($_esp,$acc); # save %esp
+
+ &mov ($s0,&DWP(0,$s3)); # load inp
+ &mov ($s1,&DWP(4,$s3)); # load out
+ #&mov ($s2,&DWP(8,$s3)); # load len
+ &mov ($key,&DWP(12,$s3)); # load key
+ &mov ($acc,&DWP(16,$s3)); # load ivp
+ &mov ($s3,&DWP(20,$s3)); # load enc flag
+
+ &mov ($_inp,$s0); # save copy of inp
+ &mov ($_out,$s1); # save copy of out
+ &mov ($_len,$s2); # save copy of len
+ &mov ($_key,$key); # save copy of key
+ &mov ($_ivp,$acc); # save copy of ivp
+
+ &mov ($mark,0); # copy of aes_key->rounds = 0;
+ # do we copy key schedule to stack?
+ &mov ($s1 eq "ebx" ? $s1 : "",$key);
+ &mov ($s2 eq "ecx" ? $s2 : "",244/4);
+ &sub ($s1,$tbl);
+ &mov ("esi",$key);
+ &and ($s1,0xfff);
+ &lea ("edi",$aes_key);
+ &cmp ($s1,2048+256);
+ &jb (&label("do_copy"));
+ &cmp ($s1,4096-244);
+ &jb (&label("skip_copy"));
+ &set_label("do_copy",4);
+ &mov ($_key,"edi");
+ &data_word(0xA5F3F689); # rep movsd
+ &set_label("skip_copy");
+
+ &mov ($key,16);
+ &set_label("prefetch_tbl",4);
+ &mov ($s0,&DWP(0,$tbl));
+ &mov ($s1,&DWP(32,$tbl));
+ &mov ($s2,&DWP(64,$tbl));
+ &mov ($acc,&DWP(96,$tbl));
+ &lea ($tbl,&DWP(128,$tbl));
+ &sub ($key,1);
+ &jnz (&label("prefetch_tbl"));
+ &sub ($tbl,2048);
+
+ &mov ($acc,$_inp);
+ &mov ($key,$_ivp);
+
+ &cmp ($s3,0);
+ &je (&label("fast_decrypt"));
+
+#----------------------------- ENCRYPT -----------------------------#
+ &mov ($s0,&DWP(0,$key)); # load iv
+ &mov ($s1,&DWP(4,$key));
+
+ &set_label("fast_enc_loop",16);
+ &mov ($s2,&DWP(8,$key));
+ &mov ($s3,&DWP(12,$key));
+
+ &xor ($s0,&DWP(0,$acc)); # xor input data
+ &xor ($s1,&DWP(4,$acc));
+ &xor ($s2,&DWP(8,$acc));
+ &xor ($s3,&DWP(12,$acc));
+
+ &mov ($key,$_key); # load key
+ &call ("_x86_AES_encrypt");
+
+ &mov ($acc,$_inp); # load inp
+ &mov ($key,$_out); # load out
+
+ &mov (&DWP(0,$key),$s0); # save output data
+ &mov (&DWP(4,$key),$s1);
+ &mov (&DWP(8,$key),$s2);
+ &mov (&DWP(12,$key),$s3);
+
+ &lea ($acc,&DWP(16,$acc)); # advance inp
+ &mov ($s2,$_len); # load len
+ &mov ($_inp,$acc); # save inp
+ &lea ($s3,&DWP(16,$key)); # advance out
+ &mov ($_out,$s3); # save out
+ &sub ($s2,16); # decrease len
+ &mov ($_len,$s2); # save len
+ &jnz (&label("fast_enc_loop"));
+ &mov ($acc,$_ivp); # load ivp
+ &mov ($s2,&DWP(8,$key)); # restore last 2 dwords
+ &mov ($s3,&DWP(12,$key));
+ &mov (&DWP(0,$acc),$s0); # save ivec
+ &mov (&DWP(4,$acc),$s1);
+ &mov (&DWP(8,$acc),$s2);
+ &mov (&DWP(12,$acc),$s3);
+
+ &cmp ($mark,0); # was the key schedule copied?
+ &mov ("edi",$_key);
+ &je (&label("skip_ezero"));
+ # zero copy of key schedule
+ &mov ("ecx",240/4);
+ &xor ("eax","eax");
+ &align (4);
+ &data_word(0xABF3F689); # rep stosd
+ &set_label("skip_ezero")
+ &mov ("esp",$_esp);
+ &popf ();
+ &set_label("drop_out");
+ &function_end_A();
+ &pushf (); # kludge, never executed
+
+#----------------------------- DECRYPT -----------------------------#
+&set_label("fast_decrypt",16);
+
+ &cmp ($acc,$_out);
+ &je (&label("fast_dec_in_place")); # in-place processing...
+
+ &mov ($_tmp,$key);
+
+ &align (4);
+ &set_label("fast_dec_loop",16);
+ &mov ($s0,&DWP(0,$acc)); # read input
+ &mov ($s1,&DWP(4,$acc));
+ &mov ($s2,&DWP(8,$acc));
+ &mov ($s3,&DWP(12,$acc));
+
+ &mov ($key,$_key); # load key
+ &call ("_x86_AES_decrypt");
+
+ &mov ($key,$_tmp); # load ivp
+ &mov ($acc,$_len); # load len
+ &xor ($s0,&DWP(0,$key)); # xor iv
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &mov ($key,$_out); # load out
+ &mov ($acc,$_inp); # load inp
+
+ &mov (&DWP(0,$key),$s0); # write output
+ &mov (&DWP(4,$key),$s1);
+ &mov (&DWP(8,$key),$s2);
+ &mov (&DWP(12,$key),$s3);
+
+ &mov ($s2,$_len); # load len
+ &mov ($_tmp,$acc); # save ivp
+ &lea ($acc,&DWP(16,$acc)); # advance inp
+ &mov ($_inp,$acc); # save inp
+ &lea ($key,&DWP(16,$key)); # advance out
+ &mov ($_out,$key); # save out
+ &sub ($s2,16); # decrease len
+ &mov ($_len,$s2); # save len
+ &jnz (&label("fast_dec_loop"));
+ &mov ($key,$_tmp); # load temp ivp
+ &mov ($acc,$_ivp); # load user ivp
+ &mov ($s0,&DWP(0,$key)); # load iv
+ &mov ($s1,&DWP(4,$key));
+ &mov ($s2,&DWP(8,$key));
+ &mov ($s3,&DWP(12,$key));
+ &mov (&DWP(0,$acc),$s0); # copy back to user
+ &mov (&DWP(4,$acc),$s1);
+ &mov (&DWP(8,$acc),$s2);
+ &mov (&DWP(12,$acc),$s3);
+ &jmp (&label("fast_dec_out"));
+
+ &set_label("fast_dec_in_place",16);
+ &set_label("fast_dec_in_place_loop");
+ &mov ($s0,&DWP(0,$acc)); # read input
+ &mov ($s1,&DWP(4,$acc));
+ &mov ($s2,&DWP(8,$acc));
+ &mov ($s3,&DWP(12,$acc));
+
+ &lea ($key,$ivec);
+ &mov (&DWP(0,$key),$s0); # copy to temp
+ &mov (&DWP(4,$key),$s1);
+ &mov (&DWP(8,$key),$s2);
+ &mov (&DWP(12,$key),$s3);
+
+ &mov ($key,$_key); # load key
+ &call ("_x86_AES_decrypt");
+
+ &mov ($key,$_ivp); # load ivp
+ &mov ($acc,$_out); # load out
+ &xor ($s0,&DWP(0,$key)); # xor iv
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &mov (&DWP(0,$acc),$s0); # write output
+ &mov (&DWP(4,$acc),$s1);
+ &mov (&DWP(8,$acc),$s2);
+ &mov (&DWP(12,$acc),$s3);
+
+ &lea ($acc,&DWP(16,$acc)); # advance out
+ &mov ($_out,$acc); # save out
+
+ &lea ($acc,$ivec);
+ &mov ($s0,&DWP(0,$acc)); # read temp
+ &mov ($s1,&DWP(4,$acc));
+ &mov ($s2,&DWP(8,$acc));
+ &mov ($s3,&DWP(12,$acc));
+
+ &mov (&DWP(0,$key),$s0); # copy iv
+ &mov (&DWP(4,$key),$s1);
+ &mov (&DWP(8,$key),$s2);
+ &mov (&DWP(12,$key),$s3);
+
+ &mov ($acc,$_inp); # load inp
+ &mov ($s2,$_len); # load len
+ &lea ($acc,&DWP(16,$acc)); # advance inp
+ &mov ($_inp,$acc); # save inp
+ &sub ($s2,16); # decrease len
+ &mov ($_len,$s2); # save len
+ &jnz (&label("fast_dec_in_place_loop"));
+
+ &set_label("fast_dec_out",4);
+ &cmp ($mark,0); # was the key schedule copied?
+ &mov ("edi",$_key);
+ &je (&label("skip_dzero"));
+ # zero copy of key schedule
+ &mov ("ecx",240/4);
+ &xor ("eax","eax");
+ &align (4);
+ &data_word(0xABF3F689); # rep stosd
+ &set_label("skip_dzero")
+ &mov ("esp",$_esp);
+ &popf ();
+ &function_end_A();
+ &pushf (); # kludge, never executed
+
+#--------------------------- SLOW ROUTINE ---------------------------#
+&set_label("slow_way",16);
+
+ &mov ($s0,&DWP(0,$s0)) if (!$x86only);# load OPENSSL_ia32cap
+ &mov ($key,&wparam(3)); # load key
+
+ # pre-allocate aligned stack frame...
+ &lea ($acc,&DWP(-80,"esp"));
+ &and ($acc,-64);
+
+ # ... and make sure it doesn't alias with $key modulo 1024
+ &lea ($s1,&DWP(-80-63,$key));
+ &sub ($s1,$acc);
+ &neg ($s1);
+ &and ($s1,0x3C0); # modulo 1024, but aligned to cache-line
+ &sub ($acc,$s1);
+
+ # pick S-box copy which can't overlap with stack frame or $key
+ &lea ($s1,&DWP(768,$acc));
+ &sub ($s1,$tbl);
+ &and ($s1,0x300);
+ &lea ($tbl,&DWP(2048+128,$tbl,$s1));
+
+ &lea ($s3,&wparam(0)); # pointer to parameter block
+
+ &exch ("esp",$acc);
+ &add ("esp",4); # reserve for return address!
+ &mov ($_tbl,$tbl); # save %ebp
+ &mov ($_esp,$acc); # save %esp
+ &mov ($_tmp,$s0); # save OPENSSL_ia32cap
+
+ &mov ($s0,&DWP(0,$s3)); # load inp
+ &mov ($s1,&DWP(4,$s3)); # load out
+ #&mov ($s2,&DWP(8,$s3)); # load len
+ #&mov ($key,&DWP(12,$s3)); # load key
+ &mov ($acc,&DWP(16,$s3)); # load ivp
+ &mov ($s3,&DWP(20,$s3)); # load enc flag
+
+ &mov ($_inp,$s0); # save copy of inp
+ &mov ($_out,$s1); # save copy of out
+ &mov ($_len,$s2); # save copy of len
+ &mov ($_key,$key); # save copy of key
+ &mov ($_ivp,$acc); # save copy of ivp
+
+ &mov ($key,$acc);
+ &mov ($acc,$s0);
+
+ &cmp ($s3,0);
+ &je (&label("slow_decrypt"));
+
+#--------------------------- SLOW ENCRYPT ---------------------------#
+ &cmp ($s2,16);
+ &mov ($s3,$s1);
+ &jb (&label("slow_enc_tail"));
+
+ if (!$x86only) {
+ &bt ($_tmp,25); # check for SSE bit
+ &jnc (&label("slow_enc_x86"));
+
+ &movq ("mm0",&QWP(0,$key)); # load iv
+ &movq ("mm4",&QWP(8,$key));
+
+ &set_label("slow_enc_loop_sse",16);
+ &pxor ("mm0",&QWP(0,$acc)); # xor input data
+ &pxor ("mm4",&QWP(8,$acc));
+
+ &mov ($key,$_key);
+ &call ("_sse_AES_encrypt_compact");
+
+ &mov ($acc,$_inp); # load inp
+ &mov ($key,$_out); # load out
+ &mov ($s2,$_len); # load len
+
+ &movq (&QWP(0,$key),"mm0"); # save output data
+ &movq (&QWP(8,$key),"mm4");
+
+ &lea ($acc,&DWP(16,$acc)); # advance inp
+ &mov ($_inp,$acc); # save inp
+ &lea ($s3,&DWP(16,$key)); # advance out
+ &mov ($_out,$s3); # save out
+ &sub ($s2,16); # decrease len
+ &cmp ($s2,16);
+ &mov ($_len,$s2); # save len
+ &jae (&label("slow_enc_loop_sse"));
+ &test ($s2,15);
+ &jnz (&label("slow_enc_tail"));
+ &mov ($acc,$_ivp); # load ivp
+ &movq (&QWP(0,$acc),"mm0"); # save ivec
+ &movq (&QWP(8,$acc),"mm4");
+ &emms ();
+ &mov ("esp",$_esp);
+ &popf ();
+ &function_end_A();
+ &pushf (); # kludge, never executed
+ }
+ &set_label("slow_enc_x86",16);
+ &mov ($s0,&DWP(0,$key)); # load iv
+ &mov ($s1,&DWP(4,$key));
+
+ &set_label("slow_enc_loop_x86",4);
+ &mov ($s2,&DWP(8,$key));
+ &mov ($s3,&DWP(12,$key));
+
+ &xor ($s0,&DWP(0,$acc)); # xor input data
+ &xor ($s1,&DWP(4,$acc));
+ &xor ($s2,&DWP(8,$acc));
+ &xor ($s3,&DWP(12,$acc));
+
+ &mov ($key,$_key); # load key
+ &call ("_x86_AES_encrypt_compact");
+
+ &mov ($acc,$_inp); # load inp
+ &mov ($key,$_out); # load out
+
+ &mov (&DWP(0,$key),$s0); # save output data
+ &mov (&DWP(4,$key),$s1);
+ &mov (&DWP(8,$key),$s2);
+ &mov (&DWP(12,$key),$s3);
+
+ &mov ($s2,$_len); # load len
+ &lea ($acc,&DWP(16,$acc)); # advance inp
+ &mov ($_inp,$acc); # save inp
+ &lea ($s3,&DWP(16,$key)); # advance out
+ &mov ($_out,$s3); # save out
+ &sub ($s2,16); # decrease len
+ &cmp ($s2,16);
+ &mov ($_len,$s2); # save len
+ &jae (&label("slow_enc_loop_x86"));
+ &test ($s2,15);
+ &jnz (&label("slow_enc_tail"));
+ &mov ($acc,$_ivp); # load ivp
+ &mov ($s2,&DWP(8,$key)); # restore last dwords
+ &mov ($s3,&DWP(12,$key));
+ &mov (&DWP(0,$acc),$s0); # save ivec
+ &mov (&DWP(4,$acc),$s1);
+ &mov (&DWP(8,$acc),$s2);
+ &mov (&DWP(12,$acc),$s3);
+
+ &mov ("esp",$_esp);
+ &popf ();
+ &function_end_A();
+ &pushf (); # kludge, never executed
+
+ &set_label("slow_enc_tail",16);
+ &emms () if (!$x86only);
+ &mov ($key eq "edi"? $key:"",$s3); # load out to edi
+ &mov ($s1,16);
+ &sub ($s1,$s2);
+ &cmp ($key,$acc eq "esi"? $acc:""); # compare with inp
+ &je (&label("enc_in_place"));
+ &align (4);
+ &data_word(0xA4F3F689); # rep movsb # copy input
+ &jmp (&label("enc_skip_in_place"));
+ &set_label("enc_in_place");
+ &lea ($key,&DWP(0,$key,$s2));
+ &set_label("enc_skip_in_place");
+ &mov ($s2,$s1);
+ &xor ($s0,$s0);
+ &align (4);
+ &data_word(0xAAF3F689); # rep stosb # zero tail
+
+ &mov ($key,$_ivp); # restore ivp
+ &mov ($acc,$s3); # output as input
+ &mov ($s0,&DWP(0,$key));
+ &mov ($s1,&DWP(4,$key));
+ &mov ($_len,16); # len=16
+ &jmp (&label("slow_enc_loop_x86")); # one more spin...
+
+#--------------------------- SLOW DECRYPT ---------------------------#
+&set_label("slow_decrypt",16);
+ if (!$x86only) {
+ &bt ($_tmp,25); # check for SSE bit
+ &jnc (&label("slow_dec_loop_x86"));
+
+ &set_label("slow_dec_loop_sse",4);
+ &movq ("mm0",&QWP(0,$acc)); # read input
+ &movq ("mm4",&QWP(8,$acc));
+
+ &mov ($key,$_key);
+ &call ("_sse_AES_decrypt_compact");
+
+ &mov ($acc,$_inp); # load inp
+ &lea ($s0,$ivec);
+ &mov ($s1,$_out); # load out
+ &mov ($s2,$_len); # load len
+ &mov ($key,$_ivp); # load ivp
+
+ &movq ("mm1",&QWP(0,$acc)); # re-read input
+ &movq ("mm5",&QWP(8,$acc));
+
+ &pxor ("mm0",&QWP(0,$key)); # xor iv
+ &pxor ("mm4",&QWP(8,$key));
+
+ &movq (&QWP(0,$key),"mm1"); # copy input to iv
+ &movq (&QWP(8,$key),"mm5");
+
+ &sub ($s2,16); # decrease len
+ &jc (&label("slow_dec_partial_sse"));
+
+ &movq (&QWP(0,$s1),"mm0"); # write output
+ &movq (&QWP(8,$s1),"mm4");
+
+ &lea ($s1,&DWP(16,$s1)); # advance out
+ &mov ($_out,$s1); # save out
+ &lea ($acc,&DWP(16,$acc)); # advance inp
+ &mov ($_inp,$acc); # save inp
+ &mov ($_len,$s2); # save len
+ &jnz (&label("slow_dec_loop_sse"));
+ &emms ();
+ &mov ("esp",$_esp);
+ &popf ();
+ &function_end_A();
+ &pushf (); # kludge, never executed
+
+ &set_label("slow_dec_partial_sse",16);
+ &movq (&QWP(0,$s0),"mm0"); # save output to temp
+ &movq (&QWP(8,$s0),"mm4");
+ &emms ();
+
+ &add ($s2 eq "ecx" ? "ecx":"",16);
+ &mov ("edi",$s1); # out
+ &mov ("esi",$s0); # temp
+ &align (4);
+ &data_word(0xA4F3F689); # rep movsb # copy partial output
+
+ &mov ("esp",$_esp);
+ &popf ();
+ &function_end_A();
+ &pushf (); # kludge, never executed
+ }
+ &set_label("slow_dec_loop_x86",16);
+ &mov ($s0,&DWP(0,$acc)); # read input
+ &mov ($s1,&DWP(4,$acc));
+ &mov ($s2,&DWP(8,$acc));
+ &mov ($s3,&DWP(12,$acc));
+
+ &lea ($key,$ivec);
+ &mov (&DWP(0,$key),$s0); # copy to temp
+ &mov (&DWP(4,$key),$s1);
+ &mov (&DWP(8,$key),$s2);
+ &mov (&DWP(12,$key),$s3);
+
+ &mov ($key,$_key); # load key
+ &call ("_x86_AES_decrypt_compact");
+
+ &mov ($key,$_ivp); # load ivp
+ &mov ($acc,$_len); # load len
+ &xor ($s0,&DWP(0,$key)); # xor iv
+ &xor ($s1,&DWP(4,$key));
+ &xor ($s2,&DWP(8,$key));
+ &xor ($s3,&DWP(12,$key));
+
+ &sub ($acc,16);
+ &jc (&label("slow_dec_partial_x86"));
+
+ &mov ($_len,$acc); # save len
+ &mov ($acc,$_out); # load out
+
+ &mov (&DWP(0,$acc),$s0); # write output
+ &mov (&DWP(4,$acc),$s1);
+ &mov (&DWP(8,$acc),$s2);
+ &mov (&DWP(12,$acc),$s3);
+
+ &lea ($acc,&DWP(16,$acc)); # advance out
+ &mov ($_out,$acc); # save out
+
+ &lea ($acc,$ivec);
+ &mov ($s0,&DWP(0,$acc)); # read temp
+ &mov ($s1,&DWP(4,$acc));
+ &mov ($s2,&DWP(8,$acc));
+ &mov ($s3,&DWP(12,$acc));
+
+ &mov (&DWP(0,$key),$s0); # copy it to iv
+ &mov (&DWP(4,$key),$s1);
+ &mov (&DWP(8,$key),$s2);
+ &mov (&DWP(12,$key),$s3);
+
+ &mov ($acc,$_inp); # load inp
+ &lea ($acc,&DWP(16,$acc)); # advance inp
+ &mov ($_inp,$acc); # save inp
+ &jnz (&label("slow_dec_loop_x86"));
+ &mov ("esp",$_esp);
+ &popf ();
+ &function_end_A();
+ &pushf (); # kludge, never executed
+
+ &set_label("slow_dec_partial_x86",16);
+ &lea ($acc,$ivec);
+ &mov (&DWP(0,$acc),$s0); # save output to temp
+ &mov (&DWP(4,$acc),$s1);
+ &mov (&DWP(8,$acc),$s2);
+ &mov (&DWP(12,$acc),$s3);
+
+ &mov ($acc,$_inp);
+ &mov ($s0,&DWP(0,$acc)); # re-read input
+ &mov ($s1,&DWP(4,$acc));
+ &mov ($s2,&DWP(8,$acc));
+ &mov ($s3,&DWP(12,$acc));
+
+ &mov (&DWP(0,$key),$s0); # copy it to iv
+ &mov (&DWP(4,$key),$s1);
+ &mov (&DWP(8,$key),$s2);
+ &mov (&DWP(12,$key),$s3);
+
+ &mov ("ecx",$_len);
+ &mov ("edi",$_out);
+ &lea ("esi",$ivec);
+ &align (4);
+ &data_word(0xA4F3F689); # rep movsb # copy partial output
+
+ &mov ("esp",$_esp);
+ &popf ();
+&function_end("AES_cbc_encrypt");
+}
+
+#------------------------------------------------------------------#
+
+sub enckey()
+{
+ &movz ("esi",&LB("edx")); # rk[i]>>0
+ &movz ("ebx",&BP(-128,$tbl,"esi",1));
+ &movz ("esi",&HB("edx")); # rk[i]>>8
+ &shl ("ebx",24);
+ &xor ("eax","ebx");
+
+ &movz ("ebx",&BP(-128,$tbl,"esi",1));
+ &shr ("edx",16);
+ &movz ("esi",&LB("edx")); # rk[i]>>16
+ &xor ("eax","ebx");
+
+ &movz ("ebx",&BP(-128,$tbl,"esi",1));
+ &movz ("esi",&HB("edx")); # rk[i]>>24
+ &shl ("ebx",8);
+ &xor ("eax","ebx");
+
+ &movz ("ebx",&BP(-128,$tbl,"esi",1));
+ &shl ("ebx",16);
+ &xor ("eax","ebx");
+
+ &xor ("eax",&DWP(1024-128,$tbl,"ecx",4)); # rcon
+}
+
+&function_begin("_x86_AES_set_encrypt_key");
+ &mov ("esi",&wparam(1)); # user supplied key
+ &mov ("edi",&wparam(3)); # private key schedule
+
+ &test ("esi",-1);
+ &jz (&label("badpointer"));
+ &test ("edi",-1);
+ &jz (&label("badpointer"));
+
+ &call (&label("pic_point"));
+ &set_label("pic_point");
+ &blindpop($tbl);
+ &lea ($tbl,&DWP(&label("AES_Te")."-".&label("pic_point"),$tbl));
+ &lea ($tbl,&DWP(2048+128,$tbl));
+
+ # prefetch Te4
+ &mov ("eax",&DWP(0-128,$tbl));
+ &mov ("ebx",&DWP(32-128,$tbl));
+ &mov ("ecx",&DWP(64-128,$tbl));
+ &mov ("edx",&DWP(96-128,$tbl));
+ &mov ("eax",&DWP(128-128,$tbl));
+ &mov ("ebx",&DWP(160-128,$tbl));
+ &mov ("ecx",&DWP(192-128,$tbl));
+ &mov ("edx",&DWP(224-128,$tbl));
+
+ &mov ("ecx",&wparam(2)); # number of bits in key
+ &cmp ("ecx",128);
+ &je (&label("10rounds"));
+ &cmp ("ecx",192);
+ &je (&label("12rounds"));
+ &cmp ("ecx",256);
+ &je (&label("14rounds"));
+ &mov ("eax",-2); # invalid number of bits
+ &jmp (&label("exit"));
+
+ &set_label("10rounds");
+ &mov ("eax",&DWP(0,"esi")); # copy first 4 dwords
+ &mov ("ebx",&DWP(4,"esi"));
+ &mov ("ecx",&DWP(8,"esi"));
+ &mov ("edx",&DWP(12,"esi"));
+ &mov (&DWP(0,"edi"),"eax");
+ &mov (&DWP(4,"edi"),"ebx");
+ &mov (&DWP(8,"edi"),"ecx");
+ &mov (&DWP(12,"edi"),"edx");
+
+ &xor ("ecx","ecx");
+ &jmp (&label("10shortcut"));
+
+ &align (4);
+ &set_label("10loop");
+ &mov ("eax",&DWP(0,"edi")); # rk[0]
+ &mov ("edx",&DWP(12,"edi")); # rk[3]
+ &set_label("10shortcut");
+ &enckey ();
+
+ &mov (&DWP(16,"edi"),"eax"); # rk[4]
+ &xor ("eax",&DWP(4,"edi"));
+ &mov (&DWP(20,"edi"),"eax"); # rk[5]
+ &xor ("eax",&DWP(8,"edi"));
+ &mov (&DWP(24,"edi"),"eax"); # rk[6]
+ &xor ("eax",&DWP(12,"edi"));
+ &mov (&DWP(28,"edi"),"eax"); # rk[7]
+ &inc ("ecx");
+ &add ("edi",16);
+ &cmp ("ecx",10);
+ &jl (&label("10loop"));
+
+ &mov (&DWP(80,"edi"),10); # setup number of rounds
+ &xor ("eax","eax");
+ &jmp (&label("exit"));
+
+ &set_label("12rounds");
+ &mov ("eax",&DWP(0,"esi")); # copy first 6 dwords
+ &mov ("ebx",&DWP(4,"esi"));
+ &mov ("ecx",&DWP(8,"esi"));
+ &mov ("edx",&DWP(12,"esi"));
+ &mov (&DWP(0,"edi"),"eax");
+ &mov (&DWP(4,"edi"),"ebx");
+ &mov (&DWP(8,"edi"),"ecx");
+ &mov (&DWP(12,"edi"),"edx");
+ &mov ("ecx",&DWP(16,"esi"));
+ &mov ("edx",&DWP(20,"esi"));
+ &mov (&DWP(16,"edi"),"ecx");
+ &mov (&DWP(20,"edi"),"edx");
+
+ &xor ("ecx","ecx");
+ &jmp (&label("12shortcut"));
+
+ &align (4);
+ &set_label("12loop");
+ &mov ("eax",&DWP(0,"edi")); # rk[0]
+ &mov ("edx",&DWP(20,"edi")); # rk[5]
+ &set_label("12shortcut");
+ &enckey ();
+
+ &mov (&DWP(24,"edi"),"eax"); # rk[6]
+ &xor ("eax",&DWP(4,"edi"));
+ &mov (&DWP(28,"edi"),"eax"); # rk[7]
+ &xor ("eax",&DWP(8,"edi"));
+ &mov (&DWP(32,"edi"),"eax"); # rk[8]
+ &xor ("eax",&DWP(12,"edi"));
+ &mov (&DWP(36,"edi"),"eax"); # rk[9]
+
+ &cmp ("ecx",7);
+ &je (&label("12break"));
+ &inc ("ecx");
+
+ &xor ("eax",&DWP(16,"edi"));
+ &mov (&DWP(40,"edi"),"eax"); # rk[10]
+ &xor ("eax",&DWP(20,"edi"));
+ &mov (&DWP(44,"edi"),"eax"); # rk[11]
+
+ &add ("edi",24);
+ &jmp (&label("12loop"));
+
+ &set_label("12break");
+ &mov (&DWP(72,"edi"),12); # setup number of rounds
+ &xor ("eax","eax");
+ &jmp (&label("exit"));
+
+ &set_label("14rounds");
+ &mov ("eax",&DWP(0,"esi")); # copy first 8 dwords
+ &mov ("ebx",&DWP(4,"esi"));
+ &mov ("ecx",&DWP(8,"esi"));
+ &mov ("edx",&DWP(12,"esi"));
+ &mov (&DWP(0,"edi"),"eax");
+ &mov (&DWP(4,"edi"),"ebx");
+ &mov (&DWP(8,"edi"),"ecx");
+ &mov (&DWP(12,"edi"),"edx");
+ &mov ("eax",&DWP(16,"esi"));
+ &mov ("ebx",&DWP(20,"esi"));
+ &mov ("ecx",&DWP(24,"esi"));
+ &mov ("edx",&DWP(28,"esi"));
+ &mov (&DWP(16,"edi"),"eax");
+ &mov (&DWP(20,"edi"),"ebx");
+ &mov (&DWP(24,"edi"),"ecx");
+ &mov (&DWP(28,"edi"),"edx");
+
+ &xor ("ecx","ecx");
+ &jmp (&label("14shortcut"));
+
+ &align (4);
+ &set_label("14loop");
+ &mov ("edx",&DWP(28,"edi")); # rk[7]
+ &set_label("14shortcut");
+ &mov ("eax",&DWP(0,"edi")); # rk[0]
+
+ &enckey ();
+
+ &mov (&DWP(32,"edi"),"eax"); # rk[8]
+ &xor ("eax",&DWP(4,"edi"));
+ &mov (&DWP(36,"edi"),"eax"); # rk[9]
+ &xor ("eax",&DWP(8,"edi"));
+ &mov (&DWP(40,"edi"),"eax"); # rk[10]
+ &xor ("eax",&DWP(12,"edi"));
+ &mov (&DWP(44,"edi"),"eax"); # rk[11]
+
+ &cmp ("ecx",6);
+ &je (&label("14break"));
+ &inc ("ecx");
+
+ &mov ("edx","eax");
+ &mov ("eax",&DWP(16,"edi")); # rk[4]
+ &movz ("esi",&LB("edx")); # rk[11]>>0
+ &movz ("ebx",&BP(-128,$tbl,"esi",1));
+ &movz ("esi",&HB("edx")); # rk[11]>>8
+ &xor ("eax","ebx");
+
+ &movz ("ebx",&BP(-128,$tbl,"esi",1));
+ &shr ("edx",16);
+ &shl ("ebx",8);
+ &movz ("esi",&LB("edx")); # rk[11]>>16
+ &xor ("eax","ebx");
+
+ &movz ("ebx",&BP(-128,$tbl,"esi",1));
+ &movz ("esi",&HB("edx")); # rk[11]>>24
+ &shl ("ebx",16);
+ &xor ("eax","ebx");
+
+ &movz ("ebx",&BP(-128,$tbl,"esi",1));
+ &shl ("ebx",24);
+ &xor ("eax","ebx");
+
+ &mov (&DWP(48,"edi"),"eax"); # rk[12]
+ &xor ("eax",&DWP(20,"edi"));
+ &mov (&DWP(52,"edi"),"eax"); # rk[13]
+ &xor ("eax",&DWP(24,"edi"));
+ &mov (&DWP(56,"edi"),"eax"); # rk[14]
+ &xor ("eax",&DWP(28,"edi"));
+ &mov (&DWP(60,"edi"),"eax"); # rk[15]
+
+ &add ("edi",32);
+ &jmp (&label("14loop"));
+
+ &set_label("14break");
+ &mov (&DWP(48,"edi"),14); # setup number of rounds
+ &xor ("eax","eax");
+ &jmp (&label("exit"));
+
+ &set_label("badpointer");
+ &mov ("eax",-1);
+ &set_label("exit");
+&function_end("_x86_AES_set_encrypt_key");
+
+# int AES_set_encrypt_key(const unsigned char *userKey, const int bits,
+# AES_KEY *key)
+&function_begin_B("AES_set_encrypt_key");
+ &call ("_x86_AES_set_encrypt_key");
+ &ret ();
+&function_end_B("AES_set_encrypt_key");
+
+sub deckey()
+{ my ($i,$key,$tp1,$tp2,$tp4,$tp8) = @_;
+ my $tmp = $tbl;
+
+ &mov ($acc,$tp1);
+ &and ($acc,0x80808080);
+ &mov ($tmp,$acc);
+ &shr ($tmp,7);
+ &lea ($tp2,&DWP(0,$tp1,$tp1));
+ &sub ($acc,$tmp);
+ &and ($tp2,0xfefefefe);
+ &and ($acc,0x1b1b1b1b);
+ &xor ($acc,$tp2);
+ &mov ($tp2,$acc);
+
+ &and ($acc,0x80808080);
+ &mov ($tmp,$acc);
+ &shr ($tmp,7);
+ &lea ($tp4,&DWP(0,$tp2,$tp2));
+ &sub ($acc,$tmp);
+ &and ($tp4,0xfefefefe);
+ &and ($acc,0x1b1b1b1b);
+ &xor ($tp2,$tp1); # tp2^tp1
+ &xor ($acc,$tp4);
+ &mov ($tp4,$acc);
+
+ &and ($acc,0x80808080);
+ &mov ($tmp,$acc);
+ &shr ($tmp,7);
+ &lea ($tp8,&DWP(0,$tp4,$tp4));
+ &xor ($tp4,$tp1); # tp4^tp1
+ &sub ($acc,$tmp);
+ &and ($tp8,0xfefefefe);
+ &and ($acc,0x1b1b1b1b);
+ &rotl ($tp1,8); # = ROTATE(tp1,8)
+ &xor ($tp8,$acc);
+
+ &mov ($tmp,&DWP(4*($i+1),$key)); # modulo-scheduled load
+
+ &xor ($tp1,$tp2);
+ &xor ($tp2,$tp8);
+ &xor ($tp1,$tp4);
+ &rotl ($tp2,24);
+ &xor ($tp4,$tp8);
+ &xor ($tp1,$tp8); # ^= tp8^(tp4^tp1)^(tp2^tp1)
+ &rotl ($tp4,16);
+ &xor ($tp1,$tp2); # ^= ROTATE(tp8^tp2^tp1,24)
+ &rotl ($tp8,8);
+ &xor ($tp1,$tp4); # ^= ROTATE(tp8^tp4^tp1,16)
+ &mov ($tp2,$tmp);
+ &xor ($tp1,$tp8); # ^= ROTATE(tp8,8)
+
+ &mov (&DWP(4*$i,$key),$tp1);
+}
+
+# int AES_set_decrypt_key(const unsigned char *userKey, const int bits,
+# AES_KEY *key)
+&function_begin_B("AES_set_decrypt_key");
+ &call ("_x86_AES_set_encrypt_key");
+ &cmp ("eax",0);
+ &je (&label("proceed"));
+ &ret ();
+
+ &set_label("proceed");
+ &push ("ebp");
+ &push ("ebx");
+ &push ("esi");
+ &push ("edi");
+
+ &mov ("esi",&wparam(2));
+ &mov ("ecx",&DWP(240,"esi")); # pull number of rounds
+ &lea ("ecx",&DWP(0,"","ecx",4));
+ &lea ("edi",&DWP(0,"esi","ecx",4)); # pointer to last chunk
+
+ &set_label("invert",4); # invert order of chunks
+ &mov ("eax",&DWP(0,"esi"));
+ &mov ("ebx",&DWP(4,"esi"));
+ &mov ("ecx",&DWP(0,"edi"));
+ &mov ("edx",&DWP(4,"edi"));
+ &mov (&DWP(0,"edi"),"eax");
+ &mov (&DWP(4,"edi"),"ebx");
+ &mov (&DWP(0,"esi"),"ecx");
+ &mov (&DWP(4,"esi"),"edx");
+ &mov ("eax",&DWP(8,"esi"));
+ &mov ("ebx",&DWP(12,"esi"));
+ &mov ("ecx",&DWP(8,"edi"));
+ &mov ("edx",&DWP(12,"edi"));
+ &mov (&DWP(8,"edi"),"eax");
+ &mov (&DWP(12,"edi"),"ebx");
+ &mov (&DWP(8,"esi"),"ecx");
+ &mov (&DWP(12,"esi"),"edx");
+ &add ("esi",16);
+ &sub ("edi",16);
+ &cmp ("esi","edi");
+ &jne (&label("invert"));
+
+ &mov ($key,&wparam(2));
+ &mov ($acc,&DWP(240,$key)); # pull number of rounds
+ &lea ($acc,&DWP(-2,$acc,$acc));
+ &lea ($acc,&DWP(0,$key,$acc,8));
+ &mov (&wparam(2),$acc);
+
+ &mov ($s0,&DWP(16,$key)); # modulo-scheduled load
+ &set_label("permute",4); # permute the key schedule
+ &add ($key,16);
+ &deckey (0,$key,$s0,$s1,$s2,$s3);
+ &deckey (1,$key,$s1,$s2,$s3,$s0);
+ &deckey (2,$key,$s2,$s3,$s0,$s1);
+ &deckey (3,$key,$s3,$s0,$s1,$s2);
+ &cmp ($key,&wparam(2));
+ &jb (&label("permute"));
+
+ &xor ("eax","eax"); # return success
+&function_end("AES_set_decrypt_key");
+&asciz("AES for x86, CRYPTOGAMS by <appro\@openssl.org>");
+
+&asm_finish();