sha1-x86_64.asm 96 KB

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