sha512-586.masm 52 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848
  1. IF @Version LT 800
  2. ECHO MASM version 8.00 or later is strongly recommended.
  3. ENDIF
  4. .686
  5. .XMM
  6. IF @Version LT 800
  7. XMMWORD STRUCT 16
  8. DQ 2 dup (?)
  9. XMMWORD ENDS
  10. ENDIF
  11. .MODEL FLAT
  12. OPTION DOTNAME
  13. IF @Version LT 800
  14. .text$ SEGMENT PAGE 'CODE'
  15. ELSE
  16. .text$ SEGMENT ALIGN(64) 'CODE'
  17. ENDIF
  18. ;EXTERN _OPENSSL_ia32cap_P:NEAR
  19. ALIGN 16
  20. _sha512_block_data_order PROC PUBLIC
  21. $L_sha512_block_data_order_begin::
  22. push ebp
  23. push ebx
  24. push esi
  25. push edi
  26. mov esi,DWORD PTR 20[esp]
  27. mov edi,DWORD PTR 24[esp]
  28. mov eax,DWORD PTR 28[esp]
  29. mov ebx,esp
  30. call $L000pic_point
  31. $L000pic_point:
  32. pop ebp
  33. lea ebp,DWORD PTR ($L001K512-$L000pic_point)[ebp]
  34. sub esp,16
  35. and esp,-64
  36. shl eax,7
  37. add eax,edi
  38. mov DWORD PTR [esp],esi
  39. mov DWORD PTR 4[esp],edi
  40. mov DWORD PTR 8[esp],eax
  41. mov DWORD PTR 12[esp],ebx
  42. lea edx,DWORD PTR _OPENSSL_ia32cap_P
  43. mov ecx,DWORD PTR [edx]
  44. test ecx,67108864
  45. jz $L002loop_x86
  46. mov edx,DWORD PTR 4[edx]
  47. movq mm0,QWORD PTR [esi]
  48. and ecx,16777216
  49. movq mm1,QWORD PTR 8[esi]
  50. and edx,512
  51. movq mm2,QWORD PTR 16[esi]
  52. or ecx,edx
  53. movq mm3,QWORD PTR 24[esi]
  54. movq mm4,QWORD PTR 32[esi]
  55. movq mm5,QWORD PTR 40[esi]
  56. movq mm6,QWORD PTR 48[esi]
  57. movq mm7,QWORD PTR 56[esi]
  58. cmp ecx,16777728
  59. je $L003SSSE3
  60. sub esp,80
  61. jmp $L004loop_sse2
  62. ALIGN 16
  63. $L004loop_sse2:
  64. movq QWORD PTR 8[esp],mm1
  65. movq QWORD PTR 16[esp],mm2
  66. movq QWORD PTR 24[esp],mm3
  67. movq QWORD PTR 40[esp],mm5
  68. movq QWORD PTR 48[esp],mm6
  69. pxor mm2,mm1
  70. movq QWORD PTR 56[esp],mm7
  71. movq mm3,mm0
  72. mov eax,DWORD PTR [edi]
  73. mov ebx,DWORD PTR 4[edi]
  74. add edi,8
  75. mov edx,15
  76. bswap eax
  77. bswap ebx
  78. jmp $L00500_14_sse2
  79. ALIGN 16
  80. $L00500_14_sse2:
  81. movd mm1,eax
  82. mov eax,DWORD PTR [edi]
  83. movd mm7,ebx
  84. mov ebx,DWORD PTR 4[edi]
  85. add edi,8
  86. bswap eax
  87. bswap ebx
  88. punpckldq mm7,mm1
  89. movq mm1,mm4
  90. pxor mm5,mm6
  91. psrlq mm1,14
  92. movq QWORD PTR 32[esp],mm4
  93. pand mm5,mm4
  94. psllq mm4,23
  95. movq mm0,mm3
  96. movq QWORD PTR 72[esp],mm7
  97. movq mm3,mm1
  98. psrlq mm1,4
  99. pxor mm5,mm6
  100. pxor mm3,mm4
  101. psllq mm4,23
  102. pxor mm3,mm1
  103. movq QWORD PTR [esp],mm0
  104. paddq mm7,mm5
  105. pxor mm3,mm4
  106. psrlq mm1,23
  107. paddq mm7,QWORD PTR 56[esp]
  108. pxor mm3,mm1
  109. psllq mm4,4
  110. paddq mm7,QWORD PTR [ebp]
  111. pxor mm3,mm4
  112. movq mm4,QWORD PTR 24[esp]
  113. paddq mm3,mm7
  114. movq mm5,mm0
  115. psrlq mm5,28
  116. paddq mm4,mm3
  117. movq mm6,mm0
  118. movq mm7,mm5
  119. psllq mm6,25
  120. movq mm1,QWORD PTR 8[esp]
  121. psrlq mm5,6
  122. pxor mm7,mm6
  123. sub esp,8
  124. psllq mm6,5
  125. pxor mm7,mm5
  126. pxor mm0,mm1
  127. psrlq mm5,5
  128. pxor mm7,mm6
  129. pand mm2,mm0
  130. psllq mm6,6
  131. pxor mm7,mm5
  132. pxor mm2,mm1
  133. pxor mm6,mm7
  134. movq mm5,QWORD PTR 40[esp]
  135. paddq mm3,mm2
  136. movq mm2,mm0
  137. add ebp,8
  138. paddq mm3,mm6
  139. movq mm6,QWORD PTR 48[esp]
  140. dec edx
  141. jnz $L00500_14_sse2
  142. movd mm1,eax
  143. movd mm7,ebx
  144. punpckldq mm7,mm1
  145. movq mm1,mm4
  146. pxor mm5,mm6
  147. psrlq mm1,14
  148. movq QWORD PTR 32[esp],mm4
  149. pand mm5,mm4
  150. psllq mm4,23
  151. movq mm0,mm3
  152. movq QWORD PTR 72[esp],mm7
  153. movq mm3,mm1
  154. psrlq mm1,4
  155. pxor mm5,mm6
  156. pxor mm3,mm4
  157. psllq mm4,23
  158. pxor mm3,mm1
  159. movq QWORD PTR [esp],mm0
  160. paddq mm7,mm5
  161. pxor mm3,mm4
  162. psrlq mm1,23
  163. paddq mm7,QWORD PTR 56[esp]
  164. pxor mm3,mm1
  165. psllq mm4,4
  166. paddq mm7,QWORD PTR [ebp]
  167. pxor mm3,mm4
  168. movq mm4,QWORD PTR 24[esp]
  169. paddq mm3,mm7
  170. movq mm5,mm0
  171. psrlq mm5,28
  172. paddq mm4,mm3
  173. movq mm6,mm0
  174. movq mm7,mm5
  175. psllq mm6,25
  176. movq mm1,QWORD PTR 8[esp]
  177. psrlq mm5,6
  178. pxor mm7,mm6
  179. sub esp,8
  180. psllq mm6,5
  181. pxor mm7,mm5
  182. pxor mm0,mm1
  183. psrlq mm5,5
  184. pxor mm7,mm6
  185. pand mm2,mm0
  186. psllq mm6,6
  187. pxor mm7,mm5
  188. pxor mm2,mm1
  189. pxor mm6,mm7
  190. movq mm7,QWORD PTR 192[esp]
  191. paddq mm3,mm2
  192. movq mm2,mm0
  193. add ebp,8
  194. paddq mm3,mm6
  195. pxor mm0,mm0
  196. mov edx,32
  197. jmp $L00616_79_sse2
  198. ALIGN 16
  199. $L00616_79_sse2:
  200. movq mm5,QWORD PTR 88[esp]
  201. movq mm1,mm7
  202. psrlq mm7,1
  203. movq mm6,mm5
  204. psrlq mm5,6
  205. psllq mm1,56
  206. paddq mm0,mm3
  207. movq mm3,mm7
  208. psrlq mm7,6
  209. pxor mm3,mm1
  210. psllq mm1,7
  211. pxor mm3,mm7
  212. psrlq mm7,1
  213. pxor mm3,mm1
  214. movq mm1,mm5
  215. psrlq mm5,13
  216. pxor mm7,mm3
  217. psllq mm6,3
  218. pxor mm1,mm5
  219. paddq mm7,QWORD PTR 200[esp]
  220. pxor mm1,mm6
  221. psrlq mm5,42
  222. paddq mm7,QWORD PTR 128[esp]
  223. pxor mm1,mm5
  224. psllq mm6,42
  225. movq mm5,QWORD PTR 40[esp]
  226. pxor mm1,mm6
  227. movq mm6,QWORD PTR 48[esp]
  228. paddq mm7,mm1
  229. movq mm1,mm4
  230. pxor mm5,mm6
  231. psrlq mm1,14
  232. movq QWORD PTR 32[esp],mm4
  233. pand mm5,mm4
  234. psllq mm4,23
  235. movq QWORD PTR 72[esp],mm7
  236. movq mm3,mm1
  237. psrlq mm1,4
  238. pxor mm5,mm6
  239. pxor mm3,mm4
  240. psllq mm4,23
  241. pxor mm3,mm1
  242. movq QWORD PTR [esp],mm0
  243. paddq mm7,mm5
  244. pxor mm3,mm4
  245. psrlq mm1,23
  246. paddq mm7,QWORD PTR 56[esp]
  247. pxor mm3,mm1
  248. psllq mm4,4
  249. paddq mm7,QWORD PTR [ebp]
  250. pxor mm3,mm4
  251. movq mm4,QWORD PTR 24[esp]
  252. paddq mm3,mm7
  253. movq mm5,mm0
  254. psrlq mm5,28
  255. paddq mm4,mm3
  256. movq mm6,mm0
  257. movq mm7,mm5
  258. psllq mm6,25
  259. movq mm1,QWORD PTR 8[esp]
  260. psrlq mm5,6
  261. pxor mm7,mm6
  262. sub esp,8
  263. psllq mm6,5
  264. pxor mm7,mm5
  265. pxor mm0,mm1
  266. psrlq mm5,5
  267. pxor mm7,mm6
  268. pand mm2,mm0
  269. psllq mm6,6
  270. pxor mm7,mm5
  271. pxor mm2,mm1
  272. pxor mm6,mm7
  273. movq mm7,QWORD PTR 192[esp]
  274. paddq mm2,mm6
  275. add ebp,8
  276. movq mm5,QWORD PTR 88[esp]
  277. movq mm1,mm7
  278. psrlq mm7,1
  279. movq mm6,mm5
  280. psrlq mm5,6
  281. psllq mm1,56
  282. paddq mm2,mm3
  283. movq mm3,mm7
  284. psrlq mm7,6
  285. pxor mm3,mm1
  286. psllq mm1,7
  287. pxor mm3,mm7
  288. psrlq mm7,1
  289. pxor mm3,mm1
  290. movq mm1,mm5
  291. psrlq mm5,13
  292. pxor mm7,mm3
  293. psllq mm6,3
  294. pxor mm1,mm5
  295. paddq mm7,QWORD PTR 200[esp]
  296. pxor mm1,mm6
  297. psrlq mm5,42
  298. paddq mm7,QWORD PTR 128[esp]
  299. pxor mm1,mm5
  300. psllq mm6,42
  301. movq mm5,QWORD PTR 40[esp]
  302. pxor mm1,mm6
  303. movq mm6,QWORD PTR 48[esp]
  304. paddq mm7,mm1
  305. movq mm1,mm4
  306. pxor mm5,mm6
  307. psrlq mm1,14
  308. movq QWORD PTR 32[esp],mm4
  309. pand mm5,mm4
  310. psllq mm4,23
  311. movq QWORD PTR 72[esp],mm7
  312. movq mm3,mm1
  313. psrlq mm1,4
  314. pxor mm5,mm6
  315. pxor mm3,mm4
  316. psllq mm4,23
  317. pxor mm3,mm1
  318. movq QWORD PTR [esp],mm2
  319. paddq mm7,mm5
  320. pxor mm3,mm4
  321. psrlq mm1,23
  322. paddq mm7,QWORD PTR 56[esp]
  323. pxor mm3,mm1
  324. psllq mm4,4
  325. paddq mm7,QWORD PTR [ebp]
  326. pxor mm3,mm4
  327. movq mm4,QWORD PTR 24[esp]
  328. paddq mm3,mm7
  329. movq mm5,mm2
  330. psrlq mm5,28
  331. paddq mm4,mm3
  332. movq mm6,mm2
  333. movq mm7,mm5
  334. psllq mm6,25
  335. movq mm1,QWORD PTR 8[esp]
  336. psrlq mm5,6
  337. pxor mm7,mm6
  338. sub esp,8
  339. psllq mm6,5
  340. pxor mm7,mm5
  341. pxor mm2,mm1
  342. psrlq mm5,5
  343. pxor mm7,mm6
  344. pand mm0,mm2
  345. psllq mm6,6
  346. pxor mm7,mm5
  347. pxor mm0,mm1
  348. pxor mm6,mm7
  349. movq mm7,QWORD PTR 192[esp]
  350. paddq mm0,mm6
  351. add ebp,8
  352. dec edx
  353. jnz $L00616_79_sse2
  354. paddq mm0,mm3
  355. movq mm1,QWORD PTR 8[esp]
  356. movq mm3,QWORD PTR 24[esp]
  357. movq mm5,QWORD PTR 40[esp]
  358. movq mm6,QWORD PTR 48[esp]
  359. movq mm7,QWORD PTR 56[esp]
  360. pxor mm2,mm1
  361. paddq mm0,QWORD PTR [esi]
  362. paddq mm1,QWORD PTR 8[esi]
  363. paddq mm2,QWORD PTR 16[esi]
  364. paddq mm3,QWORD PTR 24[esi]
  365. paddq mm4,QWORD PTR 32[esi]
  366. paddq mm5,QWORD PTR 40[esi]
  367. paddq mm6,QWORD PTR 48[esi]
  368. paddq mm7,QWORD PTR 56[esi]
  369. mov eax,640
  370. movq QWORD PTR [esi],mm0
  371. movq QWORD PTR 8[esi],mm1
  372. movq QWORD PTR 16[esi],mm2
  373. movq QWORD PTR 24[esi],mm3
  374. movq QWORD PTR 32[esi],mm4
  375. movq QWORD PTR 40[esi],mm5
  376. movq QWORD PTR 48[esi],mm6
  377. movq QWORD PTR 56[esi],mm7
  378. lea esp,DWORD PTR [eax*1+esp]
  379. sub ebp,eax
  380. cmp edi,DWORD PTR 88[esp]
  381. jb $L004loop_sse2
  382. mov esp,DWORD PTR 92[esp]
  383. emms
  384. pop edi
  385. pop esi
  386. pop ebx
  387. pop ebp
  388. ret
  389. ALIGN 32
  390. $L003SSSE3:
  391. lea edx,DWORD PTR [esp-64]
  392. sub esp,256
  393. movdqa xmm1,XMMWORD PTR 640[ebp]
  394. movdqu xmm0,XMMWORD PTR [edi]
  395. DB 102,15,56,0,193
  396. movdqa xmm3,XMMWORD PTR [ebp]
  397. movdqa xmm2,xmm1
  398. movdqu xmm1,XMMWORD PTR 16[edi]
  399. paddq xmm3,xmm0
  400. DB 102,15,56,0,202
  401. movdqa XMMWORD PTR [edx-128],xmm3
  402. movdqa xmm4,XMMWORD PTR 16[ebp]
  403. movdqa xmm3,xmm2
  404. movdqu xmm2,XMMWORD PTR 32[edi]
  405. paddq xmm4,xmm1
  406. DB 102,15,56,0,211
  407. movdqa XMMWORD PTR [edx-112],xmm4
  408. movdqa xmm5,XMMWORD PTR 32[ebp]
  409. movdqa xmm4,xmm3
  410. movdqu xmm3,XMMWORD PTR 48[edi]
  411. paddq xmm5,xmm2
  412. DB 102,15,56,0,220
  413. movdqa XMMWORD PTR [edx-96],xmm5
  414. movdqa xmm6,XMMWORD PTR 48[ebp]
  415. movdqa xmm5,xmm4
  416. movdqu xmm4,XMMWORD PTR 64[edi]
  417. paddq xmm6,xmm3
  418. DB 102,15,56,0,229
  419. movdqa XMMWORD PTR [edx-80],xmm6
  420. movdqa xmm7,XMMWORD PTR 64[ebp]
  421. movdqa xmm6,xmm5
  422. movdqu xmm5,XMMWORD PTR 80[edi]
  423. paddq xmm7,xmm4
  424. DB 102,15,56,0,238
  425. movdqa XMMWORD PTR [edx-64],xmm7
  426. movdqa XMMWORD PTR [edx],xmm0
  427. movdqa xmm0,XMMWORD PTR 80[ebp]
  428. movdqa xmm7,xmm6
  429. movdqu xmm6,XMMWORD PTR 96[edi]
  430. paddq xmm0,xmm5
  431. DB 102,15,56,0,247
  432. movdqa XMMWORD PTR [edx-48],xmm0
  433. movdqa XMMWORD PTR 16[edx],xmm1
  434. movdqa xmm1,XMMWORD PTR 96[ebp]
  435. movdqa xmm0,xmm7
  436. movdqu xmm7,XMMWORD PTR 112[edi]
  437. paddq xmm1,xmm6
  438. DB 102,15,56,0,248
  439. movdqa XMMWORD PTR [edx-32],xmm1
  440. movdqa XMMWORD PTR 32[edx],xmm2
  441. movdqa xmm2,XMMWORD PTR 112[ebp]
  442. movdqa xmm0,XMMWORD PTR [edx]
  443. paddq xmm2,xmm7
  444. movdqa XMMWORD PTR [edx-16],xmm2
  445. nop
  446. ALIGN 32
  447. $L007loop_ssse3:
  448. movdqa xmm2,XMMWORD PTR 16[edx]
  449. movdqa XMMWORD PTR 48[edx],xmm3
  450. lea ebp,DWORD PTR 128[ebp]
  451. movq QWORD PTR 8[esp],mm1
  452. mov ebx,edi
  453. movq QWORD PTR 16[esp],mm2
  454. lea edi,DWORD PTR 128[edi]
  455. movq QWORD PTR 24[esp],mm3
  456. cmp edi,eax
  457. movq QWORD PTR 40[esp],mm5
  458. cmovb ebx,edi
  459. movq QWORD PTR 48[esp],mm6
  460. mov ecx,4
  461. pxor mm2,mm1
  462. movq QWORD PTR 56[esp],mm7
  463. pxor mm3,mm3
  464. jmp $L00800_47_ssse3
  465. ALIGN 32
  466. $L00800_47_ssse3:
  467. movdqa xmm3,xmm5
  468. movdqa xmm1,xmm2
  469. DB 102,15,58,15,208,8
  470. movdqa XMMWORD PTR [edx],xmm4
  471. DB 102,15,58,15,220,8
  472. movdqa xmm4,xmm2
  473. psrlq xmm2,7
  474. paddq xmm0,xmm3
  475. movdqa xmm3,xmm4
  476. psrlq xmm4,1
  477. psllq xmm3,56
  478. pxor xmm2,xmm4
  479. psrlq xmm4,7
  480. pxor xmm2,xmm3
  481. psllq xmm3,7
  482. pxor xmm2,xmm4
  483. movdqa xmm4,xmm7
  484. pxor xmm2,xmm3
  485. movdqa xmm3,xmm7
  486. psrlq xmm4,6
  487. paddq xmm0,xmm2
  488. movdqa xmm2,xmm7
  489. psrlq xmm3,19
  490. psllq xmm2,3
  491. pxor xmm4,xmm3
  492. psrlq xmm3,42
  493. pxor xmm4,xmm2
  494. psllq xmm2,42
  495. pxor xmm4,xmm3
  496. movdqa xmm3,XMMWORD PTR 32[edx]
  497. pxor xmm4,xmm2
  498. movdqa xmm2,XMMWORD PTR [ebp]
  499. movq mm1,mm4
  500. paddq xmm0,xmm4
  501. movq mm7,QWORD PTR [edx-128]
  502. pxor mm5,mm6
  503. psrlq mm1,14
  504. movq QWORD PTR 32[esp],mm4
  505. paddq xmm2,xmm0
  506. pand mm5,mm4
  507. psllq mm4,23
  508. paddq mm0,mm3
  509. movq mm3,mm1
  510. psrlq mm1,4
  511. pxor mm5,mm6
  512. pxor mm3,mm4
  513. psllq mm4,23
  514. pxor mm3,mm1
  515. movq QWORD PTR [esp],mm0
  516. paddq mm7,mm5
  517. pxor mm3,mm4
  518. psrlq mm1,23
  519. paddq mm7,QWORD PTR 56[esp]
  520. pxor mm3,mm1
  521. psllq mm4,4
  522. pxor mm3,mm4
  523. movq mm4,QWORD PTR 24[esp]
  524. paddq mm3,mm7
  525. movq mm5,mm0
  526. psrlq mm5,28
  527. paddq mm4,mm3
  528. movq mm6,mm0
  529. movq mm7,mm5
  530. psllq mm6,25
  531. movq mm1,QWORD PTR 8[esp]
  532. psrlq mm5,6
  533. pxor mm7,mm6
  534. psllq mm6,5
  535. pxor mm7,mm5
  536. pxor mm0,mm1
  537. psrlq mm5,5
  538. pxor mm7,mm6
  539. pand mm2,mm0
  540. psllq mm6,6
  541. pxor mm7,mm5
  542. pxor mm2,mm1
  543. pxor mm6,mm7
  544. movq mm5,QWORD PTR 32[esp]
  545. paddq mm2,mm6
  546. movq mm6,QWORD PTR 40[esp]
  547. movq mm1,mm4
  548. movq mm7,QWORD PTR [edx-120]
  549. pxor mm5,mm6
  550. psrlq mm1,14
  551. movq QWORD PTR 24[esp],mm4
  552. pand mm5,mm4
  553. psllq mm4,23
  554. paddq mm2,mm3
  555. movq mm3,mm1
  556. psrlq mm1,4
  557. pxor mm5,mm6
  558. pxor mm3,mm4
  559. psllq mm4,23
  560. pxor mm3,mm1
  561. movq QWORD PTR 56[esp],mm2
  562. paddq mm7,mm5
  563. pxor mm3,mm4
  564. psrlq mm1,23
  565. paddq mm7,QWORD PTR 48[esp]
  566. pxor mm3,mm1
  567. psllq mm4,4
  568. pxor mm3,mm4
  569. movq mm4,QWORD PTR 16[esp]
  570. paddq mm3,mm7
  571. movq mm5,mm2
  572. psrlq mm5,28
  573. paddq mm4,mm3
  574. movq mm6,mm2
  575. movq mm7,mm5
  576. psllq mm6,25
  577. movq mm1,QWORD PTR [esp]
  578. psrlq mm5,6
  579. pxor mm7,mm6
  580. psllq mm6,5
  581. pxor mm7,mm5
  582. pxor mm2,mm1
  583. psrlq mm5,5
  584. pxor mm7,mm6
  585. pand mm0,mm2
  586. psllq mm6,6
  587. pxor mm7,mm5
  588. pxor mm0,mm1
  589. pxor mm6,mm7
  590. movq mm5,QWORD PTR 24[esp]
  591. paddq mm0,mm6
  592. movq mm6,QWORD PTR 32[esp]
  593. movdqa XMMWORD PTR [edx-128],xmm2
  594. movdqa xmm4,xmm6
  595. movdqa xmm2,xmm3
  596. DB 102,15,58,15,217,8
  597. movdqa XMMWORD PTR 16[edx],xmm5
  598. DB 102,15,58,15,229,8
  599. movdqa xmm5,xmm3
  600. psrlq xmm3,7
  601. paddq xmm1,xmm4
  602. movdqa xmm4,xmm5
  603. psrlq xmm5,1
  604. psllq xmm4,56
  605. pxor xmm3,xmm5
  606. psrlq xmm5,7
  607. pxor xmm3,xmm4
  608. psllq xmm4,7
  609. pxor xmm3,xmm5
  610. movdqa xmm5,xmm0
  611. pxor xmm3,xmm4
  612. movdqa xmm4,xmm0
  613. psrlq xmm5,6
  614. paddq xmm1,xmm3
  615. movdqa xmm3,xmm0
  616. psrlq xmm4,19
  617. psllq xmm3,3
  618. pxor xmm5,xmm4
  619. psrlq xmm4,42
  620. pxor xmm5,xmm3
  621. psllq xmm3,42
  622. pxor xmm5,xmm4
  623. movdqa xmm4,XMMWORD PTR 48[edx]
  624. pxor xmm5,xmm3
  625. movdqa xmm3,XMMWORD PTR 16[ebp]
  626. movq mm1,mm4
  627. paddq xmm1,xmm5
  628. movq mm7,QWORD PTR [edx-112]
  629. pxor mm5,mm6
  630. psrlq mm1,14
  631. movq QWORD PTR 16[esp],mm4
  632. paddq xmm3,xmm1
  633. pand mm5,mm4
  634. psllq mm4,23
  635. paddq mm0,mm3
  636. movq mm3,mm1
  637. psrlq mm1,4
  638. pxor mm5,mm6
  639. pxor mm3,mm4
  640. psllq mm4,23
  641. pxor mm3,mm1
  642. movq QWORD PTR 48[esp],mm0
  643. paddq mm7,mm5
  644. pxor mm3,mm4
  645. psrlq mm1,23
  646. paddq mm7,QWORD PTR 40[esp]
  647. pxor mm3,mm1
  648. psllq mm4,4
  649. pxor mm3,mm4
  650. movq mm4,QWORD PTR 8[esp]
  651. paddq mm3,mm7
  652. movq mm5,mm0
  653. psrlq mm5,28
  654. paddq mm4,mm3
  655. movq mm6,mm0
  656. movq mm7,mm5
  657. psllq mm6,25
  658. movq mm1,QWORD PTR 56[esp]
  659. psrlq mm5,6
  660. pxor mm7,mm6
  661. psllq mm6,5
  662. pxor mm7,mm5
  663. pxor mm0,mm1
  664. psrlq mm5,5
  665. pxor mm7,mm6
  666. pand mm2,mm0
  667. psllq mm6,6
  668. pxor mm7,mm5
  669. pxor mm2,mm1
  670. pxor mm6,mm7
  671. movq mm5,QWORD PTR 16[esp]
  672. paddq mm2,mm6
  673. movq mm6,QWORD PTR 24[esp]
  674. movq mm1,mm4
  675. movq mm7,QWORD PTR [edx-104]
  676. pxor mm5,mm6
  677. psrlq mm1,14
  678. movq QWORD PTR 8[esp],mm4
  679. pand mm5,mm4
  680. psllq mm4,23
  681. paddq mm2,mm3
  682. movq mm3,mm1
  683. psrlq mm1,4
  684. pxor mm5,mm6
  685. pxor mm3,mm4
  686. psllq mm4,23
  687. pxor mm3,mm1
  688. movq QWORD PTR 40[esp],mm2
  689. paddq mm7,mm5
  690. pxor mm3,mm4
  691. psrlq mm1,23
  692. paddq mm7,QWORD PTR 32[esp]
  693. pxor mm3,mm1
  694. psllq mm4,4
  695. pxor mm3,mm4
  696. movq mm4,QWORD PTR [esp]
  697. paddq mm3,mm7
  698. movq mm5,mm2
  699. psrlq mm5,28
  700. paddq mm4,mm3
  701. movq mm6,mm2
  702. movq mm7,mm5
  703. psllq mm6,25
  704. movq mm1,QWORD PTR 48[esp]
  705. psrlq mm5,6
  706. pxor mm7,mm6
  707. psllq mm6,5
  708. pxor mm7,mm5
  709. pxor mm2,mm1
  710. psrlq mm5,5
  711. pxor mm7,mm6
  712. pand mm0,mm2
  713. psllq mm6,6
  714. pxor mm7,mm5
  715. pxor mm0,mm1
  716. pxor mm6,mm7
  717. movq mm5,QWORD PTR 8[esp]
  718. paddq mm0,mm6
  719. movq mm6,QWORD PTR 16[esp]
  720. movdqa XMMWORD PTR [edx-112],xmm3
  721. movdqa xmm5,xmm7
  722. movdqa xmm3,xmm4
  723. DB 102,15,58,15,226,8
  724. movdqa XMMWORD PTR 32[edx],xmm6
  725. DB 102,15,58,15,238,8
  726. movdqa xmm6,xmm4
  727. psrlq xmm4,7
  728. paddq xmm2,xmm5
  729. movdqa xmm5,xmm6
  730. psrlq xmm6,1
  731. psllq xmm5,56
  732. pxor xmm4,xmm6
  733. psrlq xmm6,7
  734. pxor xmm4,xmm5
  735. psllq xmm5,7
  736. pxor xmm4,xmm6
  737. movdqa xmm6,xmm1
  738. pxor xmm4,xmm5
  739. movdqa xmm5,xmm1
  740. psrlq xmm6,6
  741. paddq xmm2,xmm4
  742. movdqa xmm4,xmm1
  743. psrlq xmm5,19
  744. psllq xmm4,3
  745. pxor xmm6,xmm5
  746. psrlq xmm5,42
  747. pxor xmm6,xmm4
  748. psllq xmm4,42
  749. pxor xmm6,xmm5
  750. movdqa xmm5,XMMWORD PTR [edx]
  751. pxor xmm6,xmm4
  752. movdqa xmm4,XMMWORD PTR 32[ebp]
  753. movq mm1,mm4
  754. paddq xmm2,xmm6
  755. movq mm7,QWORD PTR [edx-96]
  756. pxor mm5,mm6
  757. psrlq mm1,14
  758. movq QWORD PTR [esp],mm4
  759. paddq xmm4,xmm2
  760. pand mm5,mm4
  761. psllq mm4,23
  762. paddq mm0,mm3
  763. movq mm3,mm1
  764. psrlq mm1,4
  765. pxor mm5,mm6
  766. pxor mm3,mm4
  767. psllq mm4,23
  768. pxor mm3,mm1
  769. movq QWORD PTR 32[esp],mm0
  770. paddq mm7,mm5
  771. pxor mm3,mm4
  772. psrlq mm1,23
  773. paddq mm7,QWORD PTR 24[esp]
  774. pxor mm3,mm1
  775. psllq mm4,4
  776. pxor mm3,mm4
  777. movq mm4,QWORD PTR 56[esp]
  778. paddq mm3,mm7
  779. movq mm5,mm0
  780. psrlq mm5,28
  781. paddq mm4,mm3
  782. movq mm6,mm0
  783. movq mm7,mm5
  784. psllq mm6,25
  785. movq mm1,QWORD PTR 40[esp]
  786. psrlq mm5,6
  787. pxor mm7,mm6
  788. psllq mm6,5
  789. pxor mm7,mm5
  790. pxor mm0,mm1
  791. psrlq mm5,5
  792. pxor mm7,mm6
  793. pand mm2,mm0
  794. psllq mm6,6
  795. pxor mm7,mm5
  796. pxor mm2,mm1
  797. pxor mm6,mm7
  798. movq mm5,QWORD PTR [esp]
  799. paddq mm2,mm6
  800. movq mm6,QWORD PTR 8[esp]
  801. movq mm1,mm4
  802. movq mm7,QWORD PTR [edx-88]
  803. pxor mm5,mm6
  804. psrlq mm1,14
  805. movq QWORD PTR 56[esp],mm4
  806. pand mm5,mm4
  807. psllq mm4,23
  808. paddq mm2,mm3
  809. movq mm3,mm1
  810. psrlq mm1,4
  811. pxor mm5,mm6
  812. pxor mm3,mm4
  813. psllq mm4,23
  814. pxor mm3,mm1
  815. movq QWORD PTR 24[esp],mm2
  816. paddq mm7,mm5
  817. pxor mm3,mm4
  818. psrlq mm1,23
  819. paddq mm7,QWORD PTR 16[esp]
  820. pxor mm3,mm1
  821. psllq mm4,4
  822. pxor mm3,mm4
  823. movq mm4,QWORD PTR 48[esp]
  824. paddq mm3,mm7
  825. movq mm5,mm2
  826. psrlq mm5,28
  827. paddq mm4,mm3
  828. movq mm6,mm2
  829. movq mm7,mm5
  830. psllq mm6,25
  831. movq mm1,QWORD PTR 32[esp]
  832. psrlq mm5,6
  833. pxor mm7,mm6
  834. psllq mm6,5
  835. pxor mm7,mm5
  836. pxor mm2,mm1
  837. psrlq mm5,5
  838. pxor mm7,mm6
  839. pand mm0,mm2
  840. psllq mm6,6
  841. pxor mm7,mm5
  842. pxor mm0,mm1
  843. pxor mm6,mm7
  844. movq mm5,QWORD PTR 56[esp]
  845. paddq mm0,mm6
  846. movq mm6,QWORD PTR [esp]
  847. movdqa XMMWORD PTR [edx-96],xmm4
  848. movdqa xmm6,xmm0
  849. movdqa xmm4,xmm5
  850. DB 102,15,58,15,235,8
  851. movdqa XMMWORD PTR 48[edx],xmm7
  852. DB 102,15,58,15,247,8
  853. movdqa xmm7,xmm5
  854. psrlq xmm5,7
  855. paddq xmm3,xmm6
  856. movdqa xmm6,xmm7
  857. psrlq xmm7,1
  858. psllq xmm6,56
  859. pxor xmm5,xmm7
  860. psrlq xmm7,7
  861. pxor xmm5,xmm6
  862. psllq xmm6,7
  863. pxor xmm5,xmm7
  864. movdqa xmm7,xmm2
  865. pxor xmm5,xmm6
  866. movdqa xmm6,xmm2
  867. psrlq xmm7,6
  868. paddq xmm3,xmm5
  869. movdqa xmm5,xmm2
  870. psrlq xmm6,19
  871. psllq xmm5,3
  872. pxor xmm7,xmm6
  873. psrlq xmm6,42
  874. pxor xmm7,xmm5
  875. psllq xmm5,42
  876. pxor xmm7,xmm6
  877. movdqa xmm6,XMMWORD PTR 16[edx]
  878. pxor xmm7,xmm5
  879. movdqa xmm5,XMMWORD PTR 48[ebp]
  880. movq mm1,mm4
  881. paddq xmm3,xmm7
  882. movq mm7,QWORD PTR [edx-80]
  883. pxor mm5,mm6
  884. psrlq mm1,14
  885. movq QWORD PTR 48[esp],mm4
  886. paddq xmm5,xmm3
  887. pand mm5,mm4
  888. psllq mm4,23
  889. paddq mm0,mm3
  890. movq mm3,mm1
  891. psrlq mm1,4
  892. pxor mm5,mm6
  893. pxor mm3,mm4
  894. psllq mm4,23
  895. pxor mm3,mm1
  896. movq QWORD PTR 16[esp],mm0
  897. paddq mm7,mm5
  898. pxor mm3,mm4
  899. psrlq mm1,23
  900. paddq mm7,QWORD PTR 8[esp]
  901. pxor mm3,mm1
  902. psllq mm4,4
  903. pxor mm3,mm4
  904. movq mm4,QWORD PTR 40[esp]
  905. paddq mm3,mm7
  906. movq mm5,mm0
  907. psrlq mm5,28
  908. paddq mm4,mm3
  909. movq mm6,mm0
  910. movq mm7,mm5
  911. psllq mm6,25
  912. movq mm1,QWORD PTR 24[esp]
  913. psrlq mm5,6
  914. pxor mm7,mm6
  915. psllq mm6,5
  916. pxor mm7,mm5
  917. pxor mm0,mm1
  918. psrlq mm5,5
  919. pxor mm7,mm6
  920. pand mm2,mm0
  921. psllq mm6,6
  922. pxor mm7,mm5
  923. pxor mm2,mm1
  924. pxor mm6,mm7
  925. movq mm5,QWORD PTR 48[esp]
  926. paddq mm2,mm6
  927. movq mm6,QWORD PTR 56[esp]
  928. movq mm1,mm4
  929. movq mm7,QWORD PTR [edx-72]
  930. pxor mm5,mm6
  931. psrlq mm1,14
  932. movq QWORD PTR 40[esp],mm4
  933. pand mm5,mm4
  934. psllq mm4,23
  935. paddq mm2,mm3
  936. movq mm3,mm1
  937. psrlq mm1,4
  938. pxor mm5,mm6
  939. pxor mm3,mm4
  940. psllq mm4,23
  941. pxor mm3,mm1
  942. movq QWORD PTR 8[esp],mm2
  943. paddq mm7,mm5
  944. pxor mm3,mm4
  945. psrlq mm1,23
  946. paddq mm7,QWORD PTR [esp]
  947. pxor mm3,mm1
  948. psllq mm4,4
  949. pxor mm3,mm4
  950. movq mm4,QWORD PTR 32[esp]
  951. paddq mm3,mm7
  952. movq mm5,mm2
  953. psrlq mm5,28
  954. paddq mm4,mm3
  955. movq mm6,mm2
  956. movq mm7,mm5
  957. psllq mm6,25
  958. movq mm1,QWORD PTR 16[esp]
  959. psrlq mm5,6
  960. pxor mm7,mm6
  961. psllq mm6,5
  962. pxor mm7,mm5
  963. pxor mm2,mm1
  964. psrlq mm5,5
  965. pxor mm7,mm6
  966. pand mm0,mm2
  967. psllq mm6,6
  968. pxor mm7,mm5
  969. pxor mm0,mm1
  970. pxor mm6,mm7
  971. movq mm5,QWORD PTR 40[esp]
  972. paddq mm0,mm6
  973. movq mm6,QWORD PTR 48[esp]
  974. movdqa XMMWORD PTR [edx-80],xmm5
  975. movdqa xmm7,xmm1
  976. movdqa xmm5,xmm6
  977. DB 102,15,58,15,244,8
  978. movdqa XMMWORD PTR [edx],xmm0
  979. DB 102,15,58,15,248,8
  980. movdqa xmm0,xmm6
  981. psrlq xmm6,7
  982. paddq xmm4,xmm7
  983. movdqa xmm7,xmm0
  984. psrlq xmm0,1
  985. psllq xmm7,56
  986. pxor xmm6,xmm0
  987. psrlq xmm0,7
  988. pxor xmm6,xmm7
  989. psllq xmm7,7
  990. pxor xmm6,xmm0
  991. movdqa xmm0,xmm3
  992. pxor xmm6,xmm7
  993. movdqa xmm7,xmm3
  994. psrlq xmm0,6
  995. paddq xmm4,xmm6
  996. movdqa xmm6,xmm3
  997. psrlq xmm7,19
  998. psllq xmm6,3
  999. pxor xmm0,xmm7
  1000. psrlq xmm7,42
  1001. pxor xmm0,xmm6
  1002. psllq xmm6,42
  1003. pxor xmm0,xmm7
  1004. movdqa xmm7,XMMWORD PTR 32[edx]
  1005. pxor xmm0,xmm6
  1006. movdqa xmm6,XMMWORD PTR 64[ebp]
  1007. movq mm1,mm4
  1008. paddq xmm4,xmm0
  1009. movq mm7,QWORD PTR [edx-64]
  1010. pxor mm5,mm6
  1011. psrlq mm1,14
  1012. movq QWORD PTR 32[esp],mm4
  1013. paddq xmm6,xmm4
  1014. pand mm5,mm4
  1015. psllq mm4,23
  1016. paddq mm0,mm3
  1017. movq mm3,mm1
  1018. psrlq mm1,4
  1019. pxor mm5,mm6
  1020. pxor mm3,mm4
  1021. psllq mm4,23
  1022. pxor mm3,mm1
  1023. movq QWORD PTR [esp],mm0
  1024. paddq mm7,mm5
  1025. pxor mm3,mm4
  1026. psrlq mm1,23
  1027. paddq mm7,QWORD PTR 56[esp]
  1028. pxor mm3,mm1
  1029. psllq mm4,4
  1030. pxor mm3,mm4
  1031. movq mm4,QWORD PTR 24[esp]
  1032. paddq mm3,mm7
  1033. movq mm5,mm0
  1034. psrlq mm5,28
  1035. paddq mm4,mm3
  1036. movq mm6,mm0
  1037. movq mm7,mm5
  1038. psllq mm6,25
  1039. movq mm1,QWORD PTR 8[esp]
  1040. psrlq mm5,6
  1041. pxor mm7,mm6
  1042. psllq mm6,5
  1043. pxor mm7,mm5
  1044. pxor mm0,mm1
  1045. psrlq mm5,5
  1046. pxor mm7,mm6
  1047. pand mm2,mm0
  1048. psllq mm6,6
  1049. pxor mm7,mm5
  1050. pxor mm2,mm1
  1051. pxor mm6,mm7
  1052. movq mm5,QWORD PTR 32[esp]
  1053. paddq mm2,mm6
  1054. movq mm6,QWORD PTR 40[esp]
  1055. movq mm1,mm4
  1056. movq mm7,QWORD PTR [edx-56]
  1057. pxor mm5,mm6
  1058. psrlq mm1,14
  1059. movq QWORD PTR 24[esp],mm4
  1060. pand mm5,mm4
  1061. psllq mm4,23
  1062. paddq mm2,mm3
  1063. movq mm3,mm1
  1064. psrlq mm1,4
  1065. pxor mm5,mm6
  1066. pxor mm3,mm4
  1067. psllq mm4,23
  1068. pxor mm3,mm1
  1069. movq QWORD PTR 56[esp],mm2
  1070. paddq mm7,mm5
  1071. pxor mm3,mm4
  1072. psrlq mm1,23
  1073. paddq mm7,QWORD PTR 48[esp]
  1074. pxor mm3,mm1
  1075. psllq mm4,4
  1076. pxor mm3,mm4
  1077. movq mm4,QWORD PTR 16[esp]
  1078. paddq mm3,mm7
  1079. movq mm5,mm2
  1080. psrlq mm5,28
  1081. paddq mm4,mm3
  1082. movq mm6,mm2
  1083. movq mm7,mm5
  1084. psllq mm6,25
  1085. movq mm1,QWORD PTR [esp]
  1086. psrlq mm5,6
  1087. pxor mm7,mm6
  1088. psllq mm6,5
  1089. pxor mm7,mm5
  1090. pxor mm2,mm1
  1091. psrlq mm5,5
  1092. pxor mm7,mm6
  1093. pand mm0,mm2
  1094. psllq mm6,6
  1095. pxor mm7,mm5
  1096. pxor mm0,mm1
  1097. pxor mm6,mm7
  1098. movq mm5,QWORD PTR 24[esp]
  1099. paddq mm0,mm6
  1100. movq mm6,QWORD PTR 32[esp]
  1101. movdqa XMMWORD PTR [edx-64],xmm6
  1102. movdqa xmm0,xmm2
  1103. movdqa xmm6,xmm7
  1104. DB 102,15,58,15,253,8
  1105. movdqa XMMWORD PTR 16[edx],xmm1
  1106. DB 102,15,58,15,193,8
  1107. movdqa xmm1,xmm7
  1108. psrlq xmm7,7
  1109. paddq xmm5,xmm0
  1110. movdqa xmm0,xmm1
  1111. psrlq xmm1,1
  1112. psllq xmm0,56
  1113. pxor xmm7,xmm1
  1114. psrlq xmm1,7
  1115. pxor xmm7,xmm0
  1116. psllq xmm0,7
  1117. pxor xmm7,xmm1
  1118. movdqa xmm1,xmm4
  1119. pxor xmm7,xmm0
  1120. movdqa xmm0,xmm4
  1121. psrlq xmm1,6
  1122. paddq xmm5,xmm7
  1123. movdqa xmm7,xmm4
  1124. psrlq xmm0,19
  1125. psllq xmm7,3
  1126. pxor xmm1,xmm0
  1127. psrlq xmm0,42
  1128. pxor xmm1,xmm7
  1129. psllq xmm7,42
  1130. pxor xmm1,xmm0
  1131. movdqa xmm0,XMMWORD PTR 48[edx]
  1132. pxor xmm1,xmm7
  1133. movdqa xmm7,XMMWORD PTR 80[ebp]
  1134. movq mm1,mm4
  1135. paddq xmm5,xmm1
  1136. movq mm7,QWORD PTR [edx-48]
  1137. pxor mm5,mm6
  1138. psrlq mm1,14
  1139. movq QWORD PTR 16[esp],mm4
  1140. paddq xmm7,xmm5
  1141. pand mm5,mm4
  1142. psllq mm4,23
  1143. paddq mm0,mm3
  1144. movq mm3,mm1
  1145. psrlq mm1,4
  1146. pxor mm5,mm6
  1147. pxor mm3,mm4
  1148. psllq mm4,23
  1149. pxor mm3,mm1
  1150. movq QWORD PTR 48[esp],mm0
  1151. paddq mm7,mm5
  1152. pxor mm3,mm4
  1153. psrlq mm1,23
  1154. paddq mm7,QWORD PTR 40[esp]
  1155. pxor mm3,mm1
  1156. psllq mm4,4
  1157. pxor mm3,mm4
  1158. movq mm4,QWORD PTR 8[esp]
  1159. paddq mm3,mm7
  1160. movq mm5,mm0
  1161. psrlq mm5,28
  1162. paddq mm4,mm3
  1163. movq mm6,mm0
  1164. movq mm7,mm5
  1165. psllq mm6,25
  1166. movq mm1,QWORD PTR 56[esp]
  1167. psrlq mm5,6
  1168. pxor mm7,mm6
  1169. psllq mm6,5
  1170. pxor mm7,mm5
  1171. pxor mm0,mm1
  1172. psrlq mm5,5
  1173. pxor mm7,mm6
  1174. pand mm2,mm0
  1175. psllq mm6,6
  1176. pxor mm7,mm5
  1177. pxor mm2,mm1
  1178. pxor mm6,mm7
  1179. movq mm5,QWORD PTR 16[esp]
  1180. paddq mm2,mm6
  1181. movq mm6,QWORD PTR 24[esp]
  1182. movq mm1,mm4
  1183. movq mm7,QWORD PTR [edx-40]
  1184. pxor mm5,mm6
  1185. psrlq mm1,14
  1186. movq QWORD PTR 8[esp],mm4
  1187. pand mm5,mm4
  1188. psllq mm4,23
  1189. paddq mm2,mm3
  1190. movq mm3,mm1
  1191. psrlq mm1,4
  1192. pxor mm5,mm6
  1193. pxor mm3,mm4
  1194. psllq mm4,23
  1195. pxor mm3,mm1
  1196. movq QWORD PTR 40[esp],mm2
  1197. paddq mm7,mm5
  1198. pxor mm3,mm4
  1199. psrlq mm1,23
  1200. paddq mm7,QWORD PTR 32[esp]
  1201. pxor mm3,mm1
  1202. psllq mm4,4
  1203. pxor mm3,mm4
  1204. movq mm4,QWORD PTR [esp]
  1205. paddq mm3,mm7
  1206. movq mm5,mm2
  1207. psrlq mm5,28
  1208. paddq mm4,mm3
  1209. movq mm6,mm2
  1210. movq mm7,mm5
  1211. psllq mm6,25
  1212. movq mm1,QWORD PTR 48[esp]
  1213. psrlq mm5,6
  1214. pxor mm7,mm6
  1215. psllq mm6,5
  1216. pxor mm7,mm5
  1217. pxor mm2,mm1
  1218. psrlq mm5,5
  1219. pxor mm7,mm6
  1220. pand mm0,mm2
  1221. psllq mm6,6
  1222. pxor mm7,mm5
  1223. pxor mm0,mm1
  1224. pxor mm6,mm7
  1225. movq mm5,QWORD PTR 8[esp]
  1226. paddq mm0,mm6
  1227. movq mm6,QWORD PTR 16[esp]
  1228. movdqa XMMWORD PTR [edx-48],xmm7
  1229. movdqa xmm1,xmm3
  1230. movdqa xmm7,xmm0
  1231. DB 102,15,58,15,198,8
  1232. movdqa XMMWORD PTR 32[edx],xmm2
  1233. DB 102,15,58,15,202,8
  1234. movdqa xmm2,xmm0
  1235. psrlq xmm0,7
  1236. paddq xmm6,xmm1
  1237. movdqa xmm1,xmm2
  1238. psrlq xmm2,1
  1239. psllq xmm1,56
  1240. pxor xmm0,xmm2
  1241. psrlq xmm2,7
  1242. pxor xmm0,xmm1
  1243. psllq xmm1,7
  1244. pxor xmm0,xmm2
  1245. movdqa xmm2,xmm5
  1246. pxor xmm0,xmm1
  1247. movdqa xmm1,xmm5
  1248. psrlq xmm2,6
  1249. paddq xmm6,xmm0
  1250. movdqa xmm0,xmm5
  1251. psrlq xmm1,19
  1252. psllq xmm0,3
  1253. pxor xmm2,xmm1
  1254. psrlq xmm1,42
  1255. pxor xmm2,xmm0
  1256. psllq xmm0,42
  1257. pxor xmm2,xmm1
  1258. movdqa xmm1,XMMWORD PTR [edx]
  1259. pxor xmm2,xmm0
  1260. movdqa xmm0,XMMWORD PTR 96[ebp]
  1261. movq mm1,mm4
  1262. paddq xmm6,xmm2
  1263. movq mm7,QWORD PTR [edx-32]
  1264. pxor mm5,mm6
  1265. psrlq mm1,14
  1266. movq QWORD PTR [esp],mm4
  1267. paddq xmm0,xmm6
  1268. pand mm5,mm4
  1269. psllq mm4,23
  1270. paddq mm0,mm3
  1271. movq mm3,mm1
  1272. psrlq mm1,4
  1273. pxor mm5,mm6
  1274. pxor mm3,mm4
  1275. psllq mm4,23
  1276. pxor mm3,mm1
  1277. movq QWORD PTR 32[esp],mm0
  1278. paddq mm7,mm5
  1279. pxor mm3,mm4
  1280. psrlq mm1,23
  1281. paddq mm7,QWORD PTR 24[esp]
  1282. pxor mm3,mm1
  1283. psllq mm4,4
  1284. pxor mm3,mm4
  1285. movq mm4,QWORD PTR 56[esp]
  1286. paddq mm3,mm7
  1287. movq mm5,mm0
  1288. psrlq mm5,28
  1289. paddq mm4,mm3
  1290. movq mm6,mm0
  1291. movq mm7,mm5
  1292. psllq mm6,25
  1293. movq mm1,QWORD PTR 40[esp]
  1294. psrlq mm5,6
  1295. pxor mm7,mm6
  1296. psllq mm6,5
  1297. pxor mm7,mm5
  1298. pxor mm0,mm1
  1299. psrlq mm5,5
  1300. pxor mm7,mm6
  1301. pand mm2,mm0
  1302. psllq mm6,6
  1303. pxor mm7,mm5
  1304. pxor mm2,mm1
  1305. pxor mm6,mm7
  1306. movq mm5,QWORD PTR [esp]
  1307. paddq mm2,mm6
  1308. movq mm6,QWORD PTR 8[esp]
  1309. movq mm1,mm4
  1310. movq mm7,QWORD PTR [edx-24]
  1311. pxor mm5,mm6
  1312. psrlq mm1,14
  1313. movq QWORD PTR 56[esp],mm4
  1314. pand mm5,mm4
  1315. psllq mm4,23
  1316. paddq mm2,mm3
  1317. movq mm3,mm1
  1318. psrlq mm1,4
  1319. pxor mm5,mm6
  1320. pxor mm3,mm4
  1321. psllq mm4,23
  1322. pxor mm3,mm1
  1323. movq QWORD PTR 24[esp],mm2
  1324. paddq mm7,mm5
  1325. pxor mm3,mm4
  1326. psrlq mm1,23
  1327. paddq mm7,QWORD PTR 16[esp]
  1328. pxor mm3,mm1
  1329. psllq mm4,4
  1330. pxor mm3,mm4
  1331. movq mm4,QWORD PTR 48[esp]
  1332. paddq mm3,mm7
  1333. movq mm5,mm2
  1334. psrlq mm5,28
  1335. paddq mm4,mm3
  1336. movq mm6,mm2
  1337. movq mm7,mm5
  1338. psllq mm6,25
  1339. movq mm1,QWORD PTR 32[esp]
  1340. psrlq mm5,6
  1341. pxor mm7,mm6
  1342. psllq mm6,5
  1343. pxor mm7,mm5
  1344. pxor mm2,mm1
  1345. psrlq mm5,5
  1346. pxor mm7,mm6
  1347. pand mm0,mm2
  1348. psllq mm6,6
  1349. pxor mm7,mm5
  1350. pxor mm0,mm1
  1351. pxor mm6,mm7
  1352. movq mm5,QWORD PTR 56[esp]
  1353. paddq mm0,mm6
  1354. movq mm6,QWORD PTR [esp]
  1355. movdqa XMMWORD PTR [edx-32],xmm0
  1356. movdqa xmm2,xmm4
  1357. movdqa xmm0,xmm1
  1358. DB 102,15,58,15,207,8
  1359. movdqa XMMWORD PTR 48[edx],xmm3
  1360. DB 102,15,58,15,211,8
  1361. movdqa xmm3,xmm1
  1362. psrlq xmm1,7
  1363. paddq xmm7,xmm2
  1364. movdqa xmm2,xmm3
  1365. psrlq xmm3,1
  1366. psllq xmm2,56
  1367. pxor xmm1,xmm3
  1368. psrlq xmm3,7
  1369. pxor xmm1,xmm2
  1370. psllq xmm2,7
  1371. pxor xmm1,xmm3
  1372. movdqa xmm3,xmm6
  1373. pxor xmm1,xmm2
  1374. movdqa xmm2,xmm6
  1375. psrlq xmm3,6
  1376. paddq xmm7,xmm1
  1377. movdqa xmm1,xmm6
  1378. psrlq xmm2,19
  1379. psllq xmm1,3
  1380. pxor xmm3,xmm2
  1381. psrlq xmm2,42
  1382. pxor xmm3,xmm1
  1383. psllq xmm1,42
  1384. pxor xmm3,xmm2
  1385. movdqa xmm2,XMMWORD PTR 16[edx]
  1386. pxor xmm3,xmm1
  1387. movdqa xmm1,XMMWORD PTR 112[ebp]
  1388. movq mm1,mm4
  1389. paddq xmm7,xmm3
  1390. movq mm7,QWORD PTR [edx-16]
  1391. pxor mm5,mm6
  1392. psrlq mm1,14
  1393. movq QWORD PTR 48[esp],mm4
  1394. paddq xmm1,xmm7
  1395. pand mm5,mm4
  1396. psllq mm4,23
  1397. paddq mm0,mm3
  1398. movq mm3,mm1
  1399. psrlq mm1,4
  1400. pxor mm5,mm6
  1401. pxor mm3,mm4
  1402. psllq mm4,23
  1403. pxor mm3,mm1
  1404. movq QWORD PTR 16[esp],mm0
  1405. paddq mm7,mm5
  1406. pxor mm3,mm4
  1407. psrlq mm1,23
  1408. paddq mm7,QWORD PTR 8[esp]
  1409. pxor mm3,mm1
  1410. psllq mm4,4
  1411. pxor mm3,mm4
  1412. movq mm4,QWORD PTR 40[esp]
  1413. paddq mm3,mm7
  1414. movq mm5,mm0
  1415. psrlq mm5,28
  1416. paddq mm4,mm3
  1417. movq mm6,mm0
  1418. movq mm7,mm5
  1419. psllq mm6,25
  1420. movq mm1,QWORD PTR 24[esp]
  1421. psrlq mm5,6
  1422. pxor mm7,mm6
  1423. psllq mm6,5
  1424. pxor mm7,mm5
  1425. pxor mm0,mm1
  1426. psrlq mm5,5
  1427. pxor mm7,mm6
  1428. pand mm2,mm0
  1429. psllq mm6,6
  1430. pxor mm7,mm5
  1431. pxor mm2,mm1
  1432. pxor mm6,mm7
  1433. movq mm5,QWORD PTR 48[esp]
  1434. paddq mm2,mm6
  1435. movq mm6,QWORD PTR 56[esp]
  1436. movq mm1,mm4
  1437. movq mm7,QWORD PTR [edx-8]
  1438. pxor mm5,mm6
  1439. psrlq mm1,14
  1440. movq QWORD PTR 40[esp],mm4
  1441. pand mm5,mm4
  1442. psllq mm4,23
  1443. paddq mm2,mm3
  1444. movq mm3,mm1
  1445. psrlq mm1,4
  1446. pxor mm5,mm6
  1447. pxor mm3,mm4
  1448. psllq mm4,23
  1449. pxor mm3,mm1
  1450. movq QWORD PTR 8[esp],mm2
  1451. paddq mm7,mm5
  1452. pxor mm3,mm4
  1453. psrlq mm1,23
  1454. paddq mm7,QWORD PTR [esp]
  1455. pxor mm3,mm1
  1456. psllq mm4,4
  1457. pxor mm3,mm4
  1458. movq mm4,QWORD PTR 32[esp]
  1459. paddq mm3,mm7
  1460. movq mm5,mm2
  1461. psrlq mm5,28
  1462. paddq mm4,mm3
  1463. movq mm6,mm2
  1464. movq mm7,mm5
  1465. psllq mm6,25
  1466. movq mm1,QWORD PTR 16[esp]
  1467. psrlq mm5,6
  1468. pxor mm7,mm6
  1469. psllq mm6,5
  1470. pxor mm7,mm5
  1471. pxor mm2,mm1
  1472. psrlq mm5,5
  1473. pxor mm7,mm6
  1474. pand mm0,mm2
  1475. psllq mm6,6
  1476. pxor mm7,mm5
  1477. pxor mm0,mm1
  1478. pxor mm6,mm7
  1479. movq mm5,QWORD PTR 40[esp]
  1480. paddq mm0,mm6
  1481. movq mm6,QWORD PTR 48[esp]
  1482. movdqa XMMWORD PTR [edx-16],xmm1
  1483. lea ebp,DWORD PTR 128[ebp]
  1484. dec ecx
  1485. jnz $L00800_47_ssse3
  1486. movdqa xmm1,XMMWORD PTR [ebp]
  1487. lea ebp,DWORD PTR [ebp-640]
  1488. movdqu xmm0,XMMWORD PTR [ebx]
  1489. DB 102,15,56,0,193
  1490. movdqa xmm3,XMMWORD PTR [ebp]
  1491. movdqa xmm2,xmm1
  1492. movdqu xmm1,XMMWORD PTR 16[ebx]
  1493. paddq xmm3,xmm0
  1494. DB 102,15,56,0,202
  1495. movq mm1,mm4
  1496. movq mm7,QWORD PTR [edx-128]
  1497. pxor mm5,mm6
  1498. psrlq mm1,14
  1499. movq QWORD PTR 32[esp],mm4
  1500. pand mm5,mm4
  1501. psllq mm4,23
  1502. paddq mm0,mm3
  1503. movq mm3,mm1
  1504. psrlq mm1,4
  1505. pxor mm5,mm6
  1506. pxor mm3,mm4
  1507. psllq mm4,23
  1508. pxor mm3,mm1
  1509. movq QWORD PTR [esp],mm0
  1510. paddq mm7,mm5
  1511. pxor mm3,mm4
  1512. psrlq mm1,23
  1513. paddq mm7,QWORD PTR 56[esp]
  1514. pxor mm3,mm1
  1515. psllq mm4,4
  1516. pxor mm3,mm4
  1517. movq mm4,QWORD PTR 24[esp]
  1518. paddq mm3,mm7
  1519. movq mm5,mm0
  1520. psrlq mm5,28
  1521. paddq mm4,mm3
  1522. movq mm6,mm0
  1523. movq mm7,mm5
  1524. psllq mm6,25
  1525. movq mm1,QWORD PTR 8[esp]
  1526. psrlq mm5,6
  1527. pxor mm7,mm6
  1528. psllq mm6,5
  1529. pxor mm7,mm5
  1530. pxor mm0,mm1
  1531. psrlq mm5,5
  1532. pxor mm7,mm6
  1533. pand mm2,mm0
  1534. psllq mm6,6
  1535. pxor mm7,mm5
  1536. pxor mm2,mm1
  1537. pxor mm6,mm7
  1538. movq mm5,QWORD PTR 32[esp]
  1539. paddq mm2,mm6
  1540. movq mm6,QWORD PTR 40[esp]
  1541. movq mm1,mm4
  1542. movq mm7,QWORD PTR [edx-120]
  1543. pxor mm5,mm6
  1544. psrlq mm1,14
  1545. movq QWORD PTR 24[esp],mm4
  1546. pand mm5,mm4
  1547. psllq mm4,23
  1548. paddq mm2,mm3
  1549. movq mm3,mm1
  1550. psrlq mm1,4
  1551. pxor mm5,mm6
  1552. pxor mm3,mm4
  1553. psllq mm4,23
  1554. pxor mm3,mm1
  1555. movq QWORD PTR 56[esp],mm2
  1556. paddq mm7,mm5
  1557. pxor mm3,mm4
  1558. psrlq mm1,23
  1559. paddq mm7,QWORD PTR 48[esp]
  1560. pxor mm3,mm1
  1561. psllq mm4,4
  1562. pxor mm3,mm4
  1563. movq mm4,QWORD PTR 16[esp]
  1564. paddq mm3,mm7
  1565. movq mm5,mm2
  1566. psrlq mm5,28
  1567. paddq mm4,mm3
  1568. movq mm6,mm2
  1569. movq mm7,mm5
  1570. psllq mm6,25
  1571. movq mm1,QWORD PTR [esp]
  1572. psrlq mm5,6
  1573. pxor mm7,mm6
  1574. psllq mm6,5
  1575. pxor mm7,mm5
  1576. pxor mm2,mm1
  1577. psrlq mm5,5
  1578. pxor mm7,mm6
  1579. pand mm0,mm2
  1580. psllq mm6,6
  1581. pxor mm7,mm5
  1582. pxor mm0,mm1
  1583. pxor mm6,mm7
  1584. movq mm5,QWORD PTR 24[esp]
  1585. paddq mm0,mm6
  1586. movq mm6,QWORD PTR 32[esp]
  1587. movdqa XMMWORD PTR [edx-128],xmm3
  1588. movdqa xmm4,XMMWORD PTR 16[ebp]
  1589. movdqa xmm3,xmm2
  1590. movdqu xmm2,XMMWORD PTR 32[ebx]
  1591. paddq xmm4,xmm1
  1592. DB 102,15,56,0,211
  1593. movq mm1,mm4
  1594. movq mm7,QWORD PTR [edx-112]
  1595. pxor mm5,mm6
  1596. psrlq mm1,14
  1597. movq QWORD PTR 16[esp],mm4
  1598. pand mm5,mm4
  1599. psllq mm4,23
  1600. paddq mm0,mm3
  1601. movq mm3,mm1
  1602. psrlq mm1,4
  1603. pxor mm5,mm6
  1604. pxor mm3,mm4
  1605. psllq mm4,23
  1606. pxor mm3,mm1
  1607. movq QWORD PTR 48[esp],mm0
  1608. paddq mm7,mm5
  1609. pxor mm3,mm4
  1610. psrlq mm1,23
  1611. paddq mm7,QWORD PTR 40[esp]
  1612. pxor mm3,mm1
  1613. psllq mm4,4
  1614. pxor mm3,mm4
  1615. movq mm4,QWORD PTR 8[esp]
  1616. paddq mm3,mm7
  1617. movq mm5,mm0
  1618. psrlq mm5,28
  1619. paddq mm4,mm3
  1620. movq mm6,mm0
  1621. movq mm7,mm5
  1622. psllq mm6,25
  1623. movq mm1,QWORD PTR 56[esp]
  1624. psrlq mm5,6
  1625. pxor mm7,mm6
  1626. psllq mm6,5
  1627. pxor mm7,mm5
  1628. pxor mm0,mm1
  1629. psrlq mm5,5
  1630. pxor mm7,mm6
  1631. pand mm2,mm0
  1632. psllq mm6,6
  1633. pxor mm7,mm5
  1634. pxor mm2,mm1
  1635. pxor mm6,mm7
  1636. movq mm5,QWORD PTR 16[esp]
  1637. paddq mm2,mm6
  1638. movq mm6,QWORD PTR 24[esp]
  1639. movq mm1,mm4
  1640. movq mm7,QWORD PTR [edx-104]
  1641. pxor mm5,mm6
  1642. psrlq mm1,14
  1643. movq QWORD PTR 8[esp],mm4
  1644. pand mm5,mm4
  1645. psllq mm4,23
  1646. paddq mm2,mm3
  1647. movq mm3,mm1
  1648. psrlq mm1,4
  1649. pxor mm5,mm6
  1650. pxor mm3,mm4
  1651. psllq mm4,23
  1652. pxor mm3,mm1
  1653. movq QWORD PTR 40[esp],mm2
  1654. paddq mm7,mm5
  1655. pxor mm3,mm4
  1656. psrlq mm1,23
  1657. paddq mm7,QWORD PTR 32[esp]
  1658. pxor mm3,mm1
  1659. psllq mm4,4
  1660. pxor mm3,mm4
  1661. movq mm4,QWORD PTR [esp]
  1662. paddq mm3,mm7
  1663. movq mm5,mm2
  1664. psrlq mm5,28
  1665. paddq mm4,mm3
  1666. movq mm6,mm2
  1667. movq mm7,mm5
  1668. psllq mm6,25
  1669. movq mm1,QWORD PTR 48[esp]
  1670. psrlq mm5,6
  1671. pxor mm7,mm6
  1672. psllq mm6,5
  1673. pxor mm7,mm5
  1674. pxor mm2,mm1
  1675. psrlq mm5,5
  1676. pxor mm7,mm6
  1677. pand mm0,mm2
  1678. psllq mm6,6
  1679. pxor mm7,mm5
  1680. pxor mm0,mm1
  1681. pxor mm6,mm7
  1682. movq mm5,QWORD PTR 8[esp]
  1683. paddq mm0,mm6
  1684. movq mm6,QWORD PTR 16[esp]
  1685. movdqa XMMWORD PTR [edx-112],xmm4
  1686. movdqa xmm5,XMMWORD PTR 32[ebp]
  1687. movdqa xmm4,xmm3
  1688. movdqu xmm3,XMMWORD PTR 48[ebx]
  1689. paddq xmm5,xmm2
  1690. DB 102,15,56,0,220
  1691. movq mm1,mm4
  1692. movq mm7,QWORD PTR [edx-96]
  1693. pxor mm5,mm6
  1694. psrlq mm1,14
  1695. movq QWORD PTR [esp],mm4
  1696. pand mm5,mm4
  1697. psllq mm4,23
  1698. paddq mm0,mm3
  1699. movq mm3,mm1
  1700. psrlq mm1,4
  1701. pxor mm5,mm6
  1702. pxor mm3,mm4
  1703. psllq mm4,23
  1704. pxor mm3,mm1
  1705. movq QWORD PTR 32[esp],mm0
  1706. paddq mm7,mm5
  1707. pxor mm3,mm4
  1708. psrlq mm1,23
  1709. paddq mm7,QWORD PTR 24[esp]
  1710. pxor mm3,mm1
  1711. psllq mm4,4
  1712. pxor mm3,mm4
  1713. movq mm4,QWORD PTR 56[esp]
  1714. paddq mm3,mm7
  1715. movq mm5,mm0
  1716. psrlq mm5,28
  1717. paddq mm4,mm3
  1718. movq mm6,mm0
  1719. movq mm7,mm5
  1720. psllq mm6,25
  1721. movq mm1,QWORD PTR 40[esp]
  1722. psrlq mm5,6
  1723. pxor mm7,mm6
  1724. psllq mm6,5
  1725. pxor mm7,mm5
  1726. pxor mm0,mm1
  1727. psrlq mm5,5
  1728. pxor mm7,mm6
  1729. pand mm2,mm0
  1730. psllq mm6,6
  1731. pxor mm7,mm5
  1732. pxor mm2,mm1
  1733. pxor mm6,mm7
  1734. movq mm5,QWORD PTR [esp]
  1735. paddq mm2,mm6
  1736. movq mm6,QWORD PTR 8[esp]
  1737. movq mm1,mm4
  1738. movq mm7,QWORD PTR [edx-88]
  1739. pxor mm5,mm6
  1740. psrlq mm1,14
  1741. movq QWORD PTR 56[esp],mm4
  1742. pand mm5,mm4
  1743. psllq mm4,23
  1744. paddq mm2,mm3
  1745. movq mm3,mm1
  1746. psrlq mm1,4
  1747. pxor mm5,mm6
  1748. pxor mm3,mm4
  1749. psllq mm4,23
  1750. pxor mm3,mm1
  1751. movq QWORD PTR 24[esp],mm2
  1752. paddq mm7,mm5
  1753. pxor mm3,mm4
  1754. psrlq mm1,23
  1755. paddq mm7,QWORD PTR 16[esp]
  1756. pxor mm3,mm1
  1757. psllq mm4,4
  1758. pxor mm3,mm4
  1759. movq mm4,QWORD PTR 48[esp]
  1760. paddq mm3,mm7
  1761. movq mm5,mm2
  1762. psrlq mm5,28
  1763. paddq mm4,mm3
  1764. movq mm6,mm2
  1765. movq mm7,mm5
  1766. psllq mm6,25
  1767. movq mm1,QWORD PTR 32[esp]
  1768. psrlq mm5,6
  1769. pxor mm7,mm6
  1770. psllq mm6,5
  1771. pxor mm7,mm5
  1772. pxor mm2,mm1
  1773. psrlq mm5,5
  1774. pxor mm7,mm6
  1775. pand mm0,mm2
  1776. psllq mm6,6
  1777. pxor mm7,mm5
  1778. pxor mm0,mm1
  1779. pxor mm6,mm7
  1780. movq mm5,QWORD PTR 56[esp]
  1781. paddq mm0,mm6
  1782. movq mm6,QWORD PTR [esp]
  1783. movdqa XMMWORD PTR [edx-96],xmm5
  1784. movdqa xmm6,XMMWORD PTR 48[ebp]
  1785. movdqa xmm5,xmm4
  1786. movdqu xmm4,XMMWORD PTR 64[ebx]
  1787. paddq xmm6,xmm3
  1788. DB 102,15,56,0,229
  1789. movq mm1,mm4
  1790. movq mm7,QWORD PTR [edx-80]
  1791. pxor mm5,mm6
  1792. psrlq mm1,14
  1793. movq QWORD PTR 48[esp],mm4
  1794. pand mm5,mm4
  1795. psllq mm4,23
  1796. paddq mm0,mm3
  1797. movq mm3,mm1
  1798. psrlq mm1,4
  1799. pxor mm5,mm6
  1800. pxor mm3,mm4
  1801. psllq mm4,23
  1802. pxor mm3,mm1
  1803. movq QWORD PTR 16[esp],mm0
  1804. paddq mm7,mm5
  1805. pxor mm3,mm4
  1806. psrlq mm1,23
  1807. paddq mm7,QWORD PTR 8[esp]
  1808. pxor mm3,mm1
  1809. psllq mm4,4
  1810. pxor mm3,mm4
  1811. movq mm4,QWORD PTR 40[esp]
  1812. paddq mm3,mm7
  1813. movq mm5,mm0
  1814. psrlq mm5,28
  1815. paddq mm4,mm3
  1816. movq mm6,mm0
  1817. movq mm7,mm5
  1818. psllq mm6,25
  1819. movq mm1,QWORD PTR 24[esp]
  1820. psrlq mm5,6
  1821. pxor mm7,mm6
  1822. psllq mm6,5
  1823. pxor mm7,mm5
  1824. pxor mm0,mm1
  1825. psrlq mm5,5
  1826. pxor mm7,mm6
  1827. pand mm2,mm0
  1828. psllq mm6,6
  1829. pxor mm7,mm5
  1830. pxor mm2,mm1
  1831. pxor mm6,mm7
  1832. movq mm5,QWORD PTR 48[esp]
  1833. paddq mm2,mm6
  1834. movq mm6,QWORD PTR 56[esp]
  1835. movq mm1,mm4
  1836. movq mm7,QWORD PTR [edx-72]
  1837. pxor mm5,mm6
  1838. psrlq mm1,14
  1839. movq QWORD PTR 40[esp],mm4
  1840. pand mm5,mm4
  1841. psllq mm4,23
  1842. paddq mm2,mm3
  1843. movq mm3,mm1
  1844. psrlq mm1,4
  1845. pxor mm5,mm6
  1846. pxor mm3,mm4
  1847. psllq mm4,23
  1848. pxor mm3,mm1
  1849. movq QWORD PTR 8[esp],mm2
  1850. paddq mm7,mm5
  1851. pxor mm3,mm4
  1852. psrlq mm1,23
  1853. paddq mm7,QWORD PTR [esp]
  1854. pxor mm3,mm1
  1855. psllq mm4,4
  1856. pxor mm3,mm4
  1857. movq mm4,QWORD PTR 32[esp]
  1858. paddq mm3,mm7
  1859. movq mm5,mm2
  1860. psrlq mm5,28
  1861. paddq mm4,mm3
  1862. movq mm6,mm2
  1863. movq mm7,mm5
  1864. psllq mm6,25
  1865. movq mm1,QWORD PTR 16[esp]
  1866. psrlq mm5,6
  1867. pxor mm7,mm6
  1868. psllq mm6,5
  1869. pxor mm7,mm5
  1870. pxor mm2,mm1
  1871. psrlq mm5,5
  1872. pxor mm7,mm6
  1873. pand mm0,mm2
  1874. psllq mm6,6
  1875. pxor mm7,mm5
  1876. pxor mm0,mm1
  1877. pxor mm6,mm7
  1878. movq mm5,QWORD PTR 40[esp]
  1879. paddq mm0,mm6
  1880. movq mm6,QWORD PTR 48[esp]
  1881. movdqa XMMWORD PTR [edx-80],xmm6
  1882. movdqa xmm7,XMMWORD PTR 64[ebp]
  1883. movdqa xmm6,xmm5
  1884. movdqu xmm5,XMMWORD PTR 80[ebx]
  1885. paddq xmm7,xmm4
  1886. DB 102,15,56,0,238
  1887. movq mm1,mm4
  1888. movq mm7,QWORD PTR [edx-64]
  1889. pxor mm5,mm6
  1890. psrlq mm1,14
  1891. movq QWORD PTR 32[esp],mm4
  1892. pand mm5,mm4
  1893. psllq mm4,23
  1894. paddq mm0,mm3
  1895. movq mm3,mm1
  1896. psrlq mm1,4
  1897. pxor mm5,mm6
  1898. pxor mm3,mm4
  1899. psllq mm4,23
  1900. pxor mm3,mm1
  1901. movq QWORD PTR [esp],mm0
  1902. paddq mm7,mm5
  1903. pxor mm3,mm4
  1904. psrlq mm1,23
  1905. paddq mm7,QWORD PTR 56[esp]
  1906. pxor mm3,mm1
  1907. psllq mm4,4
  1908. pxor mm3,mm4
  1909. movq mm4,QWORD PTR 24[esp]
  1910. paddq mm3,mm7
  1911. movq mm5,mm0
  1912. psrlq mm5,28
  1913. paddq mm4,mm3
  1914. movq mm6,mm0
  1915. movq mm7,mm5
  1916. psllq mm6,25
  1917. movq mm1,QWORD PTR 8[esp]
  1918. psrlq mm5,6
  1919. pxor mm7,mm6
  1920. psllq mm6,5
  1921. pxor mm7,mm5
  1922. pxor mm0,mm1
  1923. psrlq mm5,5
  1924. pxor mm7,mm6
  1925. pand mm2,mm0
  1926. psllq mm6,6
  1927. pxor mm7,mm5
  1928. pxor mm2,mm1
  1929. pxor mm6,mm7
  1930. movq mm5,QWORD PTR 32[esp]
  1931. paddq mm2,mm6
  1932. movq mm6,QWORD PTR 40[esp]
  1933. movq mm1,mm4
  1934. movq mm7,QWORD PTR [edx-56]
  1935. pxor mm5,mm6
  1936. psrlq mm1,14
  1937. movq QWORD PTR 24[esp],mm4
  1938. pand mm5,mm4
  1939. psllq mm4,23
  1940. paddq mm2,mm3
  1941. movq mm3,mm1
  1942. psrlq mm1,4
  1943. pxor mm5,mm6
  1944. pxor mm3,mm4
  1945. psllq mm4,23
  1946. pxor mm3,mm1
  1947. movq QWORD PTR 56[esp],mm2
  1948. paddq mm7,mm5
  1949. pxor mm3,mm4
  1950. psrlq mm1,23
  1951. paddq mm7,QWORD PTR 48[esp]
  1952. pxor mm3,mm1
  1953. psllq mm4,4
  1954. pxor mm3,mm4
  1955. movq mm4,QWORD PTR 16[esp]
  1956. paddq mm3,mm7
  1957. movq mm5,mm2
  1958. psrlq mm5,28
  1959. paddq mm4,mm3
  1960. movq mm6,mm2
  1961. movq mm7,mm5
  1962. psllq mm6,25
  1963. movq mm1,QWORD PTR [esp]
  1964. psrlq mm5,6
  1965. pxor mm7,mm6
  1966. psllq mm6,5
  1967. pxor mm7,mm5
  1968. pxor mm2,mm1
  1969. psrlq mm5,5
  1970. pxor mm7,mm6
  1971. pand mm0,mm2
  1972. psllq mm6,6
  1973. pxor mm7,mm5
  1974. pxor mm0,mm1
  1975. pxor mm6,mm7
  1976. movq mm5,QWORD PTR 24[esp]
  1977. paddq mm0,mm6
  1978. movq mm6,QWORD PTR 32[esp]
  1979. movdqa XMMWORD PTR [edx-64],xmm7
  1980. movdqa XMMWORD PTR [edx],xmm0
  1981. movdqa xmm0,XMMWORD PTR 80[ebp]
  1982. movdqa xmm7,xmm6
  1983. movdqu xmm6,XMMWORD PTR 96[ebx]
  1984. paddq xmm0,xmm5
  1985. DB 102,15,56,0,247
  1986. movq mm1,mm4
  1987. movq mm7,QWORD PTR [edx-48]
  1988. pxor mm5,mm6
  1989. psrlq mm1,14
  1990. movq QWORD PTR 16[esp],mm4
  1991. pand mm5,mm4
  1992. psllq mm4,23
  1993. paddq mm0,mm3
  1994. movq mm3,mm1
  1995. psrlq mm1,4
  1996. pxor mm5,mm6
  1997. pxor mm3,mm4
  1998. psllq mm4,23
  1999. pxor mm3,mm1
  2000. movq QWORD PTR 48[esp],mm0
  2001. paddq mm7,mm5
  2002. pxor mm3,mm4
  2003. psrlq mm1,23
  2004. paddq mm7,QWORD PTR 40[esp]
  2005. pxor mm3,mm1
  2006. psllq mm4,4
  2007. pxor mm3,mm4
  2008. movq mm4,QWORD PTR 8[esp]
  2009. paddq mm3,mm7
  2010. movq mm5,mm0
  2011. psrlq mm5,28
  2012. paddq mm4,mm3
  2013. movq mm6,mm0
  2014. movq mm7,mm5
  2015. psllq mm6,25
  2016. movq mm1,QWORD PTR 56[esp]
  2017. psrlq mm5,6
  2018. pxor mm7,mm6
  2019. psllq mm6,5
  2020. pxor mm7,mm5
  2021. pxor mm0,mm1
  2022. psrlq mm5,5
  2023. pxor mm7,mm6
  2024. pand mm2,mm0
  2025. psllq mm6,6
  2026. pxor mm7,mm5
  2027. pxor mm2,mm1
  2028. pxor mm6,mm7
  2029. movq mm5,QWORD PTR 16[esp]
  2030. paddq mm2,mm6
  2031. movq mm6,QWORD PTR 24[esp]
  2032. movq mm1,mm4
  2033. movq mm7,QWORD PTR [edx-40]
  2034. pxor mm5,mm6
  2035. psrlq mm1,14
  2036. movq QWORD PTR 8[esp],mm4
  2037. pand mm5,mm4
  2038. psllq mm4,23
  2039. paddq mm2,mm3
  2040. movq mm3,mm1
  2041. psrlq mm1,4
  2042. pxor mm5,mm6
  2043. pxor mm3,mm4
  2044. psllq mm4,23
  2045. pxor mm3,mm1
  2046. movq QWORD PTR 40[esp],mm2
  2047. paddq mm7,mm5
  2048. pxor mm3,mm4
  2049. psrlq mm1,23
  2050. paddq mm7,QWORD PTR 32[esp]
  2051. pxor mm3,mm1
  2052. psllq mm4,4
  2053. pxor mm3,mm4
  2054. movq mm4,QWORD PTR [esp]
  2055. paddq mm3,mm7
  2056. movq mm5,mm2
  2057. psrlq mm5,28
  2058. paddq mm4,mm3
  2059. movq mm6,mm2
  2060. movq mm7,mm5
  2061. psllq mm6,25
  2062. movq mm1,QWORD PTR 48[esp]
  2063. psrlq mm5,6
  2064. pxor mm7,mm6
  2065. psllq mm6,5
  2066. pxor mm7,mm5
  2067. pxor mm2,mm1
  2068. psrlq mm5,5
  2069. pxor mm7,mm6
  2070. pand mm0,mm2
  2071. psllq mm6,6
  2072. pxor mm7,mm5
  2073. pxor mm0,mm1
  2074. pxor mm6,mm7
  2075. movq mm5,QWORD PTR 8[esp]
  2076. paddq mm0,mm6
  2077. movq mm6,QWORD PTR 16[esp]
  2078. movdqa XMMWORD PTR [edx-48],xmm0
  2079. movdqa XMMWORD PTR 16[edx],xmm1
  2080. movdqa xmm1,XMMWORD PTR 96[ebp]
  2081. movdqa xmm0,xmm7
  2082. movdqu xmm7,XMMWORD PTR 112[ebx]
  2083. paddq xmm1,xmm6
  2084. DB 102,15,56,0,248
  2085. movq mm1,mm4
  2086. movq mm7,QWORD PTR [edx-32]
  2087. pxor mm5,mm6
  2088. psrlq mm1,14
  2089. movq QWORD PTR [esp],mm4
  2090. pand mm5,mm4
  2091. psllq mm4,23
  2092. paddq mm0,mm3
  2093. movq mm3,mm1
  2094. psrlq mm1,4
  2095. pxor mm5,mm6
  2096. pxor mm3,mm4
  2097. psllq mm4,23
  2098. pxor mm3,mm1
  2099. movq QWORD PTR 32[esp],mm0
  2100. paddq mm7,mm5
  2101. pxor mm3,mm4
  2102. psrlq mm1,23
  2103. paddq mm7,QWORD PTR 24[esp]
  2104. pxor mm3,mm1
  2105. psllq mm4,4
  2106. pxor mm3,mm4
  2107. movq mm4,QWORD PTR 56[esp]
  2108. paddq mm3,mm7
  2109. movq mm5,mm0
  2110. psrlq mm5,28
  2111. paddq mm4,mm3
  2112. movq mm6,mm0
  2113. movq mm7,mm5
  2114. psllq mm6,25
  2115. movq mm1,QWORD PTR 40[esp]
  2116. psrlq mm5,6
  2117. pxor mm7,mm6
  2118. psllq mm6,5
  2119. pxor mm7,mm5
  2120. pxor mm0,mm1
  2121. psrlq mm5,5
  2122. pxor mm7,mm6
  2123. pand mm2,mm0
  2124. psllq mm6,6
  2125. pxor mm7,mm5
  2126. pxor mm2,mm1
  2127. pxor mm6,mm7
  2128. movq mm5,QWORD PTR [esp]
  2129. paddq mm2,mm6
  2130. movq mm6,QWORD PTR 8[esp]
  2131. movq mm1,mm4
  2132. movq mm7,QWORD PTR [edx-24]
  2133. pxor mm5,mm6
  2134. psrlq mm1,14
  2135. movq QWORD PTR 56[esp],mm4
  2136. pand mm5,mm4
  2137. psllq mm4,23
  2138. paddq mm2,mm3
  2139. movq mm3,mm1
  2140. psrlq mm1,4
  2141. pxor mm5,mm6
  2142. pxor mm3,mm4
  2143. psllq mm4,23
  2144. pxor mm3,mm1
  2145. movq QWORD PTR 24[esp],mm2
  2146. paddq mm7,mm5
  2147. pxor mm3,mm4
  2148. psrlq mm1,23
  2149. paddq mm7,QWORD PTR 16[esp]
  2150. pxor mm3,mm1
  2151. psllq mm4,4
  2152. pxor mm3,mm4
  2153. movq mm4,QWORD PTR 48[esp]
  2154. paddq mm3,mm7
  2155. movq mm5,mm2
  2156. psrlq mm5,28
  2157. paddq mm4,mm3
  2158. movq mm6,mm2
  2159. movq mm7,mm5
  2160. psllq mm6,25
  2161. movq mm1,QWORD PTR 32[esp]
  2162. psrlq mm5,6
  2163. pxor mm7,mm6
  2164. psllq mm6,5
  2165. pxor mm7,mm5
  2166. pxor mm2,mm1
  2167. psrlq mm5,5
  2168. pxor mm7,mm6
  2169. pand mm0,mm2
  2170. psllq mm6,6
  2171. pxor mm7,mm5
  2172. pxor mm0,mm1
  2173. pxor mm6,mm7
  2174. movq mm5,QWORD PTR 56[esp]
  2175. paddq mm0,mm6
  2176. movq mm6,QWORD PTR [esp]
  2177. movdqa XMMWORD PTR [edx-32],xmm1
  2178. movdqa XMMWORD PTR 32[edx],xmm2
  2179. movdqa xmm2,XMMWORD PTR 112[ebp]
  2180. movdqa xmm0,XMMWORD PTR [edx]
  2181. paddq xmm2,xmm7
  2182. movq mm1,mm4
  2183. movq mm7,QWORD PTR [edx-16]
  2184. pxor mm5,mm6
  2185. psrlq mm1,14
  2186. movq QWORD PTR 48[esp],mm4
  2187. pand mm5,mm4
  2188. psllq mm4,23
  2189. paddq mm0,mm3
  2190. movq mm3,mm1
  2191. psrlq mm1,4
  2192. pxor mm5,mm6
  2193. pxor mm3,mm4
  2194. psllq mm4,23
  2195. pxor mm3,mm1
  2196. movq QWORD PTR 16[esp],mm0
  2197. paddq mm7,mm5
  2198. pxor mm3,mm4
  2199. psrlq mm1,23
  2200. paddq mm7,QWORD PTR 8[esp]
  2201. pxor mm3,mm1
  2202. psllq mm4,4
  2203. pxor mm3,mm4
  2204. movq mm4,QWORD PTR 40[esp]
  2205. paddq mm3,mm7
  2206. movq mm5,mm0
  2207. psrlq mm5,28
  2208. paddq mm4,mm3
  2209. movq mm6,mm0
  2210. movq mm7,mm5
  2211. psllq mm6,25
  2212. movq mm1,QWORD PTR 24[esp]
  2213. psrlq mm5,6
  2214. pxor mm7,mm6
  2215. psllq mm6,5
  2216. pxor mm7,mm5
  2217. pxor mm0,mm1
  2218. psrlq mm5,5
  2219. pxor mm7,mm6
  2220. pand mm2,mm0
  2221. psllq mm6,6
  2222. pxor mm7,mm5
  2223. pxor mm2,mm1
  2224. pxor mm6,mm7
  2225. movq mm5,QWORD PTR 48[esp]
  2226. paddq mm2,mm6
  2227. movq mm6,QWORD PTR 56[esp]
  2228. movq mm1,mm4
  2229. movq mm7,QWORD PTR [edx-8]
  2230. pxor mm5,mm6
  2231. psrlq mm1,14
  2232. movq QWORD PTR 40[esp],mm4
  2233. pand mm5,mm4
  2234. psllq mm4,23
  2235. paddq mm2,mm3
  2236. movq mm3,mm1
  2237. psrlq mm1,4
  2238. pxor mm5,mm6
  2239. pxor mm3,mm4
  2240. psllq mm4,23
  2241. pxor mm3,mm1
  2242. movq QWORD PTR 8[esp],mm2
  2243. paddq mm7,mm5
  2244. pxor mm3,mm4
  2245. psrlq mm1,23
  2246. paddq mm7,QWORD PTR [esp]
  2247. pxor mm3,mm1
  2248. psllq mm4,4
  2249. pxor mm3,mm4
  2250. movq mm4,QWORD PTR 32[esp]
  2251. paddq mm3,mm7
  2252. movq mm5,mm2
  2253. psrlq mm5,28
  2254. paddq mm4,mm3
  2255. movq mm6,mm2
  2256. movq mm7,mm5
  2257. psllq mm6,25
  2258. movq mm1,QWORD PTR 16[esp]
  2259. psrlq mm5,6
  2260. pxor mm7,mm6
  2261. psllq mm6,5
  2262. pxor mm7,mm5
  2263. pxor mm2,mm1
  2264. psrlq mm5,5
  2265. pxor mm7,mm6
  2266. pand mm0,mm2
  2267. psllq mm6,6
  2268. pxor mm7,mm5
  2269. pxor mm0,mm1
  2270. pxor mm6,mm7
  2271. movq mm5,QWORD PTR 40[esp]
  2272. paddq mm0,mm6
  2273. movq mm6,QWORD PTR 48[esp]
  2274. movdqa XMMWORD PTR [edx-16],xmm2
  2275. movq mm1,QWORD PTR 8[esp]
  2276. paddq mm0,mm3
  2277. movq mm3,QWORD PTR 24[esp]
  2278. movq mm7,QWORD PTR 56[esp]
  2279. pxor mm2,mm1
  2280. paddq mm0,QWORD PTR [esi]
  2281. paddq mm1,QWORD PTR 8[esi]
  2282. paddq mm2,QWORD PTR 16[esi]
  2283. paddq mm3,QWORD PTR 24[esi]
  2284. paddq mm4,QWORD PTR 32[esi]
  2285. paddq mm5,QWORD PTR 40[esi]
  2286. paddq mm6,QWORD PTR 48[esi]
  2287. paddq mm7,QWORD PTR 56[esi]
  2288. movq QWORD PTR [esi],mm0
  2289. movq QWORD PTR 8[esi],mm1
  2290. movq QWORD PTR 16[esi],mm2
  2291. movq QWORD PTR 24[esi],mm3
  2292. movq QWORD PTR 32[esi],mm4
  2293. movq QWORD PTR 40[esi],mm5
  2294. movq QWORD PTR 48[esi],mm6
  2295. movq QWORD PTR 56[esi],mm7
  2296. cmp edi,eax
  2297. jb $L007loop_ssse3
  2298. mov esp,DWORD PTR 76[edx]
  2299. emms
  2300. pop edi
  2301. pop esi
  2302. pop ebx
  2303. pop ebp
  2304. ret
  2305. ALIGN 16
  2306. $L002loop_x86:
  2307. mov eax,DWORD PTR [edi]
  2308. mov ebx,DWORD PTR 4[edi]
  2309. mov ecx,DWORD PTR 8[edi]
  2310. mov edx,DWORD PTR 12[edi]
  2311. bswap eax
  2312. bswap ebx
  2313. bswap ecx
  2314. bswap edx
  2315. push eax
  2316. push ebx
  2317. push ecx
  2318. push edx
  2319. mov eax,DWORD PTR 16[edi]
  2320. mov ebx,DWORD PTR 20[edi]
  2321. mov ecx,DWORD PTR 24[edi]
  2322. mov edx,DWORD PTR 28[edi]
  2323. bswap eax
  2324. bswap ebx
  2325. bswap ecx
  2326. bswap edx
  2327. push eax
  2328. push ebx
  2329. push ecx
  2330. push edx
  2331. mov eax,DWORD PTR 32[edi]
  2332. mov ebx,DWORD PTR 36[edi]
  2333. mov ecx,DWORD PTR 40[edi]
  2334. mov edx,DWORD PTR 44[edi]
  2335. bswap eax
  2336. bswap ebx
  2337. bswap ecx
  2338. bswap edx
  2339. push eax
  2340. push ebx
  2341. push ecx
  2342. push edx
  2343. mov eax,DWORD PTR 48[edi]
  2344. mov ebx,DWORD PTR 52[edi]
  2345. mov ecx,DWORD PTR 56[edi]
  2346. mov edx,DWORD PTR 60[edi]
  2347. bswap eax
  2348. bswap ebx
  2349. bswap ecx
  2350. bswap edx
  2351. push eax
  2352. push ebx
  2353. push ecx
  2354. push edx
  2355. mov eax,DWORD PTR 64[edi]
  2356. mov ebx,DWORD PTR 68[edi]
  2357. mov ecx,DWORD PTR 72[edi]
  2358. mov edx,DWORD PTR 76[edi]
  2359. bswap eax
  2360. bswap ebx
  2361. bswap ecx
  2362. bswap edx
  2363. push eax
  2364. push ebx
  2365. push ecx
  2366. push edx
  2367. mov eax,DWORD PTR 80[edi]
  2368. mov ebx,DWORD PTR 84[edi]
  2369. mov ecx,DWORD PTR 88[edi]
  2370. mov edx,DWORD PTR 92[edi]
  2371. bswap eax
  2372. bswap ebx
  2373. bswap ecx
  2374. bswap edx
  2375. push eax
  2376. push ebx
  2377. push ecx
  2378. push edx
  2379. mov eax,DWORD PTR 96[edi]
  2380. mov ebx,DWORD PTR 100[edi]
  2381. mov ecx,DWORD PTR 104[edi]
  2382. mov edx,DWORD PTR 108[edi]
  2383. bswap eax
  2384. bswap ebx
  2385. bswap ecx
  2386. bswap edx
  2387. push eax
  2388. push ebx
  2389. push ecx
  2390. push edx
  2391. mov eax,DWORD PTR 112[edi]
  2392. mov ebx,DWORD PTR 116[edi]
  2393. mov ecx,DWORD PTR 120[edi]
  2394. mov edx,DWORD PTR 124[edi]
  2395. bswap eax
  2396. bswap ebx
  2397. bswap ecx
  2398. bswap edx
  2399. push eax
  2400. push ebx
  2401. push ecx
  2402. push edx
  2403. add edi,128
  2404. sub esp,72
  2405. mov DWORD PTR 204[esp],edi
  2406. lea edi,DWORD PTR 8[esp]
  2407. mov ecx,16
  2408. DD 2784229001
  2409. ALIGN 16
  2410. $L00900_15_x86:
  2411. mov ecx,DWORD PTR 40[esp]
  2412. mov edx,DWORD PTR 44[esp]
  2413. mov esi,ecx
  2414. shr ecx,9
  2415. mov edi,edx
  2416. shr edx,9
  2417. mov ebx,ecx
  2418. shl esi,14
  2419. mov eax,edx
  2420. shl edi,14
  2421. xor ebx,esi
  2422. shr ecx,5
  2423. xor eax,edi
  2424. shr edx,5
  2425. xor eax,ecx
  2426. shl esi,4
  2427. xor ebx,edx
  2428. shl edi,4
  2429. xor ebx,esi
  2430. shr ecx,4
  2431. xor eax,edi
  2432. shr edx,4
  2433. xor eax,ecx
  2434. shl esi,5
  2435. xor ebx,edx
  2436. shl edi,5
  2437. xor eax,esi
  2438. xor ebx,edi
  2439. mov ecx,DWORD PTR 48[esp]
  2440. mov edx,DWORD PTR 52[esp]
  2441. mov esi,DWORD PTR 56[esp]
  2442. mov edi,DWORD PTR 60[esp]
  2443. add eax,DWORD PTR 64[esp]
  2444. adc ebx,DWORD PTR 68[esp]
  2445. xor ecx,esi
  2446. xor edx,edi
  2447. and ecx,DWORD PTR 40[esp]
  2448. and edx,DWORD PTR 44[esp]
  2449. add eax,DWORD PTR 192[esp]
  2450. adc ebx,DWORD PTR 196[esp]
  2451. xor ecx,esi
  2452. xor edx,edi
  2453. mov esi,DWORD PTR [ebp]
  2454. mov edi,DWORD PTR 4[ebp]
  2455. add eax,ecx
  2456. adc ebx,edx
  2457. mov ecx,DWORD PTR 32[esp]
  2458. mov edx,DWORD PTR 36[esp]
  2459. add eax,esi
  2460. adc ebx,edi
  2461. mov DWORD PTR [esp],eax
  2462. mov DWORD PTR 4[esp],ebx
  2463. add eax,ecx
  2464. adc ebx,edx
  2465. mov ecx,DWORD PTR 8[esp]
  2466. mov edx,DWORD PTR 12[esp]
  2467. mov DWORD PTR 32[esp],eax
  2468. mov DWORD PTR 36[esp],ebx
  2469. mov esi,ecx
  2470. shr ecx,2
  2471. mov edi,edx
  2472. shr edx,2
  2473. mov ebx,ecx
  2474. shl esi,4
  2475. mov eax,edx
  2476. shl edi,4
  2477. xor ebx,esi
  2478. shr ecx,5
  2479. xor eax,edi
  2480. shr edx,5
  2481. xor ebx,ecx
  2482. shl esi,21
  2483. xor eax,edx
  2484. shl edi,21
  2485. xor eax,esi
  2486. shr ecx,21
  2487. xor ebx,edi
  2488. shr edx,21
  2489. xor eax,ecx
  2490. shl esi,5
  2491. xor ebx,edx
  2492. shl edi,5
  2493. xor eax,esi
  2494. xor ebx,edi
  2495. mov ecx,DWORD PTR 8[esp]
  2496. mov edx,DWORD PTR 12[esp]
  2497. mov esi,DWORD PTR 16[esp]
  2498. mov edi,DWORD PTR 20[esp]
  2499. add eax,DWORD PTR [esp]
  2500. adc ebx,DWORD PTR 4[esp]
  2501. or ecx,esi
  2502. or edx,edi
  2503. and ecx,DWORD PTR 24[esp]
  2504. and edx,DWORD PTR 28[esp]
  2505. and esi,DWORD PTR 8[esp]
  2506. and edi,DWORD PTR 12[esp]
  2507. or ecx,esi
  2508. or edx,edi
  2509. add eax,ecx
  2510. adc ebx,edx
  2511. mov DWORD PTR [esp],eax
  2512. mov DWORD PTR 4[esp],ebx
  2513. mov dl,BYTE PTR [ebp]
  2514. sub esp,8
  2515. lea ebp,DWORD PTR 8[ebp]
  2516. cmp dl,148
  2517. jne $L00900_15_x86
  2518. ALIGN 16
  2519. $L01016_79_x86:
  2520. mov ecx,DWORD PTR 312[esp]
  2521. mov edx,DWORD PTR 316[esp]
  2522. mov esi,ecx
  2523. shr ecx,1
  2524. mov edi,edx
  2525. shr edx,1
  2526. mov eax,ecx
  2527. shl esi,24
  2528. mov ebx,edx
  2529. shl edi,24
  2530. xor ebx,esi
  2531. shr ecx,6
  2532. xor eax,edi
  2533. shr edx,6
  2534. xor eax,ecx
  2535. shl esi,7
  2536. xor ebx,edx
  2537. shl edi,1
  2538. xor ebx,esi
  2539. shr ecx,1
  2540. xor eax,edi
  2541. shr edx,1
  2542. xor eax,ecx
  2543. shl edi,6
  2544. xor ebx,edx
  2545. xor eax,edi
  2546. mov DWORD PTR [esp],eax
  2547. mov DWORD PTR 4[esp],ebx
  2548. mov ecx,DWORD PTR 208[esp]
  2549. mov edx,DWORD PTR 212[esp]
  2550. mov esi,ecx
  2551. shr ecx,6
  2552. mov edi,edx
  2553. shr edx,6
  2554. mov eax,ecx
  2555. shl esi,3
  2556. mov ebx,edx
  2557. shl edi,3
  2558. xor eax,esi
  2559. shr ecx,13
  2560. xor ebx,edi
  2561. shr edx,13
  2562. xor eax,ecx
  2563. shl esi,10
  2564. xor ebx,edx
  2565. shl edi,10
  2566. xor ebx,esi
  2567. shr ecx,10
  2568. xor eax,edi
  2569. shr edx,10
  2570. xor ebx,ecx
  2571. shl edi,13
  2572. xor eax,edx
  2573. xor eax,edi
  2574. mov ecx,DWORD PTR 320[esp]
  2575. mov edx,DWORD PTR 324[esp]
  2576. add eax,DWORD PTR [esp]
  2577. adc ebx,DWORD PTR 4[esp]
  2578. mov esi,DWORD PTR 248[esp]
  2579. mov edi,DWORD PTR 252[esp]
  2580. add eax,ecx
  2581. adc ebx,edx
  2582. add eax,esi
  2583. adc ebx,edi
  2584. mov DWORD PTR 192[esp],eax
  2585. mov DWORD PTR 196[esp],ebx
  2586. mov ecx,DWORD PTR 40[esp]
  2587. mov edx,DWORD PTR 44[esp]
  2588. mov esi,ecx
  2589. shr ecx,9
  2590. mov edi,edx
  2591. shr edx,9
  2592. mov ebx,ecx
  2593. shl esi,14
  2594. mov eax,edx
  2595. shl edi,14
  2596. xor ebx,esi
  2597. shr ecx,5
  2598. xor eax,edi
  2599. shr edx,5
  2600. xor eax,ecx
  2601. shl esi,4
  2602. xor ebx,edx
  2603. shl edi,4
  2604. xor ebx,esi
  2605. shr ecx,4
  2606. xor eax,edi
  2607. shr edx,4
  2608. xor eax,ecx
  2609. shl esi,5
  2610. xor ebx,edx
  2611. shl edi,5
  2612. xor eax,esi
  2613. xor ebx,edi
  2614. mov ecx,DWORD PTR 48[esp]
  2615. mov edx,DWORD PTR 52[esp]
  2616. mov esi,DWORD PTR 56[esp]
  2617. mov edi,DWORD PTR 60[esp]
  2618. add eax,DWORD PTR 64[esp]
  2619. adc ebx,DWORD PTR 68[esp]
  2620. xor ecx,esi
  2621. xor edx,edi
  2622. and ecx,DWORD PTR 40[esp]
  2623. and edx,DWORD PTR 44[esp]
  2624. add eax,DWORD PTR 192[esp]
  2625. adc ebx,DWORD PTR 196[esp]
  2626. xor ecx,esi
  2627. xor edx,edi
  2628. mov esi,DWORD PTR [ebp]
  2629. mov edi,DWORD PTR 4[ebp]
  2630. add eax,ecx
  2631. adc ebx,edx
  2632. mov ecx,DWORD PTR 32[esp]
  2633. mov edx,DWORD PTR 36[esp]
  2634. add eax,esi
  2635. adc ebx,edi
  2636. mov DWORD PTR [esp],eax
  2637. mov DWORD PTR 4[esp],ebx
  2638. add eax,ecx
  2639. adc ebx,edx
  2640. mov ecx,DWORD PTR 8[esp]
  2641. mov edx,DWORD PTR 12[esp]
  2642. mov DWORD PTR 32[esp],eax
  2643. mov DWORD PTR 36[esp],ebx
  2644. mov esi,ecx
  2645. shr ecx,2
  2646. mov edi,edx
  2647. shr edx,2
  2648. mov ebx,ecx
  2649. shl esi,4
  2650. mov eax,edx
  2651. shl edi,4
  2652. xor ebx,esi
  2653. shr ecx,5
  2654. xor eax,edi
  2655. shr edx,5
  2656. xor ebx,ecx
  2657. shl esi,21
  2658. xor eax,edx
  2659. shl edi,21
  2660. xor eax,esi
  2661. shr ecx,21
  2662. xor ebx,edi
  2663. shr edx,21
  2664. xor eax,ecx
  2665. shl esi,5
  2666. xor ebx,edx
  2667. shl edi,5
  2668. xor eax,esi
  2669. xor ebx,edi
  2670. mov ecx,DWORD PTR 8[esp]
  2671. mov edx,DWORD PTR 12[esp]
  2672. mov esi,DWORD PTR 16[esp]
  2673. mov edi,DWORD PTR 20[esp]
  2674. add eax,DWORD PTR [esp]
  2675. adc ebx,DWORD PTR 4[esp]
  2676. or ecx,esi
  2677. or edx,edi
  2678. and ecx,DWORD PTR 24[esp]
  2679. and edx,DWORD PTR 28[esp]
  2680. and esi,DWORD PTR 8[esp]
  2681. and edi,DWORD PTR 12[esp]
  2682. or ecx,esi
  2683. or edx,edi
  2684. add eax,ecx
  2685. adc ebx,edx
  2686. mov DWORD PTR [esp],eax
  2687. mov DWORD PTR 4[esp],ebx
  2688. mov dl,BYTE PTR [ebp]
  2689. sub esp,8
  2690. lea ebp,DWORD PTR 8[ebp]
  2691. cmp dl,23
  2692. jne $L01016_79_x86
  2693. mov esi,DWORD PTR 840[esp]
  2694. mov edi,DWORD PTR 844[esp]
  2695. mov eax,DWORD PTR [esi]
  2696. mov ebx,DWORD PTR 4[esi]
  2697. mov ecx,DWORD PTR 8[esi]
  2698. mov edx,DWORD PTR 12[esi]
  2699. add eax,DWORD PTR 8[esp]
  2700. adc ebx,DWORD PTR 12[esp]
  2701. mov DWORD PTR [esi],eax
  2702. mov DWORD PTR 4[esi],ebx
  2703. add ecx,DWORD PTR 16[esp]
  2704. adc edx,DWORD PTR 20[esp]
  2705. mov DWORD PTR 8[esi],ecx
  2706. mov DWORD PTR 12[esi],edx
  2707. mov eax,DWORD PTR 16[esi]
  2708. mov ebx,DWORD PTR 20[esi]
  2709. mov ecx,DWORD PTR 24[esi]
  2710. mov edx,DWORD PTR 28[esi]
  2711. add eax,DWORD PTR 24[esp]
  2712. adc ebx,DWORD PTR 28[esp]
  2713. mov DWORD PTR 16[esi],eax
  2714. mov DWORD PTR 20[esi],ebx
  2715. add ecx,DWORD PTR 32[esp]
  2716. adc edx,DWORD PTR 36[esp]
  2717. mov DWORD PTR 24[esi],ecx
  2718. mov DWORD PTR 28[esi],edx
  2719. mov eax,DWORD PTR 32[esi]
  2720. mov ebx,DWORD PTR 36[esi]
  2721. mov ecx,DWORD PTR 40[esi]
  2722. mov edx,DWORD PTR 44[esi]
  2723. add eax,DWORD PTR 40[esp]
  2724. adc ebx,DWORD PTR 44[esp]
  2725. mov DWORD PTR 32[esi],eax
  2726. mov DWORD PTR 36[esi],ebx
  2727. add ecx,DWORD PTR 48[esp]
  2728. adc edx,DWORD PTR 52[esp]
  2729. mov DWORD PTR 40[esi],ecx
  2730. mov DWORD PTR 44[esi],edx
  2731. mov eax,DWORD PTR 48[esi]
  2732. mov ebx,DWORD PTR 52[esi]
  2733. mov ecx,DWORD PTR 56[esi]
  2734. mov edx,DWORD PTR 60[esi]
  2735. add eax,DWORD PTR 56[esp]
  2736. adc ebx,DWORD PTR 60[esp]
  2737. mov DWORD PTR 48[esi],eax
  2738. mov DWORD PTR 52[esi],ebx
  2739. add ecx,DWORD PTR 64[esp]
  2740. adc edx,DWORD PTR 68[esp]
  2741. mov DWORD PTR 56[esi],ecx
  2742. mov DWORD PTR 60[esi],edx
  2743. add esp,840
  2744. sub ebp,640
  2745. cmp edi,DWORD PTR 8[esp]
  2746. jb $L002loop_x86
  2747. mov esp,DWORD PTR 12[esp]
  2748. pop edi
  2749. pop esi
  2750. pop ebx
  2751. pop ebp
  2752. ret
  2753. ALIGN 64
  2754. $L001K512:
  2755. DD 3609767458,1116352408
  2756. DD 602891725,1899447441
  2757. DD 3964484399,3049323471
  2758. DD 2173295548,3921009573
  2759. DD 4081628472,961987163
  2760. DD 3053834265,1508970993
  2761. DD 2937671579,2453635748
  2762. DD 3664609560,2870763221
  2763. DD 2734883394,3624381080
  2764. DD 1164996542,310598401
  2765. DD 1323610764,607225278
  2766. DD 3590304994,1426881987
  2767. DD 4068182383,1925078388
  2768. DD 991336113,2162078206
  2769. DD 633803317,2614888103
  2770. DD 3479774868,3248222580
  2771. DD 2666613458,3835390401
  2772. DD 944711139,4022224774
  2773. DD 2341262773,264347078
  2774. DD 2007800933,604807628
  2775. DD 1495990901,770255983
  2776. DD 1856431235,1249150122
  2777. DD 3175218132,1555081692
  2778. DD 2198950837,1996064986
  2779. DD 3999719339,2554220882
  2780. DD 766784016,2821834349
  2781. DD 2566594879,2952996808
  2782. DD 3203337956,3210313671
  2783. DD 1034457026,3336571891
  2784. DD 2466948901,3584528711
  2785. DD 3758326383,113926993
  2786. DD 168717936,338241895
  2787. DD 1188179964,666307205
  2788. DD 1546045734,773529912
  2789. DD 1522805485,1294757372
  2790. DD 2643833823,1396182291
  2791. DD 2343527390,1695183700
  2792. DD 1014477480,1986661051
  2793. DD 1206759142,2177026350
  2794. DD 344077627,2456956037
  2795. DD 1290863460,2730485921
  2796. DD 3158454273,2820302411
  2797. DD 3505952657,3259730800
  2798. DD 106217008,3345764771
  2799. DD 3606008344,3516065817
  2800. DD 1432725776,3600352804
  2801. DD 1467031594,4094571909
  2802. DD 851169720,275423344
  2803. DD 3100823752,430227734
  2804. DD 1363258195,506948616
  2805. DD 3750685593,659060556
  2806. DD 3785050280,883997877
  2807. DD 3318307427,958139571
  2808. DD 3812723403,1322822218
  2809. DD 2003034995,1537002063
  2810. DD 3602036899,1747873779
  2811. DD 1575990012,1955562222
  2812. DD 1125592928,2024104815
  2813. DD 2716904306,2227730452
  2814. DD 442776044,2361852424
  2815. DD 593698344,2428436474
  2816. DD 3733110249,2756734187
  2817. DD 2999351573,3204031479
  2818. DD 3815920427,3329325298
  2819. DD 3928383900,3391569614
  2820. DD 566280711,3515267271
  2821. DD 3454069534,3940187606
  2822. DD 4000239992,4118630271
  2823. DD 1914138554,116418474
  2824. DD 2731055270,174292421
  2825. DD 3203993006,289380356
  2826. DD 320620315,460393269
  2827. DD 587496836,685471733
  2828. DD 1086792851,852142971
  2829. DD 365543100,1017036298
  2830. DD 2618297676,1126000580
  2831. DD 3409855158,1288033470
  2832. DD 4234509866,1501505948
  2833. DD 987167468,1607167915
  2834. DD 1246189591,1816402316
  2835. DD 67438087,66051
  2836. DD 202182159,134810123
  2837. _sha512_block_data_order ENDP
  2838. DB 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97
  2839. DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
  2840. DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
  2841. DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
  2842. DB 62,0
  2843. .text$ ENDS
  2844. .bss SEGMENT 'BSS'
  2845. COMM _OPENSSL_ia32cap_P:DWORD:4
  2846. .bss ENDS
  2847. END