rc4-md5-x86_64.masm 26 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390
  1. OPTION DOTNAME
  2. .text$ SEGMENT ALIGN(256) 'CODE'
  3. ALIGN 16
  4. PUBLIC rc4_md5_enc
  5. rc4_md5_enc 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_rc4_md5_enc::
  10. mov rdi,rcx
  11. mov rsi,rdx
  12. mov rdx,r8
  13. mov rcx,r9
  14. mov r8,QWORD PTR[40+rsp]
  15. mov r9,QWORD PTR[48+rsp]
  16. cmp r9,0
  17. je $L$abort
  18. push rbx
  19. push rbp
  20. push r12
  21. push r13
  22. push r14
  23. push r15
  24. sub rsp,40
  25. $L$body::
  26. mov r11,rcx
  27. mov r12,r9
  28. mov r13,rsi
  29. mov r14,rdx
  30. mov r15,r8
  31. xor rbp,rbp
  32. xor rcx,rcx
  33. lea rdi,QWORD PTR[8+rdi]
  34. mov bpl,BYTE PTR[((-8))+rdi]
  35. mov cl,BYTE PTR[((-4))+rdi]
  36. inc bpl
  37. sub r14,r13
  38. mov eax,DWORD PTR[rbp*4+rdi]
  39. add cl,al
  40. lea rsi,QWORD PTR[rbp*4+rdi]
  41. shl r12,6
  42. add r12,r15
  43. mov QWORD PTR[16+rsp],r12
  44. mov QWORD PTR[24+rsp],r11
  45. mov r8d,DWORD PTR[r11]
  46. mov r9d,DWORD PTR[4+r11]
  47. mov r10d,DWORD PTR[8+r11]
  48. mov r11d,DWORD PTR[12+r11]
  49. jmp $L$oop
  50. ALIGN 16
  51. $L$oop::
  52. mov DWORD PTR[rsp],r8d
  53. mov DWORD PTR[4+rsp],r9d
  54. mov DWORD PTR[8+rsp],r10d
  55. mov r12d,r11d
  56. mov DWORD PTR[12+rsp],r11d
  57. pxor xmm0,xmm0
  58. mov edx,DWORD PTR[rcx*4+rdi]
  59. xor r12d,r10d
  60. mov DWORD PTR[rcx*4+rdi],eax
  61. and r12d,r9d
  62. add r8d,DWORD PTR[r15]
  63. add al,dl
  64. mov ebx,DWORD PTR[4+rsi]
  65. add r8d,3614090360
  66. xor r12d,r11d
  67. movzx eax,al
  68. mov DWORD PTR[rsi],edx
  69. add r8d,r12d
  70. add cl,bl
  71. rol r8d,7
  72. mov r12d,r10d
  73. movd xmm0,DWORD PTR[rax*4+rdi]
  74. add r8d,r9d
  75. pxor xmm1,xmm1
  76. mov edx,DWORD PTR[rcx*4+rdi]
  77. xor r12d,r9d
  78. mov DWORD PTR[rcx*4+rdi],ebx
  79. and r12d,r8d
  80. add r11d,DWORD PTR[4+r15]
  81. add bl,dl
  82. mov eax,DWORD PTR[8+rsi]
  83. add r11d,3905402710
  84. xor r12d,r10d
  85. movzx ebx,bl
  86. mov DWORD PTR[4+rsi],edx
  87. add r11d,r12d
  88. add cl,al
  89. rol r11d,12
  90. mov r12d,r9d
  91. movd xmm1,DWORD PTR[rbx*4+rdi]
  92. add r11d,r8d
  93. mov edx,DWORD PTR[rcx*4+rdi]
  94. xor r12d,r8d
  95. mov DWORD PTR[rcx*4+rdi],eax
  96. and r12d,r11d
  97. add r10d,DWORD PTR[8+r15]
  98. add al,dl
  99. mov ebx,DWORD PTR[12+rsi]
  100. add r10d,606105819
  101. xor r12d,r9d
  102. movzx eax,al
  103. mov DWORD PTR[8+rsi],edx
  104. add r10d,r12d
  105. add cl,bl
  106. rol r10d,17
  107. mov r12d,r8d
  108. pinsrw xmm0,WORD PTR[rax*4+rdi],1
  109. add r10d,r11d
  110. mov edx,DWORD PTR[rcx*4+rdi]
  111. xor r12d,r11d
  112. mov DWORD PTR[rcx*4+rdi],ebx
  113. and r12d,r10d
  114. add r9d,DWORD PTR[12+r15]
  115. add bl,dl
  116. mov eax,DWORD PTR[16+rsi]
  117. add r9d,3250441966
  118. xor r12d,r8d
  119. movzx ebx,bl
  120. mov DWORD PTR[12+rsi],edx
  121. add r9d,r12d
  122. add cl,al
  123. rol r9d,22
  124. mov r12d,r11d
  125. pinsrw xmm1,WORD PTR[rbx*4+rdi],1
  126. add r9d,r10d
  127. mov edx,DWORD PTR[rcx*4+rdi]
  128. xor r12d,r10d
  129. mov DWORD PTR[rcx*4+rdi],eax
  130. and r12d,r9d
  131. add r8d,DWORD PTR[16+r15]
  132. add al,dl
  133. mov ebx,DWORD PTR[20+rsi]
  134. add r8d,4118548399
  135. xor r12d,r11d
  136. movzx eax,al
  137. mov DWORD PTR[16+rsi],edx
  138. add r8d,r12d
  139. add cl,bl
  140. rol r8d,7
  141. mov r12d,r10d
  142. pinsrw xmm0,WORD PTR[rax*4+rdi],2
  143. add r8d,r9d
  144. mov edx,DWORD PTR[rcx*4+rdi]
  145. xor r12d,r9d
  146. mov DWORD PTR[rcx*4+rdi],ebx
  147. and r12d,r8d
  148. add r11d,DWORD PTR[20+r15]
  149. add bl,dl
  150. mov eax,DWORD PTR[24+rsi]
  151. add r11d,1200080426
  152. xor r12d,r10d
  153. movzx ebx,bl
  154. mov DWORD PTR[20+rsi],edx
  155. add r11d,r12d
  156. add cl,al
  157. rol r11d,12
  158. mov r12d,r9d
  159. pinsrw xmm1,WORD PTR[rbx*4+rdi],2
  160. add r11d,r8d
  161. mov edx,DWORD PTR[rcx*4+rdi]
  162. xor r12d,r8d
  163. mov DWORD PTR[rcx*4+rdi],eax
  164. and r12d,r11d
  165. add r10d,DWORD PTR[24+r15]
  166. add al,dl
  167. mov ebx,DWORD PTR[28+rsi]
  168. add r10d,2821735955
  169. xor r12d,r9d
  170. movzx eax,al
  171. mov DWORD PTR[24+rsi],edx
  172. add r10d,r12d
  173. add cl,bl
  174. rol r10d,17
  175. mov r12d,r8d
  176. pinsrw xmm0,WORD PTR[rax*4+rdi],3
  177. add r10d,r11d
  178. mov edx,DWORD PTR[rcx*4+rdi]
  179. xor r12d,r11d
  180. mov DWORD PTR[rcx*4+rdi],ebx
  181. and r12d,r10d
  182. add r9d,DWORD PTR[28+r15]
  183. add bl,dl
  184. mov eax,DWORD PTR[32+rsi]
  185. add r9d,4249261313
  186. xor r12d,r8d
  187. movzx ebx,bl
  188. mov DWORD PTR[28+rsi],edx
  189. add r9d,r12d
  190. add cl,al
  191. rol r9d,22
  192. mov r12d,r11d
  193. pinsrw xmm1,WORD PTR[rbx*4+rdi],3
  194. add r9d,r10d
  195. mov edx,DWORD PTR[rcx*4+rdi]
  196. xor r12d,r10d
  197. mov DWORD PTR[rcx*4+rdi],eax
  198. and r12d,r9d
  199. add r8d,DWORD PTR[32+r15]
  200. add al,dl
  201. mov ebx,DWORD PTR[36+rsi]
  202. add r8d,1770035416
  203. xor r12d,r11d
  204. movzx eax,al
  205. mov DWORD PTR[32+rsi],edx
  206. add r8d,r12d
  207. add cl,bl
  208. rol r8d,7
  209. mov r12d,r10d
  210. pinsrw xmm0,WORD PTR[rax*4+rdi],4
  211. add r8d,r9d
  212. mov edx,DWORD PTR[rcx*4+rdi]
  213. xor r12d,r9d
  214. mov DWORD PTR[rcx*4+rdi],ebx
  215. and r12d,r8d
  216. add r11d,DWORD PTR[36+r15]
  217. add bl,dl
  218. mov eax,DWORD PTR[40+rsi]
  219. add r11d,2336552879
  220. xor r12d,r10d
  221. movzx ebx,bl
  222. mov DWORD PTR[36+rsi],edx
  223. add r11d,r12d
  224. add cl,al
  225. rol r11d,12
  226. mov r12d,r9d
  227. pinsrw xmm1,WORD PTR[rbx*4+rdi],4
  228. add r11d,r8d
  229. mov edx,DWORD PTR[rcx*4+rdi]
  230. xor r12d,r8d
  231. mov DWORD PTR[rcx*4+rdi],eax
  232. and r12d,r11d
  233. add r10d,DWORD PTR[40+r15]
  234. add al,dl
  235. mov ebx,DWORD PTR[44+rsi]
  236. add r10d,4294925233
  237. xor r12d,r9d
  238. movzx eax,al
  239. mov DWORD PTR[40+rsi],edx
  240. add r10d,r12d
  241. add cl,bl
  242. rol r10d,17
  243. mov r12d,r8d
  244. pinsrw xmm0,WORD PTR[rax*4+rdi],5
  245. add r10d,r11d
  246. mov edx,DWORD PTR[rcx*4+rdi]
  247. xor r12d,r11d
  248. mov DWORD PTR[rcx*4+rdi],ebx
  249. and r12d,r10d
  250. add r9d,DWORD PTR[44+r15]
  251. add bl,dl
  252. mov eax,DWORD PTR[48+rsi]
  253. add r9d,2304563134
  254. xor r12d,r8d
  255. movzx ebx,bl
  256. mov DWORD PTR[44+rsi],edx
  257. add r9d,r12d
  258. add cl,al
  259. rol r9d,22
  260. mov r12d,r11d
  261. pinsrw xmm1,WORD PTR[rbx*4+rdi],5
  262. add r9d,r10d
  263. mov edx,DWORD PTR[rcx*4+rdi]
  264. xor r12d,r10d
  265. mov DWORD PTR[rcx*4+rdi],eax
  266. and r12d,r9d
  267. add r8d,DWORD PTR[48+r15]
  268. add al,dl
  269. mov ebx,DWORD PTR[52+rsi]
  270. add r8d,1804603682
  271. xor r12d,r11d
  272. movzx eax,al
  273. mov DWORD PTR[48+rsi],edx
  274. add r8d,r12d
  275. add cl,bl
  276. rol r8d,7
  277. mov r12d,r10d
  278. pinsrw xmm0,WORD PTR[rax*4+rdi],6
  279. add r8d,r9d
  280. mov edx,DWORD PTR[rcx*4+rdi]
  281. xor r12d,r9d
  282. mov DWORD PTR[rcx*4+rdi],ebx
  283. and r12d,r8d
  284. add r11d,DWORD PTR[52+r15]
  285. add bl,dl
  286. mov eax,DWORD PTR[56+rsi]
  287. add r11d,4254626195
  288. xor r12d,r10d
  289. movzx ebx,bl
  290. mov DWORD PTR[52+rsi],edx
  291. add r11d,r12d
  292. add cl,al
  293. rol r11d,12
  294. mov r12d,r9d
  295. pinsrw xmm1,WORD PTR[rbx*4+rdi],6
  296. add r11d,r8d
  297. mov edx,DWORD PTR[rcx*4+rdi]
  298. xor r12d,r8d
  299. mov DWORD PTR[rcx*4+rdi],eax
  300. and r12d,r11d
  301. add r10d,DWORD PTR[56+r15]
  302. add al,dl
  303. mov ebx,DWORD PTR[60+rsi]
  304. add r10d,2792965006
  305. xor r12d,r9d
  306. movzx eax,al
  307. mov DWORD PTR[56+rsi],edx
  308. add r10d,r12d
  309. add cl,bl
  310. rol r10d,17
  311. mov r12d,r8d
  312. pinsrw xmm0,WORD PTR[rax*4+rdi],7
  313. add r10d,r11d
  314. movdqu xmm2,XMMWORD PTR[r13]
  315. mov edx,DWORD PTR[rcx*4+rdi]
  316. xor r12d,r11d
  317. mov DWORD PTR[rcx*4+rdi],ebx
  318. and r12d,r10d
  319. add r9d,DWORD PTR[60+r15]
  320. add bl,dl
  321. mov eax,DWORD PTR[64+rsi]
  322. add r9d,1236535329
  323. xor r12d,r8d
  324. movzx ebx,bl
  325. mov DWORD PTR[60+rsi],edx
  326. add r9d,r12d
  327. add cl,al
  328. rol r9d,22
  329. mov r12d,r10d
  330. pinsrw xmm1,WORD PTR[rbx*4+rdi],7
  331. add r9d,r10d
  332. psllq xmm1,8
  333. pxor xmm2,xmm0
  334. pxor xmm2,xmm1
  335. pxor xmm0,xmm0
  336. mov edx,DWORD PTR[rcx*4+rdi]
  337. xor r12d,r9d
  338. mov DWORD PTR[rcx*4+rdi],eax
  339. and r12d,r11d
  340. add r8d,DWORD PTR[4+r15]
  341. add al,dl
  342. mov ebx,DWORD PTR[68+rsi]
  343. add r8d,4129170786
  344. xor r12d,r10d
  345. movzx eax,al
  346. mov DWORD PTR[64+rsi],edx
  347. add r8d,r12d
  348. add cl,bl
  349. rol r8d,5
  350. mov r12d,r9d
  351. movd xmm0,DWORD PTR[rax*4+rdi]
  352. add r8d,r9d
  353. pxor xmm1,xmm1
  354. mov edx,DWORD PTR[rcx*4+rdi]
  355. xor r12d,r8d
  356. mov DWORD PTR[rcx*4+rdi],ebx
  357. and r12d,r10d
  358. add r11d,DWORD PTR[24+r15]
  359. add bl,dl
  360. mov eax,DWORD PTR[72+rsi]
  361. add r11d,3225465664
  362. xor r12d,r9d
  363. movzx ebx,bl
  364. mov DWORD PTR[68+rsi],edx
  365. add r11d,r12d
  366. add cl,al
  367. rol r11d,9
  368. mov r12d,r8d
  369. movd xmm1,DWORD PTR[rbx*4+rdi]
  370. add r11d,r8d
  371. mov edx,DWORD PTR[rcx*4+rdi]
  372. xor r12d,r11d
  373. mov DWORD PTR[rcx*4+rdi],eax
  374. and r12d,r9d
  375. add r10d,DWORD PTR[44+r15]
  376. add al,dl
  377. mov ebx,DWORD PTR[76+rsi]
  378. add r10d,643717713
  379. xor r12d,r8d
  380. movzx eax,al
  381. mov DWORD PTR[72+rsi],edx
  382. add r10d,r12d
  383. add cl,bl
  384. rol r10d,14
  385. mov r12d,r11d
  386. pinsrw xmm0,WORD PTR[rax*4+rdi],1
  387. add r10d,r11d
  388. mov edx,DWORD PTR[rcx*4+rdi]
  389. xor r12d,r10d
  390. mov DWORD PTR[rcx*4+rdi],ebx
  391. and r12d,r8d
  392. add r9d,DWORD PTR[r15]
  393. add bl,dl
  394. mov eax,DWORD PTR[80+rsi]
  395. add r9d,3921069994
  396. xor r12d,r11d
  397. movzx ebx,bl
  398. mov DWORD PTR[76+rsi],edx
  399. add r9d,r12d
  400. add cl,al
  401. rol r9d,20
  402. mov r12d,r10d
  403. pinsrw xmm1,WORD PTR[rbx*4+rdi],1
  404. add r9d,r10d
  405. mov edx,DWORD PTR[rcx*4+rdi]
  406. xor r12d,r9d
  407. mov DWORD PTR[rcx*4+rdi],eax
  408. and r12d,r11d
  409. add r8d,DWORD PTR[20+r15]
  410. add al,dl
  411. mov ebx,DWORD PTR[84+rsi]
  412. add r8d,3593408605
  413. xor r12d,r10d
  414. movzx eax,al
  415. mov DWORD PTR[80+rsi],edx
  416. add r8d,r12d
  417. add cl,bl
  418. rol r8d,5
  419. mov r12d,r9d
  420. pinsrw xmm0,WORD PTR[rax*4+rdi],2
  421. add r8d,r9d
  422. mov edx,DWORD PTR[rcx*4+rdi]
  423. xor r12d,r8d
  424. mov DWORD PTR[rcx*4+rdi],ebx
  425. and r12d,r10d
  426. add r11d,DWORD PTR[40+r15]
  427. add bl,dl
  428. mov eax,DWORD PTR[88+rsi]
  429. add r11d,38016083
  430. xor r12d,r9d
  431. movzx ebx,bl
  432. mov DWORD PTR[84+rsi],edx
  433. add r11d,r12d
  434. add cl,al
  435. rol r11d,9
  436. mov r12d,r8d
  437. pinsrw xmm1,WORD PTR[rbx*4+rdi],2
  438. add r11d,r8d
  439. mov edx,DWORD PTR[rcx*4+rdi]
  440. xor r12d,r11d
  441. mov DWORD PTR[rcx*4+rdi],eax
  442. and r12d,r9d
  443. add r10d,DWORD PTR[60+r15]
  444. add al,dl
  445. mov ebx,DWORD PTR[92+rsi]
  446. add r10d,3634488961
  447. xor r12d,r8d
  448. movzx eax,al
  449. mov DWORD PTR[88+rsi],edx
  450. add r10d,r12d
  451. add cl,bl
  452. rol r10d,14
  453. mov r12d,r11d
  454. pinsrw xmm0,WORD PTR[rax*4+rdi],3
  455. add r10d,r11d
  456. mov edx,DWORD PTR[rcx*4+rdi]
  457. xor r12d,r10d
  458. mov DWORD PTR[rcx*4+rdi],ebx
  459. and r12d,r8d
  460. add r9d,DWORD PTR[16+r15]
  461. add bl,dl
  462. mov eax,DWORD PTR[96+rsi]
  463. add r9d,3889429448
  464. xor r12d,r11d
  465. movzx ebx,bl
  466. mov DWORD PTR[92+rsi],edx
  467. add r9d,r12d
  468. add cl,al
  469. rol r9d,20
  470. mov r12d,r10d
  471. pinsrw xmm1,WORD PTR[rbx*4+rdi],3
  472. add r9d,r10d
  473. mov edx,DWORD PTR[rcx*4+rdi]
  474. xor r12d,r9d
  475. mov DWORD PTR[rcx*4+rdi],eax
  476. and r12d,r11d
  477. add r8d,DWORD PTR[36+r15]
  478. add al,dl
  479. mov ebx,DWORD PTR[100+rsi]
  480. add r8d,568446438
  481. xor r12d,r10d
  482. movzx eax,al
  483. mov DWORD PTR[96+rsi],edx
  484. add r8d,r12d
  485. add cl,bl
  486. rol r8d,5
  487. mov r12d,r9d
  488. pinsrw xmm0,WORD PTR[rax*4+rdi],4
  489. add r8d,r9d
  490. mov edx,DWORD PTR[rcx*4+rdi]
  491. xor r12d,r8d
  492. mov DWORD PTR[rcx*4+rdi],ebx
  493. and r12d,r10d
  494. add r11d,DWORD PTR[56+r15]
  495. add bl,dl
  496. mov eax,DWORD PTR[104+rsi]
  497. add r11d,3275163606
  498. xor r12d,r9d
  499. movzx ebx,bl
  500. mov DWORD PTR[100+rsi],edx
  501. add r11d,r12d
  502. add cl,al
  503. rol r11d,9
  504. mov r12d,r8d
  505. pinsrw xmm1,WORD PTR[rbx*4+rdi],4
  506. add r11d,r8d
  507. mov edx,DWORD PTR[rcx*4+rdi]
  508. xor r12d,r11d
  509. mov DWORD PTR[rcx*4+rdi],eax
  510. and r12d,r9d
  511. add r10d,DWORD PTR[12+r15]
  512. add al,dl
  513. mov ebx,DWORD PTR[108+rsi]
  514. add r10d,4107603335
  515. xor r12d,r8d
  516. movzx eax,al
  517. mov DWORD PTR[104+rsi],edx
  518. add r10d,r12d
  519. add cl,bl
  520. rol r10d,14
  521. mov r12d,r11d
  522. pinsrw xmm0,WORD PTR[rax*4+rdi],5
  523. add r10d,r11d
  524. mov edx,DWORD PTR[rcx*4+rdi]
  525. xor r12d,r10d
  526. mov DWORD PTR[rcx*4+rdi],ebx
  527. and r12d,r8d
  528. add r9d,DWORD PTR[32+r15]
  529. add bl,dl
  530. mov eax,DWORD PTR[112+rsi]
  531. add r9d,1163531501
  532. xor r12d,r11d
  533. movzx ebx,bl
  534. mov DWORD PTR[108+rsi],edx
  535. add r9d,r12d
  536. add cl,al
  537. rol r9d,20
  538. mov r12d,r10d
  539. pinsrw xmm1,WORD PTR[rbx*4+rdi],5
  540. add r9d,r10d
  541. mov edx,DWORD PTR[rcx*4+rdi]
  542. xor r12d,r9d
  543. mov DWORD PTR[rcx*4+rdi],eax
  544. and r12d,r11d
  545. add r8d,DWORD PTR[52+r15]
  546. add al,dl
  547. mov ebx,DWORD PTR[116+rsi]
  548. add r8d,2850285829
  549. xor r12d,r10d
  550. movzx eax,al
  551. mov DWORD PTR[112+rsi],edx
  552. add r8d,r12d
  553. add cl,bl
  554. rol r8d,5
  555. mov r12d,r9d
  556. pinsrw xmm0,WORD PTR[rax*4+rdi],6
  557. add r8d,r9d
  558. mov edx,DWORD PTR[rcx*4+rdi]
  559. xor r12d,r8d
  560. mov DWORD PTR[rcx*4+rdi],ebx
  561. and r12d,r10d
  562. add r11d,DWORD PTR[8+r15]
  563. add bl,dl
  564. mov eax,DWORD PTR[120+rsi]
  565. add r11d,4243563512
  566. xor r12d,r9d
  567. movzx ebx,bl
  568. mov DWORD PTR[116+rsi],edx
  569. add r11d,r12d
  570. add cl,al
  571. rol r11d,9
  572. mov r12d,r8d
  573. pinsrw xmm1,WORD PTR[rbx*4+rdi],6
  574. add r11d,r8d
  575. mov edx,DWORD PTR[rcx*4+rdi]
  576. xor r12d,r11d
  577. mov DWORD PTR[rcx*4+rdi],eax
  578. and r12d,r9d
  579. add r10d,DWORD PTR[28+r15]
  580. add al,dl
  581. mov ebx,DWORD PTR[124+rsi]
  582. add r10d,1735328473
  583. xor r12d,r8d
  584. movzx eax,al
  585. mov DWORD PTR[120+rsi],edx
  586. add r10d,r12d
  587. add cl,bl
  588. rol r10d,14
  589. mov r12d,r11d
  590. pinsrw xmm0,WORD PTR[rax*4+rdi],7
  591. add r10d,r11d
  592. movdqu xmm3,XMMWORD PTR[16+r13]
  593. add bpl,32
  594. mov edx,DWORD PTR[rcx*4+rdi]
  595. xor r12d,r10d
  596. mov DWORD PTR[rcx*4+rdi],ebx
  597. and r12d,r8d
  598. add r9d,DWORD PTR[48+r15]
  599. add bl,dl
  600. mov eax,DWORD PTR[rbp*4+rdi]
  601. add r9d,2368359562
  602. xor r12d,r11d
  603. movzx ebx,bl
  604. mov DWORD PTR[124+rsi],edx
  605. add r9d,r12d
  606. add cl,al
  607. rol r9d,20
  608. mov r12d,r11d
  609. pinsrw xmm1,WORD PTR[rbx*4+rdi],7
  610. add r9d,r10d
  611. mov rsi,rcx
  612. xor rcx,rcx
  613. mov cl,sil
  614. lea rsi,QWORD PTR[rbp*4+rdi]
  615. psllq xmm1,8
  616. pxor xmm3,xmm0
  617. pxor xmm3,xmm1
  618. pxor xmm0,xmm0
  619. mov edx,DWORD PTR[rcx*4+rdi]
  620. xor r12d,r10d
  621. mov DWORD PTR[rcx*4+rdi],eax
  622. xor r12d,r9d
  623. add r8d,DWORD PTR[20+r15]
  624. add al,dl
  625. mov ebx,DWORD PTR[4+rsi]
  626. add r8d,4294588738
  627. movzx eax,al
  628. add r8d,r12d
  629. mov DWORD PTR[rsi],edx
  630. add cl,bl
  631. rol r8d,4
  632. mov r12d,r10d
  633. movd xmm0,DWORD PTR[rax*4+rdi]
  634. add r8d,r9d
  635. pxor xmm1,xmm1
  636. mov edx,DWORD PTR[rcx*4+rdi]
  637. xor r12d,r9d
  638. mov DWORD PTR[rcx*4+rdi],ebx
  639. xor r12d,r8d
  640. add r11d,DWORD PTR[32+r15]
  641. add bl,dl
  642. mov eax,DWORD PTR[8+rsi]
  643. add r11d,2272392833
  644. movzx ebx,bl
  645. add r11d,r12d
  646. mov DWORD PTR[4+rsi],edx
  647. add cl,al
  648. rol r11d,11
  649. mov r12d,r9d
  650. movd xmm1,DWORD PTR[rbx*4+rdi]
  651. add r11d,r8d
  652. mov edx,DWORD PTR[rcx*4+rdi]
  653. xor r12d,r8d
  654. mov DWORD PTR[rcx*4+rdi],eax
  655. xor r12d,r11d
  656. add r10d,DWORD PTR[44+r15]
  657. add al,dl
  658. mov ebx,DWORD PTR[12+rsi]
  659. add r10d,1839030562
  660. movzx eax,al
  661. add r10d,r12d
  662. mov DWORD PTR[8+rsi],edx
  663. add cl,bl
  664. rol r10d,16
  665. mov r12d,r8d
  666. pinsrw xmm0,WORD PTR[rax*4+rdi],1
  667. add r10d,r11d
  668. mov edx,DWORD PTR[rcx*4+rdi]
  669. xor r12d,r11d
  670. mov DWORD PTR[rcx*4+rdi],ebx
  671. xor r12d,r10d
  672. add r9d,DWORD PTR[56+r15]
  673. add bl,dl
  674. mov eax,DWORD PTR[16+rsi]
  675. add r9d,4259657740
  676. movzx ebx,bl
  677. add r9d,r12d
  678. mov DWORD PTR[12+rsi],edx
  679. add cl,al
  680. rol r9d,23
  681. mov r12d,r11d
  682. pinsrw xmm1,WORD PTR[rbx*4+rdi],1
  683. add r9d,r10d
  684. mov edx,DWORD PTR[rcx*4+rdi]
  685. xor r12d,r10d
  686. mov DWORD PTR[rcx*4+rdi],eax
  687. xor r12d,r9d
  688. add r8d,DWORD PTR[4+r15]
  689. add al,dl
  690. mov ebx,DWORD PTR[20+rsi]
  691. add r8d,2763975236
  692. movzx eax,al
  693. add r8d,r12d
  694. mov DWORD PTR[16+rsi],edx
  695. add cl,bl
  696. rol r8d,4
  697. mov r12d,r10d
  698. pinsrw xmm0,WORD PTR[rax*4+rdi],2
  699. add r8d,r9d
  700. mov edx,DWORD PTR[rcx*4+rdi]
  701. xor r12d,r9d
  702. mov DWORD PTR[rcx*4+rdi],ebx
  703. xor r12d,r8d
  704. add r11d,DWORD PTR[16+r15]
  705. add bl,dl
  706. mov eax,DWORD PTR[24+rsi]
  707. add r11d,1272893353
  708. movzx ebx,bl
  709. add r11d,r12d
  710. mov DWORD PTR[20+rsi],edx
  711. add cl,al
  712. rol r11d,11
  713. mov r12d,r9d
  714. pinsrw xmm1,WORD PTR[rbx*4+rdi],2
  715. add r11d,r8d
  716. mov edx,DWORD PTR[rcx*4+rdi]
  717. xor r12d,r8d
  718. mov DWORD PTR[rcx*4+rdi],eax
  719. xor r12d,r11d
  720. add r10d,DWORD PTR[28+r15]
  721. add al,dl
  722. mov ebx,DWORD PTR[28+rsi]
  723. add r10d,4139469664
  724. movzx eax,al
  725. add r10d,r12d
  726. mov DWORD PTR[24+rsi],edx
  727. add cl,bl
  728. rol r10d,16
  729. mov r12d,r8d
  730. pinsrw xmm0,WORD PTR[rax*4+rdi],3
  731. add r10d,r11d
  732. mov edx,DWORD PTR[rcx*4+rdi]
  733. xor r12d,r11d
  734. mov DWORD PTR[rcx*4+rdi],ebx
  735. xor r12d,r10d
  736. add r9d,DWORD PTR[40+r15]
  737. add bl,dl
  738. mov eax,DWORD PTR[32+rsi]
  739. add r9d,3200236656
  740. movzx ebx,bl
  741. add r9d,r12d
  742. mov DWORD PTR[28+rsi],edx
  743. add cl,al
  744. rol r9d,23
  745. mov r12d,r11d
  746. pinsrw xmm1,WORD PTR[rbx*4+rdi],3
  747. add r9d,r10d
  748. mov edx,DWORD PTR[rcx*4+rdi]
  749. xor r12d,r10d
  750. mov DWORD PTR[rcx*4+rdi],eax
  751. xor r12d,r9d
  752. add r8d,DWORD PTR[52+r15]
  753. add al,dl
  754. mov ebx,DWORD PTR[36+rsi]
  755. add r8d,681279174
  756. movzx eax,al
  757. add r8d,r12d
  758. mov DWORD PTR[32+rsi],edx
  759. add cl,bl
  760. rol r8d,4
  761. mov r12d,r10d
  762. pinsrw xmm0,WORD PTR[rax*4+rdi],4
  763. add r8d,r9d
  764. mov edx,DWORD PTR[rcx*4+rdi]
  765. xor r12d,r9d
  766. mov DWORD PTR[rcx*4+rdi],ebx
  767. xor r12d,r8d
  768. add r11d,DWORD PTR[r15]
  769. add bl,dl
  770. mov eax,DWORD PTR[40+rsi]
  771. add r11d,3936430074
  772. movzx ebx,bl
  773. add r11d,r12d
  774. mov DWORD PTR[36+rsi],edx
  775. add cl,al
  776. rol r11d,11
  777. mov r12d,r9d
  778. pinsrw xmm1,WORD PTR[rbx*4+rdi],4
  779. add r11d,r8d
  780. mov edx,DWORD PTR[rcx*4+rdi]
  781. xor r12d,r8d
  782. mov DWORD PTR[rcx*4+rdi],eax
  783. xor r12d,r11d
  784. add r10d,DWORD PTR[12+r15]
  785. add al,dl
  786. mov ebx,DWORD PTR[44+rsi]
  787. add r10d,3572445317
  788. movzx eax,al
  789. add r10d,r12d
  790. mov DWORD PTR[40+rsi],edx
  791. add cl,bl
  792. rol r10d,16
  793. mov r12d,r8d
  794. pinsrw xmm0,WORD PTR[rax*4+rdi],5
  795. add r10d,r11d
  796. mov edx,DWORD PTR[rcx*4+rdi]
  797. xor r12d,r11d
  798. mov DWORD PTR[rcx*4+rdi],ebx
  799. xor r12d,r10d
  800. add r9d,DWORD PTR[24+r15]
  801. add bl,dl
  802. mov eax,DWORD PTR[48+rsi]
  803. add r9d,76029189
  804. movzx ebx,bl
  805. add r9d,r12d
  806. mov DWORD PTR[44+rsi],edx
  807. add cl,al
  808. rol r9d,23
  809. mov r12d,r11d
  810. pinsrw xmm1,WORD PTR[rbx*4+rdi],5
  811. add r9d,r10d
  812. mov edx,DWORD PTR[rcx*4+rdi]
  813. xor r12d,r10d
  814. mov DWORD PTR[rcx*4+rdi],eax
  815. xor r12d,r9d
  816. add r8d,DWORD PTR[36+r15]
  817. add al,dl
  818. mov ebx,DWORD PTR[52+rsi]
  819. add r8d,3654602809
  820. movzx eax,al
  821. add r8d,r12d
  822. mov DWORD PTR[48+rsi],edx
  823. add cl,bl
  824. rol r8d,4
  825. mov r12d,r10d
  826. pinsrw xmm0,WORD PTR[rax*4+rdi],6
  827. add r8d,r9d
  828. mov edx,DWORD PTR[rcx*4+rdi]
  829. xor r12d,r9d
  830. mov DWORD PTR[rcx*4+rdi],ebx
  831. xor r12d,r8d
  832. add r11d,DWORD PTR[48+r15]
  833. add bl,dl
  834. mov eax,DWORD PTR[56+rsi]
  835. add r11d,3873151461
  836. movzx ebx,bl
  837. add r11d,r12d
  838. mov DWORD PTR[52+rsi],edx
  839. add cl,al
  840. rol r11d,11
  841. mov r12d,r9d
  842. pinsrw xmm1,WORD PTR[rbx*4+rdi],6
  843. add r11d,r8d
  844. mov edx,DWORD PTR[rcx*4+rdi]
  845. xor r12d,r8d
  846. mov DWORD PTR[rcx*4+rdi],eax
  847. xor r12d,r11d
  848. add r10d,DWORD PTR[60+r15]
  849. add al,dl
  850. mov ebx,DWORD PTR[60+rsi]
  851. add r10d,530742520
  852. movzx eax,al
  853. add r10d,r12d
  854. mov DWORD PTR[56+rsi],edx
  855. add cl,bl
  856. rol r10d,16
  857. mov r12d,r8d
  858. pinsrw xmm0,WORD PTR[rax*4+rdi],7
  859. add r10d,r11d
  860. movdqu xmm4,XMMWORD PTR[32+r13]
  861. mov edx,DWORD PTR[rcx*4+rdi]
  862. xor r12d,r11d
  863. mov DWORD PTR[rcx*4+rdi],ebx
  864. xor r12d,r10d
  865. add r9d,DWORD PTR[8+r15]
  866. add bl,dl
  867. mov eax,DWORD PTR[64+rsi]
  868. add r9d,3299628645
  869. movzx ebx,bl
  870. add r9d,r12d
  871. mov DWORD PTR[60+rsi],edx
  872. add cl,al
  873. rol r9d,23
  874. mov r12d,-1
  875. pinsrw xmm1,WORD PTR[rbx*4+rdi],7
  876. add r9d,r10d
  877. psllq xmm1,8
  878. pxor xmm4,xmm0
  879. pxor xmm4,xmm1
  880. pxor xmm0,xmm0
  881. mov edx,DWORD PTR[rcx*4+rdi]
  882. xor r12d,r11d
  883. mov DWORD PTR[rcx*4+rdi],eax
  884. or r12d,r9d
  885. add r8d,DWORD PTR[r15]
  886. add al,dl
  887. mov ebx,DWORD PTR[68+rsi]
  888. add r8d,4096336452
  889. movzx eax,al
  890. xor r12d,r10d
  891. mov DWORD PTR[64+rsi],edx
  892. add r8d,r12d
  893. add cl,bl
  894. rol r8d,6
  895. mov r12d,-1
  896. movd xmm0,DWORD PTR[rax*4+rdi]
  897. add r8d,r9d
  898. pxor xmm1,xmm1
  899. mov edx,DWORD PTR[rcx*4+rdi]
  900. xor r12d,r10d
  901. mov DWORD PTR[rcx*4+rdi],ebx
  902. or r12d,r8d
  903. add r11d,DWORD PTR[28+r15]
  904. add bl,dl
  905. mov eax,DWORD PTR[72+rsi]
  906. add r11d,1126891415
  907. movzx ebx,bl
  908. xor r12d,r9d
  909. mov DWORD PTR[68+rsi],edx
  910. add r11d,r12d
  911. add cl,al
  912. rol r11d,10
  913. mov r12d,-1
  914. movd xmm1,DWORD PTR[rbx*4+rdi]
  915. add r11d,r8d
  916. mov edx,DWORD PTR[rcx*4+rdi]
  917. xor r12d,r9d
  918. mov DWORD PTR[rcx*4+rdi],eax
  919. or r12d,r11d
  920. add r10d,DWORD PTR[56+r15]
  921. add al,dl
  922. mov ebx,DWORD PTR[76+rsi]
  923. add r10d,2878612391
  924. movzx eax,al
  925. xor r12d,r8d
  926. mov DWORD PTR[72+rsi],edx
  927. add r10d,r12d
  928. add cl,bl
  929. rol r10d,15
  930. mov r12d,-1
  931. pinsrw xmm0,WORD PTR[rax*4+rdi],1
  932. add r10d,r11d
  933. mov edx,DWORD PTR[rcx*4+rdi]
  934. xor r12d,r8d
  935. mov DWORD PTR[rcx*4+rdi],ebx
  936. or r12d,r10d
  937. add r9d,DWORD PTR[20+r15]
  938. add bl,dl
  939. mov eax,DWORD PTR[80+rsi]
  940. add r9d,4237533241
  941. movzx ebx,bl
  942. xor r12d,r11d
  943. mov DWORD PTR[76+rsi],edx
  944. add r9d,r12d
  945. add cl,al
  946. rol r9d,21
  947. mov r12d,-1
  948. pinsrw xmm1,WORD PTR[rbx*4+rdi],1
  949. add r9d,r10d
  950. mov edx,DWORD PTR[rcx*4+rdi]
  951. xor r12d,r11d
  952. mov DWORD PTR[rcx*4+rdi],eax
  953. or r12d,r9d
  954. add r8d,DWORD PTR[48+r15]
  955. add al,dl
  956. mov ebx,DWORD PTR[84+rsi]
  957. add r8d,1700485571
  958. movzx eax,al
  959. xor r12d,r10d
  960. mov DWORD PTR[80+rsi],edx
  961. add r8d,r12d
  962. add cl,bl
  963. rol r8d,6
  964. mov r12d,-1
  965. pinsrw xmm0,WORD PTR[rax*4+rdi],2
  966. add r8d,r9d
  967. mov edx,DWORD PTR[rcx*4+rdi]
  968. xor r12d,r10d
  969. mov DWORD PTR[rcx*4+rdi],ebx
  970. or r12d,r8d
  971. add r11d,DWORD PTR[12+r15]
  972. add bl,dl
  973. mov eax,DWORD PTR[88+rsi]
  974. add r11d,2399980690
  975. movzx ebx,bl
  976. xor r12d,r9d
  977. mov DWORD PTR[84+rsi],edx
  978. add r11d,r12d
  979. add cl,al
  980. rol r11d,10
  981. mov r12d,-1
  982. pinsrw xmm1,WORD PTR[rbx*4+rdi],2
  983. add r11d,r8d
  984. mov edx,DWORD PTR[rcx*4+rdi]
  985. xor r12d,r9d
  986. mov DWORD PTR[rcx*4+rdi],eax
  987. or r12d,r11d
  988. add r10d,DWORD PTR[40+r15]
  989. add al,dl
  990. mov ebx,DWORD PTR[92+rsi]
  991. add r10d,4293915773
  992. movzx eax,al
  993. xor r12d,r8d
  994. mov DWORD PTR[88+rsi],edx
  995. add r10d,r12d
  996. add cl,bl
  997. rol r10d,15
  998. mov r12d,-1
  999. pinsrw xmm0,WORD PTR[rax*4+rdi],3
  1000. add r10d,r11d
  1001. mov edx,DWORD PTR[rcx*4+rdi]
  1002. xor r12d,r8d
  1003. mov DWORD PTR[rcx*4+rdi],ebx
  1004. or r12d,r10d
  1005. add r9d,DWORD PTR[4+r15]
  1006. add bl,dl
  1007. mov eax,DWORD PTR[96+rsi]
  1008. add r9d,2240044497
  1009. movzx ebx,bl
  1010. xor r12d,r11d
  1011. mov DWORD PTR[92+rsi],edx
  1012. add r9d,r12d
  1013. add cl,al
  1014. rol r9d,21
  1015. mov r12d,-1
  1016. pinsrw xmm1,WORD PTR[rbx*4+rdi],3
  1017. add r9d,r10d
  1018. mov edx,DWORD PTR[rcx*4+rdi]
  1019. xor r12d,r11d
  1020. mov DWORD PTR[rcx*4+rdi],eax
  1021. or r12d,r9d
  1022. add r8d,DWORD PTR[32+r15]
  1023. add al,dl
  1024. mov ebx,DWORD PTR[100+rsi]
  1025. add r8d,1873313359
  1026. movzx eax,al
  1027. xor r12d,r10d
  1028. mov DWORD PTR[96+rsi],edx
  1029. add r8d,r12d
  1030. add cl,bl
  1031. rol r8d,6
  1032. mov r12d,-1
  1033. pinsrw xmm0,WORD PTR[rax*4+rdi],4
  1034. add r8d,r9d
  1035. mov edx,DWORD PTR[rcx*4+rdi]
  1036. xor r12d,r10d
  1037. mov DWORD PTR[rcx*4+rdi],ebx
  1038. or r12d,r8d
  1039. add r11d,DWORD PTR[60+r15]
  1040. add bl,dl
  1041. mov eax,DWORD PTR[104+rsi]
  1042. add r11d,4264355552
  1043. movzx ebx,bl
  1044. xor r12d,r9d
  1045. mov DWORD PTR[100+rsi],edx
  1046. add r11d,r12d
  1047. add cl,al
  1048. rol r11d,10
  1049. mov r12d,-1
  1050. pinsrw xmm1,WORD PTR[rbx*4+rdi],4
  1051. add r11d,r8d
  1052. mov edx,DWORD PTR[rcx*4+rdi]
  1053. xor r12d,r9d
  1054. mov DWORD PTR[rcx*4+rdi],eax
  1055. or r12d,r11d
  1056. add r10d,DWORD PTR[24+r15]
  1057. add al,dl
  1058. mov ebx,DWORD PTR[108+rsi]
  1059. add r10d,2734768916
  1060. movzx eax,al
  1061. xor r12d,r8d
  1062. mov DWORD PTR[104+rsi],edx
  1063. add r10d,r12d
  1064. add cl,bl
  1065. rol r10d,15
  1066. mov r12d,-1
  1067. pinsrw xmm0,WORD PTR[rax*4+rdi],5
  1068. add r10d,r11d
  1069. mov edx,DWORD PTR[rcx*4+rdi]
  1070. xor r12d,r8d
  1071. mov DWORD PTR[rcx*4+rdi],ebx
  1072. or r12d,r10d
  1073. add r9d,DWORD PTR[52+r15]
  1074. add bl,dl
  1075. mov eax,DWORD PTR[112+rsi]
  1076. add r9d,1309151649
  1077. movzx ebx,bl
  1078. xor r12d,r11d
  1079. mov DWORD PTR[108+rsi],edx
  1080. add r9d,r12d
  1081. add cl,al
  1082. rol r9d,21
  1083. mov r12d,-1
  1084. pinsrw xmm1,WORD PTR[rbx*4+rdi],5
  1085. add r9d,r10d
  1086. mov edx,DWORD PTR[rcx*4+rdi]
  1087. xor r12d,r11d
  1088. mov DWORD PTR[rcx*4+rdi],eax
  1089. or r12d,r9d
  1090. add r8d,DWORD PTR[16+r15]
  1091. add al,dl
  1092. mov ebx,DWORD PTR[116+rsi]
  1093. add r8d,4149444226
  1094. movzx eax,al
  1095. xor r12d,r10d
  1096. mov DWORD PTR[112+rsi],edx
  1097. add r8d,r12d
  1098. add cl,bl
  1099. rol r8d,6
  1100. mov r12d,-1
  1101. pinsrw xmm0,WORD PTR[rax*4+rdi],6
  1102. add r8d,r9d
  1103. mov edx,DWORD PTR[rcx*4+rdi]
  1104. xor r12d,r10d
  1105. mov DWORD PTR[rcx*4+rdi],ebx
  1106. or r12d,r8d
  1107. add r11d,DWORD PTR[44+r15]
  1108. add bl,dl
  1109. mov eax,DWORD PTR[120+rsi]
  1110. add r11d,3174756917
  1111. movzx ebx,bl
  1112. xor r12d,r9d
  1113. mov DWORD PTR[116+rsi],edx
  1114. add r11d,r12d
  1115. add cl,al
  1116. rol r11d,10
  1117. mov r12d,-1
  1118. pinsrw xmm1,WORD PTR[rbx*4+rdi],6
  1119. add r11d,r8d
  1120. mov edx,DWORD PTR[rcx*4+rdi]
  1121. xor r12d,r9d
  1122. mov DWORD PTR[rcx*4+rdi],eax
  1123. or r12d,r11d
  1124. add r10d,DWORD PTR[8+r15]
  1125. add al,dl
  1126. mov ebx,DWORD PTR[124+rsi]
  1127. add r10d,718787259
  1128. movzx eax,al
  1129. xor r12d,r8d
  1130. mov DWORD PTR[120+rsi],edx
  1131. add r10d,r12d
  1132. add cl,bl
  1133. rol r10d,15
  1134. mov r12d,-1
  1135. pinsrw xmm0,WORD PTR[rax*4+rdi],7
  1136. add r10d,r11d
  1137. movdqu xmm5,XMMWORD PTR[48+r13]
  1138. add bpl,32
  1139. mov edx,DWORD PTR[rcx*4+rdi]
  1140. xor r12d,r8d
  1141. mov DWORD PTR[rcx*4+rdi],ebx
  1142. or r12d,r10d
  1143. add r9d,DWORD PTR[36+r15]
  1144. add bl,dl
  1145. mov eax,DWORD PTR[rbp*4+rdi]
  1146. add r9d,3951481745
  1147. movzx ebx,bl
  1148. xor r12d,r11d
  1149. mov DWORD PTR[124+rsi],edx
  1150. add r9d,r12d
  1151. add cl,al
  1152. rol r9d,21
  1153. mov r12d,-1
  1154. pinsrw xmm1,WORD PTR[rbx*4+rdi],7
  1155. add r9d,r10d
  1156. mov rsi,rbp
  1157. xor rbp,rbp
  1158. mov bpl,sil
  1159. mov rsi,rcx
  1160. xor rcx,rcx
  1161. mov cl,sil
  1162. lea rsi,QWORD PTR[rbp*4+rdi]
  1163. psllq xmm1,8
  1164. pxor xmm5,xmm0
  1165. pxor xmm5,xmm1
  1166. add r8d,DWORD PTR[rsp]
  1167. add r9d,DWORD PTR[4+rsp]
  1168. add r10d,DWORD PTR[8+rsp]
  1169. add r11d,DWORD PTR[12+rsp]
  1170. movdqu XMMWORD PTR[r13*1+r14],xmm2
  1171. movdqu XMMWORD PTR[16+r13*1+r14],xmm3
  1172. movdqu XMMWORD PTR[32+r13*1+r14],xmm4
  1173. movdqu XMMWORD PTR[48+r13*1+r14],xmm5
  1174. lea r15,QWORD PTR[64+r15]
  1175. lea r13,QWORD PTR[64+r13]
  1176. cmp r15,QWORD PTR[16+rsp]
  1177. jb $L$oop
  1178. mov r12,QWORD PTR[24+rsp]
  1179. sub cl,al
  1180. mov DWORD PTR[r12],r8d
  1181. mov DWORD PTR[4+r12],r9d
  1182. mov DWORD PTR[8+r12],r10d
  1183. mov DWORD PTR[12+r12],r11d
  1184. sub bpl,1
  1185. mov DWORD PTR[((-8))+rdi],ebp
  1186. mov DWORD PTR[((-4))+rdi],ecx
  1187. mov r15,QWORD PTR[40+rsp]
  1188. mov r14,QWORD PTR[48+rsp]
  1189. mov r13,QWORD PTR[56+rsp]
  1190. mov r12,QWORD PTR[64+rsp]
  1191. mov rbp,QWORD PTR[72+rsp]
  1192. mov rbx,QWORD PTR[80+rsp]
  1193. lea rsp,QWORD PTR[88+rsp]
  1194. $L$epilogue::
  1195. $L$abort::
  1196. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  1197. mov rsi,QWORD PTR[16+rsp]
  1198. DB 0F3h,0C3h ;repret
  1199. $L$SEH_end_rc4_md5_enc::
  1200. rc4_md5_enc ENDP
  1201. EXTERN __imp_RtlVirtualUnwind:NEAR
  1202. ALIGN 16
  1203. se_handler PROC PRIVATE
  1204. push rsi
  1205. push rdi
  1206. push rbx
  1207. push rbp
  1208. push r12
  1209. push r13
  1210. push r14
  1211. push r15
  1212. pushfq
  1213. sub rsp,64
  1214. mov rax,QWORD PTR[120+r8]
  1215. mov rbx,QWORD PTR[248+r8]
  1216. lea r10,QWORD PTR[$L$body]
  1217. cmp rbx,r10
  1218. jb $L$in_prologue
  1219. mov rax,QWORD PTR[152+r8]
  1220. lea r10,QWORD PTR[$L$epilogue]
  1221. cmp rbx,r10
  1222. jae $L$in_prologue
  1223. mov r15,QWORD PTR[40+rax]
  1224. mov r14,QWORD PTR[48+rax]
  1225. mov r13,QWORD PTR[56+rax]
  1226. mov r12,QWORD PTR[64+rax]
  1227. mov rbp,QWORD PTR[72+rax]
  1228. mov rbx,QWORD PTR[80+rax]
  1229. lea rax,QWORD PTR[88+rax]
  1230. mov QWORD PTR[144+r8],rbx
  1231. mov QWORD PTR[160+r8],rbp
  1232. mov QWORD PTR[216+r8],r12
  1233. mov QWORD PTR[224+r8],r13
  1234. mov QWORD PTR[232+r8],r14
  1235. mov QWORD PTR[240+r8],r15
  1236. $L$in_prologue::
  1237. mov rdi,QWORD PTR[8+rax]
  1238. mov rsi,QWORD PTR[16+rax]
  1239. mov QWORD PTR[152+r8],rax
  1240. mov QWORD PTR[168+r8],rsi
  1241. mov QWORD PTR[176+r8],rdi
  1242. mov rdi,QWORD PTR[40+r9]
  1243. mov rsi,r8
  1244. mov ecx,154
  1245. DD 0a548f3fch
  1246. mov rsi,r9
  1247. xor rcx,rcx
  1248. mov rdx,QWORD PTR[8+rsi]
  1249. mov r8,QWORD PTR[rsi]
  1250. mov r9,QWORD PTR[16+rsi]
  1251. mov r10,QWORD PTR[40+rsi]
  1252. lea r11,QWORD PTR[56+rsi]
  1253. lea r12,QWORD PTR[24+rsi]
  1254. mov QWORD PTR[32+rsp],r10
  1255. mov QWORD PTR[40+rsp],r11
  1256. mov QWORD PTR[48+rsp],r12
  1257. mov QWORD PTR[56+rsp],rcx
  1258. call QWORD PTR[__imp_RtlVirtualUnwind]
  1259. mov eax,1
  1260. add rsp,64
  1261. popfq
  1262. pop r15
  1263. pop r14
  1264. pop r13
  1265. pop r12
  1266. pop rbp
  1267. pop rbx
  1268. pop rdi
  1269. pop rsi
  1270. DB 0F3h,0C3h ;repret
  1271. se_handler ENDP
  1272. .text$ ENDS
  1273. .pdata SEGMENT READONLY ALIGN(4)
  1274. ALIGN 4
  1275. DD imagerel $L$SEH_begin_rc4_md5_enc
  1276. DD imagerel $L$SEH_end_rc4_md5_enc
  1277. DD imagerel $L$SEH_info_rc4_md5_enc
  1278. .pdata ENDS
  1279. .xdata SEGMENT READONLY ALIGN(8)
  1280. ALIGN 8
  1281. $L$SEH_info_rc4_md5_enc::
  1282. DB 9,0,0,0
  1283. DD imagerel se_handler
  1284. .xdata ENDS
  1285. END