aesni-x86-win32n.asm 13 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682
  1. ; This file is generated from a similarly-named Perl script in the BoringSSL
  2. ; source tree. Do not edit by hand.
  3. %ifdef BORINGSSL_PREFIX
  4. %include "boringssl_prefix_symbols_nasm.inc"
  5. %endif
  6. %ifidn __OUTPUT_FORMAT__,obj
  7. section code use32 class=code align=64
  8. %elifidn __OUTPUT_FORMAT__,win32
  9. [email protected] equ 1
  10. section .text code align=64
  11. %else
  12. section .text code
  13. %endif
  14. ;extern _GFp_ia32cap_P
  15. global _GFp_aes_hw_encrypt
  16. align 16
  17. _GFp_aes_hw_encrypt:
  18. L$_GFp_aes_hw_encrypt_begin:
  19. mov eax,DWORD [4+esp]
  20. mov edx,DWORD [12+esp]
  21. movups xmm2,[eax]
  22. mov ecx,DWORD [240+edx]
  23. mov eax,DWORD [8+esp]
  24. movups xmm0,[edx]
  25. movups xmm1,[16+edx]
  26. lea edx,[32+edx]
  27. xorps xmm2,xmm0
  28. L$000enc1_loop_1:
  29. db 102,15,56,220,209
  30. dec ecx
  31. movups xmm1,[edx]
  32. lea edx,[16+edx]
  33. jnz NEAR L$000enc1_loop_1
  34. db 102,15,56,221,209
  35. pxor xmm0,xmm0
  36. pxor xmm1,xmm1
  37. movups [eax],xmm2
  38. pxor xmm2,xmm2
  39. ret
  40. align 16
  41. __aesni_encrypt2:
  42. movups xmm0,[edx]
  43. shl ecx,4
  44. movups xmm1,[16+edx]
  45. xorps xmm2,xmm0
  46. pxor xmm3,xmm0
  47. movups xmm0,[32+edx]
  48. lea edx,[32+ecx*1+edx]
  49. neg ecx
  50. add ecx,16
  51. L$001enc2_loop:
  52. db 102,15,56,220,209
  53. db 102,15,56,220,217
  54. movups xmm1,[ecx*1+edx]
  55. add ecx,32
  56. db 102,15,56,220,208
  57. db 102,15,56,220,216
  58. movups xmm0,[ecx*1+edx-16]
  59. jnz NEAR L$001enc2_loop
  60. db 102,15,56,220,209
  61. db 102,15,56,220,217
  62. db 102,15,56,221,208
  63. db 102,15,56,221,216
  64. ret
  65. align 16
  66. __aesni_encrypt3:
  67. movups xmm0,[edx]
  68. shl ecx,4
  69. movups xmm1,[16+edx]
  70. xorps xmm2,xmm0
  71. pxor xmm3,xmm0
  72. pxor xmm4,xmm0
  73. movups xmm0,[32+edx]
  74. lea edx,[32+ecx*1+edx]
  75. neg ecx
  76. add ecx,16
  77. L$002enc3_loop:
  78. db 102,15,56,220,209
  79. db 102,15,56,220,217
  80. db 102,15,56,220,225
  81. movups xmm1,[ecx*1+edx]
  82. add ecx,32
  83. db 102,15,56,220,208
  84. db 102,15,56,220,216
  85. db 102,15,56,220,224
  86. movups xmm0,[ecx*1+edx-16]
  87. jnz NEAR L$002enc3_loop
  88. db 102,15,56,220,209
  89. db 102,15,56,220,217
  90. db 102,15,56,220,225
  91. db 102,15,56,221,208
  92. db 102,15,56,221,216
  93. db 102,15,56,221,224
  94. ret
  95. align 16
  96. __aesni_encrypt4:
  97. movups xmm0,[edx]
  98. movups xmm1,[16+edx]
  99. shl ecx,4
  100. xorps xmm2,xmm0
  101. pxor xmm3,xmm0
  102. pxor xmm4,xmm0
  103. pxor xmm5,xmm0
  104. movups xmm0,[32+edx]
  105. lea edx,[32+ecx*1+edx]
  106. neg ecx
  107. db 15,31,64,0
  108. add ecx,16
  109. L$003enc4_loop:
  110. db 102,15,56,220,209
  111. db 102,15,56,220,217
  112. db 102,15,56,220,225
  113. db 102,15,56,220,233
  114. movups xmm1,[ecx*1+edx]
  115. add ecx,32
  116. db 102,15,56,220,208
  117. db 102,15,56,220,216
  118. db 102,15,56,220,224
  119. db 102,15,56,220,232
  120. movups xmm0,[ecx*1+edx-16]
  121. jnz NEAR L$003enc4_loop
  122. db 102,15,56,220,209
  123. db 102,15,56,220,217
  124. db 102,15,56,220,225
  125. db 102,15,56,220,233
  126. db 102,15,56,221,208
  127. db 102,15,56,221,216
  128. db 102,15,56,221,224
  129. db 102,15,56,221,232
  130. ret
  131. align 16
  132. __aesni_encrypt6:
  133. movups xmm0,[edx]
  134. shl ecx,4
  135. movups xmm1,[16+edx]
  136. xorps xmm2,xmm0
  137. pxor xmm3,xmm0
  138. pxor xmm4,xmm0
  139. db 102,15,56,220,209
  140. pxor xmm5,xmm0
  141. pxor xmm6,xmm0
  142. db 102,15,56,220,217
  143. lea edx,[32+ecx*1+edx]
  144. neg ecx
  145. db 102,15,56,220,225
  146. pxor xmm7,xmm0
  147. movups xmm0,[ecx*1+edx]
  148. add ecx,16
  149. jmp NEAR L$004_aesni_encrypt6_inner
  150. align 16
  151. L$005enc6_loop:
  152. db 102,15,56,220,209
  153. db 102,15,56,220,217
  154. db 102,15,56,220,225
  155. L$004_aesni_encrypt6_inner:
  156. db 102,15,56,220,233
  157. db 102,15,56,220,241
  158. db 102,15,56,220,249
  159. L$_aesni_encrypt6_enter:
  160. movups xmm1,[ecx*1+edx]
  161. add ecx,32
  162. db 102,15,56,220,208
  163. db 102,15,56,220,216
  164. db 102,15,56,220,224
  165. db 102,15,56,220,232
  166. db 102,15,56,220,240
  167. db 102,15,56,220,248
  168. movups xmm0,[ecx*1+edx-16]
  169. jnz NEAR L$005enc6_loop
  170. db 102,15,56,220,209
  171. db 102,15,56,220,217
  172. db 102,15,56,220,225
  173. db 102,15,56,220,233
  174. db 102,15,56,220,241
  175. db 102,15,56,220,249
  176. db 102,15,56,221,208
  177. db 102,15,56,221,216
  178. db 102,15,56,221,224
  179. db 102,15,56,221,232
  180. db 102,15,56,221,240
  181. db 102,15,56,221,248
  182. ret
  183. global _GFp_aes_hw_ctr32_encrypt_blocks
  184. align 16
  185. _GFp_aes_hw_ctr32_encrypt_blocks:
  186. L$_GFp_aes_hw_ctr32_encrypt_blocks_begin:
  187. push ebp
  188. push ebx
  189. push esi
  190. push edi
  191. mov esi,DWORD [20+esp]
  192. mov edi,DWORD [24+esp]
  193. mov eax,DWORD [28+esp]
  194. mov edx,DWORD [32+esp]
  195. mov ebx,DWORD [36+esp]
  196. mov ebp,esp
  197. sub esp,88
  198. and esp,-16
  199. mov DWORD [80+esp],ebp
  200. cmp eax,1
  201. je NEAR L$006ctr32_one_shortcut
  202. movdqu xmm7,[ebx]
  203. mov DWORD [esp],202182159
  204. mov DWORD [4+esp],134810123
  205. mov DWORD [8+esp],67438087
  206. mov DWORD [12+esp],66051
  207. mov ecx,6
  208. xor ebp,ebp
  209. mov DWORD [16+esp],ecx
  210. mov DWORD [20+esp],ecx
  211. mov DWORD [24+esp],ecx
  212. mov DWORD [28+esp],ebp
  213. db 102,15,58,22,251,3
  214. db 102,15,58,34,253,3
  215. mov ecx,DWORD [240+edx]
  216. bswap ebx
  217. pxor xmm0,xmm0
  218. pxor xmm1,xmm1
  219. movdqa xmm2,[esp]
  220. db 102,15,58,34,195,0
  221. lea ebp,[3+ebx]
  222. db 102,15,58,34,205,0
  223. inc ebx
  224. db 102,15,58,34,195,1
  225. inc ebp
  226. db 102,15,58,34,205,1
  227. inc ebx
  228. db 102,15,58,34,195,2
  229. inc ebp
  230. db 102,15,58,34,205,2
  231. movdqa [48+esp],xmm0
  232. db 102,15,56,0,194
  233. movdqu xmm6,[edx]
  234. movdqa [64+esp],xmm1
  235. db 102,15,56,0,202
  236. pshufd xmm2,xmm0,192
  237. pshufd xmm3,xmm0,128
  238. cmp eax,6
  239. jb NEAR L$007ctr32_tail
  240. pxor xmm7,xmm6
  241. shl ecx,4
  242. mov ebx,16
  243. movdqa [32+esp],xmm7
  244. mov ebp,edx
  245. sub ebx,ecx
  246. lea edx,[32+ecx*1+edx]
  247. sub eax,6
  248. jmp NEAR L$008ctr32_loop6
  249. align 16
  250. L$008ctr32_loop6:
  251. pshufd xmm4,xmm0,64
  252. movdqa xmm0,[32+esp]
  253. pshufd xmm5,xmm1,192
  254. pxor xmm2,xmm0
  255. pshufd xmm6,xmm1,128
  256. pxor xmm3,xmm0
  257. pshufd xmm7,xmm1,64
  258. movups xmm1,[16+ebp]
  259. pxor xmm4,xmm0
  260. pxor xmm5,xmm0
  261. db 102,15,56,220,209
  262. pxor xmm6,xmm0
  263. pxor xmm7,xmm0
  264. db 102,15,56,220,217
  265. movups xmm0,[32+ebp]
  266. mov ecx,ebx
  267. db 102,15,56,220,225
  268. db 102,15,56,220,233
  269. db 102,15,56,220,241
  270. db 102,15,56,220,249
  271. call L$_aesni_encrypt6_enter
  272. movups xmm1,[esi]
  273. movups xmm0,[16+esi]
  274. xorps xmm2,xmm1
  275. movups xmm1,[32+esi]
  276. xorps xmm3,xmm0
  277. movups [edi],xmm2
  278. movdqa xmm0,[16+esp]
  279. xorps xmm4,xmm1
  280. movdqa xmm1,[64+esp]
  281. movups [16+edi],xmm3
  282. movups [32+edi],xmm4
  283. paddd xmm1,xmm0
  284. paddd xmm0,[48+esp]
  285. movdqa xmm2,[esp]
  286. movups xmm3,[48+esi]
  287. movups xmm4,[64+esi]
  288. xorps xmm5,xmm3
  289. movups xmm3,[80+esi]
  290. lea esi,[96+esi]
  291. movdqa [48+esp],xmm0
  292. db 102,15,56,0,194
  293. xorps xmm6,xmm4
  294. movups [48+edi],xmm5
  295. xorps xmm7,xmm3
  296. movdqa [64+esp],xmm1
  297. db 102,15,56,0,202
  298. movups [64+edi],xmm6
  299. pshufd xmm2,xmm0,192
  300. movups [80+edi],xmm7
  301. lea edi,[96+edi]
  302. pshufd xmm3,xmm0,128
  303. sub eax,6
  304. jnc NEAR L$008ctr32_loop6
  305. add eax,6
  306. jz NEAR L$009ctr32_ret
  307. movdqu xmm7,[ebp]
  308. mov edx,ebp
  309. pxor xmm7,[32+esp]
  310. mov ecx,DWORD [240+ebp]
  311. L$007ctr32_tail:
  312. por xmm2,xmm7
  313. cmp eax,2
  314. jb NEAR L$010ctr32_one
  315. pshufd xmm4,xmm0,64
  316. por xmm3,xmm7
  317. je NEAR L$011ctr32_two
  318. pshufd xmm5,xmm1,192
  319. por xmm4,xmm7
  320. cmp eax,4
  321. jb NEAR L$012ctr32_three
  322. pshufd xmm6,xmm1,128
  323. por xmm5,xmm7
  324. je NEAR L$013ctr32_four
  325. por xmm6,xmm7
  326. call __aesni_encrypt6
  327. movups xmm1,[esi]
  328. movups xmm0,[16+esi]
  329. xorps xmm2,xmm1
  330. movups xmm1,[32+esi]
  331. xorps xmm3,xmm0
  332. movups xmm0,[48+esi]
  333. xorps xmm4,xmm1
  334. movups xmm1,[64+esi]
  335. xorps xmm5,xmm0
  336. movups [edi],xmm2
  337. xorps xmm6,xmm1
  338. movups [16+edi],xmm3
  339. movups [32+edi],xmm4
  340. movups [48+edi],xmm5
  341. movups [64+edi],xmm6
  342. jmp NEAR L$009ctr32_ret
  343. align 16
  344. L$006ctr32_one_shortcut:
  345. movups xmm2,[ebx]
  346. mov ecx,DWORD [240+edx]
  347. L$010ctr32_one:
  348. movups xmm0,[edx]
  349. movups xmm1,[16+edx]
  350. lea edx,[32+edx]
  351. xorps xmm2,xmm0
  352. L$014enc1_loop_2:
  353. db 102,15,56,220,209
  354. dec ecx
  355. movups xmm1,[edx]
  356. lea edx,[16+edx]
  357. jnz NEAR L$014enc1_loop_2
  358. db 102,15,56,221,209
  359. movups xmm6,[esi]
  360. xorps xmm6,xmm2
  361. movups [edi],xmm6
  362. jmp NEAR L$009ctr32_ret
  363. align 16
  364. L$011ctr32_two:
  365. call __aesni_encrypt2
  366. movups xmm5,[esi]
  367. movups xmm6,[16+esi]
  368. xorps xmm2,xmm5
  369. xorps xmm3,xmm6
  370. movups [edi],xmm2
  371. movups [16+edi],xmm3
  372. jmp NEAR L$009ctr32_ret
  373. align 16
  374. L$012ctr32_three:
  375. call __aesni_encrypt3
  376. movups xmm5,[esi]
  377. movups xmm6,[16+esi]
  378. xorps xmm2,xmm5
  379. movups xmm7,[32+esi]
  380. xorps xmm3,xmm6
  381. movups [edi],xmm2
  382. xorps xmm4,xmm7
  383. movups [16+edi],xmm3
  384. movups [32+edi],xmm4
  385. jmp NEAR L$009ctr32_ret
  386. align 16
  387. L$013ctr32_four:
  388. call __aesni_encrypt4
  389. movups xmm6,[esi]
  390. movups xmm7,[16+esi]
  391. movups xmm1,[32+esi]
  392. xorps xmm2,xmm6
  393. movups xmm0,[48+esi]
  394. xorps xmm3,xmm7
  395. movups [edi],xmm2
  396. xorps xmm4,xmm1
  397. movups [16+edi],xmm3
  398. xorps xmm5,xmm0
  399. movups [32+edi],xmm4
  400. movups [48+edi],xmm5
  401. L$009ctr32_ret:
  402. pxor xmm0,xmm0
  403. pxor xmm1,xmm1
  404. pxor xmm2,xmm2
  405. pxor xmm3,xmm3
  406. pxor xmm4,xmm4
  407. movdqa [32+esp],xmm0
  408. pxor xmm5,xmm5
  409. movdqa [48+esp],xmm0
  410. pxor xmm6,xmm6
  411. movdqa [64+esp],xmm0
  412. pxor xmm7,xmm7
  413. mov esp,DWORD [80+esp]
  414. pop edi
  415. pop esi
  416. pop ebx
  417. pop ebp
  418. ret
  419. align 16
  420. __aesni_set_encrypt_key:
  421. push ebp
  422. push ebx
  423. test eax,eax
  424. jz NEAR L$015bad_pointer
  425. test edx,edx
  426. jz NEAR L$015bad_pointer
  427. call L$016pic
  428. L$016pic:
  429. pop ebx
  430. lea ebx,[(L$key_const-L$016pic)+ebx]
  431. lea ebp,[_GFp_ia32cap_P]
  432. movups xmm0,[eax]
  433. xorps xmm4,xmm4
  434. mov ebp,DWORD [4+ebp]
  435. lea edx,[16+edx]
  436. and ebp,268437504
  437. cmp ecx,256
  438. je NEAR L$01714rounds
  439. cmp ecx,128
  440. jne NEAR L$018bad_keybits
  441. align 16
  442. L$01910rounds:
  443. cmp ebp,268435456
  444. je NEAR L$02010rounds_alt
  445. mov ecx,9
  446. movups [edx-16],xmm0
  447. db 102,15,58,223,200,1
  448. call L$021key_128_cold
  449. db 102,15,58,223,200,2
  450. call L$022key_128
  451. db 102,15,58,223,200,4
  452. call L$022key_128
  453. db 102,15,58,223,200,8
  454. call L$022key_128
  455. db 102,15,58,223,200,16
  456. call L$022key_128
  457. db 102,15,58,223,200,32
  458. call L$022key_128
  459. db 102,15,58,223,200,64
  460. call L$022key_128
  461. db 102,15,58,223,200,128
  462. call L$022key_128
  463. db 102,15,58,223,200,27
  464. call L$022key_128
  465. db 102,15,58,223,200,54
  466. call L$022key_128
  467. movups [edx],xmm0
  468. mov DWORD [80+edx],ecx
  469. jmp NEAR L$023good_key
  470. align 16
  471. L$022key_128:
  472. movups [edx],xmm0
  473. lea edx,[16+edx]
  474. L$021key_128_cold:
  475. shufps xmm4,xmm0,16
  476. xorps xmm0,xmm4
  477. shufps xmm4,xmm0,140
  478. xorps xmm0,xmm4
  479. shufps xmm1,xmm1,255
  480. xorps xmm0,xmm1
  481. ret
  482. align 16
  483. L$02010rounds_alt:
  484. movdqa xmm5,[ebx]
  485. mov ecx,8
  486. movdqa xmm4,[32+ebx]
  487. movdqa xmm2,xmm0
  488. movdqu [edx-16],xmm0
  489. L$024loop_key128:
  490. db 102,15,56,0,197
  491. db 102,15,56,221,196
  492. pslld xmm4,1
  493. lea edx,[16+edx]
  494. movdqa xmm3,xmm2
  495. pslldq xmm2,4
  496. pxor xmm3,xmm2
  497. pslldq xmm2,4
  498. pxor xmm3,xmm2
  499. pslldq xmm2,4
  500. pxor xmm2,xmm3
  501. pxor xmm0,xmm2
  502. movdqu [edx-16],xmm0
  503. movdqa xmm2,xmm0
  504. dec ecx
  505. jnz NEAR L$024loop_key128
  506. movdqa xmm4,[48+ebx]
  507. db 102,15,56,0,197
  508. db 102,15,56,221,196
  509. pslld xmm4,1
  510. movdqa xmm3,xmm2
  511. pslldq xmm2,4
  512. pxor xmm3,xmm2
  513. pslldq xmm2,4
  514. pxor xmm3,xmm2
  515. pslldq xmm2,4
  516. pxor xmm2,xmm3
  517. pxor xmm0,xmm2
  518. movdqu [edx],xmm0
  519. movdqa xmm2,xmm0
  520. db 102,15,56,0,197
  521. db 102,15,56,221,196
  522. movdqa xmm3,xmm2
  523. pslldq xmm2,4
  524. pxor xmm3,xmm2
  525. pslldq xmm2,4
  526. pxor xmm3,xmm2
  527. pslldq xmm2,4
  528. pxor xmm2,xmm3
  529. pxor xmm0,xmm2
  530. movdqu [16+edx],xmm0
  531. mov ecx,9
  532. mov DWORD [96+edx],ecx
  533. jmp NEAR L$023good_key
  534. align 16
  535. L$01714rounds:
  536. movups xmm2,[16+eax]
  537. lea edx,[16+edx]
  538. cmp ebp,268435456
  539. je NEAR L$02514rounds_alt
  540. mov ecx,13
  541. movups [edx-32],xmm0
  542. movups [edx-16],xmm2
  543. db 102,15,58,223,202,1
  544. call L$026key_256a_cold
  545. db 102,15,58,223,200,1
  546. call L$027key_256b
  547. db 102,15,58,223,202,2
  548. call L$028key_256a
  549. db 102,15,58,223,200,2
  550. call L$027key_256b
  551. db 102,15,58,223,202,4
  552. call L$028key_256a
  553. db 102,15,58,223,200,4
  554. call L$027key_256b
  555. db 102,15,58,223,202,8
  556. call L$028key_256a
  557. db 102,15,58,223,200,8
  558. call L$027key_256b
  559. db 102,15,58,223,202,16
  560. call L$028key_256a
  561. db 102,15,58,223,200,16
  562. call L$027key_256b
  563. db 102,15,58,223,202,32
  564. call L$028key_256a
  565. db 102,15,58,223,200,32
  566. call L$027key_256b
  567. db 102,15,58,223,202,64
  568. call L$028key_256a
  569. movups [edx],xmm0
  570. mov DWORD [16+edx],ecx
  571. xor eax,eax
  572. jmp NEAR L$023good_key
  573. align 16
  574. L$028key_256a:
  575. movups [edx],xmm2
  576. lea edx,[16+edx]
  577. L$026key_256a_cold:
  578. shufps xmm4,xmm0,16
  579. xorps xmm0,xmm4
  580. shufps xmm4,xmm0,140
  581. xorps xmm0,xmm4
  582. shufps xmm1,xmm1,255
  583. xorps xmm0,xmm1
  584. ret
  585. align 16
  586. L$027key_256b:
  587. movups [edx],xmm0
  588. lea edx,[16+edx]
  589. shufps xmm4,xmm2,16
  590. xorps xmm2,xmm4
  591. shufps xmm4,xmm2,140
  592. xorps xmm2,xmm4
  593. shufps xmm1,xmm1,170
  594. xorps xmm2,xmm1
  595. ret
  596. align 16
  597. L$02514rounds_alt:
  598. movdqa xmm5,[ebx]
  599. movdqa xmm4,[32+ebx]
  600. mov ecx,7
  601. movdqu [edx-32],xmm0
  602. movdqa xmm1,xmm2
  603. movdqu [edx-16],xmm2
  604. L$029loop_key256:
  605. db 102,15,56,0,213
  606. db 102,15,56,221,212
  607. movdqa xmm3,xmm0
  608. pslldq xmm0,4
  609. pxor xmm3,xmm0
  610. pslldq xmm0,4
  611. pxor xmm3,xmm0
  612. pslldq xmm0,4
  613. pxor xmm0,xmm3
  614. pslld xmm4,1
  615. pxor xmm0,xmm2
  616. movdqu [edx],xmm0
  617. dec ecx
  618. jz NEAR L$030done_key256
  619. pshufd xmm2,xmm0,255
  620. pxor xmm3,xmm3
  621. db 102,15,56,221,211
  622. movdqa xmm3,xmm1
  623. pslldq xmm1,4
  624. pxor xmm3,xmm1
  625. pslldq xmm1,4
  626. pxor xmm3,xmm1
  627. pslldq xmm1,4
  628. pxor xmm1,xmm3
  629. pxor xmm2,xmm1
  630. movdqu [16+edx],xmm2
  631. lea edx,[32+edx]
  632. movdqa xmm1,xmm2
  633. jmp NEAR L$029loop_key256
  634. L$030done_key256:
  635. mov ecx,13
  636. mov DWORD [16+edx],ecx
  637. L$023good_key:
  638. pxor xmm0,xmm0
  639. pxor xmm1,xmm1
  640. pxor xmm2,xmm2
  641. pxor xmm3,xmm3
  642. pxor xmm4,xmm4
  643. pxor xmm5,xmm5
  644. xor eax,eax
  645. pop ebx
  646. pop ebp
  647. ret
  648. align 4
  649. L$015bad_pointer:
  650. mov eax,-1
  651. pop ebx
  652. pop ebp
  653. ret
  654. align 4
  655. L$018bad_keybits:
  656. pxor xmm0,xmm0
  657. mov eax,-2
  658. pop ebx
  659. pop ebp
  660. ret
  661. global _GFp_aes_hw_set_encrypt_key
  662. align 16
  663. _GFp_aes_hw_set_encrypt_key:
  664. L$_GFp_aes_hw_set_encrypt_key_begin:
  665. mov eax,DWORD [4+esp]
  666. mov ecx,DWORD [8+esp]
  667. mov edx,DWORD [12+esp]
  668. call __aesni_set_encrypt_key
  669. ret
  670. align 64
  671. L$key_const:
  672. dd 202313229,202313229,202313229,202313229
  673. dd 67569157,67569157,67569157,67569157
  674. dd 1,1,1,1
  675. dd 27,27,27,27
  676. db 65,69,83,32,102,111,114,32,73,110,116,101,108,32,65,69
  677. db 83,45,78,73,44,32,67,82,89,80,84,79,71,65,77,83
  678. db 32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115
  679. db 115,108,46,111,114,103,62,0
  680. segment .bss
  681. common _GFp_ia32cap_P 16