1/* 2 * This file is part of the openHiTLS project. 3 * 4 * openHiTLS is licensed under the Mulan PSL v2. 5 * You can use this software according to the terms and conditions of the Mulan PSL v2. 6 * You may obtain a copy of Mulan PSL v2 at: 7 * 8 * http://license.coscl.org.cn/MulanPSL2 9 * 10 * THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 11 * EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 12 * MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 13 * See the Mulan PSL v2 for more details. 14 */ 15 16#include "hitls_build.h" 17#if defined(HITLS_CRYPTO_AES) && defined(HITLS_CRYPTO_ECB) 18 19#include "crypt_aes_macro_x86_64.s" 20 21.file "crypt_aes_ecb_x86_64.S" 22.text 23 24.set ARG1, %rdi 25.set ARG2, %rsi 26.set ARG3, %rdx 27.set ARG4, %ecx 28.set ARG5, %r8 29.set ARG6, %r9 30 31.set RDK, %xmm3 32.set KEY, %rdi 33.set KTMP, %r9 34.set ROUNDS, %eax 35.set RET, %eax 36 37.set BLK0, %xmm1 38.set BLK1, %xmm4 39.set BLK2, %xmm5 40.set BLK3, %xmm6 41.set BLK4, %xmm10 42.set BLK5, %xmm11 43.set BLK6, %xmm12 44.set BLK7, %xmm13 45.set BLK8, %xmm0 46.set BLK9, %xmm2 47.set BLK10, %xmm7 48.set BLK11, %xmm8 49.set BLK12, %xmm9 50.set BLK13, %xmm14 51 52 53/** 54 * Function description: Sets the AES encryption assembly acceleration API in ECB mode. 55 * Function prototype: int32_t CRYPT_AES_ECB_Encrypt(const CRYPT_AES_Key *ctx, 56 * const uint8_t *in, uint8_t *out, uint32_t len); 57 * Input register: 58 * x0: Pointer to the input key structure. 59 * x1: Points to the 128-bit input data. 60 * x2: Points to the 128-bit output data. 61 * x3: Indicates the length of a data block, that is, 16 bytes. 62 * Change register: xmm1,xmm3,xmm4,xmm5,xmm6,xmm10,xmm11,xmm12,xmm13. 63 * Output register: eax. 64 * Function/Macro Call: None. 65 */ 66 67.globl CRYPT_AES_ECB_Encrypt 68 .type CRYPT_AES_ECB_Encrypt, @function 69CRYPT_AES_ECB_Encrypt: 70 .cfi_startproc 71.align 16 72.Lecb_aesenc_start: 73 cmpl $64, ARG4 74 jae .Lecb_enc_above_equal_4_blks 75 cmpl $32, ARG4 76 jae .Lecb_enc_above_equal_2_blks 77 cmpl $0, ARG4 78 je .Lecb_aesdec_finish 79 jmp .Lecb_enc_proc_1_blk 80 81.Lecb_enc_above_equal_2_blks: 82 cmpl $48, ARG4 83 jb .Lecb_enc_proc_2_blks 84 jmp .Lecb_enc_proc_3_blks 85 86.Lecb_enc_above_equal_4_blks: 87 cmpl $96, ARG4 88 jae .Lecb_enc_above_equal_6_blks 89 cmpl $80, ARG4 90 jb .Lecb_enc_proc_4_blks 91 jmp .Lecb_enc_proc_5_blks 92 93.Lecb_enc_above_equal_6_blks: 94 cmpl $112, ARG4 95 jb .Lecb_enc_proc_6_blks 96 cmpl $128, ARG4 97 jb .Lecb_enc_proc_7_blks 98 cmpl $256, ARG4 99 jbe .Lecb_enc_proc_8_blks 100 101.align 16 102.ecb_enc_proc_14_blks: 103.Lecb_aesenc_14_blks_loop: 104 movq KEY, KTMP 105 vmovdqu (KEY), RDK 106 movl 240(KEY), ROUNDS 107 vpxor (ARG2), RDK, BLK0 108 vpxor 16(ARG2), RDK, BLK1 109 vpxor 32(ARG2), RDK, BLK2 110 vpxor 48(ARG2), RDK, BLK3 111 vpxor 64(ARG2), RDK, BLK4 112 vpxor 80(ARG2), RDK, BLK5 113 vpxor 96(ARG2), RDK, BLK6 114 vpxor 112(ARG2), RDK, BLK7 115 vpxor 128(ARG2), RDK, BLK8 116 vpxor 144(ARG2), RDK, BLK9 117 vpxor 160(ARG2), RDK, BLK10 118 vpxor 176(ARG2), RDK, BLK11 119 vpxor 192(ARG2), RDK, BLK12 120 vpxor 208(ARG2), RDK, BLK13 121 decl ROUNDS 122 AES_ENC_14_BLKS ARG2 KTMP ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 BLK5 BLK6 BLK7 BLK8 BLK9 BLK10 BLK11 BLK12 BLK13 123 vmovdqu BLK0, (ARG3) 124 vmovdqu BLK1, 16(ARG3) 125 vmovdqu BLK2, 32(ARG3) 126 vmovdqu BLK3, 48(ARG3) 127 vmovdqu BLK4, 64(ARG3) 128 vmovdqu BLK5, 80(ARG3) 129 vmovdqu BLK6, 96(ARG3) 130 vmovdqu BLK7, 112(ARG3) 131 vmovdqu BLK8, 128(ARG3) 132 vmovdqu BLK9, 144(ARG3) 133 vmovdqu BLK10, 160(ARG3) 134 vmovdqu BLK11, 176(ARG3) 135 vmovdqu BLK12, 192(ARG3) 136 vmovdqu BLK13, 208(ARG3) 137 leaq 224(ARG2), ARG2 138 leaq 224(ARG3), ARG3 139 subl $224, ARG4 140 cmpl $224, ARG4 141 jb .Lecb_aesenc_start 142 jmp .Lecb_aesenc_14_blks_loop 143 144.align 16 145.Lecb_enc_proc_8_blks: 146.Lecb_aesenc_8_blks_loop: 147 movl 240(KEY), ROUNDS 148 vmovdqu (KEY), RDK 149 movq KEY, KTMP 150 vpxor (ARG2), RDK, BLK0 151 vpxor 16(ARG2), RDK, BLK1 152 vpxor 32(ARG2), RDK, BLK2 153 vpxor 48(ARG2), RDK, BLK3 154 vpxor 64(ARG2), RDK, BLK4 155 vpxor 80(ARG2), RDK, BLK5 156 vpxor 96(ARG2), RDK, BLK6 157 vpxor 112(ARG2), RDK, BLK7 158 decl ROUNDS 159 AES_ENC_8_BLKS KTMP ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 BLK5 BLK6 BLK7 160 vmovdqu BLK0, (ARG3) 161 vmovdqu BLK1, 16(ARG3) 162 vmovdqu BLK2, 32(ARG3) 163 vmovdqu BLK3, 48(ARG3) 164 vmovdqu BLK4, 64(ARG3) 165 vmovdqu BLK5, 80(ARG3) 166 vmovdqu BLK6, 96(ARG3) 167 vmovdqu BLK7, 112(ARG3) 168 leaq 128(ARG2), ARG2 169 leaq 128(ARG3), ARG3 170 subl $128, ARG4 171 cmpl $128, ARG4 172 jb .Lecb_aesenc_start 173 jmp .Lecb_aesenc_8_blks_loop 174 175.align 16 176.Lecb_enc_proc_1_blk: 177 movl 240(KEY), ROUNDS 178 vmovdqu (KEY), RDK 179 vpxor (ARG2), RDK, BLK0 180 decl ROUNDS 181 AES_ENC_1_BLK KEY ROUNDS RDK BLK0 182 vmovdqu BLK0, (ARG3) 183 jmp .Lecb_aesenc_finish 184 185.align 16 186.Lecb_enc_proc_2_blks: 187 movl 240(KEY), ROUNDS 188 vmovdqu (KEY), RDK 189 vpxor (ARG2), RDK, BLK0 190 vpxor 16(ARG2), RDK, BLK1 191 decl ROUNDS 192 AES_ENC_2_BLKS KEY ROUNDS RDK BLK0 BLK1 193 vmovdqu BLK0, (ARG3) 194 vmovdqu BLK1, 16(ARG3) 195 jmp .Lecb_aesenc_finish 196 197.align 16 198.Lecb_enc_proc_3_blks: 199 movl 240(KEY), ROUNDS 200 vmovdqu (KEY), RDK 201 vpxor (ARG2), RDK, BLK0 202 vpxor 16(ARG2), RDK, BLK1 203 vpxor 32(ARG2), RDK, BLK2 204 decl ROUNDS 205 AES_ENC_3_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 206 vmovdqu BLK0, (ARG3) 207 vmovdqu BLK1, 16(ARG3) 208 vmovdqu BLK2, 32(ARG3) 209 jmp .Lecb_aesenc_finish 210 211.align 16 212.Lecb_enc_proc_4_blks: 213 movl 240(KEY), ROUNDS 214 vmovdqu (KEY), RDK 215 vpxor (ARG2), RDK, BLK0 216 vpxor 16(ARG2), RDK, BLK1 217 vpxor 32(ARG2), RDK, BLK2 218 vpxor 48(ARG2), RDK, BLK3 219 decl ROUNDS 220 AES_ENC_4_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 BLK3 221 vmovdqu BLK0, (ARG3) 222 vmovdqu BLK1, 16(ARG3) 223 vmovdqu BLK2, 32(ARG3) 224 vmovdqu BLK3, 48(ARG3) 225 jmp .Lecb_aesenc_finish 226 227.align 16 228.Lecb_enc_proc_5_blks: 229 movl 240(KEY), ROUNDS 230 vmovdqu (KEY), RDK 231 vpxor (ARG2), RDK, BLK0 232 vpxor 16(ARG2), RDK, BLK1 233 vpxor 32(ARG2), RDK, BLK2 234 vpxor 48(ARG2), RDK, BLK3 235 vpxor 64(ARG2), RDK, BLK4 236 decl ROUNDS 237 AES_ENC_5_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 238 vmovdqu BLK0, (ARG3) 239 vmovdqu BLK1, 16(ARG3) 240 vmovdqu BLK2, 32(ARG3) 241 vmovdqu BLK3, 48(ARG3) 242 vmovdqu BLK4, 64(ARG3) 243 jmp .Lecb_aesenc_finish 244 245.align 16 246.Lecb_enc_proc_6_blks: 247 movl 240(KEY), ROUNDS 248 vmovdqu (KEY), RDK 249 vpxor (ARG2), RDK, BLK0 250 vpxor 16(ARG2), RDK, BLK1 251 vpxor 32(ARG2), RDK, BLK2 252 vpxor 48(ARG2), RDK, BLK3 253 vpxor 64(ARG2), RDK, BLK4 254 vpxor 80(ARG2), RDK, BLK5 255 decl ROUNDS 256 AES_ENC_6_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 BLK5 257 vmovdqu BLK0, (ARG3) 258 vmovdqu BLK1, 16(ARG3) 259 vmovdqu BLK2, 32(ARG3) 260 vmovdqu BLK3, 48(ARG3) 261 vmovdqu BLK4, 64(ARG3) 262 vmovdqu BLK5, 80(ARG3) 263 jmp .Lecb_aesenc_finish 264 265.align 16 266.Lecb_enc_proc_7_blks: 267 movl 240(KEY), ROUNDS 268 vmovdqu (KEY), RDK 269 vpxor (ARG2), RDK, BLK0 270 vpxor 16(ARG2), RDK, BLK1 271 vpxor 32(ARG2), RDK, BLK2 272 vpxor 48(ARG2), RDK, BLK3 273 vpxor 64(ARG2), RDK, BLK4 274 vpxor 80(ARG2), RDK, BLK5 275 vpxor 96(ARG2), RDK, BLK6 276 decl ROUNDS 277 AES_ENC_7_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 BLK5 BLK6 278 vmovdqu BLK0, (ARG3) 279 vmovdqu BLK1, 16(ARG3) 280 vmovdqu BLK2, 32(ARG3) 281 vmovdqu BLK3, 48(ARG3) 282 vmovdqu BLK4, 64(ARG3) 283 vmovdqu BLK5, 80(ARG3) 284 vmovdqu BLK6, 96(ARG3) 285 286.align 16 287.Lecb_aesenc_finish: 288 vpxor RDK, RDK, RDK 289 movl $0, RET 290 ret 291 .cfi_endproc 292 .size CRYPT_AES_ECB_Encrypt, .-CRYPT_AES_ECB_Encrypt 293 294 295/** 296 * Function description: Sets the AES decryption and assembly acceleration API in ECB mode. 297 * Function prototype: int32_t CRYPT_AES_ECB_Decrypt(const CRYPT_AES_Key *ctx, 298 * const uint8_t *in, uint8_t *out, uint32_t len); 299 * Input register: 300 * x0: Pointer to the input key structure. 301 * x1: Points to the 128-bit input data. 302 * x2: Indicates the 128-bit output data. 303 * x3: Indicates the length of a data block, that is, 16 bytes. 304 * Change register: xmm1,xmm3,xmm4,xmm5,xmm6,xmm10,xmm11,xmm12,xmm13. 305 * Output register: eax. 306 * Function/Macro Call: None. 307 */ 308 .globl CRYPT_AES_ECB_Decrypt 309 .type CRYPT_AES_ECB_Decrypt, @function 310CRYPT_AES_ECB_Decrypt: 311 .cfi_startproc 312.align 16 313.ecb_aesdec_start: 314 cmpl $64, ARG4 315 jae .ecb_dec_above_equal_4_blks 316 cmpl $32, ARG4 317 jae .ecb_dec_above_equal_2_blks 318 cmpl $0, ARG4 319 je .Lecb_aesdec_finish 320 jmp .ecb_dec_proc_1_blk 321.ecb_dec_above_equal_2_blks: 322 cmpl $48, ARG4 323 jb .ecb_dec_proc_2_blks 324 jmp .ecb_dec_proc_3_blks 325 326.ecb_dec_above_equal_4_blks: 327 cmpl $96, ARG4 328 jae .ecb_dec_above_equal_6_blks 329 cmpl $80, ARG4 330 jb .ecb_dec_proc_4_blks 331 jmp .ecb_dec_proc_5_blks 332 333.ecb_dec_above_equal_6_blks: 334 cmpl $112, ARG4 335 jb .ecb_dec_proc_6_blks 336 cmpl $128, ARG4 337 jb .ecb_dec_proc_7_blks 338 cmpl $256, ARG4 339 jbe .ecb_dec_proc_8_blks 340 341.align 16 342.ecb_dec_proc_14_blks: 343.ecb_aesdec_14_blks_loop: 344 movq KEY, KTMP 345 movl 240(KEY), ROUNDS 346 vmovdqu (KEY), RDK 347 vpxor (ARG2), RDK, BLK0 348 vpxor 16(ARG2), RDK, BLK1 349 vpxor 32(ARG2), RDK, BLK2 350 vpxor 48(ARG2), RDK, BLK3 351 vpxor 64(ARG2), RDK, BLK4 352 vpxor 80(ARG2), RDK, BLK5 353 vpxor 96(ARG2), RDK, BLK6 354 vpxor 112(ARG2), RDK, BLK7 355 vpxor 128(ARG2), RDK, BLK8 356 vpxor 144(ARG2), RDK, BLK9 357 vpxor 160(ARG2), RDK, BLK10 358 vpxor 176(ARG2), RDK, BLK11 359 vpxor 192(ARG2), RDK, BLK12 360 vpxor 208(ARG2), RDK, BLK13 361 decl ROUNDS 362 AES_DEC_14_BLKS KTMP ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 BLK5 BLK6 BLK7 BLK8 BLK9 BLK10 BLK11 BLK12 BLK13 363 vmovdqu BLK0, (ARG3) 364 vmovdqu BLK1, 16(ARG3) 365 vmovdqu BLK2, 32(ARG3) 366 vmovdqu BLK3, 48(ARG3) 367 vmovdqu BLK4, 64(ARG3) 368 vmovdqu BLK5, 80(ARG3) 369 vmovdqu BLK6, 96(ARG3) 370 vmovdqu BLK7, 112(ARG3) 371 vmovdqu BLK8, 128(ARG3) 372 vmovdqu BLK9, 144(ARG3) 373 vmovdqu BLK10, 160(ARG3) 374 vmovdqu BLK11, 176(ARG3) 375 vmovdqu BLK12, 192(ARG3) 376 vmovdqu BLK13, 208(ARG3) 377 leaq 224(ARG2), ARG2 378 leaq 224(ARG3), ARG3 379 subl $224, ARG4 380 cmpl $224, ARG4 381 jb .ecb_aesdec_start 382 jmp .ecb_aesdec_14_blks_loop 383 384.align 16 385.ecb_dec_proc_8_blks: 386.aesecbdec_8_blks_loop: 387 movq KEY, KTMP 388 movl 240(KEY), ROUNDS 389 vmovdqu (KEY), RDK 390 vpxor (ARG2), RDK, BLK0 391 vpxor 16(ARG2), RDK, BLK1 392 vpxor 32(ARG2), RDK, BLK2 393 vpxor 48(ARG2), RDK, BLK3 394 vpxor 64(ARG2), RDK, BLK4 395 vpxor 80(ARG2), RDK, BLK5 396 vpxor 96(ARG2), RDK, BLK6 397 vpxor 112(ARG2), RDK, BLK7 398 decl ROUNDS 399 AES_DEC_8_BLKS KTMP ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 BLK5 BLK6 BLK7 400 vmovdqu BLK0, (ARG3) 401 vmovdqu BLK1, 16(ARG3) 402 vmovdqu BLK2, 32(ARG3) 403 vmovdqu BLK3, 48(ARG3) 404 vmovdqu BLK4, 64(ARG3) 405 vmovdqu BLK5, 80(ARG3) 406 vmovdqu BLK6, 96(ARG3) 407 vmovdqu BLK7, 112(ARG3) 408 leaq 128(ARG2), ARG2 409 leaq 128(ARG3), ARG3 410 subl $128, ARG4 411 cmpl $128, ARG4 412 jb .ecb_aesdec_start 413 jmp .aesecbdec_8_blks_loop 414 415.align 16 416.ecb_dec_proc_1_blk: 417 movl 240(KEY), ROUNDS 418 vmovdqu (KEY), RDK 419 vpxor (ARG2), RDK, BLK0 420 decl ROUNDS 421 AES_DEC_1_BLK KEY ROUNDS RDK BLK0 422 vmovdqu BLK0, (ARG3) 423 jmp .Lecb_aesdec_finish 424 425.align 16 426.ecb_dec_proc_2_blks: 427 movl 240(KEY), ROUNDS 428 vmovdqu (KEY), RDK 429 vpxor (ARG2), RDK, BLK0 430 vpxor 16(ARG2), RDK, BLK1 431 decl ROUNDS 432 AES_DEC_2_BLKS KEY ROUNDS RDK BLK0 BLK1 433 vmovdqu BLK0, (ARG3) 434 vmovdqu BLK1, 16(ARG3) 435 jmp .Lecb_aesdec_finish 436 437.align 16 438.ecb_dec_proc_3_blks: 439 movl 240(KEY), ROUNDS 440 vmovdqu (KEY), RDK 441 vpxor (ARG2), RDK, BLK0 442 vpxor 16(ARG2), RDK, BLK1 443 vpxor 32(ARG2), RDK, BLK2 444 decl ROUNDS 445 AES_DEC_3_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 446 vmovdqu BLK0, (ARG3) 447 vmovdqu BLK1, 16(ARG3) 448 vmovdqu BLK2, 32(ARG3) 449 jmp .Lecb_aesdec_finish 450 451.align 16 452.ecb_dec_proc_4_blks: 453 movl 240(KEY), ROUNDS 454 vmovdqu (KEY), RDK 455 vpxor (ARG2), RDK, BLK0 456 vpxor 16(ARG2), RDK, BLK1 457 vpxor 32(ARG2), RDK, BLK2 458 vpxor 48(ARG2), RDK, BLK3 459 decl ROUNDS 460 AES_DEC_4_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 BLK3 461 vmovdqu BLK0, (ARG3) 462 vmovdqu BLK1, 16(ARG3) 463 vmovdqu BLK2, 32(ARG3) 464 vmovdqu BLK3, 48(ARG3) 465 jmp .Lecb_aesdec_finish 466 467.align 16 468.ecb_dec_proc_5_blks: 469 movl 240(KEY), ROUNDS 470 vmovdqu (KEY), RDK 471 vpxor (ARG2), RDK, BLK0 472 vpxor 16(ARG2), RDK, BLK1 473 vpxor 32(ARG2), RDK, BLK2 474 vpxor 48(ARG2), RDK, BLK3 475 vpxor 64(ARG2), RDK, BLK4 476 decl ROUNDS 477 AES_DEC_5_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 478 vmovdqu BLK0, (ARG3) 479 vmovdqu BLK1, 16(ARG3) 480 vmovdqu BLK2, 32(ARG3) 481 vmovdqu BLK3, 48(ARG3) 482 vmovdqu BLK4, 64(ARG3) 483 jmp .Lecb_aesdec_finish 484 485.align 16 486.ecb_dec_proc_6_blks: 487 movl 240(KEY), ROUNDS 488 vmovdqu (KEY), RDK 489 vpxor (ARG2), RDK, BLK0 490 vpxor 16(ARG2), RDK, BLK1 491 vpxor 32(ARG2), RDK, BLK2 492 vpxor 48(ARG2), RDK, BLK3 493 vpxor 64(ARG2), RDK, BLK4 494 vpxor 80(ARG2), RDK, BLK5 495 decl ROUNDS 496 AES_DEC_6_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 BLK5 497 vmovdqu BLK0, (ARG3) 498 vmovdqu BLK1, 16(ARG3) 499 vmovdqu BLK2, 32(ARG3) 500 vmovdqu BLK3, 48(ARG3) 501 vmovdqu BLK4, 64(ARG3) 502 vmovdqu BLK5, 80(ARG3) 503 jmp .Lecb_aesdec_finish 504 505.align 16 506.ecb_dec_proc_7_blks: 507 movl 240(KEY), ROUNDS 508 vmovdqu (KEY), RDK 509 vpxor (ARG2), RDK, BLK0 510 vpxor 16(ARG2), RDK, BLK1 511 vpxor 32(ARG2), RDK, BLK2 512 vpxor 48(ARG2), RDK, BLK3 513 vpxor 64(ARG2), RDK, BLK4 514 vpxor 80(ARG2), RDK, BLK5 515 vpxor 96(ARG2), RDK, BLK6 516 decl ROUNDS 517 AES_DEC_7_BLKS KEY ROUNDS RDK BLK0 BLK1 BLK2 BLK3 BLK4 BLK5 BLK6 518 vmovdqu BLK0, (ARG3) 519 vmovdqu BLK1, 16(ARG3) 520 vmovdqu BLK2, 32(ARG3) 521 vmovdqu BLK3, 48(ARG3) 522 vmovdqu BLK4, 64(ARG3) 523 vmovdqu BLK5, 80(ARG3) 524 vmovdqu BLK6, 96(ARG3) 525 526.align 16 527.Lecb_aesdec_finish: 528 vpxor BLK0, BLK0, BLK0 529 vpxor BLK1, BLK1, BLK1 530 vpxor BLK2, BLK2, BLK2 531 vpxor BLK3, BLK3, BLK3 532 vpxor BLK4, BLK4, BLK4 533 vpxor BLK5, BLK5, BLK5 534 vpxor BLK6, BLK6, BLK6 535 vpxor BLK7, BLK7, BLK7 536 vpxor BLK8, BLK8, BLK8 537 vpxor BLK9, BLK9, BLK9 538 vpxor BLK10, BLK10, BLK10 539 vpxor BLK11, BLK11, BLK11 540 vpxor BLK12, BLK12, BLK12 541 vpxor BLK13, BLK13, BLK13 542 vpxor RDK, RDK, RDK 543 movl $0, RET 544 ret 545 .cfi_endproc 546 .size CRYPT_AES_ECB_Decrypt, .-CRYPT_AES_ECB_Decrypt 547 548#endif 549