2 .text$ SEGMENT ALIGN(256) 'CODE'
4 EXTERN asm_AES_encrypt:NEAR
5 EXTERN asm_AES_decrypt:NEAR
9 _bsaes_encrypt8 PROC PRIVATE
10 lea r11,QWORD PTR[$L$BS0]
12 movdqa xmm8,XMMWORD PTR[rax]
13 lea rax,QWORD PTR[16+rax]
14 movdqa xmm7,XMMWORD PTR[80+r11]
31 _bsaes_encrypt8_bitslice::
32 movdqa xmm7,XMMWORD PTR[r11]
33 movdqa xmm8,XMMWORD PTR[16+r11]
62 movdqa xmm7,XMMWORD PTR[32+r11]
123 pxor xmm15,XMMWORD PTR[rax]
124 pxor xmm0,XMMWORD PTR[16+rax]
125 pxor xmm1,XMMWORD PTR[32+rax]
126 pxor xmm2,XMMWORD PTR[48+rax]
127 DB 102,68,15,56,0,255
129 pxor xmm3,XMMWORD PTR[64+rax]
130 pxor xmm4,XMMWORD PTR[80+rax]
133 pxor xmm5,XMMWORD PTR[96+rax]
134 pxor xmm6,XMMWORD PTR[112+rax]
139 lea rax,QWORD PTR[128+rax]
328 pshufd xmm7,xmm15,093h
329 pshufd xmm8,xmm0,093h
331 pshufd xmm9,xmm3,093h
333 pshufd xmm10,xmm5,093h
335 pshufd xmm11,xmm2,093h
337 pshufd xmm12,xmm6,093h
339 pshufd xmm13,xmm1,093h
341 pshufd xmm14,xmm4,093h
348 pshufd xmm15,xmm15,04Eh
350 pshufd xmm0,xmm0,04Eh
356 pshufd xmm7,xmm2,04Eh
358 pshufd xmm8,xmm6,04Eh
360 pshufd xmm2,xmm5,04Eh
362 pshufd xmm6,xmm4,04Eh
364 pshufd xmm5,xmm1,04Eh
366 pshufd xmm1,xmm3,04Eh
374 movdqa xmm7,XMMWORD PTR[48+r11]
376 movdqa xmm7,XMMWORD PTR[64+r11]
380 movdqa xmm7,XMMWORD PTR[r11]
381 movdqa xmm8,XMMWORD PTR[16+r11]
410 movdqa xmm7,XMMWORD PTR[32+r11]
467 movdqa xmm7,XMMWORD PTR[rax]
481 _bsaes_decrypt8 PROC PRIVATE
482 lea r11,QWORD PTR[$L$BS0]
484 movdqa xmm8,XMMWORD PTR[rax]
485 lea rax,QWORD PTR[16+rax]
486 movdqa xmm7,XMMWORD PTR[((-48))+r11]
491 DB 102,68,15,56,0,255
503 movdqa xmm7,XMMWORD PTR[r11]
504 movdqa xmm8,XMMWORD PTR[16+r11]
533 movdqa xmm7,XMMWORD PTR[32+r11]
594 pxor xmm15,XMMWORD PTR[rax]
595 pxor xmm0,XMMWORD PTR[16+rax]
596 pxor xmm1,XMMWORD PTR[32+rax]
597 pxor xmm2,XMMWORD PTR[48+rax]
598 DB 102,68,15,56,0,255
600 pxor xmm3,XMMWORD PTR[64+rax]
601 pxor xmm4,XMMWORD PTR[80+rax]
604 pxor xmm5,XMMWORD PTR[96+rax]
605 pxor xmm6,XMMWORD PTR[112+rax]
610 lea rax,QWORD PTR[128+rax]
800 pshufd xmm7,xmm15,04Eh
801 pshufd xmm13,xmm2,04Eh
803 pshufd xmm14,xmm4,04Eh
805 pshufd xmm8,xmm0,04Eh
807 pshufd xmm9,xmm5,04Eh
809 pshufd xmm10,xmm3,04Eh
813 pshufd xmm11,xmm1,04Eh
817 pshufd xmm12,xmm6,04Eh
831 pshufd xmm7,xmm15,093h
832 pshufd xmm8,xmm0,093h
834 pshufd xmm9,xmm5,093h
836 pshufd xmm10,xmm3,093h
838 pshufd xmm11,xmm1,093h
840 pshufd xmm12,xmm6,093h
842 pshufd xmm13,xmm2,093h
844 pshufd xmm14,xmm4,093h
851 pshufd xmm15,xmm15,04Eh
853 pshufd xmm0,xmm0,04Eh
859 pshufd xmm7,xmm1,04Eh
861 pshufd xmm8,xmm6,04Eh
863 pshufd xmm1,xmm3,04Eh
865 pshufd xmm6,xmm4,04Eh
867 pshufd xmm3,xmm2,04Eh
869 pshufd xmm2,xmm5,04Eh
880 movdqa xmm7,XMMWORD PTR[((-16))+r11]
882 movdqa xmm7,XMMWORD PTR[((-32))+r11]
886 movdqa xmm7,XMMWORD PTR[r11]
887 movdqa xmm8,XMMWORD PTR[16+r11]
916 movdqa xmm7,XMMWORD PTR[32+r11]
973 movdqa xmm7,XMMWORD PTR[rax]
986 _bsaes_key_convert PROC PRIVATE
987 lea r11,QWORD PTR[$L$masks]
988 movdqu xmm7,XMMWORD PTR[rcx]
989 lea rcx,QWORD PTR[16+rcx]
990 movdqa xmm0,XMMWORD PTR[r11]
991 movdqa xmm1,XMMWORD PTR[16+r11]
992 movdqa xmm2,XMMWORD PTR[32+r11]
993 movdqa xmm3,XMMWORD PTR[48+r11]
994 movdqa xmm4,XMMWORD PTR[64+r11]
997 movdqu xmm6,XMMWORD PTR[rcx]
998 movdqa XMMWORD PTR[rax],xmm7
999 lea rax,QWORD PTR[16+rax]
1034 movdqa XMMWORD PTR[rax],xmm8
1037 movdqa XMMWORD PTR[16+rax],xmm9
1040 lea rcx,QWORD PTR[16+rcx]
1044 movdqa XMMWORD PTR[32+rax],xmm10
1047 movdqa XMMWORD PTR[48+rax],xmm11
1050 movdqu xmm6,XMMWORD PTR[rcx]
1054 movdqa XMMWORD PTR[64+rax],xmm12
1055 movdqa XMMWORD PTR[80+rax],xmm13
1056 movdqa XMMWORD PTR[96+rax],xmm14
1057 movdqa XMMWORD PTR[112+rax],xmm15
1058 lea rax,QWORD PTR[128+rax]
1062 movdqa xmm7,XMMWORD PTR[80+r11]
1064 DB 0F3h,0C3h ;repret
1065 _bsaes_key_convert ENDP
1066 EXTERN asm_AES_cbc_encrypt:NEAR
1067 PUBLIC bsaes_cbc_encrypt
1070 bsaes_cbc_encrypt PROC PUBLIC
1071 mov r11d,DWORD PTR[48+rsp]
1073 jne asm_AES_cbc_encrypt
1075 jb asm_AES_cbc_encrypt
1078 $L$cbc_dec_prologue::
1085 lea rsp,QWORD PTR[((-72))+rsp]
1086 mov r10,QWORD PTR[160+rsp]
1087 lea rsp,QWORD PTR[((-160))+rsp]
1088 movaps XMMWORD PTR[64+rsp],xmm6
1089 movaps XMMWORD PTR[80+rsp],xmm7
1090 movaps XMMWORD PTR[96+rsp],xmm8
1091 movaps XMMWORD PTR[112+rsp],xmm9
1092 movaps XMMWORD PTR[128+rsp],xmm10
1093 movaps XMMWORD PTR[144+rsp],xmm11
1094 movaps XMMWORD PTR[160+rsp],xmm12
1095 movaps XMMWORD PTR[176+rsp],xmm13
1096 movaps XMMWORD PTR[192+rsp],xmm14
1097 movaps XMMWORD PTR[208+rsp],xmm15
1100 mov eax,DWORD PTR[240+r9]
1116 call _bsaes_key_convert
1117 pxor xmm7,XMMWORD PTR[rsp]
1118 movdqa XMMWORD PTR[rax],xmm6
1119 movdqa XMMWORD PTR[rsp],xmm7
1121 movdqu xmm14,XMMWORD PTR[rbx]
1124 movdqu xmm15,XMMWORD PTR[r12]
1125 movdqu xmm0,XMMWORD PTR[16+r12]
1126 movdqu xmm1,XMMWORD PTR[32+r12]
1127 movdqu xmm2,XMMWORD PTR[48+r12]
1128 movdqu xmm3,XMMWORD PTR[64+r12]
1129 movdqu xmm4,XMMWORD PTR[80+r12]
1131 movdqu xmm5,XMMWORD PTR[96+r12]
1133 movdqu xmm6,XMMWORD PTR[112+r12]
1134 movdqa XMMWORD PTR[32+rbp],xmm14
1136 call _bsaes_decrypt8
1138 pxor xmm15,XMMWORD PTR[32+rbp]
1139 movdqu xmm7,XMMWORD PTR[r12]
1140 movdqu xmm8,XMMWORD PTR[16+r12]
1142 movdqu xmm9,XMMWORD PTR[32+r12]
1144 movdqu xmm10,XMMWORD PTR[48+r12]
1146 movdqu xmm11,XMMWORD PTR[64+r12]
1148 movdqu xmm12,XMMWORD PTR[80+r12]
1150 movdqu xmm13,XMMWORD PTR[96+r12]
1152 movdqu xmm14,XMMWORD PTR[112+r12]
1154 movdqu XMMWORD PTR[r13],xmm15
1155 lea r12,QWORD PTR[128+r12]
1156 movdqu XMMWORD PTR[16+r13],xmm0
1157 movdqu XMMWORD PTR[32+r13],xmm5
1158 movdqu XMMWORD PTR[48+r13],xmm3
1159 movdqu XMMWORD PTR[64+r13],xmm1
1160 movdqu XMMWORD PTR[80+r13],xmm6
1161 movdqu XMMWORD PTR[96+r13],xmm2
1162 movdqu XMMWORD PTR[112+r13],xmm4
1163 lea r13,QWORD PTR[128+r13]
1170 movdqu xmm15,XMMWORD PTR[r12]
1175 movdqu xmm0,XMMWORD PTR[16+r12]
1177 movdqu xmm1,XMMWORD PTR[32+r12]
1180 movdqu xmm2,XMMWORD PTR[48+r12]
1182 movdqu xmm3,XMMWORD PTR[64+r12]
1185 movdqu xmm4,XMMWORD PTR[80+r12]
1187 movdqu xmm5,XMMWORD PTR[96+r12]
1188 movdqa XMMWORD PTR[32+rbp],xmm14
1189 call _bsaes_decrypt8
1190 pxor xmm15,XMMWORD PTR[32+rbp]
1191 movdqu xmm7,XMMWORD PTR[r12]
1192 movdqu xmm8,XMMWORD PTR[16+r12]
1194 movdqu xmm9,XMMWORD PTR[32+r12]
1196 movdqu xmm10,XMMWORD PTR[48+r12]
1198 movdqu xmm11,XMMWORD PTR[64+r12]
1200 movdqu xmm12,XMMWORD PTR[80+r12]
1202 movdqu xmm14,XMMWORD PTR[96+r12]
1204 movdqu XMMWORD PTR[r13],xmm15
1205 movdqu XMMWORD PTR[16+r13],xmm0
1206 movdqu XMMWORD PTR[32+r13],xmm5
1207 movdqu XMMWORD PTR[48+r13],xmm3
1208 movdqu XMMWORD PTR[64+r13],xmm1
1209 movdqu XMMWORD PTR[80+r13],xmm6
1210 movdqu XMMWORD PTR[96+r13],xmm2
1214 movdqa XMMWORD PTR[32+rbp],xmm14
1215 call _bsaes_decrypt8
1216 pxor xmm15,XMMWORD PTR[32+rbp]
1217 movdqu xmm7,XMMWORD PTR[r12]
1218 movdqu xmm8,XMMWORD PTR[16+r12]
1220 movdqu xmm9,XMMWORD PTR[32+r12]
1222 movdqu xmm10,XMMWORD PTR[48+r12]
1224 movdqu xmm11,XMMWORD PTR[64+r12]
1226 movdqu xmm14,XMMWORD PTR[80+r12]
1228 movdqu XMMWORD PTR[r13],xmm15
1229 movdqu XMMWORD PTR[16+r13],xmm0
1230 movdqu XMMWORD PTR[32+r13],xmm5
1231 movdqu XMMWORD PTR[48+r13],xmm3
1232 movdqu XMMWORD PTR[64+r13],xmm1
1233 movdqu XMMWORD PTR[80+r13],xmm6
1237 movdqa XMMWORD PTR[32+rbp],xmm14
1238 call _bsaes_decrypt8
1239 pxor xmm15,XMMWORD PTR[32+rbp]
1240 movdqu xmm7,XMMWORD PTR[r12]
1241 movdqu xmm8,XMMWORD PTR[16+r12]
1243 movdqu xmm9,XMMWORD PTR[32+r12]
1245 movdqu xmm10,XMMWORD PTR[48+r12]
1247 movdqu xmm14,XMMWORD PTR[64+r12]
1249 movdqu XMMWORD PTR[r13],xmm15
1250 movdqu XMMWORD PTR[16+r13],xmm0
1251 movdqu XMMWORD PTR[32+r13],xmm5
1252 movdqu XMMWORD PTR[48+r13],xmm3
1253 movdqu XMMWORD PTR[64+r13],xmm1
1257 movdqa XMMWORD PTR[32+rbp],xmm14
1258 call _bsaes_decrypt8
1259 pxor xmm15,XMMWORD PTR[32+rbp]
1260 movdqu xmm7,XMMWORD PTR[r12]
1261 movdqu xmm8,XMMWORD PTR[16+r12]
1263 movdqu xmm9,XMMWORD PTR[32+r12]
1265 movdqu xmm14,XMMWORD PTR[48+r12]
1267 movdqu XMMWORD PTR[r13],xmm15
1268 movdqu XMMWORD PTR[16+r13],xmm0
1269 movdqu XMMWORD PTR[32+r13],xmm5
1270 movdqu XMMWORD PTR[48+r13],xmm3
1274 movdqa XMMWORD PTR[32+rbp],xmm14
1275 call _bsaes_decrypt8
1276 pxor xmm15,XMMWORD PTR[32+rbp]
1277 movdqu xmm7,XMMWORD PTR[r12]
1278 movdqu xmm8,XMMWORD PTR[16+r12]
1280 movdqu xmm14,XMMWORD PTR[32+r12]
1282 movdqu XMMWORD PTR[r13],xmm15
1283 movdqu XMMWORD PTR[16+r13],xmm0
1284 movdqu XMMWORD PTR[32+r13],xmm5
1288 movdqa XMMWORD PTR[32+rbp],xmm14
1289 call _bsaes_decrypt8
1290 pxor xmm15,XMMWORD PTR[32+rbp]
1291 movdqu xmm7,XMMWORD PTR[r12]
1292 movdqu xmm14,XMMWORD PTR[16+r12]
1294 movdqu XMMWORD PTR[r13],xmm15
1295 movdqu XMMWORD PTR[16+r13],xmm0
1299 lea rcx,QWORD PTR[r12]
1300 lea rdx,QWORD PTR[32+rbp]
1301 lea r8,QWORD PTR[r15]
1302 call asm_AES_decrypt
1303 pxor xmm14,XMMWORD PTR[32+rbp]
1304 movdqu XMMWORD PTR[r13],xmm14
1308 movdqu XMMWORD PTR[rbx],xmm14
1309 lea rax,QWORD PTR[rsp]
1312 movdqa XMMWORD PTR[rax],xmm0
1313 movdqa XMMWORD PTR[16+rax],xmm0
1314 lea rax,QWORD PTR[32+rax]
1318 lea rsp,QWORD PTR[rbp]
1319 movaps xmm6,XMMWORD PTR[64+rbp]
1320 movaps xmm7,XMMWORD PTR[80+rbp]
1321 movaps xmm8,XMMWORD PTR[96+rbp]
1322 movaps xmm9,XMMWORD PTR[112+rbp]
1323 movaps xmm10,XMMWORD PTR[128+rbp]
1324 movaps xmm11,XMMWORD PTR[144+rbp]
1325 movaps xmm12,XMMWORD PTR[160+rbp]
1326 movaps xmm13,XMMWORD PTR[176+rbp]
1327 movaps xmm14,XMMWORD PTR[192+rbp]
1328 movaps xmm15,XMMWORD PTR[208+rbp]
1329 lea rsp,QWORD PTR[160+rbp]
1330 mov r15,QWORD PTR[72+rsp]
1331 mov r14,QWORD PTR[80+rsp]
1332 mov r13,QWORD PTR[88+rsp]
1333 mov r12,QWORD PTR[96+rsp]
1334 mov rbx,QWORD PTR[104+rsp]
1335 mov rax,QWORD PTR[112+rsp]
1336 lea rsp,QWORD PTR[120+rsp]
1338 $L$cbc_dec_epilogue::
1339 DB 0F3h,0C3h ;repret
1340 bsaes_cbc_encrypt ENDP
1342 PUBLIC bsaes_ctr32_encrypt_blocks
1345 bsaes_ctr32_encrypt_blocks PROC PUBLIC
1347 $L$ctr_enc_prologue::
1354 lea rsp,QWORD PTR[((-72))+rsp]
1355 mov r10,QWORD PTR[160+rsp]
1356 lea rsp,QWORD PTR[((-160))+rsp]
1357 movaps XMMWORD PTR[64+rsp],xmm6
1358 movaps XMMWORD PTR[80+rsp],xmm7
1359 movaps XMMWORD PTR[96+rsp],xmm8
1360 movaps XMMWORD PTR[112+rsp],xmm9
1361 movaps XMMWORD PTR[128+rsp],xmm10
1362 movaps XMMWORD PTR[144+rsp],xmm11
1363 movaps XMMWORD PTR[160+rsp],xmm12
1364 movaps XMMWORD PTR[176+rsp],xmm13
1365 movaps XMMWORD PTR[192+rsp],xmm14
1366 movaps XMMWORD PTR[208+rsp],xmm15
1369 movdqu xmm0,XMMWORD PTR[r10]
1370 mov eax,DWORD PTR[240+r9]
1375 movdqa XMMWORD PTR[32+rbp],xmm0
1387 call _bsaes_key_convert
1389 movdqa XMMWORD PTR[rax],xmm7
1391 movdqa xmm8,XMMWORD PTR[rsp]
1392 lea r11,QWORD PTR[$L$ADD1]
1393 movdqa xmm15,XMMWORD PTR[32+rbp]
1394 movdqa xmm7,XMMWORD PTR[((-32))+r11]
1395 DB 102,68,15,56,0,199
1396 DB 102,68,15,56,0,255
1397 movdqa XMMWORD PTR[rsp],xmm8
1401 movdqa XMMWORD PTR[32+rbp],xmm15
1404 paddd xmm0,XMMWORD PTR[r11]
1406 paddd xmm1,XMMWORD PTR[16+r11]
1408 paddd xmm2,XMMWORD PTR[32+r11]
1410 paddd xmm3,XMMWORD PTR[48+r11]
1412 paddd xmm4,XMMWORD PTR[64+r11]
1414 paddd xmm5,XMMWORD PTR[80+r11]
1415 paddd xmm6,XMMWORD PTR[96+r11]
1419 movdqa xmm8,XMMWORD PTR[rsp]
1420 lea rax,QWORD PTR[16+rsp]
1421 movdqa xmm7,XMMWORD PTR[((-16))+r11]
1426 DB 102,68,15,56,0,255
1438 lea r11,QWORD PTR[$L$BS0]
1441 call _bsaes_encrypt8_bitslice
1444 jc $L$ctr_enc_loop_done
1446 movdqu xmm7,XMMWORD PTR[r12]
1447 movdqu xmm8,XMMWORD PTR[16+r12]
1448 movdqu xmm9,XMMWORD PTR[32+r12]
1449 movdqu xmm10,XMMWORD PTR[48+r12]
1450 movdqu xmm11,XMMWORD PTR[64+r12]
1451 movdqu xmm12,XMMWORD PTR[80+r12]
1452 movdqu xmm13,XMMWORD PTR[96+r12]
1453 movdqu xmm14,XMMWORD PTR[112+r12]
1454 lea r12,QWORD PTR[128+r12]
1456 movdqa xmm15,XMMWORD PTR[32+rbp]
1458 movdqu XMMWORD PTR[r13],xmm7
1460 movdqu XMMWORD PTR[16+r13],xmm0
1462 movdqu XMMWORD PTR[32+r13],xmm3
1464 movdqu XMMWORD PTR[48+r13],xmm5
1466 movdqu XMMWORD PTR[64+r13],xmm2
1468 movdqu XMMWORD PTR[80+r13],xmm6
1470 movdqu XMMWORD PTR[96+r13],xmm1
1471 lea r11,QWORD PTR[$L$ADD1]
1472 movdqu XMMWORD PTR[112+r13],xmm4
1473 lea r13,QWORD PTR[128+r13]
1474 paddd xmm15,XMMWORD PTR[112+r11]
1479 $L$ctr_enc_loop_done::
1481 movdqu xmm7,XMMWORD PTR[r12]
1483 movdqu XMMWORD PTR[r13],xmm15
1486 movdqu xmm8,XMMWORD PTR[16+r12]
1488 movdqu XMMWORD PTR[16+r13],xmm0
1490 movdqu xmm9,XMMWORD PTR[32+r12]
1492 movdqu XMMWORD PTR[32+r13],xmm3
1495 movdqu xmm10,XMMWORD PTR[48+r12]
1497 movdqu XMMWORD PTR[48+r13],xmm5
1499 movdqu xmm11,XMMWORD PTR[64+r12]
1501 movdqu XMMWORD PTR[64+r13],xmm2
1504 movdqu xmm12,XMMWORD PTR[80+r12]
1506 movdqu XMMWORD PTR[80+r13],xmm6
1508 movdqu xmm13,XMMWORD PTR[96+r12]
1510 movdqu XMMWORD PTR[96+r13],xmm1
1515 lea rcx,QWORD PTR[32+rbp]
1516 lea rdx,QWORD PTR[48+rbp]
1517 lea r8,QWORD PTR[r15]
1518 call asm_AES_encrypt
1519 movdqu xmm0,XMMWORD PTR[r12]
1520 lea r12,QWORD PTR[16+r12]
1521 mov eax,DWORD PTR[44+rbp]
1523 pxor xmm0,XMMWORD PTR[48+rbp]
1525 movdqu XMMWORD PTR[r13],xmm0
1527 lea r13,QWORD PTR[16+r13]
1528 mov DWORD PTR[44+rsp],eax
1530 jnz $L$ctr_enc_short
1533 lea rax,QWORD PTR[rsp]
1536 movdqa XMMWORD PTR[rax],xmm0
1537 movdqa XMMWORD PTR[16+rax],xmm0
1538 lea rax,QWORD PTR[32+rax]
1542 lea rsp,QWORD PTR[rbp]
1543 movaps xmm6,XMMWORD PTR[64+rbp]
1544 movaps xmm7,XMMWORD PTR[80+rbp]
1545 movaps xmm8,XMMWORD PTR[96+rbp]
1546 movaps xmm9,XMMWORD PTR[112+rbp]
1547 movaps xmm10,XMMWORD PTR[128+rbp]
1548 movaps xmm11,XMMWORD PTR[144+rbp]
1549 movaps xmm12,XMMWORD PTR[160+rbp]
1550 movaps xmm13,XMMWORD PTR[176+rbp]
1551 movaps xmm14,XMMWORD PTR[192+rbp]
1552 movaps xmm15,XMMWORD PTR[208+rbp]
1553 lea rsp,QWORD PTR[160+rbp]
1554 mov r15,QWORD PTR[72+rsp]
1555 mov r14,QWORD PTR[80+rsp]
1556 mov r13,QWORD PTR[88+rsp]
1557 mov r12,QWORD PTR[96+rsp]
1558 mov rbx,QWORD PTR[104+rsp]
1559 mov rax,QWORD PTR[112+rsp]
1560 lea rsp,QWORD PTR[120+rsp]
1562 $L$ctr_enc_epilogue::
1563 DB 0F3h,0C3h ;repret
1564 bsaes_ctr32_encrypt_blocks ENDP
1565 PUBLIC bsaes_xts_encrypt
1568 bsaes_xts_encrypt PROC PUBLIC
1570 $L$xts_enc_prologue::
1577 lea rsp,QWORD PTR[((-72))+rsp]
1578 mov r10,QWORD PTR[160+rsp]
1579 mov r11,QWORD PTR[168+rsp]
1580 lea rsp,QWORD PTR[((-160))+rsp]
1581 movaps XMMWORD PTR[64+rsp],xmm6
1582 movaps XMMWORD PTR[80+rsp],xmm7
1583 movaps XMMWORD PTR[96+rsp],xmm8
1584 movaps XMMWORD PTR[112+rsp],xmm9
1585 movaps XMMWORD PTR[128+rsp],xmm10
1586 movaps XMMWORD PTR[144+rsp],xmm11
1587 movaps XMMWORD PTR[160+rsp],xmm12
1588 movaps XMMWORD PTR[176+rsp],xmm13
1589 movaps XMMWORD PTR[192+rsp],xmm14
1590 movaps XMMWORD PTR[208+rsp],xmm15
1598 lea rcx,QWORD PTR[r11]
1599 lea rdx,QWORD PTR[32+rbp]
1600 lea r8,QWORD PTR[r10]
1601 call asm_AES_encrypt
1603 mov eax,DWORD PTR[240+r15]
1614 call _bsaes_key_convert
1616 movdqa XMMWORD PTR[rax],xmm7
1620 movdqa xmm6,XMMWORD PTR[32+rbp]
1623 movdqa xmm12,XMMWORD PTR[$L$xts_magic]
1632 pshufd xmm13,xmm14,013h
1635 movdqa XMMWORD PTR[rsp],xmm6
1640 pshufd xmm13,xmm14,013h
1643 movdqa XMMWORD PTR[16+rsp],xmm6
1648 movdqu xmm7,XMMWORD PTR[r12]
1649 pshufd xmm13,xmm14,013h
1652 movdqa XMMWORD PTR[32+rsp],xmm6
1657 movdqu xmm8,XMMWORD PTR[16+r12]
1659 pshufd xmm13,xmm14,013h
1662 movdqa XMMWORD PTR[48+rsp],xmm6
1667 movdqu xmm9,XMMWORD PTR[32+r12]
1669 pshufd xmm13,xmm14,013h
1672 movdqa XMMWORD PTR[64+rsp],xmm6
1677 movdqu xmm10,XMMWORD PTR[48+r12]
1679 pshufd xmm13,xmm14,013h
1682 movdqa XMMWORD PTR[80+rsp],xmm6
1687 movdqu xmm11,XMMWORD PTR[64+r12]
1689 pshufd xmm13,xmm14,013h
1692 movdqa XMMWORD PTR[96+rsp],xmm6
1697 movdqu xmm12,XMMWORD PTR[80+r12]
1699 movdqu xmm13,XMMWORD PTR[96+r12]
1701 movdqu xmm14,XMMWORD PTR[112+r12]
1702 lea r12,QWORD PTR[128+r12]
1703 movdqa XMMWORD PTR[112+rsp],xmm6
1705 lea rax,QWORD PTR[128+rsp]
1709 call _bsaes_encrypt8
1711 pxor xmm15,XMMWORD PTR[rsp]
1712 pxor xmm0,XMMWORD PTR[16+rsp]
1713 movdqu XMMWORD PTR[r13],xmm15
1714 pxor xmm3,XMMWORD PTR[32+rsp]
1715 movdqu XMMWORD PTR[16+r13],xmm0
1716 pxor xmm5,XMMWORD PTR[48+rsp]
1717 movdqu XMMWORD PTR[32+r13],xmm3
1718 pxor xmm2,XMMWORD PTR[64+rsp]
1719 movdqu XMMWORD PTR[48+r13],xmm5
1720 pxor xmm6,XMMWORD PTR[80+rsp]
1721 movdqu XMMWORD PTR[64+r13],xmm2
1722 pxor xmm1,XMMWORD PTR[96+rsp]
1723 movdqu XMMWORD PTR[80+r13],xmm6
1724 pxor xmm4,XMMWORD PTR[112+rsp]
1725 movdqu XMMWORD PTR[96+r13],xmm1
1726 movdqu XMMWORD PTR[112+r13],xmm4
1727 lea r13,QWORD PTR[128+r13]
1729 movdqa xmm6,XMMWORD PTR[112+rsp]
1731 movdqa xmm12,XMMWORD PTR[$L$xts_magic]
1733 pshufd xmm13,xmm14,013h
1746 pshufd xmm13,xmm14,013h
1749 movdqa XMMWORD PTR[rsp],xmm6
1754 pshufd xmm13,xmm14,013h
1757 movdqa XMMWORD PTR[16+rsp],xmm6
1762 movdqu xmm7,XMMWORD PTR[r12]
1765 pshufd xmm13,xmm14,013h
1768 movdqa XMMWORD PTR[32+rsp],xmm6
1773 movdqu xmm8,XMMWORD PTR[16+r12]
1777 pshufd xmm13,xmm14,013h
1780 movdqa XMMWORD PTR[48+rsp],xmm6
1785 movdqu xmm9,XMMWORD PTR[32+r12]
1789 pshufd xmm13,xmm14,013h
1792 movdqa XMMWORD PTR[64+rsp],xmm6
1797 movdqu xmm10,XMMWORD PTR[48+r12]
1801 pshufd xmm13,xmm14,013h
1804 movdqa XMMWORD PTR[80+rsp],xmm6
1809 movdqu xmm11,XMMWORD PTR[64+r12]
1813 pshufd xmm13,xmm14,013h
1816 movdqa XMMWORD PTR[96+rsp],xmm6
1821 movdqu xmm12,XMMWORD PTR[80+r12]
1825 movdqu xmm13,XMMWORD PTR[96+r12]
1827 movdqa XMMWORD PTR[112+rsp],xmm6
1828 lea r12,QWORD PTR[112+r12]
1830 lea rax,QWORD PTR[128+rsp]
1833 call _bsaes_encrypt8
1835 pxor xmm15,XMMWORD PTR[rsp]
1836 pxor xmm0,XMMWORD PTR[16+rsp]
1837 movdqu XMMWORD PTR[r13],xmm15
1838 pxor xmm3,XMMWORD PTR[32+rsp]
1839 movdqu XMMWORD PTR[16+r13],xmm0
1840 pxor xmm5,XMMWORD PTR[48+rsp]
1841 movdqu XMMWORD PTR[32+r13],xmm3
1842 pxor xmm2,XMMWORD PTR[64+rsp]
1843 movdqu XMMWORD PTR[48+r13],xmm5
1844 pxor xmm6,XMMWORD PTR[80+rsp]
1845 movdqu XMMWORD PTR[64+r13],xmm2
1846 pxor xmm1,XMMWORD PTR[96+rsp]
1847 movdqu XMMWORD PTR[80+r13],xmm6
1848 movdqu XMMWORD PTR[96+r13],xmm1
1849 lea r13,QWORD PTR[112+r13]
1851 movdqa xmm6,XMMWORD PTR[112+rsp]
1856 lea r12,QWORD PTR[96+r12]
1858 lea rax,QWORD PTR[128+rsp]
1861 call _bsaes_encrypt8
1863 pxor xmm15,XMMWORD PTR[rsp]
1864 pxor xmm0,XMMWORD PTR[16+rsp]
1865 movdqu XMMWORD PTR[r13],xmm15
1866 pxor xmm3,XMMWORD PTR[32+rsp]
1867 movdqu XMMWORD PTR[16+r13],xmm0
1868 pxor xmm5,XMMWORD PTR[48+rsp]
1869 movdqu XMMWORD PTR[32+r13],xmm3
1870 pxor xmm2,XMMWORD PTR[64+rsp]
1871 movdqu XMMWORD PTR[48+r13],xmm5
1872 pxor xmm6,XMMWORD PTR[80+rsp]
1873 movdqu XMMWORD PTR[64+r13],xmm2
1874 movdqu XMMWORD PTR[80+r13],xmm6
1875 lea r13,QWORD PTR[96+r13]
1877 movdqa xmm6,XMMWORD PTR[96+rsp]
1882 lea r12,QWORD PTR[80+r12]
1884 lea rax,QWORD PTR[128+rsp]
1887 call _bsaes_encrypt8
1889 pxor xmm15,XMMWORD PTR[rsp]
1890 pxor xmm0,XMMWORD PTR[16+rsp]
1891 movdqu XMMWORD PTR[r13],xmm15
1892 pxor xmm3,XMMWORD PTR[32+rsp]
1893 movdqu XMMWORD PTR[16+r13],xmm0
1894 pxor xmm5,XMMWORD PTR[48+rsp]
1895 movdqu XMMWORD PTR[32+r13],xmm3
1896 pxor xmm2,XMMWORD PTR[64+rsp]
1897 movdqu XMMWORD PTR[48+r13],xmm5
1898 movdqu XMMWORD PTR[64+r13],xmm2
1899 lea r13,QWORD PTR[80+r13]
1901 movdqa xmm6,XMMWORD PTR[80+rsp]
1906 lea r12,QWORD PTR[64+r12]
1908 lea rax,QWORD PTR[128+rsp]
1911 call _bsaes_encrypt8
1913 pxor xmm15,XMMWORD PTR[rsp]
1914 pxor xmm0,XMMWORD PTR[16+rsp]
1915 movdqu XMMWORD PTR[r13],xmm15
1916 pxor xmm3,XMMWORD PTR[32+rsp]
1917 movdqu XMMWORD PTR[16+r13],xmm0
1918 pxor xmm5,XMMWORD PTR[48+rsp]
1919 movdqu XMMWORD PTR[32+r13],xmm3
1920 movdqu XMMWORD PTR[48+r13],xmm5
1921 lea r13,QWORD PTR[64+r13]
1923 movdqa xmm6,XMMWORD PTR[64+rsp]
1928 lea r12,QWORD PTR[48+r12]
1930 lea rax,QWORD PTR[128+rsp]
1933 call _bsaes_encrypt8
1935 pxor xmm15,XMMWORD PTR[rsp]
1936 pxor xmm0,XMMWORD PTR[16+rsp]
1937 movdqu XMMWORD PTR[r13],xmm15
1938 pxor xmm3,XMMWORD PTR[32+rsp]
1939 movdqu XMMWORD PTR[16+r13],xmm0
1940 movdqu XMMWORD PTR[32+r13],xmm3
1941 lea r13,QWORD PTR[48+r13]
1943 movdqa xmm6,XMMWORD PTR[48+rsp]
1948 lea r12,QWORD PTR[32+r12]
1950 lea rax,QWORD PTR[128+rsp]
1953 call _bsaes_encrypt8
1955 pxor xmm15,XMMWORD PTR[rsp]
1956 pxor xmm0,XMMWORD PTR[16+rsp]
1957 movdqu XMMWORD PTR[r13],xmm15
1958 movdqu XMMWORD PTR[16+r13],xmm0
1959 lea r13,QWORD PTR[32+r13]
1961 movdqa xmm6,XMMWORD PTR[32+rsp]
1966 lea r12,QWORD PTR[16+r12]
1967 movdqa XMMWORD PTR[32+rbp],xmm7
1968 lea rcx,QWORD PTR[32+rbp]
1969 lea rdx,QWORD PTR[32+rbp]
1970 lea r8,QWORD PTR[r15]
1971 call asm_AES_encrypt
1972 pxor xmm15,XMMWORD PTR[32+rbp]
1978 movdqu XMMWORD PTR[r13],xmm15
1979 lea r13,QWORD PTR[16+r13]
1981 movdqa xmm6,XMMWORD PTR[16+rsp]
1989 movzx eax,BYTE PTR[r12]
1990 movzx ecx,BYTE PTR[((-16))+rdx]
1991 lea r12,QWORD PTR[1+r12]
1992 mov BYTE PTR[((-16))+rdx],al
1993 mov BYTE PTR[rdx],cl
1994 lea rdx,QWORD PTR[1+rdx]
1996 jnz $L$xts_enc_steal
1998 movdqu xmm15,XMMWORD PTR[((-16))+r13]
1999 lea rcx,QWORD PTR[32+rbp]
2001 lea rdx,QWORD PTR[32+rbp]
2002 movdqa XMMWORD PTR[32+rbp],xmm15
2003 lea r8,QWORD PTR[r15]
2004 call asm_AES_encrypt
2005 pxor xmm6,XMMWORD PTR[32+rbp]
2006 movdqu XMMWORD PTR[(-16)+r13],xmm6
2009 lea rax,QWORD PTR[rsp]
2012 movdqa XMMWORD PTR[rax],xmm0
2013 movdqa XMMWORD PTR[16+rax],xmm0
2014 lea rax,QWORD PTR[32+rax]
2018 lea rsp,QWORD PTR[rbp]
2019 movaps xmm6,XMMWORD PTR[64+rbp]
2020 movaps xmm7,XMMWORD PTR[80+rbp]
2021 movaps xmm8,XMMWORD PTR[96+rbp]
2022 movaps xmm9,XMMWORD PTR[112+rbp]
2023 movaps xmm10,XMMWORD PTR[128+rbp]
2024 movaps xmm11,XMMWORD PTR[144+rbp]
2025 movaps xmm12,XMMWORD PTR[160+rbp]
2026 movaps xmm13,XMMWORD PTR[176+rbp]
2027 movaps xmm14,XMMWORD PTR[192+rbp]
2028 movaps xmm15,XMMWORD PTR[208+rbp]
2029 lea rsp,QWORD PTR[160+rbp]
2030 mov r15,QWORD PTR[72+rsp]
2031 mov r14,QWORD PTR[80+rsp]
2032 mov r13,QWORD PTR[88+rsp]
2033 mov r12,QWORD PTR[96+rsp]
2034 mov rbx,QWORD PTR[104+rsp]
2035 mov rax,QWORD PTR[112+rsp]
2036 lea rsp,QWORD PTR[120+rsp]
2038 $L$xts_enc_epilogue::
2039 DB 0F3h,0C3h ;repret
2040 bsaes_xts_encrypt ENDP
2042 PUBLIC bsaes_xts_decrypt
2045 bsaes_xts_decrypt PROC PUBLIC
2047 $L$xts_dec_prologue::
2054 lea rsp,QWORD PTR[((-72))+rsp]
2055 mov r10,QWORD PTR[160+rsp]
2056 mov r11,QWORD PTR[168+rsp]
2057 lea rsp,QWORD PTR[((-160))+rsp]
2058 movaps XMMWORD PTR[64+rsp],xmm6
2059 movaps XMMWORD PTR[80+rsp],xmm7
2060 movaps XMMWORD PTR[96+rsp],xmm8
2061 movaps XMMWORD PTR[112+rsp],xmm9
2062 movaps XMMWORD PTR[128+rsp],xmm10
2063 movaps XMMWORD PTR[144+rsp],xmm11
2064 movaps XMMWORD PTR[160+rsp],xmm12
2065 movaps XMMWORD PTR[176+rsp],xmm13
2066 movaps XMMWORD PTR[192+rsp],xmm14
2067 movaps XMMWORD PTR[208+rsp],xmm15
2075 lea rcx,QWORD PTR[r11]
2076 lea rdx,QWORD PTR[32+rbp]
2077 lea r8,QWORD PTR[r10]
2078 call asm_AES_encrypt
2080 mov eax,DWORD PTR[240+r15]
2091 call _bsaes_key_convert
2092 pxor xmm7,XMMWORD PTR[rsp]
2093 movdqa XMMWORD PTR[rax],xmm6
2094 movdqa XMMWORD PTR[rsp],xmm7
2104 movdqa xmm6,XMMWORD PTR[32+rbp]
2107 movdqa xmm12,XMMWORD PTR[$L$xts_magic]
2116 pshufd xmm13,xmm14,013h
2119 movdqa XMMWORD PTR[rsp],xmm6
2124 pshufd xmm13,xmm14,013h
2127 movdqa XMMWORD PTR[16+rsp],xmm6
2132 movdqu xmm7,XMMWORD PTR[r12]
2133 pshufd xmm13,xmm14,013h
2136 movdqa XMMWORD PTR[32+rsp],xmm6
2141 movdqu xmm8,XMMWORD PTR[16+r12]
2143 pshufd xmm13,xmm14,013h
2146 movdqa XMMWORD PTR[48+rsp],xmm6
2151 movdqu xmm9,XMMWORD PTR[32+r12]
2153 pshufd xmm13,xmm14,013h
2156 movdqa XMMWORD PTR[64+rsp],xmm6
2161 movdqu xmm10,XMMWORD PTR[48+r12]
2163 pshufd xmm13,xmm14,013h
2166 movdqa XMMWORD PTR[80+rsp],xmm6
2171 movdqu xmm11,XMMWORD PTR[64+r12]
2173 pshufd xmm13,xmm14,013h
2176 movdqa XMMWORD PTR[96+rsp],xmm6
2181 movdqu xmm12,XMMWORD PTR[80+r12]
2183 movdqu xmm13,XMMWORD PTR[96+r12]
2185 movdqu xmm14,XMMWORD PTR[112+r12]
2186 lea r12,QWORD PTR[128+r12]
2187 movdqa XMMWORD PTR[112+rsp],xmm6
2189 lea rax,QWORD PTR[128+rsp]
2193 call _bsaes_decrypt8
2195 pxor xmm15,XMMWORD PTR[rsp]
2196 pxor xmm0,XMMWORD PTR[16+rsp]
2197 movdqu XMMWORD PTR[r13],xmm15
2198 pxor xmm5,XMMWORD PTR[32+rsp]
2199 movdqu XMMWORD PTR[16+r13],xmm0
2200 pxor xmm3,XMMWORD PTR[48+rsp]
2201 movdqu XMMWORD PTR[32+r13],xmm5
2202 pxor xmm1,XMMWORD PTR[64+rsp]
2203 movdqu XMMWORD PTR[48+r13],xmm3
2204 pxor xmm6,XMMWORD PTR[80+rsp]
2205 movdqu XMMWORD PTR[64+r13],xmm1
2206 pxor xmm2,XMMWORD PTR[96+rsp]
2207 movdqu XMMWORD PTR[80+r13],xmm6
2208 pxor xmm4,XMMWORD PTR[112+rsp]
2209 movdqu XMMWORD PTR[96+r13],xmm2
2210 movdqu XMMWORD PTR[112+r13],xmm4
2211 lea r13,QWORD PTR[128+r13]
2213 movdqa xmm6,XMMWORD PTR[112+rsp]
2215 movdqa xmm12,XMMWORD PTR[$L$xts_magic]
2217 pshufd xmm13,xmm14,013h
2230 pshufd xmm13,xmm14,013h
2233 movdqa XMMWORD PTR[rsp],xmm6
2238 pshufd xmm13,xmm14,013h
2241 movdqa XMMWORD PTR[16+rsp],xmm6
2246 movdqu xmm7,XMMWORD PTR[r12]
2249 pshufd xmm13,xmm14,013h
2252 movdqa XMMWORD PTR[32+rsp],xmm6
2257 movdqu xmm8,XMMWORD PTR[16+r12]
2261 pshufd xmm13,xmm14,013h
2264 movdqa XMMWORD PTR[48+rsp],xmm6
2269 movdqu xmm9,XMMWORD PTR[32+r12]
2273 pshufd xmm13,xmm14,013h
2276 movdqa XMMWORD PTR[64+rsp],xmm6
2281 movdqu xmm10,XMMWORD PTR[48+r12]
2285 pshufd xmm13,xmm14,013h
2288 movdqa XMMWORD PTR[80+rsp],xmm6
2293 movdqu xmm11,XMMWORD PTR[64+r12]
2297 pshufd xmm13,xmm14,013h
2300 movdqa XMMWORD PTR[96+rsp],xmm6
2305 movdqu xmm12,XMMWORD PTR[80+r12]
2309 movdqu xmm13,XMMWORD PTR[96+r12]
2311 movdqa XMMWORD PTR[112+rsp],xmm6
2312 lea r12,QWORD PTR[112+r12]
2314 lea rax,QWORD PTR[128+rsp]
2317 call _bsaes_decrypt8
2319 pxor xmm15,XMMWORD PTR[rsp]
2320 pxor xmm0,XMMWORD PTR[16+rsp]
2321 movdqu XMMWORD PTR[r13],xmm15
2322 pxor xmm5,XMMWORD PTR[32+rsp]
2323 movdqu XMMWORD PTR[16+r13],xmm0
2324 pxor xmm3,XMMWORD PTR[48+rsp]
2325 movdqu XMMWORD PTR[32+r13],xmm5
2326 pxor xmm1,XMMWORD PTR[64+rsp]
2327 movdqu XMMWORD PTR[48+r13],xmm3
2328 pxor xmm6,XMMWORD PTR[80+rsp]
2329 movdqu XMMWORD PTR[64+r13],xmm1
2330 pxor xmm2,XMMWORD PTR[96+rsp]
2331 movdqu XMMWORD PTR[80+r13],xmm6
2332 movdqu XMMWORD PTR[96+r13],xmm2
2333 lea r13,QWORD PTR[112+r13]
2335 movdqa xmm6,XMMWORD PTR[112+rsp]
2340 lea r12,QWORD PTR[96+r12]
2342 lea rax,QWORD PTR[128+rsp]
2345 call _bsaes_decrypt8
2347 pxor xmm15,XMMWORD PTR[rsp]
2348 pxor xmm0,XMMWORD PTR[16+rsp]
2349 movdqu XMMWORD PTR[r13],xmm15
2350 pxor xmm5,XMMWORD PTR[32+rsp]
2351 movdqu XMMWORD PTR[16+r13],xmm0
2352 pxor xmm3,XMMWORD PTR[48+rsp]
2353 movdqu XMMWORD PTR[32+r13],xmm5
2354 pxor xmm1,XMMWORD PTR[64+rsp]
2355 movdqu XMMWORD PTR[48+r13],xmm3
2356 pxor xmm6,XMMWORD PTR[80+rsp]
2357 movdqu XMMWORD PTR[64+r13],xmm1
2358 movdqu XMMWORD PTR[80+r13],xmm6
2359 lea r13,QWORD PTR[96+r13]
2361 movdqa xmm6,XMMWORD PTR[96+rsp]
2366 lea r12,QWORD PTR[80+r12]
2368 lea rax,QWORD PTR[128+rsp]
2371 call _bsaes_decrypt8
2373 pxor xmm15,XMMWORD PTR[rsp]
2374 pxor xmm0,XMMWORD PTR[16+rsp]
2375 movdqu XMMWORD PTR[r13],xmm15
2376 pxor xmm5,XMMWORD PTR[32+rsp]
2377 movdqu XMMWORD PTR[16+r13],xmm0
2378 pxor xmm3,XMMWORD PTR[48+rsp]
2379 movdqu XMMWORD PTR[32+r13],xmm5
2380 pxor xmm1,XMMWORD PTR[64+rsp]
2381 movdqu XMMWORD PTR[48+r13],xmm3
2382 movdqu XMMWORD PTR[64+r13],xmm1
2383 lea r13,QWORD PTR[80+r13]
2385 movdqa xmm6,XMMWORD PTR[80+rsp]
2390 lea r12,QWORD PTR[64+r12]
2392 lea rax,QWORD PTR[128+rsp]
2395 call _bsaes_decrypt8
2397 pxor xmm15,XMMWORD PTR[rsp]
2398 pxor xmm0,XMMWORD PTR[16+rsp]
2399 movdqu XMMWORD PTR[r13],xmm15
2400 pxor xmm5,XMMWORD PTR[32+rsp]
2401 movdqu XMMWORD PTR[16+r13],xmm0
2402 pxor xmm3,XMMWORD PTR[48+rsp]
2403 movdqu XMMWORD PTR[32+r13],xmm5
2404 movdqu XMMWORD PTR[48+r13],xmm3
2405 lea r13,QWORD PTR[64+r13]
2407 movdqa xmm6,XMMWORD PTR[64+rsp]
2412 lea r12,QWORD PTR[48+r12]
2414 lea rax,QWORD PTR[128+rsp]
2417 call _bsaes_decrypt8
2419 pxor xmm15,XMMWORD PTR[rsp]
2420 pxor xmm0,XMMWORD PTR[16+rsp]
2421 movdqu XMMWORD PTR[r13],xmm15
2422 pxor xmm5,XMMWORD PTR[32+rsp]
2423 movdqu XMMWORD PTR[16+r13],xmm0
2424 movdqu XMMWORD PTR[32+r13],xmm5
2425 lea r13,QWORD PTR[48+r13]
2427 movdqa xmm6,XMMWORD PTR[48+rsp]
2432 lea r12,QWORD PTR[32+r12]
2434 lea rax,QWORD PTR[128+rsp]
2437 call _bsaes_decrypt8
2439 pxor xmm15,XMMWORD PTR[rsp]
2440 pxor xmm0,XMMWORD PTR[16+rsp]
2441 movdqu XMMWORD PTR[r13],xmm15
2442 movdqu XMMWORD PTR[16+r13],xmm0
2443 lea r13,QWORD PTR[32+r13]
2445 movdqa xmm6,XMMWORD PTR[32+rsp]
2450 lea r12,QWORD PTR[16+r12]
2451 movdqa XMMWORD PTR[32+rbp],xmm7
2452 lea rcx,QWORD PTR[32+rbp]
2453 lea rdx,QWORD PTR[32+rbp]
2454 lea r8,QWORD PTR[r15]
2455 call asm_AES_decrypt
2456 pxor xmm15,XMMWORD PTR[32+rbp]
2462 movdqu XMMWORD PTR[r13],xmm15
2463 lea r13,QWORD PTR[16+r13]
2465 movdqa xmm6,XMMWORD PTR[16+rsp]
2472 movdqa xmm12,XMMWORD PTR[$L$xts_magic]
2474 pshufd xmm13,xmm14,013h
2478 movdqu xmm15,XMMWORD PTR[r12]
2481 lea rcx,QWORD PTR[32+rbp]
2483 lea rdx,QWORD PTR[32+rbp]
2484 movdqa XMMWORD PTR[32+rbp],xmm15
2485 lea r8,QWORD PTR[r15]
2486 call asm_AES_decrypt
2487 pxor xmm6,XMMWORD PTR[32+rbp]
2489 movdqu XMMWORD PTR[r13],xmm6
2492 movzx eax,BYTE PTR[16+r12]
2493 movzx ecx,BYTE PTR[rdx]
2494 lea r12,QWORD PTR[1+r12]
2495 mov BYTE PTR[rdx],al
2496 mov BYTE PTR[16+rdx],cl
2497 lea rdx,QWORD PTR[1+rdx]
2499 jnz $L$xts_dec_steal
2501 movdqu xmm15,XMMWORD PTR[r13]
2502 lea rcx,QWORD PTR[32+rbp]
2504 lea rdx,QWORD PTR[32+rbp]
2505 movdqa XMMWORD PTR[32+rbp],xmm15
2506 lea r8,QWORD PTR[r15]
2507 call asm_AES_decrypt
2508 pxor xmm5,XMMWORD PTR[32+rbp]
2509 movdqu XMMWORD PTR[r13],xmm5
2512 lea rax,QWORD PTR[rsp]
2515 movdqa XMMWORD PTR[rax],xmm0
2516 movdqa XMMWORD PTR[16+rax],xmm0
2517 lea rax,QWORD PTR[32+rax]
2521 lea rsp,QWORD PTR[rbp]
2522 movaps xmm6,XMMWORD PTR[64+rbp]
2523 movaps xmm7,XMMWORD PTR[80+rbp]
2524 movaps xmm8,XMMWORD PTR[96+rbp]
2525 movaps xmm9,XMMWORD PTR[112+rbp]
2526 movaps xmm10,XMMWORD PTR[128+rbp]
2527 movaps xmm11,XMMWORD PTR[144+rbp]
2528 movaps xmm12,XMMWORD PTR[160+rbp]
2529 movaps xmm13,XMMWORD PTR[176+rbp]
2530 movaps xmm14,XMMWORD PTR[192+rbp]
2531 movaps xmm15,XMMWORD PTR[208+rbp]
2532 lea rsp,QWORD PTR[160+rbp]
2533 mov r15,QWORD PTR[72+rsp]
2534 mov r14,QWORD PTR[80+rsp]
2535 mov r13,QWORD PTR[88+rsp]
2536 mov r12,QWORD PTR[96+rsp]
2537 mov rbx,QWORD PTR[104+rsp]
2538 mov rax,QWORD PTR[112+rsp]
2539 lea rsp,QWORD PTR[120+rsp]
2541 $L$xts_dec_epilogue::
2542 DB 0F3h,0C3h ;repret
2543 bsaes_xts_decrypt ENDP
2548 DQ 00a0e0206070b0f03h,00004080c0d010509h
2550 DQ 001040b0e0205080fh,00306090c00070a0dh
2552 DQ 00504070602010003h,00f0e0d0c080b0a09h
2554 DQ 05555555555555555h,05555555555555555h
2556 DQ 03333333333333333h,03333333333333333h
2558 DQ 00f0f0f0f0f0f0f0fh,00f0f0f0f0f0f0f0fh
2560 DQ 00504070600030201h,00f0e0d0c0a09080bh
2562 DQ 00304090e00050a0fh,001060b0c0207080dh
2564 DQ 00a0e02060f03070bh,00004080c05090d01h
2566 DQ 00706050403020100h,00c0d0e0f0b0a0908h
2568 DQ 00a0d02060c03070bh,00004080f05090e01h
2570 DQ 00000000000000000h,00000000100000000h
2572 DQ 00000000000000000h,00000000200000000h
2574 DQ 00000000000000000h,00000000300000000h
2576 DQ 00000000000000000h,00000000400000000h
2578 DQ 00000000000000000h,00000000500000000h
2580 DQ 00000000000000000h,00000000600000000h
2582 DQ 00000000000000000h,00000000700000000h
2584 DQ 00000000000000000h,00000000800000000h
2588 DQ 00101010101010101h,00101010101010101h
2589 DQ 00202020202020202h,00202020202020202h
2590 DQ 00404040404040404h,00404040404040404h
2591 DQ 00808080808080808h,00808080808080808h
2593 DQ 002060a0e03070b0fh,00004080c0105090dh
2595 DQ 06363636363636363h,06363636363636363h
2596 DB 66,105,116,45,115,108,105,99,101,100,32,65,69,83,32,102
2597 DB 111,114,32,120,56,54,95,54,52,47,83,83,83,69,51,44
2598 DB 32,69,109,105,108,105,97,32,75,195,164,115,112,101,114,44
2599 DB 32,80,101,116,101,114,32,83,99,104,119,97,98,101,44,32
2600 DB 65,110,100,121,32,80,111,108,121,97,107,111,118,0
2603 EXTERN __imp_RtlVirtualUnwind:NEAR
2606 se_handler PROC PRIVATE
2618 mov rax,QWORD PTR[120+r8]
2619 mov rbx,QWORD PTR[248+r8]
2621 mov rsi,QWORD PTR[8+r9]
2622 mov r11,QWORD PTR[56+r9]
2624 mov r10d,DWORD PTR[r11]
2625 lea r10,QWORD PTR[r10*1+rsi]
2629 mov rax,QWORD PTR[152+r8]
2631 mov r10d,DWORD PTR[4+r11]
2632 lea r10,QWORD PTR[r10*1+rsi]
2636 mov rax,QWORD PTR[160+r8]
2638 lea rsi,QWORD PTR[64+rax]
2639 lea rdi,QWORD PTR[512+r8]
2642 lea rax,QWORD PTR[160+rax]
2644 mov rbp,QWORD PTR[112+rax]
2645 mov rbx,QWORD PTR[104+rax]
2646 mov r12,QWORD PTR[96+rax]
2647 mov r13,QWORD PTR[88+rax]
2648 mov r14,QWORD PTR[80+rax]
2649 mov r15,QWORD PTR[72+rax]
2650 lea rax,QWORD PTR[120+rax]
2651 mov QWORD PTR[144+r8],rbx
2652 mov QWORD PTR[160+r8],rbp
2653 mov QWORD PTR[216+r8],r12
2654 mov QWORD PTR[224+r8],r13
2655 mov QWORD PTR[232+r8],r14
2656 mov QWORD PTR[240+r8],r15
2659 mov QWORD PTR[152+r8],rax
2661 mov rdi,QWORD PTR[40+r9]
2668 mov rdx,QWORD PTR[8+rsi]
2669 mov r8,QWORD PTR[rsi]
2670 mov r9,QWORD PTR[16+rsi]
2671 mov r10,QWORD PTR[40+rsi]
2672 lea r11,QWORD PTR[56+rsi]
2673 lea r12,QWORD PTR[24+rsi]
2674 mov QWORD PTR[32+rsp],r10
2675 mov QWORD PTR[40+rsp],r11
2676 mov QWORD PTR[48+rsp],r12
2677 mov QWORD PTR[56+rsp],rcx
2678 call QWORD PTR[__imp_RtlVirtualUnwind]
2691 DB 0F3h,0C3h ;repret
2695 .pdata SEGMENT READONLY ALIGN(4)
2697 DD imagerel $L$cbc_dec_prologue
2698 DD imagerel $L$cbc_dec_epilogue
2699 DD imagerel $L$cbc_dec_info
2701 DD imagerel $L$ctr_enc_prologue
2702 DD imagerel $L$ctr_enc_epilogue
2703 DD imagerel $L$ctr_enc_info
2705 DD imagerel $L$xts_enc_prologue
2706 DD imagerel $L$xts_enc_epilogue
2707 DD imagerel $L$xts_enc_info
2709 DD imagerel $L$xts_dec_prologue
2710 DD imagerel $L$xts_dec_epilogue
2711 DD imagerel $L$xts_dec_info
2714 .xdata SEGMENT READONLY ALIGN(8)
2718 DD imagerel se_handler
2719 DD imagerel $L$cbc_dec_body,imagerel $L$cbc_dec_epilogue
2722 DD imagerel se_handler
2723 DD imagerel $L$ctr_enc_body,imagerel $L$ctr_enc_epilogue
2726 DD imagerel se_handler
2727 DD imagerel $L$xts_enc_body,imagerel $L$xts_enc_epilogue
2730 DD imagerel se_handler
2731 DD imagerel $L$xts_dec_body,imagerel $L$xts_dec_epilogue