md5-586.asm 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689
  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. $@feat.00 equ 1
  10. section .text code align=64
  11. %else
  12. section .text code
  13. %endif
  14. global _md5_block_asm_data_order
  15. align 16
  16. _md5_block_asm_data_order:
  17. L$_md5_block_asm_data_order_begin:
  18. push esi
  19. push edi
  20. mov edi,DWORD [12+esp]
  21. mov esi,DWORD [16+esp]
  22. mov ecx,DWORD [20+esp]
  23. push ebp
  24. shl ecx,6
  25. push ebx
  26. add ecx,esi
  27. sub ecx,64
  28. mov eax,DWORD [edi]
  29. push ecx
  30. mov ebx,DWORD [4+edi]
  31. mov ecx,DWORD [8+edi]
  32. mov edx,DWORD [12+edi]
  33. L$000start:
  34. ;
  35. ; R0 section
  36. mov edi,ecx
  37. mov ebp,DWORD [esi]
  38. ; R0 0
  39. xor edi,edx
  40. and edi,ebx
  41. lea eax,[3614090360+ebp*1+eax]
  42. xor edi,edx
  43. add eax,edi
  44. mov edi,ebx
  45. rol eax,7
  46. mov ebp,DWORD [4+esi]
  47. add eax,ebx
  48. ; R0 1
  49. xor edi,ecx
  50. and edi,eax
  51. lea edx,[3905402710+ebp*1+edx]
  52. xor edi,ecx
  53. add edx,edi
  54. mov edi,eax
  55. rol edx,12
  56. mov ebp,DWORD [8+esi]
  57. add edx,eax
  58. ; R0 2
  59. xor edi,ebx
  60. and edi,edx
  61. lea ecx,[606105819+ebp*1+ecx]
  62. xor edi,ebx
  63. add ecx,edi
  64. mov edi,edx
  65. rol ecx,17
  66. mov ebp,DWORD [12+esi]
  67. add ecx,edx
  68. ; R0 3
  69. xor edi,eax
  70. and edi,ecx
  71. lea ebx,[3250441966+ebp*1+ebx]
  72. xor edi,eax
  73. add ebx,edi
  74. mov edi,ecx
  75. rol ebx,22
  76. mov ebp,DWORD [16+esi]
  77. add ebx,ecx
  78. ; R0 4
  79. xor edi,edx
  80. and edi,ebx
  81. lea eax,[4118548399+ebp*1+eax]
  82. xor edi,edx
  83. add eax,edi
  84. mov edi,ebx
  85. rol eax,7
  86. mov ebp,DWORD [20+esi]
  87. add eax,ebx
  88. ; R0 5
  89. xor edi,ecx
  90. and edi,eax
  91. lea edx,[1200080426+ebp*1+edx]
  92. xor edi,ecx
  93. add edx,edi
  94. mov edi,eax
  95. rol edx,12
  96. mov ebp,DWORD [24+esi]
  97. add edx,eax
  98. ; R0 6
  99. xor edi,ebx
  100. and edi,edx
  101. lea ecx,[2821735955+ebp*1+ecx]
  102. xor edi,ebx
  103. add ecx,edi
  104. mov edi,edx
  105. rol ecx,17
  106. mov ebp,DWORD [28+esi]
  107. add ecx,edx
  108. ; R0 7
  109. xor edi,eax
  110. and edi,ecx
  111. lea ebx,[4249261313+ebp*1+ebx]
  112. xor edi,eax
  113. add ebx,edi
  114. mov edi,ecx
  115. rol ebx,22
  116. mov ebp,DWORD [32+esi]
  117. add ebx,ecx
  118. ; R0 8
  119. xor edi,edx
  120. and edi,ebx
  121. lea eax,[1770035416+ebp*1+eax]
  122. xor edi,edx
  123. add eax,edi
  124. mov edi,ebx
  125. rol eax,7
  126. mov ebp,DWORD [36+esi]
  127. add eax,ebx
  128. ; R0 9
  129. xor edi,ecx
  130. and edi,eax
  131. lea edx,[2336552879+ebp*1+edx]
  132. xor edi,ecx
  133. add edx,edi
  134. mov edi,eax
  135. rol edx,12
  136. mov ebp,DWORD [40+esi]
  137. add edx,eax
  138. ; R0 10
  139. xor edi,ebx
  140. and edi,edx
  141. lea ecx,[4294925233+ebp*1+ecx]
  142. xor edi,ebx
  143. add ecx,edi
  144. mov edi,edx
  145. rol ecx,17
  146. mov ebp,DWORD [44+esi]
  147. add ecx,edx
  148. ; R0 11
  149. xor edi,eax
  150. and edi,ecx
  151. lea ebx,[2304563134+ebp*1+ebx]
  152. xor edi,eax
  153. add ebx,edi
  154. mov edi,ecx
  155. rol ebx,22
  156. mov ebp,DWORD [48+esi]
  157. add ebx,ecx
  158. ; R0 12
  159. xor edi,edx
  160. and edi,ebx
  161. lea eax,[1804603682+ebp*1+eax]
  162. xor edi,edx
  163. add eax,edi
  164. mov edi,ebx
  165. rol eax,7
  166. mov ebp,DWORD [52+esi]
  167. add eax,ebx
  168. ; R0 13
  169. xor edi,ecx
  170. and edi,eax
  171. lea edx,[4254626195+ebp*1+edx]
  172. xor edi,ecx
  173. add edx,edi
  174. mov edi,eax
  175. rol edx,12
  176. mov ebp,DWORD [56+esi]
  177. add edx,eax
  178. ; R0 14
  179. xor edi,ebx
  180. and edi,edx
  181. lea ecx,[2792965006+ebp*1+ecx]
  182. xor edi,ebx
  183. add ecx,edi
  184. mov edi,edx
  185. rol ecx,17
  186. mov ebp,DWORD [60+esi]
  187. add ecx,edx
  188. ; R0 15
  189. xor edi,eax
  190. and edi,ecx
  191. lea ebx,[1236535329+ebp*1+ebx]
  192. xor edi,eax
  193. add ebx,edi
  194. mov edi,ecx
  195. rol ebx,22
  196. mov ebp,DWORD [4+esi]
  197. add ebx,ecx
  198. ;
  199. ; R1 section
  200. ; R1 16
  201. lea eax,[4129170786+ebp*1+eax]
  202. xor edi,ebx
  203. and edi,edx
  204. mov ebp,DWORD [24+esi]
  205. xor edi,ecx
  206. add eax,edi
  207. mov edi,ebx
  208. rol eax,5
  209. add eax,ebx
  210. ; R1 17
  211. lea edx,[3225465664+ebp*1+edx]
  212. xor edi,eax
  213. and edi,ecx
  214. mov ebp,DWORD [44+esi]
  215. xor edi,ebx
  216. add edx,edi
  217. mov edi,eax
  218. rol edx,9
  219. add edx,eax
  220. ; R1 18
  221. lea ecx,[643717713+ebp*1+ecx]
  222. xor edi,edx
  223. and edi,ebx
  224. mov ebp,DWORD [esi]
  225. xor edi,eax
  226. add ecx,edi
  227. mov edi,edx
  228. rol ecx,14
  229. add ecx,edx
  230. ; R1 19
  231. lea ebx,[3921069994+ebp*1+ebx]
  232. xor edi,ecx
  233. and edi,eax
  234. mov ebp,DWORD [20+esi]
  235. xor edi,edx
  236. add ebx,edi
  237. mov edi,ecx
  238. rol ebx,20
  239. add ebx,ecx
  240. ; R1 20
  241. lea eax,[3593408605+ebp*1+eax]
  242. xor edi,ebx
  243. and edi,edx
  244. mov ebp,DWORD [40+esi]
  245. xor edi,ecx
  246. add eax,edi
  247. mov edi,ebx
  248. rol eax,5
  249. add eax,ebx
  250. ; R1 21
  251. lea edx,[38016083+ebp*1+edx]
  252. xor edi,eax
  253. and edi,ecx
  254. mov ebp,DWORD [60+esi]
  255. xor edi,ebx
  256. add edx,edi
  257. mov edi,eax
  258. rol edx,9
  259. add edx,eax
  260. ; R1 22
  261. lea ecx,[3634488961+ebp*1+ecx]
  262. xor edi,edx
  263. and edi,ebx
  264. mov ebp,DWORD [16+esi]
  265. xor edi,eax
  266. add ecx,edi
  267. mov edi,edx
  268. rol ecx,14
  269. add ecx,edx
  270. ; R1 23
  271. lea ebx,[3889429448+ebp*1+ebx]
  272. xor edi,ecx
  273. and edi,eax
  274. mov ebp,DWORD [36+esi]
  275. xor edi,edx
  276. add ebx,edi
  277. mov edi,ecx
  278. rol ebx,20
  279. add ebx,ecx
  280. ; R1 24
  281. lea eax,[568446438+ebp*1+eax]
  282. xor edi,ebx
  283. and edi,edx
  284. mov ebp,DWORD [56+esi]
  285. xor edi,ecx
  286. add eax,edi
  287. mov edi,ebx
  288. rol eax,5
  289. add eax,ebx
  290. ; R1 25
  291. lea edx,[3275163606+ebp*1+edx]
  292. xor edi,eax
  293. and edi,ecx
  294. mov ebp,DWORD [12+esi]
  295. xor edi,ebx
  296. add edx,edi
  297. mov edi,eax
  298. rol edx,9
  299. add edx,eax
  300. ; R1 26
  301. lea ecx,[4107603335+ebp*1+ecx]
  302. xor edi,edx
  303. and edi,ebx
  304. mov ebp,DWORD [32+esi]
  305. xor edi,eax
  306. add ecx,edi
  307. mov edi,edx
  308. rol ecx,14
  309. add ecx,edx
  310. ; R1 27
  311. lea ebx,[1163531501+ebp*1+ebx]
  312. xor edi,ecx
  313. and edi,eax
  314. mov ebp,DWORD [52+esi]
  315. xor edi,edx
  316. add ebx,edi
  317. mov edi,ecx
  318. rol ebx,20
  319. add ebx,ecx
  320. ; R1 28
  321. lea eax,[2850285829+ebp*1+eax]
  322. xor edi,ebx
  323. and edi,edx
  324. mov ebp,DWORD [8+esi]
  325. xor edi,ecx
  326. add eax,edi
  327. mov edi,ebx
  328. rol eax,5
  329. add eax,ebx
  330. ; R1 29
  331. lea edx,[4243563512+ebp*1+edx]
  332. xor edi,eax
  333. and edi,ecx
  334. mov ebp,DWORD [28+esi]
  335. xor edi,ebx
  336. add edx,edi
  337. mov edi,eax
  338. rol edx,9
  339. add edx,eax
  340. ; R1 30
  341. lea ecx,[1735328473+ebp*1+ecx]
  342. xor edi,edx
  343. and edi,ebx
  344. mov ebp,DWORD [48+esi]
  345. xor edi,eax
  346. add ecx,edi
  347. mov edi,edx
  348. rol ecx,14
  349. add ecx,edx
  350. ; R1 31
  351. lea ebx,[2368359562+ebp*1+ebx]
  352. xor edi,ecx
  353. and edi,eax
  354. mov ebp,DWORD [20+esi]
  355. xor edi,edx
  356. add ebx,edi
  357. mov edi,ecx
  358. rol ebx,20
  359. add ebx,ecx
  360. ;
  361. ; R2 section
  362. ; R2 32
  363. xor edi,edx
  364. xor edi,ebx
  365. lea eax,[4294588738+ebp*1+eax]
  366. add eax,edi
  367. rol eax,4
  368. mov ebp,DWORD [32+esi]
  369. mov edi,ebx
  370. ; R2 33
  371. lea edx,[2272392833+ebp*1+edx]
  372. add eax,ebx
  373. xor edi,ecx
  374. xor edi,eax
  375. mov ebp,DWORD [44+esi]
  376. add edx,edi
  377. mov edi,eax
  378. rol edx,11
  379. add edx,eax
  380. ; R2 34
  381. xor edi,ebx
  382. xor edi,edx
  383. lea ecx,[1839030562+ebp*1+ecx]
  384. add ecx,edi
  385. rol ecx,16
  386. mov ebp,DWORD [56+esi]
  387. mov edi,edx
  388. ; R2 35
  389. lea ebx,[4259657740+ebp*1+ebx]
  390. add ecx,edx
  391. xor edi,eax
  392. xor edi,ecx
  393. mov ebp,DWORD [4+esi]
  394. add ebx,edi
  395. mov edi,ecx
  396. rol ebx,23
  397. add ebx,ecx
  398. ; R2 36
  399. xor edi,edx
  400. xor edi,ebx
  401. lea eax,[2763975236+ebp*1+eax]
  402. add eax,edi
  403. rol eax,4
  404. mov ebp,DWORD [16+esi]
  405. mov edi,ebx
  406. ; R2 37
  407. lea edx,[1272893353+ebp*1+edx]
  408. add eax,ebx
  409. xor edi,ecx
  410. xor edi,eax
  411. mov ebp,DWORD [28+esi]
  412. add edx,edi
  413. mov edi,eax
  414. rol edx,11
  415. add edx,eax
  416. ; R2 38
  417. xor edi,ebx
  418. xor edi,edx
  419. lea ecx,[4139469664+ebp*1+ecx]
  420. add ecx,edi
  421. rol ecx,16
  422. mov ebp,DWORD [40+esi]
  423. mov edi,edx
  424. ; R2 39
  425. lea ebx,[3200236656+ebp*1+ebx]
  426. add ecx,edx
  427. xor edi,eax
  428. xor edi,ecx
  429. mov ebp,DWORD [52+esi]
  430. add ebx,edi
  431. mov edi,ecx
  432. rol ebx,23
  433. add ebx,ecx
  434. ; R2 40
  435. xor edi,edx
  436. xor edi,ebx
  437. lea eax,[681279174+ebp*1+eax]
  438. add eax,edi
  439. rol eax,4
  440. mov ebp,DWORD [esi]
  441. mov edi,ebx
  442. ; R2 41
  443. lea edx,[3936430074+ebp*1+edx]
  444. add eax,ebx
  445. xor edi,ecx
  446. xor edi,eax
  447. mov ebp,DWORD [12+esi]
  448. add edx,edi
  449. mov edi,eax
  450. rol edx,11
  451. add edx,eax
  452. ; R2 42
  453. xor edi,ebx
  454. xor edi,edx
  455. lea ecx,[3572445317+ebp*1+ecx]
  456. add ecx,edi
  457. rol ecx,16
  458. mov ebp,DWORD [24+esi]
  459. mov edi,edx
  460. ; R2 43
  461. lea ebx,[76029189+ebp*1+ebx]
  462. add ecx,edx
  463. xor edi,eax
  464. xor edi,ecx
  465. mov ebp,DWORD [36+esi]
  466. add ebx,edi
  467. mov edi,ecx
  468. rol ebx,23
  469. add ebx,ecx
  470. ; R2 44
  471. xor edi,edx
  472. xor edi,ebx
  473. lea eax,[3654602809+ebp*1+eax]
  474. add eax,edi
  475. rol eax,4
  476. mov ebp,DWORD [48+esi]
  477. mov edi,ebx
  478. ; R2 45
  479. lea edx,[3873151461+ebp*1+edx]
  480. add eax,ebx
  481. xor edi,ecx
  482. xor edi,eax
  483. mov ebp,DWORD [60+esi]
  484. add edx,edi
  485. mov edi,eax
  486. rol edx,11
  487. add edx,eax
  488. ; R2 46
  489. xor edi,ebx
  490. xor edi,edx
  491. lea ecx,[530742520+ebp*1+ecx]
  492. add ecx,edi
  493. rol ecx,16
  494. mov ebp,DWORD [8+esi]
  495. mov edi,edx
  496. ; R2 47
  497. lea ebx,[3299628645+ebp*1+ebx]
  498. add ecx,edx
  499. xor edi,eax
  500. xor edi,ecx
  501. mov ebp,DWORD [esi]
  502. add ebx,edi
  503. mov edi,-1
  504. rol ebx,23
  505. add ebx,ecx
  506. ;
  507. ; R3 section
  508. ; R3 48
  509. xor edi,edx
  510. or edi,ebx
  511. lea eax,[4096336452+ebp*1+eax]
  512. xor edi,ecx
  513. mov ebp,DWORD [28+esi]
  514. add eax,edi
  515. mov edi,-1
  516. rol eax,6
  517. xor edi,ecx
  518. add eax,ebx
  519. ; R3 49
  520. or edi,eax
  521. lea edx,[1126891415+ebp*1+edx]
  522. xor edi,ebx
  523. mov ebp,DWORD [56+esi]
  524. add edx,edi
  525. mov edi,-1
  526. rol edx,10
  527. xor edi,ebx
  528. add edx,eax
  529. ; R3 50
  530. or edi,edx
  531. lea ecx,[2878612391+ebp*1+ecx]
  532. xor edi,eax
  533. mov ebp,DWORD [20+esi]
  534. add ecx,edi
  535. mov edi,-1
  536. rol ecx,15
  537. xor edi,eax
  538. add ecx,edx
  539. ; R3 51
  540. or edi,ecx
  541. lea ebx,[4237533241+ebp*1+ebx]
  542. xor edi,edx
  543. mov ebp,DWORD [48+esi]
  544. add ebx,edi
  545. mov edi,-1
  546. rol ebx,21
  547. xor edi,edx
  548. add ebx,ecx
  549. ; R3 52
  550. or edi,ebx
  551. lea eax,[1700485571+ebp*1+eax]
  552. xor edi,ecx
  553. mov ebp,DWORD [12+esi]
  554. add eax,edi
  555. mov edi,-1
  556. rol eax,6
  557. xor edi,ecx
  558. add eax,ebx
  559. ; R3 53
  560. or edi,eax
  561. lea edx,[2399980690+ebp*1+edx]
  562. xor edi,ebx
  563. mov ebp,DWORD [40+esi]
  564. add edx,edi
  565. mov edi,-1
  566. rol edx,10
  567. xor edi,ebx
  568. add edx,eax
  569. ; R3 54
  570. or edi,edx
  571. lea ecx,[4293915773+ebp*1+ecx]
  572. xor edi,eax
  573. mov ebp,DWORD [4+esi]
  574. add ecx,edi
  575. mov edi,-1
  576. rol ecx,15
  577. xor edi,eax
  578. add ecx,edx
  579. ; R3 55
  580. or edi,ecx
  581. lea ebx,[2240044497+ebp*1+ebx]
  582. xor edi,edx
  583. mov ebp,DWORD [32+esi]
  584. add ebx,edi
  585. mov edi,-1
  586. rol ebx,21
  587. xor edi,edx
  588. add ebx,ecx
  589. ; R3 56
  590. or edi,ebx
  591. lea eax,[1873313359+ebp*1+eax]
  592. xor edi,ecx
  593. mov ebp,DWORD [60+esi]
  594. add eax,edi
  595. mov edi,-1
  596. rol eax,6
  597. xor edi,ecx
  598. add eax,ebx
  599. ; R3 57
  600. or edi,eax
  601. lea edx,[4264355552+ebp*1+edx]
  602. xor edi,ebx
  603. mov ebp,DWORD [24+esi]
  604. add edx,edi
  605. mov edi,-1
  606. rol edx,10
  607. xor edi,ebx
  608. add edx,eax
  609. ; R3 58
  610. or edi,edx
  611. lea ecx,[2734768916+ebp*1+ecx]
  612. xor edi,eax
  613. mov ebp,DWORD [52+esi]
  614. add ecx,edi
  615. mov edi,-1
  616. rol ecx,15
  617. xor edi,eax
  618. add ecx,edx
  619. ; R3 59
  620. or edi,ecx
  621. lea ebx,[1309151649+ebp*1+ebx]
  622. xor edi,edx
  623. mov ebp,DWORD [16+esi]
  624. add ebx,edi
  625. mov edi,-1
  626. rol ebx,21
  627. xor edi,edx
  628. add ebx,ecx
  629. ; R3 60
  630. or edi,ebx
  631. lea eax,[4149444226+ebp*1+eax]
  632. xor edi,ecx
  633. mov ebp,DWORD [44+esi]
  634. add eax,edi
  635. mov edi,-1
  636. rol eax,6
  637. xor edi,ecx
  638. add eax,ebx
  639. ; R3 61
  640. or edi,eax
  641. lea edx,[3174756917+ebp*1+edx]
  642. xor edi,ebx
  643. mov ebp,DWORD [8+esi]
  644. add edx,edi
  645. mov edi,-1
  646. rol edx,10
  647. xor edi,ebx
  648. add edx,eax
  649. ; R3 62
  650. or edi,edx
  651. lea ecx,[718787259+ebp*1+ecx]
  652. xor edi,eax
  653. mov ebp,DWORD [36+esi]
  654. add ecx,edi
  655. mov edi,-1
  656. rol ecx,15
  657. xor edi,eax
  658. add ecx,edx
  659. ; R3 63
  660. or edi,ecx
  661. lea ebx,[3951481745+ebp*1+ebx]
  662. xor edi,edx
  663. mov ebp,DWORD [24+esp]
  664. add ebx,edi
  665. add esi,64
  666. rol ebx,21
  667. mov edi,DWORD [ebp]
  668. add ebx,ecx
  669. add eax,edi
  670. mov edi,DWORD [4+ebp]
  671. add ebx,edi
  672. mov edi,DWORD [8+ebp]
  673. add ecx,edi
  674. mov edi,DWORD [12+ebp]
  675. add edx,edi
  676. mov DWORD [ebp],eax
  677. mov DWORD [4+ebp],ebx
  678. mov edi,DWORD [esp]
  679. mov DWORD [8+ebp],ecx
  680. mov DWORD [12+ebp],edx
  681. cmp edi,esi
  682. jae NEAR L$000start
  683. pop eax
  684. pop ebx
  685. pop ebp
  686. pop edi
  687. pop esi
  688. ret