md5_586.asm 11 KB

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