ring-native 0.0.0 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (267) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/CHANGES.md +7 -0
  4. data/Makefile +5 -0
  5. data/README.md +12 -5
  6. data/Rakefile +4 -0
  7. data/ext/ring/extconf.rb +4 -5
  8. data/lib/ring/native.rb +3 -1
  9. data/lib/ring/native/version.rb +5 -1
  10. data/ring-native.gemspec +6 -6
  11. data/vendor/ring-ffi/Cargo.lock +26 -0
  12. data/vendor/ring-ffi/Cargo.toml +45 -0
  13. data/vendor/ring-ffi/LICENSE +16 -0
  14. data/vendor/ring-ffi/README.md +59 -0
  15. data/vendor/ring-ffi/src/lib.rs +79 -0
  16. metadata +10 -255
  17. data/vendor/ring/BUILDING.md +0 -40
  18. data/vendor/ring/Cargo.toml +0 -43
  19. data/vendor/ring/LICENSE +0 -185
  20. data/vendor/ring/Makefile +0 -35
  21. data/vendor/ring/PORTING.md +0 -163
  22. data/vendor/ring/README.md +0 -113
  23. data/vendor/ring/STYLE.md +0 -197
  24. data/vendor/ring/appveyor.yml +0 -27
  25. data/vendor/ring/build.rs +0 -108
  26. data/vendor/ring/crypto/aes/aes.c +0 -1142
  27. data/vendor/ring/crypto/aes/aes_test.Windows.vcxproj +0 -25
  28. data/vendor/ring/crypto/aes/aes_test.cc +0 -93
  29. data/vendor/ring/crypto/aes/asm/aes-586.pl +0 -2368
  30. data/vendor/ring/crypto/aes/asm/aes-armv4.pl +0 -1249
  31. data/vendor/ring/crypto/aes/asm/aes-x86_64.pl +0 -2246
  32. data/vendor/ring/crypto/aes/asm/aesni-x86.pl +0 -1318
  33. data/vendor/ring/crypto/aes/asm/aesni-x86_64.pl +0 -2084
  34. data/vendor/ring/crypto/aes/asm/aesv8-armx.pl +0 -675
  35. data/vendor/ring/crypto/aes/asm/bsaes-armv7.pl +0 -1364
  36. data/vendor/ring/crypto/aes/asm/bsaes-x86_64.pl +0 -1565
  37. data/vendor/ring/crypto/aes/asm/vpaes-x86.pl +0 -841
  38. data/vendor/ring/crypto/aes/asm/vpaes-x86_64.pl +0 -1116
  39. data/vendor/ring/crypto/aes/internal.h +0 -87
  40. data/vendor/ring/crypto/aes/mode_wrappers.c +0 -61
  41. data/vendor/ring/crypto/bn/add.c +0 -394
  42. data/vendor/ring/crypto/bn/asm/armv4-mont.pl +0 -694
  43. data/vendor/ring/crypto/bn/asm/armv8-mont.pl +0 -1503
  44. data/vendor/ring/crypto/bn/asm/bn-586.pl +0 -774
  45. data/vendor/ring/crypto/bn/asm/co-586.pl +0 -287
  46. data/vendor/ring/crypto/bn/asm/rsaz-avx2.pl +0 -1882
  47. data/vendor/ring/crypto/bn/asm/x86-mont.pl +0 -592
  48. data/vendor/ring/crypto/bn/asm/x86_64-gcc.c +0 -599
  49. data/vendor/ring/crypto/bn/asm/x86_64-mont.pl +0 -1393
  50. data/vendor/ring/crypto/bn/asm/x86_64-mont5.pl +0 -3507
  51. data/vendor/ring/crypto/bn/bn.c +0 -352
  52. data/vendor/ring/crypto/bn/bn_asn1.c +0 -74
  53. data/vendor/ring/crypto/bn/bn_test.Windows.vcxproj +0 -25
  54. data/vendor/ring/crypto/bn/bn_test.cc +0 -1696
  55. data/vendor/ring/crypto/bn/cmp.c +0 -200
  56. data/vendor/ring/crypto/bn/convert.c +0 -433
  57. data/vendor/ring/crypto/bn/ctx.c +0 -311
  58. data/vendor/ring/crypto/bn/div.c +0 -594
  59. data/vendor/ring/crypto/bn/exponentiation.c +0 -1335
  60. data/vendor/ring/crypto/bn/gcd.c +0 -711
  61. data/vendor/ring/crypto/bn/generic.c +0 -1019
  62. data/vendor/ring/crypto/bn/internal.h +0 -316
  63. data/vendor/ring/crypto/bn/montgomery.c +0 -516
  64. data/vendor/ring/crypto/bn/mul.c +0 -888
  65. data/vendor/ring/crypto/bn/prime.c +0 -829
  66. data/vendor/ring/crypto/bn/random.c +0 -334
  67. data/vendor/ring/crypto/bn/rsaz_exp.c +0 -262
  68. data/vendor/ring/crypto/bn/rsaz_exp.h +0 -53
  69. data/vendor/ring/crypto/bn/shift.c +0 -276
  70. data/vendor/ring/crypto/bytestring/bytestring_test.Windows.vcxproj +0 -25
  71. data/vendor/ring/crypto/bytestring/bytestring_test.cc +0 -421
  72. data/vendor/ring/crypto/bytestring/cbb.c +0 -399
  73. data/vendor/ring/crypto/bytestring/cbs.c +0 -227
  74. data/vendor/ring/crypto/bytestring/internal.h +0 -46
  75. data/vendor/ring/crypto/chacha/chacha_generic.c +0 -140
  76. data/vendor/ring/crypto/chacha/chacha_vec.c +0 -323
  77. data/vendor/ring/crypto/chacha/chacha_vec_arm.S +0 -1447
  78. data/vendor/ring/crypto/chacha/chacha_vec_arm_generate.go +0 -153
  79. data/vendor/ring/crypto/cipher/cipher_test.Windows.vcxproj +0 -25
  80. data/vendor/ring/crypto/cipher/e_aes.c +0 -390
  81. data/vendor/ring/crypto/cipher/e_chacha20poly1305.c +0 -208
  82. data/vendor/ring/crypto/cipher/internal.h +0 -173
  83. data/vendor/ring/crypto/cipher/test/aes_128_gcm_tests.txt +0 -543
  84. data/vendor/ring/crypto/cipher/test/aes_128_key_wrap_tests.txt +0 -9
  85. data/vendor/ring/crypto/cipher/test/aes_256_gcm_tests.txt +0 -475
  86. data/vendor/ring/crypto/cipher/test/aes_256_key_wrap_tests.txt +0 -23
  87. data/vendor/ring/crypto/cipher/test/chacha20_poly1305_old_tests.txt +0 -422
  88. data/vendor/ring/crypto/cipher/test/chacha20_poly1305_tests.txt +0 -484
  89. data/vendor/ring/crypto/cipher/test/cipher_test.txt +0 -100
  90. data/vendor/ring/crypto/constant_time_test.Windows.vcxproj +0 -25
  91. data/vendor/ring/crypto/constant_time_test.c +0 -304
  92. data/vendor/ring/crypto/cpu-arm-asm.S +0 -32
  93. data/vendor/ring/crypto/cpu-arm.c +0 -199
  94. data/vendor/ring/crypto/cpu-intel.c +0 -261
  95. data/vendor/ring/crypto/crypto.c +0 -151
  96. data/vendor/ring/crypto/curve25519/asm/x25519-arm.S +0 -2118
  97. data/vendor/ring/crypto/curve25519/curve25519.c +0 -4888
  98. data/vendor/ring/crypto/curve25519/x25519_test.cc +0 -128
  99. data/vendor/ring/crypto/digest/md32_common.h +0 -181
  100. data/vendor/ring/crypto/ec/asm/p256-x86_64-asm.pl +0 -2725
  101. data/vendor/ring/crypto/ec/ec.c +0 -193
  102. data/vendor/ring/crypto/ec/ec_curves.c +0 -61
  103. data/vendor/ring/crypto/ec/ec_key.c +0 -228
  104. data/vendor/ring/crypto/ec/ec_montgomery.c +0 -114
  105. data/vendor/ring/crypto/ec/example_mul.Windows.vcxproj +0 -25
  106. data/vendor/ring/crypto/ec/internal.h +0 -243
  107. data/vendor/ring/crypto/ec/oct.c +0 -253
  108. data/vendor/ring/crypto/ec/p256-64.c +0 -1794
  109. data/vendor/ring/crypto/ec/p256-x86_64-table.h +0 -9548
  110. data/vendor/ring/crypto/ec/p256-x86_64.c +0 -509
  111. data/vendor/ring/crypto/ec/simple.c +0 -1007
  112. data/vendor/ring/crypto/ec/util-64.c +0 -183
  113. data/vendor/ring/crypto/ec/wnaf.c +0 -508
  114. data/vendor/ring/crypto/ecdh/ecdh.c +0 -155
  115. data/vendor/ring/crypto/ecdsa/ecdsa.c +0 -304
  116. data/vendor/ring/crypto/ecdsa/ecdsa_asn1.c +0 -193
  117. data/vendor/ring/crypto/ecdsa/ecdsa_test.Windows.vcxproj +0 -25
  118. data/vendor/ring/crypto/ecdsa/ecdsa_test.cc +0 -327
  119. data/vendor/ring/crypto/header_removed.h +0 -17
  120. data/vendor/ring/crypto/internal.h +0 -495
  121. data/vendor/ring/crypto/libring.Windows.vcxproj +0 -101
  122. data/vendor/ring/crypto/mem.c +0 -98
  123. data/vendor/ring/crypto/modes/asm/aesni-gcm-x86_64.pl +0 -1045
  124. data/vendor/ring/crypto/modes/asm/ghash-armv4.pl +0 -517
  125. data/vendor/ring/crypto/modes/asm/ghash-x86.pl +0 -1393
  126. data/vendor/ring/crypto/modes/asm/ghash-x86_64.pl +0 -1741
  127. data/vendor/ring/crypto/modes/asm/ghashv8-armx.pl +0 -422
  128. data/vendor/ring/crypto/modes/ctr.c +0 -226
  129. data/vendor/ring/crypto/modes/gcm.c +0 -1206
  130. data/vendor/ring/crypto/modes/gcm_test.Windows.vcxproj +0 -25
  131. data/vendor/ring/crypto/modes/gcm_test.c +0 -348
  132. data/vendor/ring/crypto/modes/internal.h +0 -299
  133. data/vendor/ring/crypto/perlasm/arm-xlate.pl +0 -170
  134. data/vendor/ring/crypto/perlasm/readme +0 -100
  135. data/vendor/ring/crypto/perlasm/x86_64-xlate.pl +0 -1164
  136. data/vendor/ring/crypto/perlasm/x86asm.pl +0 -292
  137. data/vendor/ring/crypto/perlasm/x86gas.pl +0 -263
  138. data/vendor/ring/crypto/perlasm/x86masm.pl +0 -200
  139. data/vendor/ring/crypto/perlasm/x86nasm.pl +0 -187
  140. data/vendor/ring/crypto/poly1305/poly1305.c +0 -331
  141. data/vendor/ring/crypto/poly1305/poly1305_arm.c +0 -301
  142. data/vendor/ring/crypto/poly1305/poly1305_arm_asm.S +0 -2015
  143. data/vendor/ring/crypto/poly1305/poly1305_test.Windows.vcxproj +0 -25
  144. data/vendor/ring/crypto/poly1305/poly1305_test.cc +0 -80
  145. data/vendor/ring/crypto/poly1305/poly1305_test.txt +0 -52
  146. data/vendor/ring/crypto/poly1305/poly1305_vec.c +0 -892
  147. data/vendor/ring/crypto/rand/asm/rdrand-x86_64.pl +0 -75
  148. data/vendor/ring/crypto/rand/internal.h +0 -32
  149. data/vendor/ring/crypto/rand/rand.c +0 -189
  150. data/vendor/ring/crypto/rand/urandom.c +0 -219
  151. data/vendor/ring/crypto/rand/windows.c +0 -56
  152. data/vendor/ring/crypto/refcount_c11.c +0 -66
  153. data/vendor/ring/crypto/refcount_lock.c +0 -53
  154. data/vendor/ring/crypto/refcount_test.Windows.vcxproj +0 -25
  155. data/vendor/ring/crypto/refcount_test.c +0 -58
  156. data/vendor/ring/crypto/rsa/blinding.c +0 -462
  157. data/vendor/ring/crypto/rsa/internal.h +0 -108
  158. data/vendor/ring/crypto/rsa/padding.c +0 -300
  159. data/vendor/ring/crypto/rsa/rsa.c +0 -450
  160. data/vendor/ring/crypto/rsa/rsa_asn1.c +0 -261
  161. data/vendor/ring/crypto/rsa/rsa_impl.c +0 -944
  162. data/vendor/ring/crypto/rsa/rsa_test.Windows.vcxproj +0 -25
  163. data/vendor/ring/crypto/rsa/rsa_test.cc +0 -437
  164. data/vendor/ring/crypto/sha/asm/sha-armv8.pl +0 -436
  165. data/vendor/ring/crypto/sha/asm/sha-x86_64.pl +0 -2390
  166. data/vendor/ring/crypto/sha/asm/sha256-586.pl +0 -1275
  167. data/vendor/ring/crypto/sha/asm/sha256-armv4.pl +0 -735
  168. data/vendor/ring/crypto/sha/asm/sha256-armv8.pl +0 -14
  169. data/vendor/ring/crypto/sha/asm/sha256-x86_64.pl +0 -14
  170. data/vendor/ring/crypto/sha/asm/sha512-586.pl +0 -911
  171. data/vendor/ring/crypto/sha/asm/sha512-armv4.pl +0 -666
  172. data/vendor/ring/crypto/sha/asm/sha512-armv8.pl +0 -14
  173. data/vendor/ring/crypto/sha/asm/sha512-x86_64.pl +0 -14
  174. data/vendor/ring/crypto/sha/sha1.c +0 -271
  175. data/vendor/ring/crypto/sha/sha256.c +0 -204
  176. data/vendor/ring/crypto/sha/sha512.c +0 -355
  177. data/vendor/ring/crypto/test/file_test.cc +0 -326
  178. data/vendor/ring/crypto/test/file_test.h +0 -181
  179. data/vendor/ring/crypto/test/malloc.cc +0 -150
  180. data/vendor/ring/crypto/test/scoped_types.h +0 -95
  181. data/vendor/ring/crypto/test/test.Windows.vcxproj +0 -35
  182. data/vendor/ring/crypto/test/test_util.cc +0 -46
  183. data/vendor/ring/crypto/test/test_util.h +0 -41
  184. data/vendor/ring/crypto/thread_none.c +0 -55
  185. data/vendor/ring/crypto/thread_pthread.c +0 -165
  186. data/vendor/ring/crypto/thread_test.Windows.vcxproj +0 -25
  187. data/vendor/ring/crypto/thread_test.c +0 -200
  188. data/vendor/ring/crypto/thread_win.c +0 -282
  189. data/vendor/ring/examples/checkdigest.rs +0 -103
  190. data/vendor/ring/include/openssl/aes.h +0 -121
  191. data/vendor/ring/include/openssl/arm_arch.h +0 -129
  192. data/vendor/ring/include/openssl/base.h +0 -156
  193. data/vendor/ring/include/openssl/bn.h +0 -794
  194. data/vendor/ring/include/openssl/buffer.h +0 -18
  195. data/vendor/ring/include/openssl/bytestring.h +0 -235
  196. data/vendor/ring/include/openssl/chacha.h +0 -37
  197. data/vendor/ring/include/openssl/cmac.h +0 -76
  198. data/vendor/ring/include/openssl/cpu.h +0 -184
  199. data/vendor/ring/include/openssl/crypto.h +0 -43
  200. data/vendor/ring/include/openssl/curve25519.h +0 -88
  201. data/vendor/ring/include/openssl/ec.h +0 -225
  202. data/vendor/ring/include/openssl/ec_key.h +0 -129
  203. data/vendor/ring/include/openssl/ecdh.h +0 -110
  204. data/vendor/ring/include/openssl/ecdsa.h +0 -156
  205. data/vendor/ring/include/openssl/err.h +0 -201
  206. data/vendor/ring/include/openssl/mem.h +0 -101
  207. data/vendor/ring/include/openssl/obj_mac.h +0 -71
  208. data/vendor/ring/include/openssl/opensslfeatures.h +0 -68
  209. data/vendor/ring/include/openssl/opensslv.h +0 -18
  210. data/vendor/ring/include/openssl/ossl_typ.h +0 -18
  211. data/vendor/ring/include/openssl/poly1305.h +0 -51
  212. data/vendor/ring/include/openssl/rand.h +0 -70
  213. data/vendor/ring/include/openssl/rsa.h +0 -399
  214. data/vendor/ring/include/openssl/thread.h +0 -133
  215. data/vendor/ring/include/openssl/type_check.h +0 -71
  216. data/vendor/ring/mk/Common.props +0 -63
  217. data/vendor/ring/mk/Windows.props +0 -42
  218. data/vendor/ring/mk/WindowsTest.props +0 -18
  219. data/vendor/ring/mk/appveyor.bat +0 -62
  220. data/vendor/ring/mk/bottom_of_makefile.mk +0 -54
  221. data/vendor/ring/mk/ring.mk +0 -266
  222. data/vendor/ring/mk/top_of_makefile.mk +0 -214
  223. data/vendor/ring/mk/travis.sh +0 -40
  224. data/vendor/ring/mk/update-travis-yml.py +0 -229
  225. data/vendor/ring/ring.sln +0 -153
  226. data/vendor/ring/src/aead.rs +0 -682
  227. data/vendor/ring/src/agreement.rs +0 -248
  228. data/vendor/ring/src/c.rs +0 -129
  229. data/vendor/ring/src/constant_time.rs +0 -37
  230. data/vendor/ring/src/der.rs +0 -96
  231. data/vendor/ring/src/digest.rs +0 -690
  232. data/vendor/ring/src/digest_tests.txt +0 -57
  233. data/vendor/ring/src/ecc.rs +0 -28
  234. data/vendor/ring/src/ecc_build.rs +0 -279
  235. data/vendor/ring/src/ecc_curves.rs +0 -117
  236. data/vendor/ring/src/ed25519_tests.txt +0 -2579
  237. data/vendor/ring/src/exe_tests.rs +0 -46
  238. data/vendor/ring/src/ffi.rs +0 -29
  239. data/vendor/ring/src/file_test.rs +0 -187
  240. data/vendor/ring/src/hkdf.rs +0 -153
  241. data/vendor/ring/src/hkdf_tests.txt +0 -59
  242. data/vendor/ring/src/hmac.rs +0 -414
  243. data/vendor/ring/src/hmac_tests.txt +0 -97
  244. data/vendor/ring/src/input.rs +0 -312
  245. data/vendor/ring/src/lib.rs +0 -41
  246. data/vendor/ring/src/pbkdf2.rs +0 -265
  247. data/vendor/ring/src/pbkdf2_tests.txt +0 -113
  248. data/vendor/ring/src/polyfill.rs +0 -57
  249. data/vendor/ring/src/rand.rs +0 -28
  250. data/vendor/ring/src/signature.rs +0 -314
  251. data/vendor/ring/third-party/NIST/README.md +0 -9
  252. data/vendor/ring/third-party/NIST/SHAVS/SHA1LongMsg.rsp +0 -263
  253. data/vendor/ring/third-party/NIST/SHAVS/SHA1Monte.rsp +0 -309
  254. data/vendor/ring/third-party/NIST/SHAVS/SHA1ShortMsg.rsp +0 -267
  255. data/vendor/ring/third-party/NIST/SHAVS/SHA224LongMsg.rsp +0 -263
  256. data/vendor/ring/third-party/NIST/SHAVS/SHA224Monte.rsp +0 -309
  257. data/vendor/ring/third-party/NIST/SHAVS/SHA224ShortMsg.rsp +0 -267
  258. data/vendor/ring/third-party/NIST/SHAVS/SHA256LongMsg.rsp +0 -263
  259. data/vendor/ring/third-party/NIST/SHAVS/SHA256Monte.rsp +0 -309
  260. data/vendor/ring/third-party/NIST/SHAVS/SHA256ShortMsg.rsp +0 -267
  261. data/vendor/ring/third-party/NIST/SHAVS/SHA384LongMsg.rsp +0 -519
  262. data/vendor/ring/third-party/NIST/SHAVS/SHA384Monte.rsp +0 -309
  263. data/vendor/ring/third-party/NIST/SHAVS/SHA384ShortMsg.rsp +0 -523
  264. data/vendor/ring/third-party/NIST/SHAVS/SHA512LongMsg.rsp +0 -519
  265. data/vendor/ring/third-party/NIST/SHAVS/SHA512Monte.rsp +0 -309
  266. data/vendor/ring/third-party/NIST/SHAVS/SHA512ShortMsg.rsp +0 -523
  267. data/vendor/ring/third-party/NIST/sha256sums.txt +0 -1
@@ -1,151 +0,0 @@
1
- /* Copyright (c) 2014, Google Inc.
2
- *
3
- * Permission to use, copy, modify, and/or distribute this software for any
4
- * purpose with or without fee is hereby granted, provided that the above
5
- * copyright notice and this permission notice appear in all copies.
6
- *
7
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
-
15
- #include <openssl/crypto.h>
16
-
17
- #include <stdint.h>
18
-
19
- #include <openssl/cpu.h>
20
-
21
- #include "internal.h"
22
-
23
-
24
- #if !defined(OPENSSL_NO_ASM) && !defined(OPENSSL_STATIC_ARMCAP) && \
25
- (defined(OPENSSL_X86) || defined(OPENSSL_X86_64) || \
26
- defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64))
27
- /* x86, x86_64 and the ARMs need to record the result of a cpuid call for the
28
- * asm to work correctly, unless compiled without asm code. */
29
- #define NEED_CPUID
30
-
31
- #else
32
-
33
- /* Otherwise, don't emit a static initialiser. */
34
-
35
- #if !defined(BORINGSSL_NO_STATIC_INITIALIZER)
36
- #define BORINGSSL_NO_STATIC_INITIALIZER
37
- #endif
38
-
39
- #endif /* !OPENSSL_NO_ASM && (OPENSSL_X86 || OPENSSL_X86_64 ||
40
- OPENSSL_ARM || OPENSSL_AARCH64) */
41
-
42
-
43
- /* The capability variables are defined in this file in order to work around a
44
- * linker bug. When linking with a .a, if no symbols in a .o are referenced
45
- * then the .o is discarded, even if it has constructor functions.
46
- *
47
- * This still means that any binaries that don't include some functionality
48
- * that tests the capability values will still skip the constructor but, so
49
- * far, the init constructor function only sets the capability variables. */
50
-
51
- #if defined(OPENSSL_X86) || defined(OPENSSL_X86_64)
52
- /* This value must be explicitly initialised to zero in order to work around a
53
- * bug in libtool or the linker on OS X.
54
- *
55
- * If not initialised then it becomes a "common symbol". When put into an
56
- * archive, linking on OS X will fail to resolve common symbols. By
57
- * initialising it to zero, it becomes a "data symbol", which isn't so
58
- * affected. */
59
- uint32_t OPENSSL_ia32cap_P[4] = {0};
60
- #elif defined(OPENSSL_ARM) || defined(OPENSSL_AARCH64)
61
-
62
- #include <openssl/arm_arch.h>
63
-
64
- #if defined(OPENSSL_STATIC_ARMCAP)
65
-
66
- uint32_t OPENSSL_armcap_P =
67
- #if defined(OPENSSL_STATIC_ARMCAP_NEON) || defined(__ARM_NEON__)
68
- ARMV7_NEON | ARMV7_NEON_FUNCTIONAL |
69
- #endif
70
- #if defined(OPENSSL_STATIC_ARMCAP_AES)
71
- ARMV8_AES |
72
- #endif
73
- #if defined(OPENSSL_STATIC_ARMCAP_SHA1)
74
- ARMV8_SHA1 |
75
- #endif
76
- #if defined(OPENSSL_STATIC_ARMCAP_SHA256)
77
- ARMV8_SHA256 |
78
- #endif
79
- #if defined(OPENSSL_STATIC_ARMCAP_PMULL)
80
- ARMV8_PMULL |
81
- #endif
82
- 0;
83
-
84
- #elif defined(__ARM_NEON__)
85
- uint32_t OPENSSL_armcap_P = ARMV7_NEON | ARMV7_NEON_FUNCTIONAL;
86
- #else
87
- uint32_t OPENSSL_armcap_P = ARMV7_NEON_FUNCTIONAL;
88
- #endif
89
-
90
- #endif
91
-
92
-
93
- #if defined(OPENSSL_WINDOWS) && !defined(BORINGSSL_NO_STATIC_INITIALIZER)
94
- #define OPENSSL_CDECL __cdecl
95
- #else
96
- #define OPENSSL_CDECL
97
- #endif
98
-
99
- #if defined(BORINGSSL_NO_STATIC_INITIALIZER)
100
- static CRYPTO_once_t once = CRYPTO_ONCE_INIT;
101
- #elif defined(OPENSSL_WINDOWS)
102
- #pragma section(".CRT$XCU", read)
103
- static void __cdecl do_library_init(void);
104
- __declspec(allocate(".CRT$XCU")) void(*library_init_constructor)(void) =
105
- do_library_init;
106
- #else
107
- static void do_library_init(void) __attribute__ ((constructor));
108
- #endif
109
-
110
- /* do_library_init is the actual initialization function. If
111
- * BORINGSSL_NO_STATIC_INITIALIZER isn't defined, this is set as a static
112
- * initializer. Otherwise, it is called by CRYPTO_library_init. */
113
- static void OPENSSL_CDECL do_library_init(void) {
114
- /* WARNING: this function may only configure the capability variables. See the
115
- * note above about the linker bug. */
116
- #if defined(NEED_CPUID)
117
- OPENSSL_cpuid_setup();
118
- #endif
119
- }
120
-
121
- void CRYPTO_library_init(void) {
122
- /* TODO(davidben): It would be tidier if this build knob could be replaced
123
- * with an internal lazy-init mechanism that would handle things correctly
124
- * in-library. https://crbug.com/542879 */
125
- #if defined(BORINGSSL_NO_STATIC_INITIALIZER)
126
- CRYPTO_once(&once, do_library_init);
127
- #endif
128
- }
129
-
130
- /* These functions allow tests in other languages to verify that their
131
- * understanding of the C types matches the C compiler's understanding. */
132
-
133
- #define DEFINE_METRICS_FUNCTIONS(ty) \
134
- OPENSSL_EXPORT ty ring_##ty##_align(void) { return alignof(ty); } \
135
- OPENSSL_EXPORT ty ring_##ty##_size(void) { return sizeof(ty); }
136
-
137
- DEFINE_METRICS_FUNCTIONS(int8_t)
138
- DEFINE_METRICS_FUNCTIONS(uint8_t)
139
-
140
- DEFINE_METRICS_FUNCTIONS(int16_t)
141
- DEFINE_METRICS_FUNCTIONS(uint16_t)
142
-
143
- DEFINE_METRICS_FUNCTIONS(int32_t)
144
- DEFINE_METRICS_FUNCTIONS(uint32_t)
145
-
146
- DEFINE_METRICS_FUNCTIONS(int64_t)
147
- DEFINE_METRICS_FUNCTIONS(uint64_t)
148
-
149
- DEFINE_METRICS_FUNCTIONS(int)
150
-
151
- DEFINE_METRICS_FUNCTIONS(size_t)
@@ -1,2118 +0,0 @@
1
- /* Copyright (c) 2015, Google Inc.
2
- *
3
- * Permission to use, copy, modify, and/or distribute this software for any
4
- * purpose with or without fee is hereby granted, provided that the above
5
- * copyright notice and this permission notice appear in all copies.
6
- *
7
- * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
8
- * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
9
- * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
10
- * SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
11
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
12
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
13
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */
14
-
15
- /* This file is taken from crypto_scalarmult/curve25519/neon2/scalarmult.s in
16
- * SUPERCOP 20141124 (http://bench.cr.yp.to/supercop.html). That code is public
17
- * domain licensed but the standard ISC license is included above to keep
18
- * licensing simple. */
19
-
20
- .fpu neon
21
- .text
22
- .align 4
23
-
24
- .global x25519_NEON
25
- .hidden x25519_NEON
26
- .type x25519_NEON, %function
27
- x25519_NEON:
28
- vpush {q4,q5,q6,q7}
29
- mov r12,sp
30
- sub sp,sp,#736
31
- and sp,sp,#0xffffffe0
32
- strd r4,[sp,#0]
33
- strd r6,[sp,#8]
34
- strd r8,[sp,#16]
35
- strd r10,[sp,#24]
36
- str r12,[sp,#480]
37
- str r14,[sp,#484]
38
- mov r0,r0
39
- mov r1,r1
40
- mov r2,r2
41
- add r3,sp,#32
42
- ldr r4,=0
43
- ldr r5,=254
44
- vmov.i32 q0,#1
45
- vshr.u64 q1,q0,#7
46
- vshr.u64 q0,q0,#8
47
- vmov.i32 d4,#19
48
- vmov.i32 d5,#38
49
- add r6,sp,#512
50
- vst1.8 {d2-d3},[r6,: 128]
51
- add r6,sp,#528
52
- vst1.8 {d0-d1},[r6,: 128]
53
- add r6,sp,#544
54
- vst1.8 {d4-d5},[r6,: 128]
55
- add r6,r3,#0
56
- vmov.i32 q2,#0
57
- vst1.8 {d4-d5},[r6,: 128]!
58
- vst1.8 {d4-d5},[r6,: 128]!
59
- vst1.8 d4,[r6,: 64]
60
- add r6,r3,#0
61
- ldr r7,=960
62
- sub r7,r7,#2
63
- neg r7,r7
64
- sub r7,r7,r7,LSL #7
65
- str r7,[r6]
66
- add r6,sp,#704
67
- vld1.8 {d4-d5},[r1]!
68
- vld1.8 {d6-d7},[r1]
69
- vst1.8 {d4-d5},[r6,: 128]!
70
- vst1.8 {d6-d7},[r6,: 128]
71
- sub r1,r6,#16
72
- ldrb r6,[r1]
73
- and r6,r6,#248
74
- strb r6,[r1]
75
- ldrb r6,[r1,#31]
76
- and r6,r6,#127
77
- orr r6,r6,#64
78
- strb r6,[r1,#31]
79
- vmov.i64 q2,#0xffffffff
80
- vshr.u64 q3,q2,#7
81
- vshr.u64 q2,q2,#6
82
- vld1.8 {d8},[r2]
83
- vld1.8 {d10},[r2]
84
- add r2,r2,#6
85
- vld1.8 {d12},[r2]
86
- vld1.8 {d14},[r2]
87
- add r2,r2,#6
88
- vld1.8 {d16},[r2]
89
- add r2,r2,#4
90
- vld1.8 {d18},[r2]
91
- vld1.8 {d20},[r2]
92
- add r2,r2,#6
93
- vld1.8 {d22},[r2]
94
- add r2,r2,#2
95
- vld1.8 {d24},[r2]
96
- vld1.8 {d26},[r2]
97
- vshr.u64 q5,q5,#26
98
- vshr.u64 q6,q6,#3
99
- vshr.u64 q7,q7,#29
100
- vshr.u64 q8,q8,#6
101
- vshr.u64 q10,q10,#25
102
- vshr.u64 q11,q11,#3
103
- vshr.u64 q12,q12,#12
104
- vshr.u64 q13,q13,#38
105
- vand q4,q4,q2
106
- vand q6,q6,q2
107
- vand q8,q8,q2
108
- vand q10,q10,q2
109
- vand q2,q12,q2
110
- vand q5,q5,q3
111
- vand q7,q7,q3
112
- vand q9,q9,q3
113
- vand q11,q11,q3
114
- vand q3,q13,q3
115
- add r2,r3,#48
116
- vadd.i64 q12,q4,q1
117
- vadd.i64 q13,q10,q1
118
- vshr.s64 q12,q12,#26
119
- vshr.s64 q13,q13,#26
120
- vadd.i64 q5,q5,q12
121
- vshl.i64 q12,q12,#26
122
- vadd.i64 q14,q5,q0
123
- vadd.i64 q11,q11,q13
124
- vshl.i64 q13,q13,#26
125
- vadd.i64 q15,q11,q0
126
- vsub.i64 q4,q4,q12
127
- vshr.s64 q12,q14,#25
128
- vsub.i64 q10,q10,q13
129
- vshr.s64 q13,q15,#25
130
- vadd.i64 q6,q6,q12
131
- vshl.i64 q12,q12,#25
132
- vadd.i64 q14,q6,q1
133
- vadd.i64 q2,q2,q13
134
- vsub.i64 q5,q5,q12
135
- vshr.s64 q12,q14,#26
136
- vshl.i64 q13,q13,#25
137
- vadd.i64 q14,q2,q1
138
- vadd.i64 q7,q7,q12
139
- vshl.i64 q12,q12,#26
140
- vadd.i64 q15,q7,q0
141
- vsub.i64 q11,q11,q13
142
- vshr.s64 q13,q14,#26
143
- vsub.i64 q6,q6,q12
144
- vshr.s64 q12,q15,#25
145
- vadd.i64 q3,q3,q13
146
- vshl.i64 q13,q13,#26
147
- vadd.i64 q14,q3,q0
148
- vadd.i64 q8,q8,q12
149
- vshl.i64 q12,q12,#25
150
- vadd.i64 q15,q8,q1
151
- add r2,r2,#8
152
- vsub.i64 q2,q2,q13
153
- vshr.s64 q13,q14,#25
154
- vsub.i64 q7,q7,q12
155
- vshr.s64 q12,q15,#26
156
- vadd.i64 q14,q13,q13
157
- vadd.i64 q9,q9,q12
158
- vtrn.32 d12,d14
159
- vshl.i64 q12,q12,#26
160
- vtrn.32 d13,d15
161
- vadd.i64 q0,q9,q0
162
- vadd.i64 q4,q4,q14
163
- vst1.8 d12,[r2,: 64]!
164
- vshl.i64 q6,q13,#4
165
- vsub.i64 q7,q8,q12
166
- vshr.s64 q0,q0,#25
167
- vadd.i64 q4,q4,q6
168
- vadd.i64 q6,q10,q0
169
- vshl.i64 q0,q0,#25
170
- vadd.i64 q8,q6,q1
171
- vadd.i64 q4,q4,q13
172
- vshl.i64 q10,q13,#25
173
- vadd.i64 q1,q4,q1
174
- vsub.i64 q0,q9,q0
175
- vshr.s64 q8,q8,#26
176
- vsub.i64 q3,q3,q10
177
- vtrn.32 d14,d0
178
- vshr.s64 q1,q1,#26
179
- vtrn.32 d15,d1
180
- vadd.i64 q0,q11,q8
181
- vst1.8 d14,[r2,: 64]
182
- vshl.i64 q7,q8,#26
183
- vadd.i64 q5,q5,q1
184
- vtrn.32 d4,d6
185
- vshl.i64 q1,q1,#26
186
- vtrn.32 d5,d7
187
- vsub.i64 q3,q6,q7
188
- add r2,r2,#16
189
- vsub.i64 q1,q4,q1
190
- vst1.8 d4,[r2,: 64]
191
- vtrn.32 d6,d0
192
- vtrn.32 d7,d1
193
- sub r2,r2,#8
194
- vtrn.32 d2,d10
195
- vtrn.32 d3,d11
196
- vst1.8 d6,[r2,: 64]
197
- sub r2,r2,#24
198
- vst1.8 d2,[r2,: 64]
199
- add r2,r3,#96
200
- vmov.i32 q0,#0
201
- vmov.i64 d2,#0xff
202
- vmov.i64 d3,#0
203
- vshr.u32 q1,q1,#7
204
- vst1.8 {d2-d3},[r2,: 128]!
205
- vst1.8 {d0-d1},[r2,: 128]!
206
- vst1.8 d0,[r2,: 64]
207
- add r2,r3,#144
208
- vmov.i32 q0,#0
209
- vst1.8 {d0-d1},[r2,: 128]!
210
- vst1.8 {d0-d1},[r2,: 128]!
211
- vst1.8 d0,[r2,: 64]
212
- add r2,r3,#240
213
- vmov.i32 q0,#0
214
- vmov.i64 d2,#0xff
215
- vmov.i64 d3,#0
216
- vshr.u32 q1,q1,#7
217
- vst1.8 {d2-d3},[r2,: 128]!
218
- vst1.8 {d0-d1},[r2,: 128]!
219
- vst1.8 d0,[r2,: 64]
220
- add r2,r3,#48
221
- add r6,r3,#192
222
- vld1.8 {d0-d1},[r2,: 128]!
223
- vld1.8 {d2-d3},[r2,: 128]!
224
- vld1.8 {d4},[r2,: 64]
225
- vst1.8 {d0-d1},[r6,: 128]!
226
- vst1.8 {d2-d3},[r6,: 128]!
227
- vst1.8 d4,[r6,: 64]
228
- ._mainloop:
229
- mov r2,r5,LSR #3
230
- and r6,r5,#7
231
- ldrb r2,[r1,r2]
232
- mov r2,r2,LSR r6
233
- and r2,r2,#1
234
- str r5,[sp,#488]
235
- eor r4,r4,r2
236
- str r2,[sp,#492]
237
- neg r2,r4
238
- add r4,r3,#96
239
- add r5,r3,#192
240
- add r6,r3,#144
241
- vld1.8 {d8-d9},[r4,: 128]!
242
- add r7,r3,#240
243
- vld1.8 {d10-d11},[r5,: 128]!
244
- veor q6,q4,q5
245
- vld1.8 {d14-d15},[r6,: 128]!
246
- vdup.i32 q8,r2
247
- vld1.8 {d18-d19},[r7,: 128]!
248
- veor q10,q7,q9
249
- vld1.8 {d22-d23},[r4,: 128]!
250
- vand q6,q6,q8
251
- vld1.8 {d24-d25},[r5,: 128]!
252
- vand q10,q10,q8
253
- vld1.8 {d26-d27},[r6,: 128]!
254
- veor q4,q4,q6
255
- vld1.8 {d28-d29},[r7,: 128]!
256
- veor q5,q5,q6
257
- vld1.8 {d0},[r4,: 64]
258
- veor q6,q7,q10
259
- vld1.8 {d2},[r5,: 64]
260
- veor q7,q9,q10
261
- vld1.8 {d4},[r6,: 64]
262
- veor q9,q11,q12
263
- vld1.8 {d6},[r7,: 64]
264
- veor q10,q0,q1
265
- sub r2,r4,#32
266
- vand q9,q9,q8
267
- sub r4,r5,#32
268
- vand q10,q10,q8
269
- sub r5,r6,#32
270
- veor q11,q11,q9
271
- sub r6,r7,#32
272
- veor q0,q0,q10
273
- veor q9,q12,q9
274
- veor q1,q1,q10
275
- veor q10,q13,q14
276
- veor q12,q2,q3
277
- vand q10,q10,q8
278
- vand q8,q12,q8
279
- veor q12,q13,q10
280
- veor q2,q2,q8
281
- veor q10,q14,q10
282
- veor q3,q3,q8
283
- vadd.i32 q8,q4,q6
284
- vsub.i32 q4,q4,q6
285
- vst1.8 {d16-d17},[r2,: 128]!
286
- vadd.i32 q6,q11,q12
287
- vst1.8 {d8-d9},[r5,: 128]!
288
- vsub.i32 q4,q11,q12
289
- vst1.8 {d12-d13},[r2,: 128]!
290
- vadd.i32 q6,q0,q2
291
- vst1.8 {d8-d9},[r5,: 128]!
292
- vsub.i32 q0,q0,q2
293
- vst1.8 d12,[r2,: 64]
294
- vadd.i32 q2,q5,q7
295
- vst1.8 d0,[r5,: 64]
296
- vsub.i32 q0,q5,q7
297
- vst1.8 {d4-d5},[r4,: 128]!
298
- vadd.i32 q2,q9,q10
299
- vst1.8 {d0-d1},[r6,: 128]!
300
- vsub.i32 q0,q9,q10
301
- vst1.8 {d4-d5},[r4,: 128]!
302
- vadd.i32 q2,q1,q3
303
- vst1.8 {d0-d1},[r6,: 128]!
304
- vsub.i32 q0,q1,q3
305
- vst1.8 d4,[r4,: 64]
306
- vst1.8 d0,[r6,: 64]
307
- add r2,sp,#544
308
- add r4,r3,#96
309
- add r5,r3,#144
310
- vld1.8 {d0-d1},[r2,: 128]
311
- vld1.8 {d2-d3},[r4,: 128]!
312
- vld1.8 {d4-d5},[r5,: 128]!
313
- vzip.i32 q1,q2
314
- vld1.8 {d6-d7},[r4,: 128]!
315
- vld1.8 {d8-d9},[r5,: 128]!
316
- vshl.i32 q5,q1,#1
317
- vzip.i32 q3,q4
318
- vshl.i32 q6,q2,#1
319
- vld1.8 {d14},[r4,: 64]
320
- vshl.i32 q8,q3,#1
321
- vld1.8 {d15},[r5,: 64]
322
- vshl.i32 q9,q4,#1
323
- vmul.i32 d21,d7,d1
324
- vtrn.32 d14,d15
325
- vmul.i32 q11,q4,q0
326
- vmul.i32 q0,q7,q0
327
- vmull.s32 q12,d2,d2
328
- vmlal.s32 q12,d11,d1
329
- vmlal.s32 q12,d12,d0
330
- vmlal.s32 q12,d13,d23
331
- vmlal.s32 q12,d16,d22
332
- vmlal.s32 q12,d7,d21
333
- vmull.s32 q10,d2,d11
334
- vmlal.s32 q10,d4,d1
335
- vmlal.s32 q10,d13,d0
336
- vmlal.s32 q10,d6,d23
337
- vmlal.s32 q10,d17,d22
338
- vmull.s32 q13,d10,d4
339
- vmlal.s32 q13,d11,d3
340
- vmlal.s32 q13,d13,d1
341
- vmlal.s32 q13,d16,d0
342
- vmlal.s32 q13,d17,d23
343
- vmlal.s32 q13,d8,d22
344
- vmull.s32 q1,d10,d5
345
- vmlal.s32 q1,d11,d4
346
- vmlal.s32 q1,d6,d1
347
- vmlal.s32 q1,d17,d0
348
- vmlal.s32 q1,d8,d23
349
- vmull.s32 q14,d10,d6
350
- vmlal.s32 q14,d11,d13
351
- vmlal.s32 q14,d4,d4
352
- vmlal.s32 q14,d17,d1
353
- vmlal.s32 q14,d18,d0
354
- vmlal.s32 q14,d9,d23
355
- vmull.s32 q11,d10,d7
356
- vmlal.s32 q11,d11,d6
357
- vmlal.s32 q11,d12,d5
358
- vmlal.s32 q11,d8,d1
359
- vmlal.s32 q11,d19,d0
360
- vmull.s32 q15,d10,d8
361
- vmlal.s32 q15,d11,d17
362
- vmlal.s32 q15,d12,d6
363
- vmlal.s32 q15,d13,d5
364
- vmlal.s32 q15,d19,d1
365
- vmlal.s32 q15,d14,d0
366
- vmull.s32 q2,d10,d9
367
- vmlal.s32 q2,d11,d8
368
- vmlal.s32 q2,d12,d7
369
- vmlal.s32 q2,d13,d6
370
- vmlal.s32 q2,d14,d1
371
- vmull.s32 q0,d15,d1
372
- vmlal.s32 q0,d10,d14
373
- vmlal.s32 q0,d11,d19
374
- vmlal.s32 q0,d12,d8
375
- vmlal.s32 q0,d13,d17
376
- vmlal.s32 q0,d6,d6
377
- add r2,sp,#512
378
- vld1.8 {d18-d19},[r2,: 128]
379
- vmull.s32 q3,d16,d7
380
- vmlal.s32 q3,d10,d15
381
- vmlal.s32 q3,d11,d14
382
- vmlal.s32 q3,d12,d9
383
- vmlal.s32 q3,d13,d8
384
- add r2,sp,#528
385
- vld1.8 {d8-d9},[r2,: 128]
386
- vadd.i64 q5,q12,q9
387
- vadd.i64 q6,q15,q9
388
- vshr.s64 q5,q5,#26
389
- vshr.s64 q6,q6,#26
390
- vadd.i64 q7,q10,q5
391
- vshl.i64 q5,q5,#26
392
- vadd.i64 q8,q7,q4
393
- vadd.i64 q2,q2,q6
394
- vshl.i64 q6,q6,#26
395
- vadd.i64 q10,q2,q4
396
- vsub.i64 q5,q12,q5
397
- vshr.s64 q8,q8,#25
398
- vsub.i64 q6,q15,q6
399
- vshr.s64 q10,q10,#25
400
- vadd.i64 q12,q13,q8
401
- vshl.i64 q8,q8,#25
402
- vadd.i64 q13,q12,q9
403
- vadd.i64 q0,q0,q10
404
- vsub.i64 q7,q7,q8
405
- vshr.s64 q8,q13,#26
406
- vshl.i64 q10,q10,#25
407
- vadd.i64 q13,q0,q9
408
- vadd.i64 q1,q1,q8
409
- vshl.i64 q8,q8,#26
410
- vadd.i64 q15,q1,q4
411
- vsub.i64 q2,q2,q10
412
- vshr.s64 q10,q13,#26
413
- vsub.i64 q8,q12,q8
414
- vshr.s64 q12,q15,#25
415
- vadd.i64 q3,q3,q10
416
- vshl.i64 q10,q10,#26
417
- vadd.i64 q13,q3,q4
418
- vadd.i64 q14,q14,q12
419
- add r2,r3,#288
420
- vshl.i64 q12,q12,#25
421
- add r4,r3,#336
422
- vadd.i64 q15,q14,q9
423
- add r2,r2,#8
424
- vsub.i64 q0,q0,q10
425
- add r4,r4,#8
426
- vshr.s64 q10,q13,#25
427
- vsub.i64 q1,q1,q12
428
- vshr.s64 q12,q15,#26
429
- vadd.i64 q13,q10,q10
430
- vadd.i64 q11,q11,q12
431
- vtrn.32 d16,d2
432
- vshl.i64 q12,q12,#26
433
- vtrn.32 d17,d3
434
- vadd.i64 q1,q11,q4
435
- vadd.i64 q4,q5,q13
436
- vst1.8 d16,[r2,: 64]!
437
- vshl.i64 q5,q10,#4
438
- vst1.8 d17,[r4,: 64]!
439
- vsub.i64 q8,q14,q12
440
- vshr.s64 q1,q1,#25
441
- vadd.i64 q4,q4,q5
442
- vadd.i64 q5,q6,q1
443
- vshl.i64 q1,q1,#25
444
- vadd.i64 q6,q5,q9
445
- vadd.i64 q4,q4,q10
446
- vshl.i64 q10,q10,#25
447
- vadd.i64 q9,q4,q9
448
- vsub.i64 q1,q11,q1
449
- vshr.s64 q6,q6,#26
450
- vsub.i64 q3,q3,q10
451
- vtrn.32 d16,d2
452
- vshr.s64 q9,q9,#26
453
- vtrn.32 d17,d3
454
- vadd.i64 q1,q2,q6
455
- vst1.8 d16,[r2,: 64]
456
- vshl.i64 q2,q6,#26
457
- vst1.8 d17,[r4,: 64]
458
- vadd.i64 q6,q7,q9
459
- vtrn.32 d0,d6
460
- vshl.i64 q7,q9,#26
461
- vtrn.32 d1,d7
462
- vsub.i64 q2,q5,q2
463
- add r2,r2,#16
464
- vsub.i64 q3,q4,q7
465
- vst1.8 d0,[r2,: 64]
466
- add r4,r4,#16
467
- vst1.8 d1,[r4,: 64]
468
- vtrn.32 d4,d2
469
- vtrn.32 d5,d3
470
- sub r2,r2,#8
471
- sub r4,r4,#8
472
- vtrn.32 d6,d12
473
- vtrn.32 d7,d13
474
- vst1.8 d4,[r2,: 64]
475
- vst1.8 d5,[r4,: 64]
476
- sub r2,r2,#24
477
- sub r4,r4,#24
478
- vst1.8 d6,[r2,: 64]
479
- vst1.8 d7,[r4,: 64]
480
- add r2,r3,#240
481
- add r4,r3,#96
482
- vld1.8 {d0-d1},[r4,: 128]!
483
- vld1.8 {d2-d3},[r4,: 128]!
484
- vld1.8 {d4},[r4,: 64]
485
- add r4,r3,#144
486
- vld1.8 {d6-d7},[r4,: 128]!
487
- vtrn.32 q0,q3
488
- vld1.8 {d8-d9},[r4,: 128]!
489
- vshl.i32 q5,q0,#4
490
- vtrn.32 q1,q4
491
- vshl.i32 q6,q3,#4
492
- vadd.i32 q5,q5,q0
493
- vadd.i32 q6,q6,q3
494
- vshl.i32 q7,q1,#4
495
- vld1.8 {d5},[r4,: 64]
496
- vshl.i32 q8,q4,#4
497
- vtrn.32 d4,d5
498
- vadd.i32 q7,q7,q1
499
- vadd.i32 q8,q8,q4
500
- vld1.8 {d18-d19},[r2,: 128]!
501
- vshl.i32 q10,q2,#4
502
- vld1.8 {d22-d23},[r2,: 128]!
503
- vadd.i32 q10,q10,q2
504
- vld1.8 {d24},[r2,: 64]
505
- vadd.i32 q5,q5,q0
506
- add r2,r3,#192
507
- vld1.8 {d26-d27},[r2,: 128]!
508
- vadd.i32 q6,q6,q3
509
- vld1.8 {d28-d29},[r2,: 128]!
510
- vadd.i32 q8,q8,q4
511
- vld1.8 {d25},[r2,: 64]
512
- vadd.i32 q10,q10,q2
513
- vtrn.32 q9,q13
514
- vadd.i32 q7,q7,q1
515
- vadd.i32 q5,q5,q0
516
- vtrn.32 q11,q14
517
- vadd.i32 q6,q6,q3
518
- add r2,sp,#560
519
- vadd.i32 q10,q10,q2
520
- vtrn.32 d24,d25
521
- vst1.8 {d12-d13},[r2,: 128]
522
- vshl.i32 q6,q13,#1
523
- add r2,sp,#576
524
- vst1.8 {d20-d21},[r2,: 128]
525
- vshl.i32 q10,q14,#1
526
- add r2,sp,#592
527
- vst1.8 {d12-d13},[r2,: 128]
528
- vshl.i32 q15,q12,#1
529
- vadd.i32 q8,q8,q4
530
- vext.32 d10,d31,d30,#0
531
- vadd.i32 q7,q7,q1
532
- add r2,sp,#608
533
- vst1.8 {d16-d17},[r2,: 128]
534
- vmull.s32 q8,d18,d5
535
- vmlal.s32 q8,d26,d4
536
- vmlal.s32 q8,d19,d9
537
- vmlal.s32 q8,d27,d3
538
- vmlal.s32 q8,d22,d8
539
- vmlal.s32 q8,d28,d2
540
- vmlal.s32 q8,d23,d7
541
- vmlal.s32 q8,d29,d1
542
- vmlal.s32 q8,d24,d6
543
- vmlal.s32 q8,d25,d0
544
- add r2,sp,#624
545
- vst1.8 {d14-d15},[r2,: 128]
546
- vmull.s32 q2,d18,d4
547
- vmlal.s32 q2,d12,d9
548
- vmlal.s32 q2,d13,d8
549
- vmlal.s32 q2,d19,d3
550
- vmlal.s32 q2,d22,d2
551
- vmlal.s32 q2,d23,d1
552
- vmlal.s32 q2,d24,d0
553
- add r2,sp,#640
554
- vst1.8 {d20-d21},[r2,: 128]
555
- vmull.s32 q7,d18,d9
556
- vmlal.s32 q7,d26,d3
557
- vmlal.s32 q7,d19,d8
558
- vmlal.s32 q7,d27,d2
559
- vmlal.s32 q7,d22,d7
560
- vmlal.s32 q7,d28,d1
561
- vmlal.s32 q7,d23,d6
562
- vmlal.s32 q7,d29,d0
563
- add r2,sp,#656
564
- vst1.8 {d10-d11},[r2,: 128]
565
- vmull.s32 q5,d18,d3
566
- vmlal.s32 q5,d19,d2
567
- vmlal.s32 q5,d22,d1
568
- vmlal.s32 q5,d23,d0
569
- vmlal.s32 q5,d12,d8
570
- add r2,sp,#672
571
- vst1.8 {d16-d17},[r2,: 128]
572
- vmull.s32 q4,d18,d8
573
- vmlal.s32 q4,d26,d2
574
- vmlal.s32 q4,d19,d7
575
- vmlal.s32 q4,d27,d1
576
- vmlal.s32 q4,d22,d6
577
- vmlal.s32 q4,d28,d0
578
- vmull.s32 q8,d18,d7
579
- vmlal.s32 q8,d26,d1
580
- vmlal.s32 q8,d19,d6
581
- vmlal.s32 q8,d27,d0
582
- add r2,sp,#576
583
- vld1.8 {d20-d21},[r2,: 128]
584
- vmlal.s32 q7,d24,d21
585
- vmlal.s32 q7,d25,d20
586
- vmlal.s32 q4,d23,d21
587
- vmlal.s32 q4,d29,d20
588
- vmlal.s32 q8,d22,d21
589
- vmlal.s32 q8,d28,d20
590
- vmlal.s32 q5,d24,d20
591
- add r2,sp,#576
592
- vst1.8 {d14-d15},[r2,: 128]
593
- vmull.s32 q7,d18,d6
594
- vmlal.s32 q7,d26,d0
595
- add r2,sp,#656
596
- vld1.8 {d30-d31},[r2,: 128]
597
- vmlal.s32 q2,d30,d21
598
- vmlal.s32 q7,d19,d21
599
- vmlal.s32 q7,d27,d20
600
- add r2,sp,#624
601
- vld1.8 {d26-d27},[r2,: 128]
602
- vmlal.s32 q4,d25,d27
603
- vmlal.s32 q8,d29,d27
604
- vmlal.s32 q8,d25,d26
605
- vmlal.s32 q7,d28,d27
606
- vmlal.s32 q7,d29,d26
607
- add r2,sp,#608
608
- vld1.8 {d28-d29},[r2,: 128]
609
- vmlal.s32 q4,d24,d29
610
- vmlal.s32 q8,d23,d29
611
- vmlal.s32 q8,d24,d28
612
- vmlal.s32 q7,d22,d29
613
- vmlal.s32 q7,d23,d28
614
- add r2,sp,#608
615
- vst1.8 {d8-d9},[r2,: 128]
616
- add r2,sp,#560
617
- vld1.8 {d8-d9},[r2,: 128]
618
- vmlal.s32 q7,d24,d9
619
- vmlal.s32 q7,d25,d31
620
- vmull.s32 q1,d18,d2
621
- vmlal.s32 q1,d19,d1
622
- vmlal.s32 q1,d22,d0
623
- vmlal.s32 q1,d24,d27
624
- vmlal.s32 q1,d23,d20
625
- vmlal.s32 q1,d12,d7
626
- vmlal.s32 q1,d13,d6
627
- vmull.s32 q6,d18,d1
628
- vmlal.s32 q6,d19,d0
629
- vmlal.s32 q6,d23,d27
630
- vmlal.s32 q6,d22,d20
631
- vmlal.s32 q6,d24,d26
632
- vmull.s32 q0,d18,d0
633
- vmlal.s32 q0,d22,d27
634
- vmlal.s32 q0,d23,d26
635
- vmlal.s32 q0,d24,d31
636
- vmlal.s32 q0,d19,d20
637
- add r2,sp,#640
638
- vld1.8 {d18-d19},[r2,: 128]
639
- vmlal.s32 q2,d18,d7
640
- vmlal.s32 q2,d19,d6
641
- vmlal.s32 q5,d18,d6
642
- vmlal.s32 q5,d19,d21
643
- vmlal.s32 q1,d18,d21
644
- vmlal.s32 q1,d19,d29
645
- vmlal.s32 q0,d18,d28
646
- vmlal.s32 q0,d19,d9
647
- vmlal.s32 q6,d18,d29
648
- vmlal.s32 q6,d19,d28
649
- add r2,sp,#592
650
- vld1.8 {d18-d19},[r2,: 128]
651
- add r2,sp,#512
652
- vld1.8 {d22-d23},[r2,: 128]
653
- vmlal.s32 q5,d19,d7
654
- vmlal.s32 q0,d18,d21
655
- vmlal.s32 q0,d19,d29
656
- vmlal.s32 q6,d18,d6
657
- add r2,sp,#528
658
- vld1.8 {d6-d7},[r2,: 128]
659
- vmlal.s32 q6,d19,d21
660
- add r2,sp,#576
661
- vld1.8 {d18-d19},[r2,: 128]
662
- vmlal.s32 q0,d30,d8
663
- add r2,sp,#672
664
- vld1.8 {d20-d21},[r2,: 128]
665
- vmlal.s32 q5,d30,d29
666
- add r2,sp,#608
667
- vld1.8 {d24-d25},[r2,: 128]
668
- vmlal.s32 q1,d30,d28
669
- vadd.i64 q13,q0,q11
670
- vadd.i64 q14,q5,q11
671
- vmlal.s32 q6,d30,d9
672
- vshr.s64 q4,q13,#26
673
- vshr.s64 q13,q14,#26
674
- vadd.i64 q7,q7,q4
675
- vshl.i64 q4,q4,#26
676
- vadd.i64 q14,q7,q3
677
- vadd.i64 q9,q9,q13
678
- vshl.i64 q13,q13,#26
679
- vadd.i64 q15,q9,q3
680
- vsub.i64 q0,q0,q4
681
- vshr.s64 q4,q14,#25
682
- vsub.i64 q5,q5,q13
683
- vshr.s64 q13,q15,#25
684
- vadd.i64 q6,q6,q4
685
- vshl.i64 q4,q4,#25
686
- vadd.i64 q14,q6,q11
687
- vadd.i64 q2,q2,q13
688
- vsub.i64 q4,q7,q4
689
- vshr.s64 q7,q14,#26
690
- vshl.i64 q13,q13,#25
691
- vadd.i64 q14,q2,q11
692
- vadd.i64 q8,q8,q7
693
- vshl.i64 q7,q7,#26
694
- vadd.i64 q15,q8,q3
695
- vsub.i64 q9,q9,q13
696
- vshr.s64 q13,q14,#26
697
- vsub.i64 q6,q6,q7
698
- vshr.s64 q7,q15,#25
699
- vadd.i64 q10,q10,q13
700
- vshl.i64 q13,q13,#26
701
- vadd.i64 q14,q10,q3
702
- vadd.i64 q1,q1,q7
703
- add r2,r3,#144
704
- vshl.i64 q7,q7,#25
705
- add r4,r3,#96
706
- vadd.i64 q15,q1,q11
707
- add r2,r2,#8
708
- vsub.i64 q2,q2,q13
709
- add r4,r4,#8
710
- vshr.s64 q13,q14,#25
711
- vsub.i64 q7,q8,q7
712
- vshr.s64 q8,q15,#26
713
- vadd.i64 q14,q13,q13
714
- vadd.i64 q12,q12,q8
715
- vtrn.32 d12,d14
716
- vshl.i64 q8,q8,#26
717
- vtrn.32 d13,d15
718
- vadd.i64 q3,q12,q3
719
- vadd.i64 q0,q0,q14
720
- vst1.8 d12,[r2,: 64]!
721
- vshl.i64 q7,q13,#4
722
- vst1.8 d13,[r4,: 64]!
723
- vsub.i64 q1,q1,q8
724
- vshr.s64 q3,q3,#25
725
- vadd.i64 q0,q0,q7
726
- vadd.i64 q5,q5,q3
727
- vshl.i64 q3,q3,#25
728
- vadd.i64 q6,q5,q11
729
- vadd.i64 q0,q0,q13
730
- vshl.i64 q7,q13,#25
731
- vadd.i64 q8,q0,q11
732
- vsub.i64 q3,q12,q3
733
- vshr.s64 q6,q6,#26
734
- vsub.i64 q7,q10,q7
735
- vtrn.32 d2,d6
736
- vshr.s64 q8,q8,#26
737
- vtrn.32 d3,d7
738
- vadd.i64 q3,q9,q6
739
- vst1.8 d2,[r2,: 64]
740
- vshl.i64 q6,q6,#26
741
- vst1.8 d3,[r4,: 64]
742
- vadd.i64 q1,q4,q8
743
- vtrn.32 d4,d14
744
- vshl.i64 q4,q8,#26
745
- vtrn.32 d5,d15
746
- vsub.i64 q5,q5,q6
747
- add r2,r2,#16
748
- vsub.i64 q0,q0,q4
749
- vst1.8 d4,[r2,: 64]
750
- add r4,r4,#16
751
- vst1.8 d5,[r4,: 64]
752
- vtrn.32 d10,d6
753
- vtrn.32 d11,d7
754
- sub r2,r2,#8
755
- sub r4,r4,#8
756
- vtrn.32 d0,d2
757
- vtrn.32 d1,d3
758
- vst1.8 d10,[r2,: 64]
759
- vst1.8 d11,[r4,: 64]
760
- sub r2,r2,#24
761
- sub r4,r4,#24
762
- vst1.8 d0,[r2,: 64]
763
- vst1.8 d1,[r4,: 64]
764
- add r2,r3,#288
765
- add r4,r3,#336
766
- vld1.8 {d0-d1},[r2,: 128]!
767
- vld1.8 {d2-d3},[r4,: 128]!
768
- vsub.i32 q0,q0,q1
769
- vld1.8 {d2-d3},[r2,: 128]!
770
- vld1.8 {d4-d5},[r4,: 128]!
771
- vsub.i32 q1,q1,q2
772
- add r5,r3,#240
773
- vld1.8 {d4},[r2,: 64]
774
- vld1.8 {d6},[r4,: 64]
775
- vsub.i32 q2,q2,q3
776
- vst1.8 {d0-d1},[r5,: 128]!
777
- vst1.8 {d2-d3},[r5,: 128]!
778
- vst1.8 d4,[r5,: 64]
779
- add r2,r3,#144
780
- add r4,r3,#96
781
- add r5,r3,#144
782
- add r6,r3,#192
783
- vld1.8 {d0-d1},[r2,: 128]!
784
- vld1.8 {d2-d3},[r4,: 128]!
785
- vsub.i32 q2,q0,q1
786
- vadd.i32 q0,q0,q1
787
- vld1.8 {d2-d3},[r2,: 128]!
788
- vld1.8 {d6-d7},[r4,: 128]!
789
- vsub.i32 q4,q1,q3
790
- vadd.i32 q1,q1,q3
791
- vld1.8 {d6},[r2,: 64]
792
- vld1.8 {d10},[r4,: 64]
793
- vsub.i32 q6,q3,q5
794
- vadd.i32 q3,q3,q5
795
- vst1.8 {d4-d5},[r5,: 128]!
796
- vst1.8 {d0-d1},[r6,: 128]!
797
- vst1.8 {d8-d9},[r5,: 128]!
798
- vst1.8 {d2-d3},[r6,: 128]!
799
- vst1.8 d12,[r5,: 64]
800
- vst1.8 d6,[r6,: 64]
801
- add r2,r3,#0
802
- add r4,r3,#240
803
- vld1.8 {d0-d1},[r4,: 128]!
804
- vld1.8 {d2-d3},[r4,: 128]!
805
- vld1.8 {d4},[r4,: 64]
806
- add r4,r3,#336
807
- vld1.8 {d6-d7},[r4,: 128]!
808
- vtrn.32 q0,q3
809
- vld1.8 {d8-d9},[r4,: 128]!
810
- vshl.i32 q5,q0,#4
811
- vtrn.32 q1,q4
812
- vshl.i32 q6,q3,#4
813
- vadd.i32 q5,q5,q0
814
- vadd.i32 q6,q6,q3
815
- vshl.i32 q7,q1,#4
816
- vld1.8 {d5},[r4,: 64]
817
- vshl.i32 q8,q4,#4
818
- vtrn.32 d4,d5
819
- vadd.i32 q7,q7,q1
820
- vadd.i32 q8,q8,q4
821
- vld1.8 {d18-d19},[r2,: 128]!
822
- vshl.i32 q10,q2,#4
823
- vld1.8 {d22-d23},[r2,: 128]!
824
- vadd.i32 q10,q10,q2
825
- vld1.8 {d24},[r2,: 64]
826
- vadd.i32 q5,q5,q0
827
- add r2,r3,#288
828
- vld1.8 {d26-d27},[r2,: 128]!
829
- vadd.i32 q6,q6,q3
830
- vld1.8 {d28-d29},[r2,: 128]!
831
- vadd.i32 q8,q8,q4
832
- vld1.8 {d25},[r2,: 64]
833
- vadd.i32 q10,q10,q2
834
- vtrn.32 q9,q13
835
- vadd.i32 q7,q7,q1
836
- vadd.i32 q5,q5,q0
837
- vtrn.32 q11,q14
838
- vadd.i32 q6,q6,q3
839
- add r2,sp,#560
840
- vadd.i32 q10,q10,q2
841
- vtrn.32 d24,d25
842
- vst1.8 {d12-d13},[r2,: 128]
843
- vshl.i32 q6,q13,#1
844
- add r2,sp,#576
845
- vst1.8 {d20-d21},[r2,: 128]
846
- vshl.i32 q10,q14,#1
847
- add r2,sp,#592
848
- vst1.8 {d12-d13},[r2,: 128]
849
- vshl.i32 q15,q12,#1
850
- vadd.i32 q8,q8,q4
851
- vext.32 d10,d31,d30,#0
852
- vadd.i32 q7,q7,q1
853
- add r2,sp,#608
854
- vst1.8 {d16-d17},[r2,: 128]
855
- vmull.s32 q8,d18,d5
856
- vmlal.s32 q8,d26,d4
857
- vmlal.s32 q8,d19,d9
858
- vmlal.s32 q8,d27,d3
859
- vmlal.s32 q8,d22,d8
860
- vmlal.s32 q8,d28,d2
861
- vmlal.s32 q8,d23,d7
862
- vmlal.s32 q8,d29,d1
863
- vmlal.s32 q8,d24,d6
864
- vmlal.s32 q8,d25,d0
865
- add r2,sp,#624
866
- vst1.8 {d14-d15},[r2,: 128]
867
- vmull.s32 q2,d18,d4
868
- vmlal.s32 q2,d12,d9
869
- vmlal.s32 q2,d13,d8
870
- vmlal.s32 q2,d19,d3
871
- vmlal.s32 q2,d22,d2
872
- vmlal.s32 q2,d23,d1
873
- vmlal.s32 q2,d24,d0
874
- add r2,sp,#640
875
- vst1.8 {d20-d21},[r2,: 128]
876
- vmull.s32 q7,d18,d9
877
- vmlal.s32 q7,d26,d3
878
- vmlal.s32 q7,d19,d8
879
- vmlal.s32 q7,d27,d2
880
- vmlal.s32 q7,d22,d7
881
- vmlal.s32 q7,d28,d1
882
- vmlal.s32 q7,d23,d6
883
- vmlal.s32 q7,d29,d0
884
- add r2,sp,#656
885
- vst1.8 {d10-d11},[r2,: 128]
886
- vmull.s32 q5,d18,d3
887
- vmlal.s32 q5,d19,d2
888
- vmlal.s32 q5,d22,d1
889
- vmlal.s32 q5,d23,d0
890
- vmlal.s32 q5,d12,d8
891
- add r2,sp,#672
892
- vst1.8 {d16-d17},[r2,: 128]
893
- vmull.s32 q4,d18,d8
894
- vmlal.s32 q4,d26,d2
895
- vmlal.s32 q4,d19,d7
896
- vmlal.s32 q4,d27,d1
897
- vmlal.s32 q4,d22,d6
898
- vmlal.s32 q4,d28,d0
899
- vmull.s32 q8,d18,d7
900
- vmlal.s32 q8,d26,d1
901
- vmlal.s32 q8,d19,d6
902
- vmlal.s32 q8,d27,d0
903
- add r2,sp,#576
904
- vld1.8 {d20-d21},[r2,: 128]
905
- vmlal.s32 q7,d24,d21
906
- vmlal.s32 q7,d25,d20
907
- vmlal.s32 q4,d23,d21
908
- vmlal.s32 q4,d29,d20
909
- vmlal.s32 q8,d22,d21
910
- vmlal.s32 q8,d28,d20
911
- vmlal.s32 q5,d24,d20
912
- add r2,sp,#576
913
- vst1.8 {d14-d15},[r2,: 128]
914
- vmull.s32 q7,d18,d6
915
- vmlal.s32 q7,d26,d0
916
- add r2,sp,#656
917
- vld1.8 {d30-d31},[r2,: 128]
918
- vmlal.s32 q2,d30,d21
919
- vmlal.s32 q7,d19,d21
920
- vmlal.s32 q7,d27,d20
921
- add r2,sp,#624
922
- vld1.8 {d26-d27},[r2,: 128]
923
- vmlal.s32 q4,d25,d27
924
- vmlal.s32 q8,d29,d27
925
- vmlal.s32 q8,d25,d26
926
- vmlal.s32 q7,d28,d27
927
- vmlal.s32 q7,d29,d26
928
- add r2,sp,#608
929
- vld1.8 {d28-d29},[r2,: 128]
930
- vmlal.s32 q4,d24,d29
931
- vmlal.s32 q8,d23,d29
932
- vmlal.s32 q8,d24,d28
933
- vmlal.s32 q7,d22,d29
934
- vmlal.s32 q7,d23,d28
935
- add r2,sp,#608
936
- vst1.8 {d8-d9},[r2,: 128]
937
- add r2,sp,#560
938
- vld1.8 {d8-d9},[r2,: 128]
939
- vmlal.s32 q7,d24,d9
940
- vmlal.s32 q7,d25,d31
941
- vmull.s32 q1,d18,d2
942
- vmlal.s32 q1,d19,d1
943
- vmlal.s32 q1,d22,d0
944
- vmlal.s32 q1,d24,d27
945
- vmlal.s32 q1,d23,d20
946
- vmlal.s32 q1,d12,d7
947
- vmlal.s32 q1,d13,d6
948
- vmull.s32 q6,d18,d1
949
- vmlal.s32 q6,d19,d0
950
- vmlal.s32 q6,d23,d27
951
- vmlal.s32 q6,d22,d20
952
- vmlal.s32 q6,d24,d26
953
- vmull.s32 q0,d18,d0
954
- vmlal.s32 q0,d22,d27
955
- vmlal.s32 q0,d23,d26
956
- vmlal.s32 q0,d24,d31
957
- vmlal.s32 q0,d19,d20
958
- add r2,sp,#640
959
- vld1.8 {d18-d19},[r2,: 128]
960
- vmlal.s32 q2,d18,d7
961
- vmlal.s32 q2,d19,d6
962
- vmlal.s32 q5,d18,d6
963
- vmlal.s32 q5,d19,d21
964
- vmlal.s32 q1,d18,d21
965
- vmlal.s32 q1,d19,d29
966
- vmlal.s32 q0,d18,d28
967
- vmlal.s32 q0,d19,d9
968
- vmlal.s32 q6,d18,d29
969
- vmlal.s32 q6,d19,d28
970
- add r2,sp,#592
971
- vld1.8 {d18-d19},[r2,: 128]
972
- add r2,sp,#512
973
- vld1.8 {d22-d23},[r2,: 128]
974
- vmlal.s32 q5,d19,d7
975
- vmlal.s32 q0,d18,d21
976
- vmlal.s32 q0,d19,d29
977
- vmlal.s32 q6,d18,d6
978
- add r2,sp,#528
979
- vld1.8 {d6-d7},[r2,: 128]
980
- vmlal.s32 q6,d19,d21
981
- add r2,sp,#576
982
- vld1.8 {d18-d19},[r2,: 128]
983
- vmlal.s32 q0,d30,d8
984
- add r2,sp,#672
985
- vld1.8 {d20-d21},[r2,: 128]
986
- vmlal.s32 q5,d30,d29
987
- add r2,sp,#608
988
- vld1.8 {d24-d25},[r2,: 128]
989
- vmlal.s32 q1,d30,d28
990
- vadd.i64 q13,q0,q11
991
- vadd.i64 q14,q5,q11
992
- vmlal.s32 q6,d30,d9
993
- vshr.s64 q4,q13,#26
994
- vshr.s64 q13,q14,#26
995
- vadd.i64 q7,q7,q4
996
- vshl.i64 q4,q4,#26
997
- vadd.i64 q14,q7,q3
998
- vadd.i64 q9,q9,q13
999
- vshl.i64 q13,q13,#26
1000
- vadd.i64 q15,q9,q3
1001
- vsub.i64 q0,q0,q4
1002
- vshr.s64 q4,q14,#25
1003
- vsub.i64 q5,q5,q13
1004
- vshr.s64 q13,q15,#25
1005
- vadd.i64 q6,q6,q4
1006
- vshl.i64 q4,q4,#25
1007
- vadd.i64 q14,q6,q11
1008
- vadd.i64 q2,q2,q13
1009
- vsub.i64 q4,q7,q4
1010
- vshr.s64 q7,q14,#26
1011
- vshl.i64 q13,q13,#25
1012
- vadd.i64 q14,q2,q11
1013
- vadd.i64 q8,q8,q7
1014
- vshl.i64 q7,q7,#26
1015
- vadd.i64 q15,q8,q3
1016
- vsub.i64 q9,q9,q13
1017
- vshr.s64 q13,q14,#26
1018
- vsub.i64 q6,q6,q7
1019
- vshr.s64 q7,q15,#25
1020
- vadd.i64 q10,q10,q13
1021
- vshl.i64 q13,q13,#26
1022
- vadd.i64 q14,q10,q3
1023
- vadd.i64 q1,q1,q7
1024
- add r2,r3,#288
1025
- vshl.i64 q7,q7,#25
1026
- add r4,r3,#96
1027
- vadd.i64 q15,q1,q11
1028
- add r2,r2,#8
1029
- vsub.i64 q2,q2,q13
1030
- add r4,r4,#8
1031
- vshr.s64 q13,q14,#25
1032
- vsub.i64 q7,q8,q7
1033
- vshr.s64 q8,q15,#26
1034
- vadd.i64 q14,q13,q13
1035
- vadd.i64 q12,q12,q8
1036
- vtrn.32 d12,d14
1037
- vshl.i64 q8,q8,#26
1038
- vtrn.32 d13,d15
1039
- vadd.i64 q3,q12,q3
1040
- vadd.i64 q0,q0,q14
1041
- vst1.8 d12,[r2,: 64]!
1042
- vshl.i64 q7,q13,#4
1043
- vst1.8 d13,[r4,: 64]!
1044
- vsub.i64 q1,q1,q8
1045
- vshr.s64 q3,q3,#25
1046
- vadd.i64 q0,q0,q7
1047
- vadd.i64 q5,q5,q3
1048
- vshl.i64 q3,q3,#25
1049
- vadd.i64 q6,q5,q11
1050
- vadd.i64 q0,q0,q13
1051
- vshl.i64 q7,q13,#25
1052
- vadd.i64 q8,q0,q11
1053
- vsub.i64 q3,q12,q3
1054
- vshr.s64 q6,q6,#26
1055
- vsub.i64 q7,q10,q7
1056
- vtrn.32 d2,d6
1057
- vshr.s64 q8,q8,#26
1058
- vtrn.32 d3,d7
1059
- vadd.i64 q3,q9,q6
1060
- vst1.8 d2,[r2,: 64]
1061
- vshl.i64 q6,q6,#26
1062
- vst1.8 d3,[r4,: 64]
1063
- vadd.i64 q1,q4,q8
1064
- vtrn.32 d4,d14
1065
- vshl.i64 q4,q8,#26
1066
- vtrn.32 d5,d15
1067
- vsub.i64 q5,q5,q6
1068
- add r2,r2,#16
1069
- vsub.i64 q0,q0,q4
1070
- vst1.8 d4,[r2,: 64]
1071
- add r4,r4,#16
1072
- vst1.8 d5,[r4,: 64]
1073
- vtrn.32 d10,d6
1074
- vtrn.32 d11,d7
1075
- sub r2,r2,#8
1076
- sub r4,r4,#8
1077
- vtrn.32 d0,d2
1078
- vtrn.32 d1,d3
1079
- vst1.8 d10,[r2,: 64]
1080
- vst1.8 d11,[r4,: 64]
1081
- sub r2,r2,#24
1082
- sub r4,r4,#24
1083
- vst1.8 d0,[r2,: 64]
1084
- vst1.8 d1,[r4,: 64]
1085
- add r2,sp,#544
1086
- add r4,r3,#144
1087
- add r5,r3,#192
1088
- vld1.8 {d0-d1},[r2,: 128]
1089
- vld1.8 {d2-d3},[r4,: 128]!
1090
- vld1.8 {d4-d5},[r5,: 128]!
1091
- vzip.i32 q1,q2
1092
- vld1.8 {d6-d7},[r4,: 128]!
1093
- vld1.8 {d8-d9},[r5,: 128]!
1094
- vshl.i32 q5,q1,#1
1095
- vzip.i32 q3,q4
1096
- vshl.i32 q6,q2,#1
1097
- vld1.8 {d14},[r4,: 64]
1098
- vshl.i32 q8,q3,#1
1099
- vld1.8 {d15},[r5,: 64]
1100
- vshl.i32 q9,q4,#1
1101
- vmul.i32 d21,d7,d1
1102
- vtrn.32 d14,d15
1103
- vmul.i32 q11,q4,q0
1104
- vmul.i32 q0,q7,q0
1105
- vmull.s32 q12,d2,d2
1106
- vmlal.s32 q12,d11,d1
1107
- vmlal.s32 q12,d12,d0
1108
- vmlal.s32 q12,d13,d23
1109
- vmlal.s32 q12,d16,d22
1110
- vmlal.s32 q12,d7,d21
1111
- vmull.s32 q10,d2,d11
1112
- vmlal.s32 q10,d4,d1
1113
- vmlal.s32 q10,d13,d0
1114
- vmlal.s32 q10,d6,d23
1115
- vmlal.s32 q10,d17,d22
1116
- vmull.s32 q13,d10,d4
1117
- vmlal.s32 q13,d11,d3
1118
- vmlal.s32 q13,d13,d1
1119
- vmlal.s32 q13,d16,d0
1120
- vmlal.s32 q13,d17,d23
1121
- vmlal.s32 q13,d8,d22
1122
- vmull.s32 q1,d10,d5
1123
- vmlal.s32 q1,d11,d4
1124
- vmlal.s32 q1,d6,d1
1125
- vmlal.s32 q1,d17,d0
1126
- vmlal.s32 q1,d8,d23
1127
- vmull.s32 q14,d10,d6
1128
- vmlal.s32 q14,d11,d13
1129
- vmlal.s32 q14,d4,d4
1130
- vmlal.s32 q14,d17,d1
1131
- vmlal.s32 q14,d18,d0
1132
- vmlal.s32 q14,d9,d23
1133
- vmull.s32 q11,d10,d7
1134
- vmlal.s32 q11,d11,d6
1135
- vmlal.s32 q11,d12,d5
1136
- vmlal.s32 q11,d8,d1
1137
- vmlal.s32 q11,d19,d0
1138
- vmull.s32 q15,d10,d8
1139
- vmlal.s32 q15,d11,d17
1140
- vmlal.s32 q15,d12,d6
1141
- vmlal.s32 q15,d13,d5
1142
- vmlal.s32 q15,d19,d1
1143
- vmlal.s32 q15,d14,d0
1144
- vmull.s32 q2,d10,d9
1145
- vmlal.s32 q2,d11,d8
1146
- vmlal.s32 q2,d12,d7
1147
- vmlal.s32 q2,d13,d6
1148
- vmlal.s32 q2,d14,d1
1149
- vmull.s32 q0,d15,d1
1150
- vmlal.s32 q0,d10,d14
1151
- vmlal.s32 q0,d11,d19
1152
- vmlal.s32 q0,d12,d8
1153
- vmlal.s32 q0,d13,d17
1154
- vmlal.s32 q0,d6,d6
1155
- add r2,sp,#512
1156
- vld1.8 {d18-d19},[r2,: 128]
1157
- vmull.s32 q3,d16,d7
1158
- vmlal.s32 q3,d10,d15
1159
- vmlal.s32 q3,d11,d14
1160
- vmlal.s32 q3,d12,d9
1161
- vmlal.s32 q3,d13,d8
1162
- add r2,sp,#528
1163
- vld1.8 {d8-d9},[r2,: 128]
1164
- vadd.i64 q5,q12,q9
1165
- vadd.i64 q6,q15,q9
1166
- vshr.s64 q5,q5,#26
1167
- vshr.s64 q6,q6,#26
1168
- vadd.i64 q7,q10,q5
1169
- vshl.i64 q5,q5,#26
1170
- vadd.i64 q8,q7,q4
1171
- vadd.i64 q2,q2,q6
1172
- vshl.i64 q6,q6,#26
1173
- vadd.i64 q10,q2,q4
1174
- vsub.i64 q5,q12,q5
1175
- vshr.s64 q8,q8,#25
1176
- vsub.i64 q6,q15,q6
1177
- vshr.s64 q10,q10,#25
1178
- vadd.i64 q12,q13,q8
1179
- vshl.i64 q8,q8,#25
1180
- vadd.i64 q13,q12,q9
1181
- vadd.i64 q0,q0,q10
1182
- vsub.i64 q7,q7,q8
1183
- vshr.s64 q8,q13,#26
1184
- vshl.i64 q10,q10,#25
1185
- vadd.i64 q13,q0,q9
1186
- vadd.i64 q1,q1,q8
1187
- vshl.i64 q8,q8,#26
1188
- vadd.i64 q15,q1,q4
1189
- vsub.i64 q2,q2,q10
1190
- vshr.s64 q10,q13,#26
1191
- vsub.i64 q8,q12,q8
1192
- vshr.s64 q12,q15,#25
1193
- vadd.i64 q3,q3,q10
1194
- vshl.i64 q10,q10,#26
1195
- vadd.i64 q13,q3,q4
1196
- vadd.i64 q14,q14,q12
1197
- add r2,r3,#144
1198
- vshl.i64 q12,q12,#25
1199
- add r4,r3,#192
1200
- vadd.i64 q15,q14,q9
1201
- add r2,r2,#8
1202
- vsub.i64 q0,q0,q10
1203
- add r4,r4,#8
1204
- vshr.s64 q10,q13,#25
1205
- vsub.i64 q1,q1,q12
1206
- vshr.s64 q12,q15,#26
1207
- vadd.i64 q13,q10,q10
1208
- vadd.i64 q11,q11,q12
1209
- vtrn.32 d16,d2
1210
- vshl.i64 q12,q12,#26
1211
- vtrn.32 d17,d3
1212
- vadd.i64 q1,q11,q4
1213
- vadd.i64 q4,q5,q13
1214
- vst1.8 d16,[r2,: 64]!
1215
- vshl.i64 q5,q10,#4
1216
- vst1.8 d17,[r4,: 64]!
1217
- vsub.i64 q8,q14,q12
1218
- vshr.s64 q1,q1,#25
1219
- vadd.i64 q4,q4,q5
1220
- vadd.i64 q5,q6,q1
1221
- vshl.i64 q1,q1,#25
1222
- vadd.i64 q6,q5,q9
1223
- vadd.i64 q4,q4,q10
1224
- vshl.i64 q10,q10,#25
1225
- vadd.i64 q9,q4,q9
1226
- vsub.i64 q1,q11,q1
1227
- vshr.s64 q6,q6,#26
1228
- vsub.i64 q3,q3,q10
1229
- vtrn.32 d16,d2
1230
- vshr.s64 q9,q9,#26
1231
- vtrn.32 d17,d3
1232
- vadd.i64 q1,q2,q6
1233
- vst1.8 d16,[r2,: 64]
1234
- vshl.i64 q2,q6,#26
1235
- vst1.8 d17,[r4,: 64]
1236
- vadd.i64 q6,q7,q9
1237
- vtrn.32 d0,d6
1238
- vshl.i64 q7,q9,#26
1239
- vtrn.32 d1,d7
1240
- vsub.i64 q2,q5,q2
1241
- add r2,r2,#16
1242
- vsub.i64 q3,q4,q7
1243
- vst1.8 d0,[r2,: 64]
1244
- add r4,r4,#16
1245
- vst1.8 d1,[r4,: 64]
1246
- vtrn.32 d4,d2
1247
- vtrn.32 d5,d3
1248
- sub r2,r2,#8
1249
- sub r4,r4,#8
1250
- vtrn.32 d6,d12
1251
- vtrn.32 d7,d13
1252
- vst1.8 d4,[r2,: 64]
1253
- vst1.8 d5,[r4,: 64]
1254
- sub r2,r2,#24
1255
- sub r4,r4,#24
1256
- vst1.8 d6,[r2,: 64]
1257
- vst1.8 d7,[r4,: 64]
1258
- add r2,r3,#336
1259
- add r4,r3,#288
1260
- vld1.8 {d0-d1},[r2,: 128]!
1261
- vld1.8 {d2-d3},[r4,: 128]!
1262
- vadd.i32 q0,q0,q1
1263
- vld1.8 {d2-d3},[r2,: 128]!
1264
- vld1.8 {d4-d5},[r4,: 128]!
1265
- vadd.i32 q1,q1,q2
1266
- add r5,r3,#288
1267
- vld1.8 {d4},[r2,: 64]
1268
- vld1.8 {d6},[r4,: 64]
1269
- vadd.i32 q2,q2,q3
1270
- vst1.8 {d0-d1},[r5,: 128]!
1271
- vst1.8 {d2-d3},[r5,: 128]!
1272
- vst1.8 d4,[r5,: 64]
1273
- add r2,r3,#48
1274
- add r4,r3,#144
1275
- vld1.8 {d0-d1},[r4,: 128]!
1276
- vld1.8 {d2-d3},[r4,: 128]!
1277
- vld1.8 {d4},[r4,: 64]
1278
- add r4,r3,#288
1279
- vld1.8 {d6-d7},[r4,: 128]!
1280
- vtrn.32 q0,q3
1281
- vld1.8 {d8-d9},[r4,: 128]!
1282
- vshl.i32 q5,q0,#4
1283
- vtrn.32 q1,q4
1284
- vshl.i32 q6,q3,#4
1285
- vadd.i32 q5,q5,q0
1286
- vadd.i32 q6,q6,q3
1287
- vshl.i32 q7,q1,#4
1288
- vld1.8 {d5},[r4,: 64]
1289
- vshl.i32 q8,q4,#4
1290
- vtrn.32 d4,d5
1291
- vadd.i32 q7,q7,q1
1292
- vadd.i32 q8,q8,q4
1293
- vld1.8 {d18-d19},[r2,: 128]!
1294
- vshl.i32 q10,q2,#4
1295
- vld1.8 {d22-d23},[r2,: 128]!
1296
- vadd.i32 q10,q10,q2
1297
- vld1.8 {d24},[r2,: 64]
1298
- vadd.i32 q5,q5,q0
1299
- add r2,r3,#240
1300
- vld1.8 {d26-d27},[r2,: 128]!
1301
- vadd.i32 q6,q6,q3
1302
- vld1.8 {d28-d29},[r2,: 128]!
1303
- vadd.i32 q8,q8,q4
1304
- vld1.8 {d25},[r2,: 64]
1305
- vadd.i32 q10,q10,q2
1306
- vtrn.32 q9,q13
1307
- vadd.i32 q7,q7,q1
1308
- vadd.i32 q5,q5,q0
1309
- vtrn.32 q11,q14
1310
- vadd.i32 q6,q6,q3
1311
- add r2,sp,#560
1312
- vadd.i32 q10,q10,q2
1313
- vtrn.32 d24,d25
1314
- vst1.8 {d12-d13},[r2,: 128]
1315
- vshl.i32 q6,q13,#1
1316
- add r2,sp,#576
1317
- vst1.8 {d20-d21},[r2,: 128]
1318
- vshl.i32 q10,q14,#1
1319
- add r2,sp,#592
1320
- vst1.8 {d12-d13},[r2,: 128]
1321
- vshl.i32 q15,q12,#1
1322
- vadd.i32 q8,q8,q4
1323
- vext.32 d10,d31,d30,#0
1324
- vadd.i32 q7,q7,q1
1325
- add r2,sp,#608
1326
- vst1.8 {d16-d17},[r2,: 128]
1327
- vmull.s32 q8,d18,d5
1328
- vmlal.s32 q8,d26,d4
1329
- vmlal.s32 q8,d19,d9
1330
- vmlal.s32 q8,d27,d3
1331
- vmlal.s32 q8,d22,d8
1332
- vmlal.s32 q8,d28,d2
1333
- vmlal.s32 q8,d23,d7
1334
- vmlal.s32 q8,d29,d1
1335
- vmlal.s32 q8,d24,d6
1336
- vmlal.s32 q8,d25,d0
1337
- add r2,sp,#624
1338
- vst1.8 {d14-d15},[r2,: 128]
1339
- vmull.s32 q2,d18,d4
1340
- vmlal.s32 q2,d12,d9
1341
- vmlal.s32 q2,d13,d8
1342
- vmlal.s32 q2,d19,d3
1343
- vmlal.s32 q2,d22,d2
1344
- vmlal.s32 q2,d23,d1
1345
- vmlal.s32 q2,d24,d0
1346
- add r2,sp,#640
1347
- vst1.8 {d20-d21},[r2,: 128]
1348
- vmull.s32 q7,d18,d9
1349
- vmlal.s32 q7,d26,d3
1350
- vmlal.s32 q7,d19,d8
1351
- vmlal.s32 q7,d27,d2
1352
- vmlal.s32 q7,d22,d7
1353
- vmlal.s32 q7,d28,d1
1354
- vmlal.s32 q7,d23,d6
1355
- vmlal.s32 q7,d29,d0
1356
- add r2,sp,#656
1357
- vst1.8 {d10-d11},[r2,: 128]
1358
- vmull.s32 q5,d18,d3
1359
- vmlal.s32 q5,d19,d2
1360
- vmlal.s32 q5,d22,d1
1361
- vmlal.s32 q5,d23,d0
1362
- vmlal.s32 q5,d12,d8
1363
- add r2,sp,#672
1364
- vst1.8 {d16-d17},[r2,: 128]
1365
- vmull.s32 q4,d18,d8
1366
- vmlal.s32 q4,d26,d2
1367
- vmlal.s32 q4,d19,d7
1368
- vmlal.s32 q4,d27,d1
1369
- vmlal.s32 q4,d22,d6
1370
- vmlal.s32 q4,d28,d0
1371
- vmull.s32 q8,d18,d7
1372
- vmlal.s32 q8,d26,d1
1373
- vmlal.s32 q8,d19,d6
1374
- vmlal.s32 q8,d27,d0
1375
- add r2,sp,#576
1376
- vld1.8 {d20-d21},[r2,: 128]
1377
- vmlal.s32 q7,d24,d21
1378
- vmlal.s32 q7,d25,d20
1379
- vmlal.s32 q4,d23,d21
1380
- vmlal.s32 q4,d29,d20
1381
- vmlal.s32 q8,d22,d21
1382
- vmlal.s32 q8,d28,d20
1383
- vmlal.s32 q5,d24,d20
1384
- add r2,sp,#576
1385
- vst1.8 {d14-d15},[r2,: 128]
1386
- vmull.s32 q7,d18,d6
1387
- vmlal.s32 q7,d26,d0
1388
- add r2,sp,#656
1389
- vld1.8 {d30-d31},[r2,: 128]
1390
- vmlal.s32 q2,d30,d21
1391
- vmlal.s32 q7,d19,d21
1392
- vmlal.s32 q7,d27,d20
1393
- add r2,sp,#624
1394
- vld1.8 {d26-d27},[r2,: 128]
1395
- vmlal.s32 q4,d25,d27
1396
- vmlal.s32 q8,d29,d27
1397
- vmlal.s32 q8,d25,d26
1398
- vmlal.s32 q7,d28,d27
1399
- vmlal.s32 q7,d29,d26
1400
- add r2,sp,#608
1401
- vld1.8 {d28-d29},[r2,: 128]
1402
- vmlal.s32 q4,d24,d29
1403
- vmlal.s32 q8,d23,d29
1404
- vmlal.s32 q8,d24,d28
1405
- vmlal.s32 q7,d22,d29
1406
- vmlal.s32 q7,d23,d28
1407
- add r2,sp,#608
1408
- vst1.8 {d8-d9},[r2,: 128]
1409
- add r2,sp,#560
1410
- vld1.8 {d8-d9},[r2,: 128]
1411
- vmlal.s32 q7,d24,d9
1412
- vmlal.s32 q7,d25,d31
1413
- vmull.s32 q1,d18,d2
1414
- vmlal.s32 q1,d19,d1
1415
- vmlal.s32 q1,d22,d0
1416
- vmlal.s32 q1,d24,d27
1417
- vmlal.s32 q1,d23,d20
1418
- vmlal.s32 q1,d12,d7
1419
- vmlal.s32 q1,d13,d6
1420
- vmull.s32 q6,d18,d1
1421
- vmlal.s32 q6,d19,d0
1422
- vmlal.s32 q6,d23,d27
1423
- vmlal.s32 q6,d22,d20
1424
- vmlal.s32 q6,d24,d26
1425
- vmull.s32 q0,d18,d0
1426
- vmlal.s32 q0,d22,d27
1427
- vmlal.s32 q0,d23,d26
1428
- vmlal.s32 q0,d24,d31
1429
- vmlal.s32 q0,d19,d20
1430
- add r2,sp,#640
1431
- vld1.8 {d18-d19},[r2,: 128]
1432
- vmlal.s32 q2,d18,d7
1433
- vmlal.s32 q2,d19,d6
1434
- vmlal.s32 q5,d18,d6
1435
- vmlal.s32 q5,d19,d21
1436
- vmlal.s32 q1,d18,d21
1437
- vmlal.s32 q1,d19,d29
1438
- vmlal.s32 q0,d18,d28
1439
- vmlal.s32 q0,d19,d9
1440
- vmlal.s32 q6,d18,d29
1441
- vmlal.s32 q6,d19,d28
1442
- add r2,sp,#592
1443
- vld1.8 {d18-d19},[r2,: 128]
1444
- add r2,sp,#512
1445
- vld1.8 {d22-d23},[r2,: 128]
1446
- vmlal.s32 q5,d19,d7
1447
- vmlal.s32 q0,d18,d21
1448
- vmlal.s32 q0,d19,d29
1449
- vmlal.s32 q6,d18,d6
1450
- add r2,sp,#528
1451
- vld1.8 {d6-d7},[r2,: 128]
1452
- vmlal.s32 q6,d19,d21
1453
- add r2,sp,#576
1454
- vld1.8 {d18-d19},[r2,: 128]
1455
- vmlal.s32 q0,d30,d8
1456
- add r2,sp,#672
1457
- vld1.8 {d20-d21},[r2,: 128]
1458
- vmlal.s32 q5,d30,d29
1459
- add r2,sp,#608
1460
- vld1.8 {d24-d25},[r2,: 128]
1461
- vmlal.s32 q1,d30,d28
1462
- vadd.i64 q13,q0,q11
1463
- vadd.i64 q14,q5,q11
1464
- vmlal.s32 q6,d30,d9
1465
- vshr.s64 q4,q13,#26
1466
- vshr.s64 q13,q14,#26
1467
- vadd.i64 q7,q7,q4
1468
- vshl.i64 q4,q4,#26
1469
- vadd.i64 q14,q7,q3
1470
- vadd.i64 q9,q9,q13
1471
- vshl.i64 q13,q13,#26
1472
- vadd.i64 q15,q9,q3
1473
- vsub.i64 q0,q0,q4
1474
- vshr.s64 q4,q14,#25
1475
- vsub.i64 q5,q5,q13
1476
- vshr.s64 q13,q15,#25
1477
- vadd.i64 q6,q6,q4
1478
- vshl.i64 q4,q4,#25
1479
- vadd.i64 q14,q6,q11
1480
- vadd.i64 q2,q2,q13
1481
- vsub.i64 q4,q7,q4
1482
- vshr.s64 q7,q14,#26
1483
- vshl.i64 q13,q13,#25
1484
- vadd.i64 q14,q2,q11
1485
- vadd.i64 q8,q8,q7
1486
- vshl.i64 q7,q7,#26
1487
- vadd.i64 q15,q8,q3
1488
- vsub.i64 q9,q9,q13
1489
- vshr.s64 q13,q14,#26
1490
- vsub.i64 q6,q6,q7
1491
- vshr.s64 q7,q15,#25
1492
- vadd.i64 q10,q10,q13
1493
- vshl.i64 q13,q13,#26
1494
- vadd.i64 q14,q10,q3
1495
- vadd.i64 q1,q1,q7
1496
- add r2,r3,#240
1497
- vshl.i64 q7,q7,#25
1498
- add r4,r3,#144
1499
- vadd.i64 q15,q1,q11
1500
- add r2,r2,#8
1501
- vsub.i64 q2,q2,q13
1502
- add r4,r4,#8
1503
- vshr.s64 q13,q14,#25
1504
- vsub.i64 q7,q8,q7
1505
- vshr.s64 q8,q15,#26
1506
- vadd.i64 q14,q13,q13
1507
- vadd.i64 q12,q12,q8
1508
- vtrn.32 d12,d14
1509
- vshl.i64 q8,q8,#26
1510
- vtrn.32 d13,d15
1511
- vadd.i64 q3,q12,q3
1512
- vadd.i64 q0,q0,q14
1513
- vst1.8 d12,[r2,: 64]!
1514
- vshl.i64 q7,q13,#4
1515
- vst1.8 d13,[r4,: 64]!
1516
- vsub.i64 q1,q1,q8
1517
- vshr.s64 q3,q3,#25
1518
- vadd.i64 q0,q0,q7
1519
- vadd.i64 q5,q5,q3
1520
- vshl.i64 q3,q3,#25
1521
- vadd.i64 q6,q5,q11
1522
- vadd.i64 q0,q0,q13
1523
- vshl.i64 q7,q13,#25
1524
- vadd.i64 q8,q0,q11
1525
- vsub.i64 q3,q12,q3
1526
- vshr.s64 q6,q6,#26
1527
- vsub.i64 q7,q10,q7
1528
- vtrn.32 d2,d6
1529
- vshr.s64 q8,q8,#26
1530
- vtrn.32 d3,d7
1531
- vadd.i64 q3,q9,q6
1532
- vst1.8 d2,[r2,: 64]
1533
- vshl.i64 q6,q6,#26
1534
- vst1.8 d3,[r4,: 64]
1535
- vadd.i64 q1,q4,q8
1536
- vtrn.32 d4,d14
1537
- vshl.i64 q4,q8,#26
1538
- vtrn.32 d5,d15
1539
- vsub.i64 q5,q5,q6
1540
- add r2,r2,#16
1541
- vsub.i64 q0,q0,q4
1542
- vst1.8 d4,[r2,: 64]
1543
- add r4,r4,#16
1544
- vst1.8 d5,[r4,: 64]
1545
- vtrn.32 d10,d6
1546
- vtrn.32 d11,d7
1547
- sub r2,r2,#8
1548
- sub r4,r4,#8
1549
- vtrn.32 d0,d2
1550
- vtrn.32 d1,d3
1551
- vst1.8 d10,[r2,: 64]
1552
- vst1.8 d11,[r4,: 64]
1553
- sub r2,r2,#24
1554
- sub r4,r4,#24
1555
- vst1.8 d0,[r2,: 64]
1556
- vst1.8 d1,[r4,: 64]
1557
- ldr r2,[sp,#488]
1558
- ldr r4,[sp,#492]
1559
- subs r5,r2,#1
1560
- bge ._mainloop
1561
- add r1,r3,#144
1562
- add r2,r3,#336
1563
- vld1.8 {d0-d1},[r1,: 128]!
1564
- vld1.8 {d2-d3},[r1,: 128]!
1565
- vld1.8 {d4},[r1,: 64]
1566
- vst1.8 {d0-d1},[r2,: 128]!
1567
- vst1.8 {d2-d3},[r2,: 128]!
1568
- vst1.8 d4,[r2,: 64]
1569
- ldr r1,=0
1570
- ._invertloop:
1571
- add r2,r3,#144
1572
- ldr r4,=0
1573
- ldr r5,=2
1574
- cmp r1,#1
1575
- ldreq r5,=1
1576
- addeq r2,r3,#336
1577
- addeq r4,r3,#48
1578
- cmp r1,#2
1579
- ldreq r5,=1
1580
- addeq r2,r3,#48
1581
- cmp r1,#3
1582
- ldreq r5,=5
1583
- addeq r4,r3,#336
1584
- cmp r1,#4
1585
- ldreq r5,=10
1586
- cmp r1,#5
1587
- ldreq r5,=20
1588
- cmp r1,#6
1589
- ldreq r5,=10
1590
- addeq r2,r3,#336
1591
- addeq r4,r3,#336
1592
- cmp r1,#7
1593
- ldreq r5,=50
1594
- cmp r1,#8
1595
- ldreq r5,=100
1596
- cmp r1,#9
1597
- ldreq r5,=50
1598
- addeq r2,r3,#336
1599
- cmp r1,#10
1600
- ldreq r5,=5
1601
- addeq r2,r3,#48
1602
- cmp r1,#11
1603
- ldreq r5,=0
1604
- addeq r2,r3,#96
1605
- add r6,r3,#144
1606
- add r7,r3,#288
1607
- vld1.8 {d0-d1},[r6,: 128]!
1608
- vld1.8 {d2-d3},[r6,: 128]!
1609
- vld1.8 {d4},[r6,: 64]
1610
- vst1.8 {d0-d1},[r7,: 128]!
1611
- vst1.8 {d2-d3},[r7,: 128]!
1612
- vst1.8 d4,[r7,: 64]
1613
- cmp r5,#0
1614
- beq ._skipsquaringloop
1615
- ._squaringloop:
1616
- add r6,r3,#288
1617
- add r7,r3,#288
1618
- add r8,r3,#288
1619
- vmov.i32 q0,#19
1620
- vmov.i32 q1,#0
1621
- vmov.i32 q2,#1
1622
- vzip.i32 q1,q2
1623
- vld1.8 {d4-d5},[r7,: 128]!
1624
- vld1.8 {d6-d7},[r7,: 128]!
1625
- vld1.8 {d9},[r7,: 64]
1626
- vld1.8 {d10-d11},[r6,: 128]!
1627
- add r7,sp,#416
1628
- vld1.8 {d12-d13},[r6,: 128]!
1629
- vmul.i32 q7,q2,q0
1630
- vld1.8 {d8},[r6,: 64]
1631
- vext.32 d17,d11,d10,#1
1632
- vmul.i32 q9,q3,q0
1633
- vext.32 d16,d10,d8,#1
1634
- vshl.u32 q10,q5,q1
1635
- vext.32 d22,d14,d4,#1
1636
- vext.32 d24,d18,d6,#1
1637
- vshl.u32 q13,q6,q1
1638
- vshl.u32 d28,d8,d2
1639
- vrev64.i32 d22,d22
1640
- vmul.i32 d1,d9,d1
1641
- vrev64.i32 d24,d24
1642
- vext.32 d29,d8,d13,#1
1643
- vext.32 d0,d1,d9,#1
1644
- vrev64.i32 d0,d0
1645
- vext.32 d2,d9,d1,#1
1646
- vext.32 d23,d15,d5,#1
1647
- vmull.s32 q4,d20,d4
1648
- vrev64.i32 d23,d23
1649
- vmlal.s32 q4,d21,d1
1650
- vrev64.i32 d2,d2
1651
- vmlal.s32 q4,d26,d19
1652
- vext.32 d3,d5,d15,#1
1653
- vmlal.s32 q4,d27,d18
1654
- vrev64.i32 d3,d3
1655
- vmlal.s32 q4,d28,d15
1656
- vext.32 d14,d12,d11,#1
1657
- vmull.s32 q5,d16,d23
1658
- vext.32 d15,d13,d12,#1
1659
- vmlal.s32 q5,d17,d4
1660
- vst1.8 d8,[r7,: 64]!
1661
- vmlal.s32 q5,d14,d1
1662
- vext.32 d12,d9,d8,#0
1663
- vmlal.s32 q5,d15,d19
1664
- vmov.i64 d13,#0
1665
- vmlal.s32 q5,d29,d18
1666
- vext.32 d25,d19,d7,#1
1667
- vmlal.s32 q6,d20,d5
1668
- vrev64.i32 d25,d25
1669
- vmlal.s32 q6,d21,d4
1670
- vst1.8 d11,[r7,: 64]!
1671
- vmlal.s32 q6,d26,d1
1672
- vext.32 d9,d10,d10,#0
1673
- vmlal.s32 q6,d27,d19
1674
- vmov.i64 d8,#0
1675
- vmlal.s32 q6,d28,d18
1676
- vmlal.s32 q4,d16,d24
1677
- vmlal.s32 q4,d17,d5
1678
- vmlal.s32 q4,d14,d4
1679
- vst1.8 d12,[r7,: 64]!
1680
- vmlal.s32 q4,d15,d1
1681
- vext.32 d10,d13,d12,#0
1682
- vmlal.s32 q4,d29,d19
1683
- vmov.i64 d11,#0
1684
- vmlal.s32 q5,d20,d6
1685
- vmlal.s32 q5,d21,d5
1686
- vmlal.s32 q5,d26,d4
1687
- vext.32 d13,d8,d8,#0
1688
- vmlal.s32 q5,d27,d1
1689
- vmov.i64 d12,#0
1690
- vmlal.s32 q5,d28,d19
1691
- vst1.8 d9,[r7,: 64]!
1692
- vmlal.s32 q6,d16,d25
1693
- vmlal.s32 q6,d17,d6
1694
- vst1.8 d10,[r7,: 64]
1695
- vmlal.s32 q6,d14,d5
1696
- vext.32 d8,d11,d10,#0
1697
- vmlal.s32 q6,d15,d4
1698
- vmov.i64 d9,#0
1699
- vmlal.s32 q6,d29,d1
1700
- vmlal.s32 q4,d20,d7
1701
- vmlal.s32 q4,d21,d6
1702
- vmlal.s32 q4,d26,d5
1703
- vext.32 d11,d12,d12,#0
1704
- vmlal.s32 q4,d27,d4
1705
- vmov.i64 d10,#0
1706
- vmlal.s32 q4,d28,d1
1707
- vmlal.s32 q5,d16,d0
1708
- sub r6,r7,#32
1709
- vmlal.s32 q5,d17,d7
1710
- vmlal.s32 q5,d14,d6
1711
- vext.32 d30,d9,d8,#0
1712
- vmlal.s32 q5,d15,d5
1713
- vld1.8 {d31},[r6,: 64]!
1714
- vmlal.s32 q5,d29,d4
1715
- vmlal.s32 q15,d20,d0
1716
- vext.32 d0,d6,d18,#1
1717
- vmlal.s32 q15,d21,d25
1718
- vrev64.i32 d0,d0
1719
- vmlal.s32 q15,d26,d24
1720
- vext.32 d1,d7,d19,#1
1721
- vext.32 d7,d10,d10,#0
1722
- vmlal.s32 q15,d27,d23
1723
- vrev64.i32 d1,d1
1724
- vld1.8 {d6},[r6,: 64]
1725
- vmlal.s32 q15,d28,d22
1726
- vmlal.s32 q3,d16,d4
1727
- add r6,r6,#24
1728
- vmlal.s32 q3,d17,d2
1729
- vext.32 d4,d31,d30,#0
1730
- vmov d17,d11
1731
- vmlal.s32 q3,d14,d1
1732
- vext.32 d11,d13,d13,#0
1733
- vext.32 d13,d30,d30,#0
1734
- vmlal.s32 q3,d15,d0
1735
- vext.32 d1,d8,d8,#0
1736
- vmlal.s32 q3,d29,d3
1737
- vld1.8 {d5},[r6,: 64]
1738
- sub r6,r6,#16
1739
- vext.32 d10,d6,d6,#0
1740
- vmov.i32 q1,#0xffffffff
1741
- vshl.i64 q4,q1,#25
1742
- add r7,sp,#512
1743
- vld1.8 {d14-d15},[r7,: 128]
1744
- vadd.i64 q9,q2,q7
1745
- vshl.i64 q1,q1,#26
1746
- vshr.s64 q10,q9,#26
1747
- vld1.8 {d0},[r6,: 64]!
1748
- vadd.i64 q5,q5,q10
1749
- vand q9,q9,q1
1750
- vld1.8 {d16},[r6,: 64]!
1751
- add r6,sp,#528
1752
- vld1.8 {d20-d21},[r6,: 128]
1753
- vadd.i64 q11,q5,q10
1754
- vsub.i64 q2,q2,q9
1755
- vshr.s64 q9,q11,#25
1756
- vext.32 d12,d5,d4,#0
1757
- vand q11,q11,q4
1758
- vadd.i64 q0,q0,q9
1759
- vmov d19,d7
1760
- vadd.i64 q3,q0,q7
1761
- vsub.i64 q5,q5,q11
1762
- vshr.s64 q11,q3,#26
1763
- vext.32 d18,d11,d10,#0
1764
- vand q3,q3,q1
1765
- vadd.i64 q8,q8,q11
1766
- vadd.i64 q11,q8,q10
1767
- vsub.i64 q0,q0,q3
1768
- vshr.s64 q3,q11,#25
1769
- vand q11,q11,q4
1770
- vadd.i64 q3,q6,q3
1771
- vadd.i64 q6,q3,q7
1772
- vsub.i64 q8,q8,q11
1773
- vshr.s64 q11,q6,#26
1774
- vand q6,q6,q1
1775
- vadd.i64 q9,q9,q11
1776
- vadd.i64 d25,d19,d21
1777
- vsub.i64 q3,q3,q6
1778
- vshr.s64 d23,d25,#25
1779
- vand q4,q12,q4
1780
- vadd.i64 d21,d23,d23
1781
- vshl.i64 d25,d23,#4
1782
- vadd.i64 d21,d21,d23
1783
- vadd.i64 d25,d25,d21
1784
- vadd.i64 d4,d4,d25
1785
- vzip.i32 q0,q8
1786
- vadd.i64 d12,d4,d14
1787
- add r6,r8,#8
1788
- vst1.8 d0,[r6,: 64]
1789
- vsub.i64 d19,d19,d9
1790
- add r6,r6,#16
1791
- vst1.8 d16,[r6,: 64]
1792
- vshr.s64 d22,d12,#26
1793
- vand q0,q6,q1
1794
- vadd.i64 d10,d10,d22
1795
- vzip.i32 q3,q9
1796
- vsub.i64 d4,d4,d0
1797
- sub r6,r6,#8
1798
- vst1.8 d6,[r6,: 64]
1799
- add r6,r6,#16
1800
- vst1.8 d18,[r6,: 64]
1801
- vzip.i32 q2,q5
1802
- sub r6,r6,#32
1803
- vst1.8 d4,[r6,: 64]
1804
- subs r5,r5,#1
1805
- bhi ._squaringloop
1806
- ._skipsquaringloop:
1807
- mov r2,r2
1808
- add r5,r3,#288
1809
- add r6,r3,#144
1810
- vmov.i32 q0,#19
1811
- vmov.i32 q1,#0
1812
- vmov.i32 q2,#1
1813
- vzip.i32 q1,q2
1814
- vld1.8 {d4-d5},[r5,: 128]!
1815
- vld1.8 {d6-d7},[r5,: 128]!
1816
- vld1.8 {d9},[r5,: 64]
1817
- vld1.8 {d10-d11},[r2,: 128]!
1818
- add r5,sp,#416
1819
- vld1.8 {d12-d13},[r2,: 128]!
1820
- vmul.i32 q7,q2,q0
1821
- vld1.8 {d8},[r2,: 64]
1822
- vext.32 d17,d11,d10,#1
1823
- vmul.i32 q9,q3,q0
1824
- vext.32 d16,d10,d8,#1
1825
- vshl.u32 q10,q5,q1
1826
- vext.32 d22,d14,d4,#1
1827
- vext.32 d24,d18,d6,#1
1828
- vshl.u32 q13,q6,q1
1829
- vshl.u32 d28,d8,d2
1830
- vrev64.i32 d22,d22
1831
- vmul.i32 d1,d9,d1
1832
- vrev64.i32 d24,d24
1833
- vext.32 d29,d8,d13,#1
1834
- vext.32 d0,d1,d9,#1
1835
- vrev64.i32 d0,d0
1836
- vext.32 d2,d9,d1,#1
1837
- vext.32 d23,d15,d5,#1
1838
- vmull.s32 q4,d20,d4
1839
- vrev64.i32 d23,d23
1840
- vmlal.s32 q4,d21,d1
1841
- vrev64.i32 d2,d2
1842
- vmlal.s32 q4,d26,d19
1843
- vext.32 d3,d5,d15,#1
1844
- vmlal.s32 q4,d27,d18
1845
- vrev64.i32 d3,d3
1846
- vmlal.s32 q4,d28,d15
1847
- vext.32 d14,d12,d11,#1
1848
- vmull.s32 q5,d16,d23
1849
- vext.32 d15,d13,d12,#1
1850
- vmlal.s32 q5,d17,d4
1851
- vst1.8 d8,[r5,: 64]!
1852
- vmlal.s32 q5,d14,d1
1853
- vext.32 d12,d9,d8,#0
1854
- vmlal.s32 q5,d15,d19
1855
- vmov.i64 d13,#0
1856
- vmlal.s32 q5,d29,d18
1857
- vext.32 d25,d19,d7,#1
1858
- vmlal.s32 q6,d20,d5
1859
- vrev64.i32 d25,d25
1860
- vmlal.s32 q6,d21,d4
1861
- vst1.8 d11,[r5,: 64]!
1862
- vmlal.s32 q6,d26,d1
1863
- vext.32 d9,d10,d10,#0
1864
- vmlal.s32 q6,d27,d19
1865
- vmov.i64 d8,#0
1866
- vmlal.s32 q6,d28,d18
1867
- vmlal.s32 q4,d16,d24
1868
- vmlal.s32 q4,d17,d5
1869
- vmlal.s32 q4,d14,d4
1870
- vst1.8 d12,[r5,: 64]!
1871
- vmlal.s32 q4,d15,d1
1872
- vext.32 d10,d13,d12,#0
1873
- vmlal.s32 q4,d29,d19
1874
- vmov.i64 d11,#0
1875
- vmlal.s32 q5,d20,d6
1876
- vmlal.s32 q5,d21,d5
1877
- vmlal.s32 q5,d26,d4
1878
- vext.32 d13,d8,d8,#0
1879
- vmlal.s32 q5,d27,d1
1880
- vmov.i64 d12,#0
1881
- vmlal.s32 q5,d28,d19
1882
- vst1.8 d9,[r5,: 64]!
1883
- vmlal.s32 q6,d16,d25
1884
- vmlal.s32 q6,d17,d6
1885
- vst1.8 d10,[r5,: 64]
1886
- vmlal.s32 q6,d14,d5
1887
- vext.32 d8,d11,d10,#0
1888
- vmlal.s32 q6,d15,d4
1889
- vmov.i64 d9,#0
1890
- vmlal.s32 q6,d29,d1
1891
- vmlal.s32 q4,d20,d7
1892
- vmlal.s32 q4,d21,d6
1893
- vmlal.s32 q4,d26,d5
1894
- vext.32 d11,d12,d12,#0
1895
- vmlal.s32 q4,d27,d4
1896
- vmov.i64 d10,#0
1897
- vmlal.s32 q4,d28,d1
1898
- vmlal.s32 q5,d16,d0
1899
- sub r2,r5,#32
1900
- vmlal.s32 q5,d17,d7
1901
- vmlal.s32 q5,d14,d6
1902
- vext.32 d30,d9,d8,#0
1903
- vmlal.s32 q5,d15,d5
1904
- vld1.8 {d31},[r2,: 64]!
1905
- vmlal.s32 q5,d29,d4
1906
- vmlal.s32 q15,d20,d0
1907
- vext.32 d0,d6,d18,#1
1908
- vmlal.s32 q15,d21,d25
1909
- vrev64.i32 d0,d0
1910
- vmlal.s32 q15,d26,d24
1911
- vext.32 d1,d7,d19,#1
1912
- vext.32 d7,d10,d10,#0
1913
- vmlal.s32 q15,d27,d23
1914
- vrev64.i32 d1,d1
1915
- vld1.8 {d6},[r2,: 64]
1916
- vmlal.s32 q15,d28,d22
1917
- vmlal.s32 q3,d16,d4
1918
- add r2,r2,#24
1919
- vmlal.s32 q3,d17,d2
1920
- vext.32 d4,d31,d30,#0
1921
- vmov d17,d11
1922
- vmlal.s32 q3,d14,d1
1923
- vext.32 d11,d13,d13,#0
1924
- vext.32 d13,d30,d30,#0
1925
- vmlal.s32 q3,d15,d0
1926
- vext.32 d1,d8,d8,#0
1927
- vmlal.s32 q3,d29,d3
1928
- vld1.8 {d5},[r2,: 64]
1929
- sub r2,r2,#16
1930
- vext.32 d10,d6,d6,#0
1931
- vmov.i32 q1,#0xffffffff
1932
- vshl.i64 q4,q1,#25
1933
- add r5,sp,#512
1934
- vld1.8 {d14-d15},[r5,: 128]
1935
- vadd.i64 q9,q2,q7
1936
- vshl.i64 q1,q1,#26
1937
- vshr.s64 q10,q9,#26
1938
- vld1.8 {d0},[r2,: 64]!
1939
- vadd.i64 q5,q5,q10
1940
- vand q9,q9,q1
1941
- vld1.8 {d16},[r2,: 64]!
1942
- add r2,sp,#528
1943
- vld1.8 {d20-d21},[r2,: 128]
1944
- vadd.i64 q11,q5,q10
1945
- vsub.i64 q2,q2,q9
1946
- vshr.s64 q9,q11,#25
1947
- vext.32 d12,d5,d4,#0
1948
- vand q11,q11,q4
1949
- vadd.i64 q0,q0,q9
1950
- vmov d19,d7
1951
- vadd.i64 q3,q0,q7
1952
- vsub.i64 q5,q5,q11
1953
- vshr.s64 q11,q3,#26
1954
- vext.32 d18,d11,d10,#0
1955
- vand q3,q3,q1
1956
- vadd.i64 q8,q8,q11
1957
- vadd.i64 q11,q8,q10
1958
- vsub.i64 q0,q0,q3
1959
- vshr.s64 q3,q11,#25
1960
- vand q11,q11,q4
1961
- vadd.i64 q3,q6,q3
1962
- vadd.i64 q6,q3,q7
1963
- vsub.i64 q8,q8,q11
1964
- vshr.s64 q11,q6,#26
1965
- vand q6,q6,q1
1966
- vadd.i64 q9,q9,q11
1967
- vadd.i64 d25,d19,d21
1968
- vsub.i64 q3,q3,q6
1969
- vshr.s64 d23,d25,#25
1970
- vand q4,q12,q4
1971
- vadd.i64 d21,d23,d23
1972
- vshl.i64 d25,d23,#4
1973
- vadd.i64 d21,d21,d23
1974
- vadd.i64 d25,d25,d21
1975
- vadd.i64 d4,d4,d25
1976
- vzip.i32 q0,q8
1977
- vadd.i64 d12,d4,d14
1978
- add r2,r6,#8
1979
- vst1.8 d0,[r2,: 64]
1980
- vsub.i64 d19,d19,d9
1981
- add r2,r2,#16
1982
- vst1.8 d16,[r2,: 64]
1983
- vshr.s64 d22,d12,#26
1984
- vand q0,q6,q1
1985
- vadd.i64 d10,d10,d22
1986
- vzip.i32 q3,q9
1987
- vsub.i64 d4,d4,d0
1988
- sub r2,r2,#8
1989
- vst1.8 d6,[r2,: 64]
1990
- add r2,r2,#16
1991
- vst1.8 d18,[r2,: 64]
1992
- vzip.i32 q2,q5
1993
- sub r2,r2,#32
1994
- vst1.8 d4,[r2,: 64]
1995
- cmp r4,#0
1996
- beq ._skippostcopy
1997
- add r2,r3,#144
1998
- mov r4,r4
1999
- vld1.8 {d0-d1},[r2,: 128]!
2000
- vld1.8 {d2-d3},[r2,: 128]!
2001
- vld1.8 {d4},[r2,: 64]
2002
- vst1.8 {d0-d1},[r4,: 128]!
2003
- vst1.8 {d2-d3},[r4,: 128]!
2004
- vst1.8 d4,[r4,: 64]
2005
- ._skippostcopy:
2006
- cmp r1,#1
2007
- bne ._skipfinalcopy
2008
- add r2,r3,#288
2009
- add r4,r3,#144
2010
- vld1.8 {d0-d1},[r2,: 128]!
2011
- vld1.8 {d2-d3},[r2,: 128]!
2012
- vld1.8 {d4},[r2,: 64]
2013
- vst1.8 {d0-d1},[r4,: 128]!
2014
- vst1.8 {d2-d3},[r4,: 128]!
2015
- vst1.8 d4,[r4,: 64]
2016
- ._skipfinalcopy:
2017
- add r1,r1,#1
2018
- cmp r1,#12
2019
- blo ._invertloop
2020
- add r1,r3,#144
2021
- ldr r2,[r1],#4
2022
- ldr r3,[r1],#4
2023
- ldr r4,[r1],#4
2024
- ldr r5,[r1],#4
2025
- ldr r6,[r1],#4
2026
- ldr r7,[r1],#4
2027
- ldr r8,[r1],#4
2028
- ldr r9,[r1],#4
2029
- ldr r10,[r1],#4
2030
- ldr r1,[r1]
2031
- add r11,r1,r1,LSL #4
2032
- add r11,r11,r1,LSL #1
2033
- add r11,r11,#16777216
2034
- mov r11,r11,ASR #25
2035
- add r11,r11,r2
2036
- mov r11,r11,ASR #26
2037
- add r11,r11,r3
2038
- mov r11,r11,ASR #25
2039
- add r11,r11,r4
2040
- mov r11,r11,ASR #26
2041
- add r11,r11,r5
2042
- mov r11,r11,ASR #25
2043
- add r11,r11,r6
2044
- mov r11,r11,ASR #26
2045
- add r11,r11,r7
2046
- mov r11,r11,ASR #25
2047
- add r11,r11,r8
2048
- mov r11,r11,ASR #26
2049
- add r11,r11,r9
2050
- mov r11,r11,ASR #25
2051
- add r11,r11,r10
2052
- mov r11,r11,ASR #26
2053
- add r11,r11,r1
2054
- mov r11,r11,ASR #25
2055
- add r2,r2,r11
2056
- add r2,r2,r11,LSL #1
2057
- add r2,r2,r11,LSL #4
2058
- mov r11,r2,ASR #26
2059
- add r3,r3,r11
2060
- sub r2,r2,r11,LSL #26
2061
- mov r11,r3,ASR #25
2062
- add r4,r4,r11
2063
- sub r3,r3,r11,LSL #25
2064
- mov r11,r4,ASR #26
2065
- add r5,r5,r11
2066
- sub r4,r4,r11,LSL #26
2067
- mov r11,r5,ASR #25
2068
- add r6,r6,r11
2069
- sub r5,r5,r11,LSL #25
2070
- mov r11,r6,ASR #26
2071
- add r7,r7,r11
2072
- sub r6,r6,r11,LSL #26
2073
- mov r11,r7,ASR #25
2074
- add r8,r8,r11
2075
- sub r7,r7,r11,LSL #25
2076
- mov r11,r8,ASR #26
2077
- add r9,r9,r11
2078
- sub r8,r8,r11,LSL #26
2079
- mov r11,r9,ASR #25
2080
- add r10,r10,r11
2081
- sub r9,r9,r11,LSL #25
2082
- mov r11,r10,ASR #26
2083
- add r1,r1,r11
2084
- sub r10,r10,r11,LSL #26
2085
- mov r11,r1,ASR #25
2086
- sub r1,r1,r11,LSL #25
2087
- add r2,r2,r3,LSL #26
2088
- mov r3,r3,LSR #6
2089
- add r3,r3,r4,LSL #19
2090
- mov r4,r4,LSR #13
2091
- add r4,r4,r5,LSL #13
2092
- mov r5,r5,LSR #19
2093
- add r5,r5,r6,LSL #6
2094
- add r6,r7,r8,LSL #25
2095
- mov r7,r8,LSR #7
2096
- add r7,r7,r9,LSL #19
2097
- mov r8,r9,LSR #13
2098
- add r8,r8,r10,LSL #12
2099
- mov r9,r10,LSR #20
2100
- add r1,r9,r1,LSL #6
2101
- str r2,[r0],#4
2102
- str r3,[r0],#4
2103
- str r4,[r0],#4
2104
- str r5,[r0],#4
2105
- str r6,[r0],#4
2106
- str r7,[r0],#4
2107
- str r8,[r0],#4
2108
- str r1,[r0]
2109
- ldrd r4,[sp,#0]
2110
- ldrd r6,[sp,#8]
2111
- ldrd r8,[sp,#16]
2112
- ldrd r10,[sp,#24]
2113
- ldr r12,[sp,#480]
2114
- ldr r14,[sp,#484]
2115
- ldr r0,=0
2116
- mov sp,r12
2117
- vpop {q4,q5,q6,q7}
2118
- bx lr