sha512-586.asm 44 KB

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