sha1-x86_64.masm 107 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772
  1. OPTION DOTNAME
  2. .text$ SEGMENT ALIGN(256) 'CODE'
  3. EXTERN OPENSSL_ia32cap_P:NEAR
  4. PUBLIC sha1_block_data_order
  5. ALIGN 16
  6. sha1_block_data_order PROC PUBLIC
  7. mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
  8. mov QWORD PTR[16+rsp],rsi
  9. mov rax,rsp
  10. $L$SEH_begin_sha1_block_data_order::
  11. mov rdi,rcx
  12. mov rsi,rdx
  13. mov rdx,r8
  14. mov r9d,DWORD PTR[((OPENSSL_ia32cap_P+0))]
  15. mov r8d,DWORD PTR[((OPENSSL_ia32cap_P+4))]
  16. mov r10d,DWORD PTR[((OPENSSL_ia32cap_P+8))]
  17. test r8d,512
  18. jz $L$ialu
  19. test r10d,536870912
  20. jnz _shaext_shortcut
  21. and r10d,296
  22. cmp r10d,296
  23. je _avx2_shortcut
  24. and r8d,268435456
  25. and r9d,1073741824
  26. or r8d,r9d
  27. cmp r8d,1342177280
  28. je _avx_shortcut
  29. jmp _ssse3_shortcut
  30. ALIGN 16
  31. $L$ialu::
  32. mov rax,rsp
  33. push rbx
  34. push rbp
  35. push r12
  36. push r13
  37. push r14
  38. mov r8,rdi
  39. sub rsp,72
  40. mov r9,rsi
  41. and rsp,-64
  42. mov r10,rdx
  43. mov QWORD PTR[64+rsp],rax
  44. $L$prologue::
  45. mov esi,DWORD PTR[r8]
  46. mov edi,DWORD PTR[4+r8]
  47. mov r11d,DWORD PTR[8+r8]
  48. mov r12d,DWORD PTR[12+r8]
  49. mov r13d,DWORD PTR[16+r8]
  50. jmp $L$loop
  51. ALIGN 16
  52. $L$loop::
  53. mov edx,DWORD PTR[r9]
  54. bswap edx
  55. mov ebp,DWORD PTR[4+r9]
  56. mov eax,r12d
  57. mov DWORD PTR[rsp],edx
  58. mov ecx,esi
  59. bswap ebp
  60. xor eax,r11d
  61. rol ecx,5
  62. and eax,edi
  63. lea r13d,DWORD PTR[1518500249+r13*1+rdx]
  64. add r13d,ecx
  65. xor eax,r12d
  66. rol edi,30
  67. add r13d,eax
  68. mov r14d,DWORD PTR[8+r9]
  69. mov eax,r11d
  70. mov DWORD PTR[4+rsp],ebp
  71. mov ecx,r13d
  72. bswap r14d
  73. xor eax,edi
  74. rol ecx,5
  75. and eax,esi
  76. lea r12d,DWORD PTR[1518500249+r12*1+rbp]
  77. add r12d,ecx
  78. xor eax,r11d
  79. rol esi,30
  80. add r12d,eax
  81. mov edx,DWORD PTR[12+r9]
  82. mov eax,edi
  83. mov DWORD PTR[8+rsp],r14d
  84. mov ecx,r12d
  85. bswap edx
  86. xor eax,esi
  87. rol ecx,5
  88. and eax,r13d
  89. lea r11d,DWORD PTR[1518500249+r11*1+r14]
  90. add r11d,ecx
  91. xor eax,edi
  92. rol r13d,30
  93. add r11d,eax
  94. mov ebp,DWORD PTR[16+r9]
  95. mov eax,esi
  96. mov DWORD PTR[12+rsp],edx
  97. mov ecx,r11d
  98. bswap ebp
  99. xor eax,r13d
  100. rol ecx,5
  101. and eax,r12d
  102. lea edi,DWORD PTR[1518500249+rdi*1+rdx]
  103. add edi,ecx
  104. xor eax,esi
  105. rol r12d,30
  106. add edi,eax
  107. mov r14d,DWORD PTR[20+r9]
  108. mov eax,r13d
  109. mov DWORD PTR[16+rsp],ebp
  110. mov ecx,edi
  111. bswap r14d
  112. xor eax,r12d
  113. rol ecx,5
  114. and eax,r11d
  115. lea esi,DWORD PTR[1518500249+rsi*1+rbp]
  116. add esi,ecx
  117. xor eax,r13d
  118. rol r11d,30
  119. add esi,eax
  120. mov edx,DWORD PTR[24+r9]
  121. mov eax,r12d
  122. mov DWORD PTR[20+rsp],r14d
  123. mov ecx,esi
  124. bswap edx
  125. xor eax,r11d
  126. rol ecx,5
  127. and eax,edi
  128. lea r13d,DWORD PTR[1518500249+r13*1+r14]
  129. add r13d,ecx
  130. xor eax,r12d
  131. rol edi,30
  132. add r13d,eax
  133. mov ebp,DWORD PTR[28+r9]
  134. mov eax,r11d
  135. mov DWORD PTR[24+rsp],edx
  136. mov ecx,r13d
  137. bswap ebp
  138. xor eax,edi
  139. rol ecx,5
  140. and eax,esi
  141. lea r12d,DWORD PTR[1518500249+r12*1+rdx]
  142. add r12d,ecx
  143. xor eax,r11d
  144. rol esi,30
  145. add r12d,eax
  146. mov r14d,DWORD PTR[32+r9]
  147. mov eax,edi
  148. mov DWORD PTR[28+rsp],ebp
  149. mov ecx,r12d
  150. bswap r14d
  151. xor eax,esi
  152. rol ecx,5
  153. and eax,r13d
  154. lea r11d,DWORD PTR[1518500249+r11*1+rbp]
  155. add r11d,ecx
  156. xor eax,edi
  157. rol r13d,30
  158. add r11d,eax
  159. mov edx,DWORD PTR[36+r9]
  160. mov eax,esi
  161. mov DWORD PTR[32+rsp],r14d
  162. mov ecx,r11d
  163. bswap edx
  164. xor eax,r13d
  165. rol ecx,5
  166. and eax,r12d
  167. lea edi,DWORD PTR[1518500249+rdi*1+r14]
  168. add edi,ecx
  169. xor eax,esi
  170. rol r12d,30
  171. add edi,eax
  172. mov ebp,DWORD PTR[40+r9]
  173. mov eax,r13d
  174. mov DWORD PTR[36+rsp],edx
  175. mov ecx,edi
  176. bswap ebp
  177. xor eax,r12d
  178. rol ecx,5
  179. and eax,r11d
  180. lea esi,DWORD PTR[1518500249+rsi*1+rdx]
  181. add esi,ecx
  182. xor eax,r13d
  183. rol r11d,30
  184. add esi,eax
  185. mov r14d,DWORD PTR[44+r9]
  186. mov eax,r12d
  187. mov DWORD PTR[40+rsp],ebp
  188. mov ecx,esi
  189. bswap r14d
  190. xor eax,r11d
  191. rol ecx,5
  192. and eax,edi
  193. lea r13d,DWORD PTR[1518500249+r13*1+rbp]
  194. add r13d,ecx
  195. xor eax,r12d
  196. rol edi,30
  197. add r13d,eax
  198. mov edx,DWORD PTR[48+r9]
  199. mov eax,r11d
  200. mov DWORD PTR[44+rsp],r14d
  201. mov ecx,r13d
  202. bswap edx
  203. xor eax,edi
  204. rol ecx,5
  205. and eax,esi
  206. lea r12d,DWORD PTR[1518500249+r12*1+r14]
  207. add r12d,ecx
  208. xor eax,r11d
  209. rol esi,30
  210. add r12d,eax
  211. mov ebp,DWORD PTR[52+r9]
  212. mov eax,edi
  213. mov DWORD PTR[48+rsp],edx
  214. mov ecx,r12d
  215. bswap ebp
  216. xor eax,esi
  217. rol ecx,5
  218. and eax,r13d
  219. lea r11d,DWORD PTR[1518500249+r11*1+rdx]
  220. add r11d,ecx
  221. xor eax,edi
  222. rol r13d,30
  223. add r11d,eax
  224. mov r14d,DWORD PTR[56+r9]
  225. mov eax,esi
  226. mov DWORD PTR[52+rsp],ebp
  227. mov ecx,r11d
  228. bswap r14d
  229. xor eax,r13d
  230. rol ecx,5
  231. and eax,r12d
  232. lea edi,DWORD PTR[1518500249+rdi*1+rbp]
  233. add edi,ecx
  234. xor eax,esi
  235. rol r12d,30
  236. add edi,eax
  237. mov edx,DWORD PTR[60+r9]
  238. mov eax,r13d
  239. mov DWORD PTR[56+rsp],r14d
  240. mov ecx,edi
  241. bswap edx
  242. xor eax,r12d
  243. rol ecx,5
  244. and eax,r11d
  245. lea esi,DWORD PTR[1518500249+rsi*1+r14]
  246. add esi,ecx
  247. xor eax,r13d
  248. rol r11d,30
  249. add esi,eax
  250. xor ebp,DWORD PTR[rsp]
  251. mov eax,r12d
  252. mov DWORD PTR[60+rsp],edx
  253. mov ecx,esi
  254. xor ebp,DWORD PTR[8+rsp]
  255. xor eax,r11d
  256. rol ecx,5
  257. xor ebp,DWORD PTR[32+rsp]
  258. and eax,edi
  259. lea r13d,DWORD PTR[1518500249+r13*1+rdx]
  260. rol edi,30
  261. xor eax,r12d
  262. add r13d,ecx
  263. rol ebp,1
  264. add r13d,eax
  265. xor r14d,DWORD PTR[4+rsp]
  266. mov eax,r11d
  267. mov DWORD PTR[rsp],ebp
  268. mov ecx,r13d
  269. xor r14d,DWORD PTR[12+rsp]
  270. xor eax,edi
  271. rol ecx,5
  272. xor r14d,DWORD PTR[36+rsp]
  273. and eax,esi
  274. lea r12d,DWORD PTR[1518500249+r12*1+rbp]
  275. rol esi,30
  276. xor eax,r11d
  277. add r12d,ecx
  278. rol r14d,1
  279. add r12d,eax
  280. xor edx,DWORD PTR[8+rsp]
  281. mov eax,edi
  282. mov DWORD PTR[4+rsp],r14d
  283. mov ecx,r12d
  284. xor edx,DWORD PTR[16+rsp]
  285. xor eax,esi
  286. rol ecx,5
  287. xor edx,DWORD PTR[40+rsp]
  288. and eax,r13d
  289. lea r11d,DWORD PTR[1518500249+r11*1+r14]
  290. rol r13d,30
  291. xor eax,edi
  292. add r11d,ecx
  293. rol edx,1
  294. add r11d,eax
  295. xor ebp,DWORD PTR[12+rsp]
  296. mov eax,esi
  297. mov DWORD PTR[8+rsp],edx
  298. mov ecx,r11d
  299. xor ebp,DWORD PTR[20+rsp]
  300. xor eax,r13d
  301. rol ecx,5
  302. xor ebp,DWORD PTR[44+rsp]
  303. and eax,r12d
  304. lea edi,DWORD PTR[1518500249+rdi*1+rdx]
  305. rol r12d,30
  306. xor eax,esi
  307. add edi,ecx
  308. rol ebp,1
  309. add edi,eax
  310. xor r14d,DWORD PTR[16+rsp]
  311. mov eax,r13d
  312. mov DWORD PTR[12+rsp],ebp
  313. mov ecx,edi
  314. xor r14d,DWORD PTR[24+rsp]
  315. xor eax,r12d
  316. rol ecx,5
  317. xor r14d,DWORD PTR[48+rsp]
  318. and eax,r11d
  319. lea esi,DWORD PTR[1518500249+rsi*1+rbp]
  320. rol r11d,30
  321. xor eax,r13d
  322. add esi,ecx
  323. rol r14d,1
  324. add esi,eax
  325. xor edx,DWORD PTR[20+rsp]
  326. mov eax,edi
  327. mov DWORD PTR[16+rsp],r14d
  328. mov ecx,esi
  329. xor edx,DWORD PTR[28+rsp]
  330. xor eax,r12d
  331. rol ecx,5
  332. xor edx,DWORD PTR[52+rsp]
  333. lea r13d,DWORD PTR[1859775393+r13*1+r14]
  334. xor eax,r11d
  335. add r13d,ecx
  336. rol edi,30
  337. add r13d,eax
  338. rol edx,1
  339. xor ebp,DWORD PTR[24+rsp]
  340. mov eax,esi
  341. mov DWORD PTR[20+rsp],edx
  342. mov ecx,r13d
  343. xor ebp,DWORD PTR[32+rsp]
  344. xor eax,r11d
  345. rol ecx,5
  346. xor ebp,DWORD PTR[56+rsp]
  347. lea r12d,DWORD PTR[1859775393+r12*1+rdx]
  348. xor eax,edi
  349. add r12d,ecx
  350. rol esi,30
  351. add r12d,eax
  352. rol ebp,1
  353. xor r14d,DWORD PTR[28+rsp]
  354. mov eax,r13d
  355. mov DWORD PTR[24+rsp],ebp
  356. mov ecx,r12d
  357. xor r14d,DWORD PTR[36+rsp]
  358. xor eax,edi
  359. rol ecx,5
  360. xor r14d,DWORD PTR[60+rsp]
  361. lea r11d,DWORD PTR[1859775393+r11*1+rbp]
  362. xor eax,esi
  363. add r11d,ecx
  364. rol r13d,30
  365. add r11d,eax
  366. rol r14d,1
  367. xor edx,DWORD PTR[32+rsp]
  368. mov eax,r12d
  369. mov DWORD PTR[28+rsp],r14d
  370. mov ecx,r11d
  371. xor edx,DWORD PTR[40+rsp]
  372. xor eax,esi
  373. rol ecx,5
  374. xor edx,DWORD PTR[rsp]
  375. lea edi,DWORD PTR[1859775393+rdi*1+r14]
  376. xor eax,r13d
  377. add edi,ecx
  378. rol r12d,30
  379. add edi,eax
  380. rol edx,1
  381. xor ebp,DWORD PTR[36+rsp]
  382. mov eax,r11d
  383. mov DWORD PTR[32+rsp],edx
  384. mov ecx,edi
  385. xor ebp,DWORD PTR[44+rsp]
  386. xor eax,r13d
  387. rol ecx,5
  388. xor ebp,DWORD PTR[4+rsp]
  389. lea esi,DWORD PTR[1859775393+rsi*1+rdx]
  390. xor eax,r12d
  391. add esi,ecx
  392. rol r11d,30
  393. add esi,eax
  394. rol ebp,1
  395. xor r14d,DWORD PTR[40+rsp]
  396. mov eax,edi
  397. mov DWORD PTR[36+rsp],ebp
  398. mov ecx,esi
  399. xor r14d,DWORD PTR[48+rsp]
  400. xor eax,r12d
  401. rol ecx,5
  402. xor r14d,DWORD PTR[8+rsp]
  403. lea r13d,DWORD PTR[1859775393+r13*1+rbp]
  404. xor eax,r11d
  405. add r13d,ecx
  406. rol edi,30
  407. add r13d,eax
  408. rol r14d,1
  409. xor edx,DWORD PTR[44+rsp]
  410. mov eax,esi
  411. mov DWORD PTR[40+rsp],r14d
  412. mov ecx,r13d
  413. xor edx,DWORD PTR[52+rsp]
  414. xor eax,r11d
  415. rol ecx,5
  416. xor edx,DWORD PTR[12+rsp]
  417. lea r12d,DWORD PTR[1859775393+r12*1+r14]
  418. xor eax,edi
  419. add r12d,ecx
  420. rol esi,30
  421. add r12d,eax
  422. rol edx,1
  423. xor ebp,DWORD PTR[48+rsp]
  424. mov eax,r13d
  425. mov DWORD PTR[44+rsp],edx
  426. mov ecx,r12d
  427. xor ebp,DWORD PTR[56+rsp]
  428. xor eax,edi
  429. rol ecx,5
  430. xor ebp,DWORD PTR[16+rsp]
  431. lea r11d,DWORD PTR[1859775393+r11*1+rdx]
  432. xor eax,esi
  433. add r11d,ecx
  434. rol r13d,30
  435. add r11d,eax
  436. rol ebp,1
  437. xor r14d,DWORD PTR[52+rsp]
  438. mov eax,r12d
  439. mov DWORD PTR[48+rsp],ebp
  440. mov ecx,r11d
  441. xor r14d,DWORD PTR[60+rsp]
  442. xor eax,esi
  443. rol ecx,5
  444. xor r14d,DWORD PTR[20+rsp]
  445. lea edi,DWORD PTR[1859775393+rdi*1+rbp]
  446. xor eax,r13d
  447. add edi,ecx
  448. rol r12d,30
  449. add edi,eax
  450. rol r14d,1
  451. xor edx,DWORD PTR[56+rsp]
  452. mov eax,r11d
  453. mov DWORD PTR[52+rsp],r14d
  454. mov ecx,edi
  455. xor edx,DWORD PTR[rsp]
  456. xor eax,r13d
  457. rol ecx,5
  458. xor edx,DWORD PTR[24+rsp]
  459. lea esi,DWORD PTR[1859775393+rsi*1+r14]
  460. xor eax,r12d
  461. add esi,ecx
  462. rol r11d,30
  463. add esi,eax
  464. rol edx,1
  465. xor ebp,DWORD PTR[60+rsp]
  466. mov eax,edi
  467. mov DWORD PTR[56+rsp],edx
  468. mov ecx,esi
  469. xor ebp,DWORD PTR[4+rsp]
  470. xor eax,r12d
  471. rol ecx,5
  472. xor ebp,DWORD PTR[28+rsp]
  473. lea r13d,DWORD PTR[1859775393+r13*1+rdx]
  474. xor eax,r11d
  475. add r13d,ecx
  476. rol edi,30
  477. add r13d,eax
  478. rol ebp,1
  479. xor r14d,DWORD PTR[rsp]
  480. mov eax,esi
  481. mov DWORD PTR[60+rsp],ebp
  482. mov ecx,r13d
  483. xor r14d,DWORD PTR[8+rsp]
  484. xor eax,r11d
  485. rol ecx,5
  486. xor r14d,DWORD PTR[32+rsp]
  487. lea r12d,DWORD PTR[1859775393+r12*1+rbp]
  488. xor eax,edi
  489. add r12d,ecx
  490. rol esi,30
  491. add r12d,eax
  492. rol r14d,1
  493. xor edx,DWORD PTR[4+rsp]
  494. mov eax,r13d
  495. mov DWORD PTR[rsp],r14d
  496. mov ecx,r12d
  497. xor edx,DWORD PTR[12+rsp]
  498. xor eax,edi
  499. rol ecx,5
  500. xor edx,DWORD PTR[36+rsp]
  501. lea r11d,DWORD PTR[1859775393+r11*1+r14]
  502. xor eax,esi
  503. add r11d,ecx
  504. rol r13d,30
  505. add r11d,eax
  506. rol edx,1
  507. xor ebp,DWORD PTR[8+rsp]
  508. mov eax,r12d
  509. mov DWORD PTR[4+rsp],edx
  510. mov ecx,r11d
  511. xor ebp,DWORD PTR[16+rsp]
  512. xor eax,esi
  513. rol ecx,5
  514. xor ebp,DWORD PTR[40+rsp]
  515. lea edi,DWORD PTR[1859775393+rdi*1+rdx]
  516. xor eax,r13d
  517. add edi,ecx
  518. rol r12d,30
  519. add edi,eax
  520. rol ebp,1
  521. xor r14d,DWORD PTR[12+rsp]
  522. mov eax,r11d
  523. mov DWORD PTR[8+rsp],ebp
  524. mov ecx,edi
  525. xor r14d,DWORD PTR[20+rsp]
  526. xor eax,r13d
  527. rol ecx,5
  528. xor r14d,DWORD PTR[44+rsp]
  529. lea esi,DWORD PTR[1859775393+rsi*1+rbp]
  530. xor eax,r12d
  531. add esi,ecx
  532. rol r11d,30
  533. add esi,eax
  534. rol r14d,1
  535. xor edx,DWORD PTR[16+rsp]
  536. mov eax,edi
  537. mov DWORD PTR[12+rsp],r14d
  538. mov ecx,esi
  539. xor edx,DWORD PTR[24+rsp]
  540. xor eax,r12d
  541. rol ecx,5
  542. xor edx,DWORD PTR[48+rsp]
  543. lea r13d,DWORD PTR[1859775393+r13*1+r14]
  544. xor eax,r11d
  545. add r13d,ecx
  546. rol edi,30
  547. add r13d,eax
  548. rol edx,1
  549. xor ebp,DWORD PTR[20+rsp]
  550. mov eax,esi
  551. mov DWORD PTR[16+rsp],edx
  552. mov ecx,r13d
  553. xor ebp,DWORD PTR[28+rsp]
  554. xor eax,r11d
  555. rol ecx,5
  556. xor ebp,DWORD PTR[52+rsp]
  557. lea r12d,DWORD PTR[1859775393+r12*1+rdx]
  558. xor eax,edi
  559. add r12d,ecx
  560. rol esi,30
  561. add r12d,eax
  562. rol ebp,1
  563. xor r14d,DWORD PTR[24+rsp]
  564. mov eax,r13d
  565. mov DWORD PTR[20+rsp],ebp
  566. mov ecx,r12d
  567. xor r14d,DWORD PTR[32+rsp]
  568. xor eax,edi
  569. rol ecx,5
  570. xor r14d,DWORD PTR[56+rsp]
  571. lea r11d,DWORD PTR[1859775393+r11*1+rbp]
  572. xor eax,esi
  573. add r11d,ecx
  574. rol r13d,30
  575. add r11d,eax
  576. rol r14d,1
  577. xor edx,DWORD PTR[28+rsp]
  578. mov eax,r12d
  579. mov DWORD PTR[24+rsp],r14d
  580. mov ecx,r11d
  581. xor edx,DWORD PTR[36+rsp]
  582. xor eax,esi
  583. rol ecx,5
  584. xor edx,DWORD PTR[60+rsp]
  585. lea edi,DWORD PTR[1859775393+rdi*1+r14]
  586. xor eax,r13d
  587. add edi,ecx
  588. rol r12d,30
  589. add edi,eax
  590. rol edx,1
  591. xor ebp,DWORD PTR[32+rsp]
  592. mov eax,r11d
  593. mov DWORD PTR[28+rsp],edx
  594. mov ecx,edi
  595. xor ebp,DWORD PTR[40+rsp]
  596. xor eax,r13d
  597. rol ecx,5
  598. xor ebp,DWORD PTR[rsp]
  599. lea esi,DWORD PTR[1859775393+rsi*1+rdx]
  600. xor eax,r12d
  601. add esi,ecx
  602. rol r11d,30
  603. add esi,eax
  604. rol ebp,1
  605. xor r14d,DWORD PTR[36+rsp]
  606. mov eax,r12d
  607. mov DWORD PTR[32+rsp],ebp
  608. mov ebx,r12d
  609. xor r14d,DWORD PTR[44+rsp]
  610. and eax,r11d
  611. mov ecx,esi
  612. xor r14d,DWORD PTR[4+rsp]
  613. lea r13d,DWORD PTR[((-1894007588))+r13*1+rbp]
  614. xor ebx,r11d
  615. rol ecx,5
  616. add r13d,eax
  617. rol r14d,1
  618. and ebx,edi
  619. add r13d,ecx
  620. rol edi,30
  621. add r13d,ebx
  622. xor edx,DWORD PTR[40+rsp]
  623. mov eax,r11d
  624. mov DWORD PTR[36+rsp],r14d
  625. mov ebx,r11d
  626. xor edx,DWORD PTR[48+rsp]
  627. and eax,edi
  628. mov ecx,r13d
  629. xor edx,DWORD PTR[8+rsp]
  630. lea r12d,DWORD PTR[((-1894007588))+r12*1+r14]
  631. xor ebx,edi
  632. rol ecx,5
  633. add r12d,eax
  634. rol edx,1
  635. and ebx,esi
  636. add r12d,ecx
  637. rol esi,30
  638. add r12d,ebx
  639. xor ebp,DWORD PTR[44+rsp]
  640. mov eax,edi
  641. mov DWORD PTR[40+rsp],edx
  642. mov ebx,edi
  643. xor ebp,DWORD PTR[52+rsp]
  644. and eax,esi
  645. mov ecx,r12d
  646. xor ebp,DWORD PTR[12+rsp]
  647. lea r11d,DWORD PTR[((-1894007588))+r11*1+rdx]
  648. xor ebx,esi
  649. rol ecx,5
  650. add r11d,eax
  651. rol ebp,1
  652. and ebx,r13d
  653. add r11d,ecx
  654. rol r13d,30
  655. add r11d,ebx
  656. xor r14d,DWORD PTR[48+rsp]
  657. mov eax,esi
  658. mov DWORD PTR[44+rsp],ebp
  659. mov ebx,esi
  660. xor r14d,DWORD PTR[56+rsp]
  661. and eax,r13d
  662. mov ecx,r11d
  663. xor r14d,DWORD PTR[16+rsp]
  664. lea edi,DWORD PTR[((-1894007588))+rdi*1+rbp]
  665. xor ebx,r13d
  666. rol ecx,5
  667. add edi,eax
  668. rol r14d,1
  669. and ebx,r12d
  670. add edi,ecx
  671. rol r12d,30
  672. add edi,ebx
  673. xor edx,DWORD PTR[52+rsp]
  674. mov eax,r13d
  675. mov DWORD PTR[48+rsp],r14d
  676. mov ebx,r13d
  677. xor edx,DWORD PTR[60+rsp]
  678. and eax,r12d
  679. mov ecx,edi
  680. xor edx,DWORD PTR[20+rsp]
  681. lea esi,DWORD PTR[((-1894007588))+rsi*1+r14]
  682. xor ebx,r12d
  683. rol ecx,5
  684. add esi,eax
  685. rol edx,1
  686. and ebx,r11d
  687. add esi,ecx
  688. rol r11d,30
  689. add esi,ebx
  690. xor ebp,DWORD PTR[56+rsp]
  691. mov eax,r12d
  692. mov DWORD PTR[52+rsp],edx
  693. mov ebx,r12d
  694. xor ebp,DWORD PTR[rsp]
  695. and eax,r11d
  696. mov ecx,esi
  697. xor ebp,DWORD PTR[24+rsp]
  698. lea r13d,DWORD PTR[((-1894007588))+r13*1+rdx]
  699. xor ebx,r11d
  700. rol ecx,5
  701. add r13d,eax
  702. rol ebp,1
  703. and ebx,edi
  704. add r13d,ecx
  705. rol edi,30
  706. add r13d,ebx
  707. xor r14d,DWORD PTR[60+rsp]
  708. mov eax,r11d
  709. mov DWORD PTR[56+rsp],ebp
  710. mov ebx,r11d
  711. xor r14d,DWORD PTR[4+rsp]
  712. and eax,edi
  713. mov ecx,r13d
  714. xor r14d,DWORD PTR[28+rsp]
  715. lea r12d,DWORD PTR[((-1894007588))+r12*1+rbp]
  716. xor ebx,edi
  717. rol ecx,5
  718. add r12d,eax
  719. rol r14d,1
  720. and ebx,esi
  721. add r12d,ecx
  722. rol esi,30
  723. add r12d,ebx
  724. xor edx,DWORD PTR[rsp]
  725. mov eax,edi
  726. mov DWORD PTR[60+rsp],r14d
  727. mov ebx,edi
  728. xor edx,DWORD PTR[8+rsp]
  729. and eax,esi
  730. mov ecx,r12d
  731. xor edx,DWORD PTR[32+rsp]
  732. lea r11d,DWORD PTR[((-1894007588))+r11*1+r14]
  733. xor ebx,esi
  734. rol ecx,5
  735. add r11d,eax
  736. rol edx,1
  737. and ebx,r13d
  738. add r11d,ecx
  739. rol r13d,30
  740. add r11d,ebx
  741. xor ebp,DWORD PTR[4+rsp]
  742. mov eax,esi
  743. mov DWORD PTR[rsp],edx
  744. mov ebx,esi
  745. xor ebp,DWORD PTR[12+rsp]
  746. and eax,r13d
  747. mov ecx,r11d
  748. xor ebp,DWORD PTR[36+rsp]
  749. lea edi,DWORD PTR[((-1894007588))+rdi*1+rdx]
  750. xor ebx,r13d
  751. rol ecx,5
  752. add edi,eax
  753. rol ebp,1
  754. and ebx,r12d
  755. add edi,ecx
  756. rol r12d,30
  757. add edi,ebx
  758. xor r14d,DWORD PTR[8+rsp]
  759. mov eax,r13d
  760. mov DWORD PTR[4+rsp],ebp
  761. mov ebx,r13d
  762. xor r14d,DWORD PTR[16+rsp]
  763. and eax,r12d
  764. mov ecx,edi
  765. xor r14d,DWORD PTR[40+rsp]
  766. lea esi,DWORD PTR[((-1894007588))+rsi*1+rbp]
  767. xor ebx,r12d
  768. rol ecx,5
  769. add esi,eax
  770. rol r14d,1
  771. and ebx,r11d
  772. add esi,ecx
  773. rol r11d,30
  774. add esi,ebx
  775. xor edx,DWORD PTR[12+rsp]
  776. mov eax,r12d
  777. mov DWORD PTR[8+rsp],r14d
  778. mov ebx,r12d
  779. xor edx,DWORD PTR[20+rsp]
  780. and eax,r11d
  781. mov ecx,esi
  782. xor edx,DWORD PTR[44+rsp]
  783. lea r13d,DWORD PTR[((-1894007588))+r13*1+r14]
  784. xor ebx,r11d
  785. rol ecx,5
  786. add r13d,eax
  787. rol edx,1
  788. and ebx,edi
  789. add r13d,ecx
  790. rol edi,30
  791. add r13d,ebx
  792. xor ebp,DWORD PTR[16+rsp]
  793. mov eax,r11d
  794. mov DWORD PTR[12+rsp],edx
  795. mov ebx,r11d
  796. xor ebp,DWORD PTR[24+rsp]
  797. and eax,edi
  798. mov ecx,r13d
  799. xor ebp,DWORD PTR[48+rsp]
  800. lea r12d,DWORD PTR[((-1894007588))+r12*1+rdx]
  801. xor ebx,edi
  802. rol ecx,5
  803. add r12d,eax
  804. rol ebp,1
  805. and ebx,esi
  806. add r12d,ecx
  807. rol esi,30
  808. add r12d,ebx
  809. xor r14d,DWORD PTR[20+rsp]
  810. mov eax,edi
  811. mov DWORD PTR[16+rsp],ebp
  812. mov ebx,edi
  813. xor r14d,DWORD PTR[28+rsp]
  814. and eax,esi
  815. mov ecx,r12d
  816. xor r14d,DWORD PTR[52+rsp]
  817. lea r11d,DWORD PTR[((-1894007588))+r11*1+rbp]
  818. xor ebx,esi
  819. rol ecx,5
  820. add r11d,eax
  821. rol r14d,1
  822. and ebx,r13d
  823. add r11d,ecx
  824. rol r13d,30
  825. add r11d,ebx
  826. xor edx,DWORD PTR[24+rsp]
  827. mov eax,esi
  828. mov DWORD PTR[20+rsp],r14d
  829. mov ebx,esi
  830. xor edx,DWORD PTR[32+rsp]
  831. and eax,r13d
  832. mov ecx,r11d
  833. xor edx,DWORD PTR[56+rsp]
  834. lea edi,DWORD PTR[((-1894007588))+rdi*1+r14]
  835. xor ebx,r13d
  836. rol ecx,5
  837. add edi,eax
  838. rol edx,1
  839. and ebx,r12d
  840. add edi,ecx
  841. rol r12d,30
  842. add edi,ebx
  843. xor ebp,DWORD PTR[28+rsp]
  844. mov eax,r13d
  845. mov DWORD PTR[24+rsp],edx
  846. mov ebx,r13d
  847. xor ebp,DWORD PTR[36+rsp]
  848. and eax,r12d
  849. mov ecx,edi
  850. xor ebp,DWORD PTR[60+rsp]
  851. lea esi,DWORD PTR[((-1894007588))+rsi*1+rdx]
  852. xor ebx,r12d
  853. rol ecx,5
  854. add esi,eax
  855. rol ebp,1
  856. and ebx,r11d
  857. add esi,ecx
  858. rol r11d,30
  859. add esi,ebx
  860. xor r14d,DWORD PTR[32+rsp]
  861. mov eax,r12d
  862. mov DWORD PTR[28+rsp],ebp
  863. mov ebx,r12d
  864. xor r14d,DWORD PTR[40+rsp]
  865. and eax,r11d
  866. mov ecx,esi
  867. xor r14d,DWORD PTR[rsp]
  868. lea r13d,DWORD PTR[((-1894007588))+r13*1+rbp]
  869. xor ebx,r11d
  870. rol ecx,5
  871. add r13d,eax
  872. rol r14d,1
  873. and ebx,edi
  874. add r13d,ecx
  875. rol edi,30
  876. add r13d,ebx
  877. xor edx,DWORD PTR[36+rsp]
  878. mov eax,r11d
  879. mov DWORD PTR[32+rsp],r14d
  880. mov ebx,r11d
  881. xor edx,DWORD PTR[44+rsp]
  882. and eax,edi
  883. mov ecx,r13d
  884. xor edx,DWORD PTR[4+rsp]
  885. lea r12d,DWORD PTR[((-1894007588))+r12*1+r14]
  886. xor ebx,edi
  887. rol ecx,5
  888. add r12d,eax
  889. rol edx,1
  890. and ebx,esi
  891. add r12d,ecx
  892. rol esi,30
  893. add r12d,ebx
  894. xor ebp,DWORD PTR[40+rsp]
  895. mov eax,edi
  896. mov DWORD PTR[36+rsp],edx
  897. mov ebx,edi
  898. xor ebp,DWORD PTR[48+rsp]
  899. and eax,esi
  900. mov ecx,r12d
  901. xor ebp,DWORD PTR[8+rsp]
  902. lea r11d,DWORD PTR[((-1894007588))+r11*1+rdx]
  903. xor ebx,esi
  904. rol ecx,5
  905. add r11d,eax
  906. rol ebp,1
  907. and ebx,r13d
  908. add r11d,ecx
  909. rol r13d,30
  910. add r11d,ebx
  911. xor r14d,DWORD PTR[44+rsp]
  912. mov eax,esi
  913. mov DWORD PTR[40+rsp],ebp
  914. mov ebx,esi
  915. xor r14d,DWORD PTR[52+rsp]
  916. and eax,r13d
  917. mov ecx,r11d
  918. xor r14d,DWORD PTR[12+rsp]
  919. lea edi,DWORD PTR[((-1894007588))+rdi*1+rbp]
  920. xor ebx,r13d
  921. rol ecx,5
  922. add edi,eax
  923. rol r14d,1
  924. and ebx,r12d
  925. add edi,ecx
  926. rol r12d,30
  927. add edi,ebx
  928. xor edx,DWORD PTR[48+rsp]
  929. mov eax,r13d
  930. mov DWORD PTR[44+rsp],r14d
  931. mov ebx,r13d
  932. xor edx,DWORD PTR[56+rsp]
  933. and eax,r12d
  934. mov ecx,edi
  935. xor edx,DWORD PTR[16+rsp]
  936. lea esi,DWORD PTR[((-1894007588))+rsi*1+r14]
  937. xor ebx,r12d
  938. rol ecx,5
  939. add esi,eax
  940. rol edx,1
  941. and ebx,r11d
  942. add esi,ecx
  943. rol r11d,30
  944. add esi,ebx
  945. xor ebp,DWORD PTR[52+rsp]
  946. mov eax,edi
  947. mov DWORD PTR[48+rsp],edx
  948. mov ecx,esi
  949. xor ebp,DWORD PTR[60+rsp]
  950. xor eax,r12d
  951. rol ecx,5
  952. xor ebp,DWORD PTR[20+rsp]
  953. lea r13d,DWORD PTR[((-899497514))+r13*1+rdx]
  954. xor eax,r11d
  955. add r13d,ecx
  956. rol edi,30
  957. add r13d,eax
  958. rol ebp,1
  959. xor r14d,DWORD PTR[56+rsp]
  960. mov eax,esi
  961. mov DWORD PTR[52+rsp],ebp
  962. mov ecx,r13d
  963. xor r14d,DWORD PTR[rsp]
  964. xor eax,r11d
  965. rol ecx,5
  966. xor r14d,DWORD PTR[24+rsp]
  967. lea r12d,DWORD PTR[((-899497514))+r12*1+rbp]
  968. xor eax,edi
  969. add r12d,ecx
  970. rol esi,30
  971. add r12d,eax
  972. rol r14d,1
  973. xor edx,DWORD PTR[60+rsp]
  974. mov eax,r13d
  975. mov DWORD PTR[56+rsp],r14d
  976. mov ecx,r12d
  977. xor edx,DWORD PTR[4+rsp]
  978. xor eax,edi
  979. rol ecx,5
  980. xor edx,DWORD PTR[28+rsp]
  981. lea r11d,DWORD PTR[((-899497514))+r11*1+r14]
  982. xor eax,esi
  983. add r11d,ecx
  984. rol r13d,30
  985. add r11d,eax
  986. rol edx,1
  987. xor ebp,DWORD PTR[rsp]
  988. mov eax,r12d
  989. mov DWORD PTR[60+rsp],edx
  990. mov ecx,r11d
  991. xor ebp,DWORD PTR[8+rsp]
  992. xor eax,esi
  993. rol ecx,5
  994. xor ebp,DWORD PTR[32+rsp]
  995. lea edi,DWORD PTR[((-899497514))+rdi*1+rdx]
  996. xor eax,r13d
  997. add edi,ecx
  998. rol r12d,30
  999. add edi,eax
  1000. rol ebp,1
  1001. xor r14d,DWORD PTR[4+rsp]
  1002. mov eax,r11d
  1003. mov DWORD PTR[rsp],ebp
  1004. mov ecx,edi
  1005. xor r14d,DWORD PTR[12+rsp]
  1006. xor eax,r13d
  1007. rol ecx,5
  1008. xor r14d,DWORD PTR[36+rsp]
  1009. lea esi,DWORD PTR[((-899497514))+rsi*1+rbp]
  1010. xor eax,r12d
  1011. add esi,ecx
  1012. rol r11d,30
  1013. add esi,eax
  1014. rol r14d,1
  1015. xor edx,DWORD PTR[8+rsp]
  1016. mov eax,edi
  1017. mov DWORD PTR[4+rsp],r14d
  1018. mov ecx,esi
  1019. xor edx,DWORD PTR[16+rsp]
  1020. xor eax,r12d
  1021. rol ecx,5
  1022. xor edx,DWORD PTR[40+rsp]
  1023. lea r13d,DWORD PTR[((-899497514))+r13*1+r14]
  1024. xor eax,r11d
  1025. add r13d,ecx
  1026. rol edi,30
  1027. add r13d,eax
  1028. rol edx,1
  1029. xor ebp,DWORD PTR[12+rsp]
  1030. mov eax,esi
  1031. mov DWORD PTR[8+rsp],edx
  1032. mov ecx,r13d
  1033. xor ebp,DWORD PTR[20+rsp]
  1034. xor eax,r11d
  1035. rol ecx,5
  1036. xor ebp,DWORD PTR[44+rsp]
  1037. lea r12d,DWORD PTR[((-899497514))+r12*1+rdx]
  1038. xor eax,edi
  1039. add r12d,ecx
  1040. rol esi,30
  1041. add r12d,eax
  1042. rol ebp,1
  1043. xor r14d,DWORD PTR[16+rsp]
  1044. mov eax,r13d
  1045. mov DWORD PTR[12+rsp],ebp
  1046. mov ecx,r12d
  1047. xor r14d,DWORD PTR[24+rsp]
  1048. xor eax,edi
  1049. rol ecx,5
  1050. xor r14d,DWORD PTR[48+rsp]
  1051. lea r11d,DWORD PTR[((-899497514))+r11*1+rbp]
  1052. xor eax,esi
  1053. add r11d,ecx
  1054. rol r13d,30
  1055. add r11d,eax
  1056. rol r14d,1
  1057. xor edx,DWORD PTR[20+rsp]
  1058. mov eax,r12d
  1059. mov DWORD PTR[16+rsp],r14d
  1060. mov ecx,r11d
  1061. xor edx,DWORD PTR[28+rsp]
  1062. xor eax,esi
  1063. rol ecx,5
  1064. xor edx,DWORD PTR[52+rsp]
  1065. lea edi,DWORD PTR[((-899497514))+rdi*1+r14]
  1066. xor eax,r13d
  1067. add edi,ecx
  1068. rol r12d,30
  1069. add edi,eax
  1070. rol edx,1
  1071. xor ebp,DWORD PTR[24+rsp]
  1072. mov eax,r11d
  1073. mov DWORD PTR[20+rsp],edx
  1074. mov ecx,edi
  1075. xor ebp,DWORD PTR[32+rsp]
  1076. xor eax,r13d
  1077. rol ecx,5
  1078. xor ebp,DWORD PTR[56+rsp]
  1079. lea esi,DWORD PTR[((-899497514))+rsi*1+rdx]
  1080. xor eax,r12d
  1081. add esi,ecx
  1082. rol r11d,30
  1083. add esi,eax
  1084. rol ebp,1
  1085. xor r14d,DWORD PTR[28+rsp]
  1086. mov eax,edi
  1087. mov DWORD PTR[24+rsp],ebp
  1088. mov ecx,esi
  1089. xor r14d,DWORD PTR[36+rsp]
  1090. xor eax,r12d
  1091. rol ecx,5
  1092. xor r14d,DWORD PTR[60+rsp]
  1093. lea r13d,DWORD PTR[((-899497514))+r13*1+rbp]
  1094. xor eax,r11d
  1095. add r13d,ecx
  1096. rol edi,30
  1097. add r13d,eax
  1098. rol r14d,1
  1099. xor edx,DWORD PTR[32+rsp]
  1100. mov eax,esi
  1101. mov DWORD PTR[28+rsp],r14d
  1102. mov ecx,r13d
  1103. xor edx,DWORD PTR[40+rsp]
  1104. xor eax,r11d
  1105. rol ecx,5
  1106. xor edx,DWORD PTR[rsp]
  1107. lea r12d,DWORD PTR[((-899497514))+r12*1+r14]
  1108. xor eax,edi
  1109. add r12d,ecx
  1110. rol esi,30
  1111. add r12d,eax
  1112. rol edx,1
  1113. xor ebp,DWORD PTR[36+rsp]
  1114. mov eax,r13d
  1115. mov ecx,r12d
  1116. xor ebp,DWORD PTR[44+rsp]
  1117. xor eax,edi
  1118. rol ecx,5
  1119. xor ebp,DWORD PTR[4+rsp]
  1120. lea r11d,DWORD PTR[((-899497514))+r11*1+rdx]
  1121. xor eax,esi
  1122. add r11d,ecx
  1123. rol r13d,30
  1124. add r11d,eax
  1125. rol ebp,1
  1126. xor r14d,DWORD PTR[40+rsp]
  1127. mov eax,r12d
  1128. mov ecx,r11d
  1129. xor r14d,DWORD PTR[48+rsp]
  1130. xor eax,esi
  1131. rol ecx,5
  1132. xor r14d,DWORD PTR[8+rsp]
  1133. lea edi,DWORD PTR[((-899497514))+rdi*1+rbp]
  1134. xor eax,r13d
  1135. add edi,ecx
  1136. rol r12d,30
  1137. add edi,eax
  1138. rol r14d,1
  1139. xor edx,DWORD PTR[44+rsp]
  1140. mov eax,r11d
  1141. mov ecx,edi
  1142. xor edx,DWORD PTR[52+rsp]
  1143. xor eax,r13d
  1144. rol ecx,5
  1145. xor edx,DWORD PTR[12+rsp]
  1146. lea esi,DWORD PTR[((-899497514))+rsi*1+r14]
  1147. xor eax,r12d
  1148. add esi,ecx
  1149. rol r11d,30
  1150. add esi,eax
  1151. rol edx,1
  1152. xor ebp,DWORD PTR[48+rsp]
  1153. mov eax,edi
  1154. mov ecx,esi
  1155. xor ebp,DWORD PTR[56+rsp]
  1156. xor eax,r12d
  1157. rol ecx,5
  1158. xor ebp,DWORD PTR[16+rsp]
  1159. lea r13d,DWORD PTR[((-899497514))+r13*1+rdx]
  1160. xor eax,r11d
  1161. add r13d,ecx
  1162. rol edi,30
  1163. add r13d,eax
  1164. rol ebp,1
  1165. xor r14d,DWORD PTR[52+rsp]
  1166. mov eax,esi
  1167. mov ecx,r13d
  1168. xor r14d,DWORD PTR[60+rsp]
  1169. xor eax,r11d
  1170. rol ecx,5
  1171. xor r14d,DWORD PTR[20+rsp]
  1172. lea r12d,DWORD PTR[((-899497514))+r12*1+rbp]
  1173. xor eax,edi
  1174. add r12d,ecx
  1175. rol esi,30
  1176. add r12d,eax
  1177. rol r14d,1
  1178. xor edx,DWORD PTR[56+rsp]
  1179. mov eax,r13d
  1180. mov ecx,r12d
  1181. xor edx,DWORD PTR[rsp]
  1182. xor eax,edi
  1183. rol ecx,5
  1184. xor edx,DWORD PTR[24+rsp]
  1185. lea r11d,DWORD PTR[((-899497514))+r11*1+r14]
  1186. xor eax,esi
  1187. add r11d,ecx
  1188. rol r13d,30
  1189. add r11d,eax
  1190. rol edx,1
  1191. xor ebp,DWORD PTR[60+rsp]
  1192. mov eax,r12d
  1193. mov ecx,r11d
  1194. xor ebp,DWORD PTR[4+rsp]
  1195. xor eax,esi
  1196. rol ecx,5
  1197. xor ebp,DWORD PTR[28+rsp]
  1198. lea edi,DWORD PTR[((-899497514))+rdi*1+rdx]
  1199. xor eax,r13d
  1200. add edi,ecx
  1201. rol r12d,30
  1202. add edi,eax
  1203. rol ebp,1
  1204. mov eax,r11d
  1205. mov ecx,edi
  1206. xor eax,r13d
  1207. lea esi,DWORD PTR[((-899497514))+rsi*1+rbp]
  1208. rol ecx,5
  1209. xor eax,r12d
  1210. add esi,ecx
  1211. rol r11d,30
  1212. add esi,eax
  1213. add esi,DWORD PTR[r8]
  1214. add edi,DWORD PTR[4+r8]
  1215. add r11d,DWORD PTR[8+r8]
  1216. add r12d,DWORD PTR[12+r8]
  1217. add r13d,DWORD PTR[16+r8]
  1218. mov DWORD PTR[r8],esi
  1219. mov DWORD PTR[4+r8],edi
  1220. mov DWORD PTR[8+r8],r11d
  1221. mov DWORD PTR[12+r8],r12d
  1222. mov DWORD PTR[16+r8],r13d
  1223. sub r10,1
  1224. lea r9,QWORD PTR[64+r9]
  1225. jnz $L$loop
  1226. mov rsi,QWORD PTR[64+rsp]
  1227. mov r14,QWORD PTR[((-40))+rsi]
  1228. mov r13,QWORD PTR[((-32))+rsi]
  1229. mov r12,QWORD PTR[((-24))+rsi]
  1230. mov rbp,QWORD PTR[((-16))+rsi]
  1231. mov rbx,QWORD PTR[((-8))+rsi]
  1232. lea rsp,QWORD PTR[rsi]
  1233. $L$epilogue::
  1234. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  1235. mov rsi,QWORD PTR[16+rsp]
  1236. DB 0F3h,0C3h ;repret
  1237. $L$SEH_end_sha1_block_data_order::
  1238. sha1_block_data_order ENDP
  1239. ALIGN 32
  1240. sha1_block_data_order_shaext PROC PRIVATE
  1241. mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
  1242. mov QWORD PTR[16+rsp],rsi
  1243. mov rax,rsp
  1244. $L$SEH_begin_sha1_block_data_order_shaext::
  1245. mov rdi,rcx
  1246. mov rsi,rdx
  1247. mov rdx,r8
  1248. _shaext_shortcut::
  1249. lea rsp,QWORD PTR[((-72))+rsp]
  1250. movaps XMMWORD PTR[(-8-64)+rax],xmm6
  1251. movaps XMMWORD PTR[(-8-48)+rax],xmm7
  1252. movaps XMMWORD PTR[(-8-32)+rax],xmm8
  1253. movaps XMMWORD PTR[(-8-16)+rax],xmm9
  1254. $L$prologue_shaext::
  1255. movdqu xmm0,XMMWORD PTR[rdi]
  1256. movd xmm1,DWORD PTR[16+rdi]
  1257. movdqa xmm3,XMMWORD PTR[((K_XX_XX+160))]
  1258. movdqu xmm4,XMMWORD PTR[rsi]
  1259. pshufd xmm0,xmm0,27
  1260. movdqu xmm5,XMMWORD PTR[16+rsi]
  1261. pshufd xmm1,xmm1,27
  1262. movdqu xmm6,XMMWORD PTR[32+rsi]
  1263. DB 102,15,56,0,227
  1264. movdqu xmm7,XMMWORD PTR[48+rsi]
  1265. DB 102,15,56,0,235
  1266. DB 102,15,56,0,243
  1267. movdqa xmm9,xmm1
  1268. DB 102,15,56,0,251
  1269. jmp $L$oop_shaext
  1270. ALIGN 16
  1271. $L$oop_shaext::
  1272. dec rdx
  1273. lea r8,QWORD PTR[64+rsi]
  1274. paddd xmm1,xmm4
  1275. cmovne rsi,r8
  1276. movdqa xmm8,xmm0
  1277. DB 15,56,201,229
  1278. movdqa xmm2,xmm0
  1279. DB 15,58,204,193,0
  1280. DB 15,56,200,213
  1281. pxor xmm4,xmm6
  1282. DB 15,56,201,238
  1283. DB 15,56,202,231
  1284. movdqa xmm1,xmm0
  1285. DB 15,58,204,194,0
  1286. DB 15,56,200,206
  1287. pxor xmm5,xmm7
  1288. DB 15,56,202,236
  1289. DB 15,56,201,247
  1290. movdqa xmm2,xmm0
  1291. DB 15,58,204,193,0
  1292. DB 15,56,200,215
  1293. pxor xmm6,xmm4
  1294. DB 15,56,201,252
  1295. DB 15,56,202,245
  1296. movdqa xmm1,xmm0
  1297. DB 15,58,204,194,0
  1298. DB 15,56,200,204
  1299. pxor xmm7,xmm5
  1300. DB 15,56,202,254
  1301. DB 15,56,201,229
  1302. movdqa xmm2,xmm0
  1303. DB 15,58,204,193,0
  1304. DB 15,56,200,213
  1305. pxor xmm4,xmm6
  1306. DB 15,56,201,238
  1307. DB 15,56,202,231
  1308. movdqa xmm1,xmm0
  1309. DB 15,58,204,194,1
  1310. DB 15,56,200,206
  1311. pxor xmm5,xmm7
  1312. DB 15,56,202,236
  1313. DB 15,56,201,247
  1314. movdqa xmm2,xmm0
  1315. DB 15,58,204,193,1
  1316. DB 15,56,200,215
  1317. pxor xmm6,xmm4
  1318. DB 15,56,201,252
  1319. DB 15,56,202,245
  1320. movdqa xmm1,xmm0
  1321. DB 15,58,204,194,1
  1322. DB 15,56,200,204
  1323. pxor xmm7,xmm5
  1324. DB 15,56,202,254
  1325. DB 15,56,201,229
  1326. movdqa xmm2,xmm0
  1327. DB 15,58,204,193,1
  1328. DB 15,56,200,213
  1329. pxor xmm4,xmm6
  1330. DB 15,56,201,238
  1331. DB 15,56,202,231
  1332. movdqa xmm1,xmm0
  1333. DB 15,58,204,194,1
  1334. DB 15,56,200,206
  1335. pxor xmm5,xmm7
  1336. DB 15,56,202,236
  1337. DB 15,56,201,247
  1338. movdqa xmm2,xmm0
  1339. DB 15,58,204,193,2
  1340. DB 15,56,200,215
  1341. pxor xmm6,xmm4
  1342. DB 15,56,201,252
  1343. DB 15,56,202,245
  1344. movdqa xmm1,xmm0
  1345. DB 15,58,204,194,2
  1346. DB 15,56,200,204
  1347. pxor xmm7,xmm5
  1348. DB 15,56,202,254
  1349. DB 15,56,201,229
  1350. movdqa xmm2,xmm0
  1351. DB 15,58,204,193,2
  1352. DB 15,56,200,213
  1353. pxor xmm4,xmm6
  1354. DB 15,56,201,238
  1355. DB 15,56,202,231
  1356. movdqa xmm1,xmm0
  1357. DB 15,58,204,194,2
  1358. DB 15,56,200,206
  1359. pxor xmm5,xmm7
  1360. DB 15,56,202,236
  1361. DB 15,56,201,247
  1362. movdqa xmm2,xmm0
  1363. DB 15,58,204,193,2
  1364. DB 15,56,200,215
  1365. pxor xmm6,xmm4
  1366. DB 15,56,201,252
  1367. DB 15,56,202,245
  1368. movdqa xmm1,xmm0
  1369. DB 15,58,204,194,3
  1370. DB 15,56,200,204
  1371. pxor xmm7,xmm5
  1372. DB 15,56,202,254
  1373. movdqu xmm4,XMMWORD PTR[rsi]
  1374. movdqa xmm2,xmm0
  1375. DB 15,58,204,193,3
  1376. DB 15,56,200,213
  1377. movdqu xmm5,XMMWORD PTR[16+rsi]
  1378. DB 102,15,56,0,227
  1379. movdqa xmm1,xmm0
  1380. DB 15,58,204,194,3
  1381. DB 15,56,200,206
  1382. movdqu xmm6,XMMWORD PTR[32+rsi]
  1383. DB 102,15,56,0,235
  1384. movdqa xmm2,xmm0
  1385. DB 15,58,204,193,3
  1386. DB 15,56,200,215
  1387. movdqu xmm7,XMMWORD PTR[48+rsi]
  1388. DB 102,15,56,0,243
  1389. movdqa xmm1,xmm0
  1390. DB 15,58,204,194,3
  1391. DB 65,15,56,200,201
  1392. DB 102,15,56,0,251
  1393. paddd xmm0,xmm8
  1394. movdqa xmm9,xmm1
  1395. jnz $L$oop_shaext
  1396. pshufd xmm0,xmm0,27
  1397. pshufd xmm1,xmm1,27
  1398. movdqu XMMWORD PTR[rdi],xmm0
  1399. movd DWORD PTR[16+rdi],xmm1
  1400. movaps xmm6,XMMWORD PTR[((-8-64))+rax]
  1401. movaps xmm7,XMMWORD PTR[((-8-48))+rax]
  1402. movaps xmm8,XMMWORD PTR[((-8-32))+rax]
  1403. movaps xmm9,XMMWORD PTR[((-8-16))+rax]
  1404. mov rsp,rax
  1405. $L$epilogue_shaext::
  1406. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  1407. mov rsi,QWORD PTR[16+rsp]
  1408. DB 0F3h,0C3h ;repret
  1409. $L$SEH_end_sha1_block_data_order_shaext::
  1410. sha1_block_data_order_shaext ENDP
  1411. ALIGN 16
  1412. sha1_block_data_order_ssse3 PROC PRIVATE
  1413. mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
  1414. mov QWORD PTR[16+rsp],rsi
  1415. mov rax,rsp
  1416. $L$SEH_begin_sha1_block_data_order_ssse3::
  1417. mov rdi,rcx
  1418. mov rsi,rdx
  1419. mov rdx,r8
  1420. _ssse3_shortcut::
  1421. mov r11,rsp
  1422. push rbx
  1423. push rbp
  1424. push r12
  1425. push r13
  1426. push r14
  1427. lea rsp,QWORD PTR[((-160))+rsp]
  1428. movaps XMMWORD PTR[(-40-96)+r11],xmm6
  1429. movaps XMMWORD PTR[(-40-80)+r11],xmm7
  1430. movaps XMMWORD PTR[(-40-64)+r11],xmm8
  1431. movaps XMMWORD PTR[(-40-48)+r11],xmm9
  1432. movaps XMMWORD PTR[(-40-32)+r11],xmm10
  1433. movaps XMMWORD PTR[(-40-16)+r11],xmm11
  1434. $L$prologue_ssse3::
  1435. and rsp,-64
  1436. mov r8,rdi
  1437. mov r9,rsi
  1438. mov r10,rdx
  1439. shl r10,6
  1440. add r10,r9
  1441. lea r14,QWORD PTR[((K_XX_XX+64))]
  1442. mov eax,DWORD PTR[r8]
  1443. mov ebx,DWORD PTR[4+r8]
  1444. mov ecx,DWORD PTR[8+r8]
  1445. mov edx,DWORD PTR[12+r8]
  1446. mov esi,ebx
  1447. mov ebp,DWORD PTR[16+r8]
  1448. mov edi,ecx
  1449. xor edi,edx
  1450. and esi,edi
  1451. movdqa xmm6,XMMWORD PTR[64+r14]
  1452. movdqa xmm9,XMMWORD PTR[((-64))+r14]
  1453. movdqu xmm0,XMMWORD PTR[r9]
  1454. movdqu xmm1,XMMWORD PTR[16+r9]
  1455. movdqu xmm2,XMMWORD PTR[32+r9]
  1456. movdqu xmm3,XMMWORD PTR[48+r9]
  1457. DB 102,15,56,0,198
  1458. DB 102,15,56,0,206
  1459. DB 102,15,56,0,214
  1460. add r9,64
  1461. paddd xmm0,xmm9
  1462. DB 102,15,56,0,222
  1463. paddd xmm1,xmm9
  1464. paddd xmm2,xmm9
  1465. movdqa XMMWORD PTR[rsp],xmm0
  1466. psubd xmm0,xmm9
  1467. movdqa XMMWORD PTR[16+rsp],xmm1
  1468. psubd xmm1,xmm9
  1469. movdqa XMMWORD PTR[32+rsp],xmm2
  1470. psubd xmm2,xmm9
  1471. jmp $L$oop_ssse3
  1472. ALIGN 16
  1473. $L$oop_ssse3::
  1474. ror ebx,2
  1475. pshufd xmm4,xmm0,238
  1476. xor esi,edx
  1477. movdqa xmm8,xmm3
  1478. paddd xmm9,xmm3
  1479. mov edi,eax
  1480. add ebp,DWORD PTR[rsp]
  1481. punpcklqdq xmm4,xmm1
  1482. xor ebx,ecx
  1483. rol eax,5
  1484. add ebp,esi
  1485. psrldq xmm8,4
  1486. and edi,ebx
  1487. xor ebx,ecx
  1488. pxor xmm4,xmm0
  1489. add ebp,eax
  1490. ror eax,7
  1491. pxor xmm8,xmm2
  1492. xor edi,ecx
  1493. mov esi,ebp
  1494. add edx,DWORD PTR[4+rsp]
  1495. pxor xmm4,xmm8
  1496. xor eax,ebx
  1497. rol ebp,5
  1498. movdqa XMMWORD PTR[48+rsp],xmm9
  1499. add edx,edi
  1500. and esi,eax
  1501. movdqa xmm10,xmm4
  1502. xor eax,ebx
  1503. add edx,ebp
  1504. ror ebp,7
  1505. movdqa xmm8,xmm4
  1506. xor esi,ebx
  1507. pslldq xmm10,12
  1508. paddd xmm4,xmm4
  1509. mov edi,edx
  1510. add ecx,DWORD PTR[8+rsp]
  1511. psrld xmm8,31
  1512. xor ebp,eax
  1513. rol edx,5
  1514. add ecx,esi
  1515. movdqa xmm9,xmm10
  1516. and edi,ebp
  1517. xor ebp,eax
  1518. psrld xmm10,30
  1519. add ecx,edx
  1520. ror edx,7
  1521. por xmm4,xmm8
  1522. xor edi,eax
  1523. mov esi,ecx
  1524. add ebx,DWORD PTR[12+rsp]
  1525. pslld xmm9,2
  1526. pxor xmm4,xmm10
  1527. xor edx,ebp
  1528. movdqa xmm10,XMMWORD PTR[((-64))+r14]
  1529. rol ecx,5
  1530. add ebx,edi
  1531. and esi,edx
  1532. pxor xmm4,xmm9
  1533. xor edx,ebp
  1534. add ebx,ecx
  1535. ror ecx,7
  1536. pshufd xmm5,xmm1,238
  1537. xor esi,ebp
  1538. movdqa xmm9,xmm4
  1539. paddd xmm10,xmm4
  1540. mov edi,ebx
  1541. add eax,DWORD PTR[16+rsp]
  1542. punpcklqdq xmm5,xmm2
  1543. xor ecx,edx
  1544. rol ebx,5
  1545. add eax,esi
  1546. psrldq xmm9,4
  1547. and edi,ecx
  1548. xor ecx,edx
  1549. pxor xmm5,xmm1
  1550. add eax,ebx
  1551. ror ebx,7
  1552. pxor xmm9,xmm3
  1553. xor edi,edx
  1554. mov esi,eax
  1555. add ebp,DWORD PTR[20+rsp]
  1556. pxor xmm5,xmm9
  1557. xor ebx,ecx
  1558. rol eax,5
  1559. movdqa XMMWORD PTR[rsp],xmm10
  1560. add ebp,edi
  1561. and esi,ebx
  1562. movdqa xmm8,xmm5
  1563. xor ebx,ecx
  1564. add ebp,eax
  1565. ror eax,7
  1566. movdqa xmm9,xmm5
  1567. xor esi,ecx
  1568. pslldq xmm8,12
  1569. paddd xmm5,xmm5
  1570. mov edi,ebp
  1571. add edx,DWORD PTR[24+rsp]
  1572. psrld xmm9,31
  1573. xor eax,ebx
  1574. rol ebp,5
  1575. add edx,esi
  1576. movdqa xmm10,xmm8
  1577. and edi,eax
  1578. xor eax,ebx
  1579. psrld xmm8,30
  1580. add edx,ebp
  1581. ror ebp,7
  1582. por xmm5,xmm9
  1583. xor edi,ebx
  1584. mov esi,edx
  1585. add ecx,DWORD PTR[28+rsp]
  1586. pslld xmm10,2
  1587. pxor xmm5,xmm8
  1588. xor ebp,eax
  1589. movdqa xmm8,XMMWORD PTR[((-32))+r14]
  1590. rol edx,5
  1591. add ecx,edi
  1592. and esi,ebp
  1593. pxor xmm5,xmm10
  1594. xor ebp,eax
  1595. add ecx,edx
  1596. ror edx,7
  1597. pshufd xmm6,xmm2,238
  1598. xor esi,eax
  1599. movdqa xmm10,xmm5
  1600. paddd xmm8,xmm5
  1601. mov edi,ecx
  1602. add ebx,DWORD PTR[32+rsp]
  1603. punpcklqdq xmm6,xmm3
  1604. xor edx,ebp
  1605. rol ecx,5
  1606. add ebx,esi
  1607. psrldq xmm10,4
  1608. and edi,edx
  1609. xor edx,ebp
  1610. pxor xmm6,xmm2
  1611. add ebx,ecx
  1612. ror ecx,7
  1613. pxor xmm10,xmm4
  1614. xor edi,ebp
  1615. mov esi,ebx
  1616. add eax,DWORD PTR[36+rsp]
  1617. pxor xmm6,xmm10
  1618. xor ecx,edx
  1619. rol ebx,5
  1620. movdqa XMMWORD PTR[16+rsp],xmm8
  1621. add eax,edi
  1622. and esi,ecx
  1623. movdqa xmm9,xmm6
  1624. xor ecx,edx
  1625. add eax,ebx
  1626. ror ebx,7
  1627. movdqa xmm10,xmm6
  1628. xor esi,edx
  1629. pslldq xmm9,12
  1630. paddd xmm6,xmm6
  1631. mov edi,eax
  1632. add ebp,DWORD PTR[40+rsp]
  1633. psrld xmm10,31
  1634. xor ebx,ecx
  1635. rol eax,5
  1636. add ebp,esi
  1637. movdqa xmm8,xmm9
  1638. and edi,ebx
  1639. xor ebx,ecx
  1640. psrld xmm9,30
  1641. add ebp,eax
  1642. ror eax,7
  1643. por xmm6,xmm10
  1644. xor edi,ecx
  1645. mov esi,ebp
  1646. add edx,DWORD PTR[44+rsp]
  1647. pslld xmm8,2
  1648. pxor xmm6,xmm9
  1649. xor eax,ebx
  1650. movdqa xmm9,XMMWORD PTR[((-32))+r14]
  1651. rol ebp,5
  1652. add edx,edi
  1653. and esi,eax
  1654. pxor xmm6,xmm8
  1655. xor eax,ebx
  1656. add edx,ebp
  1657. ror ebp,7
  1658. pshufd xmm7,xmm3,238
  1659. xor esi,ebx
  1660. movdqa xmm8,xmm6
  1661. paddd xmm9,xmm6
  1662. mov edi,edx
  1663. add ecx,DWORD PTR[48+rsp]
  1664. punpcklqdq xmm7,xmm4
  1665. xor ebp,eax
  1666. rol edx,5
  1667. add ecx,esi
  1668. psrldq xmm8,4
  1669. and edi,ebp
  1670. xor ebp,eax
  1671. pxor xmm7,xmm3
  1672. add ecx,edx
  1673. ror edx,7
  1674. pxor xmm8,xmm5
  1675. xor edi,eax
  1676. mov esi,ecx
  1677. add ebx,DWORD PTR[52+rsp]
  1678. pxor xmm7,xmm8
  1679. xor edx,ebp
  1680. rol ecx,5
  1681. movdqa XMMWORD PTR[32+rsp],xmm9
  1682. add ebx,edi
  1683. and esi,edx
  1684. movdqa xmm10,xmm7
  1685. xor edx,ebp
  1686. add ebx,ecx
  1687. ror ecx,7
  1688. movdqa xmm8,xmm7
  1689. xor esi,ebp
  1690. pslldq xmm10,12
  1691. paddd xmm7,xmm7
  1692. mov edi,ebx
  1693. add eax,DWORD PTR[56+rsp]
  1694. psrld xmm8,31
  1695. xor ecx,edx
  1696. rol ebx,5
  1697. add eax,esi
  1698. movdqa xmm9,xmm10
  1699. and edi,ecx
  1700. xor ecx,edx
  1701. psrld xmm10,30
  1702. add eax,ebx
  1703. ror ebx,7
  1704. por xmm7,xmm8
  1705. xor edi,edx
  1706. mov esi,eax
  1707. add ebp,DWORD PTR[60+rsp]
  1708. pslld xmm9,2
  1709. pxor xmm7,xmm10
  1710. xor ebx,ecx
  1711. movdqa xmm10,XMMWORD PTR[((-32))+r14]
  1712. rol eax,5
  1713. add ebp,edi
  1714. and esi,ebx
  1715. pxor xmm7,xmm9
  1716. pshufd xmm9,xmm6,238
  1717. xor ebx,ecx
  1718. add ebp,eax
  1719. ror eax,7
  1720. pxor xmm0,xmm4
  1721. xor esi,ecx
  1722. mov edi,ebp
  1723. add edx,DWORD PTR[rsp]
  1724. punpcklqdq xmm9,xmm7
  1725. xor eax,ebx
  1726. rol ebp,5
  1727. pxor xmm0,xmm1
  1728. add edx,esi
  1729. and edi,eax
  1730. movdqa xmm8,xmm10
  1731. xor eax,ebx
  1732. paddd xmm10,xmm7
  1733. add edx,ebp
  1734. pxor xmm0,xmm9
  1735. ror ebp,7
  1736. xor edi,ebx
  1737. mov esi,edx
  1738. add ecx,DWORD PTR[4+rsp]
  1739. movdqa xmm9,xmm0
  1740. xor ebp,eax
  1741. rol edx,5
  1742. movdqa XMMWORD PTR[48+rsp],xmm10
  1743. add ecx,edi
  1744. and esi,ebp
  1745. xor ebp,eax
  1746. pslld xmm0,2
  1747. add ecx,edx
  1748. ror edx,7
  1749. psrld xmm9,30
  1750. xor esi,eax
  1751. mov edi,ecx
  1752. add ebx,DWORD PTR[8+rsp]
  1753. por xmm0,xmm9
  1754. xor edx,ebp
  1755. rol ecx,5
  1756. pshufd xmm10,xmm7,238
  1757. add ebx,esi
  1758. and edi,edx
  1759. xor edx,ebp
  1760. add ebx,ecx
  1761. add eax,DWORD PTR[12+rsp]
  1762. xor edi,ebp
  1763. mov esi,ebx
  1764. rol ebx,5
  1765. add eax,edi
  1766. xor esi,edx
  1767. ror ecx,7
  1768. add eax,ebx
  1769. pxor xmm1,xmm5
  1770. add ebp,DWORD PTR[16+rsp]
  1771. xor esi,ecx
  1772. punpcklqdq xmm10,xmm0
  1773. mov edi,eax
  1774. rol eax,5
  1775. pxor xmm1,xmm2
  1776. add ebp,esi
  1777. xor edi,ecx
  1778. movdqa xmm9,xmm8
  1779. ror ebx,7
  1780. paddd xmm8,xmm0
  1781. add ebp,eax
  1782. pxor xmm1,xmm10
  1783. add edx,DWORD PTR[20+rsp]
  1784. xor edi,ebx
  1785. mov esi,ebp
  1786. rol ebp,5
  1787. movdqa xmm10,xmm1
  1788. add edx,edi
  1789. xor esi,ebx
  1790. movdqa XMMWORD PTR[rsp],xmm8
  1791. ror eax,7
  1792. add edx,ebp
  1793. add ecx,DWORD PTR[24+rsp]
  1794. pslld xmm1,2
  1795. xor esi,eax
  1796. mov edi,edx
  1797. psrld xmm10,30
  1798. rol edx,5
  1799. add ecx,esi
  1800. xor edi,eax
  1801. ror ebp,7
  1802. por xmm1,xmm10
  1803. add ecx,edx
  1804. add ebx,DWORD PTR[28+rsp]
  1805. pshufd xmm8,xmm0,238
  1806. xor edi,ebp
  1807. mov esi,ecx
  1808. rol ecx,5
  1809. add ebx,edi
  1810. xor esi,ebp
  1811. ror edx,7
  1812. add ebx,ecx
  1813. pxor xmm2,xmm6
  1814. add eax,DWORD PTR[32+rsp]
  1815. xor esi,edx
  1816. punpcklqdq xmm8,xmm1
  1817. mov edi,ebx
  1818. rol ebx,5
  1819. pxor xmm2,xmm3
  1820. add eax,esi
  1821. xor edi,edx
  1822. movdqa xmm10,XMMWORD PTR[r14]
  1823. ror ecx,7
  1824. paddd xmm9,xmm1
  1825. add eax,ebx
  1826. pxor xmm2,xmm8
  1827. add ebp,DWORD PTR[36+rsp]
  1828. xor edi,ecx
  1829. mov esi,eax
  1830. rol eax,5
  1831. movdqa xmm8,xmm2
  1832. add ebp,edi
  1833. xor esi,ecx
  1834. movdqa XMMWORD PTR[16+rsp],xmm9
  1835. ror ebx,7
  1836. add ebp,eax
  1837. add edx,DWORD PTR[40+rsp]
  1838. pslld xmm2,2
  1839. xor esi,ebx
  1840. mov edi,ebp
  1841. psrld xmm8,30
  1842. rol ebp,5
  1843. add edx,esi
  1844. xor edi,ebx
  1845. ror eax,7
  1846. por xmm2,xmm8
  1847. add edx,ebp
  1848. add ecx,DWORD PTR[44+rsp]
  1849. pshufd xmm9,xmm1,238
  1850. xor edi,eax
  1851. mov esi,edx
  1852. rol edx,5
  1853. add ecx,edi
  1854. xor esi,eax
  1855. ror ebp,7
  1856. add ecx,edx
  1857. pxor xmm3,xmm7
  1858. add ebx,DWORD PTR[48+rsp]
  1859. xor esi,ebp
  1860. punpcklqdq xmm9,xmm2
  1861. mov edi,ecx
  1862. rol ecx,5
  1863. pxor xmm3,xmm4
  1864. add ebx,esi
  1865. xor edi,ebp
  1866. movdqa xmm8,xmm10
  1867. ror edx,7
  1868. paddd xmm10,xmm2
  1869. add ebx,ecx
  1870. pxor xmm3,xmm9
  1871. add eax,DWORD PTR[52+rsp]
  1872. xor edi,edx
  1873. mov esi,ebx
  1874. rol ebx,5
  1875. movdqa xmm9,xmm3
  1876. add eax,edi
  1877. xor esi,edx
  1878. movdqa XMMWORD PTR[32+rsp],xmm10
  1879. ror ecx,7
  1880. add eax,ebx
  1881. add ebp,DWORD PTR[56+rsp]
  1882. pslld xmm3,2
  1883. xor esi,ecx
  1884. mov edi,eax
  1885. psrld xmm9,30
  1886. rol eax,5
  1887. add ebp,esi
  1888. xor edi,ecx
  1889. ror ebx,7
  1890. por xmm3,xmm9
  1891. add ebp,eax
  1892. add edx,DWORD PTR[60+rsp]
  1893. pshufd xmm10,xmm2,238
  1894. xor edi,ebx
  1895. mov esi,ebp
  1896. rol ebp,5
  1897. add edx,edi
  1898. xor esi,ebx
  1899. ror eax,7
  1900. add edx,ebp
  1901. pxor xmm4,xmm0
  1902. add ecx,DWORD PTR[rsp]
  1903. xor esi,eax
  1904. punpcklqdq xmm10,xmm3
  1905. mov edi,edx
  1906. rol edx,5
  1907. pxor xmm4,xmm5
  1908. add ecx,esi
  1909. xor edi,eax
  1910. movdqa xmm9,xmm8
  1911. ror ebp,7
  1912. paddd xmm8,xmm3
  1913. add ecx,edx
  1914. pxor xmm4,xmm10
  1915. add ebx,DWORD PTR[4+rsp]
  1916. xor edi,ebp
  1917. mov esi,ecx
  1918. rol ecx,5
  1919. movdqa xmm10,xmm4
  1920. add ebx,edi
  1921. xor esi,ebp
  1922. movdqa XMMWORD PTR[48+rsp],xmm8
  1923. ror edx,7
  1924. add ebx,ecx
  1925. add eax,DWORD PTR[8+rsp]
  1926. pslld xmm4,2
  1927. xor esi,edx
  1928. mov edi,ebx
  1929. psrld xmm10,30
  1930. rol ebx,5
  1931. add eax,esi
  1932. xor edi,edx
  1933. ror ecx,7
  1934. por xmm4,xmm10
  1935. add eax,ebx
  1936. add ebp,DWORD PTR[12+rsp]
  1937. pshufd xmm8,xmm3,238
  1938. xor edi,ecx
  1939. mov esi,eax
  1940. rol eax,5
  1941. add ebp,edi
  1942. xor esi,ecx
  1943. ror ebx,7
  1944. add ebp,eax
  1945. pxor xmm5,xmm1
  1946. add edx,DWORD PTR[16+rsp]
  1947. xor esi,ebx
  1948. punpcklqdq xmm8,xmm4
  1949. mov edi,ebp
  1950. rol ebp,5
  1951. pxor xmm5,xmm6
  1952. add edx,esi
  1953. xor edi,ebx
  1954. movdqa xmm10,xmm9
  1955. ror eax,7
  1956. paddd xmm9,xmm4
  1957. add edx,ebp
  1958. pxor xmm5,xmm8
  1959. add ecx,DWORD PTR[20+rsp]
  1960. xor edi,eax
  1961. mov esi,edx
  1962. rol edx,5
  1963. movdqa xmm8,xmm5
  1964. add ecx,edi
  1965. xor esi,eax
  1966. movdqa XMMWORD PTR[rsp],xmm9
  1967. ror ebp,7
  1968. add ecx,edx
  1969. add ebx,DWORD PTR[24+rsp]
  1970. pslld xmm5,2
  1971. xor esi,ebp
  1972. mov edi,ecx
  1973. psrld xmm8,30
  1974. rol ecx,5
  1975. add ebx,esi
  1976. xor edi,ebp
  1977. ror edx,7
  1978. por xmm5,xmm8
  1979. add ebx,ecx
  1980. add eax,DWORD PTR[28+rsp]
  1981. pshufd xmm9,xmm4,238
  1982. ror ecx,7
  1983. mov esi,ebx
  1984. xor edi,edx
  1985. rol ebx,5
  1986. add eax,edi
  1987. xor esi,ecx
  1988. xor ecx,edx
  1989. add eax,ebx
  1990. pxor xmm6,xmm2
  1991. add ebp,DWORD PTR[32+rsp]
  1992. and esi,ecx
  1993. xor ecx,edx
  1994. ror ebx,7
  1995. punpcklqdq xmm9,xmm5
  1996. mov edi,eax
  1997. xor esi,ecx
  1998. pxor xmm6,xmm7
  1999. rol eax,5
  2000. add ebp,esi
  2001. movdqa xmm8,xmm10
  2002. xor edi,ebx
  2003. paddd xmm10,xmm5
  2004. xor ebx,ecx
  2005. pxor xmm6,xmm9
  2006. add ebp,eax
  2007. add edx,DWORD PTR[36+rsp]
  2008. and edi,ebx
  2009. xor ebx,ecx
  2010. ror eax,7
  2011. movdqa xmm9,xmm6
  2012. mov esi,ebp
  2013. xor edi,ebx
  2014. movdqa XMMWORD PTR[16+rsp],xmm10
  2015. rol ebp,5
  2016. add edx,edi
  2017. xor esi,eax
  2018. pslld xmm6,2
  2019. xor eax,ebx
  2020. add edx,ebp
  2021. psrld xmm9,30
  2022. add ecx,DWORD PTR[40+rsp]
  2023. and esi,eax
  2024. xor eax,ebx
  2025. por xmm6,xmm9
  2026. ror ebp,7
  2027. mov edi,edx
  2028. xor esi,eax
  2029. rol edx,5
  2030. pshufd xmm10,xmm5,238
  2031. add ecx,esi
  2032. xor edi,ebp
  2033. xor ebp,eax
  2034. add ecx,edx
  2035. add ebx,DWORD PTR[44+rsp]
  2036. and edi,ebp
  2037. xor ebp,eax
  2038. ror edx,7
  2039. mov esi,ecx
  2040. xor edi,ebp
  2041. rol ecx,5
  2042. add ebx,edi
  2043. xor esi,edx
  2044. xor edx,ebp
  2045. add ebx,ecx
  2046. pxor xmm7,xmm3
  2047. add eax,DWORD PTR[48+rsp]
  2048. and esi,edx
  2049. xor edx,ebp
  2050. ror ecx,7
  2051. punpcklqdq xmm10,xmm6
  2052. mov edi,ebx
  2053. xor esi,edx
  2054. pxor xmm7,xmm0
  2055. rol ebx,5
  2056. add eax,esi
  2057. movdqa xmm9,XMMWORD PTR[32+r14]
  2058. xor edi,ecx
  2059. paddd xmm8,xmm6
  2060. xor ecx,edx
  2061. pxor xmm7,xmm10
  2062. add eax,ebx
  2063. add ebp,DWORD PTR[52+rsp]
  2064. and edi,ecx
  2065. xor ecx,edx
  2066. ror ebx,7
  2067. movdqa xmm10,xmm7
  2068. mov esi,eax
  2069. xor edi,ecx
  2070. movdqa XMMWORD PTR[32+rsp],xmm8
  2071. rol eax,5
  2072. add ebp,edi
  2073. xor esi,ebx
  2074. pslld xmm7,2
  2075. xor ebx,ecx
  2076. add ebp,eax
  2077. psrld xmm10,30
  2078. add edx,DWORD PTR[56+rsp]
  2079. and esi,ebx
  2080. xor ebx,ecx
  2081. por xmm7,xmm10
  2082. ror eax,7
  2083. mov edi,ebp
  2084. xor esi,ebx
  2085. rol ebp,5
  2086. pshufd xmm8,xmm6,238
  2087. add edx,esi
  2088. xor edi,eax
  2089. xor eax,ebx
  2090. add edx,ebp
  2091. add ecx,DWORD PTR[60+rsp]
  2092. and edi,eax
  2093. xor eax,ebx
  2094. ror ebp,7
  2095. mov esi,edx
  2096. xor edi,eax
  2097. rol edx,5
  2098. add ecx,edi
  2099. xor esi,ebp
  2100. xor ebp,eax
  2101. add ecx,edx
  2102. pxor xmm0,xmm4
  2103. add ebx,DWORD PTR[rsp]
  2104. and esi,ebp
  2105. xor ebp,eax
  2106. ror edx,7
  2107. punpcklqdq xmm8,xmm7
  2108. mov edi,ecx
  2109. xor esi,ebp
  2110. pxor xmm0,xmm1
  2111. rol ecx,5
  2112. add ebx,esi
  2113. movdqa xmm10,xmm9
  2114. xor edi,edx
  2115. paddd xmm9,xmm7
  2116. xor edx,ebp
  2117. pxor xmm0,xmm8
  2118. add ebx,ecx
  2119. add eax,DWORD PTR[4+rsp]
  2120. and edi,edx
  2121. xor edx,ebp
  2122. ror ecx,7
  2123. movdqa xmm8,xmm0
  2124. mov esi,ebx
  2125. xor edi,edx
  2126. movdqa XMMWORD PTR[48+rsp],xmm9
  2127. rol ebx,5
  2128. add eax,edi
  2129. xor esi,ecx
  2130. pslld xmm0,2
  2131. xor ecx,edx
  2132. add eax,ebx
  2133. psrld xmm8,30
  2134. add ebp,DWORD PTR[8+rsp]
  2135. and esi,ecx
  2136. xor ecx,edx
  2137. por xmm0,xmm8
  2138. ror ebx,7
  2139. mov edi,eax
  2140. xor esi,ecx
  2141. rol eax,5
  2142. pshufd xmm9,xmm7,238
  2143. add ebp,esi
  2144. xor edi,ebx
  2145. xor ebx,ecx
  2146. add ebp,eax
  2147. add edx,DWORD PTR[12+rsp]
  2148. and edi,ebx
  2149. xor ebx,ecx
  2150. ror eax,7
  2151. mov esi,ebp
  2152. xor edi,ebx
  2153. rol ebp,5
  2154. add edx,edi
  2155. xor esi,eax
  2156. xor eax,ebx
  2157. add edx,ebp
  2158. pxor xmm1,xmm5
  2159. add ecx,DWORD PTR[16+rsp]
  2160. and esi,eax
  2161. xor eax,ebx
  2162. ror ebp,7
  2163. punpcklqdq xmm9,xmm0
  2164. mov edi,edx
  2165. xor esi,eax
  2166. pxor xmm1,xmm2
  2167. rol edx,5
  2168. add ecx,esi
  2169. movdqa xmm8,xmm10
  2170. xor edi,ebp
  2171. paddd xmm10,xmm0
  2172. xor ebp,eax
  2173. pxor xmm1,xmm9
  2174. add ecx,edx
  2175. add ebx,DWORD PTR[20+rsp]
  2176. and edi,ebp
  2177. xor ebp,eax
  2178. ror edx,7
  2179. movdqa xmm9,xmm1
  2180. mov esi,ecx
  2181. xor edi,ebp
  2182. movdqa XMMWORD PTR[rsp],xmm10
  2183. rol ecx,5
  2184. add ebx,edi
  2185. xor esi,edx
  2186. pslld xmm1,2
  2187. xor edx,ebp
  2188. add ebx,ecx
  2189. psrld xmm9,30
  2190. add eax,DWORD PTR[24+rsp]
  2191. and esi,edx
  2192. xor edx,ebp
  2193. por xmm1,xmm9
  2194. ror ecx,7
  2195. mov edi,ebx
  2196. xor esi,edx
  2197. rol ebx,5
  2198. pshufd xmm10,xmm0,238
  2199. add eax,esi
  2200. xor edi,ecx
  2201. xor ecx,edx
  2202. add eax,ebx
  2203. add ebp,DWORD PTR[28+rsp]
  2204. and edi,ecx
  2205. xor ecx,edx
  2206. ror ebx,7
  2207. mov esi,eax
  2208. xor edi,ecx
  2209. rol eax,5
  2210. add ebp,edi
  2211. xor esi,ebx
  2212. xor ebx,ecx
  2213. add ebp,eax
  2214. pxor xmm2,xmm6
  2215. add edx,DWORD PTR[32+rsp]
  2216. and esi,ebx
  2217. xor ebx,ecx
  2218. ror eax,7
  2219. punpcklqdq xmm10,xmm1
  2220. mov edi,ebp
  2221. xor esi,ebx
  2222. pxor xmm2,xmm3
  2223. rol ebp,5
  2224. add edx,esi
  2225. movdqa xmm9,xmm8
  2226. xor edi,eax
  2227. paddd xmm8,xmm1
  2228. xor eax,ebx
  2229. pxor xmm2,xmm10
  2230. add edx,ebp
  2231. add ecx,DWORD PTR[36+rsp]
  2232. and edi,eax
  2233. xor eax,ebx
  2234. ror ebp,7
  2235. movdqa xmm10,xmm2
  2236. mov esi,edx
  2237. xor edi,eax
  2238. movdqa XMMWORD PTR[16+rsp],xmm8
  2239. rol edx,5
  2240. add ecx,edi
  2241. xor esi,ebp
  2242. pslld xmm2,2
  2243. xor ebp,eax
  2244. add ecx,edx
  2245. psrld xmm10,30
  2246. add ebx,DWORD PTR[40+rsp]
  2247. and esi,ebp
  2248. xor ebp,eax
  2249. por xmm2,xmm10
  2250. ror edx,7
  2251. mov edi,ecx
  2252. xor esi,ebp
  2253. rol ecx,5
  2254. pshufd xmm8,xmm1,238
  2255. add ebx,esi
  2256. xor edi,edx
  2257. xor edx,ebp
  2258. add ebx,ecx
  2259. add eax,DWORD PTR[44+rsp]
  2260. and edi,edx
  2261. xor edx,ebp
  2262. ror ecx,7
  2263. mov esi,ebx
  2264. xor edi,edx
  2265. rol ebx,5
  2266. add eax,edi
  2267. xor esi,edx
  2268. add eax,ebx
  2269. pxor xmm3,xmm7
  2270. add ebp,DWORD PTR[48+rsp]
  2271. xor esi,ecx
  2272. punpcklqdq xmm8,xmm2
  2273. mov edi,eax
  2274. rol eax,5
  2275. pxor xmm3,xmm4
  2276. add ebp,esi
  2277. xor edi,ecx
  2278. movdqa xmm10,xmm9
  2279. ror ebx,7
  2280. paddd xmm9,xmm2
  2281. add ebp,eax
  2282. pxor xmm3,xmm8
  2283. add edx,DWORD PTR[52+rsp]
  2284. xor edi,ebx
  2285. mov esi,ebp
  2286. rol ebp,5
  2287. movdqa xmm8,xmm3
  2288. add edx,edi
  2289. xor esi,ebx
  2290. movdqa XMMWORD PTR[32+rsp],xmm9
  2291. ror eax,7
  2292. add edx,ebp
  2293. add ecx,DWORD PTR[56+rsp]
  2294. pslld xmm3,2
  2295. xor esi,eax
  2296. mov edi,edx
  2297. psrld xmm8,30
  2298. rol edx,5
  2299. add ecx,esi
  2300. xor edi,eax
  2301. ror ebp,7
  2302. por xmm3,xmm8
  2303. add ecx,edx
  2304. add ebx,DWORD PTR[60+rsp]
  2305. xor edi,ebp
  2306. mov esi,ecx
  2307. rol ecx,5
  2308. add ebx,edi
  2309. xor esi,ebp
  2310. ror edx,7
  2311. add ebx,ecx
  2312. add eax,DWORD PTR[rsp]
  2313. xor esi,edx
  2314. mov edi,ebx
  2315. rol ebx,5
  2316. paddd xmm10,xmm3
  2317. add eax,esi
  2318. xor edi,edx
  2319. movdqa XMMWORD PTR[48+rsp],xmm10
  2320. ror ecx,7
  2321. add eax,ebx
  2322. add ebp,DWORD PTR[4+rsp]
  2323. xor edi,ecx
  2324. mov esi,eax
  2325. rol eax,5
  2326. add ebp,edi
  2327. xor esi,ecx
  2328. ror ebx,7
  2329. add ebp,eax
  2330. add edx,DWORD PTR[8+rsp]
  2331. xor esi,ebx
  2332. mov edi,ebp
  2333. rol ebp,5
  2334. add edx,esi
  2335. xor edi,ebx
  2336. ror eax,7
  2337. add edx,ebp
  2338. add ecx,DWORD PTR[12+rsp]
  2339. xor edi,eax
  2340. mov esi,edx
  2341. rol edx,5
  2342. add ecx,edi
  2343. xor esi,eax
  2344. ror ebp,7
  2345. add ecx,edx
  2346. cmp r9,r10
  2347. je $L$done_ssse3
  2348. movdqa xmm6,XMMWORD PTR[64+r14]
  2349. movdqa xmm9,XMMWORD PTR[((-64))+r14]
  2350. movdqu xmm0,XMMWORD PTR[r9]
  2351. movdqu xmm1,XMMWORD PTR[16+r9]
  2352. movdqu xmm2,XMMWORD PTR[32+r9]
  2353. movdqu xmm3,XMMWORD PTR[48+r9]
  2354. DB 102,15,56,0,198
  2355. add r9,64
  2356. add ebx,DWORD PTR[16+rsp]
  2357. xor esi,ebp
  2358. mov edi,ecx
  2359. DB 102,15,56,0,206
  2360. rol ecx,5
  2361. add ebx,esi
  2362. xor edi,ebp
  2363. ror edx,7
  2364. paddd xmm0,xmm9
  2365. add ebx,ecx
  2366. add eax,DWORD PTR[20+rsp]
  2367. xor edi,edx
  2368. mov esi,ebx
  2369. movdqa XMMWORD PTR[rsp],xmm0
  2370. rol ebx,5
  2371. add eax,edi
  2372. xor esi,edx
  2373. ror ecx,7
  2374. psubd xmm0,xmm9
  2375. add eax,ebx
  2376. add ebp,DWORD PTR[24+rsp]
  2377. xor esi,ecx
  2378. mov edi,eax
  2379. rol eax,5
  2380. add ebp,esi
  2381. xor edi,ecx
  2382. ror ebx,7
  2383. add ebp,eax
  2384. add edx,DWORD PTR[28+rsp]
  2385. xor edi,ebx
  2386. mov esi,ebp
  2387. rol ebp,5
  2388. add edx,edi
  2389. xor esi,ebx
  2390. ror eax,7
  2391. add edx,ebp
  2392. add ecx,DWORD PTR[32+rsp]
  2393. xor esi,eax
  2394. mov edi,edx
  2395. DB 102,15,56,0,214
  2396. rol edx,5
  2397. add ecx,esi
  2398. xor edi,eax
  2399. ror ebp,7
  2400. paddd xmm1,xmm9
  2401. add ecx,edx
  2402. add ebx,DWORD PTR[36+rsp]
  2403. xor edi,ebp
  2404. mov esi,ecx
  2405. movdqa XMMWORD PTR[16+rsp],xmm1
  2406. rol ecx,5
  2407. add ebx,edi
  2408. xor esi,ebp
  2409. ror edx,7
  2410. psubd xmm1,xmm9
  2411. add ebx,ecx
  2412. add eax,DWORD PTR[40+rsp]
  2413. xor esi,edx
  2414. mov edi,ebx
  2415. rol ebx,5
  2416. add eax,esi
  2417. xor edi,edx
  2418. ror ecx,7
  2419. add eax,ebx
  2420. add ebp,DWORD PTR[44+rsp]
  2421. xor edi,ecx
  2422. mov esi,eax
  2423. rol eax,5
  2424. add ebp,edi
  2425. xor esi,ecx
  2426. ror ebx,7
  2427. add ebp,eax
  2428. add edx,DWORD PTR[48+rsp]
  2429. xor esi,ebx
  2430. mov edi,ebp
  2431. DB 102,15,56,0,222
  2432. rol ebp,5
  2433. add edx,esi
  2434. xor edi,ebx
  2435. ror eax,7
  2436. paddd xmm2,xmm9
  2437. add edx,ebp
  2438. add ecx,DWORD PTR[52+rsp]
  2439. xor edi,eax
  2440. mov esi,edx
  2441. movdqa XMMWORD PTR[32+rsp],xmm2
  2442. rol edx,5
  2443. add ecx,edi
  2444. xor esi,eax
  2445. ror ebp,7
  2446. psubd xmm2,xmm9
  2447. add ecx,edx
  2448. add ebx,DWORD PTR[56+rsp]
  2449. xor esi,ebp
  2450. mov edi,ecx
  2451. rol ecx,5
  2452. add ebx,esi
  2453. xor edi,ebp
  2454. ror edx,7
  2455. add ebx,ecx
  2456. add eax,DWORD PTR[60+rsp]
  2457. xor edi,edx
  2458. mov esi,ebx
  2459. rol ebx,5
  2460. add eax,edi
  2461. ror ecx,7
  2462. add eax,ebx
  2463. add eax,DWORD PTR[r8]
  2464. add esi,DWORD PTR[4+r8]
  2465. add ecx,DWORD PTR[8+r8]
  2466. add edx,DWORD PTR[12+r8]
  2467. mov DWORD PTR[r8],eax
  2468. add ebp,DWORD PTR[16+r8]
  2469. mov DWORD PTR[4+r8],esi
  2470. mov ebx,esi
  2471. mov DWORD PTR[8+r8],ecx
  2472. mov edi,ecx
  2473. mov DWORD PTR[12+r8],edx
  2474. xor edi,edx
  2475. mov DWORD PTR[16+r8],ebp
  2476. and esi,edi
  2477. jmp $L$oop_ssse3
  2478. ALIGN 16
  2479. $L$done_ssse3::
  2480. add ebx,DWORD PTR[16+rsp]
  2481. xor esi,ebp
  2482. mov edi,ecx
  2483. rol ecx,5
  2484. add ebx,esi
  2485. xor edi,ebp
  2486. ror edx,7
  2487. add ebx,ecx
  2488. add eax,DWORD PTR[20+rsp]
  2489. xor edi,edx
  2490. mov esi,ebx
  2491. rol ebx,5
  2492. add eax,edi
  2493. xor esi,edx
  2494. ror ecx,7
  2495. add eax,ebx
  2496. add ebp,DWORD PTR[24+rsp]
  2497. xor esi,ecx
  2498. mov edi,eax
  2499. rol eax,5
  2500. add ebp,esi
  2501. xor edi,ecx
  2502. ror ebx,7
  2503. add ebp,eax
  2504. add edx,DWORD PTR[28+rsp]
  2505. xor edi,ebx
  2506. mov esi,ebp
  2507. rol ebp,5
  2508. add edx,edi
  2509. xor esi,ebx
  2510. ror eax,7
  2511. add edx,ebp
  2512. add ecx,DWORD PTR[32+rsp]
  2513. xor esi,eax
  2514. mov edi,edx
  2515. rol edx,5
  2516. add ecx,esi
  2517. xor edi,eax
  2518. ror ebp,7
  2519. add ecx,edx
  2520. add ebx,DWORD PTR[36+rsp]
  2521. xor edi,ebp
  2522. mov esi,ecx
  2523. rol ecx,5
  2524. add ebx,edi
  2525. xor esi,ebp
  2526. ror edx,7
  2527. add ebx,ecx
  2528. add eax,DWORD PTR[40+rsp]
  2529. xor esi,edx
  2530. mov edi,ebx
  2531. rol ebx,5
  2532. add eax,esi
  2533. xor edi,edx
  2534. ror ecx,7
  2535. add eax,ebx
  2536. add ebp,DWORD PTR[44+rsp]
  2537. xor edi,ecx
  2538. mov esi,eax
  2539. rol eax,5
  2540. add ebp,edi
  2541. xor esi,ecx
  2542. ror ebx,7
  2543. add ebp,eax
  2544. add edx,DWORD PTR[48+rsp]
  2545. xor esi,ebx
  2546. mov edi,ebp
  2547. rol ebp,5
  2548. add edx,esi
  2549. xor edi,ebx
  2550. ror eax,7
  2551. add edx,ebp
  2552. add ecx,DWORD PTR[52+rsp]
  2553. xor edi,eax
  2554. mov esi,edx
  2555. rol edx,5
  2556. add ecx,edi
  2557. xor esi,eax
  2558. ror ebp,7
  2559. add ecx,edx
  2560. add ebx,DWORD PTR[56+rsp]
  2561. xor esi,ebp
  2562. mov edi,ecx
  2563. rol ecx,5
  2564. add ebx,esi
  2565. xor edi,ebp
  2566. ror edx,7
  2567. add ebx,ecx
  2568. add eax,DWORD PTR[60+rsp]
  2569. xor edi,edx
  2570. mov esi,ebx
  2571. rol ebx,5
  2572. add eax,edi
  2573. ror ecx,7
  2574. add eax,ebx
  2575. add eax,DWORD PTR[r8]
  2576. add esi,DWORD PTR[4+r8]
  2577. add ecx,DWORD PTR[8+r8]
  2578. mov DWORD PTR[r8],eax
  2579. add edx,DWORD PTR[12+r8]
  2580. mov DWORD PTR[4+r8],esi
  2581. add ebp,DWORD PTR[16+r8]
  2582. mov DWORD PTR[8+r8],ecx
  2583. mov DWORD PTR[12+r8],edx
  2584. mov DWORD PTR[16+r8],ebp
  2585. movaps xmm6,XMMWORD PTR[((-40-96))+r11]
  2586. movaps xmm7,XMMWORD PTR[((-40-80))+r11]
  2587. movaps xmm8,XMMWORD PTR[((-40-64))+r11]
  2588. movaps xmm9,XMMWORD PTR[((-40-48))+r11]
  2589. movaps xmm10,XMMWORD PTR[((-40-32))+r11]
  2590. movaps xmm11,XMMWORD PTR[((-40-16))+r11]
  2591. mov r14,QWORD PTR[((-40))+r11]
  2592. mov r13,QWORD PTR[((-32))+r11]
  2593. mov r12,QWORD PTR[((-24))+r11]
  2594. mov rbp,QWORD PTR[((-16))+r11]
  2595. mov rbx,QWORD PTR[((-8))+r11]
  2596. lea rsp,QWORD PTR[r11]
  2597. $L$epilogue_ssse3::
  2598. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  2599. mov rsi,QWORD PTR[16+rsp]
  2600. DB 0F3h,0C3h ;repret
  2601. $L$SEH_end_sha1_block_data_order_ssse3::
  2602. sha1_block_data_order_ssse3 ENDP
  2603. ALIGN 16
  2604. sha1_block_data_order_avx PROC PRIVATE
  2605. mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
  2606. mov QWORD PTR[16+rsp],rsi
  2607. mov rax,rsp
  2608. $L$SEH_begin_sha1_block_data_order_avx::
  2609. mov rdi,rcx
  2610. mov rsi,rdx
  2611. mov rdx,r8
  2612. _avx_shortcut::
  2613. mov r11,rsp
  2614. push rbx
  2615. push rbp
  2616. push r12
  2617. push r13
  2618. push r14
  2619. lea rsp,QWORD PTR[((-160))+rsp]
  2620. vzeroupper
  2621. vmovaps XMMWORD PTR[(-40-96)+r11],xmm6
  2622. vmovaps XMMWORD PTR[(-40-80)+r11],xmm7
  2623. vmovaps XMMWORD PTR[(-40-64)+r11],xmm8
  2624. vmovaps XMMWORD PTR[(-40-48)+r11],xmm9
  2625. vmovaps XMMWORD PTR[(-40-32)+r11],xmm10
  2626. vmovaps XMMWORD PTR[(-40-16)+r11],xmm11
  2627. $L$prologue_avx::
  2628. and rsp,-64
  2629. mov r8,rdi
  2630. mov r9,rsi
  2631. mov r10,rdx
  2632. shl r10,6
  2633. add r10,r9
  2634. lea r14,QWORD PTR[((K_XX_XX+64))]
  2635. mov eax,DWORD PTR[r8]
  2636. mov ebx,DWORD PTR[4+r8]
  2637. mov ecx,DWORD PTR[8+r8]
  2638. mov edx,DWORD PTR[12+r8]
  2639. mov esi,ebx
  2640. mov ebp,DWORD PTR[16+r8]
  2641. mov edi,ecx
  2642. xor edi,edx
  2643. and esi,edi
  2644. vmovdqa xmm6,XMMWORD PTR[64+r14]
  2645. vmovdqa xmm11,XMMWORD PTR[((-64))+r14]
  2646. vmovdqu xmm0,XMMWORD PTR[r9]
  2647. vmovdqu xmm1,XMMWORD PTR[16+r9]
  2648. vmovdqu xmm2,XMMWORD PTR[32+r9]
  2649. vmovdqu xmm3,XMMWORD PTR[48+r9]
  2650. vpshufb xmm0,xmm0,xmm6
  2651. add r9,64
  2652. vpshufb xmm1,xmm1,xmm6
  2653. vpshufb xmm2,xmm2,xmm6
  2654. vpshufb xmm3,xmm3,xmm6
  2655. vpaddd xmm4,xmm0,xmm11
  2656. vpaddd xmm5,xmm1,xmm11
  2657. vpaddd xmm6,xmm2,xmm11
  2658. vmovdqa XMMWORD PTR[rsp],xmm4
  2659. vmovdqa XMMWORD PTR[16+rsp],xmm5
  2660. vmovdqa XMMWORD PTR[32+rsp],xmm6
  2661. jmp $L$oop_avx
  2662. ALIGN 16
  2663. $L$oop_avx::
  2664. shrd ebx,ebx,2
  2665. xor esi,edx
  2666. vpalignr xmm4,xmm1,xmm0,8
  2667. mov edi,eax
  2668. add ebp,DWORD PTR[rsp]
  2669. vpaddd xmm9,xmm11,xmm3
  2670. xor ebx,ecx
  2671. shld eax,eax,5
  2672. vpsrldq xmm8,xmm3,4
  2673. add ebp,esi
  2674. and edi,ebx
  2675. vpxor xmm4,xmm4,xmm0
  2676. xor ebx,ecx
  2677. add ebp,eax
  2678. vpxor xmm8,xmm8,xmm2
  2679. shrd eax,eax,7
  2680. xor edi,ecx
  2681. mov esi,ebp
  2682. add edx,DWORD PTR[4+rsp]
  2683. vpxor xmm4,xmm4,xmm8
  2684. xor eax,ebx
  2685. shld ebp,ebp,5
  2686. vmovdqa XMMWORD PTR[48+rsp],xmm9
  2687. add edx,edi
  2688. and esi,eax
  2689. vpsrld xmm8,xmm4,31
  2690. xor eax,ebx
  2691. add edx,ebp
  2692. shrd ebp,ebp,7
  2693. xor esi,ebx
  2694. vpslldq xmm10,xmm4,12
  2695. vpaddd xmm4,xmm4,xmm4
  2696. mov edi,edx
  2697. add ecx,DWORD PTR[8+rsp]
  2698. xor ebp,eax
  2699. shld edx,edx,5
  2700. vpsrld xmm9,xmm10,30
  2701. vpor xmm4,xmm4,xmm8
  2702. add ecx,esi
  2703. and edi,ebp
  2704. xor ebp,eax
  2705. add ecx,edx
  2706. vpslld xmm10,xmm10,2
  2707. vpxor xmm4,xmm4,xmm9
  2708. shrd edx,edx,7
  2709. xor edi,eax
  2710. mov esi,ecx
  2711. add ebx,DWORD PTR[12+rsp]
  2712. vpxor xmm4,xmm4,xmm10
  2713. xor edx,ebp
  2714. shld ecx,ecx,5
  2715. add ebx,edi
  2716. and esi,edx
  2717. xor edx,ebp
  2718. add ebx,ecx
  2719. shrd ecx,ecx,7
  2720. xor esi,ebp
  2721. vpalignr xmm5,xmm2,xmm1,8
  2722. mov edi,ebx
  2723. add eax,DWORD PTR[16+rsp]
  2724. vpaddd xmm9,xmm11,xmm4
  2725. xor ecx,edx
  2726. shld ebx,ebx,5
  2727. vpsrldq xmm8,xmm4,4
  2728. add eax,esi
  2729. and edi,ecx
  2730. vpxor xmm5,xmm5,xmm1
  2731. xor ecx,edx
  2732. add eax,ebx
  2733. vpxor xmm8,xmm8,xmm3
  2734. shrd ebx,ebx,7
  2735. xor edi,edx
  2736. mov esi,eax
  2737. add ebp,DWORD PTR[20+rsp]
  2738. vpxor xmm5,xmm5,xmm8
  2739. xor ebx,ecx
  2740. shld eax,eax,5
  2741. vmovdqa XMMWORD PTR[rsp],xmm9
  2742. add ebp,edi
  2743. and esi,ebx
  2744. vpsrld xmm8,xmm5,31
  2745. xor ebx,ecx
  2746. add ebp,eax
  2747. shrd eax,eax,7
  2748. xor esi,ecx
  2749. vpslldq xmm10,xmm5,12
  2750. vpaddd xmm5,xmm5,xmm5
  2751. mov edi,ebp
  2752. add edx,DWORD PTR[24+rsp]
  2753. xor eax,ebx
  2754. shld ebp,ebp,5
  2755. vpsrld xmm9,xmm10,30
  2756. vpor xmm5,xmm5,xmm8
  2757. add edx,esi
  2758. and edi,eax
  2759. xor eax,ebx
  2760. add edx,ebp
  2761. vpslld xmm10,xmm10,2
  2762. vpxor xmm5,xmm5,xmm9
  2763. shrd ebp,ebp,7
  2764. xor edi,ebx
  2765. mov esi,edx
  2766. add ecx,DWORD PTR[28+rsp]
  2767. vpxor xmm5,xmm5,xmm10
  2768. xor ebp,eax
  2769. shld edx,edx,5
  2770. vmovdqa xmm11,XMMWORD PTR[((-32))+r14]
  2771. add ecx,edi
  2772. and esi,ebp
  2773. xor ebp,eax
  2774. add ecx,edx
  2775. shrd edx,edx,7
  2776. xor esi,eax
  2777. vpalignr xmm6,xmm3,xmm2,8
  2778. mov edi,ecx
  2779. add ebx,DWORD PTR[32+rsp]
  2780. vpaddd xmm9,xmm11,xmm5
  2781. xor edx,ebp
  2782. shld ecx,ecx,5
  2783. vpsrldq xmm8,xmm5,4
  2784. add ebx,esi
  2785. and edi,edx
  2786. vpxor xmm6,xmm6,xmm2
  2787. xor edx,ebp
  2788. add ebx,ecx
  2789. vpxor xmm8,xmm8,xmm4
  2790. shrd ecx,ecx,7
  2791. xor edi,ebp
  2792. mov esi,ebx
  2793. add eax,DWORD PTR[36+rsp]
  2794. vpxor xmm6,xmm6,xmm8
  2795. xor ecx,edx
  2796. shld ebx,ebx,5
  2797. vmovdqa XMMWORD PTR[16+rsp],xmm9
  2798. add eax,edi
  2799. and esi,ecx
  2800. vpsrld xmm8,xmm6,31
  2801. xor ecx,edx
  2802. add eax,ebx
  2803. shrd ebx,ebx,7
  2804. xor esi,edx
  2805. vpslldq xmm10,xmm6,12
  2806. vpaddd xmm6,xmm6,xmm6
  2807. mov edi,eax
  2808. add ebp,DWORD PTR[40+rsp]
  2809. xor ebx,ecx
  2810. shld eax,eax,5
  2811. vpsrld xmm9,xmm10,30
  2812. vpor xmm6,xmm6,xmm8
  2813. add ebp,esi
  2814. and edi,ebx
  2815. xor ebx,ecx
  2816. add ebp,eax
  2817. vpslld xmm10,xmm10,2
  2818. vpxor xmm6,xmm6,xmm9
  2819. shrd eax,eax,7
  2820. xor edi,ecx
  2821. mov esi,ebp
  2822. add edx,DWORD PTR[44+rsp]
  2823. vpxor xmm6,xmm6,xmm10
  2824. xor eax,ebx
  2825. shld ebp,ebp,5
  2826. add edx,edi
  2827. and esi,eax
  2828. xor eax,ebx
  2829. add edx,ebp
  2830. shrd ebp,ebp,7
  2831. xor esi,ebx
  2832. vpalignr xmm7,xmm4,xmm3,8
  2833. mov edi,edx
  2834. add ecx,DWORD PTR[48+rsp]
  2835. vpaddd xmm9,xmm11,xmm6
  2836. xor ebp,eax
  2837. shld edx,edx,5
  2838. vpsrldq xmm8,xmm6,4
  2839. add ecx,esi
  2840. and edi,ebp
  2841. vpxor xmm7,xmm7,xmm3
  2842. xor ebp,eax
  2843. add ecx,edx
  2844. vpxor xmm8,xmm8,xmm5
  2845. shrd edx,edx,7
  2846. xor edi,eax
  2847. mov esi,ecx
  2848. add ebx,DWORD PTR[52+rsp]
  2849. vpxor xmm7,xmm7,xmm8
  2850. xor edx,ebp
  2851. shld ecx,ecx,5
  2852. vmovdqa XMMWORD PTR[32+rsp],xmm9
  2853. add ebx,edi
  2854. and esi,edx
  2855. vpsrld xmm8,xmm7,31
  2856. xor edx,ebp
  2857. add ebx,ecx
  2858. shrd ecx,ecx,7
  2859. xor esi,ebp
  2860. vpslldq xmm10,xmm7,12
  2861. vpaddd xmm7,xmm7,xmm7
  2862. mov edi,ebx
  2863. add eax,DWORD PTR[56+rsp]
  2864. xor ecx,edx
  2865. shld ebx,ebx,5
  2866. vpsrld xmm9,xmm10,30
  2867. vpor xmm7,xmm7,xmm8
  2868. add eax,esi
  2869. and edi,ecx
  2870. xor ecx,edx
  2871. add eax,ebx
  2872. vpslld xmm10,xmm10,2
  2873. vpxor xmm7,xmm7,xmm9
  2874. shrd ebx,ebx,7
  2875. xor edi,edx
  2876. mov esi,eax
  2877. add ebp,DWORD PTR[60+rsp]
  2878. vpxor xmm7,xmm7,xmm10
  2879. xor ebx,ecx
  2880. shld eax,eax,5
  2881. add ebp,edi
  2882. and esi,ebx
  2883. xor ebx,ecx
  2884. add ebp,eax
  2885. vpalignr xmm8,xmm7,xmm6,8
  2886. vpxor xmm0,xmm0,xmm4
  2887. shrd eax,eax,7
  2888. xor esi,ecx
  2889. mov edi,ebp
  2890. add edx,DWORD PTR[rsp]
  2891. vpxor xmm0,xmm0,xmm1
  2892. xor eax,ebx
  2893. shld ebp,ebp,5
  2894. vpaddd xmm9,xmm11,xmm7
  2895. add edx,esi
  2896. and edi,eax
  2897. vpxor xmm0,xmm0,xmm8
  2898. xor eax,ebx
  2899. add edx,ebp
  2900. shrd ebp,ebp,7
  2901. xor edi,ebx
  2902. vpsrld xmm8,xmm0,30
  2903. vmovdqa XMMWORD PTR[48+rsp],xmm9
  2904. mov esi,edx
  2905. add ecx,DWORD PTR[4+rsp]
  2906. xor ebp,eax
  2907. shld edx,edx,5
  2908. vpslld xmm0,xmm0,2
  2909. add ecx,edi
  2910. and esi,ebp
  2911. xor ebp,eax
  2912. add ecx,edx
  2913. shrd edx,edx,7
  2914. xor esi,eax
  2915. mov edi,ecx
  2916. add ebx,DWORD PTR[8+rsp]
  2917. vpor xmm0,xmm0,xmm8
  2918. xor edx,ebp
  2919. shld ecx,ecx,5
  2920. add ebx,esi
  2921. and edi,edx
  2922. xor edx,ebp
  2923. add ebx,ecx
  2924. add eax,DWORD PTR[12+rsp]
  2925. xor edi,ebp
  2926. mov esi,ebx
  2927. shld ebx,ebx,5
  2928. add eax,edi
  2929. xor esi,edx
  2930. shrd ecx,ecx,7
  2931. add eax,ebx
  2932. vpalignr xmm8,xmm0,xmm7,8
  2933. vpxor xmm1,xmm1,xmm5
  2934. add ebp,DWORD PTR[16+rsp]
  2935. xor esi,ecx
  2936. mov edi,eax
  2937. shld eax,eax,5
  2938. vpxor xmm1,xmm1,xmm2
  2939. add ebp,esi
  2940. xor edi,ecx
  2941. vpaddd xmm9,xmm11,xmm0
  2942. shrd ebx,ebx,7
  2943. add ebp,eax
  2944. vpxor xmm1,xmm1,xmm8
  2945. add edx,DWORD PTR[20+rsp]
  2946. xor edi,ebx
  2947. mov esi,ebp
  2948. shld ebp,ebp,5
  2949. vpsrld xmm8,xmm1,30
  2950. vmovdqa XMMWORD PTR[rsp],xmm9
  2951. add edx,edi
  2952. xor esi,ebx
  2953. shrd eax,eax,7
  2954. add edx,ebp
  2955. vpslld xmm1,xmm1,2
  2956. add ecx,DWORD PTR[24+rsp]
  2957. xor esi,eax
  2958. mov edi,edx
  2959. shld edx,edx,5
  2960. add ecx,esi
  2961. xor edi,eax
  2962. shrd ebp,ebp,7
  2963. add ecx,edx
  2964. vpor xmm1,xmm1,xmm8
  2965. add ebx,DWORD PTR[28+rsp]
  2966. xor edi,ebp
  2967. mov esi,ecx
  2968. shld ecx,ecx,5
  2969. add ebx,edi
  2970. xor esi,ebp
  2971. shrd edx,edx,7
  2972. add ebx,ecx
  2973. vpalignr xmm8,xmm1,xmm0,8
  2974. vpxor xmm2,xmm2,xmm6
  2975. add eax,DWORD PTR[32+rsp]
  2976. xor esi,edx
  2977. mov edi,ebx
  2978. shld ebx,ebx,5
  2979. vpxor xmm2,xmm2,xmm3
  2980. add eax,esi
  2981. xor edi,edx
  2982. vpaddd xmm9,xmm11,xmm1
  2983. vmovdqa xmm11,XMMWORD PTR[r14]
  2984. shrd ecx,ecx,7
  2985. add eax,ebx
  2986. vpxor xmm2,xmm2,xmm8
  2987. add ebp,DWORD PTR[36+rsp]
  2988. xor edi,ecx
  2989. mov esi,eax
  2990. shld eax,eax,5
  2991. vpsrld xmm8,xmm2,30
  2992. vmovdqa XMMWORD PTR[16+rsp],xmm9
  2993. add ebp,edi
  2994. xor esi,ecx
  2995. shrd ebx,ebx,7
  2996. add ebp,eax
  2997. vpslld xmm2,xmm2,2
  2998. add edx,DWORD PTR[40+rsp]
  2999. xor esi,ebx
  3000. mov edi,ebp
  3001. shld ebp,ebp,5
  3002. add edx,esi
  3003. xor edi,ebx
  3004. shrd eax,eax,7
  3005. add edx,ebp
  3006. vpor xmm2,xmm2,xmm8
  3007. add ecx,DWORD PTR[44+rsp]
  3008. xor edi,eax
  3009. mov esi,edx
  3010. shld edx,edx,5
  3011. add ecx,edi
  3012. xor esi,eax
  3013. shrd ebp,ebp,7
  3014. add ecx,edx
  3015. vpalignr xmm8,xmm2,xmm1,8
  3016. vpxor xmm3,xmm3,xmm7
  3017. add ebx,DWORD PTR[48+rsp]
  3018. xor esi,ebp
  3019. mov edi,ecx
  3020. shld ecx,ecx,5
  3021. vpxor xmm3,xmm3,xmm4
  3022. add ebx,esi
  3023. xor edi,ebp
  3024. vpaddd xmm9,xmm11,xmm2
  3025. shrd edx,edx,7
  3026. add ebx,ecx
  3027. vpxor xmm3,xmm3,xmm8
  3028. add eax,DWORD PTR[52+rsp]
  3029. xor edi,edx
  3030. mov esi,ebx
  3031. shld ebx,ebx,5
  3032. vpsrld xmm8,xmm3,30
  3033. vmovdqa XMMWORD PTR[32+rsp],xmm9
  3034. add eax,edi
  3035. xor esi,edx
  3036. shrd ecx,ecx,7
  3037. add eax,ebx
  3038. vpslld xmm3,xmm3,2
  3039. add ebp,DWORD PTR[56+rsp]
  3040. xor esi,ecx
  3041. mov edi,eax
  3042. shld eax,eax,5
  3043. add ebp,esi
  3044. xor edi,ecx
  3045. shrd ebx,ebx,7
  3046. add ebp,eax
  3047. vpor xmm3,xmm3,xmm8
  3048. add edx,DWORD PTR[60+rsp]
  3049. xor edi,ebx
  3050. mov esi,ebp
  3051. shld ebp,ebp,5
  3052. add edx,edi
  3053. xor esi,ebx
  3054. shrd eax,eax,7
  3055. add edx,ebp
  3056. vpalignr xmm8,xmm3,xmm2,8
  3057. vpxor xmm4,xmm4,xmm0
  3058. add ecx,DWORD PTR[rsp]
  3059. xor esi,eax
  3060. mov edi,edx
  3061. shld edx,edx,5
  3062. vpxor xmm4,xmm4,xmm5
  3063. add ecx,esi
  3064. xor edi,eax
  3065. vpaddd xmm9,xmm11,xmm3
  3066. shrd ebp,ebp,7
  3067. add ecx,edx
  3068. vpxor xmm4,xmm4,xmm8
  3069. add ebx,DWORD PTR[4+rsp]
  3070. xor edi,ebp
  3071. mov esi,ecx
  3072. shld ecx,ecx,5
  3073. vpsrld xmm8,xmm4,30
  3074. vmovdqa XMMWORD PTR[48+rsp],xmm9
  3075. add ebx,edi
  3076. xor esi,ebp
  3077. shrd edx,edx,7
  3078. add ebx,ecx
  3079. vpslld xmm4,xmm4,2
  3080. add eax,DWORD PTR[8+rsp]
  3081. xor esi,edx
  3082. mov edi,ebx
  3083. shld ebx,ebx,5
  3084. add eax,esi
  3085. xor edi,edx
  3086. shrd ecx,ecx,7
  3087. add eax,ebx
  3088. vpor xmm4,xmm4,xmm8
  3089. add ebp,DWORD PTR[12+rsp]
  3090. xor edi,ecx
  3091. mov esi,eax
  3092. shld eax,eax,5
  3093. add ebp,edi
  3094. xor esi,ecx
  3095. shrd ebx,ebx,7
  3096. add ebp,eax
  3097. vpalignr xmm8,xmm4,xmm3,8
  3098. vpxor xmm5,xmm5,xmm1
  3099. add edx,DWORD PTR[16+rsp]
  3100. xor esi,ebx
  3101. mov edi,ebp
  3102. shld ebp,ebp,5
  3103. vpxor xmm5,xmm5,xmm6
  3104. add edx,esi
  3105. xor edi,ebx
  3106. vpaddd xmm9,xmm11,xmm4
  3107. shrd eax,eax,7
  3108. add edx,ebp
  3109. vpxor xmm5,xmm5,xmm8
  3110. add ecx,DWORD PTR[20+rsp]
  3111. xor edi,eax
  3112. mov esi,edx
  3113. shld edx,edx,5
  3114. vpsrld xmm8,xmm5,30
  3115. vmovdqa XMMWORD PTR[rsp],xmm9
  3116. add ecx,edi
  3117. xor esi,eax
  3118. shrd ebp,ebp,7
  3119. add ecx,edx
  3120. vpslld xmm5,xmm5,2
  3121. add ebx,DWORD PTR[24+rsp]
  3122. xor esi,ebp
  3123. mov edi,ecx
  3124. shld ecx,ecx,5
  3125. add ebx,esi
  3126. xor edi,ebp
  3127. shrd edx,edx,7
  3128. add ebx,ecx
  3129. vpor xmm5,xmm5,xmm8
  3130. add eax,DWORD PTR[28+rsp]
  3131. shrd ecx,ecx,7
  3132. mov esi,ebx
  3133. xor edi,edx
  3134. shld ebx,ebx,5
  3135. add eax,edi
  3136. xor esi,ecx
  3137. xor ecx,edx
  3138. add eax,ebx
  3139. vpalignr xmm8,xmm5,xmm4,8
  3140. vpxor xmm6,xmm6,xmm2
  3141. add ebp,DWORD PTR[32+rsp]
  3142. and esi,ecx
  3143. xor ecx,edx
  3144. shrd ebx,ebx,7
  3145. vpxor xmm6,xmm6,xmm7
  3146. mov edi,eax
  3147. xor esi,ecx
  3148. vpaddd xmm9,xmm11,xmm5
  3149. shld eax,eax,5
  3150. add ebp,esi
  3151. vpxor xmm6,xmm6,xmm8
  3152. xor edi,ebx
  3153. xor ebx,ecx
  3154. add ebp,eax
  3155. add edx,DWORD PTR[36+rsp]
  3156. vpsrld xmm8,xmm6,30
  3157. vmovdqa XMMWORD PTR[16+rsp],xmm9
  3158. and edi,ebx
  3159. xor ebx,ecx
  3160. shrd eax,eax,7
  3161. mov esi,ebp
  3162. vpslld xmm6,xmm6,2
  3163. xor edi,ebx
  3164. shld ebp,ebp,5
  3165. add edx,edi
  3166. xor esi,eax
  3167. xor eax,ebx
  3168. add edx,ebp
  3169. add ecx,DWORD PTR[40+rsp]
  3170. and esi,eax
  3171. vpor xmm6,xmm6,xmm8
  3172. xor eax,ebx
  3173. shrd ebp,ebp,7
  3174. mov edi,edx
  3175. xor esi,eax
  3176. shld edx,edx,5
  3177. add ecx,esi
  3178. xor edi,ebp
  3179. xor ebp,eax
  3180. add ecx,edx
  3181. add ebx,DWORD PTR[44+rsp]
  3182. and edi,ebp
  3183. xor ebp,eax
  3184. shrd edx,edx,7
  3185. mov esi,ecx
  3186. xor edi,ebp
  3187. shld ecx,ecx,5
  3188. add ebx,edi
  3189. xor esi,edx
  3190. xor edx,ebp
  3191. add ebx,ecx
  3192. vpalignr xmm8,xmm6,xmm5,8
  3193. vpxor xmm7,xmm7,xmm3
  3194. add eax,DWORD PTR[48+rsp]
  3195. and esi,edx
  3196. xor edx,ebp
  3197. shrd ecx,ecx,7
  3198. vpxor xmm7,xmm7,xmm0
  3199. mov edi,ebx
  3200. xor esi,edx
  3201. vpaddd xmm9,xmm11,xmm6
  3202. vmovdqa xmm11,XMMWORD PTR[32+r14]
  3203. shld ebx,ebx,5
  3204. add eax,esi
  3205. vpxor xmm7,xmm7,xmm8
  3206. xor edi,ecx
  3207. xor ecx,edx
  3208. add eax,ebx
  3209. add ebp,DWORD PTR[52+rsp]
  3210. vpsrld xmm8,xmm7,30
  3211. vmovdqa XMMWORD PTR[32+rsp],xmm9
  3212. and edi,ecx
  3213. xor ecx,edx
  3214. shrd ebx,ebx,7
  3215. mov esi,eax
  3216. vpslld xmm7,xmm7,2
  3217. xor edi,ecx
  3218. shld eax,eax,5
  3219. add ebp,edi
  3220. xor esi,ebx
  3221. xor ebx,ecx
  3222. add ebp,eax
  3223. add edx,DWORD PTR[56+rsp]
  3224. and esi,ebx
  3225. vpor xmm7,xmm7,xmm8
  3226. xor ebx,ecx
  3227. shrd eax,eax,7
  3228. mov edi,ebp
  3229. xor esi,ebx
  3230. shld ebp,ebp,5
  3231. add edx,esi
  3232. xor edi,eax
  3233. xor eax,ebx
  3234. add edx,ebp
  3235. add ecx,DWORD PTR[60+rsp]
  3236. and edi,eax
  3237. xor eax,ebx
  3238. shrd ebp,ebp,7
  3239. mov esi,edx
  3240. xor edi,eax
  3241. shld edx,edx,5
  3242. add ecx,edi
  3243. xor esi,ebp
  3244. xor ebp,eax
  3245. add ecx,edx
  3246. vpalignr xmm8,xmm7,xmm6,8
  3247. vpxor xmm0,xmm0,xmm4
  3248. add ebx,DWORD PTR[rsp]
  3249. and esi,ebp
  3250. xor ebp,eax
  3251. shrd edx,edx,7
  3252. vpxor xmm0,xmm0,xmm1
  3253. mov edi,ecx
  3254. xor esi,ebp
  3255. vpaddd xmm9,xmm11,xmm7
  3256. shld ecx,ecx,5
  3257. add ebx,esi
  3258. vpxor xmm0,xmm0,xmm8
  3259. xor edi,edx
  3260. xor edx,ebp
  3261. add ebx,ecx
  3262. add eax,DWORD PTR[4+rsp]
  3263. vpsrld xmm8,xmm0,30
  3264. vmovdqa XMMWORD PTR[48+rsp],xmm9
  3265. and edi,edx
  3266. xor edx,ebp
  3267. shrd ecx,ecx,7
  3268. mov esi,ebx
  3269. vpslld xmm0,xmm0,2
  3270. xor edi,edx
  3271. shld ebx,ebx,5
  3272. add eax,edi
  3273. xor esi,ecx
  3274. xor ecx,edx
  3275. add eax,ebx
  3276. add ebp,DWORD PTR[8+rsp]
  3277. and esi,ecx
  3278. vpor xmm0,xmm0,xmm8
  3279. xor ecx,edx
  3280. shrd ebx,ebx,7
  3281. mov edi,eax
  3282. xor esi,ecx
  3283. shld eax,eax,5
  3284. add ebp,esi
  3285. xor edi,ebx
  3286. xor ebx,ecx
  3287. add ebp,eax
  3288. add edx,DWORD PTR[12+rsp]
  3289. and edi,ebx
  3290. xor ebx,ecx
  3291. shrd eax,eax,7
  3292. mov esi,ebp
  3293. xor edi,ebx
  3294. shld ebp,ebp,5
  3295. add edx,edi
  3296. xor esi,eax
  3297. xor eax,ebx
  3298. add edx,ebp
  3299. vpalignr xmm8,xmm0,xmm7,8
  3300. vpxor xmm1,xmm1,xmm5
  3301. add ecx,DWORD PTR[16+rsp]
  3302. and esi,eax
  3303. xor eax,ebx
  3304. shrd ebp,ebp,7
  3305. vpxor xmm1,xmm1,xmm2
  3306. mov edi,edx
  3307. xor esi,eax
  3308. vpaddd xmm9,xmm11,xmm0
  3309. shld edx,edx,5
  3310. add ecx,esi
  3311. vpxor xmm1,xmm1,xmm8
  3312. xor edi,ebp
  3313. xor ebp,eax
  3314. add ecx,edx
  3315. add ebx,DWORD PTR[20+rsp]
  3316. vpsrld xmm8,xmm1,30
  3317. vmovdqa XMMWORD PTR[rsp],xmm9
  3318. and edi,ebp
  3319. xor ebp,eax
  3320. shrd edx,edx,7
  3321. mov esi,ecx
  3322. vpslld xmm1,xmm1,2
  3323. xor edi,ebp
  3324. shld ecx,ecx,5
  3325. add ebx,edi
  3326. xor esi,edx
  3327. xor edx,ebp
  3328. add ebx,ecx
  3329. add eax,DWORD PTR[24+rsp]
  3330. and esi,edx
  3331. vpor xmm1,xmm1,xmm8
  3332. xor edx,ebp
  3333. shrd ecx,ecx,7
  3334. mov edi,ebx
  3335. xor esi,edx
  3336. shld ebx,ebx,5
  3337. add eax,esi
  3338. xor edi,ecx
  3339. xor ecx,edx
  3340. add eax,ebx
  3341. add ebp,DWORD PTR[28+rsp]
  3342. and edi,ecx
  3343. xor ecx,edx
  3344. shrd ebx,ebx,7
  3345. mov esi,eax
  3346. xor edi,ecx
  3347. shld eax,eax,5
  3348. add ebp,edi
  3349. xor esi,ebx
  3350. xor ebx,ecx
  3351. add ebp,eax
  3352. vpalignr xmm8,xmm1,xmm0,8
  3353. vpxor xmm2,xmm2,xmm6
  3354. add edx,DWORD PTR[32+rsp]
  3355. and esi,ebx
  3356. xor ebx,ecx
  3357. shrd eax,eax,7
  3358. vpxor xmm2,xmm2,xmm3
  3359. mov edi,ebp
  3360. xor esi,ebx
  3361. vpaddd xmm9,xmm11,xmm1
  3362. shld ebp,ebp,5
  3363. add edx,esi
  3364. vpxor xmm2,xmm2,xmm8
  3365. xor edi,eax
  3366. xor eax,ebx
  3367. add edx,ebp
  3368. add ecx,DWORD PTR[36+rsp]
  3369. vpsrld xmm8,xmm2,30
  3370. vmovdqa XMMWORD PTR[16+rsp],xmm9
  3371. and edi,eax
  3372. xor eax,ebx
  3373. shrd ebp,ebp,7
  3374. mov esi,edx
  3375. vpslld xmm2,xmm2,2
  3376. xor edi,eax
  3377. shld edx,edx,5
  3378. add ecx,edi
  3379. xor esi,ebp
  3380. xor ebp,eax
  3381. add ecx,edx
  3382. add ebx,DWORD PTR[40+rsp]
  3383. and esi,ebp
  3384. vpor xmm2,xmm2,xmm8
  3385. xor ebp,eax
  3386. shrd edx,edx,7
  3387. mov edi,ecx
  3388. xor esi,ebp
  3389. shld ecx,ecx,5
  3390. add ebx,esi
  3391. xor edi,edx
  3392. xor edx,ebp
  3393. add ebx,ecx
  3394. add eax,DWORD PTR[44+rsp]
  3395. and edi,edx
  3396. xor edx,ebp
  3397. shrd ecx,ecx,7
  3398. mov esi,ebx
  3399. xor edi,edx
  3400. shld ebx,ebx,5
  3401. add eax,edi
  3402. xor esi,edx
  3403. add eax,ebx
  3404. vpalignr xmm8,xmm2,xmm1,8
  3405. vpxor xmm3,xmm3,xmm7
  3406. add ebp,DWORD PTR[48+rsp]
  3407. xor esi,ecx
  3408. mov edi,eax
  3409. shld eax,eax,5
  3410. vpxor xmm3,xmm3,xmm4
  3411. add ebp,esi
  3412. xor edi,ecx
  3413. vpaddd xmm9,xmm11,xmm2
  3414. shrd ebx,ebx,7
  3415. add ebp,eax
  3416. vpxor xmm3,xmm3,xmm8
  3417. add edx,DWORD PTR[52+rsp]
  3418. xor edi,ebx
  3419. mov esi,ebp
  3420. shld ebp,ebp,5
  3421. vpsrld xmm8,xmm3,30
  3422. vmovdqa XMMWORD PTR[32+rsp],xmm9
  3423. add edx,edi
  3424. xor esi,ebx
  3425. shrd eax,eax,7
  3426. add edx,ebp
  3427. vpslld xmm3,xmm3,2
  3428. add ecx,DWORD PTR[56+rsp]
  3429. xor esi,eax
  3430. mov edi,edx
  3431. shld edx,edx,5
  3432. add ecx,esi
  3433. xor edi,eax
  3434. shrd ebp,ebp,7
  3435. add ecx,edx
  3436. vpor xmm3,xmm3,xmm8
  3437. add ebx,DWORD PTR[60+rsp]
  3438. xor edi,ebp
  3439. mov esi,ecx
  3440. shld ecx,ecx,5
  3441. add ebx,edi
  3442. xor esi,ebp
  3443. shrd edx,edx,7
  3444. add ebx,ecx
  3445. add eax,DWORD PTR[rsp]
  3446. vpaddd xmm9,xmm11,xmm3
  3447. xor esi,edx
  3448. mov edi,ebx
  3449. shld ebx,ebx,5
  3450. add eax,esi
  3451. vmovdqa XMMWORD PTR[48+rsp],xmm9
  3452. xor edi,edx
  3453. shrd ecx,ecx,7
  3454. add eax,ebx
  3455. add ebp,DWORD PTR[4+rsp]
  3456. xor edi,ecx
  3457. mov esi,eax
  3458. shld eax,eax,5
  3459. add ebp,edi
  3460. xor esi,ecx
  3461. shrd ebx,ebx,7
  3462. add ebp,eax
  3463. add edx,DWORD PTR[8+rsp]
  3464. xor esi,ebx
  3465. mov edi,ebp
  3466. shld ebp,ebp,5
  3467. add edx,esi
  3468. xor edi,ebx
  3469. shrd eax,eax,7
  3470. add edx,ebp
  3471. add ecx,DWORD PTR[12+rsp]
  3472. xor edi,eax
  3473. mov esi,edx
  3474. shld edx,edx,5
  3475. add ecx,edi
  3476. xor esi,eax
  3477. shrd ebp,ebp,7
  3478. add ecx,edx
  3479. cmp r9,r10
  3480. je $L$done_avx
  3481. vmovdqa xmm6,XMMWORD PTR[64+r14]
  3482. vmovdqa xmm11,XMMWORD PTR[((-64))+r14]
  3483. vmovdqu xmm0,XMMWORD PTR[r9]
  3484. vmovdqu xmm1,XMMWORD PTR[16+r9]
  3485. vmovdqu xmm2,XMMWORD PTR[32+r9]
  3486. vmovdqu xmm3,XMMWORD PTR[48+r9]
  3487. vpshufb xmm0,xmm0,xmm6
  3488. add r9,64
  3489. add ebx,DWORD PTR[16+rsp]
  3490. xor esi,ebp
  3491. vpshufb xmm1,xmm1,xmm6
  3492. mov edi,ecx
  3493. shld ecx,ecx,5
  3494. vpaddd xmm4,xmm0,xmm11
  3495. add ebx,esi
  3496. xor edi,ebp
  3497. shrd edx,edx,7
  3498. add ebx,ecx
  3499. vmovdqa XMMWORD PTR[rsp],xmm4
  3500. add eax,DWORD PTR[20+rsp]
  3501. xor edi,edx
  3502. mov esi,ebx
  3503. shld ebx,ebx,5
  3504. add eax,edi
  3505. xor esi,edx
  3506. shrd ecx,ecx,7
  3507. add eax,ebx
  3508. add ebp,DWORD PTR[24+rsp]
  3509. xor esi,ecx
  3510. mov edi,eax
  3511. shld eax,eax,5
  3512. add ebp,esi
  3513. xor edi,ecx
  3514. shrd ebx,ebx,7
  3515. add ebp,eax
  3516. add edx,DWORD PTR[28+rsp]
  3517. xor edi,ebx
  3518. mov esi,ebp
  3519. shld ebp,ebp,5
  3520. add edx,edi
  3521. xor esi,ebx
  3522. shrd eax,eax,7
  3523. add edx,ebp
  3524. add ecx,DWORD PTR[32+rsp]
  3525. xor esi,eax
  3526. vpshufb xmm2,xmm2,xmm6
  3527. mov edi,edx
  3528. shld edx,edx,5
  3529. vpaddd xmm5,xmm1,xmm11
  3530. add ecx,esi
  3531. xor edi,eax
  3532. shrd ebp,ebp,7
  3533. add ecx,edx
  3534. vmovdqa XMMWORD PTR[16+rsp],xmm5
  3535. add ebx,DWORD PTR[36+rsp]
  3536. xor edi,ebp
  3537. mov esi,ecx
  3538. shld ecx,ecx,5
  3539. add ebx,edi
  3540. xor esi,ebp
  3541. shrd edx,edx,7
  3542. add ebx,ecx
  3543. add eax,DWORD PTR[40+rsp]
  3544. xor esi,edx
  3545. mov edi,ebx
  3546. shld ebx,ebx,5
  3547. add eax,esi
  3548. xor edi,edx
  3549. shrd ecx,ecx,7
  3550. add eax,ebx
  3551. add ebp,DWORD PTR[44+rsp]
  3552. xor edi,ecx
  3553. mov esi,eax
  3554. shld eax,eax,5
  3555. add ebp,edi
  3556. xor esi,ecx
  3557. shrd ebx,ebx,7
  3558. add ebp,eax
  3559. add edx,DWORD PTR[48+rsp]
  3560. xor esi,ebx
  3561. vpshufb xmm3,xmm3,xmm6
  3562. mov edi,ebp
  3563. shld ebp,ebp,5
  3564. vpaddd xmm6,xmm2,xmm11
  3565. add edx,esi
  3566. xor edi,ebx
  3567. shrd eax,eax,7
  3568. add edx,ebp
  3569. vmovdqa XMMWORD PTR[32+rsp],xmm6
  3570. add ecx,DWORD PTR[52+rsp]
  3571. xor edi,eax
  3572. mov esi,edx
  3573. shld edx,edx,5
  3574. add ecx,edi
  3575. xor esi,eax
  3576. shrd ebp,ebp,7
  3577. add ecx,edx
  3578. add ebx,DWORD PTR[56+rsp]
  3579. xor esi,ebp
  3580. mov edi,ecx
  3581. shld ecx,ecx,5
  3582. add ebx,esi
  3583. xor edi,ebp
  3584. shrd edx,edx,7
  3585. add ebx,ecx
  3586. add eax,DWORD PTR[60+rsp]
  3587. xor edi,edx
  3588. mov esi,ebx
  3589. shld ebx,ebx,5
  3590. add eax,edi
  3591. shrd ecx,ecx,7
  3592. add eax,ebx
  3593. add eax,DWORD PTR[r8]
  3594. add esi,DWORD PTR[4+r8]
  3595. add ecx,DWORD PTR[8+r8]
  3596. add edx,DWORD PTR[12+r8]
  3597. mov DWORD PTR[r8],eax
  3598. add ebp,DWORD PTR[16+r8]
  3599. mov DWORD PTR[4+r8],esi
  3600. mov ebx,esi
  3601. mov DWORD PTR[8+r8],ecx
  3602. mov edi,ecx
  3603. mov DWORD PTR[12+r8],edx
  3604. xor edi,edx
  3605. mov DWORD PTR[16+r8],ebp
  3606. and esi,edi
  3607. jmp $L$oop_avx
  3608. ALIGN 16
  3609. $L$done_avx::
  3610. add ebx,DWORD PTR[16+rsp]
  3611. xor esi,ebp
  3612. mov edi,ecx
  3613. shld ecx,ecx,5
  3614. add ebx,esi
  3615. xor edi,ebp
  3616. shrd edx,edx,7
  3617. add ebx,ecx
  3618. add eax,DWORD PTR[20+rsp]
  3619. xor edi,edx
  3620. mov esi,ebx
  3621. shld ebx,ebx,5
  3622. add eax,edi
  3623. xor esi,edx
  3624. shrd ecx,ecx,7
  3625. add eax,ebx
  3626. add ebp,DWORD PTR[24+rsp]
  3627. xor esi,ecx
  3628. mov edi,eax
  3629. shld eax,eax,5
  3630. add ebp,esi
  3631. xor edi,ecx
  3632. shrd ebx,ebx,7
  3633. add ebp,eax
  3634. add edx,DWORD PTR[28+rsp]
  3635. xor edi,ebx
  3636. mov esi,ebp
  3637. shld ebp,ebp,5
  3638. add edx,edi
  3639. xor esi,ebx
  3640. shrd eax,eax,7
  3641. add edx,ebp
  3642. add ecx,DWORD PTR[32+rsp]
  3643. xor esi,eax
  3644. mov edi,edx
  3645. shld edx,edx,5
  3646. add ecx,esi
  3647. xor edi,eax
  3648. shrd ebp,ebp,7
  3649. add ecx,edx
  3650. add ebx,DWORD PTR[36+rsp]
  3651. xor edi,ebp
  3652. mov esi,ecx
  3653. shld ecx,ecx,5
  3654. add ebx,edi
  3655. xor esi,ebp
  3656. shrd edx,edx,7
  3657. add ebx,ecx
  3658. add eax,DWORD PTR[40+rsp]
  3659. xor esi,edx
  3660. mov edi,ebx
  3661. shld ebx,ebx,5
  3662. add eax,esi
  3663. xor edi,edx
  3664. shrd ecx,ecx,7
  3665. add eax,ebx
  3666. add ebp,DWORD PTR[44+rsp]
  3667. xor edi,ecx
  3668. mov esi,eax
  3669. shld eax,eax,5
  3670. add ebp,edi
  3671. xor esi,ecx
  3672. shrd ebx,ebx,7
  3673. add ebp,eax
  3674. add edx,DWORD PTR[48+rsp]
  3675. xor esi,ebx
  3676. mov edi,ebp
  3677. shld ebp,ebp,5
  3678. add edx,esi
  3679. xor edi,ebx
  3680. shrd eax,eax,7
  3681. add edx,ebp
  3682. add ecx,DWORD PTR[52+rsp]
  3683. xor edi,eax
  3684. mov esi,edx
  3685. shld edx,edx,5
  3686. add ecx,edi
  3687. xor esi,eax
  3688. shrd ebp,ebp,7
  3689. add ecx,edx
  3690. add ebx,DWORD PTR[56+rsp]
  3691. xor esi,ebp
  3692. mov edi,ecx
  3693. shld ecx,ecx,5
  3694. add ebx,esi
  3695. xor edi,ebp
  3696. shrd edx,edx,7
  3697. add ebx,ecx
  3698. add eax,DWORD PTR[60+rsp]
  3699. xor edi,edx
  3700. mov esi,ebx
  3701. shld ebx,ebx,5
  3702. add eax,edi
  3703. shrd ecx,ecx,7
  3704. add eax,ebx
  3705. vzeroupper
  3706. add eax,DWORD PTR[r8]
  3707. add esi,DWORD PTR[4+r8]
  3708. add ecx,DWORD PTR[8+r8]
  3709. mov DWORD PTR[r8],eax
  3710. add edx,DWORD PTR[12+r8]
  3711. mov DWORD PTR[4+r8],esi
  3712. add ebp,DWORD PTR[16+r8]
  3713. mov DWORD PTR[8+r8],ecx
  3714. mov DWORD PTR[12+r8],edx
  3715. mov DWORD PTR[16+r8],ebp
  3716. movaps xmm6,XMMWORD PTR[((-40-96))+r11]
  3717. movaps xmm7,XMMWORD PTR[((-40-80))+r11]
  3718. movaps xmm8,XMMWORD PTR[((-40-64))+r11]
  3719. movaps xmm9,XMMWORD PTR[((-40-48))+r11]
  3720. movaps xmm10,XMMWORD PTR[((-40-32))+r11]
  3721. movaps xmm11,XMMWORD PTR[((-40-16))+r11]
  3722. mov r14,QWORD PTR[((-40))+r11]
  3723. mov r13,QWORD PTR[((-32))+r11]
  3724. mov r12,QWORD PTR[((-24))+r11]
  3725. mov rbp,QWORD PTR[((-16))+r11]
  3726. mov rbx,QWORD PTR[((-8))+r11]
  3727. lea rsp,QWORD PTR[r11]
  3728. $L$epilogue_avx::
  3729. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  3730. mov rsi,QWORD PTR[16+rsp]
  3731. DB 0F3h,0C3h ;repret
  3732. $L$SEH_end_sha1_block_data_order_avx::
  3733. sha1_block_data_order_avx ENDP
  3734. ALIGN 16
  3735. sha1_block_data_order_avx2 PROC PRIVATE
  3736. mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
  3737. mov QWORD PTR[16+rsp],rsi
  3738. mov rax,rsp
  3739. $L$SEH_begin_sha1_block_data_order_avx2::
  3740. mov rdi,rcx
  3741. mov rsi,rdx
  3742. mov rdx,r8
  3743. _avx2_shortcut::
  3744. mov r11,rsp
  3745. push rbx
  3746. push rbp
  3747. push r12
  3748. push r13
  3749. push r14
  3750. vzeroupper
  3751. lea rsp,QWORD PTR[((-96))+rsp]
  3752. vmovaps XMMWORD PTR[(-40-96)+r11],xmm6
  3753. vmovaps XMMWORD PTR[(-40-80)+r11],xmm7
  3754. vmovaps XMMWORD PTR[(-40-64)+r11],xmm8
  3755. vmovaps XMMWORD PTR[(-40-48)+r11],xmm9
  3756. vmovaps XMMWORD PTR[(-40-32)+r11],xmm10
  3757. vmovaps XMMWORD PTR[(-40-16)+r11],xmm11
  3758. $L$prologue_avx2::
  3759. mov r8,rdi
  3760. mov r9,rsi
  3761. mov r10,rdx
  3762. lea rsp,QWORD PTR[((-640))+rsp]
  3763. shl r10,6
  3764. lea r13,QWORD PTR[64+r9]
  3765. and rsp,-128
  3766. add r10,r9
  3767. lea r14,QWORD PTR[((K_XX_XX+64))]
  3768. mov eax,DWORD PTR[r8]
  3769. cmp r13,r10
  3770. cmovae r13,r9
  3771. mov ebp,DWORD PTR[4+r8]
  3772. mov ecx,DWORD PTR[8+r8]
  3773. mov edx,DWORD PTR[12+r8]
  3774. mov esi,DWORD PTR[16+r8]
  3775. vmovdqu ymm6,YMMWORD PTR[64+r14]
  3776. vmovdqu xmm0,XMMWORD PTR[r9]
  3777. vmovdqu xmm1,XMMWORD PTR[16+r9]
  3778. vmovdqu xmm2,XMMWORD PTR[32+r9]
  3779. vmovdqu xmm3,XMMWORD PTR[48+r9]
  3780. lea r9,QWORD PTR[64+r9]
  3781. vinserti128 ymm0,ymm0,XMMWORD PTR[r13],1
  3782. vinserti128 ymm1,ymm1,XMMWORD PTR[16+r13],1
  3783. vpshufb ymm0,ymm0,ymm6
  3784. vinserti128 ymm2,ymm2,XMMWORD PTR[32+r13],1
  3785. vpshufb ymm1,ymm1,ymm6
  3786. vinserti128 ymm3,ymm3,XMMWORD PTR[48+r13],1
  3787. vpshufb ymm2,ymm2,ymm6
  3788. vmovdqu ymm11,YMMWORD PTR[((-64))+r14]
  3789. vpshufb ymm3,ymm3,ymm6
  3790. vpaddd ymm4,ymm0,ymm11
  3791. vpaddd ymm5,ymm1,ymm11
  3792. vmovdqu YMMWORD PTR[rsp],ymm4
  3793. vpaddd ymm6,ymm2,ymm11
  3794. vmovdqu YMMWORD PTR[32+rsp],ymm5
  3795. vpaddd ymm7,ymm3,ymm11
  3796. vmovdqu YMMWORD PTR[64+rsp],ymm6
  3797. vmovdqu YMMWORD PTR[96+rsp],ymm7
  3798. vpalignr ymm4,ymm1,ymm0,8
  3799. vpsrldq ymm8,ymm3,4
  3800. vpxor ymm4,ymm4,ymm0
  3801. vpxor ymm8,ymm8,ymm2
  3802. vpxor ymm4,ymm4,ymm8
  3803. vpsrld ymm8,ymm4,31
  3804. vpslldq ymm10,ymm4,12
  3805. vpaddd ymm4,ymm4,ymm4
  3806. vpsrld ymm9,ymm10,30
  3807. vpor ymm4,ymm4,ymm8
  3808. vpslld ymm10,ymm10,2
  3809. vpxor ymm4,ymm4,ymm9
  3810. vpxor ymm4,ymm4,ymm10
  3811. vpaddd ymm9,ymm4,ymm11
  3812. vmovdqu YMMWORD PTR[128+rsp],ymm9
  3813. vpalignr ymm5,ymm2,ymm1,8
  3814. vpsrldq ymm8,ymm4,4
  3815. vpxor ymm5,ymm5,ymm1
  3816. vpxor ymm8,ymm8,ymm3
  3817. vpxor ymm5,ymm5,ymm8
  3818. vpsrld ymm8,ymm5,31
  3819. vmovdqu ymm11,YMMWORD PTR[((-32))+r14]
  3820. vpslldq ymm10,ymm5,12
  3821. vpaddd ymm5,ymm5,ymm5
  3822. vpsrld ymm9,ymm10,30
  3823. vpor ymm5,ymm5,ymm8
  3824. vpslld ymm10,ymm10,2
  3825. vpxor ymm5,ymm5,ymm9
  3826. vpxor ymm5,ymm5,ymm10
  3827. vpaddd ymm9,ymm5,ymm11
  3828. vmovdqu YMMWORD PTR[160+rsp],ymm9
  3829. vpalignr ymm6,ymm3,ymm2,8
  3830. vpsrldq ymm8,ymm5,4
  3831. vpxor ymm6,ymm6,ymm2
  3832. vpxor ymm8,ymm8,ymm4
  3833. vpxor ymm6,ymm6,ymm8
  3834. vpsrld ymm8,ymm6,31
  3835. vpslldq ymm10,ymm6,12
  3836. vpaddd ymm6,ymm6,ymm6
  3837. vpsrld ymm9,ymm10,30
  3838. vpor ymm6,ymm6,ymm8
  3839. vpslld ymm10,ymm10,2
  3840. vpxor ymm6,ymm6,ymm9
  3841. vpxor ymm6,ymm6,ymm10
  3842. vpaddd ymm9,ymm6,ymm11
  3843. vmovdqu YMMWORD PTR[192+rsp],ymm9
  3844. vpalignr ymm7,ymm4,ymm3,8
  3845. vpsrldq ymm8,ymm6,4
  3846. vpxor ymm7,ymm7,ymm3
  3847. vpxor ymm8,ymm8,ymm5
  3848. vpxor ymm7,ymm7,ymm8
  3849. vpsrld ymm8,ymm7,31
  3850. vpslldq ymm10,ymm7,12
  3851. vpaddd ymm7,ymm7,ymm7
  3852. vpsrld ymm9,ymm10,30
  3853. vpor ymm7,ymm7,ymm8
  3854. vpslld ymm10,ymm10,2
  3855. vpxor ymm7,ymm7,ymm9
  3856. vpxor ymm7,ymm7,ymm10
  3857. vpaddd ymm9,ymm7,ymm11
  3858. vmovdqu YMMWORD PTR[224+rsp],ymm9
  3859. lea r13,QWORD PTR[128+rsp]
  3860. jmp $L$oop_avx2
  3861. ALIGN 32
  3862. $L$oop_avx2::
  3863. rorx ebx,ebp,2
  3864. andn edi,ebp,edx
  3865. and ebp,ecx
  3866. xor ebp,edi
  3867. jmp $L$align32_1
  3868. ALIGN 32
  3869. $L$align32_1::
  3870. vpalignr ymm8,ymm7,ymm6,8
  3871. vpxor ymm0,ymm0,ymm4
  3872. add esi,DWORD PTR[((-128))+r13]
  3873. andn edi,eax,ecx
  3874. vpxor ymm0,ymm0,ymm1
  3875. add esi,ebp
  3876. rorx r12d,eax,27
  3877. rorx ebp,eax,2
  3878. vpxor ymm0,ymm0,ymm8
  3879. and eax,ebx
  3880. add esi,r12d
  3881. xor eax,edi
  3882. vpsrld ymm8,ymm0,30
  3883. vpslld ymm0,ymm0,2
  3884. add edx,DWORD PTR[((-124))+r13]
  3885. andn edi,esi,ebx
  3886. add edx,eax
  3887. rorx r12d,esi,27
  3888. rorx eax,esi,2
  3889. and esi,ebp
  3890. vpor ymm0,ymm0,ymm8
  3891. add edx,r12d
  3892. xor esi,edi
  3893. add ecx,DWORD PTR[((-120))+r13]
  3894. andn edi,edx,ebp
  3895. vpaddd ymm9,ymm0,ymm11
  3896. add ecx,esi
  3897. rorx r12d,edx,27
  3898. rorx esi,edx,2
  3899. and edx,eax
  3900. vmovdqu YMMWORD PTR[256+rsp],ymm9
  3901. add ecx,r12d
  3902. xor edx,edi
  3903. add ebx,DWORD PTR[((-116))+r13]
  3904. andn edi,ecx,eax
  3905. add ebx,edx
  3906. rorx r12d,ecx,27
  3907. rorx edx,ecx,2
  3908. and ecx,esi
  3909. add ebx,r12d
  3910. xor ecx,edi
  3911. add ebp,DWORD PTR[((-96))+r13]
  3912. andn edi,ebx,esi
  3913. add ebp,ecx
  3914. rorx r12d,ebx,27
  3915. rorx ecx,ebx,2
  3916. and ebx,edx
  3917. add ebp,r12d
  3918. xor ebx,edi
  3919. vpalignr ymm8,ymm0,ymm7,8
  3920. vpxor ymm1,ymm1,ymm5
  3921. add eax,DWORD PTR[((-92))+r13]
  3922. andn edi,ebp,edx
  3923. vpxor ymm1,ymm1,ymm2
  3924. add eax,ebx
  3925. rorx r12d,ebp,27
  3926. rorx ebx,ebp,2
  3927. vpxor ymm1,ymm1,ymm8
  3928. and ebp,ecx
  3929. add eax,r12d
  3930. xor ebp,edi
  3931. vpsrld ymm8,ymm1,30
  3932. vpslld ymm1,ymm1,2
  3933. add esi,DWORD PTR[((-88))+r13]
  3934. andn edi,eax,ecx
  3935. add esi,ebp
  3936. rorx r12d,eax,27
  3937. rorx ebp,eax,2
  3938. and eax,ebx
  3939. vpor ymm1,ymm1,ymm8
  3940. add esi,r12d
  3941. xor eax,edi
  3942. add edx,DWORD PTR[((-84))+r13]
  3943. andn edi,esi,ebx
  3944. vpaddd ymm9,ymm1,ymm11
  3945. add edx,eax
  3946. rorx r12d,esi,27
  3947. rorx eax,esi,2
  3948. and esi,ebp
  3949. vmovdqu YMMWORD PTR[288+rsp],ymm9
  3950. add edx,r12d
  3951. xor esi,edi
  3952. add ecx,DWORD PTR[((-64))+r13]
  3953. andn edi,edx,ebp
  3954. add ecx,esi
  3955. rorx r12d,edx,27
  3956. rorx esi,edx,2
  3957. and edx,eax
  3958. add ecx,r12d
  3959. xor edx,edi
  3960. add ebx,DWORD PTR[((-60))+r13]
  3961. andn edi,ecx,eax
  3962. add ebx,edx
  3963. rorx r12d,ecx,27
  3964. rorx edx,ecx,2
  3965. and ecx,esi
  3966. add ebx,r12d
  3967. xor ecx,edi
  3968. vpalignr ymm8,ymm1,ymm0,8
  3969. vpxor ymm2,ymm2,ymm6
  3970. add ebp,DWORD PTR[((-56))+r13]
  3971. andn edi,ebx,esi
  3972. vpxor ymm2,ymm2,ymm3
  3973. vmovdqu ymm11,YMMWORD PTR[r14]
  3974. add ebp,ecx
  3975. rorx r12d,ebx,27
  3976. rorx ecx,ebx,2
  3977. vpxor ymm2,ymm2,ymm8
  3978. and ebx,edx
  3979. add ebp,r12d
  3980. xor ebx,edi
  3981. vpsrld ymm8,ymm2,30
  3982. vpslld ymm2,ymm2,2
  3983. add eax,DWORD PTR[((-52))+r13]
  3984. andn edi,ebp,edx
  3985. add eax,ebx
  3986. rorx r12d,ebp,27
  3987. rorx ebx,ebp,2
  3988. and ebp,ecx
  3989. vpor ymm2,ymm2,ymm8
  3990. add eax,r12d
  3991. xor ebp,edi
  3992. add esi,DWORD PTR[((-32))+r13]
  3993. andn edi,eax,ecx
  3994. vpaddd ymm9,ymm2,ymm11
  3995. add esi,ebp
  3996. rorx r12d,eax,27
  3997. rorx ebp,eax,2
  3998. and eax,ebx
  3999. vmovdqu YMMWORD PTR[320+rsp],ymm9
  4000. add esi,r12d
  4001. xor eax,edi
  4002. add edx,DWORD PTR[((-28))+r13]
  4003. andn edi,esi,ebx
  4004. add edx,eax
  4005. rorx r12d,esi,27
  4006. rorx eax,esi,2
  4007. and esi,ebp
  4008. add edx,r12d
  4009. xor esi,edi
  4010. add ecx,DWORD PTR[((-24))+r13]
  4011. andn edi,edx,ebp
  4012. add ecx,esi
  4013. rorx r12d,edx,27
  4014. rorx esi,edx,2
  4015. and edx,eax
  4016. add ecx,r12d
  4017. xor edx,edi
  4018. vpalignr ymm8,ymm2,ymm1,8
  4019. vpxor ymm3,ymm3,ymm7
  4020. add ebx,DWORD PTR[((-20))+r13]
  4021. andn edi,ecx,eax
  4022. vpxor ymm3,ymm3,ymm4
  4023. add ebx,edx
  4024. rorx r12d,ecx,27
  4025. rorx edx,ecx,2
  4026. vpxor ymm3,ymm3,ymm8
  4027. and ecx,esi
  4028. add ebx,r12d
  4029. xor ecx,edi
  4030. vpsrld ymm8,ymm3,30
  4031. vpslld ymm3,ymm3,2
  4032. add ebp,DWORD PTR[r13]
  4033. andn edi,ebx,esi
  4034. add ebp,ecx
  4035. rorx r12d,ebx,27
  4036. rorx ecx,ebx,2
  4037. and ebx,edx
  4038. vpor ymm3,ymm3,ymm8
  4039. add ebp,r12d
  4040. xor ebx,edi
  4041. add eax,DWORD PTR[4+r13]
  4042. andn edi,ebp,edx
  4043. vpaddd ymm9,ymm3,ymm11
  4044. add eax,ebx
  4045. rorx r12d,ebp,27
  4046. rorx ebx,ebp,2
  4047. and ebp,ecx
  4048. vmovdqu YMMWORD PTR[352+rsp],ymm9
  4049. add eax,r12d
  4050. xor ebp,edi
  4051. add esi,DWORD PTR[8+r13]
  4052. andn edi,eax,ecx
  4053. add esi,ebp
  4054. rorx r12d,eax,27
  4055. rorx ebp,eax,2
  4056. and eax,ebx
  4057. add esi,r12d
  4058. xor eax,edi
  4059. add edx,DWORD PTR[12+r13]
  4060. lea edx,DWORD PTR[rax*1+rdx]
  4061. rorx r12d,esi,27
  4062. rorx eax,esi,2
  4063. xor esi,ebp
  4064. add edx,r12d
  4065. xor esi,ebx
  4066. vpalignr ymm8,ymm3,ymm2,8
  4067. vpxor ymm4,ymm4,ymm0
  4068. add ecx,DWORD PTR[32+r13]
  4069. lea ecx,DWORD PTR[rsi*1+rcx]
  4070. vpxor ymm4,ymm4,ymm5
  4071. rorx r12d,edx,27
  4072. rorx esi,edx,2
  4073. xor edx,eax
  4074. vpxor ymm4,ymm4,ymm8
  4075. add ecx,r12d
  4076. xor edx,ebp
  4077. add ebx,DWORD PTR[36+r13]
  4078. vpsrld ymm8,ymm4,30
  4079. vpslld ymm4,ymm4,2
  4080. lea ebx,DWORD PTR[rdx*1+rbx]
  4081. rorx r12d,ecx,27
  4082. rorx edx,ecx,2
  4083. xor ecx,esi
  4084. add ebx,r12d
  4085. xor ecx,eax
  4086. vpor ymm4,ymm4,ymm8
  4087. add ebp,DWORD PTR[40+r13]
  4088. lea ebp,DWORD PTR[rbp*1+rcx]
  4089. rorx r12d,ebx,27
  4090. rorx ecx,ebx,2
  4091. vpaddd ymm9,ymm4,ymm11
  4092. xor ebx,edx
  4093. add ebp,r12d
  4094. xor ebx,esi
  4095. add eax,DWORD PTR[44+r13]
  4096. vmovdqu YMMWORD PTR[384+rsp],ymm9
  4097. lea eax,DWORD PTR[rbx*1+rax]
  4098. rorx r12d,ebp,27
  4099. rorx ebx,ebp,2
  4100. xor ebp,ecx
  4101. add eax,r12d
  4102. xor ebp,edx
  4103. add esi,DWORD PTR[64+r13]
  4104. lea esi,DWORD PTR[rbp*1+rsi]
  4105. rorx r12d,eax,27
  4106. rorx ebp,eax,2
  4107. xor eax,ebx
  4108. add esi,r12d
  4109. xor eax,ecx
  4110. vpalignr ymm8,ymm4,ymm3,8
  4111. vpxor ymm5,ymm5,ymm1
  4112. add edx,DWORD PTR[68+r13]
  4113. lea edx,DWORD PTR[rax*1+rdx]
  4114. vpxor ymm5,ymm5,ymm6
  4115. rorx r12d,esi,27
  4116. rorx eax,esi,2
  4117. xor esi,ebp
  4118. vpxor ymm5,ymm5,ymm8
  4119. add edx,r12d
  4120. xor esi,ebx
  4121. add ecx,DWORD PTR[72+r13]
  4122. vpsrld ymm8,ymm5,30
  4123. vpslld ymm5,ymm5,2
  4124. lea ecx,DWORD PTR[rsi*1+rcx]
  4125. rorx r12d,edx,27
  4126. rorx esi,edx,2
  4127. xor edx,eax
  4128. add ecx,r12d
  4129. xor edx,ebp
  4130. vpor ymm5,ymm5,ymm8
  4131. add ebx,DWORD PTR[76+r13]
  4132. lea ebx,DWORD PTR[rdx*1+rbx]
  4133. rorx r12d,ecx,27
  4134. rorx edx,ecx,2
  4135. vpaddd ymm9,ymm5,ymm11
  4136. xor ecx,esi
  4137. add ebx,r12d
  4138. xor ecx,eax
  4139. add ebp,DWORD PTR[96+r13]
  4140. vmovdqu YMMWORD PTR[416+rsp],ymm9
  4141. lea ebp,DWORD PTR[rbp*1+rcx]
  4142. rorx r12d,ebx,27
  4143. rorx ecx,ebx,2
  4144. xor ebx,edx
  4145. add ebp,r12d
  4146. xor ebx,esi
  4147. add eax,DWORD PTR[100+r13]
  4148. lea eax,DWORD PTR[rbx*1+rax]
  4149. rorx r12d,ebp,27
  4150. rorx ebx,ebp,2
  4151. xor ebp,ecx
  4152. add eax,r12d
  4153. xor ebp,edx
  4154. vpalignr ymm8,ymm5,ymm4,8
  4155. vpxor ymm6,ymm6,ymm2
  4156. add esi,DWORD PTR[104+r13]
  4157. lea esi,DWORD PTR[rbp*1+rsi]
  4158. vpxor ymm6,ymm6,ymm7
  4159. rorx r12d,eax,27
  4160. rorx ebp,eax,2
  4161. xor eax,ebx
  4162. vpxor ymm6,ymm6,ymm8
  4163. add esi,r12d
  4164. xor eax,ecx
  4165. add edx,DWORD PTR[108+r13]
  4166. lea r13,QWORD PTR[256+r13]
  4167. vpsrld ymm8,ymm6,30
  4168. vpslld ymm6,ymm6,2
  4169. lea edx,DWORD PTR[rax*1+rdx]
  4170. rorx r12d,esi,27
  4171. rorx eax,esi,2
  4172. xor esi,ebp
  4173. add edx,r12d
  4174. xor esi,ebx
  4175. vpor ymm6,ymm6,ymm8
  4176. add ecx,DWORD PTR[((-128))+r13]
  4177. lea ecx,DWORD PTR[rsi*1+rcx]
  4178. rorx r12d,edx,27
  4179. rorx esi,edx,2
  4180. vpaddd ymm9,ymm6,ymm11
  4181. xor edx,eax
  4182. add ecx,r12d
  4183. xor edx,ebp
  4184. add ebx,DWORD PTR[((-124))+r13]
  4185. vmovdqu YMMWORD PTR[448+rsp],ymm9
  4186. lea ebx,DWORD PTR[rdx*1+rbx]
  4187. rorx r12d,ecx,27
  4188. rorx edx,ecx,2
  4189. xor ecx,esi
  4190. add ebx,r12d
  4191. xor ecx,eax
  4192. add ebp,DWORD PTR[((-120))+r13]
  4193. lea ebp,DWORD PTR[rbp*1+rcx]
  4194. rorx r12d,ebx,27
  4195. rorx ecx,ebx,2
  4196. xor ebx,edx
  4197. add ebp,r12d
  4198. xor ebx,esi
  4199. vpalignr ymm8,ymm6,ymm5,8
  4200. vpxor ymm7,ymm7,ymm3
  4201. add eax,DWORD PTR[((-116))+r13]
  4202. lea eax,DWORD PTR[rbx*1+rax]
  4203. vpxor ymm7,ymm7,ymm0
  4204. vmovdqu ymm11,YMMWORD PTR[32+r14]
  4205. rorx r12d,ebp,27
  4206. rorx ebx,ebp,2
  4207. xor ebp,ecx
  4208. vpxor ymm7,ymm7,ymm8
  4209. add eax,r12d
  4210. xor ebp,edx
  4211. add esi,DWORD PTR[((-96))+r13]
  4212. vpsrld ymm8,ymm7,30
  4213. vpslld ymm7,ymm7,2
  4214. lea esi,DWORD PTR[rbp*1+rsi]
  4215. rorx r12d,eax,27
  4216. rorx ebp,eax,2
  4217. xor eax,ebx
  4218. add esi,r12d
  4219. xor eax,ecx
  4220. vpor ymm7,ymm7,ymm8
  4221. add edx,DWORD PTR[((-92))+r13]
  4222. lea edx,DWORD PTR[rax*1+rdx]
  4223. rorx r12d,esi,27
  4224. rorx eax,esi,2
  4225. vpaddd ymm9,ymm7,ymm11
  4226. xor esi,ebp
  4227. add edx,r12d
  4228. xor esi,ebx
  4229. add ecx,DWORD PTR[((-88))+r13]
  4230. vmovdqu YMMWORD PTR[480+rsp],ymm9
  4231. lea ecx,DWORD PTR[rsi*1+rcx]
  4232. rorx r12d,edx,27
  4233. rorx esi,edx,2
  4234. xor edx,eax
  4235. add ecx,r12d
  4236. xor edx,ebp
  4237. add ebx,DWORD PTR[((-84))+r13]
  4238. mov edi,esi
  4239. xor edi,eax
  4240. lea ebx,DWORD PTR[rdx*1+rbx]
  4241. rorx r12d,ecx,27
  4242. rorx edx,ecx,2
  4243. xor ecx,esi
  4244. add ebx,r12d
  4245. and ecx,edi
  4246. jmp $L$align32_2
  4247. ALIGN 32
  4248. $L$align32_2::
  4249. vpalignr ymm8,ymm7,ymm6,8
  4250. vpxor ymm0,ymm0,ymm4
  4251. add ebp,DWORD PTR[((-64))+r13]
  4252. xor ecx,esi
  4253. vpxor ymm0,ymm0,ymm1
  4254. mov edi,edx
  4255. xor edi,esi
  4256. lea ebp,DWORD PTR[rbp*1+rcx]
  4257. vpxor ymm0,ymm0,ymm8
  4258. rorx r12d,ebx,27
  4259. rorx ecx,ebx,2
  4260. xor ebx,edx
  4261. vpsrld ymm8,ymm0,30
  4262. vpslld ymm0,ymm0,2
  4263. add ebp,r12d
  4264. and ebx,edi
  4265. add eax,DWORD PTR[((-60))+r13]
  4266. xor ebx,edx
  4267. mov edi,ecx
  4268. xor edi,edx
  4269. vpor ymm0,ymm0,ymm8
  4270. lea eax,DWORD PTR[rbx*1+rax]
  4271. rorx r12d,ebp,27
  4272. rorx ebx,ebp,2
  4273. xor ebp,ecx
  4274. vpaddd ymm9,ymm0,ymm11
  4275. add eax,r12d
  4276. and ebp,edi
  4277. add esi,DWORD PTR[((-56))+r13]
  4278. xor ebp,ecx
  4279. vmovdqu YMMWORD PTR[512+rsp],ymm9
  4280. mov edi,ebx
  4281. xor edi,ecx
  4282. lea esi,DWORD PTR[rbp*1+rsi]
  4283. rorx r12d,eax,27
  4284. rorx ebp,eax,2
  4285. xor eax,ebx
  4286. add esi,r12d
  4287. and eax,edi
  4288. add edx,DWORD PTR[((-52))+r13]
  4289. xor eax,ebx
  4290. mov edi,ebp
  4291. xor edi,ebx
  4292. lea edx,DWORD PTR[rax*1+rdx]
  4293. rorx r12d,esi,27
  4294. rorx eax,esi,2
  4295. xor esi,ebp
  4296. add edx,r12d
  4297. and esi,edi
  4298. add ecx,DWORD PTR[((-32))+r13]
  4299. xor esi,ebp
  4300. mov edi,eax
  4301. xor edi,ebp
  4302. lea ecx,DWORD PTR[rsi*1+rcx]
  4303. rorx r12d,edx,27
  4304. rorx esi,edx,2
  4305. xor edx,eax
  4306. add ecx,r12d
  4307. and edx,edi
  4308. vpalignr ymm8,ymm0,ymm7,8
  4309. vpxor ymm1,ymm1,ymm5
  4310. add ebx,DWORD PTR[((-28))+r13]
  4311. xor edx,eax
  4312. vpxor ymm1,ymm1,ymm2
  4313. mov edi,esi
  4314. xor edi,eax
  4315. lea ebx,DWORD PTR[rdx*1+rbx]
  4316. vpxor ymm1,ymm1,ymm8
  4317. rorx r12d,ecx,27
  4318. rorx edx,ecx,2
  4319. xor ecx,esi
  4320. vpsrld ymm8,ymm1,30
  4321. vpslld ymm1,ymm1,2
  4322. add ebx,r12d
  4323. and ecx,edi
  4324. add ebp,DWORD PTR[((-24))+r13]
  4325. xor ecx,esi
  4326. mov edi,edx
  4327. xor edi,esi
  4328. vpor ymm1,ymm1,ymm8
  4329. lea ebp,DWORD PTR[rbp*1+rcx]
  4330. rorx r12d,ebx,27
  4331. rorx ecx,ebx,2
  4332. xor ebx,edx
  4333. vpaddd ymm9,ymm1,ymm11
  4334. add ebp,r12d
  4335. and ebx,edi
  4336. add eax,DWORD PTR[((-20))+r13]
  4337. xor ebx,edx
  4338. vmovdqu YMMWORD PTR[544+rsp],ymm9
  4339. mov edi,ecx
  4340. xor edi,edx
  4341. lea eax,DWORD PTR[rbx*1+rax]
  4342. rorx r12d,ebp,27
  4343. rorx ebx,ebp,2
  4344. xor ebp,ecx
  4345. add eax,r12d
  4346. and ebp,edi
  4347. add esi,DWORD PTR[r13]
  4348. xor ebp,ecx
  4349. mov edi,ebx
  4350. xor edi,ecx
  4351. lea esi,DWORD PTR[rbp*1+rsi]
  4352. rorx r12d,eax,27
  4353. rorx ebp,eax,2
  4354. xor eax,ebx
  4355. add esi,r12d
  4356. and eax,edi
  4357. add edx,DWORD PTR[4+r13]
  4358. xor eax,ebx
  4359. mov edi,ebp
  4360. xor edi,ebx
  4361. lea edx,DWORD PTR[rax*1+rdx]
  4362. rorx r12d,esi,27
  4363. rorx eax,esi,2
  4364. xor esi,ebp
  4365. add edx,r12d
  4366. and esi,edi
  4367. vpalignr ymm8,ymm1,ymm0,8
  4368. vpxor ymm2,ymm2,ymm6
  4369. add ecx,DWORD PTR[8+r13]
  4370. xor esi,ebp
  4371. vpxor ymm2,ymm2,ymm3
  4372. mov edi,eax
  4373. xor edi,ebp
  4374. lea ecx,DWORD PTR[rsi*1+rcx]
  4375. vpxor ymm2,ymm2,ymm8
  4376. rorx r12d,edx,27
  4377. rorx esi,edx,2
  4378. xor edx,eax
  4379. vpsrld ymm8,ymm2,30
  4380. vpslld ymm2,ymm2,2
  4381. add ecx,r12d
  4382. and edx,edi
  4383. add ebx,DWORD PTR[12+r13]
  4384. xor edx,eax
  4385. mov edi,esi
  4386. xor edi,eax
  4387. vpor ymm2,ymm2,ymm8
  4388. lea ebx,DWORD PTR[rdx*1+rbx]
  4389. rorx r12d,ecx,27
  4390. rorx edx,ecx,2
  4391. xor ecx,esi
  4392. vpaddd ymm9,ymm2,ymm11
  4393. add ebx,r12d
  4394. and ecx,edi
  4395. add ebp,DWORD PTR[32+r13]
  4396. xor ecx,esi
  4397. vmovdqu YMMWORD PTR[576+rsp],ymm9
  4398. mov edi,edx
  4399. xor edi,esi
  4400. lea ebp,DWORD PTR[rbp*1+rcx]
  4401. rorx r12d,ebx,27
  4402. rorx ecx,ebx,2
  4403. xor ebx,edx
  4404. add ebp,r12d
  4405. and ebx,edi
  4406. add eax,DWORD PTR[36+r13]
  4407. xor ebx,edx
  4408. mov edi,ecx
  4409. xor edi,edx
  4410. lea eax,DWORD PTR[rbx*1+rax]
  4411. rorx r12d,ebp,27
  4412. rorx ebx,ebp,2
  4413. xor ebp,ecx
  4414. add eax,r12d
  4415. and ebp,edi
  4416. add esi,DWORD PTR[40+r13]
  4417. xor ebp,ecx
  4418. mov edi,ebx
  4419. xor edi,ecx
  4420. lea esi,DWORD PTR[rbp*1+rsi]
  4421. rorx r12d,eax,27
  4422. rorx ebp,eax,2
  4423. xor eax,ebx
  4424. add esi,r12d
  4425. and eax,edi
  4426. vpalignr ymm8,ymm2,ymm1,8
  4427. vpxor ymm3,ymm3,ymm7
  4428. add edx,DWORD PTR[44+r13]
  4429. xor eax,ebx
  4430. vpxor ymm3,ymm3,ymm4
  4431. mov edi,ebp
  4432. xor edi,ebx
  4433. lea edx,DWORD PTR[rax*1+rdx]
  4434. vpxor ymm3,ymm3,ymm8
  4435. rorx r12d,esi,27
  4436. rorx eax,esi,2
  4437. xor esi,ebp
  4438. vpsrld ymm8,ymm3,30
  4439. vpslld ymm3,ymm3,2
  4440. add edx,r12d
  4441. and esi,edi
  4442. add ecx,DWORD PTR[64+r13]
  4443. xor esi,ebp
  4444. mov edi,eax
  4445. xor edi,ebp
  4446. vpor ymm3,ymm3,ymm8
  4447. lea ecx,DWORD PTR[rsi*1+rcx]
  4448. rorx r12d,edx,27
  4449. rorx esi,edx,2
  4450. xor edx,eax
  4451. vpaddd ymm9,ymm3,ymm11
  4452. add ecx,r12d
  4453. and edx,edi
  4454. add ebx,DWORD PTR[68+r13]
  4455. xor edx,eax
  4456. vmovdqu YMMWORD PTR[608+rsp],ymm9
  4457. mov edi,esi
  4458. xor edi,eax
  4459. lea ebx,DWORD PTR[rdx*1+rbx]
  4460. rorx r12d,ecx,27
  4461. rorx edx,ecx,2
  4462. xor ecx,esi
  4463. add ebx,r12d
  4464. and ecx,edi
  4465. add ebp,DWORD PTR[72+r13]
  4466. xor ecx,esi
  4467. mov edi,edx
  4468. xor edi,esi
  4469. lea ebp,DWORD PTR[rbp*1+rcx]
  4470. rorx r12d,ebx,27
  4471. rorx ecx,ebx,2
  4472. xor ebx,edx
  4473. add ebp,r12d
  4474. and ebx,edi
  4475. add eax,DWORD PTR[76+r13]
  4476. xor ebx,edx
  4477. lea eax,DWORD PTR[rbx*1+rax]
  4478. rorx r12d,ebp,27
  4479. rorx ebx,ebp,2
  4480. xor ebp,ecx
  4481. add eax,r12d
  4482. xor ebp,edx
  4483. add esi,DWORD PTR[96+r13]
  4484. lea esi,DWORD PTR[rbp*1+rsi]
  4485. rorx r12d,eax,27
  4486. rorx ebp,eax,2
  4487. xor eax,ebx
  4488. add esi,r12d
  4489. xor eax,ecx
  4490. add edx,DWORD PTR[100+r13]
  4491. lea edx,DWORD PTR[rax*1+rdx]
  4492. rorx r12d,esi,27
  4493. rorx eax,esi,2
  4494. xor esi,ebp
  4495. add edx,r12d
  4496. xor esi,ebx
  4497. add ecx,DWORD PTR[104+r13]
  4498. lea ecx,DWORD PTR[rsi*1+rcx]
  4499. rorx r12d,edx,27
  4500. rorx esi,edx,2
  4501. xor edx,eax
  4502. add ecx,r12d
  4503. xor edx,ebp
  4504. add ebx,DWORD PTR[108+r13]
  4505. lea r13,QWORD PTR[256+r13]
  4506. lea ebx,DWORD PTR[rdx*1+rbx]
  4507. rorx r12d,ecx,27
  4508. rorx edx,ecx,2
  4509. xor ecx,esi
  4510. add ebx,r12d
  4511. xor ecx,eax
  4512. add ebp,DWORD PTR[((-128))+r13]
  4513. lea ebp,DWORD PTR[rbp*1+rcx]
  4514. rorx r12d,ebx,27
  4515. rorx ecx,ebx,2
  4516. xor ebx,edx
  4517. add ebp,r12d
  4518. xor ebx,esi
  4519. add eax,DWORD PTR[((-124))+r13]
  4520. lea eax,DWORD PTR[rbx*1+rax]
  4521. rorx r12d,ebp,27
  4522. rorx ebx,ebp,2
  4523. xor ebp,ecx
  4524. add eax,r12d
  4525. xor ebp,edx
  4526. add esi,DWORD PTR[((-120))+r13]
  4527. lea esi,DWORD PTR[rbp*1+rsi]
  4528. rorx r12d,eax,27
  4529. rorx ebp,eax,2
  4530. xor eax,ebx
  4531. add esi,r12d
  4532. xor eax,ecx
  4533. add edx,DWORD PTR[((-116))+r13]
  4534. lea edx,DWORD PTR[rax*1+rdx]
  4535. rorx r12d,esi,27
  4536. rorx eax,esi,2
  4537. xor esi,ebp
  4538. add edx,r12d
  4539. xor esi,ebx
  4540. add ecx,DWORD PTR[((-96))+r13]
  4541. lea ecx,DWORD PTR[rsi*1+rcx]
  4542. rorx r12d,edx,27
  4543. rorx esi,edx,2
  4544. xor edx,eax
  4545. add ecx,r12d
  4546. xor edx,ebp
  4547. add ebx,DWORD PTR[((-92))+r13]
  4548. lea ebx,DWORD PTR[rdx*1+rbx]
  4549. rorx r12d,ecx,27
  4550. rorx edx,ecx,2
  4551. xor ecx,esi
  4552. add ebx,r12d
  4553. xor ecx,eax
  4554. add ebp,DWORD PTR[((-88))+r13]
  4555. lea ebp,DWORD PTR[rbp*1+rcx]
  4556. rorx r12d,ebx,27
  4557. rorx ecx,ebx,2
  4558. xor ebx,edx
  4559. add ebp,r12d
  4560. xor ebx,esi
  4561. add eax,DWORD PTR[((-84))+r13]
  4562. lea eax,DWORD PTR[rbx*1+rax]
  4563. rorx r12d,ebp,27
  4564. rorx ebx,ebp,2
  4565. xor ebp,ecx
  4566. add eax,r12d
  4567. xor ebp,edx
  4568. add esi,DWORD PTR[((-64))+r13]
  4569. lea esi,DWORD PTR[rbp*1+rsi]
  4570. rorx r12d,eax,27
  4571. rorx ebp,eax,2
  4572. xor eax,ebx
  4573. add esi,r12d
  4574. xor eax,ecx
  4575. add edx,DWORD PTR[((-60))+r13]
  4576. lea edx,DWORD PTR[rax*1+rdx]
  4577. rorx r12d,esi,27
  4578. rorx eax,esi,2
  4579. xor esi,ebp
  4580. add edx,r12d
  4581. xor esi,ebx
  4582. add ecx,DWORD PTR[((-56))+r13]
  4583. lea ecx,DWORD PTR[rsi*1+rcx]
  4584. rorx r12d,edx,27
  4585. rorx esi,edx,2
  4586. xor edx,eax
  4587. add ecx,r12d
  4588. xor edx,ebp
  4589. add ebx,DWORD PTR[((-52))+r13]
  4590. lea ebx,DWORD PTR[rdx*1+rbx]
  4591. rorx r12d,ecx,27
  4592. rorx edx,ecx,2
  4593. xor ecx,esi
  4594. add ebx,r12d
  4595. xor ecx,eax
  4596. add ebp,DWORD PTR[((-32))+r13]
  4597. lea ebp,DWORD PTR[rbp*1+rcx]
  4598. rorx r12d,ebx,27
  4599. rorx ecx,ebx,2
  4600. xor ebx,edx
  4601. add ebp,r12d
  4602. xor ebx,esi
  4603. add eax,DWORD PTR[((-28))+r13]
  4604. lea eax,DWORD PTR[rbx*1+rax]
  4605. rorx r12d,ebp,27
  4606. rorx ebx,ebp,2
  4607. xor ebp,ecx
  4608. add eax,r12d
  4609. xor ebp,edx
  4610. add esi,DWORD PTR[((-24))+r13]
  4611. lea esi,DWORD PTR[rbp*1+rsi]
  4612. rorx r12d,eax,27
  4613. rorx ebp,eax,2
  4614. xor eax,ebx
  4615. add esi,r12d
  4616. xor eax,ecx
  4617. add edx,DWORD PTR[((-20))+r13]
  4618. lea edx,DWORD PTR[rax*1+rdx]
  4619. rorx r12d,esi,27
  4620. add edx,r12d
  4621. lea r13,QWORD PTR[128+r9]
  4622. lea rdi,QWORD PTR[128+r9]
  4623. cmp r13,r10
  4624. cmovae r13,r9
  4625. add edx,DWORD PTR[r8]
  4626. add esi,DWORD PTR[4+r8]
  4627. add ebp,DWORD PTR[8+r8]
  4628. mov DWORD PTR[r8],edx
  4629. add ebx,DWORD PTR[12+r8]
  4630. mov DWORD PTR[4+r8],esi
  4631. mov eax,edx
  4632. add ecx,DWORD PTR[16+r8]
  4633. mov r12d,ebp
  4634. mov DWORD PTR[8+r8],ebp
  4635. mov edx,ebx
  4636. mov DWORD PTR[12+r8],ebx
  4637. mov ebp,esi
  4638. mov DWORD PTR[16+r8],ecx
  4639. mov esi,ecx
  4640. mov ecx,r12d
  4641. cmp r9,r10
  4642. je $L$done_avx2
  4643. vmovdqu ymm6,YMMWORD PTR[64+r14]
  4644. cmp rdi,r10
  4645. ja $L$ast_avx2
  4646. vmovdqu xmm0,XMMWORD PTR[((-64))+rdi]
  4647. vmovdqu xmm1,XMMWORD PTR[((-48))+rdi]
  4648. vmovdqu xmm2,XMMWORD PTR[((-32))+rdi]
  4649. vmovdqu xmm3,XMMWORD PTR[((-16))+rdi]
  4650. vinserti128 ymm0,ymm0,XMMWORD PTR[r13],1
  4651. vinserti128 ymm1,ymm1,XMMWORD PTR[16+r13],1
  4652. vinserti128 ymm2,ymm2,XMMWORD PTR[32+r13],1
  4653. vinserti128 ymm3,ymm3,XMMWORD PTR[48+r13],1
  4654. jmp $L$ast_avx2
  4655. ALIGN 32
  4656. $L$ast_avx2::
  4657. lea r13,QWORD PTR[((128+16))+rsp]
  4658. rorx ebx,ebp,2
  4659. andn edi,ebp,edx
  4660. and ebp,ecx
  4661. xor ebp,edi
  4662. sub r9,-128
  4663. add esi,DWORD PTR[((-128))+r13]
  4664. andn edi,eax,ecx
  4665. add esi,ebp
  4666. rorx r12d,eax,27
  4667. rorx ebp,eax,2
  4668. and eax,ebx
  4669. add esi,r12d
  4670. xor eax,edi
  4671. add edx,DWORD PTR[((-124))+r13]
  4672. andn edi,esi,ebx
  4673. add edx,eax
  4674. rorx r12d,esi,27
  4675. rorx eax,esi,2
  4676. and esi,ebp
  4677. add edx,r12d
  4678. xor esi,edi
  4679. add ecx,DWORD PTR[((-120))+r13]
  4680. andn edi,edx,ebp
  4681. add ecx,esi
  4682. rorx r12d,edx,27
  4683. rorx esi,edx,2
  4684. and edx,eax
  4685. add ecx,r12d
  4686. xor edx,edi
  4687. add ebx,DWORD PTR[((-116))+r13]
  4688. andn edi,ecx,eax
  4689. add ebx,edx
  4690. rorx r12d,ecx,27
  4691. rorx edx,ecx,2
  4692. and ecx,esi
  4693. add ebx,r12d
  4694. xor ecx,edi
  4695. add ebp,DWORD PTR[((-96))+r13]
  4696. andn edi,ebx,esi
  4697. add ebp,ecx
  4698. rorx r12d,ebx,27
  4699. rorx ecx,ebx,2
  4700. and ebx,edx
  4701. add ebp,r12d
  4702. xor ebx,edi
  4703. add eax,DWORD PTR[((-92))+r13]
  4704. andn edi,ebp,edx
  4705. add eax,ebx
  4706. rorx r12d,ebp,27
  4707. rorx ebx,ebp,2
  4708. and ebp,ecx
  4709. add eax,r12d
  4710. xor ebp,edi
  4711. add esi,DWORD PTR[((-88))+r13]
  4712. andn edi,eax,ecx
  4713. add esi,ebp
  4714. rorx r12d,eax,27
  4715. rorx ebp,eax,2
  4716. and eax,ebx
  4717. add esi,r12d
  4718. xor eax,edi
  4719. add edx,DWORD PTR[((-84))+r13]
  4720. andn edi,esi,ebx
  4721. add edx,eax
  4722. rorx r12d,esi,27
  4723. rorx eax,esi,2
  4724. and esi,ebp
  4725. add edx,r12d
  4726. xor esi,edi
  4727. add ecx,DWORD PTR[((-64))+r13]
  4728. andn edi,edx,ebp
  4729. add ecx,esi
  4730. rorx r12d,edx,27
  4731. rorx esi,edx,2
  4732. and edx,eax
  4733. add ecx,r12d
  4734. xor edx,edi
  4735. add ebx,DWORD PTR[((-60))+r13]
  4736. andn edi,ecx,eax
  4737. add ebx,edx
  4738. rorx r12d,ecx,27
  4739. rorx edx,ecx,2
  4740. and ecx,esi
  4741. add ebx,r12d
  4742. xor ecx,edi
  4743. add ebp,DWORD PTR[((-56))+r13]
  4744. andn edi,ebx,esi
  4745. add ebp,ecx
  4746. rorx r12d,ebx,27
  4747. rorx ecx,ebx,2
  4748. and ebx,edx
  4749. add ebp,r12d
  4750. xor ebx,edi
  4751. add eax,DWORD PTR[((-52))+r13]
  4752. andn edi,ebp,edx
  4753. add eax,ebx
  4754. rorx r12d,ebp,27
  4755. rorx ebx,ebp,2
  4756. and ebp,ecx
  4757. add eax,r12d
  4758. xor ebp,edi
  4759. add esi,DWORD PTR[((-32))+r13]
  4760. andn edi,eax,ecx
  4761. add esi,ebp
  4762. rorx r12d,eax,27
  4763. rorx ebp,eax,2
  4764. and eax,ebx
  4765. add esi,r12d
  4766. xor eax,edi
  4767. add edx,DWORD PTR[((-28))+r13]
  4768. andn edi,esi,ebx
  4769. add edx,eax
  4770. rorx r12d,esi,27
  4771. rorx eax,esi,2
  4772. and esi,ebp
  4773. add edx,r12d
  4774. xor esi,edi
  4775. add ecx,DWORD PTR[((-24))+r13]
  4776. andn edi,edx,ebp
  4777. add ecx,esi
  4778. rorx r12d,edx,27
  4779. rorx esi,edx,2
  4780. and edx,eax
  4781. add ecx,r12d
  4782. xor edx,edi
  4783. add ebx,DWORD PTR[((-20))+r13]
  4784. andn edi,ecx,eax
  4785. add ebx,edx
  4786. rorx r12d,ecx,27
  4787. rorx edx,ecx,2
  4788. and ecx,esi
  4789. add ebx,r12d
  4790. xor ecx,edi
  4791. add ebp,DWORD PTR[r13]
  4792. andn edi,ebx,esi
  4793. add ebp,ecx
  4794. rorx r12d,ebx,27
  4795. rorx ecx,ebx,2
  4796. and ebx,edx
  4797. add ebp,r12d
  4798. xor ebx,edi
  4799. add eax,DWORD PTR[4+r13]
  4800. andn edi,ebp,edx
  4801. add eax,ebx
  4802. rorx r12d,ebp,27
  4803. rorx ebx,ebp,2
  4804. and ebp,ecx
  4805. add eax,r12d
  4806. xor ebp,edi
  4807. add esi,DWORD PTR[8+r13]
  4808. andn edi,eax,ecx
  4809. add esi,ebp
  4810. rorx r12d,eax,27
  4811. rorx ebp,eax,2
  4812. and eax,ebx
  4813. add esi,r12d
  4814. xor eax,edi
  4815. add edx,DWORD PTR[12+r13]
  4816. lea edx,DWORD PTR[rax*1+rdx]
  4817. rorx r12d,esi,27
  4818. rorx eax,esi,2
  4819. xor esi,ebp
  4820. add edx,r12d
  4821. xor esi,ebx
  4822. add ecx,DWORD PTR[32+r13]
  4823. lea ecx,DWORD PTR[rsi*1+rcx]
  4824. rorx r12d,edx,27
  4825. rorx esi,edx,2
  4826. xor edx,eax
  4827. add ecx,r12d
  4828. xor edx,ebp
  4829. add ebx,DWORD PTR[36+r13]
  4830. lea ebx,DWORD PTR[rdx*1+rbx]
  4831. rorx r12d,ecx,27
  4832. rorx edx,ecx,2
  4833. xor ecx,esi
  4834. add ebx,r12d
  4835. xor ecx,eax
  4836. add ebp,DWORD PTR[40+r13]
  4837. lea ebp,DWORD PTR[rbp*1+rcx]
  4838. rorx r12d,ebx,27
  4839. rorx ecx,ebx,2
  4840. xor ebx,edx
  4841. add ebp,r12d
  4842. xor ebx,esi
  4843. add eax,DWORD PTR[44+r13]
  4844. lea eax,DWORD PTR[rbx*1+rax]
  4845. rorx r12d,ebp,27
  4846. rorx ebx,ebp,2
  4847. xor ebp,ecx
  4848. add eax,r12d
  4849. xor ebp,edx
  4850. add esi,DWORD PTR[64+r13]
  4851. lea esi,DWORD PTR[rbp*1+rsi]
  4852. rorx r12d,eax,27
  4853. rorx ebp,eax,2
  4854. xor eax,ebx
  4855. add esi,r12d
  4856. xor eax,ecx
  4857. vmovdqu ymm11,YMMWORD PTR[((-64))+r14]
  4858. vpshufb ymm0,ymm0,ymm6
  4859. add edx,DWORD PTR[68+r13]
  4860. lea edx,DWORD PTR[rax*1+rdx]
  4861. rorx r12d,esi,27
  4862. rorx eax,esi,2
  4863. xor esi,ebp
  4864. add edx,r12d
  4865. xor esi,ebx
  4866. add ecx,DWORD PTR[72+r13]
  4867. lea ecx,DWORD PTR[rsi*1+rcx]
  4868. rorx r12d,edx,27
  4869. rorx esi,edx,2
  4870. xor edx,eax
  4871. add ecx,r12d
  4872. xor edx,ebp
  4873. add ebx,DWORD PTR[76+r13]
  4874. lea ebx,DWORD PTR[rdx*1+rbx]
  4875. rorx r12d,ecx,27
  4876. rorx edx,ecx,2
  4877. xor ecx,esi
  4878. add ebx,r12d
  4879. xor ecx,eax
  4880. add ebp,DWORD PTR[96+r13]
  4881. lea ebp,DWORD PTR[rbp*1+rcx]
  4882. rorx r12d,ebx,27
  4883. rorx ecx,ebx,2
  4884. xor ebx,edx
  4885. add ebp,r12d
  4886. xor ebx,esi
  4887. add eax,DWORD PTR[100+r13]
  4888. lea eax,DWORD PTR[rbx*1+rax]
  4889. rorx r12d,ebp,27
  4890. rorx ebx,ebp,2
  4891. xor ebp,ecx
  4892. add eax,r12d
  4893. xor ebp,edx
  4894. vpshufb ymm1,ymm1,ymm6
  4895. vpaddd ymm8,ymm0,ymm11
  4896. add esi,DWORD PTR[104+r13]
  4897. lea esi,DWORD PTR[rbp*1+rsi]
  4898. rorx r12d,eax,27
  4899. rorx ebp,eax,2
  4900. xor eax,ebx
  4901. add esi,r12d
  4902. xor eax,ecx
  4903. add edx,DWORD PTR[108+r13]
  4904. lea r13,QWORD PTR[256+r13]
  4905. lea edx,DWORD PTR[rax*1+rdx]
  4906. rorx r12d,esi,27
  4907. rorx eax,esi,2
  4908. xor esi,ebp
  4909. add edx,r12d
  4910. xor esi,ebx
  4911. add ecx,DWORD PTR[((-128))+r13]
  4912. lea ecx,DWORD PTR[rsi*1+rcx]
  4913. rorx r12d,edx,27
  4914. rorx esi,edx,2
  4915. xor edx,eax
  4916. add ecx,r12d
  4917. xor edx,ebp
  4918. add ebx,DWORD PTR[((-124))+r13]
  4919. lea ebx,DWORD PTR[rdx*1+rbx]
  4920. rorx r12d,ecx,27
  4921. rorx edx,ecx,2
  4922. xor ecx,esi
  4923. add ebx,r12d
  4924. xor ecx,eax
  4925. add ebp,DWORD PTR[((-120))+r13]
  4926. lea ebp,DWORD PTR[rbp*1+rcx]
  4927. rorx r12d,ebx,27
  4928. rorx ecx,ebx,2
  4929. xor ebx,edx
  4930. add ebp,r12d
  4931. xor ebx,esi
  4932. vmovdqu YMMWORD PTR[rsp],ymm8
  4933. vpshufb ymm2,ymm2,ymm6
  4934. vpaddd ymm9,ymm1,ymm11
  4935. add eax,DWORD PTR[((-116))+r13]
  4936. lea eax,DWORD PTR[rbx*1+rax]
  4937. rorx r12d,ebp,27
  4938. rorx ebx,ebp,2
  4939. xor ebp,ecx
  4940. add eax,r12d
  4941. xor ebp,edx
  4942. add esi,DWORD PTR[((-96))+r13]
  4943. lea esi,DWORD PTR[rbp*1+rsi]
  4944. rorx r12d,eax,27
  4945. rorx ebp,eax,2
  4946. xor eax,ebx
  4947. add esi,r12d
  4948. xor eax,ecx
  4949. add edx,DWORD PTR[((-92))+r13]
  4950. lea edx,DWORD PTR[rax*1+rdx]
  4951. rorx r12d,esi,27
  4952. rorx eax,esi,2
  4953. xor esi,ebp
  4954. add edx,r12d
  4955. xor esi,ebx
  4956. add ecx,DWORD PTR[((-88))+r13]
  4957. lea ecx,DWORD PTR[rsi*1+rcx]
  4958. rorx r12d,edx,27
  4959. rorx esi,edx,2
  4960. xor edx,eax
  4961. add ecx,r12d
  4962. xor edx,ebp
  4963. add ebx,DWORD PTR[((-84))+r13]
  4964. mov edi,esi
  4965. xor edi,eax
  4966. lea ebx,DWORD PTR[rdx*1+rbx]
  4967. rorx r12d,ecx,27
  4968. rorx edx,ecx,2
  4969. xor ecx,esi
  4970. add ebx,r12d
  4971. and ecx,edi
  4972. vmovdqu YMMWORD PTR[32+rsp],ymm9
  4973. vpshufb ymm3,ymm3,ymm6
  4974. vpaddd ymm6,ymm2,ymm11
  4975. add ebp,DWORD PTR[((-64))+r13]
  4976. xor ecx,esi
  4977. mov edi,edx
  4978. xor edi,esi
  4979. lea ebp,DWORD PTR[rbp*1+rcx]
  4980. rorx r12d,ebx,27
  4981. rorx ecx,ebx,2
  4982. xor ebx,edx
  4983. add ebp,r12d
  4984. and ebx,edi
  4985. add eax,DWORD PTR[((-60))+r13]
  4986. xor ebx,edx
  4987. mov edi,ecx
  4988. xor edi,edx
  4989. lea eax,DWORD PTR[rbx*1+rax]
  4990. rorx r12d,ebp,27
  4991. rorx ebx,ebp,2
  4992. xor ebp,ecx
  4993. add eax,r12d
  4994. and ebp,edi
  4995. add esi,DWORD PTR[((-56))+r13]
  4996. xor ebp,ecx
  4997. mov edi,ebx
  4998. xor edi,ecx
  4999. lea esi,DWORD PTR[rbp*1+rsi]
  5000. rorx r12d,eax,27
  5001. rorx ebp,eax,2
  5002. xor eax,ebx
  5003. add esi,r12d
  5004. and eax,edi
  5005. add edx,DWORD PTR[((-52))+r13]
  5006. xor eax,ebx
  5007. mov edi,ebp
  5008. xor edi,ebx
  5009. lea edx,DWORD PTR[rax*1+rdx]
  5010. rorx r12d,esi,27
  5011. rorx eax,esi,2
  5012. xor esi,ebp
  5013. add edx,r12d
  5014. and esi,edi
  5015. add ecx,DWORD PTR[((-32))+r13]
  5016. xor esi,ebp
  5017. mov edi,eax
  5018. xor edi,ebp
  5019. lea ecx,DWORD PTR[rsi*1+rcx]
  5020. rorx r12d,edx,27
  5021. rorx esi,edx,2
  5022. xor edx,eax
  5023. add ecx,r12d
  5024. and edx,edi
  5025. jmp $L$align32_3
  5026. ALIGN 32
  5027. $L$align32_3::
  5028. vmovdqu YMMWORD PTR[64+rsp],ymm6
  5029. vpaddd ymm7,ymm3,ymm11
  5030. add ebx,DWORD PTR[((-28))+r13]
  5031. xor edx,eax
  5032. mov edi,esi
  5033. xor edi,eax
  5034. lea ebx,DWORD PTR[rdx*1+rbx]
  5035. rorx r12d,ecx,27
  5036. rorx edx,ecx,2
  5037. xor ecx,esi
  5038. add ebx,r12d
  5039. and ecx,edi
  5040. add ebp,DWORD PTR[((-24))+r13]
  5041. xor ecx,esi
  5042. mov edi,edx
  5043. xor edi,esi
  5044. lea ebp,DWORD PTR[rbp*1+rcx]
  5045. rorx r12d,ebx,27
  5046. rorx ecx,ebx,2
  5047. xor ebx,edx
  5048. add ebp,r12d
  5049. and ebx,edi
  5050. add eax,DWORD PTR[((-20))+r13]
  5051. xor ebx,edx
  5052. mov edi,ecx
  5053. xor edi,edx
  5054. lea eax,DWORD PTR[rbx*1+rax]
  5055. rorx r12d,ebp,27
  5056. rorx ebx,ebp,2
  5057. xor ebp,ecx
  5058. add eax,r12d
  5059. and ebp,edi
  5060. add esi,DWORD PTR[r13]
  5061. xor ebp,ecx
  5062. mov edi,ebx
  5063. xor edi,ecx
  5064. lea esi,DWORD PTR[rbp*1+rsi]
  5065. rorx r12d,eax,27
  5066. rorx ebp,eax,2
  5067. xor eax,ebx
  5068. add esi,r12d
  5069. and eax,edi
  5070. add edx,DWORD PTR[4+r13]
  5071. xor eax,ebx
  5072. mov edi,ebp
  5073. xor edi,ebx
  5074. lea edx,DWORD PTR[rax*1+rdx]
  5075. rorx r12d,esi,27
  5076. rorx eax,esi,2
  5077. xor esi,ebp
  5078. add edx,r12d
  5079. and esi,edi
  5080. vmovdqu YMMWORD PTR[96+rsp],ymm7
  5081. add ecx,DWORD PTR[8+r13]
  5082. xor esi,ebp
  5083. mov edi,eax
  5084. xor edi,ebp
  5085. lea ecx,DWORD PTR[rsi*1+rcx]
  5086. rorx r12d,edx,27
  5087. rorx esi,edx,2
  5088. xor edx,eax
  5089. add ecx,r12d
  5090. and edx,edi
  5091. add ebx,DWORD PTR[12+r13]
  5092. xor edx,eax
  5093. mov edi,esi
  5094. xor edi,eax
  5095. lea ebx,DWORD PTR[rdx*1+rbx]
  5096. rorx r12d,ecx,27
  5097. rorx edx,ecx,2
  5098. xor ecx,esi
  5099. add ebx,r12d
  5100. and ecx,edi
  5101. add ebp,DWORD PTR[32+r13]
  5102. xor ecx,esi
  5103. mov edi,edx
  5104. xor edi,esi
  5105. lea ebp,DWORD PTR[rbp*1+rcx]
  5106. rorx r12d,ebx,27
  5107. rorx ecx,ebx,2
  5108. xor ebx,edx
  5109. add ebp,r12d
  5110. and ebx,edi
  5111. add eax,DWORD PTR[36+r13]
  5112. xor ebx,edx
  5113. mov edi,ecx
  5114. xor edi,edx
  5115. lea eax,DWORD PTR[rbx*1+rax]
  5116. rorx r12d,ebp,27
  5117. rorx ebx,ebp,2
  5118. xor ebp,ecx
  5119. add eax,r12d
  5120. and ebp,edi
  5121. add esi,DWORD PTR[40+r13]
  5122. xor ebp,ecx
  5123. mov edi,ebx
  5124. xor edi,ecx
  5125. lea esi,DWORD PTR[rbp*1+rsi]
  5126. rorx r12d,eax,27
  5127. rorx ebp,eax,2
  5128. xor eax,ebx
  5129. add esi,r12d
  5130. and eax,edi
  5131. vpalignr ymm4,ymm1,ymm0,8
  5132. add edx,DWORD PTR[44+r13]
  5133. xor eax,ebx
  5134. mov edi,ebp
  5135. xor edi,ebx
  5136. vpsrldq ymm8,ymm3,4
  5137. lea edx,DWORD PTR[rax*1+rdx]
  5138. rorx r12d,esi,27
  5139. rorx eax,esi,2
  5140. vpxor ymm4,ymm4,ymm0
  5141. vpxor ymm8,ymm8,ymm2
  5142. xor esi,ebp
  5143. add edx,r12d
  5144. vpxor ymm4,ymm4,ymm8
  5145. and esi,edi
  5146. add ecx,DWORD PTR[64+r13]
  5147. xor esi,ebp
  5148. mov edi,eax
  5149. vpsrld ymm8,ymm4,31
  5150. xor edi,ebp
  5151. lea ecx,DWORD PTR[rsi*1+rcx]
  5152. rorx r12d,edx,27
  5153. vpslldq ymm10,ymm4,12
  5154. vpaddd ymm4,ymm4,ymm4
  5155. rorx esi,edx,2
  5156. xor edx,eax
  5157. vpsrld ymm9,ymm10,30
  5158. vpor ymm4,ymm4,ymm8
  5159. add ecx,r12d
  5160. and edx,edi
  5161. vpslld ymm10,ymm10,2
  5162. vpxor ymm4,ymm4,ymm9
  5163. add ebx,DWORD PTR[68+r13]
  5164. xor edx,eax
  5165. vpxor ymm4,ymm4,ymm10
  5166. mov edi,esi
  5167. xor edi,eax
  5168. lea ebx,DWORD PTR[rdx*1+rbx]
  5169. vpaddd ymm9,ymm4,ymm11
  5170. rorx r12d,ecx,27
  5171. rorx edx,ecx,2
  5172. xor ecx,esi
  5173. vmovdqu YMMWORD PTR[128+rsp],ymm9
  5174. add ebx,r12d
  5175. and ecx,edi
  5176. add ebp,DWORD PTR[72+r13]
  5177. xor ecx,esi
  5178. mov edi,edx
  5179. xor edi,esi
  5180. lea ebp,DWORD PTR[rbp*1+rcx]
  5181. rorx r12d,ebx,27
  5182. rorx ecx,ebx,2
  5183. xor ebx,edx
  5184. add ebp,r12d
  5185. and ebx,edi
  5186. add eax,DWORD PTR[76+r13]
  5187. xor ebx,edx
  5188. lea eax,DWORD PTR[rbx*1+rax]
  5189. rorx r12d,ebp,27
  5190. rorx ebx,ebp,2
  5191. xor ebp,ecx
  5192. add eax,r12d
  5193. xor ebp,edx
  5194. vpalignr ymm5,ymm2,ymm1,8
  5195. add esi,DWORD PTR[96+r13]
  5196. lea esi,DWORD PTR[rbp*1+rsi]
  5197. rorx r12d,eax,27
  5198. rorx ebp,eax,2
  5199. vpsrldq ymm8,ymm4,4
  5200. xor eax,ebx
  5201. add esi,r12d
  5202. xor eax,ecx
  5203. vpxor ymm5,ymm5,ymm1
  5204. vpxor ymm8,ymm8,ymm3
  5205. add edx,DWORD PTR[100+r13]
  5206. lea edx,DWORD PTR[rax*1+rdx]
  5207. vpxor ymm5,ymm5,ymm8
  5208. rorx r12d,esi,27
  5209. rorx eax,esi,2
  5210. xor esi,ebp
  5211. add edx,r12d
  5212. vpsrld ymm8,ymm5,31
  5213. vmovdqu ymm11,YMMWORD PTR[((-32))+r14]
  5214. xor esi,ebx
  5215. add ecx,DWORD PTR[104+r13]
  5216. lea ecx,DWORD PTR[rsi*1+rcx]
  5217. vpslldq ymm10,ymm5,12
  5218. vpaddd ymm5,ymm5,ymm5
  5219. rorx r12d,edx,27
  5220. rorx esi,edx,2
  5221. vpsrld ymm9,ymm10,30
  5222. vpor ymm5,ymm5,ymm8
  5223. xor edx,eax
  5224. add ecx,r12d
  5225. vpslld ymm10,ymm10,2
  5226. vpxor ymm5,ymm5,ymm9
  5227. xor edx,ebp
  5228. add ebx,DWORD PTR[108+r13]
  5229. lea r13,QWORD PTR[256+r13]
  5230. vpxor ymm5,ymm5,ymm10
  5231. lea ebx,DWORD PTR[rdx*1+rbx]
  5232. rorx r12d,ecx,27
  5233. rorx edx,ecx,2
  5234. vpaddd ymm9,ymm5,ymm11
  5235. xor ecx,esi
  5236. add ebx,r12d
  5237. xor ecx,eax
  5238. vmovdqu YMMWORD PTR[160+rsp],ymm9
  5239. add ebp,DWORD PTR[((-128))+r13]
  5240. lea ebp,DWORD PTR[rbp*1+rcx]
  5241. rorx r12d,ebx,27
  5242. rorx ecx,ebx,2
  5243. xor ebx,edx
  5244. add ebp,r12d
  5245. xor ebx,esi
  5246. vpalignr ymm6,ymm3,ymm2,8
  5247. add eax,DWORD PTR[((-124))+r13]
  5248. lea eax,DWORD PTR[rbx*1+rax]
  5249. rorx r12d,ebp,27
  5250. rorx ebx,ebp,2
  5251. vpsrldq ymm8,ymm5,4
  5252. xor ebp,ecx
  5253. add eax,r12d
  5254. xor ebp,edx
  5255. vpxor ymm6,ymm6,ymm2
  5256. vpxor ymm8,ymm8,ymm4
  5257. add esi,DWORD PTR[((-120))+r13]
  5258. lea esi,DWORD PTR[rbp*1+rsi]
  5259. vpxor ymm6,ymm6,ymm8
  5260. rorx r12d,eax,27
  5261. rorx ebp,eax,2
  5262. xor eax,ebx
  5263. add esi,r12d
  5264. vpsrld ymm8,ymm6,31
  5265. xor eax,ecx
  5266. add edx,DWORD PTR[((-116))+r13]
  5267. lea edx,DWORD PTR[rax*1+rdx]
  5268. vpslldq ymm10,ymm6,12
  5269. vpaddd ymm6,ymm6,ymm6
  5270. rorx r12d,esi,27
  5271. rorx eax,esi,2
  5272. vpsrld ymm9,ymm10,30
  5273. vpor ymm6,ymm6,ymm8
  5274. xor esi,ebp
  5275. add edx,r12d
  5276. vpslld ymm10,ymm10,2
  5277. vpxor ymm6,ymm6,ymm9
  5278. xor esi,ebx
  5279. add ecx,DWORD PTR[((-96))+r13]
  5280. vpxor ymm6,ymm6,ymm10
  5281. lea ecx,DWORD PTR[rsi*1+rcx]
  5282. rorx r12d,edx,27
  5283. rorx esi,edx,2
  5284. vpaddd ymm9,ymm6,ymm11
  5285. xor edx,eax
  5286. add ecx,r12d
  5287. xor edx,ebp
  5288. vmovdqu YMMWORD PTR[192+rsp],ymm9
  5289. add ebx,DWORD PTR[((-92))+r13]
  5290. lea ebx,DWORD PTR[rdx*1+rbx]
  5291. rorx r12d,ecx,27
  5292. rorx edx,ecx,2
  5293. xor ecx,esi
  5294. add ebx,r12d
  5295. xor ecx,eax
  5296. vpalignr ymm7,ymm4,ymm3,8
  5297. add ebp,DWORD PTR[((-88))+r13]
  5298. lea ebp,DWORD PTR[rbp*1+rcx]
  5299. rorx r12d,ebx,27
  5300. rorx ecx,ebx,2
  5301. vpsrldq ymm8,ymm6,4
  5302. xor ebx,edx
  5303. add ebp,r12d
  5304. xor ebx,esi
  5305. vpxor ymm7,ymm7,ymm3
  5306. vpxor ymm8,ymm8,ymm5
  5307. add eax,DWORD PTR[((-84))+r13]
  5308. lea eax,DWORD PTR[rbx*1+rax]
  5309. vpxor ymm7,ymm7,ymm8
  5310. rorx r12d,ebp,27
  5311. rorx ebx,ebp,2
  5312. xor ebp,ecx
  5313. add eax,r12d
  5314. vpsrld ymm8,ymm7,31
  5315. xor ebp,edx
  5316. add esi,DWORD PTR[((-64))+r13]
  5317. lea esi,DWORD PTR[rbp*1+rsi]
  5318. vpslldq ymm10,ymm7,12
  5319. vpaddd ymm7,ymm7,ymm7
  5320. rorx r12d,eax,27
  5321. rorx ebp,eax,2
  5322. vpsrld ymm9,ymm10,30
  5323. vpor ymm7,ymm7,ymm8
  5324. xor eax,ebx
  5325. add esi,r12d
  5326. vpslld ymm10,ymm10,2
  5327. vpxor ymm7,ymm7,ymm9
  5328. xor eax,ecx
  5329. add edx,DWORD PTR[((-60))+r13]
  5330. vpxor ymm7,ymm7,ymm10
  5331. lea edx,DWORD PTR[rax*1+rdx]
  5332. rorx r12d,esi,27
  5333. rorx eax,esi,2
  5334. vpaddd ymm9,ymm7,ymm11
  5335. xor esi,ebp
  5336. add edx,r12d
  5337. xor esi,ebx
  5338. vmovdqu YMMWORD PTR[224+rsp],ymm9
  5339. add ecx,DWORD PTR[((-56))+r13]
  5340. lea ecx,DWORD PTR[rsi*1+rcx]
  5341. rorx r12d,edx,27
  5342. rorx esi,edx,2
  5343. xor edx,eax
  5344. add ecx,r12d
  5345. xor edx,ebp
  5346. add ebx,DWORD PTR[((-52))+r13]
  5347. lea ebx,DWORD PTR[rdx*1+rbx]
  5348. rorx r12d,ecx,27
  5349. rorx edx,ecx,2
  5350. xor ecx,esi
  5351. add ebx,r12d
  5352. xor ecx,eax
  5353. add ebp,DWORD PTR[((-32))+r13]
  5354. lea ebp,DWORD PTR[rbp*1+rcx]
  5355. rorx r12d,ebx,27
  5356. rorx ecx,ebx,2
  5357. xor ebx,edx
  5358. add ebp,r12d
  5359. xor ebx,esi
  5360. add eax,DWORD PTR[((-28))+r13]
  5361. lea eax,DWORD PTR[rbx*1+rax]
  5362. rorx r12d,ebp,27
  5363. rorx ebx,ebp,2
  5364. xor ebp,ecx
  5365. add eax,r12d
  5366. xor ebp,edx
  5367. add esi,DWORD PTR[((-24))+r13]
  5368. lea esi,DWORD PTR[rbp*1+rsi]
  5369. rorx r12d,eax,27
  5370. rorx ebp,eax,2
  5371. xor eax,ebx
  5372. add esi,r12d
  5373. xor eax,ecx
  5374. add edx,DWORD PTR[((-20))+r13]
  5375. lea edx,DWORD PTR[rax*1+rdx]
  5376. rorx r12d,esi,27
  5377. add edx,r12d
  5378. lea r13,QWORD PTR[128+rsp]
  5379. add edx,DWORD PTR[r8]
  5380. add esi,DWORD PTR[4+r8]
  5381. add ebp,DWORD PTR[8+r8]
  5382. mov DWORD PTR[r8],edx
  5383. add ebx,DWORD PTR[12+r8]
  5384. mov DWORD PTR[4+r8],esi
  5385. mov eax,edx
  5386. add ecx,DWORD PTR[16+r8]
  5387. mov r12d,ebp
  5388. mov DWORD PTR[8+r8],ebp
  5389. mov edx,ebx
  5390. mov DWORD PTR[12+r8],ebx
  5391. mov ebp,esi
  5392. mov DWORD PTR[16+r8],ecx
  5393. mov esi,ecx
  5394. mov ecx,r12d
  5395. cmp r9,r10
  5396. jbe $L$oop_avx2
  5397. $L$done_avx2::
  5398. vzeroupper
  5399. movaps xmm6,XMMWORD PTR[((-40-96))+r11]
  5400. movaps xmm7,XMMWORD PTR[((-40-80))+r11]
  5401. movaps xmm8,XMMWORD PTR[((-40-64))+r11]
  5402. movaps xmm9,XMMWORD PTR[((-40-48))+r11]
  5403. movaps xmm10,XMMWORD PTR[((-40-32))+r11]
  5404. movaps xmm11,XMMWORD PTR[((-40-16))+r11]
  5405. mov r14,QWORD PTR[((-40))+r11]
  5406. mov r13,QWORD PTR[((-32))+r11]
  5407. mov r12,QWORD PTR[((-24))+r11]
  5408. mov rbp,QWORD PTR[((-16))+r11]
  5409. mov rbx,QWORD PTR[((-8))+r11]
  5410. lea rsp,QWORD PTR[r11]
  5411. $L$epilogue_avx2::
  5412. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  5413. mov rsi,QWORD PTR[16+rsp]
  5414. DB 0F3h,0C3h ;repret
  5415. $L$SEH_end_sha1_block_data_order_avx2::
  5416. sha1_block_data_order_avx2 ENDP
  5417. ALIGN 64
  5418. K_XX_XX::
  5419. DD 05a827999h,05a827999h,05a827999h,05a827999h
  5420. DD 05a827999h,05a827999h,05a827999h,05a827999h
  5421. DD 06ed9eba1h,06ed9eba1h,06ed9eba1h,06ed9eba1h
  5422. DD 06ed9eba1h,06ed9eba1h,06ed9eba1h,06ed9eba1h
  5423. DD 08f1bbcdch,08f1bbcdch,08f1bbcdch,08f1bbcdch
  5424. DD 08f1bbcdch,08f1bbcdch,08f1bbcdch,08f1bbcdch
  5425. DD 0ca62c1d6h,0ca62c1d6h,0ca62c1d6h,0ca62c1d6h
  5426. DD 0ca62c1d6h,0ca62c1d6h,0ca62c1d6h,0ca62c1d6h
  5427. DD 000010203h,004050607h,008090a0bh,00c0d0e0fh
  5428. DD 000010203h,004050607h,008090a0bh,00c0d0e0fh
  5429. DB 0fh,0eh,0dh,0ch,0bh,0ah,09h,08h,07h,06h,05h,04h,03h,02h,01h,00h
  5430. DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
  5431. DB 102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44
  5432. DB 32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60
  5433. DB 97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114
  5434. DB 103,62,0
  5435. ALIGN 64
  5436. EXTERN __imp_RtlVirtualUnwind:NEAR
  5437. ALIGN 16
  5438. se_handler PROC PRIVATE
  5439. push rsi
  5440. push rdi
  5441. push rbx
  5442. push rbp
  5443. push r12
  5444. push r13
  5445. push r14
  5446. push r15
  5447. pushfq
  5448. sub rsp,64
  5449. mov rax,QWORD PTR[120+r8]
  5450. mov rbx,QWORD PTR[248+r8]
  5451. lea r10,QWORD PTR[$L$prologue]
  5452. cmp rbx,r10
  5453. jb $L$common_seh_tail
  5454. mov rax,QWORD PTR[152+r8]
  5455. lea r10,QWORD PTR[$L$epilogue]
  5456. cmp rbx,r10
  5457. jae $L$common_seh_tail
  5458. mov rax,QWORD PTR[64+rax]
  5459. mov rbx,QWORD PTR[((-8))+rax]
  5460. mov rbp,QWORD PTR[((-16))+rax]
  5461. mov r12,QWORD PTR[((-24))+rax]
  5462. mov r13,QWORD PTR[((-32))+rax]
  5463. mov r14,QWORD PTR[((-40))+rax]
  5464. mov QWORD PTR[144+r8],rbx
  5465. mov QWORD PTR[160+r8],rbp
  5466. mov QWORD PTR[216+r8],r12
  5467. mov QWORD PTR[224+r8],r13
  5468. mov QWORD PTR[232+r8],r14
  5469. jmp $L$common_seh_tail
  5470. se_handler ENDP
  5471. ALIGN 16
  5472. shaext_handler PROC PRIVATE
  5473. push rsi
  5474. push rdi
  5475. push rbx
  5476. push rbp
  5477. push r12
  5478. push r13
  5479. push r14
  5480. push r15
  5481. pushfq
  5482. sub rsp,64
  5483. mov rax,QWORD PTR[120+r8]
  5484. mov rbx,QWORD PTR[248+r8]
  5485. lea r10,QWORD PTR[$L$prologue_shaext]
  5486. cmp rbx,r10
  5487. jb $L$common_seh_tail
  5488. lea r10,QWORD PTR[$L$epilogue_shaext]
  5489. cmp rbx,r10
  5490. jae $L$common_seh_tail
  5491. lea rsi,QWORD PTR[((-8-64))+rax]
  5492. lea rdi,QWORD PTR[512+r8]
  5493. mov ecx,8
  5494. DD 0a548f3fch
  5495. jmp $L$common_seh_tail
  5496. shaext_handler ENDP
  5497. ALIGN 16
  5498. ssse3_handler PROC PRIVATE
  5499. push rsi
  5500. push rdi
  5501. push rbx
  5502. push rbp
  5503. push r12
  5504. push r13
  5505. push r14
  5506. push r15
  5507. pushfq
  5508. sub rsp,64
  5509. mov rax,QWORD PTR[120+r8]
  5510. mov rbx,QWORD PTR[248+r8]
  5511. mov rsi,QWORD PTR[8+r9]
  5512. mov r11,QWORD PTR[56+r9]
  5513. mov r10d,DWORD PTR[r11]
  5514. lea r10,QWORD PTR[r10*1+rsi]
  5515. cmp rbx,r10
  5516. jb $L$common_seh_tail
  5517. mov rax,QWORD PTR[208+r8]
  5518. mov r10d,DWORD PTR[4+r11]
  5519. lea r10,QWORD PTR[r10*1+rsi]
  5520. cmp rbx,r10
  5521. jae $L$common_seh_tail
  5522. lea rsi,QWORD PTR[((-40-96))+rax]
  5523. lea rdi,QWORD PTR[512+r8]
  5524. mov ecx,12
  5525. DD 0a548f3fch
  5526. mov rbx,QWORD PTR[((-8))+rax]
  5527. mov rbp,QWORD PTR[((-16))+rax]
  5528. mov r12,QWORD PTR[((-24))+rax]
  5529. mov r13,QWORD PTR[((-32))+rax]
  5530. mov r14,QWORD PTR[((-40))+rax]
  5531. mov QWORD PTR[144+r8],rbx
  5532. mov QWORD PTR[160+r8],rbp
  5533. mov QWORD PTR[216+r8],r12
  5534. mov QWORD PTR[224+r8],r13
  5535. mov QWORD PTR[232+r8],r14
  5536. $L$common_seh_tail::
  5537. mov rdi,QWORD PTR[8+rax]
  5538. mov rsi,QWORD PTR[16+rax]
  5539. mov QWORD PTR[152+r8],rax
  5540. mov QWORD PTR[168+r8],rsi
  5541. mov QWORD PTR[176+r8],rdi
  5542. mov rdi,QWORD PTR[40+r9]
  5543. mov rsi,r8
  5544. mov ecx,154
  5545. DD 0a548f3fch
  5546. mov rsi,r9
  5547. xor rcx,rcx
  5548. mov rdx,QWORD PTR[8+rsi]
  5549. mov r8,QWORD PTR[rsi]
  5550. mov r9,QWORD PTR[16+rsi]
  5551. mov r10,QWORD PTR[40+rsi]
  5552. lea r11,QWORD PTR[56+rsi]
  5553. lea r12,QWORD PTR[24+rsi]
  5554. mov QWORD PTR[32+rsp],r10
  5555. mov QWORD PTR[40+rsp],r11
  5556. mov QWORD PTR[48+rsp],r12
  5557. mov QWORD PTR[56+rsp],rcx
  5558. call QWORD PTR[__imp_RtlVirtualUnwind]
  5559. mov eax,1
  5560. add rsp,64
  5561. popfq
  5562. pop r15
  5563. pop r14
  5564. pop r13
  5565. pop r12
  5566. pop rbp
  5567. pop rbx
  5568. pop rdi
  5569. pop rsi
  5570. DB 0F3h,0C3h ;repret
  5571. ssse3_handler ENDP
  5572. .text$ ENDS
  5573. .pdata SEGMENT READONLY ALIGN(4)
  5574. ALIGN 4
  5575. DD imagerel $L$SEH_begin_sha1_block_data_order
  5576. DD imagerel $L$SEH_end_sha1_block_data_order
  5577. DD imagerel $L$SEH_info_sha1_block_data_order
  5578. DD imagerel $L$SEH_begin_sha1_block_data_order_shaext
  5579. DD imagerel $L$SEH_end_sha1_block_data_order_shaext
  5580. DD imagerel $L$SEH_info_sha1_block_data_order_shaext
  5581. DD imagerel $L$SEH_begin_sha1_block_data_order_ssse3
  5582. DD imagerel $L$SEH_end_sha1_block_data_order_ssse3
  5583. DD imagerel $L$SEH_info_sha1_block_data_order_ssse3
  5584. DD imagerel $L$SEH_begin_sha1_block_data_order_avx
  5585. DD imagerel $L$SEH_end_sha1_block_data_order_avx
  5586. DD imagerel $L$SEH_info_sha1_block_data_order_avx
  5587. DD imagerel $L$SEH_begin_sha1_block_data_order_avx2
  5588. DD imagerel $L$SEH_end_sha1_block_data_order_avx2
  5589. DD imagerel $L$SEH_info_sha1_block_data_order_avx2
  5590. .pdata ENDS
  5591. .xdata SEGMENT READONLY ALIGN(8)
  5592. ALIGN 8
  5593. $L$SEH_info_sha1_block_data_order::
  5594. DB 9,0,0,0
  5595. DD imagerel se_handler
  5596. $L$SEH_info_sha1_block_data_order_shaext::
  5597. DB 9,0,0,0
  5598. DD imagerel shaext_handler
  5599. $L$SEH_info_sha1_block_data_order_ssse3::
  5600. DB 9,0,0,0
  5601. DD imagerel ssse3_handler
  5602. DD imagerel $L$prologue_ssse3,imagerel $L$epilogue_ssse3
  5603. $L$SEH_info_sha1_block_data_order_avx::
  5604. DB 9,0,0,0
  5605. DD imagerel ssse3_handler
  5606. DD imagerel $L$prologue_avx,imagerel $L$epilogue_avx
  5607. $L$SEH_info_sha1_block_data_order_avx2::
  5608. DB 9,0,0,0
  5609. DD imagerel ssse3_handler
  5610. DD imagerel $L$prologue_avx2,imagerel $L$epilogue_avx2
  5611. .xdata ENDS
  5612. END