md5-x86_64.masm 14 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788
  1. OPTION DOTNAME
  2. .text$ SEGMENT ALIGN(256) 'CODE'
  3. ALIGN 16
  4. PUBLIC md5_block_asm_data_order
  5. md5_block_asm_data_order PROC PUBLIC
  6. mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
  7. mov QWORD PTR[16+rsp],rsi
  8. mov rax,rsp
  9. $L$SEH_begin_md5_block_asm_data_order::
  10. mov rdi,rcx
  11. mov rsi,rdx
  12. mov rdx,r8
  13. push rbp
  14. push rbx
  15. push r12
  16. push r14
  17. push r15
  18. $L$prologue::
  19. mov rbp,rdi
  20. shl rdx,6
  21. lea rdi,QWORD PTR[rdx*1+rsi]
  22. mov eax,DWORD PTR[rbp]
  23. mov ebx,DWORD PTR[4+rbp]
  24. mov ecx,DWORD PTR[8+rbp]
  25. mov edx,DWORD PTR[12+rbp]
  26. cmp rsi,rdi
  27. je $L$end
  28. $L$loop::
  29. mov r8d,eax
  30. mov r9d,ebx
  31. mov r14d,ecx
  32. mov r15d,edx
  33. mov r10d,DWORD PTR[rsi]
  34. mov r11d,edx
  35. xor r11d,ecx
  36. lea eax,DWORD PTR[((-680876936))+r10*1+rax]
  37. and r11d,ebx
  38. mov r10d,DWORD PTR[4+rsi]
  39. xor r11d,edx
  40. add eax,r11d
  41. rol eax,7
  42. mov r11d,ecx
  43. add eax,ebx
  44. xor r11d,ebx
  45. lea edx,DWORD PTR[((-389564586))+r10*1+rdx]
  46. and r11d,eax
  47. mov r10d,DWORD PTR[8+rsi]
  48. xor r11d,ecx
  49. add edx,r11d
  50. rol edx,12
  51. mov r11d,ebx
  52. add edx,eax
  53. xor r11d,eax
  54. lea ecx,DWORD PTR[606105819+r10*1+rcx]
  55. and r11d,edx
  56. mov r10d,DWORD PTR[12+rsi]
  57. xor r11d,ebx
  58. add ecx,r11d
  59. rol ecx,17
  60. mov r11d,eax
  61. add ecx,edx
  62. xor r11d,edx
  63. lea ebx,DWORD PTR[((-1044525330))+r10*1+rbx]
  64. and r11d,ecx
  65. mov r10d,DWORD PTR[16+rsi]
  66. xor r11d,eax
  67. add ebx,r11d
  68. rol ebx,22
  69. mov r11d,edx
  70. add ebx,ecx
  71. xor r11d,ecx
  72. lea eax,DWORD PTR[((-176418897))+r10*1+rax]
  73. and r11d,ebx
  74. mov r10d,DWORD PTR[20+rsi]
  75. xor r11d,edx
  76. add eax,r11d
  77. rol eax,7
  78. mov r11d,ecx
  79. add eax,ebx
  80. xor r11d,ebx
  81. lea edx,DWORD PTR[1200080426+r10*1+rdx]
  82. and r11d,eax
  83. mov r10d,DWORD PTR[24+rsi]
  84. xor r11d,ecx
  85. add edx,r11d
  86. rol edx,12
  87. mov r11d,ebx
  88. add edx,eax
  89. xor r11d,eax
  90. lea ecx,DWORD PTR[((-1473231341))+r10*1+rcx]
  91. and r11d,edx
  92. mov r10d,DWORD PTR[28+rsi]
  93. xor r11d,ebx
  94. add ecx,r11d
  95. rol ecx,17
  96. mov r11d,eax
  97. add ecx,edx
  98. xor r11d,edx
  99. lea ebx,DWORD PTR[((-45705983))+r10*1+rbx]
  100. and r11d,ecx
  101. mov r10d,DWORD PTR[32+rsi]
  102. xor r11d,eax
  103. add ebx,r11d
  104. rol ebx,22
  105. mov r11d,edx
  106. add ebx,ecx
  107. xor r11d,ecx
  108. lea eax,DWORD PTR[1770035416+r10*1+rax]
  109. and r11d,ebx
  110. mov r10d,DWORD PTR[36+rsi]
  111. xor r11d,edx
  112. add eax,r11d
  113. rol eax,7
  114. mov r11d,ecx
  115. add eax,ebx
  116. xor r11d,ebx
  117. lea edx,DWORD PTR[((-1958414417))+r10*1+rdx]
  118. and r11d,eax
  119. mov r10d,DWORD PTR[40+rsi]
  120. xor r11d,ecx
  121. add edx,r11d
  122. rol edx,12
  123. mov r11d,ebx
  124. add edx,eax
  125. xor r11d,eax
  126. lea ecx,DWORD PTR[((-42063))+r10*1+rcx]
  127. and r11d,edx
  128. mov r10d,DWORD PTR[44+rsi]
  129. xor r11d,ebx
  130. add ecx,r11d
  131. rol ecx,17
  132. mov r11d,eax
  133. add ecx,edx
  134. xor r11d,edx
  135. lea ebx,DWORD PTR[((-1990404162))+r10*1+rbx]
  136. and r11d,ecx
  137. mov r10d,DWORD PTR[48+rsi]
  138. xor r11d,eax
  139. add ebx,r11d
  140. rol ebx,22
  141. mov r11d,edx
  142. add ebx,ecx
  143. xor r11d,ecx
  144. lea eax,DWORD PTR[1804603682+r10*1+rax]
  145. and r11d,ebx
  146. mov r10d,DWORD PTR[52+rsi]
  147. xor r11d,edx
  148. add eax,r11d
  149. rol eax,7
  150. mov r11d,ecx
  151. add eax,ebx
  152. xor r11d,ebx
  153. lea edx,DWORD PTR[((-40341101))+r10*1+rdx]
  154. and r11d,eax
  155. mov r10d,DWORD PTR[56+rsi]
  156. xor r11d,ecx
  157. add edx,r11d
  158. rol edx,12
  159. mov r11d,ebx
  160. add edx,eax
  161. xor r11d,eax
  162. lea ecx,DWORD PTR[((-1502002290))+r10*1+rcx]
  163. and r11d,edx
  164. mov r10d,DWORD PTR[60+rsi]
  165. xor r11d,ebx
  166. add ecx,r11d
  167. rol ecx,17
  168. mov r11d,eax
  169. add ecx,edx
  170. xor r11d,edx
  171. lea ebx,DWORD PTR[1236535329+r10*1+rbx]
  172. and r11d,ecx
  173. mov r10d,DWORD PTR[4+rsi]
  174. xor r11d,eax
  175. add ebx,r11d
  176. rol ebx,22
  177. mov r11d,edx
  178. add ebx,ecx
  179. mov r11d,edx
  180. mov r12d,edx
  181. not r11d
  182. and r12d,ebx
  183. lea eax,DWORD PTR[((-165796510))+r10*1+rax]
  184. and r11d,ecx
  185. mov r10d,DWORD PTR[24+rsi]
  186. or r12d,r11d
  187. mov r11d,ecx
  188. add eax,r12d
  189. mov r12d,ecx
  190. rol eax,5
  191. add eax,ebx
  192. not r11d
  193. and r12d,eax
  194. lea edx,DWORD PTR[((-1069501632))+r10*1+rdx]
  195. and r11d,ebx
  196. mov r10d,DWORD PTR[44+rsi]
  197. or r12d,r11d
  198. mov r11d,ebx
  199. add edx,r12d
  200. mov r12d,ebx
  201. rol edx,9
  202. add edx,eax
  203. not r11d
  204. and r12d,edx
  205. lea ecx,DWORD PTR[643717713+r10*1+rcx]
  206. and r11d,eax
  207. mov r10d,DWORD PTR[rsi]
  208. or r12d,r11d
  209. mov r11d,eax
  210. add ecx,r12d
  211. mov r12d,eax
  212. rol ecx,14
  213. add ecx,edx
  214. not r11d
  215. and r12d,ecx
  216. lea ebx,DWORD PTR[((-373897302))+r10*1+rbx]
  217. and r11d,edx
  218. mov r10d,DWORD PTR[20+rsi]
  219. or r12d,r11d
  220. mov r11d,edx
  221. add ebx,r12d
  222. mov r12d,edx
  223. rol ebx,20
  224. add ebx,ecx
  225. not r11d
  226. and r12d,ebx
  227. lea eax,DWORD PTR[((-701558691))+r10*1+rax]
  228. and r11d,ecx
  229. mov r10d,DWORD PTR[40+rsi]
  230. or r12d,r11d
  231. mov r11d,ecx
  232. add eax,r12d
  233. mov r12d,ecx
  234. rol eax,5
  235. add eax,ebx
  236. not r11d
  237. and r12d,eax
  238. lea edx,DWORD PTR[38016083+r10*1+rdx]
  239. and r11d,ebx
  240. mov r10d,DWORD PTR[60+rsi]
  241. or r12d,r11d
  242. mov r11d,ebx
  243. add edx,r12d
  244. mov r12d,ebx
  245. rol edx,9
  246. add edx,eax
  247. not r11d
  248. and r12d,edx
  249. lea ecx,DWORD PTR[((-660478335))+r10*1+rcx]
  250. and r11d,eax
  251. mov r10d,DWORD PTR[16+rsi]
  252. or r12d,r11d
  253. mov r11d,eax
  254. add ecx,r12d
  255. mov r12d,eax
  256. rol ecx,14
  257. add ecx,edx
  258. not r11d
  259. and r12d,ecx
  260. lea ebx,DWORD PTR[((-405537848))+r10*1+rbx]
  261. and r11d,edx
  262. mov r10d,DWORD PTR[36+rsi]
  263. or r12d,r11d
  264. mov r11d,edx
  265. add ebx,r12d
  266. mov r12d,edx
  267. rol ebx,20
  268. add ebx,ecx
  269. not r11d
  270. and r12d,ebx
  271. lea eax,DWORD PTR[568446438+r10*1+rax]
  272. and r11d,ecx
  273. mov r10d,DWORD PTR[56+rsi]
  274. or r12d,r11d
  275. mov r11d,ecx
  276. add eax,r12d
  277. mov r12d,ecx
  278. rol eax,5
  279. add eax,ebx
  280. not r11d
  281. and r12d,eax
  282. lea edx,DWORD PTR[((-1019803690))+r10*1+rdx]
  283. and r11d,ebx
  284. mov r10d,DWORD PTR[12+rsi]
  285. or r12d,r11d
  286. mov r11d,ebx
  287. add edx,r12d
  288. mov r12d,ebx
  289. rol edx,9
  290. add edx,eax
  291. not r11d
  292. and r12d,edx
  293. lea ecx,DWORD PTR[((-187363961))+r10*1+rcx]
  294. and r11d,eax
  295. mov r10d,DWORD PTR[32+rsi]
  296. or r12d,r11d
  297. mov r11d,eax
  298. add ecx,r12d
  299. mov r12d,eax
  300. rol ecx,14
  301. add ecx,edx
  302. not r11d
  303. and r12d,ecx
  304. lea ebx,DWORD PTR[1163531501+r10*1+rbx]
  305. and r11d,edx
  306. mov r10d,DWORD PTR[52+rsi]
  307. or r12d,r11d
  308. mov r11d,edx
  309. add ebx,r12d
  310. mov r12d,edx
  311. rol ebx,20
  312. add ebx,ecx
  313. not r11d
  314. and r12d,ebx
  315. lea eax,DWORD PTR[((-1444681467))+r10*1+rax]
  316. and r11d,ecx
  317. mov r10d,DWORD PTR[8+rsi]
  318. or r12d,r11d
  319. mov r11d,ecx
  320. add eax,r12d
  321. mov r12d,ecx
  322. rol eax,5
  323. add eax,ebx
  324. not r11d
  325. and r12d,eax
  326. lea edx,DWORD PTR[((-51403784))+r10*1+rdx]
  327. and r11d,ebx
  328. mov r10d,DWORD PTR[28+rsi]
  329. or r12d,r11d
  330. mov r11d,ebx
  331. add edx,r12d
  332. mov r12d,ebx
  333. rol edx,9
  334. add edx,eax
  335. not r11d
  336. and r12d,edx
  337. lea ecx,DWORD PTR[1735328473+r10*1+rcx]
  338. and r11d,eax
  339. mov r10d,DWORD PTR[48+rsi]
  340. or r12d,r11d
  341. mov r11d,eax
  342. add ecx,r12d
  343. mov r12d,eax
  344. rol ecx,14
  345. add ecx,edx
  346. not r11d
  347. and r12d,ecx
  348. lea ebx,DWORD PTR[((-1926607734))+r10*1+rbx]
  349. and r11d,edx
  350. mov r10d,DWORD PTR[20+rsi]
  351. or r12d,r11d
  352. mov r11d,edx
  353. add ebx,r12d
  354. mov r12d,edx
  355. rol ebx,20
  356. add ebx,ecx
  357. mov r11d,ecx
  358. lea eax,DWORD PTR[((-378558))+r10*1+rax]
  359. xor r11d,edx
  360. mov r10d,DWORD PTR[32+rsi]
  361. xor r11d,ebx
  362. add eax,r11d
  363. mov r11d,ebx
  364. rol eax,4
  365. add eax,ebx
  366. lea edx,DWORD PTR[((-2022574463))+r10*1+rdx]
  367. xor r11d,ecx
  368. mov r10d,DWORD PTR[44+rsi]
  369. xor r11d,eax
  370. add edx,r11d
  371. rol edx,11
  372. mov r11d,eax
  373. add edx,eax
  374. lea ecx,DWORD PTR[1839030562+r10*1+rcx]
  375. xor r11d,ebx
  376. mov r10d,DWORD PTR[56+rsi]
  377. xor r11d,edx
  378. add ecx,r11d
  379. mov r11d,edx
  380. rol ecx,16
  381. add ecx,edx
  382. lea ebx,DWORD PTR[((-35309556))+r10*1+rbx]
  383. xor r11d,eax
  384. mov r10d,DWORD PTR[4+rsi]
  385. xor r11d,ecx
  386. add ebx,r11d
  387. rol ebx,23
  388. mov r11d,ecx
  389. add ebx,ecx
  390. lea eax,DWORD PTR[((-1530992060))+r10*1+rax]
  391. xor r11d,edx
  392. mov r10d,DWORD PTR[16+rsi]
  393. xor r11d,ebx
  394. add eax,r11d
  395. mov r11d,ebx
  396. rol eax,4
  397. add eax,ebx
  398. lea edx,DWORD PTR[1272893353+r10*1+rdx]
  399. xor r11d,ecx
  400. mov r10d,DWORD PTR[28+rsi]
  401. xor r11d,eax
  402. add edx,r11d
  403. rol edx,11
  404. mov r11d,eax
  405. add edx,eax
  406. lea ecx,DWORD PTR[((-155497632))+r10*1+rcx]
  407. xor r11d,ebx
  408. mov r10d,DWORD PTR[40+rsi]
  409. xor r11d,edx
  410. add ecx,r11d
  411. mov r11d,edx
  412. rol ecx,16
  413. add ecx,edx
  414. lea ebx,DWORD PTR[((-1094730640))+r10*1+rbx]
  415. xor r11d,eax
  416. mov r10d,DWORD PTR[52+rsi]
  417. xor r11d,ecx
  418. add ebx,r11d
  419. rol ebx,23
  420. mov r11d,ecx
  421. add ebx,ecx
  422. lea eax,DWORD PTR[681279174+r10*1+rax]
  423. xor r11d,edx
  424. mov r10d,DWORD PTR[rsi]
  425. xor r11d,ebx
  426. add eax,r11d
  427. mov r11d,ebx
  428. rol eax,4
  429. add eax,ebx
  430. lea edx,DWORD PTR[((-358537222))+r10*1+rdx]
  431. xor r11d,ecx
  432. mov r10d,DWORD PTR[12+rsi]
  433. xor r11d,eax
  434. add edx,r11d
  435. rol edx,11
  436. mov r11d,eax
  437. add edx,eax
  438. lea ecx,DWORD PTR[((-722521979))+r10*1+rcx]
  439. xor r11d,ebx
  440. mov r10d,DWORD PTR[24+rsi]
  441. xor r11d,edx
  442. add ecx,r11d
  443. mov r11d,edx
  444. rol ecx,16
  445. add ecx,edx
  446. lea ebx,DWORD PTR[76029189+r10*1+rbx]
  447. xor r11d,eax
  448. mov r10d,DWORD PTR[36+rsi]
  449. xor r11d,ecx
  450. add ebx,r11d
  451. rol ebx,23
  452. mov r11d,ecx
  453. add ebx,ecx
  454. lea eax,DWORD PTR[((-640364487))+r10*1+rax]
  455. xor r11d,edx
  456. mov r10d,DWORD PTR[48+rsi]
  457. xor r11d,ebx
  458. add eax,r11d
  459. mov r11d,ebx
  460. rol eax,4
  461. add eax,ebx
  462. lea edx,DWORD PTR[((-421815835))+r10*1+rdx]
  463. xor r11d,ecx
  464. mov r10d,DWORD PTR[60+rsi]
  465. xor r11d,eax
  466. add edx,r11d
  467. rol edx,11
  468. mov r11d,eax
  469. add edx,eax
  470. lea ecx,DWORD PTR[530742520+r10*1+rcx]
  471. xor r11d,ebx
  472. mov r10d,DWORD PTR[8+rsi]
  473. xor r11d,edx
  474. add ecx,r11d
  475. mov r11d,edx
  476. rol ecx,16
  477. add ecx,edx
  478. lea ebx,DWORD PTR[((-995338651))+r10*1+rbx]
  479. xor r11d,eax
  480. mov r10d,DWORD PTR[rsi]
  481. xor r11d,ecx
  482. add ebx,r11d
  483. rol ebx,23
  484. mov r11d,ecx
  485. add ebx,ecx
  486. mov r11d,0ffffffffh
  487. xor r11d,edx
  488. lea eax,DWORD PTR[((-198630844))+r10*1+rax]
  489. or r11d,ebx
  490. mov r10d,DWORD PTR[28+rsi]
  491. xor r11d,ecx
  492. add eax,r11d
  493. mov r11d,0ffffffffh
  494. rol eax,6
  495. xor r11d,ecx
  496. add eax,ebx
  497. lea edx,DWORD PTR[1126891415+r10*1+rdx]
  498. or r11d,eax
  499. mov r10d,DWORD PTR[56+rsi]
  500. xor r11d,ebx
  501. add edx,r11d
  502. mov r11d,0ffffffffh
  503. rol edx,10
  504. xor r11d,ebx
  505. add edx,eax
  506. lea ecx,DWORD PTR[((-1416354905))+r10*1+rcx]
  507. or r11d,edx
  508. mov r10d,DWORD PTR[20+rsi]
  509. xor r11d,eax
  510. add ecx,r11d
  511. mov r11d,0ffffffffh
  512. rol ecx,15
  513. xor r11d,eax
  514. add ecx,edx
  515. lea ebx,DWORD PTR[((-57434055))+r10*1+rbx]
  516. or r11d,ecx
  517. mov r10d,DWORD PTR[48+rsi]
  518. xor r11d,edx
  519. add ebx,r11d
  520. mov r11d,0ffffffffh
  521. rol ebx,21
  522. xor r11d,edx
  523. add ebx,ecx
  524. lea eax,DWORD PTR[1700485571+r10*1+rax]
  525. or r11d,ebx
  526. mov r10d,DWORD PTR[12+rsi]
  527. xor r11d,ecx
  528. add eax,r11d
  529. mov r11d,0ffffffffh
  530. rol eax,6
  531. xor r11d,ecx
  532. add eax,ebx
  533. lea edx,DWORD PTR[((-1894986606))+r10*1+rdx]
  534. or r11d,eax
  535. mov r10d,DWORD PTR[40+rsi]
  536. xor r11d,ebx
  537. add edx,r11d
  538. mov r11d,0ffffffffh
  539. rol edx,10
  540. xor r11d,ebx
  541. add edx,eax
  542. lea ecx,DWORD PTR[((-1051523))+r10*1+rcx]
  543. or r11d,edx
  544. mov r10d,DWORD PTR[4+rsi]
  545. xor r11d,eax
  546. add ecx,r11d
  547. mov r11d,0ffffffffh
  548. rol ecx,15
  549. xor r11d,eax
  550. add ecx,edx
  551. lea ebx,DWORD PTR[((-2054922799))+r10*1+rbx]
  552. or r11d,ecx
  553. mov r10d,DWORD PTR[32+rsi]
  554. xor r11d,edx
  555. add ebx,r11d
  556. mov r11d,0ffffffffh
  557. rol ebx,21
  558. xor r11d,edx
  559. add ebx,ecx
  560. lea eax,DWORD PTR[1873313359+r10*1+rax]
  561. or r11d,ebx
  562. mov r10d,DWORD PTR[60+rsi]
  563. xor r11d,ecx
  564. add eax,r11d
  565. mov r11d,0ffffffffh
  566. rol eax,6
  567. xor r11d,ecx
  568. add eax,ebx
  569. lea edx,DWORD PTR[((-30611744))+r10*1+rdx]
  570. or r11d,eax
  571. mov r10d,DWORD PTR[24+rsi]
  572. xor r11d,ebx
  573. add edx,r11d
  574. mov r11d,0ffffffffh
  575. rol edx,10
  576. xor r11d,ebx
  577. add edx,eax
  578. lea ecx,DWORD PTR[((-1560198380))+r10*1+rcx]
  579. or r11d,edx
  580. mov r10d,DWORD PTR[52+rsi]
  581. xor r11d,eax
  582. add ecx,r11d
  583. mov r11d,0ffffffffh
  584. rol ecx,15
  585. xor r11d,eax
  586. add ecx,edx
  587. lea ebx,DWORD PTR[1309151649+r10*1+rbx]
  588. or r11d,ecx
  589. mov r10d,DWORD PTR[16+rsi]
  590. xor r11d,edx
  591. add ebx,r11d
  592. mov r11d,0ffffffffh
  593. rol ebx,21
  594. xor r11d,edx
  595. add ebx,ecx
  596. lea eax,DWORD PTR[((-145523070))+r10*1+rax]
  597. or r11d,ebx
  598. mov r10d,DWORD PTR[44+rsi]
  599. xor r11d,ecx
  600. add eax,r11d
  601. mov r11d,0ffffffffh
  602. rol eax,6
  603. xor r11d,ecx
  604. add eax,ebx
  605. lea edx,DWORD PTR[((-1120210379))+r10*1+rdx]
  606. or r11d,eax
  607. mov r10d,DWORD PTR[8+rsi]
  608. xor r11d,ebx
  609. add edx,r11d
  610. mov r11d,0ffffffffh
  611. rol edx,10
  612. xor r11d,ebx
  613. add edx,eax
  614. lea ecx,DWORD PTR[718787259+r10*1+rcx]
  615. or r11d,edx
  616. mov r10d,DWORD PTR[36+rsi]
  617. xor r11d,eax
  618. add ecx,r11d
  619. mov r11d,0ffffffffh
  620. rol ecx,15
  621. xor r11d,eax
  622. add ecx,edx
  623. lea ebx,DWORD PTR[((-343485551))+r10*1+rbx]
  624. or r11d,ecx
  625. mov r10d,DWORD PTR[rsi]
  626. xor r11d,edx
  627. add ebx,r11d
  628. mov r11d,0ffffffffh
  629. rol ebx,21
  630. xor r11d,edx
  631. add ebx,ecx
  632. add eax,r8d
  633. add ebx,r9d
  634. add ecx,r14d
  635. add edx,r15d
  636. add rsi,64
  637. cmp rsi,rdi
  638. jb $L$loop
  639. $L$end::
  640. mov DWORD PTR[rbp],eax
  641. mov DWORD PTR[4+rbp],ebx
  642. mov DWORD PTR[8+rbp],ecx
  643. mov DWORD PTR[12+rbp],edx
  644. mov r15,QWORD PTR[rsp]
  645. mov r14,QWORD PTR[8+rsp]
  646. mov r12,QWORD PTR[16+rsp]
  647. mov rbx,QWORD PTR[24+rsp]
  648. mov rbp,QWORD PTR[32+rsp]
  649. add rsp,40
  650. $L$epilogue::
  651. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  652. mov rsi,QWORD PTR[16+rsp]
  653. DB 0F3h,0C3h ;repret
  654. $L$SEH_end_md5_block_asm_data_order::
  655. md5_block_asm_data_order ENDP
  656. EXTERN __imp_RtlVirtualUnwind:NEAR
  657. ALIGN 16
  658. se_handler PROC PRIVATE
  659. push rsi
  660. push rdi
  661. push rbx
  662. push rbp
  663. push r12
  664. push r13
  665. push r14
  666. push r15
  667. pushfq
  668. sub rsp,64
  669. mov rax,QWORD PTR[120+r8]
  670. mov rbx,QWORD PTR[248+r8]
  671. lea r10,QWORD PTR[$L$prologue]
  672. cmp rbx,r10
  673. jb $L$in_prologue
  674. mov rax,QWORD PTR[152+r8]
  675. lea r10,QWORD PTR[$L$epilogue]
  676. cmp rbx,r10
  677. jae $L$in_prologue
  678. lea rax,QWORD PTR[40+rax]
  679. mov rbp,QWORD PTR[((-8))+rax]
  680. mov rbx,QWORD PTR[((-16))+rax]
  681. mov r12,QWORD PTR[((-24))+rax]
  682. mov r14,QWORD PTR[((-32))+rax]
  683. mov r15,QWORD PTR[((-40))+rax]
  684. mov QWORD PTR[144+r8],rbx
  685. mov QWORD PTR[160+r8],rbp
  686. mov QWORD PTR[216+r8],r12
  687. mov QWORD PTR[232+r8],r14
  688. mov QWORD PTR[240+r8],r15
  689. $L$in_prologue::
  690. mov rdi,QWORD PTR[8+rax]
  691. mov rsi,QWORD PTR[16+rax]
  692. mov QWORD PTR[152+r8],rax
  693. mov QWORD PTR[168+r8],rsi
  694. mov QWORD PTR[176+r8],rdi
  695. mov rdi,QWORD PTR[40+r9]
  696. mov rsi,r8
  697. mov ecx,154
  698. DD 0a548f3fch
  699. mov rsi,r9
  700. xor rcx,rcx
  701. mov rdx,QWORD PTR[8+rsi]
  702. mov r8,QWORD PTR[rsi]
  703. mov r9,QWORD PTR[16+rsi]
  704. mov r10,QWORD PTR[40+rsi]
  705. lea r11,QWORD PTR[56+rsi]
  706. lea r12,QWORD PTR[24+rsi]
  707. mov QWORD PTR[32+rsp],r10
  708. mov QWORD PTR[40+rsp],r11
  709. mov QWORD PTR[48+rsp],r12
  710. mov QWORD PTR[56+rsp],rcx
  711. call QWORD PTR[__imp_RtlVirtualUnwind]
  712. mov eax,1
  713. add rsp,64
  714. popfq
  715. pop r15
  716. pop r14
  717. pop r13
  718. pop r12
  719. pop rbp
  720. pop rbx
  721. pop rdi
  722. pop rsi
  723. DB 0F3h,0C3h ;repret
  724. se_handler ENDP
  725. .text$ ENDS
  726. .pdata SEGMENT READONLY ALIGN(4)
  727. ALIGN 4
  728. DD imagerel $L$SEH_begin_md5_block_asm_data_order
  729. DD imagerel $L$SEH_end_md5_block_asm_data_order
  730. DD imagerel $L$SEH_info_md5_block_asm_data_order
  731. .pdata ENDS
  732. .xdata SEGMENT READONLY ALIGN(8)
  733. ALIGN 8
  734. $L$SEH_info_md5_block_asm_data_order::
  735. DB 9,0,0,0
  736. DD imagerel se_handler
  737. .xdata ENDS
  738. END