sha256_asm.S 588 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986398739883989399039913992399339943995399639973998399940004001400240034004400540064007400840094010401140124013401440154016401740184019402040214022402340244025402640274028402940304031403240334034403540364037403840394040404140424043404440454046404740484049405040514052405340544055405640574058405940604061406240634064406540664067406840694070407140724073407440754076407740784079408040814082408340844085408640874088408940904091409240934094409540964097409840994100410141024103410441054106410741084109411041114112411341144115411641174118411941204121412241234124412541264127412841294130413141324133413441354136413741384139414041414142414341444145414641474148414941504151415241534154415541564157415841594160416141624163416441654166416741684169417041714172417341744175417641774178417941804181418241834184418541864187418841894190419141924193419441954196419741984199420042014202420342044205420642074208420942104211421242134214421542164217421842194220422142224223422442254226422742284229423042314232423342344235423642374238423942404241424242434244424542464247424842494250425142524253425442554256425742584259426042614262426342644265426642674268426942704271427242734274427542764277427842794280428142824283428442854286428742884289429042914292429342944295429642974298429943004301430243034304430543064307430843094310431143124313431443154316431743184319432043214322432343244325432643274328432943304331433243334334433543364337433843394340434143424343434443454346434743484349435043514352435343544355435643574358435943604361436243634364436543664367436843694370437143724373437443754376437743784379438043814382438343844385438643874388438943904391439243934394439543964397439843994400440144024403440444054406440744084409441044114412441344144415441644174418441944204421442244234424442544264427442844294430443144324433443444354436443744384439444044414442444344444445444644474448444944504451445244534454445544564457445844594460446144624463446444654466446744684469447044714472447344744475447644774478447944804481448244834484448544864487448844894490449144924493449444954496449744984499450045014502450345044505450645074508450945104511451245134514451545164517451845194520452145224523452445254526452745284529453045314532453345344535453645374538453945404541454245434544454545464547454845494550455145524553455445554556455745584559456045614562456345644565456645674568456945704571457245734574457545764577457845794580458145824583458445854586458745884589459045914592459345944595459645974598459946004601460246034604460546064607460846094610461146124613461446154616461746184619462046214622462346244625462646274628462946304631463246334634463546364637463846394640464146424643464446454646464746484649465046514652465346544655465646574658465946604661466246634664466546664667466846694670467146724673467446754676467746784679468046814682468346844685468646874688468946904691469246934694469546964697469846994700470147024703470447054706470747084709471047114712471347144715471647174718471947204721472247234724472547264727472847294730473147324733473447354736473747384739474047414742474347444745474647474748474947504751475247534754475547564757475847594760476147624763476447654766476747684769477047714772477347744775477647774778477947804781478247834784478547864787478847894790479147924793479447954796479747984799480048014802480348044805480648074808480948104811481248134814481548164817481848194820482148224823482448254826482748284829483048314832483348344835483648374838483948404841484248434844484548464847484848494850485148524853485448554856485748584859486048614862486348644865486648674868486948704871487248734874487548764877487848794880488148824883488448854886488748884889489048914892489348944895489648974898489949004901490249034904490549064907490849094910491149124913491449154916491749184919492049214922492349244925492649274928492949304931493249334934493549364937493849394940494149424943494449454946494749484949495049514952495349544955495649574958495949604961496249634964496549664967496849694970497149724973497449754976497749784979498049814982498349844985498649874988498949904991499249934994499549964997499849995000500150025003500450055006500750085009501050115012501350145015501650175018501950205021502250235024502550265027502850295030503150325033503450355036503750385039504050415042504350445045504650475048504950505051505250535054505550565057505850595060506150625063506450655066506750685069507050715072507350745075507650775078507950805081508250835084508550865087508850895090509150925093509450955096509750985099510051015102510351045105510651075108510951105111511251135114511551165117511851195120512151225123512451255126512751285129513051315132513351345135513651375138513951405141514251435144514551465147514851495150515151525153515451555156515751585159516051615162516351645165516651675168516951705171517251735174517551765177517851795180518151825183518451855186518751885189519051915192519351945195519651975198519952005201520252035204520552065207520852095210521152125213521452155216521752185219522052215222522352245225522652275228522952305231523252335234523552365237523852395240524152425243524452455246524752485249525052515252525352545255525652575258525952605261526252635264526552665267526852695270527152725273527452755276527752785279528052815282528352845285528652875288528952905291529252935294529552965297529852995300530153025303530453055306530753085309531053115312531353145315531653175318531953205321532253235324532553265327532853295330533153325333533453355336533753385339534053415342534353445345534653475348534953505351535253535354535553565357535853595360536153625363536453655366536753685369537053715372537353745375537653775378537953805381538253835384538553865387538853895390539153925393539453955396539753985399540054015402540354045405540654075408540954105411541254135414541554165417541854195420542154225423542454255426542754285429543054315432543354345435543654375438543954405441544254435444544554465447544854495450545154525453545454555456545754585459546054615462546354645465546654675468546954705471547254735474547554765477547854795480548154825483548454855486548754885489549054915492549354945495549654975498549955005501550255035504550555065507550855095510551155125513551455155516551755185519552055215522552355245525552655275528552955305531553255335534553555365537553855395540554155425543554455455546554755485549555055515552555355545555555655575558555955605561556255635564556555665567556855695570557155725573557455755576557755785579558055815582558355845585558655875588558955905591559255935594559555965597559855995600560156025603560456055606560756085609561056115612561356145615561656175618561956205621562256235624562556265627562856295630563156325633563456355636563756385639564056415642564356445645564656475648564956505651565256535654565556565657565856595660566156625663566456655666566756685669567056715672567356745675567656775678567956805681568256835684568556865687568856895690569156925693569456955696569756985699570057015702570357045705570657075708570957105711571257135714571557165717571857195720572157225723572457255726572757285729573057315732573357345735573657375738573957405741574257435744574557465747574857495750575157525753575457555756575757585759576057615762576357645765576657675768576957705771577257735774577557765777577857795780578157825783578457855786578757885789579057915792579357945795579657975798579958005801580258035804580558065807580858095810581158125813581458155816581758185819582058215822582358245825582658275828582958305831583258335834583558365837583858395840584158425843584458455846584758485849585058515852585358545855585658575858585958605861586258635864586558665867586858695870587158725873587458755876587758785879588058815882588358845885588658875888588958905891589258935894589558965897589858995900590159025903590459055906590759085909591059115912591359145915591659175918591959205921592259235924592559265927592859295930593159325933593459355936593759385939594059415942594359445945594659475948594959505951595259535954595559565957595859595960596159625963596459655966596759685969597059715972597359745975597659775978597959805981598259835984598559865987598859895990599159925993599459955996599759985999600060016002600360046005600660076008600960106011601260136014601560166017601860196020602160226023602460256026602760286029603060316032603360346035603660376038603960406041604260436044604560466047604860496050605160526053605460556056605760586059606060616062606360646065606660676068606960706071607260736074607560766077607860796080608160826083608460856086608760886089609060916092609360946095609660976098609961006101610261036104610561066107610861096110611161126113611461156116611761186119612061216122612361246125612661276128612961306131613261336134613561366137613861396140614161426143614461456146614761486149615061516152615361546155615661576158615961606161616261636164616561666167616861696170617161726173617461756176617761786179618061816182618361846185618661876188618961906191619261936194619561966197619861996200620162026203620462056206620762086209621062116212621362146215621662176218621962206221622262236224622562266227622862296230623162326233623462356236623762386239624062416242624362446245624662476248624962506251625262536254625562566257625862596260626162626263626462656266626762686269627062716272627362746275627662776278627962806281628262836284628562866287628862896290629162926293629462956296629762986299630063016302630363046305630663076308630963106311631263136314631563166317631863196320632163226323632463256326632763286329633063316332633363346335633663376338633963406341634263436344634563466347634863496350635163526353635463556356635763586359636063616362636363646365636663676368636963706371637263736374637563766377637863796380638163826383638463856386638763886389639063916392639363946395639663976398639964006401640264036404640564066407640864096410641164126413641464156416641764186419642064216422642364246425642664276428642964306431643264336434643564366437643864396440644164426443644464456446644764486449645064516452645364546455645664576458645964606461646264636464646564666467646864696470647164726473647464756476647764786479648064816482648364846485648664876488648964906491649264936494649564966497649864996500650165026503650465056506650765086509651065116512651365146515651665176518651965206521652265236524652565266527652865296530653165326533653465356536653765386539654065416542654365446545654665476548654965506551655265536554655565566557655865596560656165626563656465656566656765686569657065716572657365746575657665776578657965806581658265836584658565866587658865896590659165926593659465956596659765986599660066016602660366046605660666076608660966106611661266136614661566166617661866196620662166226623662466256626662766286629663066316632663366346635663666376638663966406641664266436644664566466647664866496650665166526653665466556656665766586659666066616662666366646665666666676668666966706671667266736674667566766677667866796680668166826683668466856686668766886689669066916692669366946695669666976698669967006701670267036704670567066707670867096710671167126713671467156716671767186719672067216722672367246725672667276728672967306731673267336734673567366737673867396740674167426743674467456746674767486749675067516752675367546755675667576758675967606761676267636764676567666767676867696770677167726773677467756776677767786779678067816782678367846785678667876788678967906791679267936794679567966797679867996800680168026803680468056806680768086809681068116812681368146815681668176818681968206821682268236824682568266827682868296830683168326833683468356836683768386839684068416842684368446845684668476848684968506851685268536854685568566857685868596860686168626863686468656866686768686869687068716872687368746875687668776878687968806881688268836884688568866887688868896890689168926893689468956896689768986899690069016902690369046905690669076908690969106911691269136914691569166917691869196920692169226923692469256926692769286929693069316932693369346935693669376938693969406941694269436944694569466947694869496950695169526953695469556956695769586959696069616962696369646965696669676968696969706971697269736974697569766977697869796980698169826983698469856986698769886989699069916992699369946995699669976998699970007001700270037004700570067007700870097010701170127013701470157016701770187019702070217022702370247025702670277028702970307031703270337034703570367037703870397040704170427043704470457046704770487049705070517052705370547055705670577058705970607061706270637064706570667067706870697070707170727073707470757076707770787079708070817082708370847085708670877088708970907091709270937094709570967097709870997100710171027103710471057106710771087109711071117112711371147115711671177118711971207121712271237124712571267127712871297130713171327133713471357136713771387139714071417142714371447145714671477148714971507151715271537154715571567157715871597160716171627163716471657166716771687169717071717172717371747175717671777178717971807181718271837184718571867187718871897190719171927193719471957196719771987199720072017202720372047205720672077208720972107211721272137214721572167217721872197220722172227223722472257226722772287229723072317232723372347235723672377238723972407241724272437244724572467247724872497250725172527253725472557256725772587259726072617262726372647265726672677268726972707271727272737274727572767277727872797280728172827283728472857286728772887289729072917292729372947295729672977298729973007301730273037304730573067307730873097310731173127313731473157316731773187319732073217322732373247325732673277328732973307331733273337334733573367337733873397340734173427343734473457346734773487349735073517352735373547355735673577358735973607361736273637364736573667367736873697370737173727373737473757376737773787379738073817382738373847385738673877388738973907391739273937394739573967397739873997400740174027403740474057406740774087409741074117412741374147415741674177418741974207421742274237424742574267427742874297430743174327433743474357436743774387439744074417442744374447445744674477448744974507451745274537454745574567457745874597460746174627463746474657466746774687469747074717472747374747475747674777478747974807481748274837484748574867487748874897490749174927493749474957496749774987499750075017502750375047505750675077508750975107511751275137514751575167517751875197520752175227523752475257526752775287529753075317532753375347535753675377538753975407541754275437544754575467547754875497550755175527553755475557556755775587559756075617562756375647565756675677568756975707571757275737574757575767577757875797580758175827583758475857586758775887589759075917592759375947595759675977598759976007601760276037604760576067607760876097610761176127613761476157616761776187619762076217622762376247625762676277628762976307631763276337634763576367637763876397640764176427643764476457646764776487649765076517652765376547655765676577658765976607661766276637664766576667667766876697670767176727673767476757676767776787679768076817682768376847685768676877688768976907691769276937694769576967697769876997700770177027703770477057706770777087709771077117712771377147715771677177718771977207721772277237724772577267727772877297730773177327733773477357736773777387739774077417742774377447745774677477748774977507751775277537754775577567757775877597760776177627763776477657766776777687769777077717772777377747775777677777778777977807781778277837784778577867787778877897790779177927793779477957796779777987799780078017802780378047805780678077808780978107811781278137814781578167817781878197820782178227823782478257826782778287829783078317832783378347835783678377838783978407841784278437844784578467847784878497850785178527853785478557856785778587859786078617862786378647865786678677868786978707871787278737874787578767877787878797880788178827883788478857886788778887889789078917892789378947895789678977898789979007901790279037904790579067907790879097910791179127913791479157916791779187919792079217922792379247925792679277928792979307931793279337934793579367937793879397940794179427943794479457946794779487949795079517952795379547955795679577958795979607961796279637964796579667967796879697970797179727973797479757976797779787979798079817982798379847985798679877988798979907991799279937994799579967997799879998000800180028003800480058006800780088009801080118012801380148015801680178018801980208021802280238024802580268027802880298030803180328033803480358036803780388039804080418042804380448045804680478048804980508051805280538054805580568057805880598060806180628063806480658066806780688069807080718072807380748075807680778078807980808081808280838084808580868087808880898090809180928093809480958096809780988099810081018102810381048105810681078108810981108111811281138114811581168117811881198120812181228123812481258126812781288129813081318132813381348135813681378138813981408141814281438144814581468147814881498150815181528153815481558156815781588159816081618162816381648165816681678168816981708171817281738174817581768177817881798180818181828183818481858186818781888189819081918192819381948195819681978198819982008201820282038204820582068207820882098210821182128213821482158216821782188219822082218222822382248225822682278228822982308231823282338234823582368237823882398240824182428243824482458246824782488249825082518252825382548255825682578258825982608261826282638264826582668267826882698270827182728273827482758276827782788279828082818282828382848285828682878288828982908291829282938294829582968297829882998300830183028303830483058306830783088309831083118312831383148315831683178318831983208321832283238324832583268327832883298330833183328333833483358336833783388339834083418342834383448345834683478348834983508351835283538354835583568357835883598360836183628363836483658366836783688369837083718372837383748375837683778378837983808381838283838384838583868387838883898390839183928393839483958396839783988399840084018402840384048405840684078408840984108411841284138414841584168417841884198420842184228423842484258426842784288429843084318432843384348435843684378438843984408441844284438444844584468447844884498450845184528453845484558456845784588459846084618462846384648465846684678468846984708471847284738474847584768477847884798480848184828483848484858486848784888489849084918492849384948495849684978498849985008501850285038504850585068507850885098510851185128513851485158516851785188519852085218522852385248525852685278528852985308531853285338534853585368537853885398540854185428543854485458546854785488549855085518552855385548555855685578558855985608561856285638564856585668567856885698570857185728573857485758576857785788579858085818582858385848585858685878588858985908591859285938594859585968597859885998600860186028603860486058606860786088609861086118612861386148615861686178618861986208621862286238624862586268627862886298630863186328633863486358636863786388639864086418642864386448645864686478648864986508651865286538654865586568657865886598660866186628663866486658666866786688669867086718672867386748675867686778678867986808681868286838684868586868687868886898690869186928693869486958696869786988699870087018702870387048705870687078708870987108711871287138714871587168717871887198720872187228723872487258726872787288729873087318732873387348735873687378738873987408741874287438744874587468747874887498750875187528753875487558756875787588759876087618762876387648765876687678768876987708771877287738774877587768777877887798780878187828783878487858786878787888789879087918792879387948795879687978798879988008801880288038804880588068807880888098810881188128813881488158816881788188819882088218822882388248825882688278828882988308831883288338834883588368837883888398840884188428843884488458846884788488849885088518852885388548855885688578858885988608861886288638864886588668867886888698870887188728873887488758876887788788879888088818882888388848885888688878888888988908891889288938894889588968897889888998900890189028903890489058906890789088909891089118912891389148915891689178918891989208921892289238924892589268927892889298930893189328933893489358936893789388939894089418942894389448945894689478948894989508951895289538954895589568957895889598960896189628963896489658966896789688969897089718972897389748975897689778978897989808981898289838984898589868987898889898990899189928993899489958996899789988999900090019002900390049005900690079008900990109011901290139014901590169017901890199020902190229023902490259026902790289029903090319032903390349035903690379038903990409041904290439044904590469047904890499050905190529053905490559056905790589059906090619062906390649065906690679068906990709071907290739074907590769077907890799080908190829083908490859086908790889089909090919092909390949095909690979098909991009101910291039104910591069107910891099110911191129113911491159116911791189119912091219122912391249125912691279128912991309131913291339134913591369137913891399140914191429143914491459146914791489149915091519152915391549155915691579158915991609161916291639164916591669167916891699170917191729173917491759176917791789179918091819182918391849185918691879188918991909191919291939194919591969197919891999200920192029203920492059206920792089209921092119212921392149215921692179218921992209221922292239224922592269227922892299230923192329233923492359236923792389239924092419242924392449245924692479248924992509251925292539254925592569257925892599260926192629263926492659266926792689269927092719272927392749275927692779278927992809281928292839284928592869287928892899290929192929293929492959296929792989299930093019302930393049305930693079308930993109311931293139314931593169317931893199320932193229323932493259326932793289329933093319332933393349335933693379338933993409341934293439344934593469347934893499350935193529353935493559356935793589359936093619362936393649365936693679368936993709371937293739374937593769377937893799380938193829383938493859386938793889389939093919392939393949395939693979398939994009401940294039404940594069407940894099410941194129413941494159416941794189419942094219422942394249425942694279428942994309431943294339434943594369437943894399440944194429443944494459446944794489449945094519452945394549455945694579458945994609461946294639464946594669467946894699470947194729473947494759476947794789479948094819482948394849485948694879488948994909491949294939494949594969497949894999500950195029503950495059506950795089509951095119512951395149515951695179518951995209521952295239524952595269527952895299530953195329533953495359536953795389539954095419542954395449545954695479548954995509551955295539554955595569557955895599560956195629563956495659566956795689569957095719572957395749575957695779578957995809581958295839584958595869587958895899590959195929593959495959596959795989599960096019602960396049605960696079608960996109611961296139614961596169617961896199620962196229623962496259626962796289629963096319632963396349635963696379638963996409641964296439644964596469647964896499650965196529653965496559656965796589659966096619662966396649665966696679668966996709671967296739674967596769677967896799680968196829683968496859686968796889689969096919692969396949695969696979698969997009701970297039704970597069707970897099710971197129713971497159716971797189719972097219722972397249725972697279728972997309731973297339734973597369737973897399740974197429743974497459746974797489749975097519752975397549755975697579758975997609761976297639764976597669767976897699770977197729773977497759776977797789779978097819782978397849785978697879788978997909791979297939794979597969797979897999800980198029803980498059806980798089809981098119812981398149815981698179818981998209821982298239824982598269827982898299830983198329833983498359836983798389839984098419842984398449845984698479848984998509851985298539854985598569857985898599860986198629863986498659866986798689869987098719872987398749875987698779878987998809881988298839884988598869887988898899890989198929893989498959896989798989899990099019902990399049905990699079908990999109911991299139914991599169917991899199920992199229923992499259926992799289929993099319932993399349935993699379938993999409941994299439944994599469947994899499950995199529953995499559956995799589959996099619962996399649965996699679968996999709971997299739974997599769977997899799980998199829983998499859986998799889989999099919992999399949995999699979998999910000100011000210003100041000510006100071000810009100101001110012100131001410015100161001710018100191002010021100221002310024100251002610027100281002910030100311003210033100341003510036100371003810039100401004110042100431004410045100461004710048100491005010051100521005310054100551005610057100581005910060100611006210063100641006510066100671006810069100701007110072100731007410075100761007710078100791008010081100821008310084100851008610087100881008910090100911009210093100941009510096100971009810099101001010110102101031010410105101061010710108101091011010111101121011310114101151011610117101181011910120101211012210123101241012510126101271012810129101301013110132101331013410135101361013710138101391014010141101421014310144101451014610147101481014910150101511015210153101541015510156101571015810159101601016110162101631016410165101661016710168101691017010171101721017310174101751017610177101781017910180101811018210183101841018510186101871018810189101901019110192101931019410195101961019710198101991020010201102021020310204102051020610207102081020910210102111021210213102141021510216102171021810219102201022110222102231022410225102261022710228102291023010231102321023310234102351023610237102381023910240102411024210243102441024510246102471024810249102501025110252102531025410255102561025710258102591026010261102621026310264102651026610267102681026910270102711027210273102741027510276102771027810279102801028110282102831028410285102861028710288102891029010291102921029310294102951029610297102981029910300103011030210303103041030510306103071030810309103101031110312103131031410315103161031710318103191032010321103221032310324103251032610327103281032910330103311033210333103341033510336103371033810339103401034110342103431034410345103461034710348103491035010351103521035310354103551035610357103581035910360103611036210363103641036510366103671036810369103701037110372103731037410375103761037710378103791038010381103821038310384103851038610387103881038910390103911039210393103941039510396103971039810399104001040110402104031040410405104061040710408104091041010411104121041310414104151041610417104181041910420104211042210423104241042510426104271042810429104301043110432104331043410435104361043710438104391044010441104421044310444104451044610447104481044910450104511045210453104541045510456104571045810459104601046110462104631046410465104661046710468104691047010471104721047310474104751047610477104781047910480104811048210483104841048510486104871048810489104901049110492104931049410495104961049710498104991050010501105021050310504105051050610507105081050910510105111051210513105141051510516105171051810519105201052110522105231052410525105261052710528105291053010531105321053310534105351053610537105381053910540105411054210543105441054510546105471054810549105501055110552105531055410555105561055710558105591056010561105621056310564105651056610567105681056910570105711057210573105741057510576105771057810579105801058110582105831058410585105861058710588105891059010591105921059310594105951059610597105981059910600106011060210603106041060510606106071060810609106101061110612106131061410615106161061710618106191062010621106221062310624106251062610627106281062910630106311063210633106341063510636106371063810639106401064110642106431064410645106461064710648106491065010651106521065310654106551065610657106581065910660106611066210663106641066510666106671066810669106701067110672106731067410675106761067710678106791068010681106821068310684106851068610687106881068910690106911069210693106941069510696106971069810699107001070110702107031070410705107061070710708107091071010711107121071310714107151071610717107181071910720107211072210723107241072510726107271072810729107301073110732107331073410735107361073710738107391074010741107421074310744107451074610747107481074910750107511075210753107541075510756107571075810759107601076110762107631076410765107661076710768107691077010771107721077310774107751077610777107781077910780107811078210783107841078510786107871078810789107901079110792107931079410795107961079710798107991080010801108021080310804108051080610807108081080910810108111081210813108141081510816108171081810819108201082110822108231082410825108261082710828108291083010831108321083310834108351083610837108381083910840108411084210843108441084510846108471084810849108501085110852108531085410855108561085710858108591086010861108621086310864108651086610867108681086910870108711087210873108741087510876108771087810879108801088110882108831088410885108861088710888108891089010891108921089310894108951089610897108981089910900109011090210903109041090510906109071090810909109101091110912109131091410915109161091710918109191092010921109221092310924109251092610927109281092910930109311093210933109341093510936109371093810939109401094110942109431094410945109461094710948109491095010951109521095310954109551095610957109581095910960109611096210963109641096510966109671096810969109701097110972109731097410975109761097710978109791098010981109821098310984109851098610987109881098910990109911099210993109941099510996109971099810999110001100111002110031100411005110061100711008110091101011011110121101311014110151101611017110181101911020110211102211023110241102511026110271102811029110301103111032110331103411035110361103711038110391104011041110421104311044110451104611047110481104911050110511105211053110541105511056110571105811059110601106111062110631106411065110661106711068110691107011071110721107311074110751107611077110781107911080110811108211083110841108511086110871108811089110901109111092110931109411095110961109711098110991110011101111021110311104111051110611107111081110911110111111111211113111141111511116111171111811119111201112111122111231112411125111261112711128111291113011131111321113311134111351113611137111381113911140111411114211143111441114511146111471114811149111501115111152111531115411155111561115711158111591116011161111621116311164111651116611167111681116911170111711117211173111741117511176111771117811179111801118111182111831118411185111861118711188111891119011191111921119311194111951119611197111981119911200112011120211203112041120511206112071120811209112101121111212112131121411215112161121711218112191122011221112221122311224112251122611227112281122911230112311123211233112341123511236112371123811239112401124111242112431124411245112461124711248112491125011251112521125311254112551125611257112581125911260112611126211263112641126511266112671126811269112701127111272112731127411275112761127711278112791128011281112821128311284112851128611287112881128911290112911129211293112941129511296112971129811299113001130111302113031130411305113061130711308113091131011311113121131311314113151131611317113181131911320113211132211323113241132511326113271132811329113301133111332113331133411335113361133711338113391134011341113421134311344113451134611347113481134911350113511135211353113541135511356113571135811359113601136111362113631136411365113661136711368113691137011371113721137311374113751137611377113781137911380113811138211383113841138511386113871138811389113901139111392113931139411395113961139711398113991140011401114021140311404114051140611407114081140911410114111141211413114141141511416114171141811419114201142111422114231142411425114261142711428114291143011431114321143311434114351143611437114381143911440114411144211443114441144511446114471144811449114501145111452114531145411455114561145711458114591146011461114621146311464114651146611467114681146911470114711147211473114741147511476114771147811479114801148111482114831148411485114861148711488114891149011491114921149311494114951149611497114981149911500115011150211503115041150511506115071150811509115101151111512115131151411515115161151711518115191152011521115221152311524115251152611527115281152911530115311153211533115341153511536115371153811539115401154111542115431154411545115461154711548115491155011551115521155311554115551155611557115581155911560115611156211563115641156511566115671156811569115701157111572115731157411575115761157711578115791158011581115821158311584115851158611587115881158911590115911159211593115941159511596115971159811599116001160111602116031160411605116061160711608116091161011611116121161311614116151161611617116181161911620116211162211623116241162511626116271162811629116301163111632116331163411635116361163711638116391164011641116421164311644116451164611647116481164911650116511165211653116541165511656116571165811659116601166111662116631166411665116661166711668116691167011671116721167311674116751167611677116781167911680116811168211683116841168511686116871168811689116901169111692116931169411695116961169711698116991170011701117021170311704117051170611707117081170911710117111171211713117141171511716117171171811719117201172111722117231172411725117261172711728117291173011731117321173311734117351173611737117381173911740117411174211743117441174511746117471174811749117501175111752117531175411755117561175711758117591176011761117621176311764117651176611767117681176911770117711177211773117741177511776117771177811779117801178111782117831178411785117861178711788117891179011791117921179311794117951179611797117981179911800118011180211803118041180511806118071180811809118101181111812118131181411815118161181711818118191182011821118221182311824118251182611827118281182911830118311183211833118341183511836118371183811839118401184111842118431184411845118461184711848118491185011851118521185311854118551185611857118581185911860118611186211863118641186511866118671186811869118701187111872118731187411875118761187711878118791188011881118821188311884118851188611887118881188911890118911189211893118941189511896118971189811899119001190111902119031190411905119061190711908119091191011911119121191311914119151191611917119181191911920119211192211923119241192511926119271192811929119301193111932119331193411935119361193711938119391194011941119421194311944119451194611947119481194911950119511195211953119541195511956119571195811959119601196111962119631196411965119661196711968119691197011971119721197311974119751197611977119781197911980119811198211983119841198511986119871198811989119901199111992119931199411995119961199711998119991200012001120021200312004120051200612007120081200912010120111201212013120141201512016120171201812019120201202112022120231202412025120261202712028120291203012031120321203312034120351203612037120381203912040120411204212043120441204512046120471204812049120501205112052120531205412055120561205712058120591206012061120621206312064120651206612067120681206912070120711207212073120741207512076120771207812079120801208112082120831208412085120861208712088120891209012091120921209312094120951209612097120981209912100121011210212103121041210512106121071210812109121101211112112121131211412115121161211712118121191212012121121221212312124121251212612127121281212912130121311213212133121341213512136121371213812139121401214112142121431214412145121461214712148121491215012151121521215312154121551215612157121581215912160121611216212163121641216512166121671216812169121701217112172121731217412175121761217712178121791218012181121821218312184121851218612187121881218912190121911219212193121941219512196121971219812199122001220112202122031220412205122061220712208122091221012211122121221312214122151221612217122181221912220122211222212223122241222512226122271222812229122301223112232122331223412235122361223712238122391224012241122421224312244122451224612247122481224912250122511225212253122541225512256122571225812259122601226112262122631226412265122661226712268122691227012271122721227312274122751227612277122781227912280122811228212283122841228512286122871228812289122901229112292122931229412295122961229712298122991230012301123021230312304123051230612307123081230912310123111231212313123141231512316123171231812319123201232112322123231232412325123261232712328123291233012331123321233312334123351233612337123381233912340123411234212343123441234512346123471234812349123501235112352123531235412355123561235712358123591236012361123621236312364123651236612367123681236912370123711237212373123741237512376123771237812379123801238112382123831238412385123861238712388123891239012391123921239312394123951239612397123981239912400124011240212403124041240512406124071240812409124101241112412124131241412415124161241712418124191242012421124221242312424124251242612427124281242912430124311243212433124341243512436124371243812439124401244112442124431244412445124461244712448124491245012451124521245312454124551245612457124581245912460124611246212463124641246512466124671246812469124701247112472124731247412475124761247712478124791248012481124821248312484124851248612487124881248912490124911249212493124941249512496124971249812499125001250112502125031250412505125061250712508125091251012511125121251312514125151251612517125181251912520125211252212523125241252512526125271252812529125301253112532125331253412535125361253712538125391254012541125421254312544125451254612547125481254912550125511255212553125541255512556125571255812559125601256112562125631256412565125661256712568125691257012571125721257312574125751257612577125781257912580125811258212583125841258512586125871258812589125901259112592125931259412595125961259712598125991260012601126021260312604126051260612607126081260912610126111261212613126141261512616126171261812619126201262112622126231262412625126261262712628126291263012631126321263312634126351263612637126381263912640126411264212643126441264512646126471264812649126501265112652126531265412655126561265712658126591266012661126621266312664126651266612667126681266912670126711267212673126741267512676126771267812679126801268112682126831268412685126861268712688126891269012691126921269312694126951269612697126981269912700127011270212703127041270512706127071270812709127101271112712127131271412715127161271712718127191272012721127221272312724127251272612727127281272912730127311273212733127341273512736127371273812739127401274112742127431274412745127461274712748127491275012751127521275312754127551275612757127581275912760127611276212763127641276512766127671276812769127701277112772127731277412775127761277712778127791278012781127821278312784127851278612787127881278912790127911279212793127941279512796127971279812799128001280112802128031280412805128061280712808128091281012811128121281312814128151281612817128181281912820128211282212823128241282512826128271282812829128301283112832128331283412835128361283712838128391284012841128421284312844128451284612847128481284912850128511285212853128541285512856128571285812859128601286112862128631286412865128661286712868128691287012871128721287312874128751287612877128781287912880128811288212883128841288512886128871288812889128901289112892128931289412895128961289712898128991290012901129021290312904129051290612907129081290912910129111291212913129141291512916129171291812919129201292112922129231292412925129261292712928129291293012931129321293312934129351293612937129381293912940129411294212943129441294512946129471294812949129501295112952129531295412955129561295712958129591296012961129621296312964129651296612967129681296912970129711297212973129741297512976129771297812979129801298112982129831298412985129861298712988129891299012991129921299312994129951299612997129981299913000130011300213003130041300513006130071300813009130101301113012130131301413015130161301713018130191302013021130221302313024130251302613027130281302913030130311303213033130341303513036130371303813039130401304113042130431304413045130461304713048130491305013051130521305313054130551305613057130581305913060130611306213063130641306513066130671306813069130701307113072130731307413075130761307713078130791308013081130821308313084130851308613087130881308913090130911309213093130941309513096130971309813099131001310113102131031310413105131061310713108131091311013111131121311313114131151311613117131181311913120131211312213123131241312513126131271312813129131301313113132131331313413135131361313713138131391314013141131421314313144131451314613147131481314913150131511315213153131541315513156131571315813159131601316113162131631316413165131661316713168131691317013171131721317313174131751317613177131781317913180131811318213183131841318513186131871318813189131901319113192131931319413195131961319713198131991320013201132021320313204132051320613207132081320913210132111321213213132141321513216132171321813219132201322113222132231322413225132261322713228132291323013231132321323313234132351323613237132381323913240132411324213243132441324513246132471324813249132501325113252132531325413255132561325713258132591326013261132621326313264132651326613267132681326913270132711327213273132741327513276132771327813279132801328113282132831328413285132861328713288132891329013291132921329313294132951329613297132981329913300133011330213303133041330513306133071330813309133101331113312133131331413315133161331713318133191332013321133221332313324133251332613327133281332913330133311333213333133341333513336133371333813339133401334113342133431334413345133461334713348133491335013351133521335313354133551335613357133581335913360133611336213363133641336513366133671336813369133701337113372133731337413375133761337713378133791338013381133821338313384133851338613387133881338913390133911339213393133941339513396133971339813399134001340113402134031340413405134061340713408134091341013411134121341313414134151341613417134181341913420134211342213423134241342513426134271342813429134301343113432134331343413435134361343713438134391344013441134421344313444134451344613447134481344913450134511345213453134541345513456134571345813459134601346113462134631346413465134661346713468134691347013471134721347313474134751347613477134781347913480134811348213483134841348513486134871348813489134901349113492134931349413495134961349713498134991350013501135021350313504135051350613507135081350913510135111351213513135141351513516135171351813519135201352113522135231352413525135261352713528135291353013531135321353313534135351353613537135381353913540135411354213543135441354513546135471354813549135501355113552135531355413555135561355713558135591356013561135621356313564135651356613567135681356913570135711357213573135741357513576135771357813579135801358113582135831358413585135861358713588135891359013591135921359313594135951359613597135981359913600136011360213603136041360513606136071360813609136101361113612136131361413615136161361713618136191362013621136221362313624136251362613627136281362913630136311363213633136341363513636136371363813639136401364113642136431364413645136461364713648136491365013651136521365313654136551365613657136581365913660136611366213663136641366513666136671366813669136701367113672136731367413675136761367713678136791368013681136821368313684136851368613687136881368913690136911369213693136941369513696136971369813699137001370113702137031370413705137061370713708137091371013711137121371313714137151371613717137181371913720137211372213723137241372513726137271372813729137301373113732137331373413735137361373713738137391374013741137421374313744137451374613747137481374913750137511375213753137541375513756137571375813759137601376113762137631376413765137661376713768137691377013771137721377313774137751377613777137781377913780137811378213783137841378513786137871378813789137901379113792137931379413795137961379713798137991380013801138021380313804138051380613807138081380913810138111381213813138141381513816138171381813819138201382113822138231382413825138261382713828138291383013831138321383313834138351383613837138381383913840138411384213843138441384513846138471384813849138501385113852138531385413855138561385713858138591386013861138621386313864138651386613867138681386913870138711387213873138741387513876138771387813879138801388113882138831388413885138861388713888138891389013891138921389313894138951389613897138981389913900139011390213903139041390513906139071390813909139101391113912139131391413915139161391713918139191392013921139221392313924139251392613927139281392913930139311393213933139341393513936139371393813939139401394113942139431394413945139461394713948139491395013951139521395313954139551395613957139581395913960139611396213963139641396513966139671396813969139701397113972139731397413975139761397713978139791398013981139821398313984139851398613987139881398913990139911399213993139941399513996139971399813999140001400114002140031400414005140061400714008140091401014011140121401314014140151401614017140181401914020140211402214023140241402514026140271402814029140301403114032140331403414035140361403714038140391404014041140421404314044140451404614047140481404914050140511405214053140541405514056140571405814059140601406114062140631406414065140661406714068140691407014071140721407314074140751407614077140781407914080140811408214083140841408514086140871408814089140901409114092140931409414095140961409714098140991410014101141021410314104141051410614107141081410914110141111411214113141141411514116141171411814119141201412114122141231412414125141261412714128141291413014131141321413314134141351413614137141381413914140141411414214143141441414514146141471414814149141501415114152141531415414155141561415714158141591416014161141621416314164141651416614167141681416914170141711417214173141741417514176141771417814179141801418114182141831418414185141861418714188141891419014191141921419314194141951419614197141981419914200142011420214203142041420514206142071420814209142101421114212142131421414215142161421714218142191422014221142221422314224142251422614227142281422914230142311423214233142341423514236142371423814239142401424114242142431424414245142461424714248142491425014251142521425314254142551425614257142581425914260142611426214263142641426514266142671426814269142701427114272142731427414275142761427714278142791428014281142821428314284142851428614287142881428914290142911429214293142941429514296142971429814299143001430114302143031430414305143061430714308143091431014311143121431314314143151431614317143181431914320143211432214323143241432514326143271432814329143301433114332143331433414335143361433714338143391434014341143421434314344143451434614347143481434914350143511435214353143541435514356143571435814359143601436114362143631436414365143661436714368143691437014371143721437314374143751437614377143781437914380143811438214383143841438514386143871438814389143901439114392143931439414395143961439714398143991440014401144021440314404144051440614407144081440914410144111441214413144141441514416144171441814419144201442114422144231442414425144261442714428144291443014431144321443314434144351443614437144381443914440144411444214443144441444514446144471444814449144501445114452144531445414455144561445714458144591446014461144621446314464144651446614467144681446914470144711447214473144741447514476144771447814479144801448114482144831448414485144861448714488144891449014491144921449314494144951449614497144981449914500145011450214503145041450514506145071450814509145101451114512145131451414515145161451714518145191452014521145221452314524145251452614527145281452914530145311453214533145341453514536145371453814539145401454114542145431454414545145461454714548145491455014551145521455314554145551455614557145581455914560145611456214563145641456514566145671456814569145701457114572145731457414575145761457714578145791458014581145821458314584145851458614587145881458914590145911459214593145941459514596145971459814599146001460114602146031460414605146061460714608146091461014611146121461314614146151461614617146181461914620146211462214623146241462514626146271462814629146301463114632146331463414635146361463714638146391464014641146421464314644146451464614647146481464914650146511465214653146541465514656146571465814659146601466114662146631466414665146661466714668146691467014671146721467314674146751467614677146781467914680146811468214683146841468514686146871468814689146901469114692146931469414695146961469714698146991470014701147021470314704147051470614707147081470914710147111471214713147141471514716147171471814719147201472114722147231472414725147261472714728147291473014731147321473314734147351473614737147381473914740147411474214743147441474514746147471474814749147501475114752147531475414755147561475714758147591476014761147621476314764147651476614767147681476914770147711477214773147741477514776147771477814779147801478114782147831478414785147861478714788147891479014791147921479314794147951479614797147981479914800148011480214803148041480514806148071480814809148101481114812148131481414815148161481714818148191482014821148221482314824148251482614827148281482914830148311483214833148341483514836148371483814839148401484114842148431484414845148461484714848148491485014851148521485314854148551485614857148581485914860148611486214863148641486514866148671486814869148701487114872148731487414875148761487714878148791488014881148821488314884148851488614887148881488914890148911489214893148941489514896148971489814899149001490114902149031490414905149061490714908149091491014911149121491314914149151491614917149181491914920149211492214923149241492514926149271492814929149301493114932149331493414935149361493714938149391494014941149421494314944149451494614947149481494914950149511495214953149541495514956149571495814959149601496114962149631496414965149661496714968149691497014971149721497314974149751497614977149781497914980149811498214983149841498514986149871498814989149901499114992149931499414995149961499714998149991500015001150021500315004150051500615007150081500915010150111501215013150141501515016150171501815019150201502115022150231502415025150261502715028150291503015031150321503315034150351503615037150381503915040150411504215043150441504515046150471504815049150501505115052150531505415055150561505715058150591506015061150621506315064150651506615067150681506915070150711507215073150741507515076150771507815079150801508115082150831508415085150861508715088150891509015091150921509315094150951509615097150981509915100151011510215103151041510515106151071510815109151101511115112151131511415115151161511715118151191512015121151221512315124151251512615127151281512915130151311513215133151341513515136151371513815139151401514115142151431514415145151461514715148151491515015151151521515315154151551515615157151581515915160151611516215163151641516515166151671516815169151701517115172151731517415175151761517715178151791518015181151821518315184151851518615187151881518915190151911519215193151941519515196151971519815199152001520115202152031520415205152061520715208152091521015211152121521315214152151521615217152181521915220152211522215223152241522515226152271522815229152301523115232152331523415235152361523715238152391524015241152421524315244152451524615247152481524915250152511525215253152541525515256152571525815259152601526115262152631526415265152661526715268152691527015271152721527315274152751527615277152781527915280152811528215283152841528515286152871528815289152901529115292152931529415295152961529715298152991530015301153021530315304153051530615307153081530915310153111531215313153141531515316153171531815319153201532115322153231532415325153261532715328153291533015331153321533315334153351533615337153381533915340153411534215343153441534515346153471534815349153501535115352153531535415355153561535715358153591536015361153621536315364153651536615367153681536915370153711537215373153741537515376153771537815379153801538115382153831538415385153861538715388153891539015391153921539315394153951539615397153981539915400154011540215403154041540515406154071540815409154101541115412154131541415415154161541715418154191542015421154221542315424154251542615427154281542915430154311543215433154341543515436154371543815439154401544115442154431544415445154461544715448154491545015451154521545315454154551545615457154581545915460154611546215463154641546515466154671546815469154701547115472154731547415475154761547715478154791548015481154821548315484154851548615487154881548915490154911549215493154941549515496154971549815499155001550115502155031550415505155061550715508155091551015511155121551315514155151551615517155181551915520155211552215523155241552515526155271552815529155301553115532155331553415535155361553715538155391554015541155421554315544155451554615547155481554915550155511555215553155541555515556155571555815559155601556115562155631556415565155661556715568155691557015571155721557315574155751557615577155781557915580155811558215583155841558515586155871558815589155901559115592155931559415595155961559715598155991560015601156021560315604156051560615607156081560915610156111561215613156141561515616156171561815619156201562115622156231562415625156261562715628156291563015631156321563315634156351563615637156381563915640156411564215643156441564515646156471564815649156501565115652156531565415655156561565715658156591566015661156621566315664156651566615667156681566915670156711567215673156741567515676156771567815679156801568115682156831568415685156861568715688156891569015691156921569315694156951569615697156981569915700157011570215703157041570515706157071570815709157101571115712157131571415715157161571715718157191572015721157221572315724157251572615727157281572915730157311573215733157341573515736157371573815739157401574115742157431574415745157461574715748157491575015751157521575315754157551575615757157581575915760157611576215763157641576515766157671576815769157701577115772157731577415775157761577715778157791578015781157821578315784157851578615787157881578915790157911579215793157941579515796157971579815799158001580115802158031580415805158061580715808158091581015811158121581315814158151581615817158181581915820158211582215823158241582515826158271582815829158301583115832158331583415835158361583715838158391584015841158421584315844158451584615847158481584915850158511585215853158541585515856158571585815859158601586115862158631586415865158661586715868158691587015871158721587315874158751587615877158781587915880158811588215883158841588515886158871588815889158901589115892158931589415895158961589715898158991590015901159021590315904159051590615907159081590915910159111591215913159141591515916159171591815919159201592115922159231592415925159261592715928159291593015931159321593315934159351593615937159381593915940159411594215943159441594515946159471594815949159501595115952159531595415955159561595715958159591596015961159621596315964159651596615967159681596915970159711597215973159741597515976159771597815979159801598115982159831598415985159861598715988159891599015991159921599315994159951599615997159981599916000160011600216003160041600516006160071600816009160101601116012160131601416015160161601716018160191602016021160221602316024160251602616027160281602916030160311603216033160341603516036160371603816039160401604116042160431604416045160461604716048160491605016051160521605316054160551605616057160581605916060160611606216063160641606516066160671606816069160701607116072160731607416075160761607716078160791608016081160821608316084160851608616087160881608916090160911609216093160941609516096160971609816099161001610116102161031610416105161061610716108161091611016111161121611316114161151611616117161181611916120161211612216123161241612516126161271612816129161301613116132161331613416135161361613716138161391614016141161421614316144161451614616147161481614916150161511615216153161541615516156161571615816159161601616116162161631616416165161661616716168161691617016171161721617316174161751617616177161781617916180161811618216183161841618516186161871618816189161901619116192161931619416195161961619716198161991620016201162021620316204162051620616207162081620916210162111621216213162141621516216162171621816219162201622116222162231622416225162261622716228162291623016231162321623316234162351623616237162381623916240162411624216243162441624516246162471624816249162501625116252162531625416255162561625716258162591626016261162621626316264162651626616267162681626916270162711627216273162741627516276162771627816279162801628116282162831628416285162861628716288162891629016291162921629316294162951629616297162981629916300163011630216303163041630516306163071630816309163101631116312163131631416315163161631716318163191632016321163221632316324163251632616327163281632916330163311633216333163341633516336163371633816339163401634116342163431634416345163461634716348163491635016351163521635316354163551635616357163581635916360163611636216363163641636516366163671636816369163701637116372163731637416375163761637716378163791638016381163821638316384163851638616387163881638916390163911639216393163941639516396163971639816399164001640116402164031640416405164061640716408164091641016411164121641316414164151641616417164181641916420164211642216423164241642516426164271642816429164301643116432164331643416435164361643716438164391644016441164421644316444164451644616447164481644916450164511645216453164541645516456164571645816459164601646116462164631646416465164661646716468164691647016471164721647316474164751647616477164781647916480164811648216483164841648516486164871648816489164901649116492164931649416495164961649716498164991650016501165021650316504165051650616507165081650916510165111651216513165141651516516165171651816519165201652116522165231652416525165261652716528165291653016531165321653316534165351653616537165381653916540165411654216543165441654516546165471654816549165501655116552165531655416555165561655716558165591656016561165621656316564165651656616567165681656916570165711657216573165741657516576165771657816579165801658116582165831658416585165861658716588165891659016591165921659316594165951659616597165981659916600166011660216603166041660516606166071660816609166101661116612166131661416615166161661716618166191662016621166221662316624166251662616627166281662916630166311663216633166341663516636166371663816639166401664116642166431664416645166461664716648166491665016651166521665316654166551665616657166581665916660166611666216663166641666516666166671666816669166701667116672166731667416675166761667716678166791668016681166821668316684166851668616687166881668916690166911669216693166941669516696166971669816699167001670116702167031670416705167061670716708167091671016711167121671316714167151671616717167181671916720167211672216723167241672516726167271672816729167301673116732167331673416735167361673716738167391674016741167421674316744167451674616747167481674916750167511675216753167541675516756167571675816759167601676116762167631676416765167661676716768167691677016771167721677316774167751677616777167781677916780167811678216783167841678516786167871678816789167901679116792167931679416795167961679716798167991680016801168021680316804168051680616807168081680916810168111681216813168141681516816168171681816819168201682116822168231682416825168261682716828168291683016831168321683316834168351683616837168381683916840168411684216843168441684516846168471684816849168501685116852168531685416855168561685716858168591686016861168621686316864168651686616867168681686916870168711687216873168741687516876168771687816879168801688116882168831688416885168861688716888168891689016891168921689316894168951689616897168981689916900169011690216903169041690516906169071690816909169101691116912169131691416915169161691716918169191692016921169221692316924169251692616927169281692916930169311693216933169341693516936169371693816939169401694116942169431694416945169461694716948169491695016951169521695316954169551695616957169581695916960169611696216963169641696516966169671696816969169701697116972169731697416975169761697716978169791698016981169821698316984169851698616987169881698916990169911699216993169941699516996169971699816999170001700117002170031700417005170061700717008170091701017011170121701317014170151701617017170181701917020170211702217023170241702517026170271702817029170301703117032170331703417035170361703717038170391704017041170421704317044170451704617047170481704917050170511705217053170541705517056170571705817059170601706117062170631706417065170661706717068170691707017071170721707317074170751707617077170781707917080170811708217083170841708517086170871708817089170901709117092170931709417095170961709717098170991710017101171021710317104171051710617107171081710917110171111711217113171141711517116171171711817119171201712117122171231712417125171261712717128171291713017131171321713317134171351713617137171381713917140171411714217143171441714517146171471714817149171501715117152171531715417155171561715717158171591716017161171621716317164171651716617167171681716917170171711717217173171741717517176171771717817179171801718117182171831718417185171861718717188171891719017191171921719317194171951719617197171981719917200172011720217203172041720517206172071720817209172101721117212172131721417215172161721717218172191722017221172221722317224172251722617227172281722917230172311723217233172341723517236172371723817239172401724117242172431724417245172461724717248172491725017251172521725317254172551725617257172581725917260172611726217263172641726517266172671726817269172701727117272172731727417275172761727717278172791728017281172821728317284172851728617287172881728917290172911729217293172941729517296172971729817299173001730117302173031730417305173061730717308173091731017311173121731317314173151731617317173181731917320173211732217323173241732517326173271732817329173301733117332173331733417335173361733717338173391734017341173421734317344173451734617347173481734917350173511735217353173541735517356173571735817359173601736117362173631736417365173661736717368173691737017371173721737317374173751737617377173781737917380173811738217383173841738517386173871738817389173901739117392173931739417395173961739717398173991740017401174021740317404174051740617407174081740917410174111741217413174141741517416174171741817419174201742117422174231742417425174261742717428174291743017431174321743317434174351743617437174381743917440174411744217443174441744517446174471744817449174501745117452174531745417455174561745717458174591746017461174621746317464174651746617467174681746917470174711747217473174741747517476174771747817479174801748117482174831748417485174861748717488174891749017491174921749317494174951749617497174981749917500175011750217503175041750517506175071750817509175101751117512175131751417515175161751717518175191752017521175221752317524175251752617527175281752917530175311753217533175341753517536175371753817539175401754117542175431754417545175461754717548175491755017551175521755317554175551755617557175581755917560175611756217563175641756517566175671756817569175701757117572175731757417575175761757717578175791758017581175821758317584175851758617587175881758917590175911759217593175941759517596175971759817599176001760117602176031760417605176061760717608176091761017611176121761317614176151761617617176181761917620176211762217623176241762517626176271762817629176301763117632176331763417635176361763717638176391764017641176421764317644176451764617647176481764917650176511765217653176541765517656176571765817659176601766117662176631766417665176661766717668176691767017671176721767317674176751767617677176781767917680176811768217683176841768517686176871768817689176901769117692176931769417695176961769717698176991770017701177021770317704177051770617707177081770917710177111771217713177141771517716177171771817719177201772117722177231772417725177261772717728177291773017731177321773317734177351773617737177381773917740177411774217743177441774517746177471774817749177501775117752177531775417755177561775717758177591776017761177621776317764177651776617767177681776917770177711777217773177741777517776177771777817779177801778117782177831778417785177861778717788177891779017791177921779317794177951779617797177981779917800178011780217803178041780517806178071780817809178101781117812178131781417815178161781717818178191782017821178221782317824178251782617827178281782917830178311783217833178341783517836178371783817839178401784117842178431784417845178461784717848178491785017851178521785317854178551785617857178581785917860178611786217863178641786517866178671786817869178701787117872178731787417875178761787717878178791788017881178821788317884178851788617887178881788917890178911789217893178941789517896178971789817899179001790117902179031790417905179061790717908179091791017911179121791317914179151791617917179181791917920179211792217923179241792517926179271792817929179301793117932179331793417935179361793717938179391794017941179421794317944179451794617947179481794917950179511795217953179541795517956179571795817959179601796117962179631796417965179661796717968179691797017971179721797317974179751797617977179781797917980179811798217983179841798517986179871798817989179901799117992179931799417995179961799717998179991800018001180021800318004180051800618007180081800918010180111801218013180141801518016180171801818019180201802118022180231802418025180261802718028180291803018031180321803318034180351803618037180381803918040180411804218043180441804518046180471804818049180501805118052180531805418055180561805718058180591806018061180621806318064180651806618067180681806918070180711807218073180741807518076180771807818079180801808118082180831808418085180861808718088180891809018091180921809318094180951809618097180981809918100181011810218103181041810518106181071810818109181101811118112181131811418115181161811718118181191812018121181221812318124181251812618127181281812918130181311813218133181341813518136181371813818139181401814118142181431814418145181461814718148181491815018151181521815318154181551815618157181581815918160181611816218163181641816518166181671816818169181701817118172181731817418175181761817718178181791818018181181821818318184181851818618187181881818918190181911819218193181941819518196181971819818199182001820118202182031820418205182061820718208182091821018211182121821318214182151821618217182181821918220182211822218223182241822518226182271822818229182301823118232182331823418235182361823718238182391824018241182421824318244182451824618247182481824918250182511825218253182541825518256182571825818259182601826118262182631826418265182661826718268182691827018271182721827318274182751827618277182781827918280182811828218283182841828518286182871828818289182901829118292182931829418295182961829718298182991830018301183021830318304183051830618307183081830918310183111831218313183141831518316183171831818319183201832118322183231832418325183261832718328183291833018331183321833318334183351833618337183381833918340183411834218343183441834518346183471834818349183501835118352183531835418355183561835718358183591836018361183621836318364183651836618367183681836918370183711837218373183741837518376183771837818379183801838118382183831838418385183861838718388183891839018391183921839318394183951839618397183981839918400184011840218403184041840518406184071840818409184101841118412184131841418415184161841718418184191842018421184221842318424184251842618427184281842918430184311843218433184341843518436184371843818439184401844118442184431844418445184461844718448184491845018451184521845318454184551845618457184581845918460184611846218463184641846518466184671846818469184701847118472184731847418475184761847718478184791848018481184821848318484184851848618487184881848918490184911849218493184941849518496184971849818499185001850118502185031850418505185061850718508185091851018511185121851318514185151851618517185181851918520185211852218523185241852518526185271852818529185301853118532185331853418535185361853718538185391854018541185421854318544185451854618547185481854918550185511855218553185541855518556185571855818559185601856118562185631856418565185661856718568185691857018571185721857318574185751857618577185781857918580185811858218583185841858518586185871858818589185901859118592185931859418595185961859718598185991860018601186021860318604186051860618607186081860918610186111861218613186141861518616186171861818619186201862118622186231862418625186261862718628186291863018631186321863318634186351863618637186381863918640186411864218643186441864518646186471864818649186501865118652186531865418655186561865718658186591866018661186621866318664186651866618667186681866918670186711867218673186741867518676186771867818679186801868118682186831868418685186861868718688186891869018691186921869318694186951869618697186981869918700187011870218703187041870518706187071870818709187101871118712187131871418715187161871718718187191872018721187221872318724187251872618727187281872918730187311873218733187341873518736187371873818739187401874118742187431874418745187461874718748187491875018751187521875318754187551875618757187581875918760187611876218763187641876518766187671876818769187701877118772187731877418775187761877718778187791878018781187821878318784187851878618787187881878918790187911879218793187941879518796187971879818799188001880118802188031880418805188061880718808188091881018811188121881318814188151881618817188181881918820188211882218823188241882518826188271882818829188301883118832188331883418835188361883718838188391884018841188421884318844188451884618847188481884918850188511885218853188541885518856188571885818859188601886118862188631886418865188661886718868188691887018871188721887318874188751887618877188781887918880188811888218883188841888518886188871888818889188901889118892188931889418895188961889718898188991890018901189021890318904189051890618907189081890918910189111891218913189141891518916189171891818919189201892118922189231892418925189261892718928189291893018931189321893318934189351893618937189381893918940189411894218943189441894518946189471894818949189501895118952189531895418955189561895718958189591896018961189621896318964189651896618967189681896918970189711897218973189741897518976189771897818979189801898118982189831898418985189861898718988189891899018991189921899318994189951899618997189981899919000190011900219003190041900519006190071900819009190101901119012190131901419015190161901719018190191902019021190221902319024190251902619027190281902919030190311903219033190341903519036190371903819039190401904119042190431904419045190461904719048190491905019051190521905319054190551905619057190581905919060190611906219063190641906519066190671906819069190701907119072190731907419075190761907719078190791908019081190821908319084190851908619087190881908919090190911909219093190941909519096190971909819099191001910119102191031910419105191061910719108191091911019111191121911319114191151911619117191181911919120191211912219123191241912519126191271912819129191301913119132191331913419135191361913719138191391914019141191421914319144191451914619147191481914919150191511915219153191541915519156191571915819159191601916119162191631916419165191661916719168191691917019171191721917319174191751917619177191781917919180191811918219183191841918519186191871918819189191901919119192191931919419195191961919719198191991920019201192021920319204192051920619207192081920919210192111921219213192141921519216192171921819219192201922119222192231922419225192261922719228192291923019231192321923319234192351923619237192381923919240192411924219243192441924519246192471924819249192501925119252192531925419255192561925719258192591926019261192621926319264192651926619267192681926919270192711927219273192741927519276192771927819279192801928119282192831928419285192861928719288192891929019291192921929319294192951929619297192981929919300193011930219303193041930519306193071930819309193101931119312193131931419315193161931719318193191932019321193221932319324193251932619327193281932919330193311933219333193341933519336193371933819339193401934119342193431934419345193461934719348193491935019351193521935319354193551935619357193581935919360193611936219363193641936519366193671936819369193701937119372193731937419375193761937719378193791938019381193821938319384193851938619387193881938919390193911939219393193941939519396193971939819399194001940119402194031940419405194061940719408194091941019411194121941319414194151941619417194181941919420194211942219423194241942519426194271942819429194301943119432194331943419435194361943719438194391944019441194421944319444194451944619447194481944919450194511945219453194541945519456194571945819459194601946119462194631946419465194661946719468194691947019471194721947319474194751947619477194781947919480194811948219483194841948519486194871948819489194901949119492194931949419495194961949719498194991950019501195021950319504195051950619507195081950919510195111951219513195141951519516195171951819519195201952119522195231952419525195261952719528195291953019531195321953319534195351953619537195381953919540195411954219543195441954519546195471954819549195501955119552195531955419555195561955719558195591956019561195621956319564195651956619567195681956919570195711957219573195741957519576195771957819579195801958119582195831958419585195861958719588195891959019591195921959319594195951959619597195981959919600196011960219603196041960519606196071960819609196101961119612196131961419615196161961719618196191962019621196221962319624196251962619627196281962919630196311963219633196341963519636196371963819639196401964119642196431964419645196461964719648196491965019651196521965319654196551965619657196581965919660196611966219663196641966519666196671966819669196701967119672196731967419675196761967719678196791968019681196821968319684196851968619687196881968919690196911969219693196941969519696196971969819699197001970119702197031970419705197061970719708197091971019711197121971319714197151971619717197181971919720197211972219723197241972519726197271972819729197301973119732197331973419735197361973719738197391974019741197421974319744197451974619747197481974919750197511975219753197541975519756197571975819759197601976119762197631976419765197661976719768197691977019771197721977319774197751977619777197781977919780197811978219783197841978519786197871978819789197901979119792197931979419795197961979719798197991980019801198021980319804198051980619807198081980919810198111981219813198141981519816198171981819819198201982119822198231982419825198261982719828198291983019831198321983319834198351983619837198381983919840198411984219843198441984519846198471984819849198501985119852198531985419855198561985719858198591986019861198621986319864198651986619867198681986919870198711987219873198741987519876198771987819879198801988119882198831988419885198861988719888198891989019891198921989319894198951989619897198981989919900199011990219903199041990519906199071990819909199101991119912199131991419915199161991719918199191992019921199221992319924199251992619927199281992919930199311993219933199341993519936199371993819939199401994119942199431994419945199461994719948199491995019951199521995319954199551995619957199581995919960199611996219963199641996519966199671996819969199701997119972199731997419975199761997719978199791998019981199821998319984199851998619987199881998919990199911999219993199941999519996199971999819999200002000120002200032000420005200062000720008200092001020011200122001320014200152001620017200182001920020200212002220023200242002520026200272002820029200302003120032200332003420035200362003720038200392004020041200422004320044200452004620047200482004920050200512005220053200542005520056200572005820059200602006120062200632006420065200662006720068200692007020071200722007320074200752007620077200782007920080200812008220083200842008520086200872008820089200902009120092200932009420095200962009720098200992010020101201022010320104201052010620107201082010920110201112011220113201142011520116201172011820119201202012120122201232012420125201262012720128201292013020131201322013320134201352013620137201382013920140201412014220143201442014520146201472014820149201502015120152201532015420155201562015720158201592016020161201622016320164201652016620167201682016920170201712017220173201742017520176201772017820179201802018120182201832018420185201862018720188201892019020191201922019320194201952019620197201982019920200202012020220203202042020520206202072020820209202102021120212202132021420215202162021720218202192022020221202222022320224202252022620227202282022920230202312023220233202342023520236202372023820239202402024120242202432024420245202462024720248202492025020251202522025320254202552025620257202582025920260202612026220263202642026520266202672026820269202702027120272202732027420275202762027720278202792028020281202822028320284202852028620287202882028920290202912029220293202942029520296202972029820299203002030120302203032030420305203062030720308203092031020311203122031320314203152031620317203182031920320203212032220323203242032520326203272032820329203302033120332203332033420335203362033720338203392034020341203422034320344203452034620347203482034920350203512035220353203542035520356203572035820359203602036120362203632036420365203662036720368203692037020371203722037320374203752037620377203782037920380203812038220383203842038520386203872038820389203902039120392203932039420395203962039720398203992040020401204022040320404204052040620407204082040920410204112041220413204142041520416204172041820419204202042120422204232042420425204262042720428204292043020431204322043320434204352043620437204382043920440204412044220443204442044520446204472044820449204502045120452204532045420455204562045720458204592046020461204622046320464204652046620467204682046920470204712047220473204742047520476204772047820479204802048120482204832048420485204862048720488204892049020491204922049320494204952049620497204982049920500205012050220503205042050520506205072050820509205102051120512205132051420515205162051720518205192052020521205222052320524205252052620527205282052920530205312053220533205342053520536205372053820539205402054120542205432054420545205462054720548205492055020551205522055320554205552055620557205582055920560205612056220563205642056520566205672056820569205702057120572205732057420575205762057720578205792058020581205822058320584205852058620587205882058920590205912059220593205942059520596205972059820599206002060120602206032060420605206062060720608206092061020611206122061320614206152061620617206182061920620206212062220623206242062520626206272062820629206302063120632206332063420635206362063720638206392064020641206422064320644206452064620647206482064920650206512065220653206542065520656206572065820659206602066120662206632066420665206662066720668206692067020671206722067320674206752067620677206782067920680206812068220683206842068520686206872068820689206902069120692206932069420695206962069720698206992070020701207022070320704207052070620707207082070920710207112071220713207142071520716207172071820719207202072120722207232072420725207262072720728207292073020731207322073320734207352073620737207382073920740207412074220743207442074520746207472074820749207502075120752207532075420755207562075720758207592076020761207622076320764207652076620767207682076920770207712077220773207742077520776207772077820779207802078120782207832078420785207862078720788207892079020791207922079320794207952079620797207982079920800208012080220803208042080520806208072080820809208102081120812208132081420815208162081720818208192082020821208222082320824208252082620827208282082920830208312083220833208342083520836208372083820839208402084120842208432084420845208462084720848208492085020851208522085320854208552085620857208582085920860208612086220863208642086520866208672086820869208702087120872208732087420875208762087720878208792088020881208822088320884208852088620887208882088920890208912089220893208942089520896208972089820899209002090120902209032090420905209062090720908209092091020911209122091320914209152091620917209182091920920209212092220923209242092520926209272092820929209302093120932209332093420935209362093720938209392094020941209422094320944209452094620947209482094920950209512095220953209542095520956209572095820959209602096120962209632096420965209662096720968209692097020971209722097320974209752097620977209782097920980209812098220983209842098520986209872098820989209902099120992209932099420995209962099720998209992100021001210022100321004210052100621007210082100921010210112101221013210142101521016210172101821019210202102121022210232102421025210262102721028210292103021031210322103321034210352103621037210382103921040210412104221043210442104521046210472104821049210502105121052210532105421055210562105721058210592106021061210622106321064210652106621067210682106921070210712107221073210742107521076210772107821079210802108121082210832108421085210862108721088210892109021091210922109321094210952109621097210982109921100211012110221103211042110521106211072110821109211102111121112211132111421115211162111721118211192112021121211222112321124211252112621127211282112921130211312113221133211342113521136211372113821139211402114121142211432114421145211462114721148211492115021151211522115321154211552115621157211582115921160211612116221163211642116521166211672116821169211702117121172211732117421175211762117721178211792118021181211822118321184211852118621187211882118921190211912119221193211942119521196211972119821199212002120121202212032120421205212062120721208212092121021211212122121321214212152121621217212182121921220212212122221223212242122521226212272122821229212302123121232212332123421235212362123721238212392124021241212422124321244212452124621247212482124921250212512125221253212542125521256212572125821259212602126121262212632126421265212662126721268212692127021271212722127321274212752127621277212782127921280212812128221283212842128521286212872128821289212902129121292212932129421295212962129721298212992130021301213022130321304213052130621307213082130921310213112131221313213142131521316213172131821319213202132121322213232132421325213262132721328213292133021331213322133321334213352133621337213382133921340213412134221343213442134521346213472134821349213502135121352213532135421355213562135721358213592136021361213622136321364213652136621367213682136921370213712137221373213742137521376213772137821379213802138121382213832138421385213862138721388213892139021391213922139321394213952139621397213982139921400214012140221403214042140521406214072140821409214102141121412214132141421415214162141721418214192142021421214222142321424214252142621427214282142921430214312143221433214342143521436214372143821439214402144121442214432144421445214462144721448214492145021451214522145321454214552145621457214582145921460214612146221463214642146521466214672146821469214702147121472214732147421475214762147721478214792148021481214822148321484214852148621487214882148921490214912149221493214942149521496214972149821499215002150121502215032150421505215062150721508215092151021511215122151321514215152151621517215182151921520215212152221523215242152521526215272152821529215302153121532215332153421535215362153721538215392154021541215422154321544215452154621547215482154921550215512155221553215542155521556215572155821559215602156121562215632156421565215662156721568215692157021571215722157321574215752157621577215782157921580215812158221583215842158521586215872158821589215902159121592215932159421595215962159721598215992160021601216022160321604216052160621607216082160921610216112161221613216142161521616216172161821619216202162121622216232162421625216262162721628216292163021631216322163321634216352163621637216382163921640216412164221643216442164521646216472164821649216502165121652216532165421655216562165721658216592166021661216622166321664216652166621667216682166921670216712167221673216742167521676216772167821679216802168121682216832168421685216862168721688216892169021691216922169321694216952169621697216982169921700217012170221703217042170521706217072170821709217102171121712217132171421715217162171721718217192172021721217222172321724217252172621727217282172921730217312173221733217342173521736217372173821739217402174121742217432174421745217462174721748217492175021751217522175321754217552175621757217582175921760217612176221763217642176521766217672176821769217702177121772217732177421775217762177721778217792178021781217822178321784217852178621787217882178921790217912179221793217942179521796217972179821799218002180121802218032180421805218062180721808218092181021811218122181321814218152181621817218182181921820218212182221823218242182521826218272182821829218302183121832218332183421835218362183721838218392184021841218422184321844218452184621847218482184921850218512185221853218542185521856218572185821859218602186121862218632186421865218662186721868218692187021871218722187321874218752187621877218782187921880218812188221883218842188521886218872188821889218902189121892218932189421895218962189721898218992190021901219022190321904219052190621907219082190921910219112191221913219142191521916219172191821919219202192121922219232192421925219262192721928219292193021931219322193321934219352193621937219382193921940219412194221943219442194521946219472194821949219502195121952219532195421955219562195721958219592196021961219622196321964219652196621967219682196921970219712197221973219742197521976219772197821979219802198121982219832198421985219862198721988219892199021991219922199321994219952199621997219982199922000220012200222003220042200522006220072200822009220102201122012220132201422015220162201722018220192202022021220222202322024220252202622027220282202922030220312203222033220342203522036220372203822039220402204122042220432204422045220462204722048220492205022051220522205322054220552205622057220582205922060220612206222063220642206522066220672206822069220702207122072220732207422075220762207722078220792208022081220822208322084220852208622087220882208922090220912209222093220942209522096220972209822099221002210122102221032210422105221062210722108221092211022111221122211322114221152211622117221182211922120221212212222123221242212522126221272212822129221302213122132221332213422135221362213722138221392214022141221422214322144221452214622147221482214922150221512215222153221542215522156221572215822159221602216122162221632216422165221662216722168221692217022171221722217322174221752217622177221782217922180221812218222183221842218522186221872218822189221902219122192221932219422195221962219722198221992220022201222022220322204222052220622207222082220922210222112221222213222142221522216222172221822219222202222122222222232222422225222262222722228222292223022231222322223322234222352223622237222382223922240222412224222243222442224522246222472224822249222502225122252222532225422255222562225722258222592226022261222622226322264222652226622267222682226922270222712227222273222742227522276222772227822279222802228122282222832228422285222862228722288222892229022291222922229322294222952229622297222982229922300223012230222303223042230522306223072230822309223102231122312223132231422315223162231722318223192232022321223222232322324223252232622327223282232922330223312233222333223342233522336223372233822339223402234122342223432234422345223462234722348223492235022351223522235322354223552235622357223582235922360223612236222363223642236522366223672236822369223702237122372223732237422375223762237722378223792238022381223822238322384223852238622387223882238922390223912239222393223942239522396223972239822399224002240122402224032240422405224062240722408224092241022411224122241322414224152241622417224182241922420224212242222423224242242522426224272242822429224302243122432224332243422435224362243722438224392244022441224422244322444224452244622447224482244922450224512245222453224542245522456224572245822459224602246122462224632246422465224662246722468224692247022471224722247322474224752247622477224782247922480224812248222483224842248522486224872248822489224902249122492224932249422495224962249722498224992250022501225022250322504225052250622507225082250922510225112251222513225142251522516225172251822519225202252122522225232252422525225262252722528225292253022531225322253322534225352253622537225382253922540225412254222543225442254522546225472254822549225502255122552225532255422555225562255722558225592256022561225622256322564225652256622567225682256922570225712257222573225742257522576225772257822579225802258122582225832258422585225862258722588225892259022591225922259322594225952259622597225982259922600226012260222603226042260522606226072260822609226102261122612226132261422615226162261722618226192262022621226222262322624226252262622627226282262922630226312263222633226342263522636226372263822639226402264122642226432264422645226462264722648226492265022651226522265322654226552265622657
  1. /* sha256_asm
  2. *
  3. * Copyright (C) 2006-2022 wolfSSL Inc.
  4. *
  5. * This file is part of wolfSSL.
  6. *
  7. * wolfSSL is free software; you can redistribute it and/or modify
  8. * it under the terms of the GNU General Public License as published by
  9. * the Free Software Foundation; either version 2 of the License, or
  10. * (at your option) any later version.
  11. *
  12. * wolfSSL is distributed in the hope that it will be useful,
  13. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  15. * GNU General Public License for more details.
  16. *
  17. * You should have received a copy of the GNU General Public License
  18. * along with this program; if not, write to the Free Software
  19. * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
  20. */
  21. #ifndef HAVE_INTEL_AVX1
  22. #define HAVE_INTEL_AVX1
  23. #endif /* HAVE_INTEL_AVX1 */
  24. #ifndef NO_AVX2_SUPPORT
  25. #define HAVE_INTEL_AVX2
  26. #endif /* NO_AVX2_SUPPORT */
  27. #ifdef HAVE_INTEL_AVX1
  28. #ifndef __APPLE__
  29. .data
  30. #else
  31. .section __DATA,__data
  32. #endif /* __APPLE__ */
  33. L_avx1_sha256_k:
  34. .long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
  35. .long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
  36. .long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
  37. .long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
  38. .long 0xe49b69c1,0xefbe4786,0xfc19dc6,0x240ca1cc
  39. .long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
  40. .long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
  41. .long 0xc6e00bf3,0xd5a79147,0x6ca6351,0x14292967
  42. .long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
  43. .long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
  44. .long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
  45. .long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
  46. .long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
  47. .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
  48. .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
  49. .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
  50. #ifndef __APPLE__
  51. .data
  52. #else
  53. .section __DATA,__data
  54. #endif /* __APPLE__ */
  55. #ifndef __APPLE__
  56. .align 16
  57. #else
  58. .p2align 4
  59. #endif /* __APPLE__ */
  60. L_avx1_sha256_shuf_00BA:
  61. .quad 0xb0a090803020100, 0xffffffffffffffff
  62. #ifndef __APPLE__
  63. .data
  64. #else
  65. .section __DATA,__data
  66. #endif /* __APPLE__ */
  67. #ifndef __APPLE__
  68. .align 16
  69. #else
  70. .p2align 4
  71. #endif /* __APPLE__ */
  72. L_avx1_sha256_shuf_DC00:
  73. .quad 0xffffffffffffffff, 0xb0a090803020100
  74. #ifndef __APPLE__
  75. .data
  76. #else
  77. .section __DATA,__data
  78. #endif /* __APPLE__ */
  79. #ifndef __APPLE__
  80. .align 16
  81. #else
  82. .p2align 4
  83. #endif /* __APPLE__ */
  84. L_avx1_sha256_flip_mask:
  85. .quad 0x405060700010203, 0xc0d0e0f08090a0b
  86. #ifndef __APPLE__
  87. .text
  88. .globl Transform_Sha256_AVX1
  89. .type Transform_Sha256_AVX1,@function
  90. .align 16
  91. Transform_Sha256_AVX1:
  92. #else
  93. .section __TEXT,__text
  94. .globl _Transform_Sha256_AVX1
  95. .p2align 4
  96. _Transform_Sha256_AVX1:
  97. #endif /* __APPLE__ */
  98. pushq %rbx
  99. pushq %r12
  100. pushq %r13
  101. pushq %r14
  102. pushq %r15
  103. subq $0x40, %rsp
  104. leaq 32(%rdi), %rax
  105. vmovdqa L_avx1_sha256_flip_mask(%rip), %xmm13
  106. vmovdqa L_avx1_sha256_shuf_00BA(%rip), %xmm11
  107. vmovdqa L_avx1_sha256_shuf_DC00(%rip), %xmm12
  108. movl (%rdi), %r8d
  109. movl 4(%rdi), %r9d
  110. movl 8(%rdi), %r10d
  111. movl 12(%rdi), %r11d
  112. movl 16(%rdi), %r12d
  113. movl 20(%rdi), %r13d
  114. movl 24(%rdi), %r14d
  115. movl 28(%rdi), %r15d
  116. # X0, X1, X2, X3 = W[0..15]
  117. vmovdqu (%rax), %xmm0
  118. vmovdqu 16(%rax), %xmm1
  119. vpshufb %xmm13, %xmm0, %xmm0
  120. vpshufb %xmm13, %xmm1, %xmm1
  121. vmovdqu 32(%rax), %xmm2
  122. vmovdqu 48(%rax), %xmm3
  123. vpshufb %xmm13, %xmm2, %xmm2
  124. vpshufb %xmm13, %xmm3, %xmm3
  125. movl %r9d, %ebx
  126. movl %r12d, %edx
  127. xorl %r10d, %ebx
  128. # set_w_k_xfer_4: 0
  129. vpaddd 0+L_avx1_sha256_k(%rip), %xmm0, %xmm4
  130. vpaddd 16+L_avx1_sha256_k(%rip), %xmm1, %xmm5
  131. vmovdqu %xmm4, (%rsp)
  132. vmovdqu %xmm5, 16(%rsp)
  133. vpaddd 32+L_avx1_sha256_k(%rip), %xmm2, %xmm6
  134. vpaddd 48+L_avx1_sha256_k(%rip), %xmm3, %xmm7
  135. vmovdqu %xmm6, 32(%rsp)
  136. vmovdqu %xmm7, 48(%rsp)
  137. # msg_sched: 0-3
  138. # rnd_0: 0 - 0
  139. rorl $14, %edx
  140. vpalignr $4, %xmm0, %xmm1, %xmm5
  141. vpalignr $4, %xmm2, %xmm3, %xmm4
  142. # rnd_0: 1 - 2
  143. movl %r9d, %eax
  144. movl %r13d, %ecx
  145. addl (%rsp), %r15d
  146. xorl %r14d, %ecx
  147. xorl %r12d, %edx
  148. andl %r12d, %ecx
  149. vpsrld $7, %xmm5, %xmm6
  150. vpslld $25, %xmm5, %xmm7
  151. # rnd_0: 3 - 4
  152. rorl $5, %edx
  153. xorl %r14d, %ecx
  154. xorl %r12d, %edx
  155. addl %ecx, %r15d
  156. rorl $6, %edx
  157. xorl %r8d, %eax
  158. addl %edx, %r15d
  159. movl %r8d, %ecx
  160. vpsrld $18, %xmm5, %xmm8
  161. vpslld $14, %xmm5, %xmm9
  162. # rnd_0: 5 - 6
  163. andl %eax, %ebx
  164. rorl $9, %ecx
  165. xorl %r8d, %ecx
  166. xorl %r9d, %ebx
  167. rorl $11, %ecx
  168. addl %r15d, %r11d
  169. xorl %r8d, %ecx
  170. addl %ebx, %r15d
  171. vpor %xmm6, %xmm7, %xmm6
  172. vpor %xmm8, %xmm9, %xmm8
  173. # rnd_0: 7 - 7
  174. rorl $2, %ecx
  175. movl %r11d, %edx
  176. addl %ecx, %r15d
  177. # rnd_1: 0 - 1
  178. rorl $14, %edx
  179. movl %r8d, %ebx
  180. movl %r12d, %ecx
  181. addl 4(%rsp), %r14d
  182. xorl %r13d, %ecx
  183. vpsrld $3, %xmm5, %xmm9
  184. vpxor %xmm6, %xmm8, %xmm6
  185. # rnd_1: 2 - 3
  186. xorl %r11d, %edx
  187. andl %r11d, %ecx
  188. rorl $5, %edx
  189. xorl %r13d, %ecx
  190. xorl %r11d, %edx
  191. addl %ecx, %r14d
  192. vpxor %xmm6, %xmm9, %xmm5
  193. vpshufd $0xfa, %xmm3, %xmm6
  194. # rnd_1: 4 - 5
  195. rorl $6, %edx
  196. xorl %r15d, %ebx
  197. addl %edx, %r14d
  198. movl %r15d, %ecx
  199. andl %ebx, %eax
  200. rorl $9, %ecx
  201. xorl %r15d, %ecx
  202. xorl %r8d, %eax
  203. vpsrld $10, %xmm6, %xmm8
  204. vpsrlq $19, %xmm6, %xmm7
  205. # rnd_1: 6 - 7
  206. rorl $11, %ecx
  207. addl %r14d, %r10d
  208. xorl %r15d, %ecx
  209. addl %eax, %r14d
  210. rorl $2, %ecx
  211. movl %r10d, %edx
  212. addl %ecx, %r14d
  213. # rnd_0: 0 - 0
  214. rorl $14, %edx
  215. vpsrlq $0x11, %xmm6, %xmm6
  216. vpaddd %xmm0, %xmm4, %xmm4
  217. # rnd_0: 1 - 3
  218. movl %r15d, %eax
  219. movl %r11d, %ecx
  220. addl 8(%rsp), %r13d
  221. xorl %r12d, %ecx
  222. xorl %r10d, %edx
  223. andl %r10d, %ecx
  224. rorl $5, %edx
  225. xorl %r12d, %ecx
  226. xorl %r10d, %edx
  227. addl %ecx, %r13d
  228. vpxor %xmm6, %xmm7, %xmm6
  229. vpaddd %xmm5, %xmm4, %xmm4
  230. # rnd_0: 4 - 4
  231. rorl $6, %edx
  232. xorl %r14d, %eax
  233. addl %edx, %r13d
  234. movl %r14d, %ecx
  235. vpxor %xmm6, %xmm8, %xmm8
  236. # rnd_0: 5 - 5
  237. andl %eax, %ebx
  238. rorl $9, %ecx
  239. xorl %r14d, %ecx
  240. xorl %r15d, %ebx
  241. vpshufb %xmm11, %xmm8, %xmm8
  242. # rnd_0: 6 - 6
  243. rorl $11, %ecx
  244. addl %r13d, %r9d
  245. xorl %r14d, %ecx
  246. addl %ebx, %r13d
  247. vpaddd %xmm8, %xmm4, %xmm4
  248. # rnd_0: 7 - 7
  249. rorl $2, %ecx
  250. movl %r9d, %edx
  251. addl %ecx, %r13d
  252. # rnd_1: 0 - 0
  253. rorl $14, %edx
  254. vpshufd $0x50, %xmm4, %xmm6
  255. # rnd_1: 1 - 1
  256. movl %r14d, %ebx
  257. movl %r10d, %ecx
  258. addl 12(%rsp), %r12d
  259. xorl %r11d, %ecx
  260. vpsrlq $0x11, %xmm6, %xmm8
  261. vpsrlq $19, %xmm6, %xmm7
  262. # rnd_1: 2 - 3
  263. xorl %r9d, %edx
  264. andl %r9d, %ecx
  265. rorl $5, %edx
  266. xorl %r11d, %ecx
  267. xorl %r9d, %edx
  268. addl %ecx, %r12d
  269. vpsrld $10, %xmm6, %xmm9
  270. vpxor %xmm8, %xmm7, %xmm8
  271. # rnd_1: 4 - 5
  272. rorl $6, %edx
  273. xorl %r13d, %ebx
  274. addl %edx, %r12d
  275. movl %r13d, %ecx
  276. andl %ebx, %eax
  277. rorl $9, %ecx
  278. xorl %r13d, %ecx
  279. xorl %r14d, %eax
  280. vpxor %xmm9, %xmm8, %xmm9
  281. # rnd_1: 6 - 6
  282. rorl $11, %ecx
  283. addl %r12d, %r8d
  284. xorl %r13d, %ecx
  285. addl %eax, %r12d
  286. vpshufb %xmm12, %xmm9, %xmm9
  287. # rnd_1: 7 - 7
  288. rorl $2, %ecx
  289. movl %r8d, %edx
  290. addl %ecx, %r12d
  291. vpaddd %xmm4, %xmm9, %xmm0
  292. # msg_sched done: 0-3
  293. # msg_sched: 4-7
  294. # rnd_0: 0 - 0
  295. rorl $14, %edx
  296. vpalignr $4, %xmm1, %xmm2, %xmm5
  297. vpalignr $4, %xmm3, %xmm0, %xmm4
  298. # rnd_0: 1 - 2
  299. movl %r13d, %eax
  300. movl %r9d, %ecx
  301. addl 16(%rsp), %r11d
  302. xorl %r10d, %ecx
  303. xorl %r8d, %edx
  304. andl %r8d, %ecx
  305. vpsrld $7, %xmm5, %xmm6
  306. vpslld $25, %xmm5, %xmm7
  307. # rnd_0: 3 - 4
  308. rorl $5, %edx
  309. xorl %r10d, %ecx
  310. xorl %r8d, %edx
  311. addl %ecx, %r11d
  312. rorl $6, %edx
  313. xorl %r12d, %eax
  314. addl %edx, %r11d
  315. movl %r12d, %ecx
  316. vpsrld $18, %xmm5, %xmm8
  317. vpslld $14, %xmm5, %xmm9
  318. # rnd_0: 5 - 6
  319. andl %eax, %ebx
  320. rorl $9, %ecx
  321. xorl %r12d, %ecx
  322. xorl %r13d, %ebx
  323. rorl $11, %ecx
  324. addl %r11d, %r15d
  325. xorl %r12d, %ecx
  326. addl %ebx, %r11d
  327. vpor %xmm6, %xmm7, %xmm6
  328. vpor %xmm8, %xmm9, %xmm8
  329. # rnd_0: 7 - 7
  330. rorl $2, %ecx
  331. movl %r15d, %edx
  332. addl %ecx, %r11d
  333. # rnd_1: 0 - 1
  334. rorl $14, %edx
  335. movl %r12d, %ebx
  336. movl %r8d, %ecx
  337. addl 20(%rsp), %r10d
  338. xorl %r9d, %ecx
  339. vpsrld $3, %xmm5, %xmm9
  340. vpxor %xmm6, %xmm8, %xmm6
  341. # rnd_1: 2 - 3
  342. xorl %r15d, %edx
  343. andl %r15d, %ecx
  344. rorl $5, %edx
  345. xorl %r9d, %ecx
  346. xorl %r15d, %edx
  347. addl %ecx, %r10d
  348. vpxor %xmm6, %xmm9, %xmm5
  349. vpshufd $0xfa, %xmm0, %xmm6
  350. # rnd_1: 4 - 5
  351. rorl $6, %edx
  352. xorl %r11d, %ebx
  353. addl %edx, %r10d
  354. movl %r11d, %ecx
  355. andl %ebx, %eax
  356. rorl $9, %ecx
  357. xorl %r11d, %ecx
  358. xorl %r12d, %eax
  359. vpsrld $10, %xmm6, %xmm8
  360. vpsrlq $19, %xmm6, %xmm7
  361. # rnd_1: 6 - 7
  362. rorl $11, %ecx
  363. addl %r10d, %r14d
  364. xorl %r11d, %ecx
  365. addl %eax, %r10d
  366. rorl $2, %ecx
  367. movl %r14d, %edx
  368. addl %ecx, %r10d
  369. # rnd_0: 0 - 0
  370. rorl $14, %edx
  371. vpsrlq $0x11, %xmm6, %xmm6
  372. vpaddd %xmm1, %xmm4, %xmm4
  373. # rnd_0: 1 - 3
  374. movl %r11d, %eax
  375. movl %r15d, %ecx
  376. addl 24(%rsp), %r9d
  377. xorl %r8d, %ecx
  378. xorl %r14d, %edx
  379. andl %r14d, %ecx
  380. rorl $5, %edx
  381. xorl %r8d, %ecx
  382. xorl %r14d, %edx
  383. addl %ecx, %r9d
  384. vpxor %xmm6, %xmm7, %xmm6
  385. vpaddd %xmm5, %xmm4, %xmm4
  386. # rnd_0: 4 - 4
  387. rorl $6, %edx
  388. xorl %r10d, %eax
  389. addl %edx, %r9d
  390. movl %r10d, %ecx
  391. vpxor %xmm6, %xmm8, %xmm8
  392. # rnd_0: 5 - 5
  393. andl %eax, %ebx
  394. rorl $9, %ecx
  395. xorl %r10d, %ecx
  396. xorl %r11d, %ebx
  397. vpshufb %xmm11, %xmm8, %xmm8
  398. # rnd_0: 6 - 6
  399. rorl $11, %ecx
  400. addl %r9d, %r13d
  401. xorl %r10d, %ecx
  402. addl %ebx, %r9d
  403. vpaddd %xmm8, %xmm4, %xmm4
  404. # rnd_0: 7 - 7
  405. rorl $2, %ecx
  406. movl %r13d, %edx
  407. addl %ecx, %r9d
  408. # rnd_1: 0 - 0
  409. rorl $14, %edx
  410. vpshufd $0x50, %xmm4, %xmm6
  411. # rnd_1: 1 - 1
  412. movl %r10d, %ebx
  413. movl %r14d, %ecx
  414. addl 28(%rsp), %r8d
  415. xorl %r15d, %ecx
  416. vpsrlq $0x11, %xmm6, %xmm8
  417. vpsrlq $19, %xmm6, %xmm7
  418. # rnd_1: 2 - 3
  419. xorl %r13d, %edx
  420. andl %r13d, %ecx
  421. rorl $5, %edx
  422. xorl %r15d, %ecx
  423. xorl %r13d, %edx
  424. addl %ecx, %r8d
  425. vpsrld $10, %xmm6, %xmm9
  426. vpxor %xmm8, %xmm7, %xmm8
  427. # rnd_1: 4 - 5
  428. rorl $6, %edx
  429. xorl %r9d, %ebx
  430. addl %edx, %r8d
  431. movl %r9d, %ecx
  432. andl %ebx, %eax
  433. rorl $9, %ecx
  434. xorl %r9d, %ecx
  435. xorl %r10d, %eax
  436. vpxor %xmm9, %xmm8, %xmm9
  437. # rnd_1: 6 - 6
  438. rorl $11, %ecx
  439. addl %r8d, %r12d
  440. xorl %r9d, %ecx
  441. addl %eax, %r8d
  442. vpshufb %xmm12, %xmm9, %xmm9
  443. # rnd_1: 7 - 7
  444. rorl $2, %ecx
  445. movl %r12d, %edx
  446. addl %ecx, %r8d
  447. vpaddd %xmm4, %xmm9, %xmm1
  448. # msg_sched done: 4-7
  449. # msg_sched: 8-11
  450. # rnd_0: 0 - 0
  451. rorl $14, %edx
  452. vpalignr $4, %xmm2, %xmm3, %xmm5
  453. vpalignr $4, %xmm0, %xmm1, %xmm4
  454. # rnd_0: 1 - 2
  455. movl %r9d, %eax
  456. movl %r13d, %ecx
  457. addl 32(%rsp), %r15d
  458. xorl %r14d, %ecx
  459. xorl %r12d, %edx
  460. andl %r12d, %ecx
  461. vpsrld $7, %xmm5, %xmm6
  462. vpslld $25, %xmm5, %xmm7
  463. # rnd_0: 3 - 4
  464. rorl $5, %edx
  465. xorl %r14d, %ecx
  466. xorl %r12d, %edx
  467. addl %ecx, %r15d
  468. rorl $6, %edx
  469. xorl %r8d, %eax
  470. addl %edx, %r15d
  471. movl %r8d, %ecx
  472. vpsrld $18, %xmm5, %xmm8
  473. vpslld $14, %xmm5, %xmm9
  474. # rnd_0: 5 - 6
  475. andl %eax, %ebx
  476. rorl $9, %ecx
  477. xorl %r8d, %ecx
  478. xorl %r9d, %ebx
  479. rorl $11, %ecx
  480. addl %r15d, %r11d
  481. xorl %r8d, %ecx
  482. addl %ebx, %r15d
  483. vpor %xmm6, %xmm7, %xmm6
  484. vpor %xmm8, %xmm9, %xmm8
  485. # rnd_0: 7 - 7
  486. rorl $2, %ecx
  487. movl %r11d, %edx
  488. addl %ecx, %r15d
  489. # rnd_1: 0 - 1
  490. rorl $14, %edx
  491. movl %r8d, %ebx
  492. movl %r12d, %ecx
  493. addl 36(%rsp), %r14d
  494. xorl %r13d, %ecx
  495. vpsrld $3, %xmm5, %xmm9
  496. vpxor %xmm6, %xmm8, %xmm6
  497. # rnd_1: 2 - 3
  498. xorl %r11d, %edx
  499. andl %r11d, %ecx
  500. rorl $5, %edx
  501. xorl %r13d, %ecx
  502. xorl %r11d, %edx
  503. addl %ecx, %r14d
  504. vpxor %xmm6, %xmm9, %xmm5
  505. vpshufd $0xfa, %xmm1, %xmm6
  506. # rnd_1: 4 - 5
  507. rorl $6, %edx
  508. xorl %r15d, %ebx
  509. addl %edx, %r14d
  510. movl %r15d, %ecx
  511. andl %ebx, %eax
  512. rorl $9, %ecx
  513. xorl %r15d, %ecx
  514. xorl %r8d, %eax
  515. vpsrld $10, %xmm6, %xmm8
  516. vpsrlq $19, %xmm6, %xmm7
  517. # rnd_1: 6 - 7
  518. rorl $11, %ecx
  519. addl %r14d, %r10d
  520. xorl %r15d, %ecx
  521. addl %eax, %r14d
  522. rorl $2, %ecx
  523. movl %r10d, %edx
  524. addl %ecx, %r14d
  525. # rnd_0: 0 - 0
  526. rorl $14, %edx
  527. vpsrlq $0x11, %xmm6, %xmm6
  528. vpaddd %xmm2, %xmm4, %xmm4
  529. # rnd_0: 1 - 3
  530. movl %r15d, %eax
  531. movl %r11d, %ecx
  532. addl 40(%rsp), %r13d
  533. xorl %r12d, %ecx
  534. xorl %r10d, %edx
  535. andl %r10d, %ecx
  536. rorl $5, %edx
  537. xorl %r12d, %ecx
  538. xorl %r10d, %edx
  539. addl %ecx, %r13d
  540. vpxor %xmm6, %xmm7, %xmm6
  541. vpaddd %xmm5, %xmm4, %xmm4
  542. # rnd_0: 4 - 4
  543. rorl $6, %edx
  544. xorl %r14d, %eax
  545. addl %edx, %r13d
  546. movl %r14d, %ecx
  547. vpxor %xmm6, %xmm8, %xmm8
  548. # rnd_0: 5 - 5
  549. andl %eax, %ebx
  550. rorl $9, %ecx
  551. xorl %r14d, %ecx
  552. xorl %r15d, %ebx
  553. vpshufb %xmm11, %xmm8, %xmm8
  554. # rnd_0: 6 - 6
  555. rorl $11, %ecx
  556. addl %r13d, %r9d
  557. xorl %r14d, %ecx
  558. addl %ebx, %r13d
  559. vpaddd %xmm8, %xmm4, %xmm4
  560. # rnd_0: 7 - 7
  561. rorl $2, %ecx
  562. movl %r9d, %edx
  563. addl %ecx, %r13d
  564. # rnd_1: 0 - 0
  565. rorl $14, %edx
  566. vpshufd $0x50, %xmm4, %xmm6
  567. # rnd_1: 1 - 1
  568. movl %r14d, %ebx
  569. movl %r10d, %ecx
  570. addl 44(%rsp), %r12d
  571. xorl %r11d, %ecx
  572. vpsrlq $0x11, %xmm6, %xmm8
  573. vpsrlq $19, %xmm6, %xmm7
  574. # rnd_1: 2 - 3
  575. xorl %r9d, %edx
  576. andl %r9d, %ecx
  577. rorl $5, %edx
  578. xorl %r11d, %ecx
  579. xorl %r9d, %edx
  580. addl %ecx, %r12d
  581. vpsrld $10, %xmm6, %xmm9
  582. vpxor %xmm8, %xmm7, %xmm8
  583. # rnd_1: 4 - 5
  584. rorl $6, %edx
  585. xorl %r13d, %ebx
  586. addl %edx, %r12d
  587. movl %r13d, %ecx
  588. andl %ebx, %eax
  589. rorl $9, %ecx
  590. xorl %r13d, %ecx
  591. xorl %r14d, %eax
  592. vpxor %xmm9, %xmm8, %xmm9
  593. # rnd_1: 6 - 6
  594. rorl $11, %ecx
  595. addl %r12d, %r8d
  596. xorl %r13d, %ecx
  597. addl %eax, %r12d
  598. vpshufb %xmm12, %xmm9, %xmm9
  599. # rnd_1: 7 - 7
  600. rorl $2, %ecx
  601. movl %r8d, %edx
  602. addl %ecx, %r12d
  603. vpaddd %xmm4, %xmm9, %xmm2
  604. # msg_sched done: 8-11
  605. # msg_sched: 12-15
  606. # rnd_0: 0 - 0
  607. rorl $14, %edx
  608. vpalignr $4, %xmm3, %xmm0, %xmm5
  609. vpalignr $4, %xmm1, %xmm2, %xmm4
  610. # rnd_0: 1 - 2
  611. movl %r13d, %eax
  612. movl %r9d, %ecx
  613. addl 48(%rsp), %r11d
  614. xorl %r10d, %ecx
  615. xorl %r8d, %edx
  616. andl %r8d, %ecx
  617. vpsrld $7, %xmm5, %xmm6
  618. vpslld $25, %xmm5, %xmm7
  619. # rnd_0: 3 - 4
  620. rorl $5, %edx
  621. xorl %r10d, %ecx
  622. xorl %r8d, %edx
  623. addl %ecx, %r11d
  624. rorl $6, %edx
  625. xorl %r12d, %eax
  626. addl %edx, %r11d
  627. movl %r12d, %ecx
  628. vpsrld $18, %xmm5, %xmm8
  629. vpslld $14, %xmm5, %xmm9
  630. # rnd_0: 5 - 6
  631. andl %eax, %ebx
  632. rorl $9, %ecx
  633. xorl %r12d, %ecx
  634. xorl %r13d, %ebx
  635. rorl $11, %ecx
  636. addl %r11d, %r15d
  637. xorl %r12d, %ecx
  638. addl %ebx, %r11d
  639. vpor %xmm6, %xmm7, %xmm6
  640. vpor %xmm8, %xmm9, %xmm8
  641. # rnd_0: 7 - 7
  642. rorl $2, %ecx
  643. movl %r15d, %edx
  644. addl %ecx, %r11d
  645. # rnd_1: 0 - 1
  646. rorl $14, %edx
  647. movl %r12d, %ebx
  648. movl %r8d, %ecx
  649. addl 52(%rsp), %r10d
  650. xorl %r9d, %ecx
  651. vpsrld $3, %xmm5, %xmm9
  652. vpxor %xmm6, %xmm8, %xmm6
  653. # rnd_1: 2 - 3
  654. xorl %r15d, %edx
  655. andl %r15d, %ecx
  656. rorl $5, %edx
  657. xorl %r9d, %ecx
  658. xorl %r15d, %edx
  659. addl %ecx, %r10d
  660. vpxor %xmm6, %xmm9, %xmm5
  661. vpshufd $0xfa, %xmm2, %xmm6
  662. # rnd_1: 4 - 5
  663. rorl $6, %edx
  664. xorl %r11d, %ebx
  665. addl %edx, %r10d
  666. movl %r11d, %ecx
  667. andl %ebx, %eax
  668. rorl $9, %ecx
  669. xorl %r11d, %ecx
  670. xorl %r12d, %eax
  671. vpsrld $10, %xmm6, %xmm8
  672. vpsrlq $19, %xmm6, %xmm7
  673. # rnd_1: 6 - 7
  674. rorl $11, %ecx
  675. addl %r10d, %r14d
  676. xorl %r11d, %ecx
  677. addl %eax, %r10d
  678. rorl $2, %ecx
  679. movl %r14d, %edx
  680. addl %ecx, %r10d
  681. # rnd_0: 0 - 0
  682. rorl $14, %edx
  683. vpsrlq $0x11, %xmm6, %xmm6
  684. vpaddd %xmm3, %xmm4, %xmm4
  685. # rnd_0: 1 - 3
  686. movl %r11d, %eax
  687. movl %r15d, %ecx
  688. addl 56(%rsp), %r9d
  689. xorl %r8d, %ecx
  690. xorl %r14d, %edx
  691. andl %r14d, %ecx
  692. rorl $5, %edx
  693. xorl %r8d, %ecx
  694. xorl %r14d, %edx
  695. addl %ecx, %r9d
  696. vpxor %xmm6, %xmm7, %xmm6
  697. vpaddd %xmm5, %xmm4, %xmm4
  698. # rnd_0: 4 - 4
  699. rorl $6, %edx
  700. xorl %r10d, %eax
  701. addl %edx, %r9d
  702. movl %r10d, %ecx
  703. vpxor %xmm6, %xmm8, %xmm8
  704. # rnd_0: 5 - 5
  705. andl %eax, %ebx
  706. rorl $9, %ecx
  707. xorl %r10d, %ecx
  708. xorl %r11d, %ebx
  709. vpshufb %xmm11, %xmm8, %xmm8
  710. # rnd_0: 6 - 6
  711. rorl $11, %ecx
  712. addl %r9d, %r13d
  713. xorl %r10d, %ecx
  714. addl %ebx, %r9d
  715. vpaddd %xmm8, %xmm4, %xmm4
  716. # rnd_0: 7 - 7
  717. rorl $2, %ecx
  718. movl %r13d, %edx
  719. addl %ecx, %r9d
  720. # rnd_1: 0 - 0
  721. rorl $14, %edx
  722. vpshufd $0x50, %xmm4, %xmm6
  723. # rnd_1: 1 - 1
  724. movl %r10d, %ebx
  725. movl %r14d, %ecx
  726. addl 60(%rsp), %r8d
  727. xorl %r15d, %ecx
  728. vpsrlq $0x11, %xmm6, %xmm8
  729. vpsrlq $19, %xmm6, %xmm7
  730. # rnd_1: 2 - 3
  731. xorl %r13d, %edx
  732. andl %r13d, %ecx
  733. rorl $5, %edx
  734. xorl %r15d, %ecx
  735. xorl %r13d, %edx
  736. addl %ecx, %r8d
  737. vpsrld $10, %xmm6, %xmm9
  738. vpxor %xmm8, %xmm7, %xmm8
  739. # rnd_1: 4 - 5
  740. rorl $6, %edx
  741. xorl %r9d, %ebx
  742. addl %edx, %r8d
  743. movl %r9d, %ecx
  744. andl %ebx, %eax
  745. rorl $9, %ecx
  746. xorl %r9d, %ecx
  747. xorl %r10d, %eax
  748. vpxor %xmm9, %xmm8, %xmm9
  749. # rnd_1: 6 - 6
  750. rorl $11, %ecx
  751. addl %r8d, %r12d
  752. xorl %r9d, %ecx
  753. addl %eax, %r8d
  754. vpshufb %xmm12, %xmm9, %xmm9
  755. # rnd_1: 7 - 7
  756. rorl $2, %ecx
  757. movl %r12d, %edx
  758. addl %ecx, %r8d
  759. vpaddd %xmm4, %xmm9, %xmm3
  760. # msg_sched done: 12-15
  761. # set_w_k_xfer_4: 4
  762. vpaddd 64+L_avx1_sha256_k(%rip), %xmm0, %xmm4
  763. vpaddd 80+L_avx1_sha256_k(%rip), %xmm1, %xmm5
  764. vmovdqu %xmm4, (%rsp)
  765. vmovdqu %xmm5, 16(%rsp)
  766. vpaddd 96+L_avx1_sha256_k(%rip), %xmm2, %xmm6
  767. vpaddd 112+L_avx1_sha256_k(%rip), %xmm3, %xmm7
  768. vmovdqu %xmm6, 32(%rsp)
  769. vmovdqu %xmm7, 48(%rsp)
  770. # msg_sched: 0-3
  771. # rnd_0: 0 - 0
  772. rorl $14, %edx
  773. vpalignr $4, %xmm0, %xmm1, %xmm5
  774. vpalignr $4, %xmm2, %xmm3, %xmm4
  775. # rnd_0: 1 - 2
  776. movl %r9d, %eax
  777. movl %r13d, %ecx
  778. addl (%rsp), %r15d
  779. xorl %r14d, %ecx
  780. xorl %r12d, %edx
  781. andl %r12d, %ecx
  782. vpsrld $7, %xmm5, %xmm6
  783. vpslld $25, %xmm5, %xmm7
  784. # rnd_0: 3 - 4
  785. rorl $5, %edx
  786. xorl %r14d, %ecx
  787. xorl %r12d, %edx
  788. addl %ecx, %r15d
  789. rorl $6, %edx
  790. xorl %r8d, %eax
  791. addl %edx, %r15d
  792. movl %r8d, %ecx
  793. vpsrld $18, %xmm5, %xmm8
  794. vpslld $14, %xmm5, %xmm9
  795. # rnd_0: 5 - 6
  796. andl %eax, %ebx
  797. rorl $9, %ecx
  798. xorl %r8d, %ecx
  799. xorl %r9d, %ebx
  800. rorl $11, %ecx
  801. addl %r15d, %r11d
  802. xorl %r8d, %ecx
  803. addl %ebx, %r15d
  804. vpor %xmm6, %xmm7, %xmm6
  805. vpor %xmm8, %xmm9, %xmm8
  806. # rnd_0: 7 - 7
  807. rorl $2, %ecx
  808. movl %r11d, %edx
  809. addl %ecx, %r15d
  810. # rnd_1: 0 - 1
  811. rorl $14, %edx
  812. movl %r8d, %ebx
  813. movl %r12d, %ecx
  814. addl 4(%rsp), %r14d
  815. xorl %r13d, %ecx
  816. vpsrld $3, %xmm5, %xmm9
  817. vpxor %xmm6, %xmm8, %xmm6
  818. # rnd_1: 2 - 3
  819. xorl %r11d, %edx
  820. andl %r11d, %ecx
  821. rorl $5, %edx
  822. xorl %r13d, %ecx
  823. xorl %r11d, %edx
  824. addl %ecx, %r14d
  825. vpxor %xmm6, %xmm9, %xmm5
  826. vpshufd $0xfa, %xmm3, %xmm6
  827. # rnd_1: 4 - 5
  828. rorl $6, %edx
  829. xorl %r15d, %ebx
  830. addl %edx, %r14d
  831. movl %r15d, %ecx
  832. andl %ebx, %eax
  833. rorl $9, %ecx
  834. xorl %r15d, %ecx
  835. xorl %r8d, %eax
  836. vpsrld $10, %xmm6, %xmm8
  837. vpsrlq $19, %xmm6, %xmm7
  838. # rnd_1: 6 - 7
  839. rorl $11, %ecx
  840. addl %r14d, %r10d
  841. xorl %r15d, %ecx
  842. addl %eax, %r14d
  843. rorl $2, %ecx
  844. movl %r10d, %edx
  845. addl %ecx, %r14d
  846. # rnd_0: 0 - 0
  847. rorl $14, %edx
  848. vpsrlq $0x11, %xmm6, %xmm6
  849. vpaddd %xmm0, %xmm4, %xmm4
  850. # rnd_0: 1 - 3
  851. movl %r15d, %eax
  852. movl %r11d, %ecx
  853. addl 8(%rsp), %r13d
  854. xorl %r12d, %ecx
  855. xorl %r10d, %edx
  856. andl %r10d, %ecx
  857. rorl $5, %edx
  858. xorl %r12d, %ecx
  859. xorl %r10d, %edx
  860. addl %ecx, %r13d
  861. vpxor %xmm6, %xmm7, %xmm6
  862. vpaddd %xmm5, %xmm4, %xmm4
  863. # rnd_0: 4 - 4
  864. rorl $6, %edx
  865. xorl %r14d, %eax
  866. addl %edx, %r13d
  867. movl %r14d, %ecx
  868. vpxor %xmm6, %xmm8, %xmm8
  869. # rnd_0: 5 - 5
  870. andl %eax, %ebx
  871. rorl $9, %ecx
  872. xorl %r14d, %ecx
  873. xorl %r15d, %ebx
  874. vpshufb %xmm11, %xmm8, %xmm8
  875. # rnd_0: 6 - 6
  876. rorl $11, %ecx
  877. addl %r13d, %r9d
  878. xorl %r14d, %ecx
  879. addl %ebx, %r13d
  880. vpaddd %xmm8, %xmm4, %xmm4
  881. # rnd_0: 7 - 7
  882. rorl $2, %ecx
  883. movl %r9d, %edx
  884. addl %ecx, %r13d
  885. # rnd_1: 0 - 0
  886. rorl $14, %edx
  887. vpshufd $0x50, %xmm4, %xmm6
  888. # rnd_1: 1 - 1
  889. movl %r14d, %ebx
  890. movl %r10d, %ecx
  891. addl 12(%rsp), %r12d
  892. xorl %r11d, %ecx
  893. vpsrlq $0x11, %xmm6, %xmm8
  894. vpsrlq $19, %xmm6, %xmm7
  895. # rnd_1: 2 - 3
  896. xorl %r9d, %edx
  897. andl %r9d, %ecx
  898. rorl $5, %edx
  899. xorl %r11d, %ecx
  900. xorl %r9d, %edx
  901. addl %ecx, %r12d
  902. vpsrld $10, %xmm6, %xmm9
  903. vpxor %xmm8, %xmm7, %xmm8
  904. # rnd_1: 4 - 5
  905. rorl $6, %edx
  906. xorl %r13d, %ebx
  907. addl %edx, %r12d
  908. movl %r13d, %ecx
  909. andl %ebx, %eax
  910. rorl $9, %ecx
  911. xorl %r13d, %ecx
  912. xorl %r14d, %eax
  913. vpxor %xmm9, %xmm8, %xmm9
  914. # rnd_1: 6 - 6
  915. rorl $11, %ecx
  916. addl %r12d, %r8d
  917. xorl %r13d, %ecx
  918. addl %eax, %r12d
  919. vpshufb %xmm12, %xmm9, %xmm9
  920. # rnd_1: 7 - 7
  921. rorl $2, %ecx
  922. movl %r8d, %edx
  923. addl %ecx, %r12d
  924. vpaddd %xmm4, %xmm9, %xmm0
  925. # msg_sched done: 0-3
  926. # msg_sched: 4-7
  927. # rnd_0: 0 - 0
  928. rorl $14, %edx
  929. vpalignr $4, %xmm1, %xmm2, %xmm5
  930. vpalignr $4, %xmm3, %xmm0, %xmm4
  931. # rnd_0: 1 - 2
  932. movl %r13d, %eax
  933. movl %r9d, %ecx
  934. addl 16(%rsp), %r11d
  935. xorl %r10d, %ecx
  936. xorl %r8d, %edx
  937. andl %r8d, %ecx
  938. vpsrld $7, %xmm5, %xmm6
  939. vpslld $25, %xmm5, %xmm7
  940. # rnd_0: 3 - 4
  941. rorl $5, %edx
  942. xorl %r10d, %ecx
  943. xorl %r8d, %edx
  944. addl %ecx, %r11d
  945. rorl $6, %edx
  946. xorl %r12d, %eax
  947. addl %edx, %r11d
  948. movl %r12d, %ecx
  949. vpsrld $18, %xmm5, %xmm8
  950. vpslld $14, %xmm5, %xmm9
  951. # rnd_0: 5 - 6
  952. andl %eax, %ebx
  953. rorl $9, %ecx
  954. xorl %r12d, %ecx
  955. xorl %r13d, %ebx
  956. rorl $11, %ecx
  957. addl %r11d, %r15d
  958. xorl %r12d, %ecx
  959. addl %ebx, %r11d
  960. vpor %xmm6, %xmm7, %xmm6
  961. vpor %xmm8, %xmm9, %xmm8
  962. # rnd_0: 7 - 7
  963. rorl $2, %ecx
  964. movl %r15d, %edx
  965. addl %ecx, %r11d
  966. # rnd_1: 0 - 1
  967. rorl $14, %edx
  968. movl %r12d, %ebx
  969. movl %r8d, %ecx
  970. addl 20(%rsp), %r10d
  971. xorl %r9d, %ecx
  972. vpsrld $3, %xmm5, %xmm9
  973. vpxor %xmm6, %xmm8, %xmm6
  974. # rnd_1: 2 - 3
  975. xorl %r15d, %edx
  976. andl %r15d, %ecx
  977. rorl $5, %edx
  978. xorl %r9d, %ecx
  979. xorl %r15d, %edx
  980. addl %ecx, %r10d
  981. vpxor %xmm6, %xmm9, %xmm5
  982. vpshufd $0xfa, %xmm0, %xmm6
  983. # rnd_1: 4 - 5
  984. rorl $6, %edx
  985. xorl %r11d, %ebx
  986. addl %edx, %r10d
  987. movl %r11d, %ecx
  988. andl %ebx, %eax
  989. rorl $9, %ecx
  990. xorl %r11d, %ecx
  991. xorl %r12d, %eax
  992. vpsrld $10, %xmm6, %xmm8
  993. vpsrlq $19, %xmm6, %xmm7
  994. # rnd_1: 6 - 7
  995. rorl $11, %ecx
  996. addl %r10d, %r14d
  997. xorl %r11d, %ecx
  998. addl %eax, %r10d
  999. rorl $2, %ecx
  1000. movl %r14d, %edx
  1001. addl %ecx, %r10d
  1002. # rnd_0: 0 - 0
  1003. rorl $14, %edx
  1004. vpsrlq $0x11, %xmm6, %xmm6
  1005. vpaddd %xmm1, %xmm4, %xmm4
  1006. # rnd_0: 1 - 3
  1007. movl %r11d, %eax
  1008. movl %r15d, %ecx
  1009. addl 24(%rsp), %r9d
  1010. xorl %r8d, %ecx
  1011. xorl %r14d, %edx
  1012. andl %r14d, %ecx
  1013. rorl $5, %edx
  1014. xorl %r8d, %ecx
  1015. xorl %r14d, %edx
  1016. addl %ecx, %r9d
  1017. vpxor %xmm6, %xmm7, %xmm6
  1018. vpaddd %xmm5, %xmm4, %xmm4
  1019. # rnd_0: 4 - 4
  1020. rorl $6, %edx
  1021. xorl %r10d, %eax
  1022. addl %edx, %r9d
  1023. movl %r10d, %ecx
  1024. vpxor %xmm6, %xmm8, %xmm8
  1025. # rnd_0: 5 - 5
  1026. andl %eax, %ebx
  1027. rorl $9, %ecx
  1028. xorl %r10d, %ecx
  1029. xorl %r11d, %ebx
  1030. vpshufb %xmm11, %xmm8, %xmm8
  1031. # rnd_0: 6 - 6
  1032. rorl $11, %ecx
  1033. addl %r9d, %r13d
  1034. xorl %r10d, %ecx
  1035. addl %ebx, %r9d
  1036. vpaddd %xmm8, %xmm4, %xmm4
  1037. # rnd_0: 7 - 7
  1038. rorl $2, %ecx
  1039. movl %r13d, %edx
  1040. addl %ecx, %r9d
  1041. # rnd_1: 0 - 0
  1042. rorl $14, %edx
  1043. vpshufd $0x50, %xmm4, %xmm6
  1044. # rnd_1: 1 - 1
  1045. movl %r10d, %ebx
  1046. movl %r14d, %ecx
  1047. addl 28(%rsp), %r8d
  1048. xorl %r15d, %ecx
  1049. vpsrlq $0x11, %xmm6, %xmm8
  1050. vpsrlq $19, %xmm6, %xmm7
  1051. # rnd_1: 2 - 3
  1052. xorl %r13d, %edx
  1053. andl %r13d, %ecx
  1054. rorl $5, %edx
  1055. xorl %r15d, %ecx
  1056. xorl %r13d, %edx
  1057. addl %ecx, %r8d
  1058. vpsrld $10, %xmm6, %xmm9
  1059. vpxor %xmm8, %xmm7, %xmm8
  1060. # rnd_1: 4 - 5
  1061. rorl $6, %edx
  1062. xorl %r9d, %ebx
  1063. addl %edx, %r8d
  1064. movl %r9d, %ecx
  1065. andl %ebx, %eax
  1066. rorl $9, %ecx
  1067. xorl %r9d, %ecx
  1068. xorl %r10d, %eax
  1069. vpxor %xmm9, %xmm8, %xmm9
  1070. # rnd_1: 6 - 6
  1071. rorl $11, %ecx
  1072. addl %r8d, %r12d
  1073. xorl %r9d, %ecx
  1074. addl %eax, %r8d
  1075. vpshufb %xmm12, %xmm9, %xmm9
  1076. # rnd_1: 7 - 7
  1077. rorl $2, %ecx
  1078. movl %r12d, %edx
  1079. addl %ecx, %r8d
  1080. vpaddd %xmm4, %xmm9, %xmm1
  1081. # msg_sched done: 4-7
  1082. # msg_sched: 8-11
  1083. # rnd_0: 0 - 0
  1084. rorl $14, %edx
  1085. vpalignr $4, %xmm2, %xmm3, %xmm5
  1086. vpalignr $4, %xmm0, %xmm1, %xmm4
  1087. # rnd_0: 1 - 2
  1088. movl %r9d, %eax
  1089. movl %r13d, %ecx
  1090. addl 32(%rsp), %r15d
  1091. xorl %r14d, %ecx
  1092. xorl %r12d, %edx
  1093. andl %r12d, %ecx
  1094. vpsrld $7, %xmm5, %xmm6
  1095. vpslld $25, %xmm5, %xmm7
  1096. # rnd_0: 3 - 4
  1097. rorl $5, %edx
  1098. xorl %r14d, %ecx
  1099. xorl %r12d, %edx
  1100. addl %ecx, %r15d
  1101. rorl $6, %edx
  1102. xorl %r8d, %eax
  1103. addl %edx, %r15d
  1104. movl %r8d, %ecx
  1105. vpsrld $18, %xmm5, %xmm8
  1106. vpslld $14, %xmm5, %xmm9
  1107. # rnd_0: 5 - 6
  1108. andl %eax, %ebx
  1109. rorl $9, %ecx
  1110. xorl %r8d, %ecx
  1111. xorl %r9d, %ebx
  1112. rorl $11, %ecx
  1113. addl %r15d, %r11d
  1114. xorl %r8d, %ecx
  1115. addl %ebx, %r15d
  1116. vpor %xmm6, %xmm7, %xmm6
  1117. vpor %xmm8, %xmm9, %xmm8
  1118. # rnd_0: 7 - 7
  1119. rorl $2, %ecx
  1120. movl %r11d, %edx
  1121. addl %ecx, %r15d
  1122. # rnd_1: 0 - 1
  1123. rorl $14, %edx
  1124. movl %r8d, %ebx
  1125. movl %r12d, %ecx
  1126. addl 36(%rsp), %r14d
  1127. xorl %r13d, %ecx
  1128. vpsrld $3, %xmm5, %xmm9
  1129. vpxor %xmm6, %xmm8, %xmm6
  1130. # rnd_1: 2 - 3
  1131. xorl %r11d, %edx
  1132. andl %r11d, %ecx
  1133. rorl $5, %edx
  1134. xorl %r13d, %ecx
  1135. xorl %r11d, %edx
  1136. addl %ecx, %r14d
  1137. vpxor %xmm6, %xmm9, %xmm5
  1138. vpshufd $0xfa, %xmm1, %xmm6
  1139. # rnd_1: 4 - 5
  1140. rorl $6, %edx
  1141. xorl %r15d, %ebx
  1142. addl %edx, %r14d
  1143. movl %r15d, %ecx
  1144. andl %ebx, %eax
  1145. rorl $9, %ecx
  1146. xorl %r15d, %ecx
  1147. xorl %r8d, %eax
  1148. vpsrld $10, %xmm6, %xmm8
  1149. vpsrlq $19, %xmm6, %xmm7
  1150. # rnd_1: 6 - 7
  1151. rorl $11, %ecx
  1152. addl %r14d, %r10d
  1153. xorl %r15d, %ecx
  1154. addl %eax, %r14d
  1155. rorl $2, %ecx
  1156. movl %r10d, %edx
  1157. addl %ecx, %r14d
  1158. # rnd_0: 0 - 0
  1159. rorl $14, %edx
  1160. vpsrlq $0x11, %xmm6, %xmm6
  1161. vpaddd %xmm2, %xmm4, %xmm4
  1162. # rnd_0: 1 - 3
  1163. movl %r15d, %eax
  1164. movl %r11d, %ecx
  1165. addl 40(%rsp), %r13d
  1166. xorl %r12d, %ecx
  1167. xorl %r10d, %edx
  1168. andl %r10d, %ecx
  1169. rorl $5, %edx
  1170. xorl %r12d, %ecx
  1171. xorl %r10d, %edx
  1172. addl %ecx, %r13d
  1173. vpxor %xmm6, %xmm7, %xmm6
  1174. vpaddd %xmm5, %xmm4, %xmm4
  1175. # rnd_0: 4 - 4
  1176. rorl $6, %edx
  1177. xorl %r14d, %eax
  1178. addl %edx, %r13d
  1179. movl %r14d, %ecx
  1180. vpxor %xmm6, %xmm8, %xmm8
  1181. # rnd_0: 5 - 5
  1182. andl %eax, %ebx
  1183. rorl $9, %ecx
  1184. xorl %r14d, %ecx
  1185. xorl %r15d, %ebx
  1186. vpshufb %xmm11, %xmm8, %xmm8
  1187. # rnd_0: 6 - 6
  1188. rorl $11, %ecx
  1189. addl %r13d, %r9d
  1190. xorl %r14d, %ecx
  1191. addl %ebx, %r13d
  1192. vpaddd %xmm8, %xmm4, %xmm4
  1193. # rnd_0: 7 - 7
  1194. rorl $2, %ecx
  1195. movl %r9d, %edx
  1196. addl %ecx, %r13d
  1197. # rnd_1: 0 - 0
  1198. rorl $14, %edx
  1199. vpshufd $0x50, %xmm4, %xmm6
  1200. # rnd_1: 1 - 1
  1201. movl %r14d, %ebx
  1202. movl %r10d, %ecx
  1203. addl 44(%rsp), %r12d
  1204. xorl %r11d, %ecx
  1205. vpsrlq $0x11, %xmm6, %xmm8
  1206. vpsrlq $19, %xmm6, %xmm7
  1207. # rnd_1: 2 - 3
  1208. xorl %r9d, %edx
  1209. andl %r9d, %ecx
  1210. rorl $5, %edx
  1211. xorl %r11d, %ecx
  1212. xorl %r9d, %edx
  1213. addl %ecx, %r12d
  1214. vpsrld $10, %xmm6, %xmm9
  1215. vpxor %xmm8, %xmm7, %xmm8
  1216. # rnd_1: 4 - 5
  1217. rorl $6, %edx
  1218. xorl %r13d, %ebx
  1219. addl %edx, %r12d
  1220. movl %r13d, %ecx
  1221. andl %ebx, %eax
  1222. rorl $9, %ecx
  1223. xorl %r13d, %ecx
  1224. xorl %r14d, %eax
  1225. vpxor %xmm9, %xmm8, %xmm9
  1226. # rnd_1: 6 - 6
  1227. rorl $11, %ecx
  1228. addl %r12d, %r8d
  1229. xorl %r13d, %ecx
  1230. addl %eax, %r12d
  1231. vpshufb %xmm12, %xmm9, %xmm9
  1232. # rnd_1: 7 - 7
  1233. rorl $2, %ecx
  1234. movl %r8d, %edx
  1235. addl %ecx, %r12d
  1236. vpaddd %xmm4, %xmm9, %xmm2
  1237. # msg_sched done: 8-11
  1238. # msg_sched: 12-15
  1239. # rnd_0: 0 - 0
  1240. rorl $14, %edx
  1241. vpalignr $4, %xmm3, %xmm0, %xmm5
  1242. vpalignr $4, %xmm1, %xmm2, %xmm4
  1243. # rnd_0: 1 - 2
  1244. movl %r13d, %eax
  1245. movl %r9d, %ecx
  1246. addl 48(%rsp), %r11d
  1247. xorl %r10d, %ecx
  1248. xorl %r8d, %edx
  1249. andl %r8d, %ecx
  1250. vpsrld $7, %xmm5, %xmm6
  1251. vpslld $25, %xmm5, %xmm7
  1252. # rnd_0: 3 - 4
  1253. rorl $5, %edx
  1254. xorl %r10d, %ecx
  1255. xorl %r8d, %edx
  1256. addl %ecx, %r11d
  1257. rorl $6, %edx
  1258. xorl %r12d, %eax
  1259. addl %edx, %r11d
  1260. movl %r12d, %ecx
  1261. vpsrld $18, %xmm5, %xmm8
  1262. vpslld $14, %xmm5, %xmm9
  1263. # rnd_0: 5 - 6
  1264. andl %eax, %ebx
  1265. rorl $9, %ecx
  1266. xorl %r12d, %ecx
  1267. xorl %r13d, %ebx
  1268. rorl $11, %ecx
  1269. addl %r11d, %r15d
  1270. xorl %r12d, %ecx
  1271. addl %ebx, %r11d
  1272. vpor %xmm6, %xmm7, %xmm6
  1273. vpor %xmm8, %xmm9, %xmm8
  1274. # rnd_0: 7 - 7
  1275. rorl $2, %ecx
  1276. movl %r15d, %edx
  1277. addl %ecx, %r11d
  1278. # rnd_1: 0 - 1
  1279. rorl $14, %edx
  1280. movl %r12d, %ebx
  1281. movl %r8d, %ecx
  1282. addl 52(%rsp), %r10d
  1283. xorl %r9d, %ecx
  1284. vpsrld $3, %xmm5, %xmm9
  1285. vpxor %xmm6, %xmm8, %xmm6
  1286. # rnd_1: 2 - 3
  1287. xorl %r15d, %edx
  1288. andl %r15d, %ecx
  1289. rorl $5, %edx
  1290. xorl %r9d, %ecx
  1291. xorl %r15d, %edx
  1292. addl %ecx, %r10d
  1293. vpxor %xmm6, %xmm9, %xmm5
  1294. vpshufd $0xfa, %xmm2, %xmm6
  1295. # rnd_1: 4 - 5
  1296. rorl $6, %edx
  1297. xorl %r11d, %ebx
  1298. addl %edx, %r10d
  1299. movl %r11d, %ecx
  1300. andl %ebx, %eax
  1301. rorl $9, %ecx
  1302. xorl %r11d, %ecx
  1303. xorl %r12d, %eax
  1304. vpsrld $10, %xmm6, %xmm8
  1305. vpsrlq $19, %xmm6, %xmm7
  1306. # rnd_1: 6 - 7
  1307. rorl $11, %ecx
  1308. addl %r10d, %r14d
  1309. xorl %r11d, %ecx
  1310. addl %eax, %r10d
  1311. rorl $2, %ecx
  1312. movl %r14d, %edx
  1313. addl %ecx, %r10d
  1314. # rnd_0: 0 - 0
  1315. rorl $14, %edx
  1316. vpsrlq $0x11, %xmm6, %xmm6
  1317. vpaddd %xmm3, %xmm4, %xmm4
  1318. # rnd_0: 1 - 3
  1319. movl %r11d, %eax
  1320. movl %r15d, %ecx
  1321. addl 56(%rsp), %r9d
  1322. xorl %r8d, %ecx
  1323. xorl %r14d, %edx
  1324. andl %r14d, %ecx
  1325. rorl $5, %edx
  1326. xorl %r8d, %ecx
  1327. xorl %r14d, %edx
  1328. addl %ecx, %r9d
  1329. vpxor %xmm6, %xmm7, %xmm6
  1330. vpaddd %xmm5, %xmm4, %xmm4
  1331. # rnd_0: 4 - 4
  1332. rorl $6, %edx
  1333. xorl %r10d, %eax
  1334. addl %edx, %r9d
  1335. movl %r10d, %ecx
  1336. vpxor %xmm6, %xmm8, %xmm8
  1337. # rnd_0: 5 - 5
  1338. andl %eax, %ebx
  1339. rorl $9, %ecx
  1340. xorl %r10d, %ecx
  1341. xorl %r11d, %ebx
  1342. vpshufb %xmm11, %xmm8, %xmm8
  1343. # rnd_0: 6 - 6
  1344. rorl $11, %ecx
  1345. addl %r9d, %r13d
  1346. xorl %r10d, %ecx
  1347. addl %ebx, %r9d
  1348. vpaddd %xmm8, %xmm4, %xmm4
  1349. # rnd_0: 7 - 7
  1350. rorl $2, %ecx
  1351. movl %r13d, %edx
  1352. addl %ecx, %r9d
  1353. # rnd_1: 0 - 0
  1354. rorl $14, %edx
  1355. vpshufd $0x50, %xmm4, %xmm6
  1356. # rnd_1: 1 - 1
  1357. movl %r10d, %ebx
  1358. movl %r14d, %ecx
  1359. addl 60(%rsp), %r8d
  1360. xorl %r15d, %ecx
  1361. vpsrlq $0x11, %xmm6, %xmm8
  1362. vpsrlq $19, %xmm6, %xmm7
  1363. # rnd_1: 2 - 3
  1364. xorl %r13d, %edx
  1365. andl %r13d, %ecx
  1366. rorl $5, %edx
  1367. xorl %r15d, %ecx
  1368. xorl %r13d, %edx
  1369. addl %ecx, %r8d
  1370. vpsrld $10, %xmm6, %xmm9
  1371. vpxor %xmm8, %xmm7, %xmm8
  1372. # rnd_1: 4 - 5
  1373. rorl $6, %edx
  1374. xorl %r9d, %ebx
  1375. addl %edx, %r8d
  1376. movl %r9d, %ecx
  1377. andl %ebx, %eax
  1378. rorl $9, %ecx
  1379. xorl %r9d, %ecx
  1380. xorl %r10d, %eax
  1381. vpxor %xmm9, %xmm8, %xmm9
  1382. # rnd_1: 6 - 6
  1383. rorl $11, %ecx
  1384. addl %r8d, %r12d
  1385. xorl %r9d, %ecx
  1386. addl %eax, %r8d
  1387. vpshufb %xmm12, %xmm9, %xmm9
  1388. # rnd_1: 7 - 7
  1389. rorl $2, %ecx
  1390. movl %r12d, %edx
  1391. addl %ecx, %r8d
  1392. vpaddd %xmm4, %xmm9, %xmm3
  1393. # msg_sched done: 12-15
  1394. # set_w_k_xfer_4: 8
  1395. vpaddd 128+L_avx1_sha256_k(%rip), %xmm0, %xmm4
  1396. vpaddd 144+L_avx1_sha256_k(%rip), %xmm1, %xmm5
  1397. vmovdqu %xmm4, (%rsp)
  1398. vmovdqu %xmm5, 16(%rsp)
  1399. vpaddd 160+L_avx1_sha256_k(%rip), %xmm2, %xmm6
  1400. vpaddd 176+L_avx1_sha256_k(%rip), %xmm3, %xmm7
  1401. vmovdqu %xmm6, 32(%rsp)
  1402. vmovdqu %xmm7, 48(%rsp)
  1403. # msg_sched: 0-3
  1404. # rnd_0: 0 - 0
  1405. rorl $14, %edx
  1406. vpalignr $4, %xmm0, %xmm1, %xmm5
  1407. vpalignr $4, %xmm2, %xmm3, %xmm4
  1408. # rnd_0: 1 - 2
  1409. movl %r9d, %eax
  1410. movl %r13d, %ecx
  1411. addl (%rsp), %r15d
  1412. xorl %r14d, %ecx
  1413. xorl %r12d, %edx
  1414. andl %r12d, %ecx
  1415. vpsrld $7, %xmm5, %xmm6
  1416. vpslld $25, %xmm5, %xmm7
  1417. # rnd_0: 3 - 4
  1418. rorl $5, %edx
  1419. xorl %r14d, %ecx
  1420. xorl %r12d, %edx
  1421. addl %ecx, %r15d
  1422. rorl $6, %edx
  1423. xorl %r8d, %eax
  1424. addl %edx, %r15d
  1425. movl %r8d, %ecx
  1426. vpsrld $18, %xmm5, %xmm8
  1427. vpslld $14, %xmm5, %xmm9
  1428. # rnd_0: 5 - 6
  1429. andl %eax, %ebx
  1430. rorl $9, %ecx
  1431. xorl %r8d, %ecx
  1432. xorl %r9d, %ebx
  1433. rorl $11, %ecx
  1434. addl %r15d, %r11d
  1435. xorl %r8d, %ecx
  1436. addl %ebx, %r15d
  1437. vpor %xmm6, %xmm7, %xmm6
  1438. vpor %xmm8, %xmm9, %xmm8
  1439. # rnd_0: 7 - 7
  1440. rorl $2, %ecx
  1441. movl %r11d, %edx
  1442. addl %ecx, %r15d
  1443. # rnd_1: 0 - 1
  1444. rorl $14, %edx
  1445. movl %r8d, %ebx
  1446. movl %r12d, %ecx
  1447. addl 4(%rsp), %r14d
  1448. xorl %r13d, %ecx
  1449. vpsrld $3, %xmm5, %xmm9
  1450. vpxor %xmm6, %xmm8, %xmm6
  1451. # rnd_1: 2 - 3
  1452. xorl %r11d, %edx
  1453. andl %r11d, %ecx
  1454. rorl $5, %edx
  1455. xorl %r13d, %ecx
  1456. xorl %r11d, %edx
  1457. addl %ecx, %r14d
  1458. vpxor %xmm6, %xmm9, %xmm5
  1459. vpshufd $0xfa, %xmm3, %xmm6
  1460. # rnd_1: 4 - 5
  1461. rorl $6, %edx
  1462. xorl %r15d, %ebx
  1463. addl %edx, %r14d
  1464. movl %r15d, %ecx
  1465. andl %ebx, %eax
  1466. rorl $9, %ecx
  1467. xorl %r15d, %ecx
  1468. xorl %r8d, %eax
  1469. vpsrld $10, %xmm6, %xmm8
  1470. vpsrlq $19, %xmm6, %xmm7
  1471. # rnd_1: 6 - 7
  1472. rorl $11, %ecx
  1473. addl %r14d, %r10d
  1474. xorl %r15d, %ecx
  1475. addl %eax, %r14d
  1476. rorl $2, %ecx
  1477. movl %r10d, %edx
  1478. addl %ecx, %r14d
  1479. # rnd_0: 0 - 0
  1480. rorl $14, %edx
  1481. vpsrlq $0x11, %xmm6, %xmm6
  1482. vpaddd %xmm0, %xmm4, %xmm4
  1483. # rnd_0: 1 - 3
  1484. movl %r15d, %eax
  1485. movl %r11d, %ecx
  1486. addl 8(%rsp), %r13d
  1487. xorl %r12d, %ecx
  1488. xorl %r10d, %edx
  1489. andl %r10d, %ecx
  1490. rorl $5, %edx
  1491. xorl %r12d, %ecx
  1492. xorl %r10d, %edx
  1493. addl %ecx, %r13d
  1494. vpxor %xmm6, %xmm7, %xmm6
  1495. vpaddd %xmm5, %xmm4, %xmm4
  1496. # rnd_0: 4 - 4
  1497. rorl $6, %edx
  1498. xorl %r14d, %eax
  1499. addl %edx, %r13d
  1500. movl %r14d, %ecx
  1501. vpxor %xmm6, %xmm8, %xmm8
  1502. # rnd_0: 5 - 5
  1503. andl %eax, %ebx
  1504. rorl $9, %ecx
  1505. xorl %r14d, %ecx
  1506. xorl %r15d, %ebx
  1507. vpshufb %xmm11, %xmm8, %xmm8
  1508. # rnd_0: 6 - 6
  1509. rorl $11, %ecx
  1510. addl %r13d, %r9d
  1511. xorl %r14d, %ecx
  1512. addl %ebx, %r13d
  1513. vpaddd %xmm8, %xmm4, %xmm4
  1514. # rnd_0: 7 - 7
  1515. rorl $2, %ecx
  1516. movl %r9d, %edx
  1517. addl %ecx, %r13d
  1518. # rnd_1: 0 - 0
  1519. rorl $14, %edx
  1520. vpshufd $0x50, %xmm4, %xmm6
  1521. # rnd_1: 1 - 1
  1522. movl %r14d, %ebx
  1523. movl %r10d, %ecx
  1524. addl 12(%rsp), %r12d
  1525. xorl %r11d, %ecx
  1526. vpsrlq $0x11, %xmm6, %xmm8
  1527. vpsrlq $19, %xmm6, %xmm7
  1528. # rnd_1: 2 - 3
  1529. xorl %r9d, %edx
  1530. andl %r9d, %ecx
  1531. rorl $5, %edx
  1532. xorl %r11d, %ecx
  1533. xorl %r9d, %edx
  1534. addl %ecx, %r12d
  1535. vpsrld $10, %xmm6, %xmm9
  1536. vpxor %xmm8, %xmm7, %xmm8
  1537. # rnd_1: 4 - 5
  1538. rorl $6, %edx
  1539. xorl %r13d, %ebx
  1540. addl %edx, %r12d
  1541. movl %r13d, %ecx
  1542. andl %ebx, %eax
  1543. rorl $9, %ecx
  1544. xorl %r13d, %ecx
  1545. xorl %r14d, %eax
  1546. vpxor %xmm9, %xmm8, %xmm9
  1547. # rnd_1: 6 - 6
  1548. rorl $11, %ecx
  1549. addl %r12d, %r8d
  1550. xorl %r13d, %ecx
  1551. addl %eax, %r12d
  1552. vpshufb %xmm12, %xmm9, %xmm9
  1553. # rnd_1: 7 - 7
  1554. rorl $2, %ecx
  1555. movl %r8d, %edx
  1556. addl %ecx, %r12d
  1557. vpaddd %xmm4, %xmm9, %xmm0
  1558. # msg_sched done: 0-3
  1559. # msg_sched: 4-7
  1560. # rnd_0: 0 - 0
  1561. rorl $14, %edx
  1562. vpalignr $4, %xmm1, %xmm2, %xmm5
  1563. vpalignr $4, %xmm3, %xmm0, %xmm4
  1564. # rnd_0: 1 - 2
  1565. movl %r13d, %eax
  1566. movl %r9d, %ecx
  1567. addl 16(%rsp), %r11d
  1568. xorl %r10d, %ecx
  1569. xorl %r8d, %edx
  1570. andl %r8d, %ecx
  1571. vpsrld $7, %xmm5, %xmm6
  1572. vpslld $25, %xmm5, %xmm7
  1573. # rnd_0: 3 - 4
  1574. rorl $5, %edx
  1575. xorl %r10d, %ecx
  1576. xorl %r8d, %edx
  1577. addl %ecx, %r11d
  1578. rorl $6, %edx
  1579. xorl %r12d, %eax
  1580. addl %edx, %r11d
  1581. movl %r12d, %ecx
  1582. vpsrld $18, %xmm5, %xmm8
  1583. vpslld $14, %xmm5, %xmm9
  1584. # rnd_0: 5 - 6
  1585. andl %eax, %ebx
  1586. rorl $9, %ecx
  1587. xorl %r12d, %ecx
  1588. xorl %r13d, %ebx
  1589. rorl $11, %ecx
  1590. addl %r11d, %r15d
  1591. xorl %r12d, %ecx
  1592. addl %ebx, %r11d
  1593. vpor %xmm6, %xmm7, %xmm6
  1594. vpor %xmm8, %xmm9, %xmm8
  1595. # rnd_0: 7 - 7
  1596. rorl $2, %ecx
  1597. movl %r15d, %edx
  1598. addl %ecx, %r11d
  1599. # rnd_1: 0 - 1
  1600. rorl $14, %edx
  1601. movl %r12d, %ebx
  1602. movl %r8d, %ecx
  1603. addl 20(%rsp), %r10d
  1604. xorl %r9d, %ecx
  1605. vpsrld $3, %xmm5, %xmm9
  1606. vpxor %xmm6, %xmm8, %xmm6
  1607. # rnd_1: 2 - 3
  1608. xorl %r15d, %edx
  1609. andl %r15d, %ecx
  1610. rorl $5, %edx
  1611. xorl %r9d, %ecx
  1612. xorl %r15d, %edx
  1613. addl %ecx, %r10d
  1614. vpxor %xmm6, %xmm9, %xmm5
  1615. vpshufd $0xfa, %xmm0, %xmm6
  1616. # rnd_1: 4 - 5
  1617. rorl $6, %edx
  1618. xorl %r11d, %ebx
  1619. addl %edx, %r10d
  1620. movl %r11d, %ecx
  1621. andl %ebx, %eax
  1622. rorl $9, %ecx
  1623. xorl %r11d, %ecx
  1624. xorl %r12d, %eax
  1625. vpsrld $10, %xmm6, %xmm8
  1626. vpsrlq $19, %xmm6, %xmm7
  1627. # rnd_1: 6 - 7
  1628. rorl $11, %ecx
  1629. addl %r10d, %r14d
  1630. xorl %r11d, %ecx
  1631. addl %eax, %r10d
  1632. rorl $2, %ecx
  1633. movl %r14d, %edx
  1634. addl %ecx, %r10d
  1635. # rnd_0: 0 - 0
  1636. rorl $14, %edx
  1637. vpsrlq $0x11, %xmm6, %xmm6
  1638. vpaddd %xmm1, %xmm4, %xmm4
  1639. # rnd_0: 1 - 3
  1640. movl %r11d, %eax
  1641. movl %r15d, %ecx
  1642. addl 24(%rsp), %r9d
  1643. xorl %r8d, %ecx
  1644. xorl %r14d, %edx
  1645. andl %r14d, %ecx
  1646. rorl $5, %edx
  1647. xorl %r8d, %ecx
  1648. xorl %r14d, %edx
  1649. addl %ecx, %r9d
  1650. vpxor %xmm6, %xmm7, %xmm6
  1651. vpaddd %xmm5, %xmm4, %xmm4
  1652. # rnd_0: 4 - 4
  1653. rorl $6, %edx
  1654. xorl %r10d, %eax
  1655. addl %edx, %r9d
  1656. movl %r10d, %ecx
  1657. vpxor %xmm6, %xmm8, %xmm8
  1658. # rnd_0: 5 - 5
  1659. andl %eax, %ebx
  1660. rorl $9, %ecx
  1661. xorl %r10d, %ecx
  1662. xorl %r11d, %ebx
  1663. vpshufb %xmm11, %xmm8, %xmm8
  1664. # rnd_0: 6 - 6
  1665. rorl $11, %ecx
  1666. addl %r9d, %r13d
  1667. xorl %r10d, %ecx
  1668. addl %ebx, %r9d
  1669. vpaddd %xmm8, %xmm4, %xmm4
  1670. # rnd_0: 7 - 7
  1671. rorl $2, %ecx
  1672. movl %r13d, %edx
  1673. addl %ecx, %r9d
  1674. # rnd_1: 0 - 0
  1675. rorl $14, %edx
  1676. vpshufd $0x50, %xmm4, %xmm6
  1677. # rnd_1: 1 - 1
  1678. movl %r10d, %ebx
  1679. movl %r14d, %ecx
  1680. addl 28(%rsp), %r8d
  1681. xorl %r15d, %ecx
  1682. vpsrlq $0x11, %xmm6, %xmm8
  1683. vpsrlq $19, %xmm6, %xmm7
  1684. # rnd_1: 2 - 3
  1685. xorl %r13d, %edx
  1686. andl %r13d, %ecx
  1687. rorl $5, %edx
  1688. xorl %r15d, %ecx
  1689. xorl %r13d, %edx
  1690. addl %ecx, %r8d
  1691. vpsrld $10, %xmm6, %xmm9
  1692. vpxor %xmm8, %xmm7, %xmm8
  1693. # rnd_1: 4 - 5
  1694. rorl $6, %edx
  1695. xorl %r9d, %ebx
  1696. addl %edx, %r8d
  1697. movl %r9d, %ecx
  1698. andl %ebx, %eax
  1699. rorl $9, %ecx
  1700. xorl %r9d, %ecx
  1701. xorl %r10d, %eax
  1702. vpxor %xmm9, %xmm8, %xmm9
  1703. # rnd_1: 6 - 6
  1704. rorl $11, %ecx
  1705. addl %r8d, %r12d
  1706. xorl %r9d, %ecx
  1707. addl %eax, %r8d
  1708. vpshufb %xmm12, %xmm9, %xmm9
  1709. # rnd_1: 7 - 7
  1710. rorl $2, %ecx
  1711. movl %r12d, %edx
  1712. addl %ecx, %r8d
  1713. vpaddd %xmm4, %xmm9, %xmm1
  1714. # msg_sched done: 4-7
  1715. # msg_sched: 8-11
  1716. # rnd_0: 0 - 0
  1717. rorl $14, %edx
  1718. vpalignr $4, %xmm2, %xmm3, %xmm5
  1719. vpalignr $4, %xmm0, %xmm1, %xmm4
  1720. # rnd_0: 1 - 2
  1721. movl %r9d, %eax
  1722. movl %r13d, %ecx
  1723. addl 32(%rsp), %r15d
  1724. xorl %r14d, %ecx
  1725. xorl %r12d, %edx
  1726. andl %r12d, %ecx
  1727. vpsrld $7, %xmm5, %xmm6
  1728. vpslld $25, %xmm5, %xmm7
  1729. # rnd_0: 3 - 4
  1730. rorl $5, %edx
  1731. xorl %r14d, %ecx
  1732. xorl %r12d, %edx
  1733. addl %ecx, %r15d
  1734. rorl $6, %edx
  1735. xorl %r8d, %eax
  1736. addl %edx, %r15d
  1737. movl %r8d, %ecx
  1738. vpsrld $18, %xmm5, %xmm8
  1739. vpslld $14, %xmm5, %xmm9
  1740. # rnd_0: 5 - 6
  1741. andl %eax, %ebx
  1742. rorl $9, %ecx
  1743. xorl %r8d, %ecx
  1744. xorl %r9d, %ebx
  1745. rorl $11, %ecx
  1746. addl %r15d, %r11d
  1747. xorl %r8d, %ecx
  1748. addl %ebx, %r15d
  1749. vpor %xmm6, %xmm7, %xmm6
  1750. vpor %xmm8, %xmm9, %xmm8
  1751. # rnd_0: 7 - 7
  1752. rorl $2, %ecx
  1753. movl %r11d, %edx
  1754. addl %ecx, %r15d
  1755. # rnd_1: 0 - 1
  1756. rorl $14, %edx
  1757. movl %r8d, %ebx
  1758. movl %r12d, %ecx
  1759. addl 36(%rsp), %r14d
  1760. xorl %r13d, %ecx
  1761. vpsrld $3, %xmm5, %xmm9
  1762. vpxor %xmm6, %xmm8, %xmm6
  1763. # rnd_1: 2 - 3
  1764. xorl %r11d, %edx
  1765. andl %r11d, %ecx
  1766. rorl $5, %edx
  1767. xorl %r13d, %ecx
  1768. xorl %r11d, %edx
  1769. addl %ecx, %r14d
  1770. vpxor %xmm6, %xmm9, %xmm5
  1771. vpshufd $0xfa, %xmm1, %xmm6
  1772. # rnd_1: 4 - 5
  1773. rorl $6, %edx
  1774. xorl %r15d, %ebx
  1775. addl %edx, %r14d
  1776. movl %r15d, %ecx
  1777. andl %ebx, %eax
  1778. rorl $9, %ecx
  1779. xorl %r15d, %ecx
  1780. xorl %r8d, %eax
  1781. vpsrld $10, %xmm6, %xmm8
  1782. vpsrlq $19, %xmm6, %xmm7
  1783. # rnd_1: 6 - 7
  1784. rorl $11, %ecx
  1785. addl %r14d, %r10d
  1786. xorl %r15d, %ecx
  1787. addl %eax, %r14d
  1788. rorl $2, %ecx
  1789. movl %r10d, %edx
  1790. addl %ecx, %r14d
  1791. # rnd_0: 0 - 0
  1792. rorl $14, %edx
  1793. vpsrlq $0x11, %xmm6, %xmm6
  1794. vpaddd %xmm2, %xmm4, %xmm4
  1795. # rnd_0: 1 - 3
  1796. movl %r15d, %eax
  1797. movl %r11d, %ecx
  1798. addl 40(%rsp), %r13d
  1799. xorl %r12d, %ecx
  1800. xorl %r10d, %edx
  1801. andl %r10d, %ecx
  1802. rorl $5, %edx
  1803. xorl %r12d, %ecx
  1804. xorl %r10d, %edx
  1805. addl %ecx, %r13d
  1806. vpxor %xmm6, %xmm7, %xmm6
  1807. vpaddd %xmm5, %xmm4, %xmm4
  1808. # rnd_0: 4 - 4
  1809. rorl $6, %edx
  1810. xorl %r14d, %eax
  1811. addl %edx, %r13d
  1812. movl %r14d, %ecx
  1813. vpxor %xmm6, %xmm8, %xmm8
  1814. # rnd_0: 5 - 5
  1815. andl %eax, %ebx
  1816. rorl $9, %ecx
  1817. xorl %r14d, %ecx
  1818. xorl %r15d, %ebx
  1819. vpshufb %xmm11, %xmm8, %xmm8
  1820. # rnd_0: 6 - 6
  1821. rorl $11, %ecx
  1822. addl %r13d, %r9d
  1823. xorl %r14d, %ecx
  1824. addl %ebx, %r13d
  1825. vpaddd %xmm8, %xmm4, %xmm4
  1826. # rnd_0: 7 - 7
  1827. rorl $2, %ecx
  1828. movl %r9d, %edx
  1829. addl %ecx, %r13d
  1830. # rnd_1: 0 - 0
  1831. rorl $14, %edx
  1832. vpshufd $0x50, %xmm4, %xmm6
  1833. # rnd_1: 1 - 1
  1834. movl %r14d, %ebx
  1835. movl %r10d, %ecx
  1836. addl 44(%rsp), %r12d
  1837. xorl %r11d, %ecx
  1838. vpsrlq $0x11, %xmm6, %xmm8
  1839. vpsrlq $19, %xmm6, %xmm7
  1840. # rnd_1: 2 - 3
  1841. xorl %r9d, %edx
  1842. andl %r9d, %ecx
  1843. rorl $5, %edx
  1844. xorl %r11d, %ecx
  1845. xorl %r9d, %edx
  1846. addl %ecx, %r12d
  1847. vpsrld $10, %xmm6, %xmm9
  1848. vpxor %xmm8, %xmm7, %xmm8
  1849. # rnd_1: 4 - 5
  1850. rorl $6, %edx
  1851. xorl %r13d, %ebx
  1852. addl %edx, %r12d
  1853. movl %r13d, %ecx
  1854. andl %ebx, %eax
  1855. rorl $9, %ecx
  1856. xorl %r13d, %ecx
  1857. xorl %r14d, %eax
  1858. vpxor %xmm9, %xmm8, %xmm9
  1859. # rnd_1: 6 - 6
  1860. rorl $11, %ecx
  1861. addl %r12d, %r8d
  1862. xorl %r13d, %ecx
  1863. addl %eax, %r12d
  1864. vpshufb %xmm12, %xmm9, %xmm9
  1865. # rnd_1: 7 - 7
  1866. rorl $2, %ecx
  1867. movl %r8d, %edx
  1868. addl %ecx, %r12d
  1869. vpaddd %xmm4, %xmm9, %xmm2
  1870. # msg_sched done: 8-11
  1871. # msg_sched: 12-15
  1872. # rnd_0: 0 - 0
  1873. rorl $14, %edx
  1874. vpalignr $4, %xmm3, %xmm0, %xmm5
  1875. vpalignr $4, %xmm1, %xmm2, %xmm4
  1876. # rnd_0: 1 - 2
  1877. movl %r13d, %eax
  1878. movl %r9d, %ecx
  1879. addl 48(%rsp), %r11d
  1880. xorl %r10d, %ecx
  1881. xorl %r8d, %edx
  1882. andl %r8d, %ecx
  1883. vpsrld $7, %xmm5, %xmm6
  1884. vpslld $25, %xmm5, %xmm7
  1885. # rnd_0: 3 - 4
  1886. rorl $5, %edx
  1887. xorl %r10d, %ecx
  1888. xorl %r8d, %edx
  1889. addl %ecx, %r11d
  1890. rorl $6, %edx
  1891. xorl %r12d, %eax
  1892. addl %edx, %r11d
  1893. movl %r12d, %ecx
  1894. vpsrld $18, %xmm5, %xmm8
  1895. vpslld $14, %xmm5, %xmm9
  1896. # rnd_0: 5 - 6
  1897. andl %eax, %ebx
  1898. rorl $9, %ecx
  1899. xorl %r12d, %ecx
  1900. xorl %r13d, %ebx
  1901. rorl $11, %ecx
  1902. addl %r11d, %r15d
  1903. xorl %r12d, %ecx
  1904. addl %ebx, %r11d
  1905. vpor %xmm6, %xmm7, %xmm6
  1906. vpor %xmm8, %xmm9, %xmm8
  1907. # rnd_0: 7 - 7
  1908. rorl $2, %ecx
  1909. movl %r15d, %edx
  1910. addl %ecx, %r11d
  1911. # rnd_1: 0 - 1
  1912. rorl $14, %edx
  1913. movl %r12d, %ebx
  1914. movl %r8d, %ecx
  1915. addl 52(%rsp), %r10d
  1916. xorl %r9d, %ecx
  1917. vpsrld $3, %xmm5, %xmm9
  1918. vpxor %xmm6, %xmm8, %xmm6
  1919. # rnd_1: 2 - 3
  1920. xorl %r15d, %edx
  1921. andl %r15d, %ecx
  1922. rorl $5, %edx
  1923. xorl %r9d, %ecx
  1924. xorl %r15d, %edx
  1925. addl %ecx, %r10d
  1926. vpxor %xmm6, %xmm9, %xmm5
  1927. vpshufd $0xfa, %xmm2, %xmm6
  1928. # rnd_1: 4 - 5
  1929. rorl $6, %edx
  1930. xorl %r11d, %ebx
  1931. addl %edx, %r10d
  1932. movl %r11d, %ecx
  1933. andl %ebx, %eax
  1934. rorl $9, %ecx
  1935. xorl %r11d, %ecx
  1936. xorl %r12d, %eax
  1937. vpsrld $10, %xmm6, %xmm8
  1938. vpsrlq $19, %xmm6, %xmm7
  1939. # rnd_1: 6 - 7
  1940. rorl $11, %ecx
  1941. addl %r10d, %r14d
  1942. xorl %r11d, %ecx
  1943. addl %eax, %r10d
  1944. rorl $2, %ecx
  1945. movl %r14d, %edx
  1946. addl %ecx, %r10d
  1947. # rnd_0: 0 - 0
  1948. rorl $14, %edx
  1949. vpsrlq $0x11, %xmm6, %xmm6
  1950. vpaddd %xmm3, %xmm4, %xmm4
  1951. # rnd_0: 1 - 3
  1952. movl %r11d, %eax
  1953. movl %r15d, %ecx
  1954. addl 56(%rsp), %r9d
  1955. xorl %r8d, %ecx
  1956. xorl %r14d, %edx
  1957. andl %r14d, %ecx
  1958. rorl $5, %edx
  1959. xorl %r8d, %ecx
  1960. xorl %r14d, %edx
  1961. addl %ecx, %r9d
  1962. vpxor %xmm6, %xmm7, %xmm6
  1963. vpaddd %xmm5, %xmm4, %xmm4
  1964. # rnd_0: 4 - 4
  1965. rorl $6, %edx
  1966. xorl %r10d, %eax
  1967. addl %edx, %r9d
  1968. movl %r10d, %ecx
  1969. vpxor %xmm6, %xmm8, %xmm8
  1970. # rnd_0: 5 - 5
  1971. andl %eax, %ebx
  1972. rorl $9, %ecx
  1973. xorl %r10d, %ecx
  1974. xorl %r11d, %ebx
  1975. vpshufb %xmm11, %xmm8, %xmm8
  1976. # rnd_0: 6 - 6
  1977. rorl $11, %ecx
  1978. addl %r9d, %r13d
  1979. xorl %r10d, %ecx
  1980. addl %ebx, %r9d
  1981. vpaddd %xmm8, %xmm4, %xmm4
  1982. # rnd_0: 7 - 7
  1983. rorl $2, %ecx
  1984. movl %r13d, %edx
  1985. addl %ecx, %r9d
  1986. # rnd_1: 0 - 0
  1987. rorl $14, %edx
  1988. vpshufd $0x50, %xmm4, %xmm6
  1989. # rnd_1: 1 - 1
  1990. movl %r10d, %ebx
  1991. movl %r14d, %ecx
  1992. addl 60(%rsp), %r8d
  1993. xorl %r15d, %ecx
  1994. vpsrlq $0x11, %xmm6, %xmm8
  1995. vpsrlq $19, %xmm6, %xmm7
  1996. # rnd_1: 2 - 3
  1997. xorl %r13d, %edx
  1998. andl %r13d, %ecx
  1999. rorl $5, %edx
  2000. xorl %r15d, %ecx
  2001. xorl %r13d, %edx
  2002. addl %ecx, %r8d
  2003. vpsrld $10, %xmm6, %xmm9
  2004. vpxor %xmm8, %xmm7, %xmm8
  2005. # rnd_1: 4 - 5
  2006. rorl $6, %edx
  2007. xorl %r9d, %ebx
  2008. addl %edx, %r8d
  2009. movl %r9d, %ecx
  2010. andl %ebx, %eax
  2011. rorl $9, %ecx
  2012. xorl %r9d, %ecx
  2013. xorl %r10d, %eax
  2014. vpxor %xmm9, %xmm8, %xmm9
  2015. # rnd_1: 6 - 6
  2016. rorl $11, %ecx
  2017. addl %r8d, %r12d
  2018. xorl %r9d, %ecx
  2019. addl %eax, %r8d
  2020. vpshufb %xmm12, %xmm9, %xmm9
  2021. # rnd_1: 7 - 7
  2022. rorl $2, %ecx
  2023. movl %r12d, %edx
  2024. addl %ecx, %r8d
  2025. vpaddd %xmm4, %xmm9, %xmm3
  2026. # msg_sched done: 12-15
  2027. # set_w_k_xfer_4: 12
  2028. vpaddd 192+L_avx1_sha256_k(%rip), %xmm0, %xmm4
  2029. vpaddd 208+L_avx1_sha256_k(%rip), %xmm1, %xmm5
  2030. vmovdqu %xmm4, (%rsp)
  2031. vmovdqu %xmm5, 16(%rsp)
  2032. vpaddd 224+L_avx1_sha256_k(%rip), %xmm2, %xmm6
  2033. vpaddd 240+L_avx1_sha256_k(%rip), %xmm3, %xmm7
  2034. vmovdqu %xmm6, 32(%rsp)
  2035. vmovdqu %xmm7, 48(%rsp)
  2036. # rnd_all_4: 0-3
  2037. addl (%rsp), %r15d
  2038. movl %r13d, %ecx
  2039. movl %r9d, %eax
  2040. xorl %r14d, %ecx
  2041. rorl $14, %edx
  2042. andl %r12d, %ecx
  2043. xorl %r12d, %edx
  2044. xorl %r14d, %ecx
  2045. rorl $5, %edx
  2046. addl %ecx, %r15d
  2047. xorl %r12d, %edx
  2048. xorl %r8d, %eax
  2049. rorl $6, %edx
  2050. movl %r8d, %ecx
  2051. addl %edx, %r15d
  2052. rorl $9, %ecx
  2053. andl %eax, %ebx
  2054. xorl %r8d, %ecx
  2055. xorl %r9d, %ebx
  2056. rorl $11, %ecx
  2057. addl %r15d, %r11d
  2058. xorl %r8d, %ecx
  2059. addl %ebx, %r15d
  2060. rorl $2, %ecx
  2061. movl %r11d, %edx
  2062. addl %ecx, %r15d
  2063. addl 4(%rsp), %r14d
  2064. movl %r12d, %ecx
  2065. movl %r8d, %ebx
  2066. xorl %r13d, %ecx
  2067. rorl $14, %edx
  2068. andl %r11d, %ecx
  2069. xorl %r11d, %edx
  2070. xorl %r13d, %ecx
  2071. rorl $5, %edx
  2072. addl %ecx, %r14d
  2073. xorl %r11d, %edx
  2074. xorl %r15d, %ebx
  2075. rorl $6, %edx
  2076. movl %r15d, %ecx
  2077. addl %edx, %r14d
  2078. rorl $9, %ecx
  2079. andl %ebx, %eax
  2080. xorl %r15d, %ecx
  2081. xorl %r8d, %eax
  2082. rorl $11, %ecx
  2083. addl %r14d, %r10d
  2084. xorl %r15d, %ecx
  2085. addl %eax, %r14d
  2086. rorl $2, %ecx
  2087. movl %r10d, %edx
  2088. addl %ecx, %r14d
  2089. addl 8(%rsp), %r13d
  2090. movl %r11d, %ecx
  2091. movl %r15d, %eax
  2092. xorl %r12d, %ecx
  2093. rorl $14, %edx
  2094. andl %r10d, %ecx
  2095. xorl %r10d, %edx
  2096. xorl %r12d, %ecx
  2097. rorl $5, %edx
  2098. addl %ecx, %r13d
  2099. xorl %r10d, %edx
  2100. xorl %r14d, %eax
  2101. rorl $6, %edx
  2102. movl %r14d, %ecx
  2103. addl %edx, %r13d
  2104. rorl $9, %ecx
  2105. andl %eax, %ebx
  2106. xorl %r14d, %ecx
  2107. xorl %r15d, %ebx
  2108. rorl $11, %ecx
  2109. addl %r13d, %r9d
  2110. xorl %r14d, %ecx
  2111. addl %ebx, %r13d
  2112. rorl $2, %ecx
  2113. movl %r9d, %edx
  2114. addl %ecx, %r13d
  2115. addl 12(%rsp), %r12d
  2116. movl %r10d, %ecx
  2117. movl %r14d, %ebx
  2118. xorl %r11d, %ecx
  2119. rorl $14, %edx
  2120. andl %r9d, %ecx
  2121. xorl %r9d, %edx
  2122. xorl %r11d, %ecx
  2123. rorl $5, %edx
  2124. addl %ecx, %r12d
  2125. xorl %r9d, %edx
  2126. xorl %r13d, %ebx
  2127. rorl $6, %edx
  2128. movl %r13d, %ecx
  2129. addl %edx, %r12d
  2130. rorl $9, %ecx
  2131. andl %ebx, %eax
  2132. xorl %r13d, %ecx
  2133. xorl %r14d, %eax
  2134. rorl $11, %ecx
  2135. addl %r12d, %r8d
  2136. xorl %r13d, %ecx
  2137. addl %eax, %r12d
  2138. rorl $2, %ecx
  2139. movl %r8d, %edx
  2140. addl %ecx, %r12d
  2141. # rnd_all_4: 1-4
  2142. addl 16(%rsp), %r11d
  2143. movl %r9d, %ecx
  2144. movl %r13d, %eax
  2145. xorl %r10d, %ecx
  2146. rorl $14, %edx
  2147. andl %r8d, %ecx
  2148. xorl %r8d, %edx
  2149. xorl %r10d, %ecx
  2150. rorl $5, %edx
  2151. addl %ecx, %r11d
  2152. xorl %r8d, %edx
  2153. xorl %r12d, %eax
  2154. rorl $6, %edx
  2155. movl %r12d, %ecx
  2156. addl %edx, %r11d
  2157. rorl $9, %ecx
  2158. andl %eax, %ebx
  2159. xorl %r12d, %ecx
  2160. xorl %r13d, %ebx
  2161. rorl $11, %ecx
  2162. addl %r11d, %r15d
  2163. xorl %r12d, %ecx
  2164. addl %ebx, %r11d
  2165. rorl $2, %ecx
  2166. movl %r15d, %edx
  2167. addl %ecx, %r11d
  2168. addl 20(%rsp), %r10d
  2169. movl %r8d, %ecx
  2170. movl %r12d, %ebx
  2171. xorl %r9d, %ecx
  2172. rorl $14, %edx
  2173. andl %r15d, %ecx
  2174. xorl %r15d, %edx
  2175. xorl %r9d, %ecx
  2176. rorl $5, %edx
  2177. addl %ecx, %r10d
  2178. xorl %r15d, %edx
  2179. xorl %r11d, %ebx
  2180. rorl $6, %edx
  2181. movl %r11d, %ecx
  2182. addl %edx, %r10d
  2183. rorl $9, %ecx
  2184. andl %ebx, %eax
  2185. xorl %r11d, %ecx
  2186. xorl %r12d, %eax
  2187. rorl $11, %ecx
  2188. addl %r10d, %r14d
  2189. xorl %r11d, %ecx
  2190. addl %eax, %r10d
  2191. rorl $2, %ecx
  2192. movl %r14d, %edx
  2193. addl %ecx, %r10d
  2194. addl 24(%rsp), %r9d
  2195. movl %r15d, %ecx
  2196. movl %r11d, %eax
  2197. xorl %r8d, %ecx
  2198. rorl $14, %edx
  2199. andl %r14d, %ecx
  2200. xorl %r14d, %edx
  2201. xorl %r8d, %ecx
  2202. rorl $5, %edx
  2203. addl %ecx, %r9d
  2204. xorl %r14d, %edx
  2205. xorl %r10d, %eax
  2206. rorl $6, %edx
  2207. movl %r10d, %ecx
  2208. addl %edx, %r9d
  2209. rorl $9, %ecx
  2210. andl %eax, %ebx
  2211. xorl %r10d, %ecx
  2212. xorl %r11d, %ebx
  2213. rorl $11, %ecx
  2214. addl %r9d, %r13d
  2215. xorl %r10d, %ecx
  2216. addl %ebx, %r9d
  2217. rorl $2, %ecx
  2218. movl %r13d, %edx
  2219. addl %ecx, %r9d
  2220. addl 28(%rsp), %r8d
  2221. movl %r14d, %ecx
  2222. movl %r10d, %ebx
  2223. xorl %r15d, %ecx
  2224. rorl $14, %edx
  2225. andl %r13d, %ecx
  2226. xorl %r13d, %edx
  2227. xorl %r15d, %ecx
  2228. rorl $5, %edx
  2229. addl %ecx, %r8d
  2230. xorl %r13d, %edx
  2231. xorl %r9d, %ebx
  2232. rorl $6, %edx
  2233. movl %r9d, %ecx
  2234. addl %edx, %r8d
  2235. rorl $9, %ecx
  2236. andl %ebx, %eax
  2237. xorl %r9d, %ecx
  2238. xorl %r10d, %eax
  2239. rorl $11, %ecx
  2240. addl %r8d, %r12d
  2241. xorl %r9d, %ecx
  2242. addl %eax, %r8d
  2243. rorl $2, %ecx
  2244. movl %r12d, %edx
  2245. addl %ecx, %r8d
  2246. # rnd_all_4: 2-5
  2247. addl 32(%rsp), %r15d
  2248. movl %r13d, %ecx
  2249. movl %r9d, %eax
  2250. xorl %r14d, %ecx
  2251. rorl $14, %edx
  2252. andl %r12d, %ecx
  2253. xorl %r12d, %edx
  2254. xorl %r14d, %ecx
  2255. rorl $5, %edx
  2256. addl %ecx, %r15d
  2257. xorl %r12d, %edx
  2258. xorl %r8d, %eax
  2259. rorl $6, %edx
  2260. movl %r8d, %ecx
  2261. addl %edx, %r15d
  2262. rorl $9, %ecx
  2263. andl %eax, %ebx
  2264. xorl %r8d, %ecx
  2265. xorl %r9d, %ebx
  2266. rorl $11, %ecx
  2267. addl %r15d, %r11d
  2268. xorl %r8d, %ecx
  2269. addl %ebx, %r15d
  2270. rorl $2, %ecx
  2271. movl %r11d, %edx
  2272. addl %ecx, %r15d
  2273. addl 36(%rsp), %r14d
  2274. movl %r12d, %ecx
  2275. movl %r8d, %ebx
  2276. xorl %r13d, %ecx
  2277. rorl $14, %edx
  2278. andl %r11d, %ecx
  2279. xorl %r11d, %edx
  2280. xorl %r13d, %ecx
  2281. rorl $5, %edx
  2282. addl %ecx, %r14d
  2283. xorl %r11d, %edx
  2284. xorl %r15d, %ebx
  2285. rorl $6, %edx
  2286. movl %r15d, %ecx
  2287. addl %edx, %r14d
  2288. rorl $9, %ecx
  2289. andl %ebx, %eax
  2290. xorl %r15d, %ecx
  2291. xorl %r8d, %eax
  2292. rorl $11, %ecx
  2293. addl %r14d, %r10d
  2294. xorl %r15d, %ecx
  2295. addl %eax, %r14d
  2296. rorl $2, %ecx
  2297. movl %r10d, %edx
  2298. addl %ecx, %r14d
  2299. addl 40(%rsp), %r13d
  2300. movl %r11d, %ecx
  2301. movl %r15d, %eax
  2302. xorl %r12d, %ecx
  2303. rorl $14, %edx
  2304. andl %r10d, %ecx
  2305. xorl %r10d, %edx
  2306. xorl %r12d, %ecx
  2307. rorl $5, %edx
  2308. addl %ecx, %r13d
  2309. xorl %r10d, %edx
  2310. xorl %r14d, %eax
  2311. rorl $6, %edx
  2312. movl %r14d, %ecx
  2313. addl %edx, %r13d
  2314. rorl $9, %ecx
  2315. andl %eax, %ebx
  2316. xorl %r14d, %ecx
  2317. xorl %r15d, %ebx
  2318. rorl $11, %ecx
  2319. addl %r13d, %r9d
  2320. xorl %r14d, %ecx
  2321. addl %ebx, %r13d
  2322. rorl $2, %ecx
  2323. movl %r9d, %edx
  2324. addl %ecx, %r13d
  2325. addl 44(%rsp), %r12d
  2326. movl %r10d, %ecx
  2327. movl %r14d, %ebx
  2328. xorl %r11d, %ecx
  2329. rorl $14, %edx
  2330. andl %r9d, %ecx
  2331. xorl %r9d, %edx
  2332. xorl %r11d, %ecx
  2333. rorl $5, %edx
  2334. addl %ecx, %r12d
  2335. xorl %r9d, %edx
  2336. xorl %r13d, %ebx
  2337. rorl $6, %edx
  2338. movl %r13d, %ecx
  2339. addl %edx, %r12d
  2340. rorl $9, %ecx
  2341. andl %ebx, %eax
  2342. xorl %r13d, %ecx
  2343. xorl %r14d, %eax
  2344. rorl $11, %ecx
  2345. addl %r12d, %r8d
  2346. xorl %r13d, %ecx
  2347. addl %eax, %r12d
  2348. rorl $2, %ecx
  2349. movl %r8d, %edx
  2350. addl %ecx, %r12d
  2351. # rnd_all_4: 3-6
  2352. addl 48(%rsp), %r11d
  2353. movl %r9d, %ecx
  2354. movl %r13d, %eax
  2355. xorl %r10d, %ecx
  2356. rorl $14, %edx
  2357. andl %r8d, %ecx
  2358. xorl %r8d, %edx
  2359. xorl %r10d, %ecx
  2360. rorl $5, %edx
  2361. addl %ecx, %r11d
  2362. xorl %r8d, %edx
  2363. xorl %r12d, %eax
  2364. rorl $6, %edx
  2365. movl %r12d, %ecx
  2366. addl %edx, %r11d
  2367. rorl $9, %ecx
  2368. andl %eax, %ebx
  2369. xorl %r12d, %ecx
  2370. xorl %r13d, %ebx
  2371. rorl $11, %ecx
  2372. addl %r11d, %r15d
  2373. xorl %r12d, %ecx
  2374. addl %ebx, %r11d
  2375. rorl $2, %ecx
  2376. movl %r15d, %edx
  2377. addl %ecx, %r11d
  2378. addl 52(%rsp), %r10d
  2379. movl %r8d, %ecx
  2380. movl %r12d, %ebx
  2381. xorl %r9d, %ecx
  2382. rorl $14, %edx
  2383. andl %r15d, %ecx
  2384. xorl %r15d, %edx
  2385. xorl %r9d, %ecx
  2386. rorl $5, %edx
  2387. addl %ecx, %r10d
  2388. xorl %r15d, %edx
  2389. xorl %r11d, %ebx
  2390. rorl $6, %edx
  2391. movl %r11d, %ecx
  2392. addl %edx, %r10d
  2393. rorl $9, %ecx
  2394. andl %ebx, %eax
  2395. xorl %r11d, %ecx
  2396. xorl %r12d, %eax
  2397. rorl $11, %ecx
  2398. addl %r10d, %r14d
  2399. xorl %r11d, %ecx
  2400. addl %eax, %r10d
  2401. rorl $2, %ecx
  2402. movl %r14d, %edx
  2403. addl %ecx, %r10d
  2404. addl 56(%rsp), %r9d
  2405. movl %r15d, %ecx
  2406. movl %r11d, %eax
  2407. xorl %r8d, %ecx
  2408. rorl $14, %edx
  2409. andl %r14d, %ecx
  2410. xorl %r14d, %edx
  2411. xorl %r8d, %ecx
  2412. rorl $5, %edx
  2413. addl %ecx, %r9d
  2414. xorl %r14d, %edx
  2415. xorl %r10d, %eax
  2416. rorl $6, %edx
  2417. movl %r10d, %ecx
  2418. addl %edx, %r9d
  2419. rorl $9, %ecx
  2420. andl %eax, %ebx
  2421. xorl %r10d, %ecx
  2422. xorl %r11d, %ebx
  2423. rorl $11, %ecx
  2424. addl %r9d, %r13d
  2425. xorl %r10d, %ecx
  2426. addl %ebx, %r9d
  2427. rorl $2, %ecx
  2428. movl %r13d, %edx
  2429. addl %ecx, %r9d
  2430. addl 60(%rsp), %r8d
  2431. movl %r14d, %ecx
  2432. movl %r10d, %ebx
  2433. xorl %r15d, %ecx
  2434. rorl $14, %edx
  2435. andl %r13d, %ecx
  2436. xorl %r13d, %edx
  2437. xorl %r15d, %ecx
  2438. rorl $5, %edx
  2439. addl %ecx, %r8d
  2440. xorl %r13d, %edx
  2441. xorl %r9d, %ebx
  2442. rorl $6, %edx
  2443. movl %r9d, %ecx
  2444. addl %edx, %r8d
  2445. rorl $9, %ecx
  2446. andl %ebx, %eax
  2447. xorl %r9d, %ecx
  2448. xorl %r10d, %eax
  2449. rorl $11, %ecx
  2450. addl %r8d, %r12d
  2451. xorl %r9d, %ecx
  2452. addl %eax, %r8d
  2453. rorl $2, %ecx
  2454. movl %r12d, %edx
  2455. addl %ecx, %r8d
  2456. addl %r8d, (%rdi)
  2457. addl %r9d, 4(%rdi)
  2458. addl %r10d, 8(%rdi)
  2459. addl %r11d, 12(%rdi)
  2460. addl %r12d, 16(%rdi)
  2461. addl %r13d, 20(%rdi)
  2462. addl %r14d, 24(%rdi)
  2463. addl %r15d, 28(%rdi)
  2464. xorq %rax, %rax
  2465. vzeroupper
  2466. addq $0x40, %rsp
  2467. popq %r15
  2468. popq %r14
  2469. popq %r13
  2470. popq %r12
  2471. popq %rbx
  2472. repz retq
  2473. #ifndef __APPLE__
  2474. .size Transform_Sha256_AVX1,.-Transform_Sha256_AVX1
  2475. #endif /* __APPLE__ */
  2476. #ifndef __APPLE__
  2477. .text
  2478. .globl Transform_Sha256_AVX1_Len
  2479. .type Transform_Sha256_AVX1_Len,@function
  2480. .align 16
  2481. Transform_Sha256_AVX1_Len:
  2482. #else
  2483. .section __TEXT,__text
  2484. .globl _Transform_Sha256_AVX1_Len
  2485. .p2align 4
  2486. _Transform_Sha256_AVX1_Len:
  2487. #endif /* __APPLE__ */
  2488. pushq %rbx
  2489. pushq %r12
  2490. pushq %r13
  2491. pushq %r14
  2492. pushq %r15
  2493. pushq %rbp
  2494. movq %rsi, %rbp
  2495. movq %rdx, %rsi
  2496. subq $0x40, %rsp
  2497. vmovdqa L_avx1_sha256_flip_mask(%rip), %xmm13
  2498. vmovdqa L_avx1_sha256_shuf_00BA(%rip), %xmm11
  2499. vmovdqa L_avx1_sha256_shuf_DC00(%rip), %xmm12
  2500. movl (%rdi), %r8d
  2501. movl 4(%rdi), %r9d
  2502. movl 8(%rdi), %r10d
  2503. movl 12(%rdi), %r11d
  2504. movl 16(%rdi), %r12d
  2505. movl 20(%rdi), %r13d
  2506. movl 24(%rdi), %r14d
  2507. movl 28(%rdi), %r15d
  2508. # Start of loop processing a block
  2509. L_sha256_len_avx1_start:
  2510. # X0, X1, X2, X3 = W[0..15]
  2511. vmovdqu (%rbp), %xmm0
  2512. vmovdqu 16(%rbp), %xmm1
  2513. vpshufb %xmm13, %xmm0, %xmm0
  2514. vpshufb %xmm13, %xmm1, %xmm1
  2515. vmovdqu 32(%rbp), %xmm2
  2516. vmovdqu 48(%rbp), %xmm3
  2517. vpshufb %xmm13, %xmm2, %xmm2
  2518. vpshufb %xmm13, %xmm3, %xmm3
  2519. movl %r9d, %ebx
  2520. movl %r12d, %edx
  2521. xorl %r10d, %ebx
  2522. # set_w_k_xfer_4: 0
  2523. vpaddd 0+L_avx1_sha256_k(%rip), %xmm0, %xmm4
  2524. vpaddd 16+L_avx1_sha256_k(%rip), %xmm1, %xmm5
  2525. vmovdqu %xmm4, (%rsp)
  2526. vmovdqu %xmm5, 16(%rsp)
  2527. vpaddd 32+L_avx1_sha256_k(%rip), %xmm2, %xmm6
  2528. vpaddd 48+L_avx1_sha256_k(%rip), %xmm3, %xmm7
  2529. vmovdqu %xmm6, 32(%rsp)
  2530. vmovdqu %xmm7, 48(%rsp)
  2531. # msg_sched: 0-3
  2532. # rnd_0: 0 - 0
  2533. rorl $14, %edx
  2534. vpalignr $4, %xmm0, %xmm1, %xmm5
  2535. vpalignr $4, %xmm2, %xmm3, %xmm4
  2536. # rnd_0: 1 - 2
  2537. movl %r9d, %eax
  2538. movl %r13d, %ecx
  2539. addl (%rsp), %r15d
  2540. xorl %r14d, %ecx
  2541. xorl %r12d, %edx
  2542. andl %r12d, %ecx
  2543. vpsrld $7, %xmm5, %xmm6
  2544. vpslld $25, %xmm5, %xmm7
  2545. # rnd_0: 3 - 4
  2546. rorl $5, %edx
  2547. xorl %r14d, %ecx
  2548. xorl %r12d, %edx
  2549. addl %ecx, %r15d
  2550. rorl $6, %edx
  2551. xorl %r8d, %eax
  2552. addl %edx, %r15d
  2553. movl %r8d, %ecx
  2554. vpsrld $18, %xmm5, %xmm8
  2555. vpslld $14, %xmm5, %xmm9
  2556. # rnd_0: 5 - 6
  2557. andl %eax, %ebx
  2558. rorl $9, %ecx
  2559. xorl %r8d, %ecx
  2560. xorl %r9d, %ebx
  2561. rorl $11, %ecx
  2562. addl %r15d, %r11d
  2563. xorl %r8d, %ecx
  2564. addl %ebx, %r15d
  2565. vpor %xmm6, %xmm7, %xmm6
  2566. vpor %xmm8, %xmm9, %xmm8
  2567. # rnd_0: 7 - 7
  2568. rorl $2, %ecx
  2569. movl %r11d, %edx
  2570. addl %ecx, %r15d
  2571. # rnd_1: 0 - 1
  2572. rorl $14, %edx
  2573. movl %r8d, %ebx
  2574. movl %r12d, %ecx
  2575. addl 4(%rsp), %r14d
  2576. xorl %r13d, %ecx
  2577. vpsrld $3, %xmm5, %xmm9
  2578. vpxor %xmm6, %xmm8, %xmm6
  2579. # rnd_1: 2 - 3
  2580. xorl %r11d, %edx
  2581. andl %r11d, %ecx
  2582. rorl $5, %edx
  2583. xorl %r13d, %ecx
  2584. xorl %r11d, %edx
  2585. addl %ecx, %r14d
  2586. vpxor %xmm6, %xmm9, %xmm5
  2587. vpshufd $0xfa, %xmm3, %xmm6
  2588. # rnd_1: 4 - 5
  2589. rorl $6, %edx
  2590. xorl %r15d, %ebx
  2591. addl %edx, %r14d
  2592. movl %r15d, %ecx
  2593. andl %ebx, %eax
  2594. rorl $9, %ecx
  2595. xorl %r15d, %ecx
  2596. xorl %r8d, %eax
  2597. vpsrld $10, %xmm6, %xmm8
  2598. vpsrlq $19, %xmm6, %xmm7
  2599. # rnd_1: 6 - 7
  2600. rorl $11, %ecx
  2601. addl %r14d, %r10d
  2602. xorl %r15d, %ecx
  2603. addl %eax, %r14d
  2604. rorl $2, %ecx
  2605. movl %r10d, %edx
  2606. addl %ecx, %r14d
  2607. # rnd_0: 0 - 0
  2608. rorl $14, %edx
  2609. vpsrlq $0x11, %xmm6, %xmm6
  2610. vpaddd %xmm0, %xmm4, %xmm4
  2611. # rnd_0: 1 - 3
  2612. movl %r15d, %eax
  2613. movl %r11d, %ecx
  2614. addl 8(%rsp), %r13d
  2615. xorl %r12d, %ecx
  2616. xorl %r10d, %edx
  2617. andl %r10d, %ecx
  2618. rorl $5, %edx
  2619. xorl %r12d, %ecx
  2620. xorl %r10d, %edx
  2621. addl %ecx, %r13d
  2622. vpxor %xmm6, %xmm7, %xmm6
  2623. vpaddd %xmm5, %xmm4, %xmm4
  2624. # rnd_0: 4 - 4
  2625. rorl $6, %edx
  2626. xorl %r14d, %eax
  2627. addl %edx, %r13d
  2628. movl %r14d, %ecx
  2629. vpxor %xmm6, %xmm8, %xmm8
  2630. # rnd_0: 5 - 5
  2631. andl %eax, %ebx
  2632. rorl $9, %ecx
  2633. xorl %r14d, %ecx
  2634. xorl %r15d, %ebx
  2635. vpshufb %xmm11, %xmm8, %xmm8
  2636. # rnd_0: 6 - 6
  2637. rorl $11, %ecx
  2638. addl %r13d, %r9d
  2639. xorl %r14d, %ecx
  2640. addl %ebx, %r13d
  2641. vpaddd %xmm8, %xmm4, %xmm4
  2642. # rnd_0: 7 - 7
  2643. rorl $2, %ecx
  2644. movl %r9d, %edx
  2645. addl %ecx, %r13d
  2646. # rnd_1: 0 - 0
  2647. rorl $14, %edx
  2648. vpshufd $0x50, %xmm4, %xmm6
  2649. # rnd_1: 1 - 1
  2650. movl %r14d, %ebx
  2651. movl %r10d, %ecx
  2652. addl 12(%rsp), %r12d
  2653. xorl %r11d, %ecx
  2654. vpsrlq $0x11, %xmm6, %xmm8
  2655. vpsrlq $19, %xmm6, %xmm7
  2656. # rnd_1: 2 - 3
  2657. xorl %r9d, %edx
  2658. andl %r9d, %ecx
  2659. rorl $5, %edx
  2660. xorl %r11d, %ecx
  2661. xorl %r9d, %edx
  2662. addl %ecx, %r12d
  2663. vpsrld $10, %xmm6, %xmm9
  2664. vpxor %xmm8, %xmm7, %xmm8
  2665. # rnd_1: 4 - 5
  2666. rorl $6, %edx
  2667. xorl %r13d, %ebx
  2668. addl %edx, %r12d
  2669. movl %r13d, %ecx
  2670. andl %ebx, %eax
  2671. rorl $9, %ecx
  2672. xorl %r13d, %ecx
  2673. xorl %r14d, %eax
  2674. vpxor %xmm9, %xmm8, %xmm9
  2675. # rnd_1: 6 - 6
  2676. rorl $11, %ecx
  2677. addl %r12d, %r8d
  2678. xorl %r13d, %ecx
  2679. addl %eax, %r12d
  2680. vpshufb %xmm12, %xmm9, %xmm9
  2681. # rnd_1: 7 - 7
  2682. rorl $2, %ecx
  2683. movl %r8d, %edx
  2684. addl %ecx, %r12d
  2685. vpaddd %xmm4, %xmm9, %xmm0
  2686. # msg_sched done: 0-3
  2687. # msg_sched: 4-7
  2688. # rnd_0: 0 - 0
  2689. rorl $14, %edx
  2690. vpalignr $4, %xmm1, %xmm2, %xmm5
  2691. vpalignr $4, %xmm3, %xmm0, %xmm4
  2692. # rnd_0: 1 - 2
  2693. movl %r13d, %eax
  2694. movl %r9d, %ecx
  2695. addl 16(%rsp), %r11d
  2696. xorl %r10d, %ecx
  2697. xorl %r8d, %edx
  2698. andl %r8d, %ecx
  2699. vpsrld $7, %xmm5, %xmm6
  2700. vpslld $25, %xmm5, %xmm7
  2701. # rnd_0: 3 - 4
  2702. rorl $5, %edx
  2703. xorl %r10d, %ecx
  2704. xorl %r8d, %edx
  2705. addl %ecx, %r11d
  2706. rorl $6, %edx
  2707. xorl %r12d, %eax
  2708. addl %edx, %r11d
  2709. movl %r12d, %ecx
  2710. vpsrld $18, %xmm5, %xmm8
  2711. vpslld $14, %xmm5, %xmm9
  2712. # rnd_0: 5 - 6
  2713. andl %eax, %ebx
  2714. rorl $9, %ecx
  2715. xorl %r12d, %ecx
  2716. xorl %r13d, %ebx
  2717. rorl $11, %ecx
  2718. addl %r11d, %r15d
  2719. xorl %r12d, %ecx
  2720. addl %ebx, %r11d
  2721. vpor %xmm6, %xmm7, %xmm6
  2722. vpor %xmm8, %xmm9, %xmm8
  2723. # rnd_0: 7 - 7
  2724. rorl $2, %ecx
  2725. movl %r15d, %edx
  2726. addl %ecx, %r11d
  2727. # rnd_1: 0 - 1
  2728. rorl $14, %edx
  2729. movl %r12d, %ebx
  2730. movl %r8d, %ecx
  2731. addl 20(%rsp), %r10d
  2732. xorl %r9d, %ecx
  2733. vpsrld $3, %xmm5, %xmm9
  2734. vpxor %xmm6, %xmm8, %xmm6
  2735. # rnd_1: 2 - 3
  2736. xorl %r15d, %edx
  2737. andl %r15d, %ecx
  2738. rorl $5, %edx
  2739. xorl %r9d, %ecx
  2740. xorl %r15d, %edx
  2741. addl %ecx, %r10d
  2742. vpxor %xmm6, %xmm9, %xmm5
  2743. vpshufd $0xfa, %xmm0, %xmm6
  2744. # rnd_1: 4 - 5
  2745. rorl $6, %edx
  2746. xorl %r11d, %ebx
  2747. addl %edx, %r10d
  2748. movl %r11d, %ecx
  2749. andl %ebx, %eax
  2750. rorl $9, %ecx
  2751. xorl %r11d, %ecx
  2752. xorl %r12d, %eax
  2753. vpsrld $10, %xmm6, %xmm8
  2754. vpsrlq $19, %xmm6, %xmm7
  2755. # rnd_1: 6 - 7
  2756. rorl $11, %ecx
  2757. addl %r10d, %r14d
  2758. xorl %r11d, %ecx
  2759. addl %eax, %r10d
  2760. rorl $2, %ecx
  2761. movl %r14d, %edx
  2762. addl %ecx, %r10d
  2763. # rnd_0: 0 - 0
  2764. rorl $14, %edx
  2765. vpsrlq $0x11, %xmm6, %xmm6
  2766. vpaddd %xmm1, %xmm4, %xmm4
  2767. # rnd_0: 1 - 3
  2768. movl %r11d, %eax
  2769. movl %r15d, %ecx
  2770. addl 24(%rsp), %r9d
  2771. xorl %r8d, %ecx
  2772. xorl %r14d, %edx
  2773. andl %r14d, %ecx
  2774. rorl $5, %edx
  2775. xorl %r8d, %ecx
  2776. xorl %r14d, %edx
  2777. addl %ecx, %r9d
  2778. vpxor %xmm6, %xmm7, %xmm6
  2779. vpaddd %xmm5, %xmm4, %xmm4
  2780. # rnd_0: 4 - 4
  2781. rorl $6, %edx
  2782. xorl %r10d, %eax
  2783. addl %edx, %r9d
  2784. movl %r10d, %ecx
  2785. vpxor %xmm6, %xmm8, %xmm8
  2786. # rnd_0: 5 - 5
  2787. andl %eax, %ebx
  2788. rorl $9, %ecx
  2789. xorl %r10d, %ecx
  2790. xorl %r11d, %ebx
  2791. vpshufb %xmm11, %xmm8, %xmm8
  2792. # rnd_0: 6 - 6
  2793. rorl $11, %ecx
  2794. addl %r9d, %r13d
  2795. xorl %r10d, %ecx
  2796. addl %ebx, %r9d
  2797. vpaddd %xmm8, %xmm4, %xmm4
  2798. # rnd_0: 7 - 7
  2799. rorl $2, %ecx
  2800. movl %r13d, %edx
  2801. addl %ecx, %r9d
  2802. # rnd_1: 0 - 0
  2803. rorl $14, %edx
  2804. vpshufd $0x50, %xmm4, %xmm6
  2805. # rnd_1: 1 - 1
  2806. movl %r10d, %ebx
  2807. movl %r14d, %ecx
  2808. addl 28(%rsp), %r8d
  2809. xorl %r15d, %ecx
  2810. vpsrlq $0x11, %xmm6, %xmm8
  2811. vpsrlq $19, %xmm6, %xmm7
  2812. # rnd_1: 2 - 3
  2813. xorl %r13d, %edx
  2814. andl %r13d, %ecx
  2815. rorl $5, %edx
  2816. xorl %r15d, %ecx
  2817. xorl %r13d, %edx
  2818. addl %ecx, %r8d
  2819. vpsrld $10, %xmm6, %xmm9
  2820. vpxor %xmm8, %xmm7, %xmm8
  2821. # rnd_1: 4 - 5
  2822. rorl $6, %edx
  2823. xorl %r9d, %ebx
  2824. addl %edx, %r8d
  2825. movl %r9d, %ecx
  2826. andl %ebx, %eax
  2827. rorl $9, %ecx
  2828. xorl %r9d, %ecx
  2829. xorl %r10d, %eax
  2830. vpxor %xmm9, %xmm8, %xmm9
  2831. # rnd_1: 6 - 6
  2832. rorl $11, %ecx
  2833. addl %r8d, %r12d
  2834. xorl %r9d, %ecx
  2835. addl %eax, %r8d
  2836. vpshufb %xmm12, %xmm9, %xmm9
  2837. # rnd_1: 7 - 7
  2838. rorl $2, %ecx
  2839. movl %r12d, %edx
  2840. addl %ecx, %r8d
  2841. vpaddd %xmm4, %xmm9, %xmm1
  2842. # msg_sched done: 4-7
  2843. # msg_sched: 8-11
  2844. # rnd_0: 0 - 0
  2845. rorl $14, %edx
  2846. vpalignr $4, %xmm2, %xmm3, %xmm5
  2847. vpalignr $4, %xmm0, %xmm1, %xmm4
  2848. # rnd_0: 1 - 2
  2849. movl %r9d, %eax
  2850. movl %r13d, %ecx
  2851. addl 32(%rsp), %r15d
  2852. xorl %r14d, %ecx
  2853. xorl %r12d, %edx
  2854. andl %r12d, %ecx
  2855. vpsrld $7, %xmm5, %xmm6
  2856. vpslld $25, %xmm5, %xmm7
  2857. # rnd_0: 3 - 4
  2858. rorl $5, %edx
  2859. xorl %r14d, %ecx
  2860. xorl %r12d, %edx
  2861. addl %ecx, %r15d
  2862. rorl $6, %edx
  2863. xorl %r8d, %eax
  2864. addl %edx, %r15d
  2865. movl %r8d, %ecx
  2866. vpsrld $18, %xmm5, %xmm8
  2867. vpslld $14, %xmm5, %xmm9
  2868. # rnd_0: 5 - 6
  2869. andl %eax, %ebx
  2870. rorl $9, %ecx
  2871. xorl %r8d, %ecx
  2872. xorl %r9d, %ebx
  2873. rorl $11, %ecx
  2874. addl %r15d, %r11d
  2875. xorl %r8d, %ecx
  2876. addl %ebx, %r15d
  2877. vpor %xmm6, %xmm7, %xmm6
  2878. vpor %xmm8, %xmm9, %xmm8
  2879. # rnd_0: 7 - 7
  2880. rorl $2, %ecx
  2881. movl %r11d, %edx
  2882. addl %ecx, %r15d
  2883. # rnd_1: 0 - 1
  2884. rorl $14, %edx
  2885. movl %r8d, %ebx
  2886. movl %r12d, %ecx
  2887. addl 36(%rsp), %r14d
  2888. xorl %r13d, %ecx
  2889. vpsrld $3, %xmm5, %xmm9
  2890. vpxor %xmm6, %xmm8, %xmm6
  2891. # rnd_1: 2 - 3
  2892. xorl %r11d, %edx
  2893. andl %r11d, %ecx
  2894. rorl $5, %edx
  2895. xorl %r13d, %ecx
  2896. xorl %r11d, %edx
  2897. addl %ecx, %r14d
  2898. vpxor %xmm6, %xmm9, %xmm5
  2899. vpshufd $0xfa, %xmm1, %xmm6
  2900. # rnd_1: 4 - 5
  2901. rorl $6, %edx
  2902. xorl %r15d, %ebx
  2903. addl %edx, %r14d
  2904. movl %r15d, %ecx
  2905. andl %ebx, %eax
  2906. rorl $9, %ecx
  2907. xorl %r15d, %ecx
  2908. xorl %r8d, %eax
  2909. vpsrld $10, %xmm6, %xmm8
  2910. vpsrlq $19, %xmm6, %xmm7
  2911. # rnd_1: 6 - 7
  2912. rorl $11, %ecx
  2913. addl %r14d, %r10d
  2914. xorl %r15d, %ecx
  2915. addl %eax, %r14d
  2916. rorl $2, %ecx
  2917. movl %r10d, %edx
  2918. addl %ecx, %r14d
  2919. # rnd_0: 0 - 0
  2920. rorl $14, %edx
  2921. vpsrlq $0x11, %xmm6, %xmm6
  2922. vpaddd %xmm2, %xmm4, %xmm4
  2923. # rnd_0: 1 - 3
  2924. movl %r15d, %eax
  2925. movl %r11d, %ecx
  2926. addl 40(%rsp), %r13d
  2927. xorl %r12d, %ecx
  2928. xorl %r10d, %edx
  2929. andl %r10d, %ecx
  2930. rorl $5, %edx
  2931. xorl %r12d, %ecx
  2932. xorl %r10d, %edx
  2933. addl %ecx, %r13d
  2934. vpxor %xmm6, %xmm7, %xmm6
  2935. vpaddd %xmm5, %xmm4, %xmm4
  2936. # rnd_0: 4 - 4
  2937. rorl $6, %edx
  2938. xorl %r14d, %eax
  2939. addl %edx, %r13d
  2940. movl %r14d, %ecx
  2941. vpxor %xmm6, %xmm8, %xmm8
  2942. # rnd_0: 5 - 5
  2943. andl %eax, %ebx
  2944. rorl $9, %ecx
  2945. xorl %r14d, %ecx
  2946. xorl %r15d, %ebx
  2947. vpshufb %xmm11, %xmm8, %xmm8
  2948. # rnd_0: 6 - 6
  2949. rorl $11, %ecx
  2950. addl %r13d, %r9d
  2951. xorl %r14d, %ecx
  2952. addl %ebx, %r13d
  2953. vpaddd %xmm8, %xmm4, %xmm4
  2954. # rnd_0: 7 - 7
  2955. rorl $2, %ecx
  2956. movl %r9d, %edx
  2957. addl %ecx, %r13d
  2958. # rnd_1: 0 - 0
  2959. rorl $14, %edx
  2960. vpshufd $0x50, %xmm4, %xmm6
  2961. # rnd_1: 1 - 1
  2962. movl %r14d, %ebx
  2963. movl %r10d, %ecx
  2964. addl 44(%rsp), %r12d
  2965. xorl %r11d, %ecx
  2966. vpsrlq $0x11, %xmm6, %xmm8
  2967. vpsrlq $19, %xmm6, %xmm7
  2968. # rnd_1: 2 - 3
  2969. xorl %r9d, %edx
  2970. andl %r9d, %ecx
  2971. rorl $5, %edx
  2972. xorl %r11d, %ecx
  2973. xorl %r9d, %edx
  2974. addl %ecx, %r12d
  2975. vpsrld $10, %xmm6, %xmm9
  2976. vpxor %xmm8, %xmm7, %xmm8
  2977. # rnd_1: 4 - 5
  2978. rorl $6, %edx
  2979. xorl %r13d, %ebx
  2980. addl %edx, %r12d
  2981. movl %r13d, %ecx
  2982. andl %ebx, %eax
  2983. rorl $9, %ecx
  2984. xorl %r13d, %ecx
  2985. xorl %r14d, %eax
  2986. vpxor %xmm9, %xmm8, %xmm9
  2987. # rnd_1: 6 - 6
  2988. rorl $11, %ecx
  2989. addl %r12d, %r8d
  2990. xorl %r13d, %ecx
  2991. addl %eax, %r12d
  2992. vpshufb %xmm12, %xmm9, %xmm9
  2993. # rnd_1: 7 - 7
  2994. rorl $2, %ecx
  2995. movl %r8d, %edx
  2996. addl %ecx, %r12d
  2997. vpaddd %xmm4, %xmm9, %xmm2
  2998. # msg_sched done: 8-11
  2999. # msg_sched: 12-15
  3000. # rnd_0: 0 - 0
  3001. rorl $14, %edx
  3002. vpalignr $4, %xmm3, %xmm0, %xmm5
  3003. vpalignr $4, %xmm1, %xmm2, %xmm4
  3004. # rnd_0: 1 - 2
  3005. movl %r13d, %eax
  3006. movl %r9d, %ecx
  3007. addl 48(%rsp), %r11d
  3008. xorl %r10d, %ecx
  3009. xorl %r8d, %edx
  3010. andl %r8d, %ecx
  3011. vpsrld $7, %xmm5, %xmm6
  3012. vpslld $25, %xmm5, %xmm7
  3013. # rnd_0: 3 - 4
  3014. rorl $5, %edx
  3015. xorl %r10d, %ecx
  3016. xorl %r8d, %edx
  3017. addl %ecx, %r11d
  3018. rorl $6, %edx
  3019. xorl %r12d, %eax
  3020. addl %edx, %r11d
  3021. movl %r12d, %ecx
  3022. vpsrld $18, %xmm5, %xmm8
  3023. vpslld $14, %xmm5, %xmm9
  3024. # rnd_0: 5 - 6
  3025. andl %eax, %ebx
  3026. rorl $9, %ecx
  3027. xorl %r12d, %ecx
  3028. xorl %r13d, %ebx
  3029. rorl $11, %ecx
  3030. addl %r11d, %r15d
  3031. xorl %r12d, %ecx
  3032. addl %ebx, %r11d
  3033. vpor %xmm6, %xmm7, %xmm6
  3034. vpor %xmm8, %xmm9, %xmm8
  3035. # rnd_0: 7 - 7
  3036. rorl $2, %ecx
  3037. movl %r15d, %edx
  3038. addl %ecx, %r11d
  3039. # rnd_1: 0 - 1
  3040. rorl $14, %edx
  3041. movl %r12d, %ebx
  3042. movl %r8d, %ecx
  3043. addl 52(%rsp), %r10d
  3044. xorl %r9d, %ecx
  3045. vpsrld $3, %xmm5, %xmm9
  3046. vpxor %xmm6, %xmm8, %xmm6
  3047. # rnd_1: 2 - 3
  3048. xorl %r15d, %edx
  3049. andl %r15d, %ecx
  3050. rorl $5, %edx
  3051. xorl %r9d, %ecx
  3052. xorl %r15d, %edx
  3053. addl %ecx, %r10d
  3054. vpxor %xmm6, %xmm9, %xmm5
  3055. vpshufd $0xfa, %xmm2, %xmm6
  3056. # rnd_1: 4 - 5
  3057. rorl $6, %edx
  3058. xorl %r11d, %ebx
  3059. addl %edx, %r10d
  3060. movl %r11d, %ecx
  3061. andl %ebx, %eax
  3062. rorl $9, %ecx
  3063. xorl %r11d, %ecx
  3064. xorl %r12d, %eax
  3065. vpsrld $10, %xmm6, %xmm8
  3066. vpsrlq $19, %xmm6, %xmm7
  3067. # rnd_1: 6 - 7
  3068. rorl $11, %ecx
  3069. addl %r10d, %r14d
  3070. xorl %r11d, %ecx
  3071. addl %eax, %r10d
  3072. rorl $2, %ecx
  3073. movl %r14d, %edx
  3074. addl %ecx, %r10d
  3075. # rnd_0: 0 - 0
  3076. rorl $14, %edx
  3077. vpsrlq $0x11, %xmm6, %xmm6
  3078. vpaddd %xmm3, %xmm4, %xmm4
  3079. # rnd_0: 1 - 3
  3080. movl %r11d, %eax
  3081. movl %r15d, %ecx
  3082. addl 56(%rsp), %r9d
  3083. xorl %r8d, %ecx
  3084. xorl %r14d, %edx
  3085. andl %r14d, %ecx
  3086. rorl $5, %edx
  3087. xorl %r8d, %ecx
  3088. xorl %r14d, %edx
  3089. addl %ecx, %r9d
  3090. vpxor %xmm6, %xmm7, %xmm6
  3091. vpaddd %xmm5, %xmm4, %xmm4
  3092. # rnd_0: 4 - 4
  3093. rorl $6, %edx
  3094. xorl %r10d, %eax
  3095. addl %edx, %r9d
  3096. movl %r10d, %ecx
  3097. vpxor %xmm6, %xmm8, %xmm8
  3098. # rnd_0: 5 - 5
  3099. andl %eax, %ebx
  3100. rorl $9, %ecx
  3101. xorl %r10d, %ecx
  3102. xorl %r11d, %ebx
  3103. vpshufb %xmm11, %xmm8, %xmm8
  3104. # rnd_0: 6 - 6
  3105. rorl $11, %ecx
  3106. addl %r9d, %r13d
  3107. xorl %r10d, %ecx
  3108. addl %ebx, %r9d
  3109. vpaddd %xmm8, %xmm4, %xmm4
  3110. # rnd_0: 7 - 7
  3111. rorl $2, %ecx
  3112. movl %r13d, %edx
  3113. addl %ecx, %r9d
  3114. # rnd_1: 0 - 0
  3115. rorl $14, %edx
  3116. vpshufd $0x50, %xmm4, %xmm6
  3117. # rnd_1: 1 - 1
  3118. movl %r10d, %ebx
  3119. movl %r14d, %ecx
  3120. addl 60(%rsp), %r8d
  3121. xorl %r15d, %ecx
  3122. vpsrlq $0x11, %xmm6, %xmm8
  3123. vpsrlq $19, %xmm6, %xmm7
  3124. # rnd_1: 2 - 3
  3125. xorl %r13d, %edx
  3126. andl %r13d, %ecx
  3127. rorl $5, %edx
  3128. xorl %r15d, %ecx
  3129. xorl %r13d, %edx
  3130. addl %ecx, %r8d
  3131. vpsrld $10, %xmm6, %xmm9
  3132. vpxor %xmm8, %xmm7, %xmm8
  3133. # rnd_1: 4 - 5
  3134. rorl $6, %edx
  3135. xorl %r9d, %ebx
  3136. addl %edx, %r8d
  3137. movl %r9d, %ecx
  3138. andl %ebx, %eax
  3139. rorl $9, %ecx
  3140. xorl %r9d, %ecx
  3141. xorl %r10d, %eax
  3142. vpxor %xmm9, %xmm8, %xmm9
  3143. # rnd_1: 6 - 6
  3144. rorl $11, %ecx
  3145. addl %r8d, %r12d
  3146. xorl %r9d, %ecx
  3147. addl %eax, %r8d
  3148. vpshufb %xmm12, %xmm9, %xmm9
  3149. # rnd_1: 7 - 7
  3150. rorl $2, %ecx
  3151. movl %r12d, %edx
  3152. addl %ecx, %r8d
  3153. vpaddd %xmm4, %xmm9, %xmm3
  3154. # msg_sched done: 12-15
  3155. # set_w_k_xfer_4: 4
  3156. vpaddd 64+L_avx1_sha256_k(%rip), %xmm0, %xmm4
  3157. vpaddd 80+L_avx1_sha256_k(%rip), %xmm1, %xmm5
  3158. vmovdqu %xmm4, (%rsp)
  3159. vmovdqu %xmm5, 16(%rsp)
  3160. vpaddd 96+L_avx1_sha256_k(%rip), %xmm2, %xmm6
  3161. vpaddd 112+L_avx1_sha256_k(%rip), %xmm3, %xmm7
  3162. vmovdqu %xmm6, 32(%rsp)
  3163. vmovdqu %xmm7, 48(%rsp)
  3164. # msg_sched: 0-3
  3165. # rnd_0: 0 - 0
  3166. rorl $14, %edx
  3167. vpalignr $4, %xmm0, %xmm1, %xmm5
  3168. vpalignr $4, %xmm2, %xmm3, %xmm4
  3169. # rnd_0: 1 - 2
  3170. movl %r9d, %eax
  3171. movl %r13d, %ecx
  3172. addl (%rsp), %r15d
  3173. xorl %r14d, %ecx
  3174. xorl %r12d, %edx
  3175. andl %r12d, %ecx
  3176. vpsrld $7, %xmm5, %xmm6
  3177. vpslld $25, %xmm5, %xmm7
  3178. # rnd_0: 3 - 4
  3179. rorl $5, %edx
  3180. xorl %r14d, %ecx
  3181. xorl %r12d, %edx
  3182. addl %ecx, %r15d
  3183. rorl $6, %edx
  3184. xorl %r8d, %eax
  3185. addl %edx, %r15d
  3186. movl %r8d, %ecx
  3187. vpsrld $18, %xmm5, %xmm8
  3188. vpslld $14, %xmm5, %xmm9
  3189. # rnd_0: 5 - 6
  3190. andl %eax, %ebx
  3191. rorl $9, %ecx
  3192. xorl %r8d, %ecx
  3193. xorl %r9d, %ebx
  3194. rorl $11, %ecx
  3195. addl %r15d, %r11d
  3196. xorl %r8d, %ecx
  3197. addl %ebx, %r15d
  3198. vpor %xmm6, %xmm7, %xmm6
  3199. vpor %xmm8, %xmm9, %xmm8
  3200. # rnd_0: 7 - 7
  3201. rorl $2, %ecx
  3202. movl %r11d, %edx
  3203. addl %ecx, %r15d
  3204. # rnd_1: 0 - 1
  3205. rorl $14, %edx
  3206. movl %r8d, %ebx
  3207. movl %r12d, %ecx
  3208. addl 4(%rsp), %r14d
  3209. xorl %r13d, %ecx
  3210. vpsrld $3, %xmm5, %xmm9
  3211. vpxor %xmm6, %xmm8, %xmm6
  3212. # rnd_1: 2 - 3
  3213. xorl %r11d, %edx
  3214. andl %r11d, %ecx
  3215. rorl $5, %edx
  3216. xorl %r13d, %ecx
  3217. xorl %r11d, %edx
  3218. addl %ecx, %r14d
  3219. vpxor %xmm6, %xmm9, %xmm5
  3220. vpshufd $0xfa, %xmm3, %xmm6
  3221. # rnd_1: 4 - 5
  3222. rorl $6, %edx
  3223. xorl %r15d, %ebx
  3224. addl %edx, %r14d
  3225. movl %r15d, %ecx
  3226. andl %ebx, %eax
  3227. rorl $9, %ecx
  3228. xorl %r15d, %ecx
  3229. xorl %r8d, %eax
  3230. vpsrld $10, %xmm6, %xmm8
  3231. vpsrlq $19, %xmm6, %xmm7
  3232. # rnd_1: 6 - 7
  3233. rorl $11, %ecx
  3234. addl %r14d, %r10d
  3235. xorl %r15d, %ecx
  3236. addl %eax, %r14d
  3237. rorl $2, %ecx
  3238. movl %r10d, %edx
  3239. addl %ecx, %r14d
  3240. # rnd_0: 0 - 0
  3241. rorl $14, %edx
  3242. vpsrlq $0x11, %xmm6, %xmm6
  3243. vpaddd %xmm0, %xmm4, %xmm4
  3244. # rnd_0: 1 - 3
  3245. movl %r15d, %eax
  3246. movl %r11d, %ecx
  3247. addl 8(%rsp), %r13d
  3248. xorl %r12d, %ecx
  3249. xorl %r10d, %edx
  3250. andl %r10d, %ecx
  3251. rorl $5, %edx
  3252. xorl %r12d, %ecx
  3253. xorl %r10d, %edx
  3254. addl %ecx, %r13d
  3255. vpxor %xmm6, %xmm7, %xmm6
  3256. vpaddd %xmm5, %xmm4, %xmm4
  3257. # rnd_0: 4 - 4
  3258. rorl $6, %edx
  3259. xorl %r14d, %eax
  3260. addl %edx, %r13d
  3261. movl %r14d, %ecx
  3262. vpxor %xmm6, %xmm8, %xmm8
  3263. # rnd_0: 5 - 5
  3264. andl %eax, %ebx
  3265. rorl $9, %ecx
  3266. xorl %r14d, %ecx
  3267. xorl %r15d, %ebx
  3268. vpshufb %xmm11, %xmm8, %xmm8
  3269. # rnd_0: 6 - 6
  3270. rorl $11, %ecx
  3271. addl %r13d, %r9d
  3272. xorl %r14d, %ecx
  3273. addl %ebx, %r13d
  3274. vpaddd %xmm8, %xmm4, %xmm4
  3275. # rnd_0: 7 - 7
  3276. rorl $2, %ecx
  3277. movl %r9d, %edx
  3278. addl %ecx, %r13d
  3279. # rnd_1: 0 - 0
  3280. rorl $14, %edx
  3281. vpshufd $0x50, %xmm4, %xmm6
  3282. # rnd_1: 1 - 1
  3283. movl %r14d, %ebx
  3284. movl %r10d, %ecx
  3285. addl 12(%rsp), %r12d
  3286. xorl %r11d, %ecx
  3287. vpsrlq $0x11, %xmm6, %xmm8
  3288. vpsrlq $19, %xmm6, %xmm7
  3289. # rnd_1: 2 - 3
  3290. xorl %r9d, %edx
  3291. andl %r9d, %ecx
  3292. rorl $5, %edx
  3293. xorl %r11d, %ecx
  3294. xorl %r9d, %edx
  3295. addl %ecx, %r12d
  3296. vpsrld $10, %xmm6, %xmm9
  3297. vpxor %xmm8, %xmm7, %xmm8
  3298. # rnd_1: 4 - 5
  3299. rorl $6, %edx
  3300. xorl %r13d, %ebx
  3301. addl %edx, %r12d
  3302. movl %r13d, %ecx
  3303. andl %ebx, %eax
  3304. rorl $9, %ecx
  3305. xorl %r13d, %ecx
  3306. xorl %r14d, %eax
  3307. vpxor %xmm9, %xmm8, %xmm9
  3308. # rnd_1: 6 - 6
  3309. rorl $11, %ecx
  3310. addl %r12d, %r8d
  3311. xorl %r13d, %ecx
  3312. addl %eax, %r12d
  3313. vpshufb %xmm12, %xmm9, %xmm9
  3314. # rnd_1: 7 - 7
  3315. rorl $2, %ecx
  3316. movl %r8d, %edx
  3317. addl %ecx, %r12d
  3318. vpaddd %xmm4, %xmm9, %xmm0
  3319. # msg_sched done: 0-3
  3320. # msg_sched: 4-7
  3321. # rnd_0: 0 - 0
  3322. rorl $14, %edx
  3323. vpalignr $4, %xmm1, %xmm2, %xmm5
  3324. vpalignr $4, %xmm3, %xmm0, %xmm4
  3325. # rnd_0: 1 - 2
  3326. movl %r13d, %eax
  3327. movl %r9d, %ecx
  3328. addl 16(%rsp), %r11d
  3329. xorl %r10d, %ecx
  3330. xorl %r8d, %edx
  3331. andl %r8d, %ecx
  3332. vpsrld $7, %xmm5, %xmm6
  3333. vpslld $25, %xmm5, %xmm7
  3334. # rnd_0: 3 - 4
  3335. rorl $5, %edx
  3336. xorl %r10d, %ecx
  3337. xorl %r8d, %edx
  3338. addl %ecx, %r11d
  3339. rorl $6, %edx
  3340. xorl %r12d, %eax
  3341. addl %edx, %r11d
  3342. movl %r12d, %ecx
  3343. vpsrld $18, %xmm5, %xmm8
  3344. vpslld $14, %xmm5, %xmm9
  3345. # rnd_0: 5 - 6
  3346. andl %eax, %ebx
  3347. rorl $9, %ecx
  3348. xorl %r12d, %ecx
  3349. xorl %r13d, %ebx
  3350. rorl $11, %ecx
  3351. addl %r11d, %r15d
  3352. xorl %r12d, %ecx
  3353. addl %ebx, %r11d
  3354. vpor %xmm6, %xmm7, %xmm6
  3355. vpor %xmm8, %xmm9, %xmm8
  3356. # rnd_0: 7 - 7
  3357. rorl $2, %ecx
  3358. movl %r15d, %edx
  3359. addl %ecx, %r11d
  3360. # rnd_1: 0 - 1
  3361. rorl $14, %edx
  3362. movl %r12d, %ebx
  3363. movl %r8d, %ecx
  3364. addl 20(%rsp), %r10d
  3365. xorl %r9d, %ecx
  3366. vpsrld $3, %xmm5, %xmm9
  3367. vpxor %xmm6, %xmm8, %xmm6
  3368. # rnd_1: 2 - 3
  3369. xorl %r15d, %edx
  3370. andl %r15d, %ecx
  3371. rorl $5, %edx
  3372. xorl %r9d, %ecx
  3373. xorl %r15d, %edx
  3374. addl %ecx, %r10d
  3375. vpxor %xmm6, %xmm9, %xmm5
  3376. vpshufd $0xfa, %xmm0, %xmm6
  3377. # rnd_1: 4 - 5
  3378. rorl $6, %edx
  3379. xorl %r11d, %ebx
  3380. addl %edx, %r10d
  3381. movl %r11d, %ecx
  3382. andl %ebx, %eax
  3383. rorl $9, %ecx
  3384. xorl %r11d, %ecx
  3385. xorl %r12d, %eax
  3386. vpsrld $10, %xmm6, %xmm8
  3387. vpsrlq $19, %xmm6, %xmm7
  3388. # rnd_1: 6 - 7
  3389. rorl $11, %ecx
  3390. addl %r10d, %r14d
  3391. xorl %r11d, %ecx
  3392. addl %eax, %r10d
  3393. rorl $2, %ecx
  3394. movl %r14d, %edx
  3395. addl %ecx, %r10d
  3396. # rnd_0: 0 - 0
  3397. rorl $14, %edx
  3398. vpsrlq $0x11, %xmm6, %xmm6
  3399. vpaddd %xmm1, %xmm4, %xmm4
  3400. # rnd_0: 1 - 3
  3401. movl %r11d, %eax
  3402. movl %r15d, %ecx
  3403. addl 24(%rsp), %r9d
  3404. xorl %r8d, %ecx
  3405. xorl %r14d, %edx
  3406. andl %r14d, %ecx
  3407. rorl $5, %edx
  3408. xorl %r8d, %ecx
  3409. xorl %r14d, %edx
  3410. addl %ecx, %r9d
  3411. vpxor %xmm6, %xmm7, %xmm6
  3412. vpaddd %xmm5, %xmm4, %xmm4
  3413. # rnd_0: 4 - 4
  3414. rorl $6, %edx
  3415. xorl %r10d, %eax
  3416. addl %edx, %r9d
  3417. movl %r10d, %ecx
  3418. vpxor %xmm6, %xmm8, %xmm8
  3419. # rnd_0: 5 - 5
  3420. andl %eax, %ebx
  3421. rorl $9, %ecx
  3422. xorl %r10d, %ecx
  3423. xorl %r11d, %ebx
  3424. vpshufb %xmm11, %xmm8, %xmm8
  3425. # rnd_0: 6 - 6
  3426. rorl $11, %ecx
  3427. addl %r9d, %r13d
  3428. xorl %r10d, %ecx
  3429. addl %ebx, %r9d
  3430. vpaddd %xmm8, %xmm4, %xmm4
  3431. # rnd_0: 7 - 7
  3432. rorl $2, %ecx
  3433. movl %r13d, %edx
  3434. addl %ecx, %r9d
  3435. # rnd_1: 0 - 0
  3436. rorl $14, %edx
  3437. vpshufd $0x50, %xmm4, %xmm6
  3438. # rnd_1: 1 - 1
  3439. movl %r10d, %ebx
  3440. movl %r14d, %ecx
  3441. addl 28(%rsp), %r8d
  3442. xorl %r15d, %ecx
  3443. vpsrlq $0x11, %xmm6, %xmm8
  3444. vpsrlq $19, %xmm6, %xmm7
  3445. # rnd_1: 2 - 3
  3446. xorl %r13d, %edx
  3447. andl %r13d, %ecx
  3448. rorl $5, %edx
  3449. xorl %r15d, %ecx
  3450. xorl %r13d, %edx
  3451. addl %ecx, %r8d
  3452. vpsrld $10, %xmm6, %xmm9
  3453. vpxor %xmm8, %xmm7, %xmm8
  3454. # rnd_1: 4 - 5
  3455. rorl $6, %edx
  3456. xorl %r9d, %ebx
  3457. addl %edx, %r8d
  3458. movl %r9d, %ecx
  3459. andl %ebx, %eax
  3460. rorl $9, %ecx
  3461. xorl %r9d, %ecx
  3462. xorl %r10d, %eax
  3463. vpxor %xmm9, %xmm8, %xmm9
  3464. # rnd_1: 6 - 6
  3465. rorl $11, %ecx
  3466. addl %r8d, %r12d
  3467. xorl %r9d, %ecx
  3468. addl %eax, %r8d
  3469. vpshufb %xmm12, %xmm9, %xmm9
  3470. # rnd_1: 7 - 7
  3471. rorl $2, %ecx
  3472. movl %r12d, %edx
  3473. addl %ecx, %r8d
  3474. vpaddd %xmm4, %xmm9, %xmm1
  3475. # msg_sched done: 4-7
  3476. # msg_sched: 8-11
  3477. # rnd_0: 0 - 0
  3478. rorl $14, %edx
  3479. vpalignr $4, %xmm2, %xmm3, %xmm5
  3480. vpalignr $4, %xmm0, %xmm1, %xmm4
  3481. # rnd_0: 1 - 2
  3482. movl %r9d, %eax
  3483. movl %r13d, %ecx
  3484. addl 32(%rsp), %r15d
  3485. xorl %r14d, %ecx
  3486. xorl %r12d, %edx
  3487. andl %r12d, %ecx
  3488. vpsrld $7, %xmm5, %xmm6
  3489. vpslld $25, %xmm5, %xmm7
  3490. # rnd_0: 3 - 4
  3491. rorl $5, %edx
  3492. xorl %r14d, %ecx
  3493. xorl %r12d, %edx
  3494. addl %ecx, %r15d
  3495. rorl $6, %edx
  3496. xorl %r8d, %eax
  3497. addl %edx, %r15d
  3498. movl %r8d, %ecx
  3499. vpsrld $18, %xmm5, %xmm8
  3500. vpslld $14, %xmm5, %xmm9
  3501. # rnd_0: 5 - 6
  3502. andl %eax, %ebx
  3503. rorl $9, %ecx
  3504. xorl %r8d, %ecx
  3505. xorl %r9d, %ebx
  3506. rorl $11, %ecx
  3507. addl %r15d, %r11d
  3508. xorl %r8d, %ecx
  3509. addl %ebx, %r15d
  3510. vpor %xmm6, %xmm7, %xmm6
  3511. vpor %xmm8, %xmm9, %xmm8
  3512. # rnd_0: 7 - 7
  3513. rorl $2, %ecx
  3514. movl %r11d, %edx
  3515. addl %ecx, %r15d
  3516. # rnd_1: 0 - 1
  3517. rorl $14, %edx
  3518. movl %r8d, %ebx
  3519. movl %r12d, %ecx
  3520. addl 36(%rsp), %r14d
  3521. xorl %r13d, %ecx
  3522. vpsrld $3, %xmm5, %xmm9
  3523. vpxor %xmm6, %xmm8, %xmm6
  3524. # rnd_1: 2 - 3
  3525. xorl %r11d, %edx
  3526. andl %r11d, %ecx
  3527. rorl $5, %edx
  3528. xorl %r13d, %ecx
  3529. xorl %r11d, %edx
  3530. addl %ecx, %r14d
  3531. vpxor %xmm6, %xmm9, %xmm5
  3532. vpshufd $0xfa, %xmm1, %xmm6
  3533. # rnd_1: 4 - 5
  3534. rorl $6, %edx
  3535. xorl %r15d, %ebx
  3536. addl %edx, %r14d
  3537. movl %r15d, %ecx
  3538. andl %ebx, %eax
  3539. rorl $9, %ecx
  3540. xorl %r15d, %ecx
  3541. xorl %r8d, %eax
  3542. vpsrld $10, %xmm6, %xmm8
  3543. vpsrlq $19, %xmm6, %xmm7
  3544. # rnd_1: 6 - 7
  3545. rorl $11, %ecx
  3546. addl %r14d, %r10d
  3547. xorl %r15d, %ecx
  3548. addl %eax, %r14d
  3549. rorl $2, %ecx
  3550. movl %r10d, %edx
  3551. addl %ecx, %r14d
  3552. # rnd_0: 0 - 0
  3553. rorl $14, %edx
  3554. vpsrlq $0x11, %xmm6, %xmm6
  3555. vpaddd %xmm2, %xmm4, %xmm4
  3556. # rnd_0: 1 - 3
  3557. movl %r15d, %eax
  3558. movl %r11d, %ecx
  3559. addl 40(%rsp), %r13d
  3560. xorl %r12d, %ecx
  3561. xorl %r10d, %edx
  3562. andl %r10d, %ecx
  3563. rorl $5, %edx
  3564. xorl %r12d, %ecx
  3565. xorl %r10d, %edx
  3566. addl %ecx, %r13d
  3567. vpxor %xmm6, %xmm7, %xmm6
  3568. vpaddd %xmm5, %xmm4, %xmm4
  3569. # rnd_0: 4 - 4
  3570. rorl $6, %edx
  3571. xorl %r14d, %eax
  3572. addl %edx, %r13d
  3573. movl %r14d, %ecx
  3574. vpxor %xmm6, %xmm8, %xmm8
  3575. # rnd_0: 5 - 5
  3576. andl %eax, %ebx
  3577. rorl $9, %ecx
  3578. xorl %r14d, %ecx
  3579. xorl %r15d, %ebx
  3580. vpshufb %xmm11, %xmm8, %xmm8
  3581. # rnd_0: 6 - 6
  3582. rorl $11, %ecx
  3583. addl %r13d, %r9d
  3584. xorl %r14d, %ecx
  3585. addl %ebx, %r13d
  3586. vpaddd %xmm8, %xmm4, %xmm4
  3587. # rnd_0: 7 - 7
  3588. rorl $2, %ecx
  3589. movl %r9d, %edx
  3590. addl %ecx, %r13d
  3591. # rnd_1: 0 - 0
  3592. rorl $14, %edx
  3593. vpshufd $0x50, %xmm4, %xmm6
  3594. # rnd_1: 1 - 1
  3595. movl %r14d, %ebx
  3596. movl %r10d, %ecx
  3597. addl 44(%rsp), %r12d
  3598. xorl %r11d, %ecx
  3599. vpsrlq $0x11, %xmm6, %xmm8
  3600. vpsrlq $19, %xmm6, %xmm7
  3601. # rnd_1: 2 - 3
  3602. xorl %r9d, %edx
  3603. andl %r9d, %ecx
  3604. rorl $5, %edx
  3605. xorl %r11d, %ecx
  3606. xorl %r9d, %edx
  3607. addl %ecx, %r12d
  3608. vpsrld $10, %xmm6, %xmm9
  3609. vpxor %xmm8, %xmm7, %xmm8
  3610. # rnd_1: 4 - 5
  3611. rorl $6, %edx
  3612. xorl %r13d, %ebx
  3613. addl %edx, %r12d
  3614. movl %r13d, %ecx
  3615. andl %ebx, %eax
  3616. rorl $9, %ecx
  3617. xorl %r13d, %ecx
  3618. xorl %r14d, %eax
  3619. vpxor %xmm9, %xmm8, %xmm9
  3620. # rnd_1: 6 - 6
  3621. rorl $11, %ecx
  3622. addl %r12d, %r8d
  3623. xorl %r13d, %ecx
  3624. addl %eax, %r12d
  3625. vpshufb %xmm12, %xmm9, %xmm9
  3626. # rnd_1: 7 - 7
  3627. rorl $2, %ecx
  3628. movl %r8d, %edx
  3629. addl %ecx, %r12d
  3630. vpaddd %xmm4, %xmm9, %xmm2
  3631. # msg_sched done: 8-11
  3632. # msg_sched: 12-15
  3633. # rnd_0: 0 - 0
  3634. rorl $14, %edx
  3635. vpalignr $4, %xmm3, %xmm0, %xmm5
  3636. vpalignr $4, %xmm1, %xmm2, %xmm4
  3637. # rnd_0: 1 - 2
  3638. movl %r13d, %eax
  3639. movl %r9d, %ecx
  3640. addl 48(%rsp), %r11d
  3641. xorl %r10d, %ecx
  3642. xorl %r8d, %edx
  3643. andl %r8d, %ecx
  3644. vpsrld $7, %xmm5, %xmm6
  3645. vpslld $25, %xmm5, %xmm7
  3646. # rnd_0: 3 - 4
  3647. rorl $5, %edx
  3648. xorl %r10d, %ecx
  3649. xorl %r8d, %edx
  3650. addl %ecx, %r11d
  3651. rorl $6, %edx
  3652. xorl %r12d, %eax
  3653. addl %edx, %r11d
  3654. movl %r12d, %ecx
  3655. vpsrld $18, %xmm5, %xmm8
  3656. vpslld $14, %xmm5, %xmm9
  3657. # rnd_0: 5 - 6
  3658. andl %eax, %ebx
  3659. rorl $9, %ecx
  3660. xorl %r12d, %ecx
  3661. xorl %r13d, %ebx
  3662. rorl $11, %ecx
  3663. addl %r11d, %r15d
  3664. xorl %r12d, %ecx
  3665. addl %ebx, %r11d
  3666. vpor %xmm6, %xmm7, %xmm6
  3667. vpor %xmm8, %xmm9, %xmm8
  3668. # rnd_0: 7 - 7
  3669. rorl $2, %ecx
  3670. movl %r15d, %edx
  3671. addl %ecx, %r11d
  3672. # rnd_1: 0 - 1
  3673. rorl $14, %edx
  3674. movl %r12d, %ebx
  3675. movl %r8d, %ecx
  3676. addl 52(%rsp), %r10d
  3677. xorl %r9d, %ecx
  3678. vpsrld $3, %xmm5, %xmm9
  3679. vpxor %xmm6, %xmm8, %xmm6
  3680. # rnd_1: 2 - 3
  3681. xorl %r15d, %edx
  3682. andl %r15d, %ecx
  3683. rorl $5, %edx
  3684. xorl %r9d, %ecx
  3685. xorl %r15d, %edx
  3686. addl %ecx, %r10d
  3687. vpxor %xmm6, %xmm9, %xmm5
  3688. vpshufd $0xfa, %xmm2, %xmm6
  3689. # rnd_1: 4 - 5
  3690. rorl $6, %edx
  3691. xorl %r11d, %ebx
  3692. addl %edx, %r10d
  3693. movl %r11d, %ecx
  3694. andl %ebx, %eax
  3695. rorl $9, %ecx
  3696. xorl %r11d, %ecx
  3697. xorl %r12d, %eax
  3698. vpsrld $10, %xmm6, %xmm8
  3699. vpsrlq $19, %xmm6, %xmm7
  3700. # rnd_1: 6 - 7
  3701. rorl $11, %ecx
  3702. addl %r10d, %r14d
  3703. xorl %r11d, %ecx
  3704. addl %eax, %r10d
  3705. rorl $2, %ecx
  3706. movl %r14d, %edx
  3707. addl %ecx, %r10d
  3708. # rnd_0: 0 - 0
  3709. rorl $14, %edx
  3710. vpsrlq $0x11, %xmm6, %xmm6
  3711. vpaddd %xmm3, %xmm4, %xmm4
  3712. # rnd_0: 1 - 3
  3713. movl %r11d, %eax
  3714. movl %r15d, %ecx
  3715. addl 56(%rsp), %r9d
  3716. xorl %r8d, %ecx
  3717. xorl %r14d, %edx
  3718. andl %r14d, %ecx
  3719. rorl $5, %edx
  3720. xorl %r8d, %ecx
  3721. xorl %r14d, %edx
  3722. addl %ecx, %r9d
  3723. vpxor %xmm6, %xmm7, %xmm6
  3724. vpaddd %xmm5, %xmm4, %xmm4
  3725. # rnd_0: 4 - 4
  3726. rorl $6, %edx
  3727. xorl %r10d, %eax
  3728. addl %edx, %r9d
  3729. movl %r10d, %ecx
  3730. vpxor %xmm6, %xmm8, %xmm8
  3731. # rnd_0: 5 - 5
  3732. andl %eax, %ebx
  3733. rorl $9, %ecx
  3734. xorl %r10d, %ecx
  3735. xorl %r11d, %ebx
  3736. vpshufb %xmm11, %xmm8, %xmm8
  3737. # rnd_0: 6 - 6
  3738. rorl $11, %ecx
  3739. addl %r9d, %r13d
  3740. xorl %r10d, %ecx
  3741. addl %ebx, %r9d
  3742. vpaddd %xmm8, %xmm4, %xmm4
  3743. # rnd_0: 7 - 7
  3744. rorl $2, %ecx
  3745. movl %r13d, %edx
  3746. addl %ecx, %r9d
  3747. # rnd_1: 0 - 0
  3748. rorl $14, %edx
  3749. vpshufd $0x50, %xmm4, %xmm6
  3750. # rnd_1: 1 - 1
  3751. movl %r10d, %ebx
  3752. movl %r14d, %ecx
  3753. addl 60(%rsp), %r8d
  3754. xorl %r15d, %ecx
  3755. vpsrlq $0x11, %xmm6, %xmm8
  3756. vpsrlq $19, %xmm6, %xmm7
  3757. # rnd_1: 2 - 3
  3758. xorl %r13d, %edx
  3759. andl %r13d, %ecx
  3760. rorl $5, %edx
  3761. xorl %r15d, %ecx
  3762. xorl %r13d, %edx
  3763. addl %ecx, %r8d
  3764. vpsrld $10, %xmm6, %xmm9
  3765. vpxor %xmm8, %xmm7, %xmm8
  3766. # rnd_1: 4 - 5
  3767. rorl $6, %edx
  3768. xorl %r9d, %ebx
  3769. addl %edx, %r8d
  3770. movl %r9d, %ecx
  3771. andl %ebx, %eax
  3772. rorl $9, %ecx
  3773. xorl %r9d, %ecx
  3774. xorl %r10d, %eax
  3775. vpxor %xmm9, %xmm8, %xmm9
  3776. # rnd_1: 6 - 6
  3777. rorl $11, %ecx
  3778. addl %r8d, %r12d
  3779. xorl %r9d, %ecx
  3780. addl %eax, %r8d
  3781. vpshufb %xmm12, %xmm9, %xmm9
  3782. # rnd_1: 7 - 7
  3783. rorl $2, %ecx
  3784. movl %r12d, %edx
  3785. addl %ecx, %r8d
  3786. vpaddd %xmm4, %xmm9, %xmm3
  3787. # msg_sched done: 12-15
  3788. # set_w_k_xfer_4: 8
  3789. vpaddd 128+L_avx1_sha256_k(%rip), %xmm0, %xmm4
  3790. vpaddd 144+L_avx1_sha256_k(%rip), %xmm1, %xmm5
  3791. vmovdqu %xmm4, (%rsp)
  3792. vmovdqu %xmm5, 16(%rsp)
  3793. vpaddd 160+L_avx1_sha256_k(%rip), %xmm2, %xmm6
  3794. vpaddd 176+L_avx1_sha256_k(%rip), %xmm3, %xmm7
  3795. vmovdqu %xmm6, 32(%rsp)
  3796. vmovdqu %xmm7, 48(%rsp)
  3797. # msg_sched: 0-3
  3798. # rnd_0: 0 - 0
  3799. rorl $14, %edx
  3800. vpalignr $4, %xmm0, %xmm1, %xmm5
  3801. vpalignr $4, %xmm2, %xmm3, %xmm4
  3802. # rnd_0: 1 - 2
  3803. movl %r9d, %eax
  3804. movl %r13d, %ecx
  3805. addl (%rsp), %r15d
  3806. xorl %r14d, %ecx
  3807. xorl %r12d, %edx
  3808. andl %r12d, %ecx
  3809. vpsrld $7, %xmm5, %xmm6
  3810. vpslld $25, %xmm5, %xmm7
  3811. # rnd_0: 3 - 4
  3812. rorl $5, %edx
  3813. xorl %r14d, %ecx
  3814. xorl %r12d, %edx
  3815. addl %ecx, %r15d
  3816. rorl $6, %edx
  3817. xorl %r8d, %eax
  3818. addl %edx, %r15d
  3819. movl %r8d, %ecx
  3820. vpsrld $18, %xmm5, %xmm8
  3821. vpslld $14, %xmm5, %xmm9
  3822. # rnd_0: 5 - 6
  3823. andl %eax, %ebx
  3824. rorl $9, %ecx
  3825. xorl %r8d, %ecx
  3826. xorl %r9d, %ebx
  3827. rorl $11, %ecx
  3828. addl %r15d, %r11d
  3829. xorl %r8d, %ecx
  3830. addl %ebx, %r15d
  3831. vpor %xmm6, %xmm7, %xmm6
  3832. vpor %xmm8, %xmm9, %xmm8
  3833. # rnd_0: 7 - 7
  3834. rorl $2, %ecx
  3835. movl %r11d, %edx
  3836. addl %ecx, %r15d
  3837. # rnd_1: 0 - 1
  3838. rorl $14, %edx
  3839. movl %r8d, %ebx
  3840. movl %r12d, %ecx
  3841. addl 4(%rsp), %r14d
  3842. xorl %r13d, %ecx
  3843. vpsrld $3, %xmm5, %xmm9
  3844. vpxor %xmm6, %xmm8, %xmm6
  3845. # rnd_1: 2 - 3
  3846. xorl %r11d, %edx
  3847. andl %r11d, %ecx
  3848. rorl $5, %edx
  3849. xorl %r13d, %ecx
  3850. xorl %r11d, %edx
  3851. addl %ecx, %r14d
  3852. vpxor %xmm6, %xmm9, %xmm5
  3853. vpshufd $0xfa, %xmm3, %xmm6
  3854. # rnd_1: 4 - 5
  3855. rorl $6, %edx
  3856. xorl %r15d, %ebx
  3857. addl %edx, %r14d
  3858. movl %r15d, %ecx
  3859. andl %ebx, %eax
  3860. rorl $9, %ecx
  3861. xorl %r15d, %ecx
  3862. xorl %r8d, %eax
  3863. vpsrld $10, %xmm6, %xmm8
  3864. vpsrlq $19, %xmm6, %xmm7
  3865. # rnd_1: 6 - 7
  3866. rorl $11, %ecx
  3867. addl %r14d, %r10d
  3868. xorl %r15d, %ecx
  3869. addl %eax, %r14d
  3870. rorl $2, %ecx
  3871. movl %r10d, %edx
  3872. addl %ecx, %r14d
  3873. # rnd_0: 0 - 0
  3874. rorl $14, %edx
  3875. vpsrlq $0x11, %xmm6, %xmm6
  3876. vpaddd %xmm0, %xmm4, %xmm4
  3877. # rnd_0: 1 - 3
  3878. movl %r15d, %eax
  3879. movl %r11d, %ecx
  3880. addl 8(%rsp), %r13d
  3881. xorl %r12d, %ecx
  3882. xorl %r10d, %edx
  3883. andl %r10d, %ecx
  3884. rorl $5, %edx
  3885. xorl %r12d, %ecx
  3886. xorl %r10d, %edx
  3887. addl %ecx, %r13d
  3888. vpxor %xmm6, %xmm7, %xmm6
  3889. vpaddd %xmm5, %xmm4, %xmm4
  3890. # rnd_0: 4 - 4
  3891. rorl $6, %edx
  3892. xorl %r14d, %eax
  3893. addl %edx, %r13d
  3894. movl %r14d, %ecx
  3895. vpxor %xmm6, %xmm8, %xmm8
  3896. # rnd_0: 5 - 5
  3897. andl %eax, %ebx
  3898. rorl $9, %ecx
  3899. xorl %r14d, %ecx
  3900. xorl %r15d, %ebx
  3901. vpshufb %xmm11, %xmm8, %xmm8
  3902. # rnd_0: 6 - 6
  3903. rorl $11, %ecx
  3904. addl %r13d, %r9d
  3905. xorl %r14d, %ecx
  3906. addl %ebx, %r13d
  3907. vpaddd %xmm8, %xmm4, %xmm4
  3908. # rnd_0: 7 - 7
  3909. rorl $2, %ecx
  3910. movl %r9d, %edx
  3911. addl %ecx, %r13d
  3912. # rnd_1: 0 - 0
  3913. rorl $14, %edx
  3914. vpshufd $0x50, %xmm4, %xmm6
  3915. # rnd_1: 1 - 1
  3916. movl %r14d, %ebx
  3917. movl %r10d, %ecx
  3918. addl 12(%rsp), %r12d
  3919. xorl %r11d, %ecx
  3920. vpsrlq $0x11, %xmm6, %xmm8
  3921. vpsrlq $19, %xmm6, %xmm7
  3922. # rnd_1: 2 - 3
  3923. xorl %r9d, %edx
  3924. andl %r9d, %ecx
  3925. rorl $5, %edx
  3926. xorl %r11d, %ecx
  3927. xorl %r9d, %edx
  3928. addl %ecx, %r12d
  3929. vpsrld $10, %xmm6, %xmm9
  3930. vpxor %xmm8, %xmm7, %xmm8
  3931. # rnd_1: 4 - 5
  3932. rorl $6, %edx
  3933. xorl %r13d, %ebx
  3934. addl %edx, %r12d
  3935. movl %r13d, %ecx
  3936. andl %ebx, %eax
  3937. rorl $9, %ecx
  3938. xorl %r13d, %ecx
  3939. xorl %r14d, %eax
  3940. vpxor %xmm9, %xmm8, %xmm9
  3941. # rnd_1: 6 - 6
  3942. rorl $11, %ecx
  3943. addl %r12d, %r8d
  3944. xorl %r13d, %ecx
  3945. addl %eax, %r12d
  3946. vpshufb %xmm12, %xmm9, %xmm9
  3947. # rnd_1: 7 - 7
  3948. rorl $2, %ecx
  3949. movl %r8d, %edx
  3950. addl %ecx, %r12d
  3951. vpaddd %xmm4, %xmm9, %xmm0
  3952. # msg_sched done: 0-3
  3953. # msg_sched: 4-7
  3954. # rnd_0: 0 - 0
  3955. rorl $14, %edx
  3956. vpalignr $4, %xmm1, %xmm2, %xmm5
  3957. vpalignr $4, %xmm3, %xmm0, %xmm4
  3958. # rnd_0: 1 - 2
  3959. movl %r13d, %eax
  3960. movl %r9d, %ecx
  3961. addl 16(%rsp), %r11d
  3962. xorl %r10d, %ecx
  3963. xorl %r8d, %edx
  3964. andl %r8d, %ecx
  3965. vpsrld $7, %xmm5, %xmm6
  3966. vpslld $25, %xmm5, %xmm7
  3967. # rnd_0: 3 - 4
  3968. rorl $5, %edx
  3969. xorl %r10d, %ecx
  3970. xorl %r8d, %edx
  3971. addl %ecx, %r11d
  3972. rorl $6, %edx
  3973. xorl %r12d, %eax
  3974. addl %edx, %r11d
  3975. movl %r12d, %ecx
  3976. vpsrld $18, %xmm5, %xmm8
  3977. vpslld $14, %xmm5, %xmm9
  3978. # rnd_0: 5 - 6
  3979. andl %eax, %ebx
  3980. rorl $9, %ecx
  3981. xorl %r12d, %ecx
  3982. xorl %r13d, %ebx
  3983. rorl $11, %ecx
  3984. addl %r11d, %r15d
  3985. xorl %r12d, %ecx
  3986. addl %ebx, %r11d
  3987. vpor %xmm6, %xmm7, %xmm6
  3988. vpor %xmm8, %xmm9, %xmm8
  3989. # rnd_0: 7 - 7
  3990. rorl $2, %ecx
  3991. movl %r15d, %edx
  3992. addl %ecx, %r11d
  3993. # rnd_1: 0 - 1
  3994. rorl $14, %edx
  3995. movl %r12d, %ebx
  3996. movl %r8d, %ecx
  3997. addl 20(%rsp), %r10d
  3998. xorl %r9d, %ecx
  3999. vpsrld $3, %xmm5, %xmm9
  4000. vpxor %xmm6, %xmm8, %xmm6
  4001. # rnd_1: 2 - 3
  4002. xorl %r15d, %edx
  4003. andl %r15d, %ecx
  4004. rorl $5, %edx
  4005. xorl %r9d, %ecx
  4006. xorl %r15d, %edx
  4007. addl %ecx, %r10d
  4008. vpxor %xmm6, %xmm9, %xmm5
  4009. vpshufd $0xfa, %xmm0, %xmm6
  4010. # rnd_1: 4 - 5
  4011. rorl $6, %edx
  4012. xorl %r11d, %ebx
  4013. addl %edx, %r10d
  4014. movl %r11d, %ecx
  4015. andl %ebx, %eax
  4016. rorl $9, %ecx
  4017. xorl %r11d, %ecx
  4018. xorl %r12d, %eax
  4019. vpsrld $10, %xmm6, %xmm8
  4020. vpsrlq $19, %xmm6, %xmm7
  4021. # rnd_1: 6 - 7
  4022. rorl $11, %ecx
  4023. addl %r10d, %r14d
  4024. xorl %r11d, %ecx
  4025. addl %eax, %r10d
  4026. rorl $2, %ecx
  4027. movl %r14d, %edx
  4028. addl %ecx, %r10d
  4029. # rnd_0: 0 - 0
  4030. rorl $14, %edx
  4031. vpsrlq $0x11, %xmm6, %xmm6
  4032. vpaddd %xmm1, %xmm4, %xmm4
  4033. # rnd_0: 1 - 3
  4034. movl %r11d, %eax
  4035. movl %r15d, %ecx
  4036. addl 24(%rsp), %r9d
  4037. xorl %r8d, %ecx
  4038. xorl %r14d, %edx
  4039. andl %r14d, %ecx
  4040. rorl $5, %edx
  4041. xorl %r8d, %ecx
  4042. xorl %r14d, %edx
  4043. addl %ecx, %r9d
  4044. vpxor %xmm6, %xmm7, %xmm6
  4045. vpaddd %xmm5, %xmm4, %xmm4
  4046. # rnd_0: 4 - 4
  4047. rorl $6, %edx
  4048. xorl %r10d, %eax
  4049. addl %edx, %r9d
  4050. movl %r10d, %ecx
  4051. vpxor %xmm6, %xmm8, %xmm8
  4052. # rnd_0: 5 - 5
  4053. andl %eax, %ebx
  4054. rorl $9, %ecx
  4055. xorl %r10d, %ecx
  4056. xorl %r11d, %ebx
  4057. vpshufb %xmm11, %xmm8, %xmm8
  4058. # rnd_0: 6 - 6
  4059. rorl $11, %ecx
  4060. addl %r9d, %r13d
  4061. xorl %r10d, %ecx
  4062. addl %ebx, %r9d
  4063. vpaddd %xmm8, %xmm4, %xmm4
  4064. # rnd_0: 7 - 7
  4065. rorl $2, %ecx
  4066. movl %r13d, %edx
  4067. addl %ecx, %r9d
  4068. # rnd_1: 0 - 0
  4069. rorl $14, %edx
  4070. vpshufd $0x50, %xmm4, %xmm6
  4071. # rnd_1: 1 - 1
  4072. movl %r10d, %ebx
  4073. movl %r14d, %ecx
  4074. addl 28(%rsp), %r8d
  4075. xorl %r15d, %ecx
  4076. vpsrlq $0x11, %xmm6, %xmm8
  4077. vpsrlq $19, %xmm6, %xmm7
  4078. # rnd_1: 2 - 3
  4079. xorl %r13d, %edx
  4080. andl %r13d, %ecx
  4081. rorl $5, %edx
  4082. xorl %r15d, %ecx
  4083. xorl %r13d, %edx
  4084. addl %ecx, %r8d
  4085. vpsrld $10, %xmm6, %xmm9
  4086. vpxor %xmm8, %xmm7, %xmm8
  4087. # rnd_1: 4 - 5
  4088. rorl $6, %edx
  4089. xorl %r9d, %ebx
  4090. addl %edx, %r8d
  4091. movl %r9d, %ecx
  4092. andl %ebx, %eax
  4093. rorl $9, %ecx
  4094. xorl %r9d, %ecx
  4095. xorl %r10d, %eax
  4096. vpxor %xmm9, %xmm8, %xmm9
  4097. # rnd_1: 6 - 6
  4098. rorl $11, %ecx
  4099. addl %r8d, %r12d
  4100. xorl %r9d, %ecx
  4101. addl %eax, %r8d
  4102. vpshufb %xmm12, %xmm9, %xmm9
  4103. # rnd_1: 7 - 7
  4104. rorl $2, %ecx
  4105. movl %r12d, %edx
  4106. addl %ecx, %r8d
  4107. vpaddd %xmm4, %xmm9, %xmm1
  4108. # msg_sched done: 4-7
  4109. # msg_sched: 8-11
  4110. # rnd_0: 0 - 0
  4111. rorl $14, %edx
  4112. vpalignr $4, %xmm2, %xmm3, %xmm5
  4113. vpalignr $4, %xmm0, %xmm1, %xmm4
  4114. # rnd_0: 1 - 2
  4115. movl %r9d, %eax
  4116. movl %r13d, %ecx
  4117. addl 32(%rsp), %r15d
  4118. xorl %r14d, %ecx
  4119. xorl %r12d, %edx
  4120. andl %r12d, %ecx
  4121. vpsrld $7, %xmm5, %xmm6
  4122. vpslld $25, %xmm5, %xmm7
  4123. # rnd_0: 3 - 4
  4124. rorl $5, %edx
  4125. xorl %r14d, %ecx
  4126. xorl %r12d, %edx
  4127. addl %ecx, %r15d
  4128. rorl $6, %edx
  4129. xorl %r8d, %eax
  4130. addl %edx, %r15d
  4131. movl %r8d, %ecx
  4132. vpsrld $18, %xmm5, %xmm8
  4133. vpslld $14, %xmm5, %xmm9
  4134. # rnd_0: 5 - 6
  4135. andl %eax, %ebx
  4136. rorl $9, %ecx
  4137. xorl %r8d, %ecx
  4138. xorl %r9d, %ebx
  4139. rorl $11, %ecx
  4140. addl %r15d, %r11d
  4141. xorl %r8d, %ecx
  4142. addl %ebx, %r15d
  4143. vpor %xmm6, %xmm7, %xmm6
  4144. vpor %xmm8, %xmm9, %xmm8
  4145. # rnd_0: 7 - 7
  4146. rorl $2, %ecx
  4147. movl %r11d, %edx
  4148. addl %ecx, %r15d
  4149. # rnd_1: 0 - 1
  4150. rorl $14, %edx
  4151. movl %r8d, %ebx
  4152. movl %r12d, %ecx
  4153. addl 36(%rsp), %r14d
  4154. xorl %r13d, %ecx
  4155. vpsrld $3, %xmm5, %xmm9
  4156. vpxor %xmm6, %xmm8, %xmm6
  4157. # rnd_1: 2 - 3
  4158. xorl %r11d, %edx
  4159. andl %r11d, %ecx
  4160. rorl $5, %edx
  4161. xorl %r13d, %ecx
  4162. xorl %r11d, %edx
  4163. addl %ecx, %r14d
  4164. vpxor %xmm6, %xmm9, %xmm5
  4165. vpshufd $0xfa, %xmm1, %xmm6
  4166. # rnd_1: 4 - 5
  4167. rorl $6, %edx
  4168. xorl %r15d, %ebx
  4169. addl %edx, %r14d
  4170. movl %r15d, %ecx
  4171. andl %ebx, %eax
  4172. rorl $9, %ecx
  4173. xorl %r15d, %ecx
  4174. xorl %r8d, %eax
  4175. vpsrld $10, %xmm6, %xmm8
  4176. vpsrlq $19, %xmm6, %xmm7
  4177. # rnd_1: 6 - 7
  4178. rorl $11, %ecx
  4179. addl %r14d, %r10d
  4180. xorl %r15d, %ecx
  4181. addl %eax, %r14d
  4182. rorl $2, %ecx
  4183. movl %r10d, %edx
  4184. addl %ecx, %r14d
  4185. # rnd_0: 0 - 0
  4186. rorl $14, %edx
  4187. vpsrlq $0x11, %xmm6, %xmm6
  4188. vpaddd %xmm2, %xmm4, %xmm4
  4189. # rnd_0: 1 - 3
  4190. movl %r15d, %eax
  4191. movl %r11d, %ecx
  4192. addl 40(%rsp), %r13d
  4193. xorl %r12d, %ecx
  4194. xorl %r10d, %edx
  4195. andl %r10d, %ecx
  4196. rorl $5, %edx
  4197. xorl %r12d, %ecx
  4198. xorl %r10d, %edx
  4199. addl %ecx, %r13d
  4200. vpxor %xmm6, %xmm7, %xmm6
  4201. vpaddd %xmm5, %xmm4, %xmm4
  4202. # rnd_0: 4 - 4
  4203. rorl $6, %edx
  4204. xorl %r14d, %eax
  4205. addl %edx, %r13d
  4206. movl %r14d, %ecx
  4207. vpxor %xmm6, %xmm8, %xmm8
  4208. # rnd_0: 5 - 5
  4209. andl %eax, %ebx
  4210. rorl $9, %ecx
  4211. xorl %r14d, %ecx
  4212. xorl %r15d, %ebx
  4213. vpshufb %xmm11, %xmm8, %xmm8
  4214. # rnd_0: 6 - 6
  4215. rorl $11, %ecx
  4216. addl %r13d, %r9d
  4217. xorl %r14d, %ecx
  4218. addl %ebx, %r13d
  4219. vpaddd %xmm8, %xmm4, %xmm4
  4220. # rnd_0: 7 - 7
  4221. rorl $2, %ecx
  4222. movl %r9d, %edx
  4223. addl %ecx, %r13d
  4224. # rnd_1: 0 - 0
  4225. rorl $14, %edx
  4226. vpshufd $0x50, %xmm4, %xmm6
  4227. # rnd_1: 1 - 1
  4228. movl %r14d, %ebx
  4229. movl %r10d, %ecx
  4230. addl 44(%rsp), %r12d
  4231. xorl %r11d, %ecx
  4232. vpsrlq $0x11, %xmm6, %xmm8
  4233. vpsrlq $19, %xmm6, %xmm7
  4234. # rnd_1: 2 - 3
  4235. xorl %r9d, %edx
  4236. andl %r9d, %ecx
  4237. rorl $5, %edx
  4238. xorl %r11d, %ecx
  4239. xorl %r9d, %edx
  4240. addl %ecx, %r12d
  4241. vpsrld $10, %xmm6, %xmm9
  4242. vpxor %xmm8, %xmm7, %xmm8
  4243. # rnd_1: 4 - 5
  4244. rorl $6, %edx
  4245. xorl %r13d, %ebx
  4246. addl %edx, %r12d
  4247. movl %r13d, %ecx
  4248. andl %ebx, %eax
  4249. rorl $9, %ecx
  4250. xorl %r13d, %ecx
  4251. xorl %r14d, %eax
  4252. vpxor %xmm9, %xmm8, %xmm9
  4253. # rnd_1: 6 - 6
  4254. rorl $11, %ecx
  4255. addl %r12d, %r8d
  4256. xorl %r13d, %ecx
  4257. addl %eax, %r12d
  4258. vpshufb %xmm12, %xmm9, %xmm9
  4259. # rnd_1: 7 - 7
  4260. rorl $2, %ecx
  4261. movl %r8d, %edx
  4262. addl %ecx, %r12d
  4263. vpaddd %xmm4, %xmm9, %xmm2
  4264. # msg_sched done: 8-11
  4265. # msg_sched: 12-15
  4266. # rnd_0: 0 - 0
  4267. rorl $14, %edx
  4268. vpalignr $4, %xmm3, %xmm0, %xmm5
  4269. vpalignr $4, %xmm1, %xmm2, %xmm4
  4270. # rnd_0: 1 - 2
  4271. movl %r13d, %eax
  4272. movl %r9d, %ecx
  4273. addl 48(%rsp), %r11d
  4274. xorl %r10d, %ecx
  4275. xorl %r8d, %edx
  4276. andl %r8d, %ecx
  4277. vpsrld $7, %xmm5, %xmm6
  4278. vpslld $25, %xmm5, %xmm7
  4279. # rnd_0: 3 - 4
  4280. rorl $5, %edx
  4281. xorl %r10d, %ecx
  4282. xorl %r8d, %edx
  4283. addl %ecx, %r11d
  4284. rorl $6, %edx
  4285. xorl %r12d, %eax
  4286. addl %edx, %r11d
  4287. movl %r12d, %ecx
  4288. vpsrld $18, %xmm5, %xmm8
  4289. vpslld $14, %xmm5, %xmm9
  4290. # rnd_0: 5 - 6
  4291. andl %eax, %ebx
  4292. rorl $9, %ecx
  4293. xorl %r12d, %ecx
  4294. xorl %r13d, %ebx
  4295. rorl $11, %ecx
  4296. addl %r11d, %r15d
  4297. xorl %r12d, %ecx
  4298. addl %ebx, %r11d
  4299. vpor %xmm6, %xmm7, %xmm6
  4300. vpor %xmm8, %xmm9, %xmm8
  4301. # rnd_0: 7 - 7
  4302. rorl $2, %ecx
  4303. movl %r15d, %edx
  4304. addl %ecx, %r11d
  4305. # rnd_1: 0 - 1
  4306. rorl $14, %edx
  4307. movl %r12d, %ebx
  4308. movl %r8d, %ecx
  4309. addl 52(%rsp), %r10d
  4310. xorl %r9d, %ecx
  4311. vpsrld $3, %xmm5, %xmm9
  4312. vpxor %xmm6, %xmm8, %xmm6
  4313. # rnd_1: 2 - 3
  4314. xorl %r15d, %edx
  4315. andl %r15d, %ecx
  4316. rorl $5, %edx
  4317. xorl %r9d, %ecx
  4318. xorl %r15d, %edx
  4319. addl %ecx, %r10d
  4320. vpxor %xmm6, %xmm9, %xmm5
  4321. vpshufd $0xfa, %xmm2, %xmm6
  4322. # rnd_1: 4 - 5
  4323. rorl $6, %edx
  4324. xorl %r11d, %ebx
  4325. addl %edx, %r10d
  4326. movl %r11d, %ecx
  4327. andl %ebx, %eax
  4328. rorl $9, %ecx
  4329. xorl %r11d, %ecx
  4330. xorl %r12d, %eax
  4331. vpsrld $10, %xmm6, %xmm8
  4332. vpsrlq $19, %xmm6, %xmm7
  4333. # rnd_1: 6 - 7
  4334. rorl $11, %ecx
  4335. addl %r10d, %r14d
  4336. xorl %r11d, %ecx
  4337. addl %eax, %r10d
  4338. rorl $2, %ecx
  4339. movl %r14d, %edx
  4340. addl %ecx, %r10d
  4341. # rnd_0: 0 - 0
  4342. rorl $14, %edx
  4343. vpsrlq $0x11, %xmm6, %xmm6
  4344. vpaddd %xmm3, %xmm4, %xmm4
  4345. # rnd_0: 1 - 3
  4346. movl %r11d, %eax
  4347. movl %r15d, %ecx
  4348. addl 56(%rsp), %r9d
  4349. xorl %r8d, %ecx
  4350. xorl %r14d, %edx
  4351. andl %r14d, %ecx
  4352. rorl $5, %edx
  4353. xorl %r8d, %ecx
  4354. xorl %r14d, %edx
  4355. addl %ecx, %r9d
  4356. vpxor %xmm6, %xmm7, %xmm6
  4357. vpaddd %xmm5, %xmm4, %xmm4
  4358. # rnd_0: 4 - 4
  4359. rorl $6, %edx
  4360. xorl %r10d, %eax
  4361. addl %edx, %r9d
  4362. movl %r10d, %ecx
  4363. vpxor %xmm6, %xmm8, %xmm8
  4364. # rnd_0: 5 - 5
  4365. andl %eax, %ebx
  4366. rorl $9, %ecx
  4367. xorl %r10d, %ecx
  4368. xorl %r11d, %ebx
  4369. vpshufb %xmm11, %xmm8, %xmm8
  4370. # rnd_0: 6 - 6
  4371. rorl $11, %ecx
  4372. addl %r9d, %r13d
  4373. xorl %r10d, %ecx
  4374. addl %ebx, %r9d
  4375. vpaddd %xmm8, %xmm4, %xmm4
  4376. # rnd_0: 7 - 7
  4377. rorl $2, %ecx
  4378. movl %r13d, %edx
  4379. addl %ecx, %r9d
  4380. # rnd_1: 0 - 0
  4381. rorl $14, %edx
  4382. vpshufd $0x50, %xmm4, %xmm6
  4383. # rnd_1: 1 - 1
  4384. movl %r10d, %ebx
  4385. movl %r14d, %ecx
  4386. addl 60(%rsp), %r8d
  4387. xorl %r15d, %ecx
  4388. vpsrlq $0x11, %xmm6, %xmm8
  4389. vpsrlq $19, %xmm6, %xmm7
  4390. # rnd_1: 2 - 3
  4391. xorl %r13d, %edx
  4392. andl %r13d, %ecx
  4393. rorl $5, %edx
  4394. xorl %r15d, %ecx
  4395. xorl %r13d, %edx
  4396. addl %ecx, %r8d
  4397. vpsrld $10, %xmm6, %xmm9
  4398. vpxor %xmm8, %xmm7, %xmm8
  4399. # rnd_1: 4 - 5
  4400. rorl $6, %edx
  4401. xorl %r9d, %ebx
  4402. addl %edx, %r8d
  4403. movl %r9d, %ecx
  4404. andl %ebx, %eax
  4405. rorl $9, %ecx
  4406. xorl %r9d, %ecx
  4407. xorl %r10d, %eax
  4408. vpxor %xmm9, %xmm8, %xmm9
  4409. # rnd_1: 6 - 6
  4410. rorl $11, %ecx
  4411. addl %r8d, %r12d
  4412. xorl %r9d, %ecx
  4413. addl %eax, %r8d
  4414. vpshufb %xmm12, %xmm9, %xmm9
  4415. # rnd_1: 7 - 7
  4416. rorl $2, %ecx
  4417. movl %r12d, %edx
  4418. addl %ecx, %r8d
  4419. vpaddd %xmm4, %xmm9, %xmm3
  4420. # msg_sched done: 12-15
  4421. # set_w_k_xfer_4: 12
  4422. vpaddd 192+L_avx1_sha256_k(%rip), %xmm0, %xmm4
  4423. vpaddd 208+L_avx1_sha256_k(%rip), %xmm1, %xmm5
  4424. vmovdqu %xmm4, (%rsp)
  4425. vmovdqu %xmm5, 16(%rsp)
  4426. vpaddd 224+L_avx1_sha256_k(%rip), %xmm2, %xmm6
  4427. vpaddd 240+L_avx1_sha256_k(%rip), %xmm3, %xmm7
  4428. vmovdqu %xmm6, 32(%rsp)
  4429. vmovdqu %xmm7, 48(%rsp)
  4430. # rnd_all_4: 0-3
  4431. addl (%rsp), %r15d
  4432. movl %r13d, %ecx
  4433. movl %r9d, %eax
  4434. xorl %r14d, %ecx
  4435. rorl $14, %edx
  4436. andl %r12d, %ecx
  4437. xorl %r12d, %edx
  4438. xorl %r14d, %ecx
  4439. rorl $5, %edx
  4440. addl %ecx, %r15d
  4441. xorl %r12d, %edx
  4442. xorl %r8d, %eax
  4443. rorl $6, %edx
  4444. movl %r8d, %ecx
  4445. addl %edx, %r15d
  4446. rorl $9, %ecx
  4447. andl %eax, %ebx
  4448. xorl %r8d, %ecx
  4449. xorl %r9d, %ebx
  4450. rorl $11, %ecx
  4451. addl %r15d, %r11d
  4452. xorl %r8d, %ecx
  4453. addl %ebx, %r15d
  4454. rorl $2, %ecx
  4455. movl %r11d, %edx
  4456. addl %ecx, %r15d
  4457. addl 4(%rsp), %r14d
  4458. movl %r12d, %ecx
  4459. movl %r8d, %ebx
  4460. xorl %r13d, %ecx
  4461. rorl $14, %edx
  4462. andl %r11d, %ecx
  4463. xorl %r11d, %edx
  4464. xorl %r13d, %ecx
  4465. rorl $5, %edx
  4466. addl %ecx, %r14d
  4467. xorl %r11d, %edx
  4468. xorl %r15d, %ebx
  4469. rorl $6, %edx
  4470. movl %r15d, %ecx
  4471. addl %edx, %r14d
  4472. rorl $9, %ecx
  4473. andl %ebx, %eax
  4474. xorl %r15d, %ecx
  4475. xorl %r8d, %eax
  4476. rorl $11, %ecx
  4477. addl %r14d, %r10d
  4478. xorl %r15d, %ecx
  4479. addl %eax, %r14d
  4480. rorl $2, %ecx
  4481. movl %r10d, %edx
  4482. addl %ecx, %r14d
  4483. addl 8(%rsp), %r13d
  4484. movl %r11d, %ecx
  4485. movl %r15d, %eax
  4486. xorl %r12d, %ecx
  4487. rorl $14, %edx
  4488. andl %r10d, %ecx
  4489. xorl %r10d, %edx
  4490. xorl %r12d, %ecx
  4491. rorl $5, %edx
  4492. addl %ecx, %r13d
  4493. xorl %r10d, %edx
  4494. xorl %r14d, %eax
  4495. rorl $6, %edx
  4496. movl %r14d, %ecx
  4497. addl %edx, %r13d
  4498. rorl $9, %ecx
  4499. andl %eax, %ebx
  4500. xorl %r14d, %ecx
  4501. xorl %r15d, %ebx
  4502. rorl $11, %ecx
  4503. addl %r13d, %r9d
  4504. xorl %r14d, %ecx
  4505. addl %ebx, %r13d
  4506. rorl $2, %ecx
  4507. movl %r9d, %edx
  4508. addl %ecx, %r13d
  4509. addl 12(%rsp), %r12d
  4510. movl %r10d, %ecx
  4511. movl %r14d, %ebx
  4512. xorl %r11d, %ecx
  4513. rorl $14, %edx
  4514. andl %r9d, %ecx
  4515. xorl %r9d, %edx
  4516. xorl %r11d, %ecx
  4517. rorl $5, %edx
  4518. addl %ecx, %r12d
  4519. xorl %r9d, %edx
  4520. xorl %r13d, %ebx
  4521. rorl $6, %edx
  4522. movl %r13d, %ecx
  4523. addl %edx, %r12d
  4524. rorl $9, %ecx
  4525. andl %ebx, %eax
  4526. xorl %r13d, %ecx
  4527. xorl %r14d, %eax
  4528. rorl $11, %ecx
  4529. addl %r12d, %r8d
  4530. xorl %r13d, %ecx
  4531. addl %eax, %r12d
  4532. rorl $2, %ecx
  4533. movl %r8d, %edx
  4534. addl %ecx, %r12d
  4535. # rnd_all_4: 1-4
  4536. addl 16(%rsp), %r11d
  4537. movl %r9d, %ecx
  4538. movl %r13d, %eax
  4539. xorl %r10d, %ecx
  4540. rorl $14, %edx
  4541. andl %r8d, %ecx
  4542. xorl %r8d, %edx
  4543. xorl %r10d, %ecx
  4544. rorl $5, %edx
  4545. addl %ecx, %r11d
  4546. xorl %r8d, %edx
  4547. xorl %r12d, %eax
  4548. rorl $6, %edx
  4549. movl %r12d, %ecx
  4550. addl %edx, %r11d
  4551. rorl $9, %ecx
  4552. andl %eax, %ebx
  4553. xorl %r12d, %ecx
  4554. xorl %r13d, %ebx
  4555. rorl $11, %ecx
  4556. addl %r11d, %r15d
  4557. xorl %r12d, %ecx
  4558. addl %ebx, %r11d
  4559. rorl $2, %ecx
  4560. movl %r15d, %edx
  4561. addl %ecx, %r11d
  4562. addl 20(%rsp), %r10d
  4563. movl %r8d, %ecx
  4564. movl %r12d, %ebx
  4565. xorl %r9d, %ecx
  4566. rorl $14, %edx
  4567. andl %r15d, %ecx
  4568. xorl %r15d, %edx
  4569. xorl %r9d, %ecx
  4570. rorl $5, %edx
  4571. addl %ecx, %r10d
  4572. xorl %r15d, %edx
  4573. xorl %r11d, %ebx
  4574. rorl $6, %edx
  4575. movl %r11d, %ecx
  4576. addl %edx, %r10d
  4577. rorl $9, %ecx
  4578. andl %ebx, %eax
  4579. xorl %r11d, %ecx
  4580. xorl %r12d, %eax
  4581. rorl $11, %ecx
  4582. addl %r10d, %r14d
  4583. xorl %r11d, %ecx
  4584. addl %eax, %r10d
  4585. rorl $2, %ecx
  4586. movl %r14d, %edx
  4587. addl %ecx, %r10d
  4588. addl 24(%rsp), %r9d
  4589. movl %r15d, %ecx
  4590. movl %r11d, %eax
  4591. xorl %r8d, %ecx
  4592. rorl $14, %edx
  4593. andl %r14d, %ecx
  4594. xorl %r14d, %edx
  4595. xorl %r8d, %ecx
  4596. rorl $5, %edx
  4597. addl %ecx, %r9d
  4598. xorl %r14d, %edx
  4599. xorl %r10d, %eax
  4600. rorl $6, %edx
  4601. movl %r10d, %ecx
  4602. addl %edx, %r9d
  4603. rorl $9, %ecx
  4604. andl %eax, %ebx
  4605. xorl %r10d, %ecx
  4606. xorl %r11d, %ebx
  4607. rorl $11, %ecx
  4608. addl %r9d, %r13d
  4609. xorl %r10d, %ecx
  4610. addl %ebx, %r9d
  4611. rorl $2, %ecx
  4612. movl %r13d, %edx
  4613. addl %ecx, %r9d
  4614. addl 28(%rsp), %r8d
  4615. movl %r14d, %ecx
  4616. movl %r10d, %ebx
  4617. xorl %r15d, %ecx
  4618. rorl $14, %edx
  4619. andl %r13d, %ecx
  4620. xorl %r13d, %edx
  4621. xorl %r15d, %ecx
  4622. rorl $5, %edx
  4623. addl %ecx, %r8d
  4624. xorl %r13d, %edx
  4625. xorl %r9d, %ebx
  4626. rorl $6, %edx
  4627. movl %r9d, %ecx
  4628. addl %edx, %r8d
  4629. rorl $9, %ecx
  4630. andl %ebx, %eax
  4631. xorl %r9d, %ecx
  4632. xorl %r10d, %eax
  4633. rorl $11, %ecx
  4634. addl %r8d, %r12d
  4635. xorl %r9d, %ecx
  4636. addl %eax, %r8d
  4637. rorl $2, %ecx
  4638. movl %r12d, %edx
  4639. addl %ecx, %r8d
  4640. # rnd_all_4: 2-5
  4641. addl 32(%rsp), %r15d
  4642. movl %r13d, %ecx
  4643. movl %r9d, %eax
  4644. xorl %r14d, %ecx
  4645. rorl $14, %edx
  4646. andl %r12d, %ecx
  4647. xorl %r12d, %edx
  4648. xorl %r14d, %ecx
  4649. rorl $5, %edx
  4650. addl %ecx, %r15d
  4651. xorl %r12d, %edx
  4652. xorl %r8d, %eax
  4653. rorl $6, %edx
  4654. movl %r8d, %ecx
  4655. addl %edx, %r15d
  4656. rorl $9, %ecx
  4657. andl %eax, %ebx
  4658. xorl %r8d, %ecx
  4659. xorl %r9d, %ebx
  4660. rorl $11, %ecx
  4661. addl %r15d, %r11d
  4662. xorl %r8d, %ecx
  4663. addl %ebx, %r15d
  4664. rorl $2, %ecx
  4665. movl %r11d, %edx
  4666. addl %ecx, %r15d
  4667. addl 36(%rsp), %r14d
  4668. movl %r12d, %ecx
  4669. movl %r8d, %ebx
  4670. xorl %r13d, %ecx
  4671. rorl $14, %edx
  4672. andl %r11d, %ecx
  4673. xorl %r11d, %edx
  4674. xorl %r13d, %ecx
  4675. rorl $5, %edx
  4676. addl %ecx, %r14d
  4677. xorl %r11d, %edx
  4678. xorl %r15d, %ebx
  4679. rorl $6, %edx
  4680. movl %r15d, %ecx
  4681. addl %edx, %r14d
  4682. rorl $9, %ecx
  4683. andl %ebx, %eax
  4684. xorl %r15d, %ecx
  4685. xorl %r8d, %eax
  4686. rorl $11, %ecx
  4687. addl %r14d, %r10d
  4688. xorl %r15d, %ecx
  4689. addl %eax, %r14d
  4690. rorl $2, %ecx
  4691. movl %r10d, %edx
  4692. addl %ecx, %r14d
  4693. addl 40(%rsp), %r13d
  4694. movl %r11d, %ecx
  4695. movl %r15d, %eax
  4696. xorl %r12d, %ecx
  4697. rorl $14, %edx
  4698. andl %r10d, %ecx
  4699. xorl %r10d, %edx
  4700. xorl %r12d, %ecx
  4701. rorl $5, %edx
  4702. addl %ecx, %r13d
  4703. xorl %r10d, %edx
  4704. xorl %r14d, %eax
  4705. rorl $6, %edx
  4706. movl %r14d, %ecx
  4707. addl %edx, %r13d
  4708. rorl $9, %ecx
  4709. andl %eax, %ebx
  4710. xorl %r14d, %ecx
  4711. xorl %r15d, %ebx
  4712. rorl $11, %ecx
  4713. addl %r13d, %r9d
  4714. xorl %r14d, %ecx
  4715. addl %ebx, %r13d
  4716. rorl $2, %ecx
  4717. movl %r9d, %edx
  4718. addl %ecx, %r13d
  4719. addl 44(%rsp), %r12d
  4720. movl %r10d, %ecx
  4721. movl %r14d, %ebx
  4722. xorl %r11d, %ecx
  4723. rorl $14, %edx
  4724. andl %r9d, %ecx
  4725. xorl %r9d, %edx
  4726. xorl %r11d, %ecx
  4727. rorl $5, %edx
  4728. addl %ecx, %r12d
  4729. xorl %r9d, %edx
  4730. xorl %r13d, %ebx
  4731. rorl $6, %edx
  4732. movl %r13d, %ecx
  4733. addl %edx, %r12d
  4734. rorl $9, %ecx
  4735. andl %ebx, %eax
  4736. xorl %r13d, %ecx
  4737. xorl %r14d, %eax
  4738. rorl $11, %ecx
  4739. addl %r12d, %r8d
  4740. xorl %r13d, %ecx
  4741. addl %eax, %r12d
  4742. rorl $2, %ecx
  4743. movl %r8d, %edx
  4744. addl %ecx, %r12d
  4745. # rnd_all_4: 3-6
  4746. addl 48(%rsp), %r11d
  4747. movl %r9d, %ecx
  4748. movl %r13d, %eax
  4749. xorl %r10d, %ecx
  4750. rorl $14, %edx
  4751. andl %r8d, %ecx
  4752. xorl %r8d, %edx
  4753. xorl %r10d, %ecx
  4754. rorl $5, %edx
  4755. addl %ecx, %r11d
  4756. xorl %r8d, %edx
  4757. xorl %r12d, %eax
  4758. rorl $6, %edx
  4759. movl %r12d, %ecx
  4760. addl %edx, %r11d
  4761. rorl $9, %ecx
  4762. andl %eax, %ebx
  4763. xorl %r12d, %ecx
  4764. xorl %r13d, %ebx
  4765. rorl $11, %ecx
  4766. addl %r11d, %r15d
  4767. xorl %r12d, %ecx
  4768. addl %ebx, %r11d
  4769. rorl $2, %ecx
  4770. movl %r15d, %edx
  4771. addl %ecx, %r11d
  4772. addl 52(%rsp), %r10d
  4773. movl %r8d, %ecx
  4774. movl %r12d, %ebx
  4775. xorl %r9d, %ecx
  4776. rorl $14, %edx
  4777. andl %r15d, %ecx
  4778. xorl %r15d, %edx
  4779. xorl %r9d, %ecx
  4780. rorl $5, %edx
  4781. addl %ecx, %r10d
  4782. xorl %r15d, %edx
  4783. xorl %r11d, %ebx
  4784. rorl $6, %edx
  4785. movl %r11d, %ecx
  4786. addl %edx, %r10d
  4787. rorl $9, %ecx
  4788. andl %ebx, %eax
  4789. xorl %r11d, %ecx
  4790. xorl %r12d, %eax
  4791. rorl $11, %ecx
  4792. addl %r10d, %r14d
  4793. xorl %r11d, %ecx
  4794. addl %eax, %r10d
  4795. rorl $2, %ecx
  4796. movl %r14d, %edx
  4797. addl %ecx, %r10d
  4798. addl 56(%rsp), %r9d
  4799. movl %r15d, %ecx
  4800. movl %r11d, %eax
  4801. xorl %r8d, %ecx
  4802. rorl $14, %edx
  4803. andl %r14d, %ecx
  4804. xorl %r14d, %edx
  4805. xorl %r8d, %ecx
  4806. rorl $5, %edx
  4807. addl %ecx, %r9d
  4808. xorl %r14d, %edx
  4809. xorl %r10d, %eax
  4810. rorl $6, %edx
  4811. movl %r10d, %ecx
  4812. addl %edx, %r9d
  4813. rorl $9, %ecx
  4814. andl %eax, %ebx
  4815. xorl %r10d, %ecx
  4816. xorl %r11d, %ebx
  4817. rorl $11, %ecx
  4818. addl %r9d, %r13d
  4819. xorl %r10d, %ecx
  4820. addl %ebx, %r9d
  4821. rorl $2, %ecx
  4822. movl %r13d, %edx
  4823. addl %ecx, %r9d
  4824. addl 60(%rsp), %r8d
  4825. movl %r14d, %ecx
  4826. movl %r10d, %ebx
  4827. xorl %r15d, %ecx
  4828. rorl $14, %edx
  4829. andl %r13d, %ecx
  4830. xorl %r13d, %edx
  4831. xorl %r15d, %ecx
  4832. rorl $5, %edx
  4833. addl %ecx, %r8d
  4834. xorl %r13d, %edx
  4835. xorl %r9d, %ebx
  4836. rorl $6, %edx
  4837. movl %r9d, %ecx
  4838. addl %edx, %r8d
  4839. rorl $9, %ecx
  4840. andl %ebx, %eax
  4841. xorl %r9d, %ecx
  4842. xorl %r10d, %eax
  4843. rorl $11, %ecx
  4844. addl %r8d, %r12d
  4845. xorl %r9d, %ecx
  4846. addl %eax, %r8d
  4847. rorl $2, %ecx
  4848. movl %r12d, %edx
  4849. addl %ecx, %r8d
  4850. addl (%rdi), %r8d
  4851. addl 4(%rdi), %r9d
  4852. addl 8(%rdi), %r10d
  4853. addl 12(%rdi), %r11d
  4854. addl 16(%rdi), %r12d
  4855. addl 20(%rdi), %r13d
  4856. addl 24(%rdi), %r14d
  4857. addl 28(%rdi), %r15d
  4858. addq $0x40, %rbp
  4859. subl $0x40, %esi
  4860. movl %r8d, (%rdi)
  4861. movl %r9d, 4(%rdi)
  4862. movl %r10d, 8(%rdi)
  4863. movl %r11d, 12(%rdi)
  4864. movl %r12d, 16(%rdi)
  4865. movl %r13d, 20(%rdi)
  4866. movl %r14d, 24(%rdi)
  4867. movl %r15d, 28(%rdi)
  4868. jnz L_sha256_len_avx1_start
  4869. xorq %rax, %rax
  4870. vzeroupper
  4871. addq $0x40, %rsp
  4872. popq %rbp
  4873. popq %r15
  4874. popq %r14
  4875. popq %r13
  4876. popq %r12
  4877. popq %rbx
  4878. repz retq
  4879. #ifndef __APPLE__
  4880. .size Transform_Sha256_AVX1_Len,.-Transform_Sha256_AVX1_Len
  4881. #endif /* __APPLE__ */
  4882. #ifndef __APPLE__
  4883. .data
  4884. #else
  4885. .section __DATA,__data
  4886. #endif /* __APPLE__ */
  4887. L_avx1_rorx_sha256_k:
  4888. .long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
  4889. .long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
  4890. .long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
  4891. .long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
  4892. .long 0xe49b69c1,0xefbe4786,0xfc19dc6,0x240ca1cc
  4893. .long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
  4894. .long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
  4895. .long 0xc6e00bf3,0xd5a79147,0x6ca6351,0x14292967
  4896. .long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
  4897. .long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
  4898. .long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
  4899. .long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
  4900. .long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
  4901. .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
  4902. .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
  4903. .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
  4904. #ifndef __APPLE__
  4905. .data
  4906. #else
  4907. .section __DATA,__data
  4908. #endif /* __APPLE__ */
  4909. #ifndef __APPLE__
  4910. .align 16
  4911. #else
  4912. .p2align 4
  4913. #endif /* __APPLE__ */
  4914. L_avx1_rorx_sha256_shuf_00BA:
  4915. .quad 0xb0a090803020100, 0xffffffffffffffff
  4916. #ifndef __APPLE__
  4917. .data
  4918. #else
  4919. .section __DATA,__data
  4920. #endif /* __APPLE__ */
  4921. #ifndef __APPLE__
  4922. .align 16
  4923. #else
  4924. .p2align 4
  4925. #endif /* __APPLE__ */
  4926. L_avx1_rorx_sha256_shuf_DC00:
  4927. .quad 0xffffffffffffffff, 0xb0a090803020100
  4928. #ifndef __APPLE__
  4929. .data
  4930. #else
  4931. .section __DATA,__data
  4932. #endif /* __APPLE__ */
  4933. #ifndef __APPLE__
  4934. .align 16
  4935. #else
  4936. .p2align 4
  4937. #endif /* __APPLE__ */
  4938. L_avx1_rorx_sha256_flip_mask:
  4939. .quad 0x405060700010203, 0xc0d0e0f08090a0b
  4940. #ifndef __APPLE__
  4941. .text
  4942. .globl Transform_Sha256_AVX1_RORX
  4943. .type Transform_Sha256_AVX1_RORX,@function
  4944. .align 16
  4945. Transform_Sha256_AVX1_RORX:
  4946. #else
  4947. .section __TEXT,__text
  4948. .globl _Transform_Sha256_AVX1_RORX
  4949. .p2align 4
  4950. _Transform_Sha256_AVX1_RORX:
  4951. #endif /* __APPLE__ */
  4952. pushq %rbx
  4953. pushq %r12
  4954. pushq %r13
  4955. pushq %r14
  4956. pushq %r15
  4957. subq $0x40, %rsp
  4958. vmovdqa L_avx1_rorx_sha256_flip_mask(%rip), %xmm13
  4959. vmovdqa L_avx1_rorx_sha256_shuf_00BA(%rip), %xmm11
  4960. vmovdqa L_avx1_rorx_sha256_shuf_DC00(%rip), %xmm12
  4961. leaq 32(%rdi), %rax
  4962. # X0, X1, X2, X3 = W[0..15]
  4963. vmovdqu (%rax), %xmm0
  4964. vmovdqu 16(%rax), %xmm1
  4965. vpshufb %xmm13, %xmm0, %xmm0
  4966. vpshufb %xmm13, %xmm1, %xmm1
  4967. vmovdqu 32(%rax), %xmm2
  4968. vmovdqu 48(%rax), %xmm3
  4969. vpshufb %xmm13, %xmm2, %xmm2
  4970. vpshufb %xmm13, %xmm3, %xmm3
  4971. movl (%rdi), %r8d
  4972. movl 4(%rdi), %r9d
  4973. movl 8(%rdi), %r10d
  4974. movl 12(%rdi), %r11d
  4975. movl 16(%rdi), %r12d
  4976. movl 20(%rdi), %r13d
  4977. movl 24(%rdi), %r14d
  4978. movl 28(%rdi), %r15d
  4979. # set_w_k_xfer_4: 0
  4980. vpaddd 0+L_avx1_rorx_sha256_k(%rip), %xmm0, %xmm4
  4981. vpaddd 16+L_avx1_rorx_sha256_k(%rip), %xmm1, %xmm5
  4982. vmovdqu %xmm4, (%rsp)
  4983. vmovdqu %xmm5, 16(%rsp)
  4984. vpaddd 32+L_avx1_rorx_sha256_k(%rip), %xmm2, %xmm6
  4985. vpaddd 48+L_avx1_rorx_sha256_k(%rip), %xmm3, %xmm7
  4986. vmovdqu %xmm6, 32(%rsp)
  4987. vmovdqu %xmm7, 48(%rsp)
  4988. movl %r9d, %ebx
  4989. rorxl $6, %r12d, %edx
  4990. xorl %r10d, %ebx
  4991. # msg_sched: 0-3
  4992. # rnd_0: 0 - 0
  4993. movl %r13d, %eax
  4994. rorxl $11, %r12d, %ecx
  4995. addl (%rsp), %r15d
  4996. vpalignr $4, %xmm2, %xmm3, %xmm4
  4997. vpalignr $4, %xmm0, %xmm1, %xmm5
  4998. # rnd_0: 1 - 2
  4999. xorl %edx, %ecx
  5000. xorl %r14d, %eax
  5001. rorxl $25, %r12d, %edx
  5002. andl %r12d, %eax
  5003. xorl %ecx, %edx
  5004. rorxl $13, %r8d, %ecx
  5005. vpsrld $7, %xmm5, %xmm6
  5006. vpslld $25, %xmm5, %xmm7
  5007. # rnd_0: 3 - 4
  5008. addl %edx, %r15d
  5009. rorxl $2, %r8d, %edx
  5010. xorl %r14d, %eax
  5011. xorl %edx, %ecx
  5012. rorxl $22, %r8d, %edx
  5013. addl %eax, %r15d
  5014. vpsrld $3, %xmm5, %xmm8
  5015. vpor %xmm6, %xmm7, %xmm7
  5016. # rnd_0: 5 - 7
  5017. xorl %ecx, %edx
  5018. movl %r9d, %eax
  5019. addl %r15d, %r11d
  5020. xorl %r8d, %eax
  5021. addl %edx, %r15d
  5022. andl %eax, %ebx
  5023. xorl %r9d, %ebx
  5024. rorxl $6, %r11d, %edx
  5025. addl %ebx, %r15d
  5026. # rnd_1: 0 - 0
  5027. movl %r12d, %ebx
  5028. rorxl $11, %r11d, %ecx
  5029. addl 4(%rsp), %r14d
  5030. vpsrld $18, %xmm5, %xmm6
  5031. # rnd_1: 1 - 1
  5032. xorl %edx, %ecx
  5033. xorl %r13d, %ebx
  5034. rorxl $25, %r11d, %edx
  5035. vpslld $14, %xmm5, %xmm5
  5036. # rnd_1: 2 - 2
  5037. andl %r11d, %ebx
  5038. xorl %ecx, %edx
  5039. rorxl $13, %r15d, %ecx
  5040. vpxor %xmm5, %xmm7, %xmm7
  5041. # rnd_1: 3 - 3
  5042. addl %edx, %r14d
  5043. rorxl $2, %r15d, %edx
  5044. xorl %r13d, %ebx
  5045. vpxor %xmm6, %xmm7, %xmm7
  5046. # rnd_1: 4 - 4
  5047. xorl %edx, %ecx
  5048. rorxl $22, %r15d, %edx
  5049. addl %ebx, %r14d
  5050. vpshufd $0xfa, %xmm3, %xmm6
  5051. # rnd_1: 5 - 5
  5052. xorl %ecx, %edx
  5053. movl %r8d, %ebx
  5054. addl %r14d, %r10d
  5055. vpxor %xmm8, %xmm7, %xmm5
  5056. # rnd_1: 6 - 6
  5057. xorl %r15d, %ebx
  5058. addl %edx, %r14d
  5059. andl %ebx, %eax
  5060. vpsrld $10, %xmm6, %xmm8
  5061. # rnd_1: 7 - 7
  5062. xorl %r8d, %eax
  5063. rorxl $6, %r10d, %edx
  5064. addl %eax, %r14d
  5065. # rnd_0: 0 - 0
  5066. movl %r11d, %eax
  5067. rorxl $11, %r10d, %ecx
  5068. addl 8(%rsp), %r13d
  5069. vpsrlq $19, %xmm6, %xmm7
  5070. # rnd_0: 1 - 1
  5071. xorl %edx, %ecx
  5072. xorl %r12d, %eax
  5073. rorxl $25, %r10d, %edx
  5074. vpsrlq $0x11, %xmm6, %xmm6
  5075. vpaddd %xmm0, %xmm4, %xmm4
  5076. # rnd_0: 2 - 2
  5077. andl %r10d, %eax
  5078. xorl %ecx, %edx
  5079. rorxl $13, %r14d, %ecx
  5080. vpaddd %xmm5, %xmm4, %xmm4
  5081. # rnd_0: 3 - 3
  5082. addl %edx, %r13d
  5083. rorxl $2, %r14d, %edx
  5084. xorl %r12d, %eax
  5085. vpxor %xmm7, %xmm6, %xmm6
  5086. # rnd_0: 4 - 4
  5087. xorl %edx, %ecx
  5088. rorxl $22, %r14d, %edx
  5089. addl %eax, %r13d
  5090. vpxor %xmm6, %xmm8, %xmm8
  5091. # rnd_0: 5 - 5
  5092. xorl %ecx, %edx
  5093. movl %r15d, %eax
  5094. addl %r13d, %r9d
  5095. vpshufb %xmm11, %xmm8, %xmm8
  5096. # rnd_0: 6 - 6
  5097. xorl %r14d, %eax
  5098. addl %edx, %r13d
  5099. andl %eax, %ebx
  5100. vpaddd %xmm8, %xmm4, %xmm4
  5101. # rnd_0: 7 - 7
  5102. xorl %r15d, %ebx
  5103. rorxl $6, %r9d, %edx
  5104. addl %ebx, %r13d
  5105. # rnd_1: 0 - 0
  5106. movl %r10d, %ebx
  5107. rorxl $11, %r9d, %ecx
  5108. addl 12(%rsp), %r12d
  5109. vpshufd $0x50, %xmm4, %xmm6
  5110. # rnd_1: 1 - 1
  5111. xorl %edx, %ecx
  5112. xorl %r11d, %ebx
  5113. rorxl $25, %r9d, %edx
  5114. vpsrld $10, %xmm6, %xmm9
  5115. # rnd_1: 2 - 2
  5116. andl %r9d, %ebx
  5117. xorl %ecx, %edx
  5118. rorxl $13, %r13d, %ecx
  5119. vpsrlq $19, %xmm6, %xmm7
  5120. # rnd_1: 3 - 3
  5121. addl %edx, %r12d
  5122. rorxl $2, %r13d, %edx
  5123. xorl %r11d, %ebx
  5124. vpsrlq $0x11, %xmm6, %xmm6
  5125. # rnd_1: 4 - 4
  5126. xorl %edx, %ecx
  5127. rorxl $22, %r13d, %edx
  5128. addl %ebx, %r12d
  5129. vpxor %xmm7, %xmm6, %xmm6
  5130. # rnd_1: 5 - 5
  5131. xorl %ecx, %edx
  5132. movl %r14d, %ebx
  5133. addl %r12d, %r8d
  5134. vpxor %xmm6, %xmm9, %xmm9
  5135. # rnd_1: 6 - 6
  5136. xorl %r13d, %ebx
  5137. addl %edx, %r12d
  5138. andl %ebx, %eax
  5139. vpshufb %xmm12, %xmm9, %xmm9
  5140. # rnd_1: 7 - 7
  5141. xorl %r14d, %eax
  5142. rorxl $6, %r8d, %edx
  5143. addl %eax, %r12d
  5144. vpaddd %xmm4, %xmm9, %xmm0
  5145. # msg_sched done: 0-3
  5146. # msg_sched: 4-7
  5147. # rnd_0: 0 - 0
  5148. movl %r9d, %eax
  5149. rorxl $11, %r8d, %ecx
  5150. addl 16(%rsp), %r11d
  5151. vpalignr $4, %xmm3, %xmm0, %xmm4
  5152. vpalignr $4, %xmm1, %xmm2, %xmm5
  5153. # rnd_0: 1 - 2
  5154. xorl %edx, %ecx
  5155. xorl %r10d, %eax
  5156. rorxl $25, %r8d, %edx
  5157. andl %r8d, %eax
  5158. xorl %ecx, %edx
  5159. rorxl $13, %r12d, %ecx
  5160. vpsrld $7, %xmm5, %xmm6
  5161. vpslld $25, %xmm5, %xmm7
  5162. # rnd_0: 3 - 4
  5163. addl %edx, %r11d
  5164. rorxl $2, %r12d, %edx
  5165. xorl %r10d, %eax
  5166. xorl %edx, %ecx
  5167. rorxl $22, %r12d, %edx
  5168. addl %eax, %r11d
  5169. vpsrld $3, %xmm5, %xmm8
  5170. vpor %xmm6, %xmm7, %xmm7
  5171. # rnd_0: 5 - 7
  5172. xorl %ecx, %edx
  5173. movl %r13d, %eax
  5174. addl %r11d, %r15d
  5175. xorl %r12d, %eax
  5176. addl %edx, %r11d
  5177. andl %eax, %ebx
  5178. xorl %r13d, %ebx
  5179. rorxl $6, %r15d, %edx
  5180. addl %ebx, %r11d
  5181. # rnd_1: 0 - 0
  5182. movl %r8d, %ebx
  5183. rorxl $11, %r15d, %ecx
  5184. addl 20(%rsp), %r10d
  5185. vpsrld $18, %xmm5, %xmm6
  5186. # rnd_1: 1 - 1
  5187. xorl %edx, %ecx
  5188. xorl %r9d, %ebx
  5189. rorxl $25, %r15d, %edx
  5190. vpslld $14, %xmm5, %xmm5
  5191. # rnd_1: 2 - 2
  5192. andl %r15d, %ebx
  5193. xorl %ecx, %edx
  5194. rorxl $13, %r11d, %ecx
  5195. vpxor %xmm5, %xmm7, %xmm7
  5196. # rnd_1: 3 - 3
  5197. addl %edx, %r10d
  5198. rorxl $2, %r11d, %edx
  5199. xorl %r9d, %ebx
  5200. vpxor %xmm6, %xmm7, %xmm7
  5201. # rnd_1: 4 - 4
  5202. xorl %edx, %ecx
  5203. rorxl $22, %r11d, %edx
  5204. addl %ebx, %r10d
  5205. vpshufd $0xfa, %xmm0, %xmm6
  5206. # rnd_1: 5 - 5
  5207. xorl %ecx, %edx
  5208. movl %r12d, %ebx
  5209. addl %r10d, %r14d
  5210. vpxor %xmm8, %xmm7, %xmm5
  5211. # rnd_1: 6 - 6
  5212. xorl %r11d, %ebx
  5213. addl %edx, %r10d
  5214. andl %ebx, %eax
  5215. vpsrld $10, %xmm6, %xmm8
  5216. # rnd_1: 7 - 7
  5217. xorl %r12d, %eax
  5218. rorxl $6, %r14d, %edx
  5219. addl %eax, %r10d
  5220. # rnd_0: 0 - 0
  5221. movl %r15d, %eax
  5222. rorxl $11, %r14d, %ecx
  5223. addl 24(%rsp), %r9d
  5224. vpsrlq $19, %xmm6, %xmm7
  5225. # rnd_0: 1 - 1
  5226. xorl %edx, %ecx
  5227. xorl %r8d, %eax
  5228. rorxl $25, %r14d, %edx
  5229. vpsrlq $0x11, %xmm6, %xmm6
  5230. vpaddd %xmm1, %xmm4, %xmm4
  5231. # rnd_0: 2 - 2
  5232. andl %r14d, %eax
  5233. xorl %ecx, %edx
  5234. rorxl $13, %r10d, %ecx
  5235. vpaddd %xmm5, %xmm4, %xmm4
  5236. # rnd_0: 3 - 3
  5237. addl %edx, %r9d
  5238. rorxl $2, %r10d, %edx
  5239. xorl %r8d, %eax
  5240. vpxor %xmm7, %xmm6, %xmm6
  5241. # rnd_0: 4 - 4
  5242. xorl %edx, %ecx
  5243. rorxl $22, %r10d, %edx
  5244. addl %eax, %r9d
  5245. vpxor %xmm6, %xmm8, %xmm8
  5246. # rnd_0: 5 - 5
  5247. xorl %ecx, %edx
  5248. movl %r11d, %eax
  5249. addl %r9d, %r13d
  5250. vpshufb %xmm11, %xmm8, %xmm8
  5251. # rnd_0: 6 - 6
  5252. xorl %r10d, %eax
  5253. addl %edx, %r9d
  5254. andl %eax, %ebx
  5255. vpaddd %xmm8, %xmm4, %xmm4
  5256. # rnd_0: 7 - 7
  5257. xorl %r11d, %ebx
  5258. rorxl $6, %r13d, %edx
  5259. addl %ebx, %r9d
  5260. # rnd_1: 0 - 0
  5261. movl %r14d, %ebx
  5262. rorxl $11, %r13d, %ecx
  5263. addl 28(%rsp), %r8d
  5264. vpshufd $0x50, %xmm4, %xmm6
  5265. # rnd_1: 1 - 1
  5266. xorl %edx, %ecx
  5267. xorl %r15d, %ebx
  5268. rorxl $25, %r13d, %edx
  5269. vpsrld $10, %xmm6, %xmm9
  5270. # rnd_1: 2 - 2
  5271. andl %r13d, %ebx
  5272. xorl %ecx, %edx
  5273. rorxl $13, %r9d, %ecx
  5274. vpsrlq $19, %xmm6, %xmm7
  5275. # rnd_1: 3 - 3
  5276. addl %edx, %r8d
  5277. rorxl $2, %r9d, %edx
  5278. xorl %r15d, %ebx
  5279. vpsrlq $0x11, %xmm6, %xmm6
  5280. # rnd_1: 4 - 4
  5281. xorl %edx, %ecx
  5282. rorxl $22, %r9d, %edx
  5283. addl %ebx, %r8d
  5284. vpxor %xmm7, %xmm6, %xmm6
  5285. # rnd_1: 5 - 5
  5286. xorl %ecx, %edx
  5287. movl %r10d, %ebx
  5288. addl %r8d, %r12d
  5289. vpxor %xmm6, %xmm9, %xmm9
  5290. # rnd_1: 6 - 6
  5291. xorl %r9d, %ebx
  5292. addl %edx, %r8d
  5293. andl %ebx, %eax
  5294. vpshufb %xmm12, %xmm9, %xmm9
  5295. # rnd_1: 7 - 7
  5296. xorl %r10d, %eax
  5297. rorxl $6, %r12d, %edx
  5298. addl %eax, %r8d
  5299. vpaddd %xmm4, %xmm9, %xmm1
  5300. # msg_sched done: 4-7
  5301. # msg_sched: 8-11
  5302. # rnd_0: 0 - 0
  5303. movl %r13d, %eax
  5304. rorxl $11, %r12d, %ecx
  5305. addl 32(%rsp), %r15d
  5306. vpalignr $4, %xmm0, %xmm1, %xmm4
  5307. vpalignr $4, %xmm2, %xmm3, %xmm5
  5308. # rnd_0: 1 - 2
  5309. xorl %edx, %ecx
  5310. xorl %r14d, %eax
  5311. rorxl $25, %r12d, %edx
  5312. andl %r12d, %eax
  5313. xorl %ecx, %edx
  5314. rorxl $13, %r8d, %ecx
  5315. vpsrld $7, %xmm5, %xmm6
  5316. vpslld $25, %xmm5, %xmm7
  5317. # rnd_0: 3 - 4
  5318. addl %edx, %r15d
  5319. rorxl $2, %r8d, %edx
  5320. xorl %r14d, %eax
  5321. xorl %edx, %ecx
  5322. rorxl $22, %r8d, %edx
  5323. addl %eax, %r15d
  5324. vpsrld $3, %xmm5, %xmm8
  5325. vpor %xmm6, %xmm7, %xmm7
  5326. # rnd_0: 5 - 7
  5327. xorl %ecx, %edx
  5328. movl %r9d, %eax
  5329. addl %r15d, %r11d
  5330. xorl %r8d, %eax
  5331. addl %edx, %r15d
  5332. andl %eax, %ebx
  5333. xorl %r9d, %ebx
  5334. rorxl $6, %r11d, %edx
  5335. addl %ebx, %r15d
  5336. # rnd_1: 0 - 0
  5337. movl %r12d, %ebx
  5338. rorxl $11, %r11d, %ecx
  5339. addl 36(%rsp), %r14d
  5340. vpsrld $18, %xmm5, %xmm6
  5341. # rnd_1: 1 - 1
  5342. xorl %edx, %ecx
  5343. xorl %r13d, %ebx
  5344. rorxl $25, %r11d, %edx
  5345. vpslld $14, %xmm5, %xmm5
  5346. # rnd_1: 2 - 2
  5347. andl %r11d, %ebx
  5348. xorl %ecx, %edx
  5349. rorxl $13, %r15d, %ecx
  5350. vpxor %xmm5, %xmm7, %xmm7
  5351. # rnd_1: 3 - 3
  5352. addl %edx, %r14d
  5353. rorxl $2, %r15d, %edx
  5354. xorl %r13d, %ebx
  5355. vpxor %xmm6, %xmm7, %xmm7
  5356. # rnd_1: 4 - 4
  5357. xorl %edx, %ecx
  5358. rorxl $22, %r15d, %edx
  5359. addl %ebx, %r14d
  5360. vpshufd $0xfa, %xmm1, %xmm6
  5361. # rnd_1: 5 - 5
  5362. xorl %ecx, %edx
  5363. movl %r8d, %ebx
  5364. addl %r14d, %r10d
  5365. vpxor %xmm8, %xmm7, %xmm5
  5366. # rnd_1: 6 - 6
  5367. xorl %r15d, %ebx
  5368. addl %edx, %r14d
  5369. andl %ebx, %eax
  5370. vpsrld $10, %xmm6, %xmm8
  5371. # rnd_1: 7 - 7
  5372. xorl %r8d, %eax
  5373. rorxl $6, %r10d, %edx
  5374. addl %eax, %r14d
  5375. # rnd_0: 0 - 0
  5376. movl %r11d, %eax
  5377. rorxl $11, %r10d, %ecx
  5378. addl 40(%rsp), %r13d
  5379. vpsrlq $19, %xmm6, %xmm7
  5380. # rnd_0: 1 - 1
  5381. xorl %edx, %ecx
  5382. xorl %r12d, %eax
  5383. rorxl $25, %r10d, %edx
  5384. vpsrlq $0x11, %xmm6, %xmm6
  5385. vpaddd %xmm2, %xmm4, %xmm4
  5386. # rnd_0: 2 - 2
  5387. andl %r10d, %eax
  5388. xorl %ecx, %edx
  5389. rorxl $13, %r14d, %ecx
  5390. vpaddd %xmm5, %xmm4, %xmm4
  5391. # rnd_0: 3 - 3
  5392. addl %edx, %r13d
  5393. rorxl $2, %r14d, %edx
  5394. xorl %r12d, %eax
  5395. vpxor %xmm7, %xmm6, %xmm6
  5396. # rnd_0: 4 - 4
  5397. xorl %edx, %ecx
  5398. rorxl $22, %r14d, %edx
  5399. addl %eax, %r13d
  5400. vpxor %xmm6, %xmm8, %xmm8
  5401. # rnd_0: 5 - 5
  5402. xorl %ecx, %edx
  5403. movl %r15d, %eax
  5404. addl %r13d, %r9d
  5405. vpshufb %xmm11, %xmm8, %xmm8
  5406. # rnd_0: 6 - 6
  5407. xorl %r14d, %eax
  5408. addl %edx, %r13d
  5409. andl %eax, %ebx
  5410. vpaddd %xmm8, %xmm4, %xmm4
  5411. # rnd_0: 7 - 7
  5412. xorl %r15d, %ebx
  5413. rorxl $6, %r9d, %edx
  5414. addl %ebx, %r13d
  5415. # rnd_1: 0 - 0
  5416. movl %r10d, %ebx
  5417. rorxl $11, %r9d, %ecx
  5418. addl 44(%rsp), %r12d
  5419. vpshufd $0x50, %xmm4, %xmm6
  5420. # rnd_1: 1 - 1
  5421. xorl %edx, %ecx
  5422. xorl %r11d, %ebx
  5423. rorxl $25, %r9d, %edx
  5424. vpsrld $10, %xmm6, %xmm9
  5425. # rnd_1: 2 - 2
  5426. andl %r9d, %ebx
  5427. xorl %ecx, %edx
  5428. rorxl $13, %r13d, %ecx
  5429. vpsrlq $19, %xmm6, %xmm7
  5430. # rnd_1: 3 - 3
  5431. addl %edx, %r12d
  5432. rorxl $2, %r13d, %edx
  5433. xorl %r11d, %ebx
  5434. vpsrlq $0x11, %xmm6, %xmm6
  5435. # rnd_1: 4 - 4
  5436. xorl %edx, %ecx
  5437. rorxl $22, %r13d, %edx
  5438. addl %ebx, %r12d
  5439. vpxor %xmm7, %xmm6, %xmm6
  5440. # rnd_1: 5 - 5
  5441. xorl %ecx, %edx
  5442. movl %r14d, %ebx
  5443. addl %r12d, %r8d
  5444. vpxor %xmm6, %xmm9, %xmm9
  5445. # rnd_1: 6 - 6
  5446. xorl %r13d, %ebx
  5447. addl %edx, %r12d
  5448. andl %ebx, %eax
  5449. vpshufb %xmm12, %xmm9, %xmm9
  5450. # rnd_1: 7 - 7
  5451. xorl %r14d, %eax
  5452. rorxl $6, %r8d, %edx
  5453. addl %eax, %r12d
  5454. vpaddd %xmm4, %xmm9, %xmm2
  5455. # msg_sched done: 8-11
  5456. # msg_sched: 12-15
  5457. # rnd_0: 0 - 0
  5458. movl %r9d, %eax
  5459. rorxl $11, %r8d, %ecx
  5460. addl 48(%rsp), %r11d
  5461. vpalignr $4, %xmm1, %xmm2, %xmm4
  5462. vpalignr $4, %xmm3, %xmm0, %xmm5
  5463. # rnd_0: 1 - 2
  5464. xorl %edx, %ecx
  5465. xorl %r10d, %eax
  5466. rorxl $25, %r8d, %edx
  5467. andl %r8d, %eax
  5468. xorl %ecx, %edx
  5469. rorxl $13, %r12d, %ecx
  5470. vpsrld $7, %xmm5, %xmm6
  5471. vpslld $25, %xmm5, %xmm7
  5472. # rnd_0: 3 - 4
  5473. addl %edx, %r11d
  5474. rorxl $2, %r12d, %edx
  5475. xorl %r10d, %eax
  5476. xorl %edx, %ecx
  5477. rorxl $22, %r12d, %edx
  5478. addl %eax, %r11d
  5479. vpsrld $3, %xmm5, %xmm8
  5480. vpor %xmm6, %xmm7, %xmm7
  5481. # rnd_0: 5 - 7
  5482. xorl %ecx, %edx
  5483. movl %r13d, %eax
  5484. addl %r11d, %r15d
  5485. xorl %r12d, %eax
  5486. addl %edx, %r11d
  5487. andl %eax, %ebx
  5488. xorl %r13d, %ebx
  5489. rorxl $6, %r15d, %edx
  5490. addl %ebx, %r11d
  5491. # rnd_1: 0 - 0
  5492. movl %r8d, %ebx
  5493. rorxl $11, %r15d, %ecx
  5494. addl 52(%rsp), %r10d
  5495. vpsrld $18, %xmm5, %xmm6
  5496. # rnd_1: 1 - 1
  5497. xorl %edx, %ecx
  5498. xorl %r9d, %ebx
  5499. rorxl $25, %r15d, %edx
  5500. vpslld $14, %xmm5, %xmm5
  5501. # rnd_1: 2 - 2
  5502. andl %r15d, %ebx
  5503. xorl %ecx, %edx
  5504. rorxl $13, %r11d, %ecx
  5505. vpxor %xmm5, %xmm7, %xmm7
  5506. # rnd_1: 3 - 3
  5507. addl %edx, %r10d
  5508. rorxl $2, %r11d, %edx
  5509. xorl %r9d, %ebx
  5510. vpxor %xmm6, %xmm7, %xmm7
  5511. # rnd_1: 4 - 4
  5512. xorl %edx, %ecx
  5513. rorxl $22, %r11d, %edx
  5514. addl %ebx, %r10d
  5515. vpshufd $0xfa, %xmm2, %xmm6
  5516. # rnd_1: 5 - 5
  5517. xorl %ecx, %edx
  5518. movl %r12d, %ebx
  5519. addl %r10d, %r14d
  5520. vpxor %xmm8, %xmm7, %xmm5
  5521. # rnd_1: 6 - 6
  5522. xorl %r11d, %ebx
  5523. addl %edx, %r10d
  5524. andl %ebx, %eax
  5525. vpsrld $10, %xmm6, %xmm8
  5526. # rnd_1: 7 - 7
  5527. xorl %r12d, %eax
  5528. rorxl $6, %r14d, %edx
  5529. addl %eax, %r10d
  5530. # rnd_0: 0 - 0
  5531. movl %r15d, %eax
  5532. rorxl $11, %r14d, %ecx
  5533. addl 56(%rsp), %r9d
  5534. vpsrlq $19, %xmm6, %xmm7
  5535. # rnd_0: 1 - 1
  5536. xorl %edx, %ecx
  5537. xorl %r8d, %eax
  5538. rorxl $25, %r14d, %edx
  5539. vpsrlq $0x11, %xmm6, %xmm6
  5540. vpaddd %xmm3, %xmm4, %xmm4
  5541. # rnd_0: 2 - 2
  5542. andl %r14d, %eax
  5543. xorl %ecx, %edx
  5544. rorxl $13, %r10d, %ecx
  5545. vpaddd %xmm5, %xmm4, %xmm4
  5546. # rnd_0: 3 - 3
  5547. addl %edx, %r9d
  5548. rorxl $2, %r10d, %edx
  5549. xorl %r8d, %eax
  5550. vpxor %xmm7, %xmm6, %xmm6
  5551. # rnd_0: 4 - 4
  5552. xorl %edx, %ecx
  5553. rorxl $22, %r10d, %edx
  5554. addl %eax, %r9d
  5555. vpxor %xmm6, %xmm8, %xmm8
  5556. # rnd_0: 5 - 5
  5557. xorl %ecx, %edx
  5558. movl %r11d, %eax
  5559. addl %r9d, %r13d
  5560. vpshufb %xmm11, %xmm8, %xmm8
  5561. # rnd_0: 6 - 6
  5562. xorl %r10d, %eax
  5563. addl %edx, %r9d
  5564. andl %eax, %ebx
  5565. vpaddd %xmm8, %xmm4, %xmm4
  5566. # rnd_0: 7 - 7
  5567. xorl %r11d, %ebx
  5568. rorxl $6, %r13d, %edx
  5569. addl %ebx, %r9d
  5570. # rnd_1: 0 - 0
  5571. movl %r14d, %ebx
  5572. rorxl $11, %r13d, %ecx
  5573. addl 60(%rsp), %r8d
  5574. vpshufd $0x50, %xmm4, %xmm6
  5575. # rnd_1: 1 - 1
  5576. xorl %edx, %ecx
  5577. xorl %r15d, %ebx
  5578. rorxl $25, %r13d, %edx
  5579. vpsrld $10, %xmm6, %xmm9
  5580. # rnd_1: 2 - 2
  5581. andl %r13d, %ebx
  5582. xorl %ecx, %edx
  5583. rorxl $13, %r9d, %ecx
  5584. vpsrlq $19, %xmm6, %xmm7
  5585. # rnd_1: 3 - 3
  5586. addl %edx, %r8d
  5587. rorxl $2, %r9d, %edx
  5588. xorl %r15d, %ebx
  5589. vpsrlq $0x11, %xmm6, %xmm6
  5590. # rnd_1: 4 - 4
  5591. xorl %edx, %ecx
  5592. rorxl $22, %r9d, %edx
  5593. addl %ebx, %r8d
  5594. vpxor %xmm7, %xmm6, %xmm6
  5595. # rnd_1: 5 - 5
  5596. xorl %ecx, %edx
  5597. movl %r10d, %ebx
  5598. addl %r8d, %r12d
  5599. vpxor %xmm6, %xmm9, %xmm9
  5600. # rnd_1: 6 - 6
  5601. xorl %r9d, %ebx
  5602. addl %edx, %r8d
  5603. andl %ebx, %eax
  5604. vpshufb %xmm12, %xmm9, %xmm9
  5605. # rnd_1: 7 - 7
  5606. xorl %r10d, %eax
  5607. rorxl $6, %r12d, %edx
  5608. addl %eax, %r8d
  5609. vpaddd %xmm4, %xmm9, %xmm3
  5610. # msg_sched done: 12-15
  5611. # set_w_k_xfer_4: 4
  5612. vpaddd 64+L_avx1_rorx_sha256_k(%rip), %xmm0, %xmm4
  5613. vpaddd 80+L_avx1_rorx_sha256_k(%rip), %xmm1, %xmm5
  5614. vmovdqu %xmm4, (%rsp)
  5615. vmovdqu %xmm5, 16(%rsp)
  5616. vpaddd 96+L_avx1_rorx_sha256_k(%rip), %xmm2, %xmm6
  5617. vpaddd 112+L_avx1_rorx_sha256_k(%rip), %xmm3, %xmm7
  5618. vmovdqu %xmm6, 32(%rsp)
  5619. vmovdqu %xmm7, 48(%rsp)
  5620. # msg_sched: 0-3
  5621. # rnd_0: 0 - 0
  5622. movl %r13d, %eax
  5623. rorxl $11, %r12d, %ecx
  5624. addl (%rsp), %r15d
  5625. vpalignr $4, %xmm2, %xmm3, %xmm4
  5626. vpalignr $4, %xmm0, %xmm1, %xmm5
  5627. # rnd_0: 1 - 2
  5628. xorl %edx, %ecx
  5629. xorl %r14d, %eax
  5630. rorxl $25, %r12d, %edx
  5631. andl %r12d, %eax
  5632. xorl %ecx, %edx
  5633. rorxl $13, %r8d, %ecx
  5634. vpsrld $7, %xmm5, %xmm6
  5635. vpslld $25, %xmm5, %xmm7
  5636. # rnd_0: 3 - 4
  5637. addl %edx, %r15d
  5638. rorxl $2, %r8d, %edx
  5639. xorl %r14d, %eax
  5640. xorl %edx, %ecx
  5641. rorxl $22, %r8d, %edx
  5642. addl %eax, %r15d
  5643. vpsrld $3, %xmm5, %xmm8
  5644. vpor %xmm6, %xmm7, %xmm7
  5645. # rnd_0: 5 - 7
  5646. xorl %ecx, %edx
  5647. movl %r9d, %eax
  5648. addl %r15d, %r11d
  5649. xorl %r8d, %eax
  5650. addl %edx, %r15d
  5651. andl %eax, %ebx
  5652. xorl %r9d, %ebx
  5653. rorxl $6, %r11d, %edx
  5654. addl %ebx, %r15d
  5655. # rnd_1: 0 - 0
  5656. movl %r12d, %ebx
  5657. rorxl $11, %r11d, %ecx
  5658. addl 4(%rsp), %r14d
  5659. vpsrld $18, %xmm5, %xmm6
  5660. # rnd_1: 1 - 1
  5661. xorl %edx, %ecx
  5662. xorl %r13d, %ebx
  5663. rorxl $25, %r11d, %edx
  5664. vpslld $14, %xmm5, %xmm5
  5665. # rnd_1: 2 - 2
  5666. andl %r11d, %ebx
  5667. xorl %ecx, %edx
  5668. rorxl $13, %r15d, %ecx
  5669. vpxor %xmm5, %xmm7, %xmm7
  5670. # rnd_1: 3 - 3
  5671. addl %edx, %r14d
  5672. rorxl $2, %r15d, %edx
  5673. xorl %r13d, %ebx
  5674. vpxor %xmm6, %xmm7, %xmm7
  5675. # rnd_1: 4 - 4
  5676. xorl %edx, %ecx
  5677. rorxl $22, %r15d, %edx
  5678. addl %ebx, %r14d
  5679. vpshufd $0xfa, %xmm3, %xmm6
  5680. # rnd_1: 5 - 5
  5681. xorl %ecx, %edx
  5682. movl %r8d, %ebx
  5683. addl %r14d, %r10d
  5684. vpxor %xmm8, %xmm7, %xmm5
  5685. # rnd_1: 6 - 6
  5686. xorl %r15d, %ebx
  5687. addl %edx, %r14d
  5688. andl %ebx, %eax
  5689. vpsrld $10, %xmm6, %xmm8
  5690. # rnd_1: 7 - 7
  5691. xorl %r8d, %eax
  5692. rorxl $6, %r10d, %edx
  5693. addl %eax, %r14d
  5694. # rnd_0: 0 - 0
  5695. movl %r11d, %eax
  5696. rorxl $11, %r10d, %ecx
  5697. addl 8(%rsp), %r13d
  5698. vpsrlq $19, %xmm6, %xmm7
  5699. # rnd_0: 1 - 1
  5700. xorl %edx, %ecx
  5701. xorl %r12d, %eax
  5702. rorxl $25, %r10d, %edx
  5703. vpsrlq $0x11, %xmm6, %xmm6
  5704. vpaddd %xmm0, %xmm4, %xmm4
  5705. # rnd_0: 2 - 2
  5706. andl %r10d, %eax
  5707. xorl %ecx, %edx
  5708. rorxl $13, %r14d, %ecx
  5709. vpaddd %xmm5, %xmm4, %xmm4
  5710. # rnd_0: 3 - 3
  5711. addl %edx, %r13d
  5712. rorxl $2, %r14d, %edx
  5713. xorl %r12d, %eax
  5714. vpxor %xmm7, %xmm6, %xmm6
  5715. # rnd_0: 4 - 4
  5716. xorl %edx, %ecx
  5717. rorxl $22, %r14d, %edx
  5718. addl %eax, %r13d
  5719. vpxor %xmm6, %xmm8, %xmm8
  5720. # rnd_0: 5 - 5
  5721. xorl %ecx, %edx
  5722. movl %r15d, %eax
  5723. addl %r13d, %r9d
  5724. vpshufb %xmm11, %xmm8, %xmm8
  5725. # rnd_0: 6 - 6
  5726. xorl %r14d, %eax
  5727. addl %edx, %r13d
  5728. andl %eax, %ebx
  5729. vpaddd %xmm8, %xmm4, %xmm4
  5730. # rnd_0: 7 - 7
  5731. xorl %r15d, %ebx
  5732. rorxl $6, %r9d, %edx
  5733. addl %ebx, %r13d
  5734. # rnd_1: 0 - 0
  5735. movl %r10d, %ebx
  5736. rorxl $11, %r9d, %ecx
  5737. addl 12(%rsp), %r12d
  5738. vpshufd $0x50, %xmm4, %xmm6
  5739. # rnd_1: 1 - 1
  5740. xorl %edx, %ecx
  5741. xorl %r11d, %ebx
  5742. rorxl $25, %r9d, %edx
  5743. vpsrld $10, %xmm6, %xmm9
  5744. # rnd_1: 2 - 2
  5745. andl %r9d, %ebx
  5746. xorl %ecx, %edx
  5747. rorxl $13, %r13d, %ecx
  5748. vpsrlq $19, %xmm6, %xmm7
  5749. # rnd_1: 3 - 3
  5750. addl %edx, %r12d
  5751. rorxl $2, %r13d, %edx
  5752. xorl %r11d, %ebx
  5753. vpsrlq $0x11, %xmm6, %xmm6
  5754. # rnd_1: 4 - 4
  5755. xorl %edx, %ecx
  5756. rorxl $22, %r13d, %edx
  5757. addl %ebx, %r12d
  5758. vpxor %xmm7, %xmm6, %xmm6
  5759. # rnd_1: 5 - 5
  5760. xorl %ecx, %edx
  5761. movl %r14d, %ebx
  5762. addl %r12d, %r8d
  5763. vpxor %xmm6, %xmm9, %xmm9
  5764. # rnd_1: 6 - 6
  5765. xorl %r13d, %ebx
  5766. addl %edx, %r12d
  5767. andl %ebx, %eax
  5768. vpshufb %xmm12, %xmm9, %xmm9
  5769. # rnd_1: 7 - 7
  5770. xorl %r14d, %eax
  5771. rorxl $6, %r8d, %edx
  5772. addl %eax, %r12d
  5773. vpaddd %xmm4, %xmm9, %xmm0
  5774. # msg_sched done: 0-3
  5775. # msg_sched: 4-7
  5776. # rnd_0: 0 - 0
  5777. movl %r9d, %eax
  5778. rorxl $11, %r8d, %ecx
  5779. addl 16(%rsp), %r11d
  5780. vpalignr $4, %xmm3, %xmm0, %xmm4
  5781. vpalignr $4, %xmm1, %xmm2, %xmm5
  5782. # rnd_0: 1 - 2
  5783. xorl %edx, %ecx
  5784. xorl %r10d, %eax
  5785. rorxl $25, %r8d, %edx
  5786. andl %r8d, %eax
  5787. xorl %ecx, %edx
  5788. rorxl $13, %r12d, %ecx
  5789. vpsrld $7, %xmm5, %xmm6
  5790. vpslld $25, %xmm5, %xmm7
  5791. # rnd_0: 3 - 4
  5792. addl %edx, %r11d
  5793. rorxl $2, %r12d, %edx
  5794. xorl %r10d, %eax
  5795. xorl %edx, %ecx
  5796. rorxl $22, %r12d, %edx
  5797. addl %eax, %r11d
  5798. vpsrld $3, %xmm5, %xmm8
  5799. vpor %xmm6, %xmm7, %xmm7
  5800. # rnd_0: 5 - 7
  5801. xorl %ecx, %edx
  5802. movl %r13d, %eax
  5803. addl %r11d, %r15d
  5804. xorl %r12d, %eax
  5805. addl %edx, %r11d
  5806. andl %eax, %ebx
  5807. xorl %r13d, %ebx
  5808. rorxl $6, %r15d, %edx
  5809. addl %ebx, %r11d
  5810. # rnd_1: 0 - 0
  5811. movl %r8d, %ebx
  5812. rorxl $11, %r15d, %ecx
  5813. addl 20(%rsp), %r10d
  5814. vpsrld $18, %xmm5, %xmm6
  5815. # rnd_1: 1 - 1
  5816. xorl %edx, %ecx
  5817. xorl %r9d, %ebx
  5818. rorxl $25, %r15d, %edx
  5819. vpslld $14, %xmm5, %xmm5
  5820. # rnd_1: 2 - 2
  5821. andl %r15d, %ebx
  5822. xorl %ecx, %edx
  5823. rorxl $13, %r11d, %ecx
  5824. vpxor %xmm5, %xmm7, %xmm7
  5825. # rnd_1: 3 - 3
  5826. addl %edx, %r10d
  5827. rorxl $2, %r11d, %edx
  5828. xorl %r9d, %ebx
  5829. vpxor %xmm6, %xmm7, %xmm7
  5830. # rnd_1: 4 - 4
  5831. xorl %edx, %ecx
  5832. rorxl $22, %r11d, %edx
  5833. addl %ebx, %r10d
  5834. vpshufd $0xfa, %xmm0, %xmm6
  5835. # rnd_1: 5 - 5
  5836. xorl %ecx, %edx
  5837. movl %r12d, %ebx
  5838. addl %r10d, %r14d
  5839. vpxor %xmm8, %xmm7, %xmm5
  5840. # rnd_1: 6 - 6
  5841. xorl %r11d, %ebx
  5842. addl %edx, %r10d
  5843. andl %ebx, %eax
  5844. vpsrld $10, %xmm6, %xmm8
  5845. # rnd_1: 7 - 7
  5846. xorl %r12d, %eax
  5847. rorxl $6, %r14d, %edx
  5848. addl %eax, %r10d
  5849. # rnd_0: 0 - 0
  5850. movl %r15d, %eax
  5851. rorxl $11, %r14d, %ecx
  5852. addl 24(%rsp), %r9d
  5853. vpsrlq $19, %xmm6, %xmm7
  5854. # rnd_0: 1 - 1
  5855. xorl %edx, %ecx
  5856. xorl %r8d, %eax
  5857. rorxl $25, %r14d, %edx
  5858. vpsrlq $0x11, %xmm6, %xmm6
  5859. vpaddd %xmm1, %xmm4, %xmm4
  5860. # rnd_0: 2 - 2
  5861. andl %r14d, %eax
  5862. xorl %ecx, %edx
  5863. rorxl $13, %r10d, %ecx
  5864. vpaddd %xmm5, %xmm4, %xmm4
  5865. # rnd_0: 3 - 3
  5866. addl %edx, %r9d
  5867. rorxl $2, %r10d, %edx
  5868. xorl %r8d, %eax
  5869. vpxor %xmm7, %xmm6, %xmm6
  5870. # rnd_0: 4 - 4
  5871. xorl %edx, %ecx
  5872. rorxl $22, %r10d, %edx
  5873. addl %eax, %r9d
  5874. vpxor %xmm6, %xmm8, %xmm8
  5875. # rnd_0: 5 - 5
  5876. xorl %ecx, %edx
  5877. movl %r11d, %eax
  5878. addl %r9d, %r13d
  5879. vpshufb %xmm11, %xmm8, %xmm8
  5880. # rnd_0: 6 - 6
  5881. xorl %r10d, %eax
  5882. addl %edx, %r9d
  5883. andl %eax, %ebx
  5884. vpaddd %xmm8, %xmm4, %xmm4
  5885. # rnd_0: 7 - 7
  5886. xorl %r11d, %ebx
  5887. rorxl $6, %r13d, %edx
  5888. addl %ebx, %r9d
  5889. # rnd_1: 0 - 0
  5890. movl %r14d, %ebx
  5891. rorxl $11, %r13d, %ecx
  5892. addl 28(%rsp), %r8d
  5893. vpshufd $0x50, %xmm4, %xmm6
  5894. # rnd_1: 1 - 1
  5895. xorl %edx, %ecx
  5896. xorl %r15d, %ebx
  5897. rorxl $25, %r13d, %edx
  5898. vpsrld $10, %xmm6, %xmm9
  5899. # rnd_1: 2 - 2
  5900. andl %r13d, %ebx
  5901. xorl %ecx, %edx
  5902. rorxl $13, %r9d, %ecx
  5903. vpsrlq $19, %xmm6, %xmm7
  5904. # rnd_1: 3 - 3
  5905. addl %edx, %r8d
  5906. rorxl $2, %r9d, %edx
  5907. xorl %r15d, %ebx
  5908. vpsrlq $0x11, %xmm6, %xmm6
  5909. # rnd_1: 4 - 4
  5910. xorl %edx, %ecx
  5911. rorxl $22, %r9d, %edx
  5912. addl %ebx, %r8d
  5913. vpxor %xmm7, %xmm6, %xmm6
  5914. # rnd_1: 5 - 5
  5915. xorl %ecx, %edx
  5916. movl %r10d, %ebx
  5917. addl %r8d, %r12d
  5918. vpxor %xmm6, %xmm9, %xmm9
  5919. # rnd_1: 6 - 6
  5920. xorl %r9d, %ebx
  5921. addl %edx, %r8d
  5922. andl %ebx, %eax
  5923. vpshufb %xmm12, %xmm9, %xmm9
  5924. # rnd_1: 7 - 7
  5925. xorl %r10d, %eax
  5926. rorxl $6, %r12d, %edx
  5927. addl %eax, %r8d
  5928. vpaddd %xmm4, %xmm9, %xmm1
  5929. # msg_sched done: 4-7
  5930. # msg_sched: 8-11
  5931. # rnd_0: 0 - 0
  5932. movl %r13d, %eax
  5933. rorxl $11, %r12d, %ecx
  5934. addl 32(%rsp), %r15d
  5935. vpalignr $4, %xmm0, %xmm1, %xmm4
  5936. vpalignr $4, %xmm2, %xmm3, %xmm5
  5937. # rnd_0: 1 - 2
  5938. xorl %edx, %ecx
  5939. xorl %r14d, %eax
  5940. rorxl $25, %r12d, %edx
  5941. andl %r12d, %eax
  5942. xorl %ecx, %edx
  5943. rorxl $13, %r8d, %ecx
  5944. vpsrld $7, %xmm5, %xmm6
  5945. vpslld $25, %xmm5, %xmm7
  5946. # rnd_0: 3 - 4
  5947. addl %edx, %r15d
  5948. rorxl $2, %r8d, %edx
  5949. xorl %r14d, %eax
  5950. xorl %edx, %ecx
  5951. rorxl $22, %r8d, %edx
  5952. addl %eax, %r15d
  5953. vpsrld $3, %xmm5, %xmm8
  5954. vpor %xmm6, %xmm7, %xmm7
  5955. # rnd_0: 5 - 7
  5956. xorl %ecx, %edx
  5957. movl %r9d, %eax
  5958. addl %r15d, %r11d
  5959. xorl %r8d, %eax
  5960. addl %edx, %r15d
  5961. andl %eax, %ebx
  5962. xorl %r9d, %ebx
  5963. rorxl $6, %r11d, %edx
  5964. addl %ebx, %r15d
  5965. # rnd_1: 0 - 0
  5966. movl %r12d, %ebx
  5967. rorxl $11, %r11d, %ecx
  5968. addl 36(%rsp), %r14d
  5969. vpsrld $18, %xmm5, %xmm6
  5970. # rnd_1: 1 - 1
  5971. xorl %edx, %ecx
  5972. xorl %r13d, %ebx
  5973. rorxl $25, %r11d, %edx
  5974. vpslld $14, %xmm5, %xmm5
  5975. # rnd_1: 2 - 2
  5976. andl %r11d, %ebx
  5977. xorl %ecx, %edx
  5978. rorxl $13, %r15d, %ecx
  5979. vpxor %xmm5, %xmm7, %xmm7
  5980. # rnd_1: 3 - 3
  5981. addl %edx, %r14d
  5982. rorxl $2, %r15d, %edx
  5983. xorl %r13d, %ebx
  5984. vpxor %xmm6, %xmm7, %xmm7
  5985. # rnd_1: 4 - 4
  5986. xorl %edx, %ecx
  5987. rorxl $22, %r15d, %edx
  5988. addl %ebx, %r14d
  5989. vpshufd $0xfa, %xmm1, %xmm6
  5990. # rnd_1: 5 - 5
  5991. xorl %ecx, %edx
  5992. movl %r8d, %ebx
  5993. addl %r14d, %r10d
  5994. vpxor %xmm8, %xmm7, %xmm5
  5995. # rnd_1: 6 - 6
  5996. xorl %r15d, %ebx
  5997. addl %edx, %r14d
  5998. andl %ebx, %eax
  5999. vpsrld $10, %xmm6, %xmm8
  6000. # rnd_1: 7 - 7
  6001. xorl %r8d, %eax
  6002. rorxl $6, %r10d, %edx
  6003. addl %eax, %r14d
  6004. # rnd_0: 0 - 0
  6005. movl %r11d, %eax
  6006. rorxl $11, %r10d, %ecx
  6007. addl 40(%rsp), %r13d
  6008. vpsrlq $19, %xmm6, %xmm7
  6009. # rnd_0: 1 - 1
  6010. xorl %edx, %ecx
  6011. xorl %r12d, %eax
  6012. rorxl $25, %r10d, %edx
  6013. vpsrlq $0x11, %xmm6, %xmm6
  6014. vpaddd %xmm2, %xmm4, %xmm4
  6015. # rnd_0: 2 - 2
  6016. andl %r10d, %eax
  6017. xorl %ecx, %edx
  6018. rorxl $13, %r14d, %ecx
  6019. vpaddd %xmm5, %xmm4, %xmm4
  6020. # rnd_0: 3 - 3
  6021. addl %edx, %r13d
  6022. rorxl $2, %r14d, %edx
  6023. xorl %r12d, %eax
  6024. vpxor %xmm7, %xmm6, %xmm6
  6025. # rnd_0: 4 - 4
  6026. xorl %edx, %ecx
  6027. rorxl $22, %r14d, %edx
  6028. addl %eax, %r13d
  6029. vpxor %xmm6, %xmm8, %xmm8
  6030. # rnd_0: 5 - 5
  6031. xorl %ecx, %edx
  6032. movl %r15d, %eax
  6033. addl %r13d, %r9d
  6034. vpshufb %xmm11, %xmm8, %xmm8
  6035. # rnd_0: 6 - 6
  6036. xorl %r14d, %eax
  6037. addl %edx, %r13d
  6038. andl %eax, %ebx
  6039. vpaddd %xmm8, %xmm4, %xmm4
  6040. # rnd_0: 7 - 7
  6041. xorl %r15d, %ebx
  6042. rorxl $6, %r9d, %edx
  6043. addl %ebx, %r13d
  6044. # rnd_1: 0 - 0
  6045. movl %r10d, %ebx
  6046. rorxl $11, %r9d, %ecx
  6047. addl 44(%rsp), %r12d
  6048. vpshufd $0x50, %xmm4, %xmm6
  6049. # rnd_1: 1 - 1
  6050. xorl %edx, %ecx
  6051. xorl %r11d, %ebx
  6052. rorxl $25, %r9d, %edx
  6053. vpsrld $10, %xmm6, %xmm9
  6054. # rnd_1: 2 - 2
  6055. andl %r9d, %ebx
  6056. xorl %ecx, %edx
  6057. rorxl $13, %r13d, %ecx
  6058. vpsrlq $19, %xmm6, %xmm7
  6059. # rnd_1: 3 - 3
  6060. addl %edx, %r12d
  6061. rorxl $2, %r13d, %edx
  6062. xorl %r11d, %ebx
  6063. vpsrlq $0x11, %xmm6, %xmm6
  6064. # rnd_1: 4 - 4
  6065. xorl %edx, %ecx
  6066. rorxl $22, %r13d, %edx
  6067. addl %ebx, %r12d
  6068. vpxor %xmm7, %xmm6, %xmm6
  6069. # rnd_1: 5 - 5
  6070. xorl %ecx, %edx
  6071. movl %r14d, %ebx
  6072. addl %r12d, %r8d
  6073. vpxor %xmm6, %xmm9, %xmm9
  6074. # rnd_1: 6 - 6
  6075. xorl %r13d, %ebx
  6076. addl %edx, %r12d
  6077. andl %ebx, %eax
  6078. vpshufb %xmm12, %xmm9, %xmm9
  6079. # rnd_1: 7 - 7
  6080. xorl %r14d, %eax
  6081. rorxl $6, %r8d, %edx
  6082. addl %eax, %r12d
  6083. vpaddd %xmm4, %xmm9, %xmm2
  6084. # msg_sched done: 8-11
  6085. # msg_sched: 12-15
  6086. # rnd_0: 0 - 0
  6087. movl %r9d, %eax
  6088. rorxl $11, %r8d, %ecx
  6089. addl 48(%rsp), %r11d
  6090. vpalignr $4, %xmm1, %xmm2, %xmm4
  6091. vpalignr $4, %xmm3, %xmm0, %xmm5
  6092. # rnd_0: 1 - 2
  6093. xorl %edx, %ecx
  6094. xorl %r10d, %eax
  6095. rorxl $25, %r8d, %edx
  6096. andl %r8d, %eax
  6097. xorl %ecx, %edx
  6098. rorxl $13, %r12d, %ecx
  6099. vpsrld $7, %xmm5, %xmm6
  6100. vpslld $25, %xmm5, %xmm7
  6101. # rnd_0: 3 - 4
  6102. addl %edx, %r11d
  6103. rorxl $2, %r12d, %edx
  6104. xorl %r10d, %eax
  6105. xorl %edx, %ecx
  6106. rorxl $22, %r12d, %edx
  6107. addl %eax, %r11d
  6108. vpsrld $3, %xmm5, %xmm8
  6109. vpor %xmm6, %xmm7, %xmm7
  6110. # rnd_0: 5 - 7
  6111. xorl %ecx, %edx
  6112. movl %r13d, %eax
  6113. addl %r11d, %r15d
  6114. xorl %r12d, %eax
  6115. addl %edx, %r11d
  6116. andl %eax, %ebx
  6117. xorl %r13d, %ebx
  6118. rorxl $6, %r15d, %edx
  6119. addl %ebx, %r11d
  6120. # rnd_1: 0 - 0
  6121. movl %r8d, %ebx
  6122. rorxl $11, %r15d, %ecx
  6123. addl 52(%rsp), %r10d
  6124. vpsrld $18, %xmm5, %xmm6
  6125. # rnd_1: 1 - 1
  6126. xorl %edx, %ecx
  6127. xorl %r9d, %ebx
  6128. rorxl $25, %r15d, %edx
  6129. vpslld $14, %xmm5, %xmm5
  6130. # rnd_1: 2 - 2
  6131. andl %r15d, %ebx
  6132. xorl %ecx, %edx
  6133. rorxl $13, %r11d, %ecx
  6134. vpxor %xmm5, %xmm7, %xmm7
  6135. # rnd_1: 3 - 3
  6136. addl %edx, %r10d
  6137. rorxl $2, %r11d, %edx
  6138. xorl %r9d, %ebx
  6139. vpxor %xmm6, %xmm7, %xmm7
  6140. # rnd_1: 4 - 4
  6141. xorl %edx, %ecx
  6142. rorxl $22, %r11d, %edx
  6143. addl %ebx, %r10d
  6144. vpshufd $0xfa, %xmm2, %xmm6
  6145. # rnd_1: 5 - 5
  6146. xorl %ecx, %edx
  6147. movl %r12d, %ebx
  6148. addl %r10d, %r14d
  6149. vpxor %xmm8, %xmm7, %xmm5
  6150. # rnd_1: 6 - 6
  6151. xorl %r11d, %ebx
  6152. addl %edx, %r10d
  6153. andl %ebx, %eax
  6154. vpsrld $10, %xmm6, %xmm8
  6155. # rnd_1: 7 - 7
  6156. xorl %r12d, %eax
  6157. rorxl $6, %r14d, %edx
  6158. addl %eax, %r10d
  6159. # rnd_0: 0 - 0
  6160. movl %r15d, %eax
  6161. rorxl $11, %r14d, %ecx
  6162. addl 56(%rsp), %r9d
  6163. vpsrlq $19, %xmm6, %xmm7
  6164. # rnd_0: 1 - 1
  6165. xorl %edx, %ecx
  6166. xorl %r8d, %eax
  6167. rorxl $25, %r14d, %edx
  6168. vpsrlq $0x11, %xmm6, %xmm6
  6169. vpaddd %xmm3, %xmm4, %xmm4
  6170. # rnd_0: 2 - 2
  6171. andl %r14d, %eax
  6172. xorl %ecx, %edx
  6173. rorxl $13, %r10d, %ecx
  6174. vpaddd %xmm5, %xmm4, %xmm4
  6175. # rnd_0: 3 - 3
  6176. addl %edx, %r9d
  6177. rorxl $2, %r10d, %edx
  6178. xorl %r8d, %eax
  6179. vpxor %xmm7, %xmm6, %xmm6
  6180. # rnd_0: 4 - 4
  6181. xorl %edx, %ecx
  6182. rorxl $22, %r10d, %edx
  6183. addl %eax, %r9d
  6184. vpxor %xmm6, %xmm8, %xmm8
  6185. # rnd_0: 5 - 5
  6186. xorl %ecx, %edx
  6187. movl %r11d, %eax
  6188. addl %r9d, %r13d
  6189. vpshufb %xmm11, %xmm8, %xmm8
  6190. # rnd_0: 6 - 6
  6191. xorl %r10d, %eax
  6192. addl %edx, %r9d
  6193. andl %eax, %ebx
  6194. vpaddd %xmm8, %xmm4, %xmm4
  6195. # rnd_0: 7 - 7
  6196. xorl %r11d, %ebx
  6197. rorxl $6, %r13d, %edx
  6198. addl %ebx, %r9d
  6199. # rnd_1: 0 - 0
  6200. movl %r14d, %ebx
  6201. rorxl $11, %r13d, %ecx
  6202. addl 60(%rsp), %r8d
  6203. vpshufd $0x50, %xmm4, %xmm6
  6204. # rnd_1: 1 - 1
  6205. xorl %edx, %ecx
  6206. xorl %r15d, %ebx
  6207. rorxl $25, %r13d, %edx
  6208. vpsrld $10, %xmm6, %xmm9
  6209. # rnd_1: 2 - 2
  6210. andl %r13d, %ebx
  6211. xorl %ecx, %edx
  6212. rorxl $13, %r9d, %ecx
  6213. vpsrlq $19, %xmm6, %xmm7
  6214. # rnd_1: 3 - 3
  6215. addl %edx, %r8d
  6216. rorxl $2, %r9d, %edx
  6217. xorl %r15d, %ebx
  6218. vpsrlq $0x11, %xmm6, %xmm6
  6219. # rnd_1: 4 - 4
  6220. xorl %edx, %ecx
  6221. rorxl $22, %r9d, %edx
  6222. addl %ebx, %r8d
  6223. vpxor %xmm7, %xmm6, %xmm6
  6224. # rnd_1: 5 - 5
  6225. xorl %ecx, %edx
  6226. movl %r10d, %ebx
  6227. addl %r8d, %r12d
  6228. vpxor %xmm6, %xmm9, %xmm9
  6229. # rnd_1: 6 - 6
  6230. xorl %r9d, %ebx
  6231. addl %edx, %r8d
  6232. andl %ebx, %eax
  6233. vpshufb %xmm12, %xmm9, %xmm9
  6234. # rnd_1: 7 - 7
  6235. xorl %r10d, %eax
  6236. rorxl $6, %r12d, %edx
  6237. addl %eax, %r8d
  6238. vpaddd %xmm4, %xmm9, %xmm3
  6239. # msg_sched done: 12-15
  6240. # set_w_k_xfer_4: 8
  6241. vpaddd 128+L_avx1_rorx_sha256_k(%rip), %xmm0, %xmm4
  6242. vpaddd 144+L_avx1_rorx_sha256_k(%rip), %xmm1, %xmm5
  6243. vmovdqu %xmm4, (%rsp)
  6244. vmovdqu %xmm5, 16(%rsp)
  6245. vpaddd 160+L_avx1_rorx_sha256_k(%rip), %xmm2, %xmm6
  6246. vpaddd 176+L_avx1_rorx_sha256_k(%rip), %xmm3, %xmm7
  6247. vmovdqu %xmm6, 32(%rsp)
  6248. vmovdqu %xmm7, 48(%rsp)
  6249. # msg_sched: 0-3
  6250. # rnd_0: 0 - 0
  6251. movl %r13d, %eax
  6252. rorxl $11, %r12d, %ecx
  6253. addl (%rsp), %r15d
  6254. vpalignr $4, %xmm2, %xmm3, %xmm4
  6255. vpalignr $4, %xmm0, %xmm1, %xmm5
  6256. # rnd_0: 1 - 2
  6257. xorl %edx, %ecx
  6258. xorl %r14d, %eax
  6259. rorxl $25, %r12d, %edx
  6260. andl %r12d, %eax
  6261. xorl %ecx, %edx
  6262. rorxl $13, %r8d, %ecx
  6263. vpsrld $7, %xmm5, %xmm6
  6264. vpslld $25, %xmm5, %xmm7
  6265. # rnd_0: 3 - 4
  6266. addl %edx, %r15d
  6267. rorxl $2, %r8d, %edx
  6268. xorl %r14d, %eax
  6269. xorl %edx, %ecx
  6270. rorxl $22, %r8d, %edx
  6271. addl %eax, %r15d
  6272. vpsrld $3, %xmm5, %xmm8
  6273. vpor %xmm6, %xmm7, %xmm7
  6274. # rnd_0: 5 - 7
  6275. xorl %ecx, %edx
  6276. movl %r9d, %eax
  6277. addl %r15d, %r11d
  6278. xorl %r8d, %eax
  6279. addl %edx, %r15d
  6280. andl %eax, %ebx
  6281. xorl %r9d, %ebx
  6282. rorxl $6, %r11d, %edx
  6283. addl %ebx, %r15d
  6284. # rnd_1: 0 - 0
  6285. movl %r12d, %ebx
  6286. rorxl $11, %r11d, %ecx
  6287. addl 4(%rsp), %r14d
  6288. vpsrld $18, %xmm5, %xmm6
  6289. # rnd_1: 1 - 1
  6290. xorl %edx, %ecx
  6291. xorl %r13d, %ebx
  6292. rorxl $25, %r11d, %edx
  6293. vpslld $14, %xmm5, %xmm5
  6294. # rnd_1: 2 - 2
  6295. andl %r11d, %ebx
  6296. xorl %ecx, %edx
  6297. rorxl $13, %r15d, %ecx
  6298. vpxor %xmm5, %xmm7, %xmm7
  6299. # rnd_1: 3 - 3
  6300. addl %edx, %r14d
  6301. rorxl $2, %r15d, %edx
  6302. xorl %r13d, %ebx
  6303. vpxor %xmm6, %xmm7, %xmm7
  6304. # rnd_1: 4 - 4
  6305. xorl %edx, %ecx
  6306. rorxl $22, %r15d, %edx
  6307. addl %ebx, %r14d
  6308. vpshufd $0xfa, %xmm3, %xmm6
  6309. # rnd_1: 5 - 5
  6310. xorl %ecx, %edx
  6311. movl %r8d, %ebx
  6312. addl %r14d, %r10d
  6313. vpxor %xmm8, %xmm7, %xmm5
  6314. # rnd_1: 6 - 6
  6315. xorl %r15d, %ebx
  6316. addl %edx, %r14d
  6317. andl %ebx, %eax
  6318. vpsrld $10, %xmm6, %xmm8
  6319. # rnd_1: 7 - 7
  6320. xorl %r8d, %eax
  6321. rorxl $6, %r10d, %edx
  6322. addl %eax, %r14d
  6323. # rnd_0: 0 - 0
  6324. movl %r11d, %eax
  6325. rorxl $11, %r10d, %ecx
  6326. addl 8(%rsp), %r13d
  6327. vpsrlq $19, %xmm6, %xmm7
  6328. # rnd_0: 1 - 1
  6329. xorl %edx, %ecx
  6330. xorl %r12d, %eax
  6331. rorxl $25, %r10d, %edx
  6332. vpsrlq $0x11, %xmm6, %xmm6
  6333. vpaddd %xmm0, %xmm4, %xmm4
  6334. # rnd_0: 2 - 2
  6335. andl %r10d, %eax
  6336. xorl %ecx, %edx
  6337. rorxl $13, %r14d, %ecx
  6338. vpaddd %xmm5, %xmm4, %xmm4
  6339. # rnd_0: 3 - 3
  6340. addl %edx, %r13d
  6341. rorxl $2, %r14d, %edx
  6342. xorl %r12d, %eax
  6343. vpxor %xmm7, %xmm6, %xmm6
  6344. # rnd_0: 4 - 4
  6345. xorl %edx, %ecx
  6346. rorxl $22, %r14d, %edx
  6347. addl %eax, %r13d
  6348. vpxor %xmm6, %xmm8, %xmm8
  6349. # rnd_0: 5 - 5
  6350. xorl %ecx, %edx
  6351. movl %r15d, %eax
  6352. addl %r13d, %r9d
  6353. vpshufb %xmm11, %xmm8, %xmm8
  6354. # rnd_0: 6 - 6
  6355. xorl %r14d, %eax
  6356. addl %edx, %r13d
  6357. andl %eax, %ebx
  6358. vpaddd %xmm8, %xmm4, %xmm4
  6359. # rnd_0: 7 - 7
  6360. xorl %r15d, %ebx
  6361. rorxl $6, %r9d, %edx
  6362. addl %ebx, %r13d
  6363. # rnd_1: 0 - 0
  6364. movl %r10d, %ebx
  6365. rorxl $11, %r9d, %ecx
  6366. addl 12(%rsp), %r12d
  6367. vpshufd $0x50, %xmm4, %xmm6
  6368. # rnd_1: 1 - 1
  6369. xorl %edx, %ecx
  6370. xorl %r11d, %ebx
  6371. rorxl $25, %r9d, %edx
  6372. vpsrld $10, %xmm6, %xmm9
  6373. # rnd_1: 2 - 2
  6374. andl %r9d, %ebx
  6375. xorl %ecx, %edx
  6376. rorxl $13, %r13d, %ecx
  6377. vpsrlq $19, %xmm6, %xmm7
  6378. # rnd_1: 3 - 3
  6379. addl %edx, %r12d
  6380. rorxl $2, %r13d, %edx
  6381. xorl %r11d, %ebx
  6382. vpsrlq $0x11, %xmm6, %xmm6
  6383. # rnd_1: 4 - 4
  6384. xorl %edx, %ecx
  6385. rorxl $22, %r13d, %edx
  6386. addl %ebx, %r12d
  6387. vpxor %xmm7, %xmm6, %xmm6
  6388. # rnd_1: 5 - 5
  6389. xorl %ecx, %edx
  6390. movl %r14d, %ebx
  6391. addl %r12d, %r8d
  6392. vpxor %xmm6, %xmm9, %xmm9
  6393. # rnd_1: 6 - 6
  6394. xorl %r13d, %ebx
  6395. addl %edx, %r12d
  6396. andl %ebx, %eax
  6397. vpshufb %xmm12, %xmm9, %xmm9
  6398. # rnd_1: 7 - 7
  6399. xorl %r14d, %eax
  6400. rorxl $6, %r8d, %edx
  6401. addl %eax, %r12d
  6402. vpaddd %xmm4, %xmm9, %xmm0
  6403. # msg_sched done: 0-3
  6404. # msg_sched: 4-7
  6405. # rnd_0: 0 - 0
  6406. movl %r9d, %eax
  6407. rorxl $11, %r8d, %ecx
  6408. addl 16(%rsp), %r11d
  6409. vpalignr $4, %xmm3, %xmm0, %xmm4
  6410. vpalignr $4, %xmm1, %xmm2, %xmm5
  6411. # rnd_0: 1 - 2
  6412. xorl %edx, %ecx
  6413. xorl %r10d, %eax
  6414. rorxl $25, %r8d, %edx
  6415. andl %r8d, %eax
  6416. xorl %ecx, %edx
  6417. rorxl $13, %r12d, %ecx
  6418. vpsrld $7, %xmm5, %xmm6
  6419. vpslld $25, %xmm5, %xmm7
  6420. # rnd_0: 3 - 4
  6421. addl %edx, %r11d
  6422. rorxl $2, %r12d, %edx
  6423. xorl %r10d, %eax
  6424. xorl %edx, %ecx
  6425. rorxl $22, %r12d, %edx
  6426. addl %eax, %r11d
  6427. vpsrld $3, %xmm5, %xmm8
  6428. vpor %xmm6, %xmm7, %xmm7
  6429. # rnd_0: 5 - 7
  6430. xorl %ecx, %edx
  6431. movl %r13d, %eax
  6432. addl %r11d, %r15d
  6433. xorl %r12d, %eax
  6434. addl %edx, %r11d
  6435. andl %eax, %ebx
  6436. xorl %r13d, %ebx
  6437. rorxl $6, %r15d, %edx
  6438. addl %ebx, %r11d
  6439. # rnd_1: 0 - 0
  6440. movl %r8d, %ebx
  6441. rorxl $11, %r15d, %ecx
  6442. addl 20(%rsp), %r10d
  6443. vpsrld $18, %xmm5, %xmm6
  6444. # rnd_1: 1 - 1
  6445. xorl %edx, %ecx
  6446. xorl %r9d, %ebx
  6447. rorxl $25, %r15d, %edx
  6448. vpslld $14, %xmm5, %xmm5
  6449. # rnd_1: 2 - 2
  6450. andl %r15d, %ebx
  6451. xorl %ecx, %edx
  6452. rorxl $13, %r11d, %ecx
  6453. vpxor %xmm5, %xmm7, %xmm7
  6454. # rnd_1: 3 - 3
  6455. addl %edx, %r10d
  6456. rorxl $2, %r11d, %edx
  6457. xorl %r9d, %ebx
  6458. vpxor %xmm6, %xmm7, %xmm7
  6459. # rnd_1: 4 - 4
  6460. xorl %edx, %ecx
  6461. rorxl $22, %r11d, %edx
  6462. addl %ebx, %r10d
  6463. vpshufd $0xfa, %xmm0, %xmm6
  6464. # rnd_1: 5 - 5
  6465. xorl %ecx, %edx
  6466. movl %r12d, %ebx
  6467. addl %r10d, %r14d
  6468. vpxor %xmm8, %xmm7, %xmm5
  6469. # rnd_1: 6 - 6
  6470. xorl %r11d, %ebx
  6471. addl %edx, %r10d
  6472. andl %ebx, %eax
  6473. vpsrld $10, %xmm6, %xmm8
  6474. # rnd_1: 7 - 7
  6475. xorl %r12d, %eax
  6476. rorxl $6, %r14d, %edx
  6477. addl %eax, %r10d
  6478. # rnd_0: 0 - 0
  6479. movl %r15d, %eax
  6480. rorxl $11, %r14d, %ecx
  6481. addl 24(%rsp), %r9d
  6482. vpsrlq $19, %xmm6, %xmm7
  6483. # rnd_0: 1 - 1
  6484. xorl %edx, %ecx
  6485. xorl %r8d, %eax
  6486. rorxl $25, %r14d, %edx
  6487. vpsrlq $0x11, %xmm6, %xmm6
  6488. vpaddd %xmm1, %xmm4, %xmm4
  6489. # rnd_0: 2 - 2
  6490. andl %r14d, %eax
  6491. xorl %ecx, %edx
  6492. rorxl $13, %r10d, %ecx
  6493. vpaddd %xmm5, %xmm4, %xmm4
  6494. # rnd_0: 3 - 3
  6495. addl %edx, %r9d
  6496. rorxl $2, %r10d, %edx
  6497. xorl %r8d, %eax
  6498. vpxor %xmm7, %xmm6, %xmm6
  6499. # rnd_0: 4 - 4
  6500. xorl %edx, %ecx
  6501. rorxl $22, %r10d, %edx
  6502. addl %eax, %r9d
  6503. vpxor %xmm6, %xmm8, %xmm8
  6504. # rnd_0: 5 - 5
  6505. xorl %ecx, %edx
  6506. movl %r11d, %eax
  6507. addl %r9d, %r13d
  6508. vpshufb %xmm11, %xmm8, %xmm8
  6509. # rnd_0: 6 - 6
  6510. xorl %r10d, %eax
  6511. addl %edx, %r9d
  6512. andl %eax, %ebx
  6513. vpaddd %xmm8, %xmm4, %xmm4
  6514. # rnd_0: 7 - 7
  6515. xorl %r11d, %ebx
  6516. rorxl $6, %r13d, %edx
  6517. addl %ebx, %r9d
  6518. # rnd_1: 0 - 0
  6519. movl %r14d, %ebx
  6520. rorxl $11, %r13d, %ecx
  6521. addl 28(%rsp), %r8d
  6522. vpshufd $0x50, %xmm4, %xmm6
  6523. # rnd_1: 1 - 1
  6524. xorl %edx, %ecx
  6525. xorl %r15d, %ebx
  6526. rorxl $25, %r13d, %edx
  6527. vpsrld $10, %xmm6, %xmm9
  6528. # rnd_1: 2 - 2
  6529. andl %r13d, %ebx
  6530. xorl %ecx, %edx
  6531. rorxl $13, %r9d, %ecx
  6532. vpsrlq $19, %xmm6, %xmm7
  6533. # rnd_1: 3 - 3
  6534. addl %edx, %r8d
  6535. rorxl $2, %r9d, %edx
  6536. xorl %r15d, %ebx
  6537. vpsrlq $0x11, %xmm6, %xmm6
  6538. # rnd_1: 4 - 4
  6539. xorl %edx, %ecx
  6540. rorxl $22, %r9d, %edx
  6541. addl %ebx, %r8d
  6542. vpxor %xmm7, %xmm6, %xmm6
  6543. # rnd_1: 5 - 5
  6544. xorl %ecx, %edx
  6545. movl %r10d, %ebx
  6546. addl %r8d, %r12d
  6547. vpxor %xmm6, %xmm9, %xmm9
  6548. # rnd_1: 6 - 6
  6549. xorl %r9d, %ebx
  6550. addl %edx, %r8d
  6551. andl %ebx, %eax
  6552. vpshufb %xmm12, %xmm9, %xmm9
  6553. # rnd_1: 7 - 7
  6554. xorl %r10d, %eax
  6555. rorxl $6, %r12d, %edx
  6556. addl %eax, %r8d
  6557. vpaddd %xmm4, %xmm9, %xmm1
  6558. # msg_sched done: 4-7
  6559. # msg_sched: 8-11
  6560. # rnd_0: 0 - 0
  6561. movl %r13d, %eax
  6562. rorxl $11, %r12d, %ecx
  6563. addl 32(%rsp), %r15d
  6564. vpalignr $4, %xmm0, %xmm1, %xmm4
  6565. vpalignr $4, %xmm2, %xmm3, %xmm5
  6566. # rnd_0: 1 - 2
  6567. xorl %edx, %ecx
  6568. xorl %r14d, %eax
  6569. rorxl $25, %r12d, %edx
  6570. andl %r12d, %eax
  6571. xorl %ecx, %edx
  6572. rorxl $13, %r8d, %ecx
  6573. vpsrld $7, %xmm5, %xmm6
  6574. vpslld $25, %xmm5, %xmm7
  6575. # rnd_0: 3 - 4
  6576. addl %edx, %r15d
  6577. rorxl $2, %r8d, %edx
  6578. xorl %r14d, %eax
  6579. xorl %edx, %ecx
  6580. rorxl $22, %r8d, %edx
  6581. addl %eax, %r15d
  6582. vpsrld $3, %xmm5, %xmm8
  6583. vpor %xmm6, %xmm7, %xmm7
  6584. # rnd_0: 5 - 7
  6585. xorl %ecx, %edx
  6586. movl %r9d, %eax
  6587. addl %r15d, %r11d
  6588. xorl %r8d, %eax
  6589. addl %edx, %r15d
  6590. andl %eax, %ebx
  6591. xorl %r9d, %ebx
  6592. rorxl $6, %r11d, %edx
  6593. addl %ebx, %r15d
  6594. # rnd_1: 0 - 0
  6595. movl %r12d, %ebx
  6596. rorxl $11, %r11d, %ecx
  6597. addl 36(%rsp), %r14d
  6598. vpsrld $18, %xmm5, %xmm6
  6599. # rnd_1: 1 - 1
  6600. xorl %edx, %ecx
  6601. xorl %r13d, %ebx
  6602. rorxl $25, %r11d, %edx
  6603. vpslld $14, %xmm5, %xmm5
  6604. # rnd_1: 2 - 2
  6605. andl %r11d, %ebx
  6606. xorl %ecx, %edx
  6607. rorxl $13, %r15d, %ecx
  6608. vpxor %xmm5, %xmm7, %xmm7
  6609. # rnd_1: 3 - 3
  6610. addl %edx, %r14d
  6611. rorxl $2, %r15d, %edx
  6612. xorl %r13d, %ebx
  6613. vpxor %xmm6, %xmm7, %xmm7
  6614. # rnd_1: 4 - 4
  6615. xorl %edx, %ecx
  6616. rorxl $22, %r15d, %edx
  6617. addl %ebx, %r14d
  6618. vpshufd $0xfa, %xmm1, %xmm6
  6619. # rnd_1: 5 - 5
  6620. xorl %ecx, %edx
  6621. movl %r8d, %ebx
  6622. addl %r14d, %r10d
  6623. vpxor %xmm8, %xmm7, %xmm5
  6624. # rnd_1: 6 - 6
  6625. xorl %r15d, %ebx
  6626. addl %edx, %r14d
  6627. andl %ebx, %eax
  6628. vpsrld $10, %xmm6, %xmm8
  6629. # rnd_1: 7 - 7
  6630. xorl %r8d, %eax
  6631. rorxl $6, %r10d, %edx
  6632. addl %eax, %r14d
  6633. # rnd_0: 0 - 0
  6634. movl %r11d, %eax
  6635. rorxl $11, %r10d, %ecx
  6636. addl 40(%rsp), %r13d
  6637. vpsrlq $19, %xmm6, %xmm7
  6638. # rnd_0: 1 - 1
  6639. xorl %edx, %ecx
  6640. xorl %r12d, %eax
  6641. rorxl $25, %r10d, %edx
  6642. vpsrlq $0x11, %xmm6, %xmm6
  6643. vpaddd %xmm2, %xmm4, %xmm4
  6644. # rnd_0: 2 - 2
  6645. andl %r10d, %eax
  6646. xorl %ecx, %edx
  6647. rorxl $13, %r14d, %ecx
  6648. vpaddd %xmm5, %xmm4, %xmm4
  6649. # rnd_0: 3 - 3
  6650. addl %edx, %r13d
  6651. rorxl $2, %r14d, %edx
  6652. xorl %r12d, %eax
  6653. vpxor %xmm7, %xmm6, %xmm6
  6654. # rnd_0: 4 - 4
  6655. xorl %edx, %ecx
  6656. rorxl $22, %r14d, %edx
  6657. addl %eax, %r13d
  6658. vpxor %xmm6, %xmm8, %xmm8
  6659. # rnd_0: 5 - 5
  6660. xorl %ecx, %edx
  6661. movl %r15d, %eax
  6662. addl %r13d, %r9d
  6663. vpshufb %xmm11, %xmm8, %xmm8
  6664. # rnd_0: 6 - 6
  6665. xorl %r14d, %eax
  6666. addl %edx, %r13d
  6667. andl %eax, %ebx
  6668. vpaddd %xmm8, %xmm4, %xmm4
  6669. # rnd_0: 7 - 7
  6670. xorl %r15d, %ebx
  6671. rorxl $6, %r9d, %edx
  6672. addl %ebx, %r13d
  6673. # rnd_1: 0 - 0
  6674. movl %r10d, %ebx
  6675. rorxl $11, %r9d, %ecx
  6676. addl 44(%rsp), %r12d
  6677. vpshufd $0x50, %xmm4, %xmm6
  6678. # rnd_1: 1 - 1
  6679. xorl %edx, %ecx
  6680. xorl %r11d, %ebx
  6681. rorxl $25, %r9d, %edx
  6682. vpsrld $10, %xmm6, %xmm9
  6683. # rnd_1: 2 - 2
  6684. andl %r9d, %ebx
  6685. xorl %ecx, %edx
  6686. rorxl $13, %r13d, %ecx
  6687. vpsrlq $19, %xmm6, %xmm7
  6688. # rnd_1: 3 - 3
  6689. addl %edx, %r12d
  6690. rorxl $2, %r13d, %edx
  6691. xorl %r11d, %ebx
  6692. vpsrlq $0x11, %xmm6, %xmm6
  6693. # rnd_1: 4 - 4
  6694. xorl %edx, %ecx
  6695. rorxl $22, %r13d, %edx
  6696. addl %ebx, %r12d
  6697. vpxor %xmm7, %xmm6, %xmm6
  6698. # rnd_1: 5 - 5
  6699. xorl %ecx, %edx
  6700. movl %r14d, %ebx
  6701. addl %r12d, %r8d
  6702. vpxor %xmm6, %xmm9, %xmm9
  6703. # rnd_1: 6 - 6
  6704. xorl %r13d, %ebx
  6705. addl %edx, %r12d
  6706. andl %ebx, %eax
  6707. vpshufb %xmm12, %xmm9, %xmm9
  6708. # rnd_1: 7 - 7
  6709. xorl %r14d, %eax
  6710. rorxl $6, %r8d, %edx
  6711. addl %eax, %r12d
  6712. vpaddd %xmm4, %xmm9, %xmm2
  6713. # msg_sched done: 8-11
  6714. # msg_sched: 12-15
  6715. # rnd_0: 0 - 0
  6716. movl %r9d, %eax
  6717. rorxl $11, %r8d, %ecx
  6718. addl 48(%rsp), %r11d
  6719. vpalignr $4, %xmm1, %xmm2, %xmm4
  6720. vpalignr $4, %xmm3, %xmm0, %xmm5
  6721. # rnd_0: 1 - 2
  6722. xorl %edx, %ecx
  6723. xorl %r10d, %eax
  6724. rorxl $25, %r8d, %edx
  6725. andl %r8d, %eax
  6726. xorl %ecx, %edx
  6727. rorxl $13, %r12d, %ecx
  6728. vpsrld $7, %xmm5, %xmm6
  6729. vpslld $25, %xmm5, %xmm7
  6730. # rnd_0: 3 - 4
  6731. addl %edx, %r11d
  6732. rorxl $2, %r12d, %edx
  6733. xorl %r10d, %eax
  6734. xorl %edx, %ecx
  6735. rorxl $22, %r12d, %edx
  6736. addl %eax, %r11d
  6737. vpsrld $3, %xmm5, %xmm8
  6738. vpor %xmm6, %xmm7, %xmm7
  6739. # rnd_0: 5 - 7
  6740. xorl %ecx, %edx
  6741. movl %r13d, %eax
  6742. addl %r11d, %r15d
  6743. xorl %r12d, %eax
  6744. addl %edx, %r11d
  6745. andl %eax, %ebx
  6746. xorl %r13d, %ebx
  6747. rorxl $6, %r15d, %edx
  6748. addl %ebx, %r11d
  6749. # rnd_1: 0 - 0
  6750. movl %r8d, %ebx
  6751. rorxl $11, %r15d, %ecx
  6752. addl 52(%rsp), %r10d
  6753. vpsrld $18, %xmm5, %xmm6
  6754. # rnd_1: 1 - 1
  6755. xorl %edx, %ecx
  6756. xorl %r9d, %ebx
  6757. rorxl $25, %r15d, %edx
  6758. vpslld $14, %xmm5, %xmm5
  6759. # rnd_1: 2 - 2
  6760. andl %r15d, %ebx
  6761. xorl %ecx, %edx
  6762. rorxl $13, %r11d, %ecx
  6763. vpxor %xmm5, %xmm7, %xmm7
  6764. # rnd_1: 3 - 3
  6765. addl %edx, %r10d
  6766. rorxl $2, %r11d, %edx
  6767. xorl %r9d, %ebx
  6768. vpxor %xmm6, %xmm7, %xmm7
  6769. # rnd_1: 4 - 4
  6770. xorl %edx, %ecx
  6771. rorxl $22, %r11d, %edx
  6772. addl %ebx, %r10d
  6773. vpshufd $0xfa, %xmm2, %xmm6
  6774. # rnd_1: 5 - 5
  6775. xorl %ecx, %edx
  6776. movl %r12d, %ebx
  6777. addl %r10d, %r14d
  6778. vpxor %xmm8, %xmm7, %xmm5
  6779. # rnd_1: 6 - 6
  6780. xorl %r11d, %ebx
  6781. addl %edx, %r10d
  6782. andl %ebx, %eax
  6783. vpsrld $10, %xmm6, %xmm8
  6784. # rnd_1: 7 - 7
  6785. xorl %r12d, %eax
  6786. rorxl $6, %r14d, %edx
  6787. addl %eax, %r10d
  6788. # rnd_0: 0 - 0
  6789. movl %r15d, %eax
  6790. rorxl $11, %r14d, %ecx
  6791. addl 56(%rsp), %r9d
  6792. vpsrlq $19, %xmm6, %xmm7
  6793. # rnd_0: 1 - 1
  6794. xorl %edx, %ecx
  6795. xorl %r8d, %eax
  6796. rorxl $25, %r14d, %edx
  6797. vpsrlq $0x11, %xmm6, %xmm6
  6798. vpaddd %xmm3, %xmm4, %xmm4
  6799. # rnd_0: 2 - 2
  6800. andl %r14d, %eax
  6801. xorl %ecx, %edx
  6802. rorxl $13, %r10d, %ecx
  6803. vpaddd %xmm5, %xmm4, %xmm4
  6804. # rnd_0: 3 - 3
  6805. addl %edx, %r9d
  6806. rorxl $2, %r10d, %edx
  6807. xorl %r8d, %eax
  6808. vpxor %xmm7, %xmm6, %xmm6
  6809. # rnd_0: 4 - 4
  6810. xorl %edx, %ecx
  6811. rorxl $22, %r10d, %edx
  6812. addl %eax, %r9d
  6813. vpxor %xmm6, %xmm8, %xmm8
  6814. # rnd_0: 5 - 5
  6815. xorl %ecx, %edx
  6816. movl %r11d, %eax
  6817. addl %r9d, %r13d
  6818. vpshufb %xmm11, %xmm8, %xmm8
  6819. # rnd_0: 6 - 6
  6820. xorl %r10d, %eax
  6821. addl %edx, %r9d
  6822. andl %eax, %ebx
  6823. vpaddd %xmm8, %xmm4, %xmm4
  6824. # rnd_0: 7 - 7
  6825. xorl %r11d, %ebx
  6826. rorxl $6, %r13d, %edx
  6827. addl %ebx, %r9d
  6828. # rnd_1: 0 - 0
  6829. movl %r14d, %ebx
  6830. rorxl $11, %r13d, %ecx
  6831. addl 60(%rsp), %r8d
  6832. vpshufd $0x50, %xmm4, %xmm6
  6833. # rnd_1: 1 - 1
  6834. xorl %edx, %ecx
  6835. xorl %r15d, %ebx
  6836. rorxl $25, %r13d, %edx
  6837. vpsrld $10, %xmm6, %xmm9
  6838. # rnd_1: 2 - 2
  6839. andl %r13d, %ebx
  6840. xorl %ecx, %edx
  6841. rorxl $13, %r9d, %ecx
  6842. vpsrlq $19, %xmm6, %xmm7
  6843. # rnd_1: 3 - 3
  6844. addl %edx, %r8d
  6845. rorxl $2, %r9d, %edx
  6846. xorl %r15d, %ebx
  6847. vpsrlq $0x11, %xmm6, %xmm6
  6848. # rnd_1: 4 - 4
  6849. xorl %edx, %ecx
  6850. rorxl $22, %r9d, %edx
  6851. addl %ebx, %r8d
  6852. vpxor %xmm7, %xmm6, %xmm6
  6853. # rnd_1: 5 - 5
  6854. xorl %ecx, %edx
  6855. movl %r10d, %ebx
  6856. addl %r8d, %r12d
  6857. vpxor %xmm6, %xmm9, %xmm9
  6858. # rnd_1: 6 - 6
  6859. xorl %r9d, %ebx
  6860. addl %edx, %r8d
  6861. andl %ebx, %eax
  6862. vpshufb %xmm12, %xmm9, %xmm9
  6863. # rnd_1: 7 - 7
  6864. xorl %r10d, %eax
  6865. rorxl $6, %r12d, %edx
  6866. addl %eax, %r8d
  6867. vpaddd %xmm4, %xmm9, %xmm3
  6868. # msg_sched done: 12-15
  6869. # set_w_k_xfer_4: 12
  6870. vpaddd 192+L_avx1_rorx_sha256_k(%rip), %xmm0, %xmm4
  6871. vpaddd 208+L_avx1_rorx_sha256_k(%rip), %xmm1, %xmm5
  6872. vmovdqu %xmm4, (%rsp)
  6873. vmovdqu %xmm5, 16(%rsp)
  6874. vpaddd 224+L_avx1_rorx_sha256_k(%rip), %xmm2, %xmm6
  6875. vpaddd 240+L_avx1_rorx_sha256_k(%rip), %xmm3, %xmm7
  6876. vmovdqu %xmm6, 32(%rsp)
  6877. vmovdqu %xmm7, 48(%rsp)
  6878. xorl %eax, %eax
  6879. # rnd_all_4: 0-3
  6880. rorxl $6, %r12d, %edx
  6881. rorxl $11, %r12d, %ecx
  6882. addl %eax, %r8d
  6883. addl (%rsp), %r15d
  6884. movl %r13d, %eax
  6885. xorl %edx, %ecx
  6886. xorl %r14d, %eax
  6887. rorxl $25, %r12d, %edx
  6888. xorl %ecx, %edx
  6889. andl %r12d, %eax
  6890. addl %edx, %r15d
  6891. rorxl $2, %r8d, %edx
  6892. rorxl $13, %r8d, %ecx
  6893. xorl %r14d, %eax
  6894. xorl %edx, %ecx
  6895. rorxl $22, %r8d, %edx
  6896. addl %eax, %r15d
  6897. xorl %ecx, %edx
  6898. movl %r9d, %eax
  6899. addl %r15d, %r11d
  6900. xorl %r8d, %eax
  6901. andl %eax, %ebx
  6902. addl %edx, %r15d
  6903. xorl %r9d, %ebx
  6904. rorxl $6, %r11d, %edx
  6905. rorxl $11, %r11d, %ecx
  6906. addl %ebx, %r15d
  6907. addl 4(%rsp), %r14d
  6908. movl %r12d, %ebx
  6909. xorl %edx, %ecx
  6910. xorl %r13d, %ebx
  6911. rorxl $25, %r11d, %edx
  6912. xorl %ecx, %edx
  6913. andl %r11d, %ebx
  6914. addl %edx, %r14d
  6915. rorxl $2, %r15d, %edx
  6916. rorxl $13, %r15d, %ecx
  6917. xorl %r13d, %ebx
  6918. xorl %edx, %ecx
  6919. rorxl $22, %r15d, %edx
  6920. addl %ebx, %r14d
  6921. xorl %ecx, %edx
  6922. movl %r8d, %ebx
  6923. addl %r14d, %r10d
  6924. xorl %r15d, %ebx
  6925. andl %ebx, %eax
  6926. addl %edx, %r14d
  6927. xorl %r8d, %eax
  6928. rorxl $6, %r10d, %edx
  6929. rorxl $11, %r10d, %ecx
  6930. addl %eax, %r14d
  6931. addl 8(%rsp), %r13d
  6932. movl %r11d, %eax
  6933. xorl %edx, %ecx
  6934. xorl %r12d, %eax
  6935. rorxl $25, %r10d, %edx
  6936. xorl %ecx, %edx
  6937. andl %r10d, %eax
  6938. addl %edx, %r13d
  6939. rorxl $2, %r14d, %edx
  6940. rorxl $13, %r14d, %ecx
  6941. xorl %r12d, %eax
  6942. xorl %edx, %ecx
  6943. rorxl $22, %r14d, %edx
  6944. addl %eax, %r13d
  6945. xorl %ecx, %edx
  6946. movl %r15d, %eax
  6947. addl %r13d, %r9d
  6948. xorl %r14d, %eax
  6949. andl %eax, %ebx
  6950. addl %edx, %r13d
  6951. xorl %r15d, %ebx
  6952. rorxl $6, %r9d, %edx
  6953. rorxl $11, %r9d, %ecx
  6954. addl %ebx, %r13d
  6955. addl 12(%rsp), %r12d
  6956. movl %r10d, %ebx
  6957. xorl %edx, %ecx
  6958. xorl %r11d, %ebx
  6959. rorxl $25, %r9d, %edx
  6960. xorl %ecx, %edx
  6961. andl %r9d, %ebx
  6962. addl %edx, %r12d
  6963. rorxl $2, %r13d, %edx
  6964. rorxl $13, %r13d, %ecx
  6965. xorl %r11d, %ebx
  6966. xorl %edx, %ecx
  6967. rorxl $22, %r13d, %edx
  6968. addl %ebx, %r12d
  6969. xorl %ecx, %edx
  6970. movl %r14d, %ebx
  6971. addl %r12d, %r8d
  6972. xorl %r13d, %ebx
  6973. andl %ebx, %eax
  6974. addl %edx, %r12d
  6975. xorl %r14d, %eax
  6976. # rnd_all_4: 1-4
  6977. rorxl $6, %r8d, %edx
  6978. rorxl $11, %r8d, %ecx
  6979. addl %eax, %r12d
  6980. addl 16(%rsp), %r11d
  6981. movl %r9d, %eax
  6982. xorl %edx, %ecx
  6983. xorl %r10d, %eax
  6984. rorxl $25, %r8d, %edx
  6985. xorl %ecx, %edx
  6986. andl %r8d, %eax
  6987. addl %edx, %r11d
  6988. rorxl $2, %r12d, %edx
  6989. rorxl $13, %r12d, %ecx
  6990. xorl %r10d, %eax
  6991. xorl %edx, %ecx
  6992. rorxl $22, %r12d, %edx
  6993. addl %eax, %r11d
  6994. xorl %ecx, %edx
  6995. movl %r13d, %eax
  6996. addl %r11d, %r15d
  6997. xorl %r12d, %eax
  6998. andl %eax, %ebx
  6999. addl %edx, %r11d
  7000. xorl %r13d, %ebx
  7001. rorxl $6, %r15d, %edx
  7002. rorxl $11, %r15d, %ecx
  7003. addl %ebx, %r11d
  7004. addl 20(%rsp), %r10d
  7005. movl %r8d, %ebx
  7006. xorl %edx, %ecx
  7007. xorl %r9d, %ebx
  7008. rorxl $25, %r15d, %edx
  7009. xorl %ecx, %edx
  7010. andl %r15d, %ebx
  7011. addl %edx, %r10d
  7012. rorxl $2, %r11d, %edx
  7013. rorxl $13, %r11d, %ecx
  7014. xorl %r9d, %ebx
  7015. xorl %edx, %ecx
  7016. rorxl $22, %r11d, %edx
  7017. addl %ebx, %r10d
  7018. xorl %ecx, %edx
  7019. movl %r12d, %ebx
  7020. addl %r10d, %r14d
  7021. xorl %r11d, %ebx
  7022. andl %ebx, %eax
  7023. addl %edx, %r10d
  7024. xorl %r12d, %eax
  7025. rorxl $6, %r14d, %edx
  7026. rorxl $11, %r14d, %ecx
  7027. addl %eax, %r10d
  7028. addl 24(%rsp), %r9d
  7029. movl %r15d, %eax
  7030. xorl %edx, %ecx
  7031. xorl %r8d, %eax
  7032. rorxl $25, %r14d, %edx
  7033. xorl %ecx, %edx
  7034. andl %r14d, %eax
  7035. addl %edx, %r9d
  7036. rorxl $2, %r10d, %edx
  7037. rorxl $13, %r10d, %ecx
  7038. xorl %r8d, %eax
  7039. xorl %edx, %ecx
  7040. rorxl $22, %r10d, %edx
  7041. addl %eax, %r9d
  7042. xorl %ecx, %edx
  7043. movl %r11d, %eax
  7044. addl %r9d, %r13d
  7045. xorl %r10d, %eax
  7046. andl %eax, %ebx
  7047. addl %edx, %r9d
  7048. xorl %r11d, %ebx
  7049. rorxl $6, %r13d, %edx
  7050. rorxl $11, %r13d, %ecx
  7051. addl %ebx, %r9d
  7052. addl 28(%rsp), %r8d
  7053. movl %r14d, %ebx
  7054. xorl %edx, %ecx
  7055. xorl %r15d, %ebx
  7056. rorxl $25, %r13d, %edx
  7057. xorl %ecx, %edx
  7058. andl %r13d, %ebx
  7059. addl %edx, %r8d
  7060. rorxl $2, %r9d, %edx
  7061. rorxl $13, %r9d, %ecx
  7062. xorl %r15d, %ebx
  7063. xorl %edx, %ecx
  7064. rorxl $22, %r9d, %edx
  7065. addl %ebx, %r8d
  7066. xorl %ecx, %edx
  7067. movl %r10d, %ebx
  7068. addl %r8d, %r12d
  7069. xorl %r9d, %ebx
  7070. andl %ebx, %eax
  7071. addl %edx, %r8d
  7072. xorl %r10d, %eax
  7073. # rnd_all_4: 2-5
  7074. rorxl $6, %r12d, %edx
  7075. rorxl $11, %r12d, %ecx
  7076. addl %eax, %r8d
  7077. addl 32(%rsp), %r15d
  7078. movl %r13d, %eax
  7079. xorl %edx, %ecx
  7080. xorl %r14d, %eax
  7081. rorxl $25, %r12d, %edx
  7082. xorl %ecx, %edx
  7083. andl %r12d, %eax
  7084. addl %edx, %r15d
  7085. rorxl $2, %r8d, %edx
  7086. rorxl $13, %r8d, %ecx
  7087. xorl %r14d, %eax
  7088. xorl %edx, %ecx
  7089. rorxl $22, %r8d, %edx
  7090. addl %eax, %r15d
  7091. xorl %ecx, %edx
  7092. movl %r9d, %eax
  7093. addl %r15d, %r11d
  7094. xorl %r8d, %eax
  7095. andl %eax, %ebx
  7096. addl %edx, %r15d
  7097. xorl %r9d, %ebx
  7098. rorxl $6, %r11d, %edx
  7099. rorxl $11, %r11d, %ecx
  7100. addl %ebx, %r15d
  7101. addl 36(%rsp), %r14d
  7102. movl %r12d, %ebx
  7103. xorl %edx, %ecx
  7104. xorl %r13d, %ebx
  7105. rorxl $25, %r11d, %edx
  7106. xorl %ecx, %edx
  7107. andl %r11d, %ebx
  7108. addl %edx, %r14d
  7109. rorxl $2, %r15d, %edx
  7110. rorxl $13, %r15d, %ecx
  7111. xorl %r13d, %ebx
  7112. xorl %edx, %ecx
  7113. rorxl $22, %r15d, %edx
  7114. addl %ebx, %r14d
  7115. xorl %ecx, %edx
  7116. movl %r8d, %ebx
  7117. addl %r14d, %r10d
  7118. xorl %r15d, %ebx
  7119. andl %ebx, %eax
  7120. addl %edx, %r14d
  7121. xorl %r8d, %eax
  7122. rorxl $6, %r10d, %edx
  7123. rorxl $11, %r10d, %ecx
  7124. addl %eax, %r14d
  7125. addl 40(%rsp), %r13d
  7126. movl %r11d, %eax
  7127. xorl %edx, %ecx
  7128. xorl %r12d, %eax
  7129. rorxl $25, %r10d, %edx
  7130. xorl %ecx, %edx
  7131. andl %r10d, %eax
  7132. addl %edx, %r13d
  7133. rorxl $2, %r14d, %edx
  7134. rorxl $13, %r14d, %ecx
  7135. xorl %r12d, %eax
  7136. xorl %edx, %ecx
  7137. rorxl $22, %r14d, %edx
  7138. addl %eax, %r13d
  7139. xorl %ecx, %edx
  7140. movl %r15d, %eax
  7141. addl %r13d, %r9d
  7142. xorl %r14d, %eax
  7143. andl %eax, %ebx
  7144. addl %edx, %r13d
  7145. xorl %r15d, %ebx
  7146. rorxl $6, %r9d, %edx
  7147. rorxl $11, %r9d, %ecx
  7148. addl %ebx, %r13d
  7149. addl 44(%rsp), %r12d
  7150. movl %r10d, %ebx
  7151. xorl %edx, %ecx
  7152. xorl %r11d, %ebx
  7153. rorxl $25, %r9d, %edx
  7154. xorl %ecx, %edx
  7155. andl %r9d, %ebx
  7156. addl %edx, %r12d
  7157. rorxl $2, %r13d, %edx
  7158. rorxl $13, %r13d, %ecx
  7159. xorl %r11d, %ebx
  7160. xorl %edx, %ecx
  7161. rorxl $22, %r13d, %edx
  7162. addl %ebx, %r12d
  7163. xorl %ecx, %edx
  7164. movl %r14d, %ebx
  7165. addl %r12d, %r8d
  7166. xorl %r13d, %ebx
  7167. andl %ebx, %eax
  7168. addl %edx, %r12d
  7169. xorl %r14d, %eax
  7170. # rnd_all_4: 3-6
  7171. rorxl $6, %r8d, %edx
  7172. rorxl $11, %r8d, %ecx
  7173. addl %eax, %r12d
  7174. addl 48(%rsp), %r11d
  7175. movl %r9d, %eax
  7176. xorl %edx, %ecx
  7177. xorl %r10d, %eax
  7178. rorxl $25, %r8d, %edx
  7179. xorl %ecx, %edx
  7180. andl %r8d, %eax
  7181. addl %edx, %r11d
  7182. rorxl $2, %r12d, %edx
  7183. rorxl $13, %r12d, %ecx
  7184. xorl %r10d, %eax
  7185. xorl %edx, %ecx
  7186. rorxl $22, %r12d, %edx
  7187. addl %eax, %r11d
  7188. xorl %ecx, %edx
  7189. movl %r13d, %eax
  7190. addl %r11d, %r15d
  7191. xorl %r12d, %eax
  7192. andl %eax, %ebx
  7193. addl %edx, %r11d
  7194. xorl %r13d, %ebx
  7195. rorxl $6, %r15d, %edx
  7196. rorxl $11, %r15d, %ecx
  7197. addl %ebx, %r11d
  7198. addl 52(%rsp), %r10d
  7199. movl %r8d, %ebx
  7200. xorl %edx, %ecx
  7201. xorl %r9d, %ebx
  7202. rorxl $25, %r15d, %edx
  7203. xorl %ecx, %edx
  7204. andl %r15d, %ebx
  7205. addl %edx, %r10d
  7206. rorxl $2, %r11d, %edx
  7207. rorxl $13, %r11d, %ecx
  7208. xorl %r9d, %ebx
  7209. xorl %edx, %ecx
  7210. rorxl $22, %r11d, %edx
  7211. addl %ebx, %r10d
  7212. xorl %ecx, %edx
  7213. movl %r12d, %ebx
  7214. addl %r10d, %r14d
  7215. xorl %r11d, %ebx
  7216. andl %ebx, %eax
  7217. addl %edx, %r10d
  7218. xorl %r12d, %eax
  7219. rorxl $6, %r14d, %edx
  7220. rorxl $11, %r14d, %ecx
  7221. addl %eax, %r10d
  7222. addl 56(%rsp), %r9d
  7223. movl %r15d, %eax
  7224. xorl %edx, %ecx
  7225. xorl %r8d, %eax
  7226. rorxl $25, %r14d, %edx
  7227. xorl %ecx, %edx
  7228. andl %r14d, %eax
  7229. addl %edx, %r9d
  7230. rorxl $2, %r10d, %edx
  7231. rorxl $13, %r10d, %ecx
  7232. xorl %r8d, %eax
  7233. xorl %edx, %ecx
  7234. rorxl $22, %r10d, %edx
  7235. addl %eax, %r9d
  7236. xorl %ecx, %edx
  7237. movl %r11d, %eax
  7238. addl %r9d, %r13d
  7239. xorl %r10d, %eax
  7240. andl %eax, %ebx
  7241. addl %edx, %r9d
  7242. xorl %r11d, %ebx
  7243. rorxl $6, %r13d, %edx
  7244. rorxl $11, %r13d, %ecx
  7245. addl %ebx, %r9d
  7246. addl 60(%rsp), %r8d
  7247. movl %r14d, %ebx
  7248. xorl %edx, %ecx
  7249. xorl %r15d, %ebx
  7250. rorxl $25, %r13d, %edx
  7251. xorl %ecx, %edx
  7252. andl %r13d, %ebx
  7253. addl %edx, %r8d
  7254. rorxl $2, %r9d, %edx
  7255. rorxl $13, %r9d, %ecx
  7256. xorl %r15d, %ebx
  7257. xorl %edx, %ecx
  7258. rorxl $22, %r9d, %edx
  7259. addl %ebx, %r8d
  7260. xorl %ecx, %edx
  7261. movl %r10d, %ebx
  7262. addl %r8d, %r12d
  7263. xorl %r9d, %ebx
  7264. andl %ebx, %eax
  7265. addl %edx, %r8d
  7266. xorl %r10d, %eax
  7267. addl %eax, %r8d
  7268. addl %r8d, (%rdi)
  7269. addl %r9d, 4(%rdi)
  7270. addl %r10d, 8(%rdi)
  7271. addl %r11d, 12(%rdi)
  7272. addl %r12d, 16(%rdi)
  7273. addl %r13d, 20(%rdi)
  7274. addl %r14d, 24(%rdi)
  7275. addl %r15d, 28(%rdi)
  7276. xorq %rax, %rax
  7277. vzeroupper
  7278. addq $0x40, %rsp
  7279. popq %r15
  7280. popq %r14
  7281. popq %r13
  7282. popq %r12
  7283. popq %rbx
  7284. repz retq
  7285. #ifndef __APPLE__
  7286. .size Transform_Sha256_AVX1_RORX,.-Transform_Sha256_AVX1_RORX
  7287. #endif /* __APPLE__ */
  7288. #ifndef __APPLE__
  7289. .text
  7290. .globl Transform_Sha256_AVX1_RORX_Len
  7291. .type Transform_Sha256_AVX1_RORX_Len,@function
  7292. .align 16
  7293. Transform_Sha256_AVX1_RORX_Len:
  7294. #else
  7295. .section __TEXT,__text
  7296. .globl _Transform_Sha256_AVX1_RORX_Len
  7297. .p2align 4
  7298. _Transform_Sha256_AVX1_RORX_Len:
  7299. #endif /* __APPLE__ */
  7300. pushq %rbx
  7301. pushq %r12
  7302. pushq %r13
  7303. pushq %r14
  7304. pushq %r15
  7305. pushq %rbp
  7306. movq %rsi, %rbp
  7307. movq %rdx, %rsi
  7308. subq $0x40, %rsp
  7309. vmovdqa L_avx1_rorx_sha256_flip_mask(%rip), %xmm13
  7310. vmovdqa L_avx1_rorx_sha256_shuf_00BA(%rip), %xmm11
  7311. vmovdqa L_avx1_rorx_sha256_shuf_DC00(%rip), %xmm12
  7312. movl (%rdi), %r8d
  7313. movl 4(%rdi), %r9d
  7314. movl 8(%rdi), %r10d
  7315. movl 12(%rdi), %r11d
  7316. movl 16(%rdi), %r12d
  7317. movl 20(%rdi), %r13d
  7318. movl 24(%rdi), %r14d
  7319. movl 28(%rdi), %r15d
  7320. # Start of loop processing a block
  7321. L_sha256_len_avx1_len_rorx_start:
  7322. # X0, X1, X2, X3 = W[0..15]
  7323. vmovdqu (%rbp), %xmm0
  7324. vmovdqu 16(%rbp), %xmm1
  7325. vpshufb %xmm13, %xmm0, %xmm0
  7326. vpshufb %xmm13, %xmm1, %xmm1
  7327. vmovdqu 32(%rbp), %xmm2
  7328. vmovdqu 48(%rbp), %xmm3
  7329. vpshufb %xmm13, %xmm2, %xmm2
  7330. vpshufb %xmm13, %xmm3, %xmm3
  7331. # set_w_k_xfer_4: 0
  7332. vpaddd 0+L_avx1_rorx_sha256_k(%rip), %xmm0, %xmm4
  7333. vpaddd 16+L_avx1_rorx_sha256_k(%rip), %xmm1, %xmm5
  7334. vmovdqu %xmm4, (%rsp)
  7335. vmovdqu %xmm5, 16(%rsp)
  7336. vpaddd 32+L_avx1_rorx_sha256_k(%rip), %xmm2, %xmm6
  7337. vpaddd 48+L_avx1_rorx_sha256_k(%rip), %xmm3, %xmm7
  7338. vmovdqu %xmm6, 32(%rsp)
  7339. vmovdqu %xmm7, 48(%rsp)
  7340. movl %r9d, %ebx
  7341. rorxl $6, %r12d, %edx
  7342. xorl %r10d, %ebx
  7343. # msg_sched: 0-3
  7344. # rnd_0: 0 - 0
  7345. movl %r13d, %eax
  7346. rorxl $11, %r12d, %ecx
  7347. addl (%rsp), %r15d
  7348. vpalignr $4, %xmm2, %xmm3, %xmm4
  7349. vpalignr $4, %xmm0, %xmm1, %xmm5
  7350. # rnd_0: 1 - 2
  7351. xorl %edx, %ecx
  7352. xorl %r14d, %eax
  7353. rorxl $25, %r12d, %edx
  7354. andl %r12d, %eax
  7355. xorl %ecx, %edx
  7356. rorxl $13, %r8d, %ecx
  7357. vpsrld $7, %xmm5, %xmm6
  7358. vpslld $25, %xmm5, %xmm7
  7359. # rnd_0: 3 - 4
  7360. addl %edx, %r15d
  7361. rorxl $2, %r8d, %edx
  7362. xorl %r14d, %eax
  7363. xorl %edx, %ecx
  7364. rorxl $22, %r8d, %edx
  7365. addl %eax, %r15d
  7366. vpsrld $3, %xmm5, %xmm8
  7367. vpor %xmm6, %xmm7, %xmm7
  7368. # rnd_0: 5 - 7
  7369. xorl %ecx, %edx
  7370. movl %r9d, %eax
  7371. addl %r15d, %r11d
  7372. xorl %r8d, %eax
  7373. addl %edx, %r15d
  7374. andl %eax, %ebx
  7375. xorl %r9d, %ebx
  7376. rorxl $6, %r11d, %edx
  7377. addl %ebx, %r15d
  7378. # rnd_1: 0 - 0
  7379. movl %r12d, %ebx
  7380. rorxl $11, %r11d, %ecx
  7381. addl 4(%rsp), %r14d
  7382. vpsrld $18, %xmm5, %xmm6
  7383. # rnd_1: 1 - 1
  7384. xorl %edx, %ecx
  7385. xorl %r13d, %ebx
  7386. rorxl $25, %r11d, %edx
  7387. vpslld $14, %xmm5, %xmm5
  7388. # rnd_1: 2 - 2
  7389. andl %r11d, %ebx
  7390. xorl %ecx, %edx
  7391. rorxl $13, %r15d, %ecx
  7392. vpxor %xmm5, %xmm7, %xmm7
  7393. # rnd_1: 3 - 3
  7394. addl %edx, %r14d
  7395. rorxl $2, %r15d, %edx
  7396. xorl %r13d, %ebx
  7397. vpxor %xmm6, %xmm7, %xmm7
  7398. # rnd_1: 4 - 4
  7399. xorl %edx, %ecx
  7400. rorxl $22, %r15d, %edx
  7401. addl %ebx, %r14d
  7402. vpshufd $0xfa, %xmm3, %xmm6
  7403. # rnd_1: 5 - 5
  7404. xorl %ecx, %edx
  7405. movl %r8d, %ebx
  7406. addl %r14d, %r10d
  7407. vpxor %xmm8, %xmm7, %xmm5
  7408. # rnd_1: 6 - 6
  7409. xorl %r15d, %ebx
  7410. addl %edx, %r14d
  7411. andl %ebx, %eax
  7412. vpsrld $10, %xmm6, %xmm8
  7413. # rnd_1: 7 - 7
  7414. xorl %r8d, %eax
  7415. rorxl $6, %r10d, %edx
  7416. addl %eax, %r14d
  7417. # rnd_0: 0 - 0
  7418. movl %r11d, %eax
  7419. rorxl $11, %r10d, %ecx
  7420. addl 8(%rsp), %r13d
  7421. vpsrlq $19, %xmm6, %xmm7
  7422. # rnd_0: 1 - 1
  7423. xorl %edx, %ecx
  7424. xorl %r12d, %eax
  7425. rorxl $25, %r10d, %edx
  7426. vpsrlq $0x11, %xmm6, %xmm6
  7427. vpaddd %xmm0, %xmm4, %xmm4
  7428. # rnd_0: 2 - 2
  7429. andl %r10d, %eax
  7430. xorl %ecx, %edx
  7431. rorxl $13, %r14d, %ecx
  7432. vpaddd %xmm5, %xmm4, %xmm4
  7433. # rnd_0: 3 - 3
  7434. addl %edx, %r13d
  7435. rorxl $2, %r14d, %edx
  7436. xorl %r12d, %eax
  7437. vpxor %xmm7, %xmm6, %xmm6
  7438. # rnd_0: 4 - 4
  7439. xorl %edx, %ecx
  7440. rorxl $22, %r14d, %edx
  7441. addl %eax, %r13d
  7442. vpxor %xmm6, %xmm8, %xmm8
  7443. # rnd_0: 5 - 5
  7444. xorl %ecx, %edx
  7445. movl %r15d, %eax
  7446. addl %r13d, %r9d
  7447. vpshufb %xmm11, %xmm8, %xmm8
  7448. # rnd_0: 6 - 6
  7449. xorl %r14d, %eax
  7450. addl %edx, %r13d
  7451. andl %eax, %ebx
  7452. vpaddd %xmm8, %xmm4, %xmm4
  7453. # rnd_0: 7 - 7
  7454. xorl %r15d, %ebx
  7455. rorxl $6, %r9d, %edx
  7456. addl %ebx, %r13d
  7457. # rnd_1: 0 - 0
  7458. movl %r10d, %ebx
  7459. rorxl $11, %r9d, %ecx
  7460. addl 12(%rsp), %r12d
  7461. vpshufd $0x50, %xmm4, %xmm6
  7462. # rnd_1: 1 - 1
  7463. xorl %edx, %ecx
  7464. xorl %r11d, %ebx
  7465. rorxl $25, %r9d, %edx
  7466. vpsrld $10, %xmm6, %xmm9
  7467. # rnd_1: 2 - 2
  7468. andl %r9d, %ebx
  7469. xorl %ecx, %edx
  7470. rorxl $13, %r13d, %ecx
  7471. vpsrlq $19, %xmm6, %xmm7
  7472. # rnd_1: 3 - 3
  7473. addl %edx, %r12d
  7474. rorxl $2, %r13d, %edx
  7475. xorl %r11d, %ebx
  7476. vpsrlq $0x11, %xmm6, %xmm6
  7477. # rnd_1: 4 - 4
  7478. xorl %edx, %ecx
  7479. rorxl $22, %r13d, %edx
  7480. addl %ebx, %r12d
  7481. vpxor %xmm7, %xmm6, %xmm6
  7482. # rnd_1: 5 - 5
  7483. xorl %ecx, %edx
  7484. movl %r14d, %ebx
  7485. addl %r12d, %r8d
  7486. vpxor %xmm6, %xmm9, %xmm9
  7487. # rnd_1: 6 - 6
  7488. xorl %r13d, %ebx
  7489. addl %edx, %r12d
  7490. andl %ebx, %eax
  7491. vpshufb %xmm12, %xmm9, %xmm9
  7492. # rnd_1: 7 - 7
  7493. xorl %r14d, %eax
  7494. rorxl $6, %r8d, %edx
  7495. addl %eax, %r12d
  7496. vpaddd %xmm4, %xmm9, %xmm0
  7497. # msg_sched done: 0-3
  7498. # msg_sched: 4-7
  7499. # rnd_0: 0 - 0
  7500. movl %r9d, %eax
  7501. rorxl $11, %r8d, %ecx
  7502. addl 16(%rsp), %r11d
  7503. vpalignr $4, %xmm3, %xmm0, %xmm4
  7504. vpalignr $4, %xmm1, %xmm2, %xmm5
  7505. # rnd_0: 1 - 2
  7506. xorl %edx, %ecx
  7507. xorl %r10d, %eax
  7508. rorxl $25, %r8d, %edx
  7509. andl %r8d, %eax
  7510. xorl %ecx, %edx
  7511. rorxl $13, %r12d, %ecx
  7512. vpsrld $7, %xmm5, %xmm6
  7513. vpslld $25, %xmm5, %xmm7
  7514. # rnd_0: 3 - 4
  7515. addl %edx, %r11d
  7516. rorxl $2, %r12d, %edx
  7517. xorl %r10d, %eax
  7518. xorl %edx, %ecx
  7519. rorxl $22, %r12d, %edx
  7520. addl %eax, %r11d
  7521. vpsrld $3, %xmm5, %xmm8
  7522. vpor %xmm6, %xmm7, %xmm7
  7523. # rnd_0: 5 - 7
  7524. xorl %ecx, %edx
  7525. movl %r13d, %eax
  7526. addl %r11d, %r15d
  7527. xorl %r12d, %eax
  7528. addl %edx, %r11d
  7529. andl %eax, %ebx
  7530. xorl %r13d, %ebx
  7531. rorxl $6, %r15d, %edx
  7532. addl %ebx, %r11d
  7533. # rnd_1: 0 - 0
  7534. movl %r8d, %ebx
  7535. rorxl $11, %r15d, %ecx
  7536. addl 20(%rsp), %r10d
  7537. vpsrld $18, %xmm5, %xmm6
  7538. # rnd_1: 1 - 1
  7539. xorl %edx, %ecx
  7540. xorl %r9d, %ebx
  7541. rorxl $25, %r15d, %edx
  7542. vpslld $14, %xmm5, %xmm5
  7543. # rnd_1: 2 - 2
  7544. andl %r15d, %ebx
  7545. xorl %ecx, %edx
  7546. rorxl $13, %r11d, %ecx
  7547. vpxor %xmm5, %xmm7, %xmm7
  7548. # rnd_1: 3 - 3
  7549. addl %edx, %r10d
  7550. rorxl $2, %r11d, %edx
  7551. xorl %r9d, %ebx
  7552. vpxor %xmm6, %xmm7, %xmm7
  7553. # rnd_1: 4 - 4
  7554. xorl %edx, %ecx
  7555. rorxl $22, %r11d, %edx
  7556. addl %ebx, %r10d
  7557. vpshufd $0xfa, %xmm0, %xmm6
  7558. # rnd_1: 5 - 5
  7559. xorl %ecx, %edx
  7560. movl %r12d, %ebx
  7561. addl %r10d, %r14d
  7562. vpxor %xmm8, %xmm7, %xmm5
  7563. # rnd_1: 6 - 6
  7564. xorl %r11d, %ebx
  7565. addl %edx, %r10d
  7566. andl %ebx, %eax
  7567. vpsrld $10, %xmm6, %xmm8
  7568. # rnd_1: 7 - 7
  7569. xorl %r12d, %eax
  7570. rorxl $6, %r14d, %edx
  7571. addl %eax, %r10d
  7572. # rnd_0: 0 - 0
  7573. movl %r15d, %eax
  7574. rorxl $11, %r14d, %ecx
  7575. addl 24(%rsp), %r9d
  7576. vpsrlq $19, %xmm6, %xmm7
  7577. # rnd_0: 1 - 1
  7578. xorl %edx, %ecx
  7579. xorl %r8d, %eax
  7580. rorxl $25, %r14d, %edx
  7581. vpsrlq $0x11, %xmm6, %xmm6
  7582. vpaddd %xmm1, %xmm4, %xmm4
  7583. # rnd_0: 2 - 2
  7584. andl %r14d, %eax
  7585. xorl %ecx, %edx
  7586. rorxl $13, %r10d, %ecx
  7587. vpaddd %xmm5, %xmm4, %xmm4
  7588. # rnd_0: 3 - 3
  7589. addl %edx, %r9d
  7590. rorxl $2, %r10d, %edx
  7591. xorl %r8d, %eax
  7592. vpxor %xmm7, %xmm6, %xmm6
  7593. # rnd_0: 4 - 4
  7594. xorl %edx, %ecx
  7595. rorxl $22, %r10d, %edx
  7596. addl %eax, %r9d
  7597. vpxor %xmm6, %xmm8, %xmm8
  7598. # rnd_0: 5 - 5
  7599. xorl %ecx, %edx
  7600. movl %r11d, %eax
  7601. addl %r9d, %r13d
  7602. vpshufb %xmm11, %xmm8, %xmm8
  7603. # rnd_0: 6 - 6
  7604. xorl %r10d, %eax
  7605. addl %edx, %r9d
  7606. andl %eax, %ebx
  7607. vpaddd %xmm8, %xmm4, %xmm4
  7608. # rnd_0: 7 - 7
  7609. xorl %r11d, %ebx
  7610. rorxl $6, %r13d, %edx
  7611. addl %ebx, %r9d
  7612. # rnd_1: 0 - 0
  7613. movl %r14d, %ebx
  7614. rorxl $11, %r13d, %ecx
  7615. addl 28(%rsp), %r8d
  7616. vpshufd $0x50, %xmm4, %xmm6
  7617. # rnd_1: 1 - 1
  7618. xorl %edx, %ecx
  7619. xorl %r15d, %ebx
  7620. rorxl $25, %r13d, %edx
  7621. vpsrld $10, %xmm6, %xmm9
  7622. # rnd_1: 2 - 2
  7623. andl %r13d, %ebx
  7624. xorl %ecx, %edx
  7625. rorxl $13, %r9d, %ecx
  7626. vpsrlq $19, %xmm6, %xmm7
  7627. # rnd_1: 3 - 3
  7628. addl %edx, %r8d
  7629. rorxl $2, %r9d, %edx
  7630. xorl %r15d, %ebx
  7631. vpsrlq $0x11, %xmm6, %xmm6
  7632. # rnd_1: 4 - 4
  7633. xorl %edx, %ecx
  7634. rorxl $22, %r9d, %edx
  7635. addl %ebx, %r8d
  7636. vpxor %xmm7, %xmm6, %xmm6
  7637. # rnd_1: 5 - 5
  7638. xorl %ecx, %edx
  7639. movl %r10d, %ebx
  7640. addl %r8d, %r12d
  7641. vpxor %xmm6, %xmm9, %xmm9
  7642. # rnd_1: 6 - 6
  7643. xorl %r9d, %ebx
  7644. addl %edx, %r8d
  7645. andl %ebx, %eax
  7646. vpshufb %xmm12, %xmm9, %xmm9
  7647. # rnd_1: 7 - 7
  7648. xorl %r10d, %eax
  7649. rorxl $6, %r12d, %edx
  7650. addl %eax, %r8d
  7651. vpaddd %xmm4, %xmm9, %xmm1
  7652. # msg_sched done: 4-7
  7653. # msg_sched: 8-11
  7654. # rnd_0: 0 - 0
  7655. movl %r13d, %eax
  7656. rorxl $11, %r12d, %ecx
  7657. addl 32(%rsp), %r15d
  7658. vpalignr $4, %xmm0, %xmm1, %xmm4
  7659. vpalignr $4, %xmm2, %xmm3, %xmm5
  7660. # rnd_0: 1 - 2
  7661. xorl %edx, %ecx
  7662. xorl %r14d, %eax
  7663. rorxl $25, %r12d, %edx
  7664. andl %r12d, %eax
  7665. xorl %ecx, %edx
  7666. rorxl $13, %r8d, %ecx
  7667. vpsrld $7, %xmm5, %xmm6
  7668. vpslld $25, %xmm5, %xmm7
  7669. # rnd_0: 3 - 4
  7670. addl %edx, %r15d
  7671. rorxl $2, %r8d, %edx
  7672. xorl %r14d, %eax
  7673. xorl %edx, %ecx
  7674. rorxl $22, %r8d, %edx
  7675. addl %eax, %r15d
  7676. vpsrld $3, %xmm5, %xmm8
  7677. vpor %xmm6, %xmm7, %xmm7
  7678. # rnd_0: 5 - 7
  7679. xorl %ecx, %edx
  7680. movl %r9d, %eax
  7681. addl %r15d, %r11d
  7682. xorl %r8d, %eax
  7683. addl %edx, %r15d
  7684. andl %eax, %ebx
  7685. xorl %r9d, %ebx
  7686. rorxl $6, %r11d, %edx
  7687. addl %ebx, %r15d
  7688. # rnd_1: 0 - 0
  7689. movl %r12d, %ebx
  7690. rorxl $11, %r11d, %ecx
  7691. addl 36(%rsp), %r14d
  7692. vpsrld $18, %xmm5, %xmm6
  7693. # rnd_1: 1 - 1
  7694. xorl %edx, %ecx
  7695. xorl %r13d, %ebx
  7696. rorxl $25, %r11d, %edx
  7697. vpslld $14, %xmm5, %xmm5
  7698. # rnd_1: 2 - 2
  7699. andl %r11d, %ebx
  7700. xorl %ecx, %edx
  7701. rorxl $13, %r15d, %ecx
  7702. vpxor %xmm5, %xmm7, %xmm7
  7703. # rnd_1: 3 - 3
  7704. addl %edx, %r14d
  7705. rorxl $2, %r15d, %edx
  7706. xorl %r13d, %ebx
  7707. vpxor %xmm6, %xmm7, %xmm7
  7708. # rnd_1: 4 - 4
  7709. xorl %edx, %ecx
  7710. rorxl $22, %r15d, %edx
  7711. addl %ebx, %r14d
  7712. vpshufd $0xfa, %xmm1, %xmm6
  7713. # rnd_1: 5 - 5
  7714. xorl %ecx, %edx
  7715. movl %r8d, %ebx
  7716. addl %r14d, %r10d
  7717. vpxor %xmm8, %xmm7, %xmm5
  7718. # rnd_1: 6 - 6
  7719. xorl %r15d, %ebx
  7720. addl %edx, %r14d
  7721. andl %ebx, %eax
  7722. vpsrld $10, %xmm6, %xmm8
  7723. # rnd_1: 7 - 7
  7724. xorl %r8d, %eax
  7725. rorxl $6, %r10d, %edx
  7726. addl %eax, %r14d
  7727. # rnd_0: 0 - 0
  7728. movl %r11d, %eax
  7729. rorxl $11, %r10d, %ecx
  7730. addl 40(%rsp), %r13d
  7731. vpsrlq $19, %xmm6, %xmm7
  7732. # rnd_0: 1 - 1
  7733. xorl %edx, %ecx
  7734. xorl %r12d, %eax
  7735. rorxl $25, %r10d, %edx
  7736. vpsrlq $0x11, %xmm6, %xmm6
  7737. vpaddd %xmm2, %xmm4, %xmm4
  7738. # rnd_0: 2 - 2
  7739. andl %r10d, %eax
  7740. xorl %ecx, %edx
  7741. rorxl $13, %r14d, %ecx
  7742. vpaddd %xmm5, %xmm4, %xmm4
  7743. # rnd_0: 3 - 3
  7744. addl %edx, %r13d
  7745. rorxl $2, %r14d, %edx
  7746. xorl %r12d, %eax
  7747. vpxor %xmm7, %xmm6, %xmm6
  7748. # rnd_0: 4 - 4
  7749. xorl %edx, %ecx
  7750. rorxl $22, %r14d, %edx
  7751. addl %eax, %r13d
  7752. vpxor %xmm6, %xmm8, %xmm8
  7753. # rnd_0: 5 - 5
  7754. xorl %ecx, %edx
  7755. movl %r15d, %eax
  7756. addl %r13d, %r9d
  7757. vpshufb %xmm11, %xmm8, %xmm8
  7758. # rnd_0: 6 - 6
  7759. xorl %r14d, %eax
  7760. addl %edx, %r13d
  7761. andl %eax, %ebx
  7762. vpaddd %xmm8, %xmm4, %xmm4
  7763. # rnd_0: 7 - 7
  7764. xorl %r15d, %ebx
  7765. rorxl $6, %r9d, %edx
  7766. addl %ebx, %r13d
  7767. # rnd_1: 0 - 0
  7768. movl %r10d, %ebx
  7769. rorxl $11, %r9d, %ecx
  7770. addl 44(%rsp), %r12d
  7771. vpshufd $0x50, %xmm4, %xmm6
  7772. # rnd_1: 1 - 1
  7773. xorl %edx, %ecx
  7774. xorl %r11d, %ebx
  7775. rorxl $25, %r9d, %edx
  7776. vpsrld $10, %xmm6, %xmm9
  7777. # rnd_1: 2 - 2
  7778. andl %r9d, %ebx
  7779. xorl %ecx, %edx
  7780. rorxl $13, %r13d, %ecx
  7781. vpsrlq $19, %xmm6, %xmm7
  7782. # rnd_1: 3 - 3
  7783. addl %edx, %r12d
  7784. rorxl $2, %r13d, %edx
  7785. xorl %r11d, %ebx
  7786. vpsrlq $0x11, %xmm6, %xmm6
  7787. # rnd_1: 4 - 4
  7788. xorl %edx, %ecx
  7789. rorxl $22, %r13d, %edx
  7790. addl %ebx, %r12d
  7791. vpxor %xmm7, %xmm6, %xmm6
  7792. # rnd_1: 5 - 5
  7793. xorl %ecx, %edx
  7794. movl %r14d, %ebx
  7795. addl %r12d, %r8d
  7796. vpxor %xmm6, %xmm9, %xmm9
  7797. # rnd_1: 6 - 6
  7798. xorl %r13d, %ebx
  7799. addl %edx, %r12d
  7800. andl %ebx, %eax
  7801. vpshufb %xmm12, %xmm9, %xmm9
  7802. # rnd_1: 7 - 7
  7803. xorl %r14d, %eax
  7804. rorxl $6, %r8d, %edx
  7805. addl %eax, %r12d
  7806. vpaddd %xmm4, %xmm9, %xmm2
  7807. # msg_sched done: 8-11
  7808. # msg_sched: 12-15
  7809. # rnd_0: 0 - 0
  7810. movl %r9d, %eax
  7811. rorxl $11, %r8d, %ecx
  7812. addl 48(%rsp), %r11d
  7813. vpalignr $4, %xmm1, %xmm2, %xmm4
  7814. vpalignr $4, %xmm3, %xmm0, %xmm5
  7815. # rnd_0: 1 - 2
  7816. xorl %edx, %ecx
  7817. xorl %r10d, %eax
  7818. rorxl $25, %r8d, %edx
  7819. andl %r8d, %eax
  7820. xorl %ecx, %edx
  7821. rorxl $13, %r12d, %ecx
  7822. vpsrld $7, %xmm5, %xmm6
  7823. vpslld $25, %xmm5, %xmm7
  7824. # rnd_0: 3 - 4
  7825. addl %edx, %r11d
  7826. rorxl $2, %r12d, %edx
  7827. xorl %r10d, %eax
  7828. xorl %edx, %ecx
  7829. rorxl $22, %r12d, %edx
  7830. addl %eax, %r11d
  7831. vpsrld $3, %xmm5, %xmm8
  7832. vpor %xmm6, %xmm7, %xmm7
  7833. # rnd_0: 5 - 7
  7834. xorl %ecx, %edx
  7835. movl %r13d, %eax
  7836. addl %r11d, %r15d
  7837. xorl %r12d, %eax
  7838. addl %edx, %r11d
  7839. andl %eax, %ebx
  7840. xorl %r13d, %ebx
  7841. rorxl $6, %r15d, %edx
  7842. addl %ebx, %r11d
  7843. # rnd_1: 0 - 0
  7844. movl %r8d, %ebx
  7845. rorxl $11, %r15d, %ecx
  7846. addl 52(%rsp), %r10d
  7847. vpsrld $18, %xmm5, %xmm6
  7848. # rnd_1: 1 - 1
  7849. xorl %edx, %ecx
  7850. xorl %r9d, %ebx
  7851. rorxl $25, %r15d, %edx
  7852. vpslld $14, %xmm5, %xmm5
  7853. # rnd_1: 2 - 2
  7854. andl %r15d, %ebx
  7855. xorl %ecx, %edx
  7856. rorxl $13, %r11d, %ecx
  7857. vpxor %xmm5, %xmm7, %xmm7
  7858. # rnd_1: 3 - 3
  7859. addl %edx, %r10d
  7860. rorxl $2, %r11d, %edx
  7861. xorl %r9d, %ebx
  7862. vpxor %xmm6, %xmm7, %xmm7
  7863. # rnd_1: 4 - 4
  7864. xorl %edx, %ecx
  7865. rorxl $22, %r11d, %edx
  7866. addl %ebx, %r10d
  7867. vpshufd $0xfa, %xmm2, %xmm6
  7868. # rnd_1: 5 - 5
  7869. xorl %ecx, %edx
  7870. movl %r12d, %ebx
  7871. addl %r10d, %r14d
  7872. vpxor %xmm8, %xmm7, %xmm5
  7873. # rnd_1: 6 - 6
  7874. xorl %r11d, %ebx
  7875. addl %edx, %r10d
  7876. andl %ebx, %eax
  7877. vpsrld $10, %xmm6, %xmm8
  7878. # rnd_1: 7 - 7
  7879. xorl %r12d, %eax
  7880. rorxl $6, %r14d, %edx
  7881. addl %eax, %r10d
  7882. # rnd_0: 0 - 0
  7883. movl %r15d, %eax
  7884. rorxl $11, %r14d, %ecx
  7885. addl 56(%rsp), %r9d
  7886. vpsrlq $19, %xmm6, %xmm7
  7887. # rnd_0: 1 - 1
  7888. xorl %edx, %ecx
  7889. xorl %r8d, %eax
  7890. rorxl $25, %r14d, %edx
  7891. vpsrlq $0x11, %xmm6, %xmm6
  7892. vpaddd %xmm3, %xmm4, %xmm4
  7893. # rnd_0: 2 - 2
  7894. andl %r14d, %eax
  7895. xorl %ecx, %edx
  7896. rorxl $13, %r10d, %ecx
  7897. vpaddd %xmm5, %xmm4, %xmm4
  7898. # rnd_0: 3 - 3
  7899. addl %edx, %r9d
  7900. rorxl $2, %r10d, %edx
  7901. xorl %r8d, %eax
  7902. vpxor %xmm7, %xmm6, %xmm6
  7903. # rnd_0: 4 - 4
  7904. xorl %edx, %ecx
  7905. rorxl $22, %r10d, %edx
  7906. addl %eax, %r9d
  7907. vpxor %xmm6, %xmm8, %xmm8
  7908. # rnd_0: 5 - 5
  7909. xorl %ecx, %edx
  7910. movl %r11d, %eax
  7911. addl %r9d, %r13d
  7912. vpshufb %xmm11, %xmm8, %xmm8
  7913. # rnd_0: 6 - 6
  7914. xorl %r10d, %eax
  7915. addl %edx, %r9d
  7916. andl %eax, %ebx
  7917. vpaddd %xmm8, %xmm4, %xmm4
  7918. # rnd_0: 7 - 7
  7919. xorl %r11d, %ebx
  7920. rorxl $6, %r13d, %edx
  7921. addl %ebx, %r9d
  7922. # rnd_1: 0 - 0
  7923. movl %r14d, %ebx
  7924. rorxl $11, %r13d, %ecx
  7925. addl 60(%rsp), %r8d
  7926. vpshufd $0x50, %xmm4, %xmm6
  7927. # rnd_1: 1 - 1
  7928. xorl %edx, %ecx
  7929. xorl %r15d, %ebx
  7930. rorxl $25, %r13d, %edx
  7931. vpsrld $10, %xmm6, %xmm9
  7932. # rnd_1: 2 - 2
  7933. andl %r13d, %ebx
  7934. xorl %ecx, %edx
  7935. rorxl $13, %r9d, %ecx
  7936. vpsrlq $19, %xmm6, %xmm7
  7937. # rnd_1: 3 - 3
  7938. addl %edx, %r8d
  7939. rorxl $2, %r9d, %edx
  7940. xorl %r15d, %ebx
  7941. vpsrlq $0x11, %xmm6, %xmm6
  7942. # rnd_1: 4 - 4
  7943. xorl %edx, %ecx
  7944. rorxl $22, %r9d, %edx
  7945. addl %ebx, %r8d
  7946. vpxor %xmm7, %xmm6, %xmm6
  7947. # rnd_1: 5 - 5
  7948. xorl %ecx, %edx
  7949. movl %r10d, %ebx
  7950. addl %r8d, %r12d
  7951. vpxor %xmm6, %xmm9, %xmm9
  7952. # rnd_1: 6 - 6
  7953. xorl %r9d, %ebx
  7954. addl %edx, %r8d
  7955. andl %ebx, %eax
  7956. vpshufb %xmm12, %xmm9, %xmm9
  7957. # rnd_1: 7 - 7
  7958. xorl %r10d, %eax
  7959. rorxl $6, %r12d, %edx
  7960. addl %eax, %r8d
  7961. vpaddd %xmm4, %xmm9, %xmm3
  7962. # msg_sched done: 12-15
  7963. # set_w_k_xfer_4: 4
  7964. vpaddd 64+L_avx1_rorx_sha256_k(%rip), %xmm0, %xmm4
  7965. vpaddd 80+L_avx1_rorx_sha256_k(%rip), %xmm1, %xmm5
  7966. vmovdqu %xmm4, (%rsp)
  7967. vmovdqu %xmm5, 16(%rsp)
  7968. vpaddd 96+L_avx1_rorx_sha256_k(%rip), %xmm2, %xmm6
  7969. vpaddd 112+L_avx1_rorx_sha256_k(%rip), %xmm3, %xmm7
  7970. vmovdqu %xmm6, 32(%rsp)
  7971. vmovdqu %xmm7, 48(%rsp)
  7972. # msg_sched: 0-3
  7973. # rnd_0: 0 - 0
  7974. movl %r13d, %eax
  7975. rorxl $11, %r12d, %ecx
  7976. addl (%rsp), %r15d
  7977. vpalignr $4, %xmm2, %xmm3, %xmm4
  7978. vpalignr $4, %xmm0, %xmm1, %xmm5
  7979. # rnd_0: 1 - 2
  7980. xorl %edx, %ecx
  7981. xorl %r14d, %eax
  7982. rorxl $25, %r12d, %edx
  7983. andl %r12d, %eax
  7984. xorl %ecx, %edx
  7985. rorxl $13, %r8d, %ecx
  7986. vpsrld $7, %xmm5, %xmm6
  7987. vpslld $25, %xmm5, %xmm7
  7988. # rnd_0: 3 - 4
  7989. addl %edx, %r15d
  7990. rorxl $2, %r8d, %edx
  7991. xorl %r14d, %eax
  7992. xorl %edx, %ecx
  7993. rorxl $22, %r8d, %edx
  7994. addl %eax, %r15d
  7995. vpsrld $3, %xmm5, %xmm8
  7996. vpor %xmm6, %xmm7, %xmm7
  7997. # rnd_0: 5 - 7
  7998. xorl %ecx, %edx
  7999. movl %r9d, %eax
  8000. addl %r15d, %r11d
  8001. xorl %r8d, %eax
  8002. addl %edx, %r15d
  8003. andl %eax, %ebx
  8004. xorl %r9d, %ebx
  8005. rorxl $6, %r11d, %edx
  8006. addl %ebx, %r15d
  8007. # rnd_1: 0 - 0
  8008. movl %r12d, %ebx
  8009. rorxl $11, %r11d, %ecx
  8010. addl 4(%rsp), %r14d
  8011. vpsrld $18, %xmm5, %xmm6
  8012. # rnd_1: 1 - 1
  8013. xorl %edx, %ecx
  8014. xorl %r13d, %ebx
  8015. rorxl $25, %r11d, %edx
  8016. vpslld $14, %xmm5, %xmm5
  8017. # rnd_1: 2 - 2
  8018. andl %r11d, %ebx
  8019. xorl %ecx, %edx
  8020. rorxl $13, %r15d, %ecx
  8021. vpxor %xmm5, %xmm7, %xmm7
  8022. # rnd_1: 3 - 3
  8023. addl %edx, %r14d
  8024. rorxl $2, %r15d, %edx
  8025. xorl %r13d, %ebx
  8026. vpxor %xmm6, %xmm7, %xmm7
  8027. # rnd_1: 4 - 4
  8028. xorl %edx, %ecx
  8029. rorxl $22, %r15d, %edx
  8030. addl %ebx, %r14d
  8031. vpshufd $0xfa, %xmm3, %xmm6
  8032. # rnd_1: 5 - 5
  8033. xorl %ecx, %edx
  8034. movl %r8d, %ebx
  8035. addl %r14d, %r10d
  8036. vpxor %xmm8, %xmm7, %xmm5
  8037. # rnd_1: 6 - 6
  8038. xorl %r15d, %ebx
  8039. addl %edx, %r14d
  8040. andl %ebx, %eax
  8041. vpsrld $10, %xmm6, %xmm8
  8042. # rnd_1: 7 - 7
  8043. xorl %r8d, %eax
  8044. rorxl $6, %r10d, %edx
  8045. addl %eax, %r14d
  8046. # rnd_0: 0 - 0
  8047. movl %r11d, %eax
  8048. rorxl $11, %r10d, %ecx
  8049. addl 8(%rsp), %r13d
  8050. vpsrlq $19, %xmm6, %xmm7
  8051. # rnd_0: 1 - 1
  8052. xorl %edx, %ecx
  8053. xorl %r12d, %eax
  8054. rorxl $25, %r10d, %edx
  8055. vpsrlq $0x11, %xmm6, %xmm6
  8056. vpaddd %xmm0, %xmm4, %xmm4
  8057. # rnd_0: 2 - 2
  8058. andl %r10d, %eax
  8059. xorl %ecx, %edx
  8060. rorxl $13, %r14d, %ecx
  8061. vpaddd %xmm5, %xmm4, %xmm4
  8062. # rnd_0: 3 - 3
  8063. addl %edx, %r13d
  8064. rorxl $2, %r14d, %edx
  8065. xorl %r12d, %eax
  8066. vpxor %xmm7, %xmm6, %xmm6
  8067. # rnd_0: 4 - 4
  8068. xorl %edx, %ecx
  8069. rorxl $22, %r14d, %edx
  8070. addl %eax, %r13d
  8071. vpxor %xmm6, %xmm8, %xmm8
  8072. # rnd_0: 5 - 5
  8073. xorl %ecx, %edx
  8074. movl %r15d, %eax
  8075. addl %r13d, %r9d
  8076. vpshufb %xmm11, %xmm8, %xmm8
  8077. # rnd_0: 6 - 6
  8078. xorl %r14d, %eax
  8079. addl %edx, %r13d
  8080. andl %eax, %ebx
  8081. vpaddd %xmm8, %xmm4, %xmm4
  8082. # rnd_0: 7 - 7
  8083. xorl %r15d, %ebx
  8084. rorxl $6, %r9d, %edx
  8085. addl %ebx, %r13d
  8086. # rnd_1: 0 - 0
  8087. movl %r10d, %ebx
  8088. rorxl $11, %r9d, %ecx
  8089. addl 12(%rsp), %r12d
  8090. vpshufd $0x50, %xmm4, %xmm6
  8091. # rnd_1: 1 - 1
  8092. xorl %edx, %ecx
  8093. xorl %r11d, %ebx
  8094. rorxl $25, %r9d, %edx
  8095. vpsrld $10, %xmm6, %xmm9
  8096. # rnd_1: 2 - 2
  8097. andl %r9d, %ebx
  8098. xorl %ecx, %edx
  8099. rorxl $13, %r13d, %ecx
  8100. vpsrlq $19, %xmm6, %xmm7
  8101. # rnd_1: 3 - 3
  8102. addl %edx, %r12d
  8103. rorxl $2, %r13d, %edx
  8104. xorl %r11d, %ebx
  8105. vpsrlq $0x11, %xmm6, %xmm6
  8106. # rnd_1: 4 - 4
  8107. xorl %edx, %ecx
  8108. rorxl $22, %r13d, %edx
  8109. addl %ebx, %r12d
  8110. vpxor %xmm7, %xmm6, %xmm6
  8111. # rnd_1: 5 - 5
  8112. xorl %ecx, %edx
  8113. movl %r14d, %ebx
  8114. addl %r12d, %r8d
  8115. vpxor %xmm6, %xmm9, %xmm9
  8116. # rnd_1: 6 - 6
  8117. xorl %r13d, %ebx
  8118. addl %edx, %r12d
  8119. andl %ebx, %eax
  8120. vpshufb %xmm12, %xmm9, %xmm9
  8121. # rnd_1: 7 - 7
  8122. xorl %r14d, %eax
  8123. rorxl $6, %r8d, %edx
  8124. addl %eax, %r12d
  8125. vpaddd %xmm4, %xmm9, %xmm0
  8126. # msg_sched done: 0-3
  8127. # msg_sched: 4-7
  8128. # rnd_0: 0 - 0
  8129. movl %r9d, %eax
  8130. rorxl $11, %r8d, %ecx
  8131. addl 16(%rsp), %r11d
  8132. vpalignr $4, %xmm3, %xmm0, %xmm4
  8133. vpalignr $4, %xmm1, %xmm2, %xmm5
  8134. # rnd_0: 1 - 2
  8135. xorl %edx, %ecx
  8136. xorl %r10d, %eax
  8137. rorxl $25, %r8d, %edx
  8138. andl %r8d, %eax
  8139. xorl %ecx, %edx
  8140. rorxl $13, %r12d, %ecx
  8141. vpsrld $7, %xmm5, %xmm6
  8142. vpslld $25, %xmm5, %xmm7
  8143. # rnd_0: 3 - 4
  8144. addl %edx, %r11d
  8145. rorxl $2, %r12d, %edx
  8146. xorl %r10d, %eax
  8147. xorl %edx, %ecx
  8148. rorxl $22, %r12d, %edx
  8149. addl %eax, %r11d
  8150. vpsrld $3, %xmm5, %xmm8
  8151. vpor %xmm6, %xmm7, %xmm7
  8152. # rnd_0: 5 - 7
  8153. xorl %ecx, %edx
  8154. movl %r13d, %eax
  8155. addl %r11d, %r15d
  8156. xorl %r12d, %eax
  8157. addl %edx, %r11d
  8158. andl %eax, %ebx
  8159. xorl %r13d, %ebx
  8160. rorxl $6, %r15d, %edx
  8161. addl %ebx, %r11d
  8162. # rnd_1: 0 - 0
  8163. movl %r8d, %ebx
  8164. rorxl $11, %r15d, %ecx
  8165. addl 20(%rsp), %r10d
  8166. vpsrld $18, %xmm5, %xmm6
  8167. # rnd_1: 1 - 1
  8168. xorl %edx, %ecx
  8169. xorl %r9d, %ebx
  8170. rorxl $25, %r15d, %edx
  8171. vpslld $14, %xmm5, %xmm5
  8172. # rnd_1: 2 - 2
  8173. andl %r15d, %ebx
  8174. xorl %ecx, %edx
  8175. rorxl $13, %r11d, %ecx
  8176. vpxor %xmm5, %xmm7, %xmm7
  8177. # rnd_1: 3 - 3
  8178. addl %edx, %r10d
  8179. rorxl $2, %r11d, %edx
  8180. xorl %r9d, %ebx
  8181. vpxor %xmm6, %xmm7, %xmm7
  8182. # rnd_1: 4 - 4
  8183. xorl %edx, %ecx
  8184. rorxl $22, %r11d, %edx
  8185. addl %ebx, %r10d
  8186. vpshufd $0xfa, %xmm0, %xmm6
  8187. # rnd_1: 5 - 5
  8188. xorl %ecx, %edx
  8189. movl %r12d, %ebx
  8190. addl %r10d, %r14d
  8191. vpxor %xmm8, %xmm7, %xmm5
  8192. # rnd_1: 6 - 6
  8193. xorl %r11d, %ebx
  8194. addl %edx, %r10d
  8195. andl %ebx, %eax
  8196. vpsrld $10, %xmm6, %xmm8
  8197. # rnd_1: 7 - 7
  8198. xorl %r12d, %eax
  8199. rorxl $6, %r14d, %edx
  8200. addl %eax, %r10d
  8201. # rnd_0: 0 - 0
  8202. movl %r15d, %eax
  8203. rorxl $11, %r14d, %ecx
  8204. addl 24(%rsp), %r9d
  8205. vpsrlq $19, %xmm6, %xmm7
  8206. # rnd_0: 1 - 1
  8207. xorl %edx, %ecx
  8208. xorl %r8d, %eax
  8209. rorxl $25, %r14d, %edx
  8210. vpsrlq $0x11, %xmm6, %xmm6
  8211. vpaddd %xmm1, %xmm4, %xmm4
  8212. # rnd_0: 2 - 2
  8213. andl %r14d, %eax
  8214. xorl %ecx, %edx
  8215. rorxl $13, %r10d, %ecx
  8216. vpaddd %xmm5, %xmm4, %xmm4
  8217. # rnd_0: 3 - 3
  8218. addl %edx, %r9d
  8219. rorxl $2, %r10d, %edx
  8220. xorl %r8d, %eax
  8221. vpxor %xmm7, %xmm6, %xmm6
  8222. # rnd_0: 4 - 4
  8223. xorl %edx, %ecx
  8224. rorxl $22, %r10d, %edx
  8225. addl %eax, %r9d
  8226. vpxor %xmm6, %xmm8, %xmm8
  8227. # rnd_0: 5 - 5
  8228. xorl %ecx, %edx
  8229. movl %r11d, %eax
  8230. addl %r9d, %r13d
  8231. vpshufb %xmm11, %xmm8, %xmm8
  8232. # rnd_0: 6 - 6
  8233. xorl %r10d, %eax
  8234. addl %edx, %r9d
  8235. andl %eax, %ebx
  8236. vpaddd %xmm8, %xmm4, %xmm4
  8237. # rnd_0: 7 - 7
  8238. xorl %r11d, %ebx
  8239. rorxl $6, %r13d, %edx
  8240. addl %ebx, %r9d
  8241. # rnd_1: 0 - 0
  8242. movl %r14d, %ebx
  8243. rorxl $11, %r13d, %ecx
  8244. addl 28(%rsp), %r8d
  8245. vpshufd $0x50, %xmm4, %xmm6
  8246. # rnd_1: 1 - 1
  8247. xorl %edx, %ecx
  8248. xorl %r15d, %ebx
  8249. rorxl $25, %r13d, %edx
  8250. vpsrld $10, %xmm6, %xmm9
  8251. # rnd_1: 2 - 2
  8252. andl %r13d, %ebx
  8253. xorl %ecx, %edx
  8254. rorxl $13, %r9d, %ecx
  8255. vpsrlq $19, %xmm6, %xmm7
  8256. # rnd_1: 3 - 3
  8257. addl %edx, %r8d
  8258. rorxl $2, %r9d, %edx
  8259. xorl %r15d, %ebx
  8260. vpsrlq $0x11, %xmm6, %xmm6
  8261. # rnd_1: 4 - 4
  8262. xorl %edx, %ecx
  8263. rorxl $22, %r9d, %edx
  8264. addl %ebx, %r8d
  8265. vpxor %xmm7, %xmm6, %xmm6
  8266. # rnd_1: 5 - 5
  8267. xorl %ecx, %edx
  8268. movl %r10d, %ebx
  8269. addl %r8d, %r12d
  8270. vpxor %xmm6, %xmm9, %xmm9
  8271. # rnd_1: 6 - 6
  8272. xorl %r9d, %ebx
  8273. addl %edx, %r8d
  8274. andl %ebx, %eax
  8275. vpshufb %xmm12, %xmm9, %xmm9
  8276. # rnd_1: 7 - 7
  8277. xorl %r10d, %eax
  8278. rorxl $6, %r12d, %edx
  8279. addl %eax, %r8d
  8280. vpaddd %xmm4, %xmm9, %xmm1
  8281. # msg_sched done: 4-7
  8282. # msg_sched: 8-11
  8283. # rnd_0: 0 - 0
  8284. movl %r13d, %eax
  8285. rorxl $11, %r12d, %ecx
  8286. addl 32(%rsp), %r15d
  8287. vpalignr $4, %xmm0, %xmm1, %xmm4
  8288. vpalignr $4, %xmm2, %xmm3, %xmm5
  8289. # rnd_0: 1 - 2
  8290. xorl %edx, %ecx
  8291. xorl %r14d, %eax
  8292. rorxl $25, %r12d, %edx
  8293. andl %r12d, %eax
  8294. xorl %ecx, %edx
  8295. rorxl $13, %r8d, %ecx
  8296. vpsrld $7, %xmm5, %xmm6
  8297. vpslld $25, %xmm5, %xmm7
  8298. # rnd_0: 3 - 4
  8299. addl %edx, %r15d
  8300. rorxl $2, %r8d, %edx
  8301. xorl %r14d, %eax
  8302. xorl %edx, %ecx
  8303. rorxl $22, %r8d, %edx
  8304. addl %eax, %r15d
  8305. vpsrld $3, %xmm5, %xmm8
  8306. vpor %xmm6, %xmm7, %xmm7
  8307. # rnd_0: 5 - 7
  8308. xorl %ecx, %edx
  8309. movl %r9d, %eax
  8310. addl %r15d, %r11d
  8311. xorl %r8d, %eax
  8312. addl %edx, %r15d
  8313. andl %eax, %ebx
  8314. xorl %r9d, %ebx
  8315. rorxl $6, %r11d, %edx
  8316. addl %ebx, %r15d
  8317. # rnd_1: 0 - 0
  8318. movl %r12d, %ebx
  8319. rorxl $11, %r11d, %ecx
  8320. addl 36(%rsp), %r14d
  8321. vpsrld $18, %xmm5, %xmm6
  8322. # rnd_1: 1 - 1
  8323. xorl %edx, %ecx
  8324. xorl %r13d, %ebx
  8325. rorxl $25, %r11d, %edx
  8326. vpslld $14, %xmm5, %xmm5
  8327. # rnd_1: 2 - 2
  8328. andl %r11d, %ebx
  8329. xorl %ecx, %edx
  8330. rorxl $13, %r15d, %ecx
  8331. vpxor %xmm5, %xmm7, %xmm7
  8332. # rnd_1: 3 - 3
  8333. addl %edx, %r14d
  8334. rorxl $2, %r15d, %edx
  8335. xorl %r13d, %ebx
  8336. vpxor %xmm6, %xmm7, %xmm7
  8337. # rnd_1: 4 - 4
  8338. xorl %edx, %ecx
  8339. rorxl $22, %r15d, %edx
  8340. addl %ebx, %r14d
  8341. vpshufd $0xfa, %xmm1, %xmm6
  8342. # rnd_1: 5 - 5
  8343. xorl %ecx, %edx
  8344. movl %r8d, %ebx
  8345. addl %r14d, %r10d
  8346. vpxor %xmm8, %xmm7, %xmm5
  8347. # rnd_1: 6 - 6
  8348. xorl %r15d, %ebx
  8349. addl %edx, %r14d
  8350. andl %ebx, %eax
  8351. vpsrld $10, %xmm6, %xmm8
  8352. # rnd_1: 7 - 7
  8353. xorl %r8d, %eax
  8354. rorxl $6, %r10d, %edx
  8355. addl %eax, %r14d
  8356. # rnd_0: 0 - 0
  8357. movl %r11d, %eax
  8358. rorxl $11, %r10d, %ecx
  8359. addl 40(%rsp), %r13d
  8360. vpsrlq $19, %xmm6, %xmm7
  8361. # rnd_0: 1 - 1
  8362. xorl %edx, %ecx
  8363. xorl %r12d, %eax
  8364. rorxl $25, %r10d, %edx
  8365. vpsrlq $0x11, %xmm6, %xmm6
  8366. vpaddd %xmm2, %xmm4, %xmm4
  8367. # rnd_0: 2 - 2
  8368. andl %r10d, %eax
  8369. xorl %ecx, %edx
  8370. rorxl $13, %r14d, %ecx
  8371. vpaddd %xmm5, %xmm4, %xmm4
  8372. # rnd_0: 3 - 3
  8373. addl %edx, %r13d
  8374. rorxl $2, %r14d, %edx
  8375. xorl %r12d, %eax
  8376. vpxor %xmm7, %xmm6, %xmm6
  8377. # rnd_0: 4 - 4
  8378. xorl %edx, %ecx
  8379. rorxl $22, %r14d, %edx
  8380. addl %eax, %r13d
  8381. vpxor %xmm6, %xmm8, %xmm8
  8382. # rnd_0: 5 - 5
  8383. xorl %ecx, %edx
  8384. movl %r15d, %eax
  8385. addl %r13d, %r9d
  8386. vpshufb %xmm11, %xmm8, %xmm8
  8387. # rnd_0: 6 - 6
  8388. xorl %r14d, %eax
  8389. addl %edx, %r13d
  8390. andl %eax, %ebx
  8391. vpaddd %xmm8, %xmm4, %xmm4
  8392. # rnd_0: 7 - 7
  8393. xorl %r15d, %ebx
  8394. rorxl $6, %r9d, %edx
  8395. addl %ebx, %r13d
  8396. # rnd_1: 0 - 0
  8397. movl %r10d, %ebx
  8398. rorxl $11, %r9d, %ecx
  8399. addl 44(%rsp), %r12d
  8400. vpshufd $0x50, %xmm4, %xmm6
  8401. # rnd_1: 1 - 1
  8402. xorl %edx, %ecx
  8403. xorl %r11d, %ebx
  8404. rorxl $25, %r9d, %edx
  8405. vpsrld $10, %xmm6, %xmm9
  8406. # rnd_1: 2 - 2
  8407. andl %r9d, %ebx
  8408. xorl %ecx, %edx
  8409. rorxl $13, %r13d, %ecx
  8410. vpsrlq $19, %xmm6, %xmm7
  8411. # rnd_1: 3 - 3
  8412. addl %edx, %r12d
  8413. rorxl $2, %r13d, %edx
  8414. xorl %r11d, %ebx
  8415. vpsrlq $0x11, %xmm6, %xmm6
  8416. # rnd_1: 4 - 4
  8417. xorl %edx, %ecx
  8418. rorxl $22, %r13d, %edx
  8419. addl %ebx, %r12d
  8420. vpxor %xmm7, %xmm6, %xmm6
  8421. # rnd_1: 5 - 5
  8422. xorl %ecx, %edx
  8423. movl %r14d, %ebx
  8424. addl %r12d, %r8d
  8425. vpxor %xmm6, %xmm9, %xmm9
  8426. # rnd_1: 6 - 6
  8427. xorl %r13d, %ebx
  8428. addl %edx, %r12d
  8429. andl %ebx, %eax
  8430. vpshufb %xmm12, %xmm9, %xmm9
  8431. # rnd_1: 7 - 7
  8432. xorl %r14d, %eax
  8433. rorxl $6, %r8d, %edx
  8434. addl %eax, %r12d
  8435. vpaddd %xmm4, %xmm9, %xmm2
  8436. # msg_sched done: 8-11
  8437. # msg_sched: 12-15
  8438. # rnd_0: 0 - 0
  8439. movl %r9d, %eax
  8440. rorxl $11, %r8d, %ecx
  8441. addl 48(%rsp), %r11d
  8442. vpalignr $4, %xmm1, %xmm2, %xmm4
  8443. vpalignr $4, %xmm3, %xmm0, %xmm5
  8444. # rnd_0: 1 - 2
  8445. xorl %edx, %ecx
  8446. xorl %r10d, %eax
  8447. rorxl $25, %r8d, %edx
  8448. andl %r8d, %eax
  8449. xorl %ecx, %edx
  8450. rorxl $13, %r12d, %ecx
  8451. vpsrld $7, %xmm5, %xmm6
  8452. vpslld $25, %xmm5, %xmm7
  8453. # rnd_0: 3 - 4
  8454. addl %edx, %r11d
  8455. rorxl $2, %r12d, %edx
  8456. xorl %r10d, %eax
  8457. xorl %edx, %ecx
  8458. rorxl $22, %r12d, %edx
  8459. addl %eax, %r11d
  8460. vpsrld $3, %xmm5, %xmm8
  8461. vpor %xmm6, %xmm7, %xmm7
  8462. # rnd_0: 5 - 7
  8463. xorl %ecx, %edx
  8464. movl %r13d, %eax
  8465. addl %r11d, %r15d
  8466. xorl %r12d, %eax
  8467. addl %edx, %r11d
  8468. andl %eax, %ebx
  8469. xorl %r13d, %ebx
  8470. rorxl $6, %r15d, %edx
  8471. addl %ebx, %r11d
  8472. # rnd_1: 0 - 0
  8473. movl %r8d, %ebx
  8474. rorxl $11, %r15d, %ecx
  8475. addl 52(%rsp), %r10d
  8476. vpsrld $18, %xmm5, %xmm6
  8477. # rnd_1: 1 - 1
  8478. xorl %edx, %ecx
  8479. xorl %r9d, %ebx
  8480. rorxl $25, %r15d, %edx
  8481. vpslld $14, %xmm5, %xmm5
  8482. # rnd_1: 2 - 2
  8483. andl %r15d, %ebx
  8484. xorl %ecx, %edx
  8485. rorxl $13, %r11d, %ecx
  8486. vpxor %xmm5, %xmm7, %xmm7
  8487. # rnd_1: 3 - 3
  8488. addl %edx, %r10d
  8489. rorxl $2, %r11d, %edx
  8490. xorl %r9d, %ebx
  8491. vpxor %xmm6, %xmm7, %xmm7
  8492. # rnd_1: 4 - 4
  8493. xorl %edx, %ecx
  8494. rorxl $22, %r11d, %edx
  8495. addl %ebx, %r10d
  8496. vpshufd $0xfa, %xmm2, %xmm6
  8497. # rnd_1: 5 - 5
  8498. xorl %ecx, %edx
  8499. movl %r12d, %ebx
  8500. addl %r10d, %r14d
  8501. vpxor %xmm8, %xmm7, %xmm5
  8502. # rnd_1: 6 - 6
  8503. xorl %r11d, %ebx
  8504. addl %edx, %r10d
  8505. andl %ebx, %eax
  8506. vpsrld $10, %xmm6, %xmm8
  8507. # rnd_1: 7 - 7
  8508. xorl %r12d, %eax
  8509. rorxl $6, %r14d, %edx
  8510. addl %eax, %r10d
  8511. # rnd_0: 0 - 0
  8512. movl %r15d, %eax
  8513. rorxl $11, %r14d, %ecx
  8514. addl 56(%rsp), %r9d
  8515. vpsrlq $19, %xmm6, %xmm7
  8516. # rnd_0: 1 - 1
  8517. xorl %edx, %ecx
  8518. xorl %r8d, %eax
  8519. rorxl $25, %r14d, %edx
  8520. vpsrlq $0x11, %xmm6, %xmm6
  8521. vpaddd %xmm3, %xmm4, %xmm4
  8522. # rnd_0: 2 - 2
  8523. andl %r14d, %eax
  8524. xorl %ecx, %edx
  8525. rorxl $13, %r10d, %ecx
  8526. vpaddd %xmm5, %xmm4, %xmm4
  8527. # rnd_0: 3 - 3
  8528. addl %edx, %r9d
  8529. rorxl $2, %r10d, %edx
  8530. xorl %r8d, %eax
  8531. vpxor %xmm7, %xmm6, %xmm6
  8532. # rnd_0: 4 - 4
  8533. xorl %edx, %ecx
  8534. rorxl $22, %r10d, %edx
  8535. addl %eax, %r9d
  8536. vpxor %xmm6, %xmm8, %xmm8
  8537. # rnd_0: 5 - 5
  8538. xorl %ecx, %edx
  8539. movl %r11d, %eax
  8540. addl %r9d, %r13d
  8541. vpshufb %xmm11, %xmm8, %xmm8
  8542. # rnd_0: 6 - 6
  8543. xorl %r10d, %eax
  8544. addl %edx, %r9d
  8545. andl %eax, %ebx
  8546. vpaddd %xmm8, %xmm4, %xmm4
  8547. # rnd_0: 7 - 7
  8548. xorl %r11d, %ebx
  8549. rorxl $6, %r13d, %edx
  8550. addl %ebx, %r9d
  8551. # rnd_1: 0 - 0
  8552. movl %r14d, %ebx
  8553. rorxl $11, %r13d, %ecx
  8554. addl 60(%rsp), %r8d
  8555. vpshufd $0x50, %xmm4, %xmm6
  8556. # rnd_1: 1 - 1
  8557. xorl %edx, %ecx
  8558. xorl %r15d, %ebx
  8559. rorxl $25, %r13d, %edx
  8560. vpsrld $10, %xmm6, %xmm9
  8561. # rnd_1: 2 - 2
  8562. andl %r13d, %ebx
  8563. xorl %ecx, %edx
  8564. rorxl $13, %r9d, %ecx
  8565. vpsrlq $19, %xmm6, %xmm7
  8566. # rnd_1: 3 - 3
  8567. addl %edx, %r8d
  8568. rorxl $2, %r9d, %edx
  8569. xorl %r15d, %ebx
  8570. vpsrlq $0x11, %xmm6, %xmm6
  8571. # rnd_1: 4 - 4
  8572. xorl %edx, %ecx
  8573. rorxl $22, %r9d, %edx
  8574. addl %ebx, %r8d
  8575. vpxor %xmm7, %xmm6, %xmm6
  8576. # rnd_1: 5 - 5
  8577. xorl %ecx, %edx
  8578. movl %r10d, %ebx
  8579. addl %r8d, %r12d
  8580. vpxor %xmm6, %xmm9, %xmm9
  8581. # rnd_1: 6 - 6
  8582. xorl %r9d, %ebx
  8583. addl %edx, %r8d
  8584. andl %ebx, %eax
  8585. vpshufb %xmm12, %xmm9, %xmm9
  8586. # rnd_1: 7 - 7
  8587. xorl %r10d, %eax
  8588. rorxl $6, %r12d, %edx
  8589. addl %eax, %r8d
  8590. vpaddd %xmm4, %xmm9, %xmm3
  8591. # msg_sched done: 12-15
  8592. # set_w_k_xfer_4: 8
  8593. vpaddd 128+L_avx1_rorx_sha256_k(%rip), %xmm0, %xmm4
  8594. vpaddd 144+L_avx1_rorx_sha256_k(%rip), %xmm1, %xmm5
  8595. vmovdqu %xmm4, (%rsp)
  8596. vmovdqu %xmm5, 16(%rsp)
  8597. vpaddd 160+L_avx1_rorx_sha256_k(%rip), %xmm2, %xmm6
  8598. vpaddd 176+L_avx1_rorx_sha256_k(%rip), %xmm3, %xmm7
  8599. vmovdqu %xmm6, 32(%rsp)
  8600. vmovdqu %xmm7, 48(%rsp)
  8601. # msg_sched: 0-3
  8602. # rnd_0: 0 - 0
  8603. movl %r13d, %eax
  8604. rorxl $11, %r12d, %ecx
  8605. addl (%rsp), %r15d
  8606. vpalignr $4, %xmm2, %xmm3, %xmm4
  8607. vpalignr $4, %xmm0, %xmm1, %xmm5
  8608. # rnd_0: 1 - 2
  8609. xorl %edx, %ecx
  8610. xorl %r14d, %eax
  8611. rorxl $25, %r12d, %edx
  8612. andl %r12d, %eax
  8613. xorl %ecx, %edx
  8614. rorxl $13, %r8d, %ecx
  8615. vpsrld $7, %xmm5, %xmm6
  8616. vpslld $25, %xmm5, %xmm7
  8617. # rnd_0: 3 - 4
  8618. addl %edx, %r15d
  8619. rorxl $2, %r8d, %edx
  8620. xorl %r14d, %eax
  8621. xorl %edx, %ecx
  8622. rorxl $22, %r8d, %edx
  8623. addl %eax, %r15d
  8624. vpsrld $3, %xmm5, %xmm8
  8625. vpor %xmm6, %xmm7, %xmm7
  8626. # rnd_0: 5 - 7
  8627. xorl %ecx, %edx
  8628. movl %r9d, %eax
  8629. addl %r15d, %r11d
  8630. xorl %r8d, %eax
  8631. addl %edx, %r15d
  8632. andl %eax, %ebx
  8633. xorl %r9d, %ebx
  8634. rorxl $6, %r11d, %edx
  8635. addl %ebx, %r15d
  8636. # rnd_1: 0 - 0
  8637. movl %r12d, %ebx
  8638. rorxl $11, %r11d, %ecx
  8639. addl 4(%rsp), %r14d
  8640. vpsrld $18, %xmm5, %xmm6
  8641. # rnd_1: 1 - 1
  8642. xorl %edx, %ecx
  8643. xorl %r13d, %ebx
  8644. rorxl $25, %r11d, %edx
  8645. vpslld $14, %xmm5, %xmm5
  8646. # rnd_1: 2 - 2
  8647. andl %r11d, %ebx
  8648. xorl %ecx, %edx
  8649. rorxl $13, %r15d, %ecx
  8650. vpxor %xmm5, %xmm7, %xmm7
  8651. # rnd_1: 3 - 3
  8652. addl %edx, %r14d
  8653. rorxl $2, %r15d, %edx
  8654. xorl %r13d, %ebx
  8655. vpxor %xmm6, %xmm7, %xmm7
  8656. # rnd_1: 4 - 4
  8657. xorl %edx, %ecx
  8658. rorxl $22, %r15d, %edx
  8659. addl %ebx, %r14d
  8660. vpshufd $0xfa, %xmm3, %xmm6
  8661. # rnd_1: 5 - 5
  8662. xorl %ecx, %edx
  8663. movl %r8d, %ebx
  8664. addl %r14d, %r10d
  8665. vpxor %xmm8, %xmm7, %xmm5
  8666. # rnd_1: 6 - 6
  8667. xorl %r15d, %ebx
  8668. addl %edx, %r14d
  8669. andl %ebx, %eax
  8670. vpsrld $10, %xmm6, %xmm8
  8671. # rnd_1: 7 - 7
  8672. xorl %r8d, %eax
  8673. rorxl $6, %r10d, %edx
  8674. addl %eax, %r14d
  8675. # rnd_0: 0 - 0
  8676. movl %r11d, %eax
  8677. rorxl $11, %r10d, %ecx
  8678. addl 8(%rsp), %r13d
  8679. vpsrlq $19, %xmm6, %xmm7
  8680. # rnd_0: 1 - 1
  8681. xorl %edx, %ecx
  8682. xorl %r12d, %eax
  8683. rorxl $25, %r10d, %edx
  8684. vpsrlq $0x11, %xmm6, %xmm6
  8685. vpaddd %xmm0, %xmm4, %xmm4
  8686. # rnd_0: 2 - 2
  8687. andl %r10d, %eax
  8688. xorl %ecx, %edx
  8689. rorxl $13, %r14d, %ecx
  8690. vpaddd %xmm5, %xmm4, %xmm4
  8691. # rnd_0: 3 - 3
  8692. addl %edx, %r13d
  8693. rorxl $2, %r14d, %edx
  8694. xorl %r12d, %eax
  8695. vpxor %xmm7, %xmm6, %xmm6
  8696. # rnd_0: 4 - 4
  8697. xorl %edx, %ecx
  8698. rorxl $22, %r14d, %edx
  8699. addl %eax, %r13d
  8700. vpxor %xmm6, %xmm8, %xmm8
  8701. # rnd_0: 5 - 5
  8702. xorl %ecx, %edx
  8703. movl %r15d, %eax
  8704. addl %r13d, %r9d
  8705. vpshufb %xmm11, %xmm8, %xmm8
  8706. # rnd_0: 6 - 6
  8707. xorl %r14d, %eax
  8708. addl %edx, %r13d
  8709. andl %eax, %ebx
  8710. vpaddd %xmm8, %xmm4, %xmm4
  8711. # rnd_0: 7 - 7
  8712. xorl %r15d, %ebx
  8713. rorxl $6, %r9d, %edx
  8714. addl %ebx, %r13d
  8715. # rnd_1: 0 - 0
  8716. movl %r10d, %ebx
  8717. rorxl $11, %r9d, %ecx
  8718. addl 12(%rsp), %r12d
  8719. vpshufd $0x50, %xmm4, %xmm6
  8720. # rnd_1: 1 - 1
  8721. xorl %edx, %ecx
  8722. xorl %r11d, %ebx
  8723. rorxl $25, %r9d, %edx
  8724. vpsrld $10, %xmm6, %xmm9
  8725. # rnd_1: 2 - 2
  8726. andl %r9d, %ebx
  8727. xorl %ecx, %edx
  8728. rorxl $13, %r13d, %ecx
  8729. vpsrlq $19, %xmm6, %xmm7
  8730. # rnd_1: 3 - 3
  8731. addl %edx, %r12d
  8732. rorxl $2, %r13d, %edx
  8733. xorl %r11d, %ebx
  8734. vpsrlq $0x11, %xmm6, %xmm6
  8735. # rnd_1: 4 - 4
  8736. xorl %edx, %ecx
  8737. rorxl $22, %r13d, %edx
  8738. addl %ebx, %r12d
  8739. vpxor %xmm7, %xmm6, %xmm6
  8740. # rnd_1: 5 - 5
  8741. xorl %ecx, %edx
  8742. movl %r14d, %ebx
  8743. addl %r12d, %r8d
  8744. vpxor %xmm6, %xmm9, %xmm9
  8745. # rnd_1: 6 - 6
  8746. xorl %r13d, %ebx
  8747. addl %edx, %r12d
  8748. andl %ebx, %eax
  8749. vpshufb %xmm12, %xmm9, %xmm9
  8750. # rnd_1: 7 - 7
  8751. xorl %r14d, %eax
  8752. rorxl $6, %r8d, %edx
  8753. addl %eax, %r12d
  8754. vpaddd %xmm4, %xmm9, %xmm0
  8755. # msg_sched done: 0-3
  8756. # msg_sched: 4-7
  8757. # rnd_0: 0 - 0
  8758. movl %r9d, %eax
  8759. rorxl $11, %r8d, %ecx
  8760. addl 16(%rsp), %r11d
  8761. vpalignr $4, %xmm3, %xmm0, %xmm4
  8762. vpalignr $4, %xmm1, %xmm2, %xmm5
  8763. # rnd_0: 1 - 2
  8764. xorl %edx, %ecx
  8765. xorl %r10d, %eax
  8766. rorxl $25, %r8d, %edx
  8767. andl %r8d, %eax
  8768. xorl %ecx, %edx
  8769. rorxl $13, %r12d, %ecx
  8770. vpsrld $7, %xmm5, %xmm6
  8771. vpslld $25, %xmm5, %xmm7
  8772. # rnd_0: 3 - 4
  8773. addl %edx, %r11d
  8774. rorxl $2, %r12d, %edx
  8775. xorl %r10d, %eax
  8776. xorl %edx, %ecx
  8777. rorxl $22, %r12d, %edx
  8778. addl %eax, %r11d
  8779. vpsrld $3, %xmm5, %xmm8
  8780. vpor %xmm6, %xmm7, %xmm7
  8781. # rnd_0: 5 - 7
  8782. xorl %ecx, %edx
  8783. movl %r13d, %eax
  8784. addl %r11d, %r15d
  8785. xorl %r12d, %eax
  8786. addl %edx, %r11d
  8787. andl %eax, %ebx
  8788. xorl %r13d, %ebx
  8789. rorxl $6, %r15d, %edx
  8790. addl %ebx, %r11d
  8791. # rnd_1: 0 - 0
  8792. movl %r8d, %ebx
  8793. rorxl $11, %r15d, %ecx
  8794. addl 20(%rsp), %r10d
  8795. vpsrld $18, %xmm5, %xmm6
  8796. # rnd_1: 1 - 1
  8797. xorl %edx, %ecx
  8798. xorl %r9d, %ebx
  8799. rorxl $25, %r15d, %edx
  8800. vpslld $14, %xmm5, %xmm5
  8801. # rnd_1: 2 - 2
  8802. andl %r15d, %ebx
  8803. xorl %ecx, %edx
  8804. rorxl $13, %r11d, %ecx
  8805. vpxor %xmm5, %xmm7, %xmm7
  8806. # rnd_1: 3 - 3
  8807. addl %edx, %r10d
  8808. rorxl $2, %r11d, %edx
  8809. xorl %r9d, %ebx
  8810. vpxor %xmm6, %xmm7, %xmm7
  8811. # rnd_1: 4 - 4
  8812. xorl %edx, %ecx
  8813. rorxl $22, %r11d, %edx
  8814. addl %ebx, %r10d
  8815. vpshufd $0xfa, %xmm0, %xmm6
  8816. # rnd_1: 5 - 5
  8817. xorl %ecx, %edx
  8818. movl %r12d, %ebx
  8819. addl %r10d, %r14d
  8820. vpxor %xmm8, %xmm7, %xmm5
  8821. # rnd_1: 6 - 6
  8822. xorl %r11d, %ebx
  8823. addl %edx, %r10d
  8824. andl %ebx, %eax
  8825. vpsrld $10, %xmm6, %xmm8
  8826. # rnd_1: 7 - 7
  8827. xorl %r12d, %eax
  8828. rorxl $6, %r14d, %edx
  8829. addl %eax, %r10d
  8830. # rnd_0: 0 - 0
  8831. movl %r15d, %eax
  8832. rorxl $11, %r14d, %ecx
  8833. addl 24(%rsp), %r9d
  8834. vpsrlq $19, %xmm6, %xmm7
  8835. # rnd_0: 1 - 1
  8836. xorl %edx, %ecx
  8837. xorl %r8d, %eax
  8838. rorxl $25, %r14d, %edx
  8839. vpsrlq $0x11, %xmm6, %xmm6
  8840. vpaddd %xmm1, %xmm4, %xmm4
  8841. # rnd_0: 2 - 2
  8842. andl %r14d, %eax
  8843. xorl %ecx, %edx
  8844. rorxl $13, %r10d, %ecx
  8845. vpaddd %xmm5, %xmm4, %xmm4
  8846. # rnd_0: 3 - 3
  8847. addl %edx, %r9d
  8848. rorxl $2, %r10d, %edx
  8849. xorl %r8d, %eax
  8850. vpxor %xmm7, %xmm6, %xmm6
  8851. # rnd_0: 4 - 4
  8852. xorl %edx, %ecx
  8853. rorxl $22, %r10d, %edx
  8854. addl %eax, %r9d
  8855. vpxor %xmm6, %xmm8, %xmm8
  8856. # rnd_0: 5 - 5
  8857. xorl %ecx, %edx
  8858. movl %r11d, %eax
  8859. addl %r9d, %r13d
  8860. vpshufb %xmm11, %xmm8, %xmm8
  8861. # rnd_0: 6 - 6
  8862. xorl %r10d, %eax
  8863. addl %edx, %r9d
  8864. andl %eax, %ebx
  8865. vpaddd %xmm8, %xmm4, %xmm4
  8866. # rnd_0: 7 - 7
  8867. xorl %r11d, %ebx
  8868. rorxl $6, %r13d, %edx
  8869. addl %ebx, %r9d
  8870. # rnd_1: 0 - 0
  8871. movl %r14d, %ebx
  8872. rorxl $11, %r13d, %ecx
  8873. addl 28(%rsp), %r8d
  8874. vpshufd $0x50, %xmm4, %xmm6
  8875. # rnd_1: 1 - 1
  8876. xorl %edx, %ecx
  8877. xorl %r15d, %ebx
  8878. rorxl $25, %r13d, %edx
  8879. vpsrld $10, %xmm6, %xmm9
  8880. # rnd_1: 2 - 2
  8881. andl %r13d, %ebx
  8882. xorl %ecx, %edx
  8883. rorxl $13, %r9d, %ecx
  8884. vpsrlq $19, %xmm6, %xmm7
  8885. # rnd_1: 3 - 3
  8886. addl %edx, %r8d
  8887. rorxl $2, %r9d, %edx
  8888. xorl %r15d, %ebx
  8889. vpsrlq $0x11, %xmm6, %xmm6
  8890. # rnd_1: 4 - 4
  8891. xorl %edx, %ecx
  8892. rorxl $22, %r9d, %edx
  8893. addl %ebx, %r8d
  8894. vpxor %xmm7, %xmm6, %xmm6
  8895. # rnd_1: 5 - 5
  8896. xorl %ecx, %edx
  8897. movl %r10d, %ebx
  8898. addl %r8d, %r12d
  8899. vpxor %xmm6, %xmm9, %xmm9
  8900. # rnd_1: 6 - 6
  8901. xorl %r9d, %ebx
  8902. addl %edx, %r8d
  8903. andl %ebx, %eax
  8904. vpshufb %xmm12, %xmm9, %xmm9
  8905. # rnd_1: 7 - 7
  8906. xorl %r10d, %eax
  8907. rorxl $6, %r12d, %edx
  8908. addl %eax, %r8d
  8909. vpaddd %xmm4, %xmm9, %xmm1
  8910. # msg_sched done: 4-7
  8911. # msg_sched: 8-11
  8912. # rnd_0: 0 - 0
  8913. movl %r13d, %eax
  8914. rorxl $11, %r12d, %ecx
  8915. addl 32(%rsp), %r15d
  8916. vpalignr $4, %xmm0, %xmm1, %xmm4
  8917. vpalignr $4, %xmm2, %xmm3, %xmm5
  8918. # rnd_0: 1 - 2
  8919. xorl %edx, %ecx
  8920. xorl %r14d, %eax
  8921. rorxl $25, %r12d, %edx
  8922. andl %r12d, %eax
  8923. xorl %ecx, %edx
  8924. rorxl $13, %r8d, %ecx
  8925. vpsrld $7, %xmm5, %xmm6
  8926. vpslld $25, %xmm5, %xmm7
  8927. # rnd_0: 3 - 4
  8928. addl %edx, %r15d
  8929. rorxl $2, %r8d, %edx
  8930. xorl %r14d, %eax
  8931. xorl %edx, %ecx
  8932. rorxl $22, %r8d, %edx
  8933. addl %eax, %r15d
  8934. vpsrld $3, %xmm5, %xmm8
  8935. vpor %xmm6, %xmm7, %xmm7
  8936. # rnd_0: 5 - 7
  8937. xorl %ecx, %edx
  8938. movl %r9d, %eax
  8939. addl %r15d, %r11d
  8940. xorl %r8d, %eax
  8941. addl %edx, %r15d
  8942. andl %eax, %ebx
  8943. xorl %r9d, %ebx
  8944. rorxl $6, %r11d, %edx
  8945. addl %ebx, %r15d
  8946. # rnd_1: 0 - 0
  8947. movl %r12d, %ebx
  8948. rorxl $11, %r11d, %ecx
  8949. addl 36(%rsp), %r14d
  8950. vpsrld $18, %xmm5, %xmm6
  8951. # rnd_1: 1 - 1
  8952. xorl %edx, %ecx
  8953. xorl %r13d, %ebx
  8954. rorxl $25, %r11d, %edx
  8955. vpslld $14, %xmm5, %xmm5
  8956. # rnd_1: 2 - 2
  8957. andl %r11d, %ebx
  8958. xorl %ecx, %edx
  8959. rorxl $13, %r15d, %ecx
  8960. vpxor %xmm5, %xmm7, %xmm7
  8961. # rnd_1: 3 - 3
  8962. addl %edx, %r14d
  8963. rorxl $2, %r15d, %edx
  8964. xorl %r13d, %ebx
  8965. vpxor %xmm6, %xmm7, %xmm7
  8966. # rnd_1: 4 - 4
  8967. xorl %edx, %ecx
  8968. rorxl $22, %r15d, %edx
  8969. addl %ebx, %r14d
  8970. vpshufd $0xfa, %xmm1, %xmm6
  8971. # rnd_1: 5 - 5
  8972. xorl %ecx, %edx
  8973. movl %r8d, %ebx
  8974. addl %r14d, %r10d
  8975. vpxor %xmm8, %xmm7, %xmm5
  8976. # rnd_1: 6 - 6
  8977. xorl %r15d, %ebx
  8978. addl %edx, %r14d
  8979. andl %ebx, %eax
  8980. vpsrld $10, %xmm6, %xmm8
  8981. # rnd_1: 7 - 7
  8982. xorl %r8d, %eax
  8983. rorxl $6, %r10d, %edx
  8984. addl %eax, %r14d
  8985. # rnd_0: 0 - 0
  8986. movl %r11d, %eax
  8987. rorxl $11, %r10d, %ecx
  8988. addl 40(%rsp), %r13d
  8989. vpsrlq $19, %xmm6, %xmm7
  8990. # rnd_0: 1 - 1
  8991. xorl %edx, %ecx
  8992. xorl %r12d, %eax
  8993. rorxl $25, %r10d, %edx
  8994. vpsrlq $0x11, %xmm6, %xmm6
  8995. vpaddd %xmm2, %xmm4, %xmm4
  8996. # rnd_0: 2 - 2
  8997. andl %r10d, %eax
  8998. xorl %ecx, %edx
  8999. rorxl $13, %r14d, %ecx
  9000. vpaddd %xmm5, %xmm4, %xmm4
  9001. # rnd_0: 3 - 3
  9002. addl %edx, %r13d
  9003. rorxl $2, %r14d, %edx
  9004. xorl %r12d, %eax
  9005. vpxor %xmm7, %xmm6, %xmm6
  9006. # rnd_0: 4 - 4
  9007. xorl %edx, %ecx
  9008. rorxl $22, %r14d, %edx
  9009. addl %eax, %r13d
  9010. vpxor %xmm6, %xmm8, %xmm8
  9011. # rnd_0: 5 - 5
  9012. xorl %ecx, %edx
  9013. movl %r15d, %eax
  9014. addl %r13d, %r9d
  9015. vpshufb %xmm11, %xmm8, %xmm8
  9016. # rnd_0: 6 - 6
  9017. xorl %r14d, %eax
  9018. addl %edx, %r13d
  9019. andl %eax, %ebx
  9020. vpaddd %xmm8, %xmm4, %xmm4
  9021. # rnd_0: 7 - 7
  9022. xorl %r15d, %ebx
  9023. rorxl $6, %r9d, %edx
  9024. addl %ebx, %r13d
  9025. # rnd_1: 0 - 0
  9026. movl %r10d, %ebx
  9027. rorxl $11, %r9d, %ecx
  9028. addl 44(%rsp), %r12d
  9029. vpshufd $0x50, %xmm4, %xmm6
  9030. # rnd_1: 1 - 1
  9031. xorl %edx, %ecx
  9032. xorl %r11d, %ebx
  9033. rorxl $25, %r9d, %edx
  9034. vpsrld $10, %xmm6, %xmm9
  9035. # rnd_1: 2 - 2
  9036. andl %r9d, %ebx
  9037. xorl %ecx, %edx
  9038. rorxl $13, %r13d, %ecx
  9039. vpsrlq $19, %xmm6, %xmm7
  9040. # rnd_1: 3 - 3
  9041. addl %edx, %r12d
  9042. rorxl $2, %r13d, %edx
  9043. xorl %r11d, %ebx
  9044. vpsrlq $0x11, %xmm6, %xmm6
  9045. # rnd_1: 4 - 4
  9046. xorl %edx, %ecx
  9047. rorxl $22, %r13d, %edx
  9048. addl %ebx, %r12d
  9049. vpxor %xmm7, %xmm6, %xmm6
  9050. # rnd_1: 5 - 5
  9051. xorl %ecx, %edx
  9052. movl %r14d, %ebx
  9053. addl %r12d, %r8d
  9054. vpxor %xmm6, %xmm9, %xmm9
  9055. # rnd_1: 6 - 6
  9056. xorl %r13d, %ebx
  9057. addl %edx, %r12d
  9058. andl %ebx, %eax
  9059. vpshufb %xmm12, %xmm9, %xmm9
  9060. # rnd_1: 7 - 7
  9061. xorl %r14d, %eax
  9062. rorxl $6, %r8d, %edx
  9063. addl %eax, %r12d
  9064. vpaddd %xmm4, %xmm9, %xmm2
  9065. # msg_sched done: 8-11
  9066. # msg_sched: 12-15
  9067. # rnd_0: 0 - 0
  9068. movl %r9d, %eax
  9069. rorxl $11, %r8d, %ecx
  9070. addl 48(%rsp), %r11d
  9071. vpalignr $4, %xmm1, %xmm2, %xmm4
  9072. vpalignr $4, %xmm3, %xmm0, %xmm5
  9073. # rnd_0: 1 - 2
  9074. xorl %edx, %ecx
  9075. xorl %r10d, %eax
  9076. rorxl $25, %r8d, %edx
  9077. andl %r8d, %eax
  9078. xorl %ecx, %edx
  9079. rorxl $13, %r12d, %ecx
  9080. vpsrld $7, %xmm5, %xmm6
  9081. vpslld $25, %xmm5, %xmm7
  9082. # rnd_0: 3 - 4
  9083. addl %edx, %r11d
  9084. rorxl $2, %r12d, %edx
  9085. xorl %r10d, %eax
  9086. xorl %edx, %ecx
  9087. rorxl $22, %r12d, %edx
  9088. addl %eax, %r11d
  9089. vpsrld $3, %xmm5, %xmm8
  9090. vpor %xmm6, %xmm7, %xmm7
  9091. # rnd_0: 5 - 7
  9092. xorl %ecx, %edx
  9093. movl %r13d, %eax
  9094. addl %r11d, %r15d
  9095. xorl %r12d, %eax
  9096. addl %edx, %r11d
  9097. andl %eax, %ebx
  9098. xorl %r13d, %ebx
  9099. rorxl $6, %r15d, %edx
  9100. addl %ebx, %r11d
  9101. # rnd_1: 0 - 0
  9102. movl %r8d, %ebx
  9103. rorxl $11, %r15d, %ecx
  9104. addl 52(%rsp), %r10d
  9105. vpsrld $18, %xmm5, %xmm6
  9106. # rnd_1: 1 - 1
  9107. xorl %edx, %ecx
  9108. xorl %r9d, %ebx
  9109. rorxl $25, %r15d, %edx
  9110. vpslld $14, %xmm5, %xmm5
  9111. # rnd_1: 2 - 2
  9112. andl %r15d, %ebx
  9113. xorl %ecx, %edx
  9114. rorxl $13, %r11d, %ecx
  9115. vpxor %xmm5, %xmm7, %xmm7
  9116. # rnd_1: 3 - 3
  9117. addl %edx, %r10d
  9118. rorxl $2, %r11d, %edx
  9119. xorl %r9d, %ebx
  9120. vpxor %xmm6, %xmm7, %xmm7
  9121. # rnd_1: 4 - 4
  9122. xorl %edx, %ecx
  9123. rorxl $22, %r11d, %edx
  9124. addl %ebx, %r10d
  9125. vpshufd $0xfa, %xmm2, %xmm6
  9126. # rnd_1: 5 - 5
  9127. xorl %ecx, %edx
  9128. movl %r12d, %ebx
  9129. addl %r10d, %r14d
  9130. vpxor %xmm8, %xmm7, %xmm5
  9131. # rnd_1: 6 - 6
  9132. xorl %r11d, %ebx
  9133. addl %edx, %r10d
  9134. andl %ebx, %eax
  9135. vpsrld $10, %xmm6, %xmm8
  9136. # rnd_1: 7 - 7
  9137. xorl %r12d, %eax
  9138. rorxl $6, %r14d, %edx
  9139. addl %eax, %r10d
  9140. # rnd_0: 0 - 0
  9141. movl %r15d, %eax
  9142. rorxl $11, %r14d, %ecx
  9143. addl 56(%rsp), %r9d
  9144. vpsrlq $19, %xmm6, %xmm7
  9145. # rnd_0: 1 - 1
  9146. xorl %edx, %ecx
  9147. xorl %r8d, %eax
  9148. rorxl $25, %r14d, %edx
  9149. vpsrlq $0x11, %xmm6, %xmm6
  9150. vpaddd %xmm3, %xmm4, %xmm4
  9151. # rnd_0: 2 - 2
  9152. andl %r14d, %eax
  9153. xorl %ecx, %edx
  9154. rorxl $13, %r10d, %ecx
  9155. vpaddd %xmm5, %xmm4, %xmm4
  9156. # rnd_0: 3 - 3
  9157. addl %edx, %r9d
  9158. rorxl $2, %r10d, %edx
  9159. xorl %r8d, %eax
  9160. vpxor %xmm7, %xmm6, %xmm6
  9161. # rnd_0: 4 - 4
  9162. xorl %edx, %ecx
  9163. rorxl $22, %r10d, %edx
  9164. addl %eax, %r9d
  9165. vpxor %xmm6, %xmm8, %xmm8
  9166. # rnd_0: 5 - 5
  9167. xorl %ecx, %edx
  9168. movl %r11d, %eax
  9169. addl %r9d, %r13d
  9170. vpshufb %xmm11, %xmm8, %xmm8
  9171. # rnd_0: 6 - 6
  9172. xorl %r10d, %eax
  9173. addl %edx, %r9d
  9174. andl %eax, %ebx
  9175. vpaddd %xmm8, %xmm4, %xmm4
  9176. # rnd_0: 7 - 7
  9177. xorl %r11d, %ebx
  9178. rorxl $6, %r13d, %edx
  9179. addl %ebx, %r9d
  9180. # rnd_1: 0 - 0
  9181. movl %r14d, %ebx
  9182. rorxl $11, %r13d, %ecx
  9183. addl 60(%rsp), %r8d
  9184. vpshufd $0x50, %xmm4, %xmm6
  9185. # rnd_1: 1 - 1
  9186. xorl %edx, %ecx
  9187. xorl %r15d, %ebx
  9188. rorxl $25, %r13d, %edx
  9189. vpsrld $10, %xmm6, %xmm9
  9190. # rnd_1: 2 - 2
  9191. andl %r13d, %ebx
  9192. xorl %ecx, %edx
  9193. rorxl $13, %r9d, %ecx
  9194. vpsrlq $19, %xmm6, %xmm7
  9195. # rnd_1: 3 - 3
  9196. addl %edx, %r8d
  9197. rorxl $2, %r9d, %edx
  9198. xorl %r15d, %ebx
  9199. vpsrlq $0x11, %xmm6, %xmm6
  9200. # rnd_1: 4 - 4
  9201. xorl %edx, %ecx
  9202. rorxl $22, %r9d, %edx
  9203. addl %ebx, %r8d
  9204. vpxor %xmm7, %xmm6, %xmm6
  9205. # rnd_1: 5 - 5
  9206. xorl %ecx, %edx
  9207. movl %r10d, %ebx
  9208. addl %r8d, %r12d
  9209. vpxor %xmm6, %xmm9, %xmm9
  9210. # rnd_1: 6 - 6
  9211. xorl %r9d, %ebx
  9212. addl %edx, %r8d
  9213. andl %ebx, %eax
  9214. vpshufb %xmm12, %xmm9, %xmm9
  9215. # rnd_1: 7 - 7
  9216. xorl %r10d, %eax
  9217. rorxl $6, %r12d, %edx
  9218. addl %eax, %r8d
  9219. vpaddd %xmm4, %xmm9, %xmm3
  9220. # msg_sched done: 12-15
  9221. # set_w_k_xfer_4: 12
  9222. vpaddd 192+L_avx1_rorx_sha256_k(%rip), %xmm0, %xmm4
  9223. vpaddd 208+L_avx1_rorx_sha256_k(%rip), %xmm1, %xmm5
  9224. vmovdqu %xmm4, (%rsp)
  9225. vmovdqu %xmm5, 16(%rsp)
  9226. vpaddd 224+L_avx1_rorx_sha256_k(%rip), %xmm2, %xmm6
  9227. vpaddd 240+L_avx1_rorx_sha256_k(%rip), %xmm3, %xmm7
  9228. vmovdqu %xmm6, 32(%rsp)
  9229. vmovdqu %xmm7, 48(%rsp)
  9230. xorl %eax, %eax
  9231. xorl %ecx, %ecx
  9232. # rnd_all_4: 0-3
  9233. rorxl $6, %r12d, %edx
  9234. rorxl $11, %r12d, %ecx
  9235. addl %eax, %r8d
  9236. addl (%rsp), %r15d
  9237. movl %r13d, %eax
  9238. xorl %edx, %ecx
  9239. xorl %r14d, %eax
  9240. rorxl $25, %r12d, %edx
  9241. xorl %ecx, %edx
  9242. andl %r12d, %eax
  9243. addl %edx, %r15d
  9244. rorxl $2, %r8d, %edx
  9245. rorxl $13, %r8d, %ecx
  9246. xorl %r14d, %eax
  9247. xorl %edx, %ecx
  9248. rorxl $22, %r8d, %edx
  9249. addl %eax, %r15d
  9250. xorl %ecx, %edx
  9251. movl %r9d, %eax
  9252. addl %r15d, %r11d
  9253. xorl %r8d, %eax
  9254. andl %eax, %ebx
  9255. addl %edx, %r15d
  9256. xorl %r9d, %ebx
  9257. rorxl $6, %r11d, %edx
  9258. rorxl $11, %r11d, %ecx
  9259. addl %ebx, %r15d
  9260. addl 4(%rsp), %r14d
  9261. movl %r12d, %ebx
  9262. xorl %edx, %ecx
  9263. xorl %r13d, %ebx
  9264. rorxl $25, %r11d, %edx
  9265. xorl %ecx, %edx
  9266. andl %r11d, %ebx
  9267. addl %edx, %r14d
  9268. rorxl $2, %r15d, %edx
  9269. rorxl $13, %r15d, %ecx
  9270. xorl %r13d, %ebx
  9271. xorl %edx, %ecx
  9272. rorxl $22, %r15d, %edx
  9273. addl %ebx, %r14d
  9274. xorl %ecx, %edx
  9275. movl %r8d, %ebx
  9276. addl %r14d, %r10d
  9277. xorl %r15d, %ebx
  9278. andl %ebx, %eax
  9279. addl %edx, %r14d
  9280. xorl %r8d, %eax
  9281. rorxl $6, %r10d, %edx
  9282. rorxl $11, %r10d, %ecx
  9283. addl %eax, %r14d
  9284. addl 8(%rsp), %r13d
  9285. movl %r11d, %eax
  9286. xorl %edx, %ecx
  9287. xorl %r12d, %eax
  9288. rorxl $25, %r10d, %edx
  9289. xorl %ecx, %edx
  9290. andl %r10d, %eax
  9291. addl %edx, %r13d
  9292. rorxl $2, %r14d, %edx
  9293. rorxl $13, %r14d, %ecx
  9294. xorl %r12d, %eax
  9295. xorl %edx, %ecx
  9296. rorxl $22, %r14d, %edx
  9297. addl %eax, %r13d
  9298. xorl %ecx, %edx
  9299. movl %r15d, %eax
  9300. addl %r13d, %r9d
  9301. xorl %r14d, %eax
  9302. andl %eax, %ebx
  9303. addl %edx, %r13d
  9304. xorl %r15d, %ebx
  9305. rorxl $6, %r9d, %edx
  9306. rorxl $11, %r9d, %ecx
  9307. addl %ebx, %r13d
  9308. addl 12(%rsp), %r12d
  9309. movl %r10d, %ebx
  9310. xorl %edx, %ecx
  9311. xorl %r11d, %ebx
  9312. rorxl $25, %r9d, %edx
  9313. xorl %ecx, %edx
  9314. andl %r9d, %ebx
  9315. addl %edx, %r12d
  9316. rorxl $2, %r13d, %edx
  9317. rorxl $13, %r13d, %ecx
  9318. xorl %r11d, %ebx
  9319. xorl %edx, %ecx
  9320. rorxl $22, %r13d, %edx
  9321. addl %ebx, %r12d
  9322. xorl %ecx, %edx
  9323. movl %r14d, %ebx
  9324. addl %r12d, %r8d
  9325. xorl %r13d, %ebx
  9326. andl %ebx, %eax
  9327. addl %edx, %r12d
  9328. xorl %r14d, %eax
  9329. # rnd_all_4: 1-4
  9330. rorxl $6, %r8d, %edx
  9331. rorxl $11, %r8d, %ecx
  9332. addl %eax, %r12d
  9333. addl 16(%rsp), %r11d
  9334. movl %r9d, %eax
  9335. xorl %edx, %ecx
  9336. xorl %r10d, %eax
  9337. rorxl $25, %r8d, %edx
  9338. xorl %ecx, %edx
  9339. andl %r8d, %eax
  9340. addl %edx, %r11d
  9341. rorxl $2, %r12d, %edx
  9342. rorxl $13, %r12d, %ecx
  9343. xorl %r10d, %eax
  9344. xorl %edx, %ecx
  9345. rorxl $22, %r12d, %edx
  9346. addl %eax, %r11d
  9347. xorl %ecx, %edx
  9348. movl %r13d, %eax
  9349. addl %r11d, %r15d
  9350. xorl %r12d, %eax
  9351. andl %eax, %ebx
  9352. addl %edx, %r11d
  9353. xorl %r13d, %ebx
  9354. rorxl $6, %r15d, %edx
  9355. rorxl $11, %r15d, %ecx
  9356. addl %ebx, %r11d
  9357. addl 20(%rsp), %r10d
  9358. movl %r8d, %ebx
  9359. xorl %edx, %ecx
  9360. xorl %r9d, %ebx
  9361. rorxl $25, %r15d, %edx
  9362. xorl %ecx, %edx
  9363. andl %r15d, %ebx
  9364. addl %edx, %r10d
  9365. rorxl $2, %r11d, %edx
  9366. rorxl $13, %r11d, %ecx
  9367. xorl %r9d, %ebx
  9368. xorl %edx, %ecx
  9369. rorxl $22, %r11d, %edx
  9370. addl %ebx, %r10d
  9371. xorl %ecx, %edx
  9372. movl %r12d, %ebx
  9373. addl %r10d, %r14d
  9374. xorl %r11d, %ebx
  9375. andl %ebx, %eax
  9376. addl %edx, %r10d
  9377. xorl %r12d, %eax
  9378. rorxl $6, %r14d, %edx
  9379. rorxl $11, %r14d, %ecx
  9380. addl %eax, %r10d
  9381. addl 24(%rsp), %r9d
  9382. movl %r15d, %eax
  9383. xorl %edx, %ecx
  9384. xorl %r8d, %eax
  9385. rorxl $25, %r14d, %edx
  9386. xorl %ecx, %edx
  9387. andl %r14d, %eax
  9388. addl %edx, %r9d
  9389. rorxl $2, %r10d, %edx
  9390. rorxl $13, %r10d, %ecx
  9391. xorl %r8d, %eax
  9392. xorl %edx, %ecx
  9393. rorxl $22, %r10d, %edx
  9394. addl %eax, %r9d
  9395. xorl %ecx, %edx
  9396. movl %r11d, %eax
  9397. addl %r9d, %r13d
  9398. xorl %r10d, %eax
  9399. andl %eax, %ebx
  9400. addl %edx, %r9d
  9401. xorl %r11d, %ebx
  9402. rorxl $6, %r13d, %edx
  9403. rorxl $11, %r13d, %ecx
  9404. addl %ebx, %r9d
  9405. addl 28(%rsp), %r8d
  9406. movl %r14d, %ebx
  9407. xorl %edx, %ecx
  9408. xorl %r15d, %ebx
  9409. rorxl $25, %r13d, %edx
  9410. xorl %ecx, %edx
  9411. andl %r13d, %ebx
  9412. addl %edx, %r8d
  9413. rorxl $2, %r9d, %edx
  9414. rorxl $13, %r9d, %ecx
  9415. xorl %r15d, %ebx
  9416. xorl %edx, %ecx
  9417. rorxl $22, %r9d, %edx
  9418. addl %ebx, %r8d
  9419. xorl %ecx, %edx
  9420. movl %r10d, %ebx
  9421. addl %r8d, %r12d
  9422. xorl %r9d, %ebx
  9423. andl %ebx, %eax
  9424. addl %edx, %r8d
  9425. xorl %r10d, %eax
  9426. # rnd_all_4: 2-5
  9427. rorxl $6, %r12d, %edx
  9428. rorxl $11, %r12d, %ecx
  9429. addl %eax, %r8d
  9430. addl 32(%rsp), %r15d
  9431. movl %r13d, %eax
  9432. xorl %edx, %ecx
  9433. xorl %r14d, %eax
  9434. rorxl $25, %r12d, %edx
  9435. xorl %ecx, %edx
  9436. andl %r12d, %eax
  9437. addl %edx, %r15d
  9438. rorxl $2, %r8d, %edx
  9439. rorxl $13, %r8d, %ecx
  9440. xorl %r14d, %eax
  9441. xorl %edx, %ecx
  9442. rorxl $22, %r8d, %edx
  9443. addl %eax, %r15d
  9444. xorl %ecx, %edx
  9445. movl %r9d, %eax
  9446. addl %r15d, %r11d
  9447. xorl %r8d, %eax
  9448. andl %eax, %ebx
  9449. addl %edx, %r15d
  9450. xorl %r9d, %ebx
  9451. rorxl $6, %r11d, %edx
  9452. rorxl $11, %r11d, %ecx
  9453. addl %ebx, %r15d
  9454. addl 36(%rsp), %r14d
  9455. movl %r12d, %ebx
  9456. xorl %edx, %ecx
  9457. xorl %r13d, %ebx
  9458. rorxl $25, %r11d, %edx
  9459. xorl %ecx, %edx
  9460. andl %r11d, %ebx
  9461. addl %edx, %r14d
  9462. rorxl $2, %r15d, %edx
  9463. rorxl $13, %r15d, %ecx
  9464. xorl %r13d, %ebx
  9465. xorl %edx, %ecx
  9466. rorxl $22, %r15d, %edx
  9467. addl %ebx, %r14d
  9468. xorl %ecx, %edx
  9469. movl %r8d, %ebx
  9470. addl %r14d, %r10d
  9471. xorl %r15d, %ebx
  9472. andl %ebx, %eax
  9473. addl %edx, %r14d
  9474. xorl %r8d, %eax
  9475. rorxl $6, %r10d, %edx
  9476. rorxl $11, %r10d, %ecx
  9477. addl %eax, %r14d
  9478. addl 40(%rsp), %r13d
  9479. movl %r11d, %eax
  9480. xorl %edx, %ecx
  9481. xorl %r12d, %eax
  9482. rorxl $25, %r10d, %edx
  9483. xorl %ecx, %edx
  9484. andl %r10d, %eax
  9485. addl %edx, %r13d
  9486. rorxl $2, %r14d, %edx
  9487. rorxl $13, %r14d, %ecx
  9488. xorl %r12d, %eax
  9489. xorl %edx, %ecx
  9490. rorxl $22, %r14d, %edx
  9491. addl %eax, %r13d
  9492. xorl %ecx, %edx
  9493. movl %r15d, %eax
  9494. addl %r13d, %r9d
  9495. xorl %r14d, %eax
  9496. andl %eax, %ebx
  9497. addl %edx, %r13d
  9498. xorl %r15d, %ebx
  9499. rorxl $6, %r9d, %edx
  9500. rorxl $11, %r9d, %ecx
  9501. addl %ebx, %r13d
  9502. addl 44(%rsp), %r12d
  9503. movl %r10d, %ebx
  9504. xorl %edx, %ecx
  9505. xorl %r11d, %ebx
  9506. rorxl $25, %r9d, %edx
  9507. xorl %ecx, %edx
  9508. andl %r9d, %ebx
  9509. addl %edx, %r12d
  9510. rorxl $2, %r13d, %edx
  9511. rorxl $13, %r13d, %ecx
  9512. xorl %r11d, %ebx
  9513. xorl %edx, %ecx
  9514. rorxl $22, %r13d, %edx
  9515. addl %ebx, %r12d
  9516. xorl %ecx, %edx
  9517. movl %r14d, %ebx
  9518. addl %r12d, %r8d
  9519. xorl %r13d, %ebx
  9520. andl %ebx, %eax
  9521. addl %edx, %r12d
  9522. xorl %r14d, %eax
  9523. # rnd_all_4: 3-6
  9524. rorxl $6, %r8d, %edx
  9525. rorxl $11, %r8d, %ecx
  9526. addl %eax, %r12d
  9527. addl 48(%rsp), %r11d
  9528. movl %r9d, %eax
  9529. xorl %edx, %ecx
  9530. xorl %r10d, %eax
  9531. rorxl $25, %r8d, %edx
  9532. xorl %ecx, %edx
  9533. andl %r8d, %eax
  9534. addl %edx, %r11d
  9535. rorxl $2, %r12d, %edx
  9536. rorxl $13, %r12d, %ecx
  9537. xorl %r10d, %eax
  9538. xorl %edx, %ecx
  9539. rorxl $22, %r12d, %edx
  9540. addl %eax, %r11d
  9541. xorl %ecx, %edx
  9542. movl %r13d, %eax
  9543. addl %r11d, %r15d
  9544. xorl %r12d, %eax
  9545. andl %eax, %ebx
  9546. addl %edx, %r11d
  9547. xorl %r13d, %ebx
  9548. rorxl $6, %r15d, %edx
  9549. rorxl $11, %r15d, %ecx
  9550. addl %ebx, %r11d
  9551. addl 52(%rsp), %r10d
  9552. movl %r8d, %ebx
  9553. xorl %edx, %ecx
  9554. xorl %r9d, %ebx
  9555. rorxl $25, %r15d, %edx
  9556. xorl %ecx, %edx
  9557. andl %r15d, %ebx
  9558. addl %edx, %r10d
  9559. rorxl $2, %r11d, %edx
  9560. rorxl $13, %r11d, %ecx
  9561. xorl %r9d, %ebx
  9562. xorl %edx, %ecx
  9563. rorxl $22, %r11d, %edx
  9564. addl %ebx, %r10d
  9565. xorl %ecx, %edx
  9566. movl %r12d, %ebx
  9567. addl %r10d, %r14d
  9568. xorl %r11d, %ebx
  9569. andl %ebx, %eax
  9570. addl %edx, %r10d
  9571. xorl %r12d, %eax
  9572. rorxl $6, %r14d, %edx
  9573. rorxl $11, %r14d, %ecx
  9574. addl %eax, %r10d
  9575. addl 56(%rsp), %r9d
  9576. movl %r15d, %eax
  9577. xorl %edx, %ecx
  9578. xorl %r8d, %eax
  9579. rorxl $25, %r14d, %edx
  9580. xorl %ecx, %edx
  9581. andl %r14d, %eax
  9582. addl %edx, %r9d
  9583. rorxl $2, %r10d, %edx
  9584. rorxl $13, %r10d, %ecx
  9585. xorl %r8d, %eax
  9586. xorl %edx, %ecx
  9587. rorxl $22, %r10d, %edx
  9588. addl %eax, %r9d
  9589. xorl %ecx, %edx
  9590. movl %r11d, %eax
  9591. addl %r9d, %r13d
  9592. xorl %r10d, %eax
  9593. andl %eax, %ebx
  9594. addl %edx, %r9d
  9595. xorl %r11d, %ebx
  9596. rorxl $6, %r13d, %edx
  9597. rorxl $11, %r13d, %ecx
  9598. addl %ebx, %r9d
  9599. addl 60(%rsp), %r8d
  9600. movl %r14d, %ebx
  9601. xorl %edx, %ecx
  9602. xorl %r15d, %ebx
  9603. rorxl $25, %r13d, %edx
  9604. xorl %ecx, %edx
  9605. andl %r13d, %ebx
  9606. addl %edx, %r8d
  9607. rorxl $2, %r9d, %edx
  9608. rorxl $13, %r9d, %ecx
  9609. xorl %r15d, %ebx
  9610. xorl %edx, %ecx
  9611. rorxl $22, %r9d, %edx
  9612. addl %ebx, %r8d
  9613. xorl %ecx, %edx
  9614. movl %r10d, %ebx
  9615. addl %r8d, %r12d
  9616. xorl %r9d, %ebx
  9617. andl %ebx, %eax
  9618. addl %edx, %r8d
  9619. xorl %r10d, %eax
  9620. addl %eax, %r8d
  9621. addl (%rdi), %r8d
  9622. addl 4(%rdi), %r9d
  9623. addl 8(%rdi), %r10d
  9624. addl 12(%rdi), %r11d
  9625. addl 16(%rdi), %r12d
  9626. addl 20(%rdi), %r13d
  9627. addl 24(%rdi), %r14d
  9628. addl 28(%rdi), %r15d
  9629. addq $0x40, %rbp
  9630. subl $0x40, %esi
  9631. movl %r8d, (%rdi)
  9632. movl %r9d, 4(%rdi)
  9633. movl %r10d, 8(%rdi)
  9634. movl %r11d, 12(%rdi)
  9635. movl %r12d, 16(%rdi)
  9636. movl %r13d, 20(%rdi)
  9637. movl %r14d, 24(%rdi)
  9638. movl %r15d, 28(%rdi)
  9639. jnz L_sha256_len_avx1_len_rorx_start
  9640. xorq %rax, %rax
  9641. vzeroupper
  9642. addq $0x40, %rsp
  9643. popq %rbp
  9644. popq %r15
  9645. popq %r14
  9646. popq %r13
  9647. popq %r12
  9648. popq %rbx
  9649. repz retq
  9650. #ifndef __APPLE__
  9651. .size Transform_Sha256_AVX1_RORX_Len,.-Transform_Sha256_AVX1_RORX_Len
  9652. #endif /* __APPLE__ */
  9653. #endif /* HAVE_INTEL_AVX1 */
  9654. #ifdef HAVE_INTEL_AVX2
  9655. #ifndef __APPLE__
  9656. .data
  9657. #else
  9658. .section __DATA,__data
  9659. #endif /* __APPLE__ */
  9660. L_avx2_sha256_k:
  9661. .long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
  9662. .long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
  9663. .long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
  9664. .long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
  9665. .long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
  9666. .long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
  9667. .long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
  9668. .long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
  9669. .long 0xe49b69c1,0xefbe4786,0xfc19dc6,0x240ca1cc
  9670. .long 0xe49b69c1,0xefbe4786,0xfc19dc6,0x240ca1cc
  9671. .long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
  9672. .long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
  9673. .long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
  9674. .long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
  9675. .long 0xc6e00bf3,0xd5a79147,0x6ca6351,0x14292967
  9676. .long 0xc6e00bf3,0xd5a79147,0x6ca6351,0x14292967
  9677. .long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
  9678. .long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
  9679. .long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
  9680. .long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
  9681. .long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
  9682. .long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
  9683. .long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
  9684. .long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
  9685. .long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
  9686. .long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
  9687. .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
  9688. .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
  9689. .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
  9690. .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
  9691. .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
  9692. .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
  9693. #ifndef __APPLE__
  9694. .data
  9695. #else
  9696. .section __DATA,__data
  9697. #endif /* __APPLE__ */
  9698. #ifndef __APPLE__
  9699. .align 32
  9700. #else
  9701. .p2align 5
  9702. #endif /* __APPLE__ */
  9703. L_avx2_sha256_shuf_00BA:
  9704. .quad 0xb0a090803020100, 0xffffffffffffffff
  9705. .quad 0xb0a090803020100, 0xffffffffffffffff
  9706. #ifndef __APPLE__
  9707. .data
  9708. #else
  9709. .section __DATA,__data
  9710. #endif /* __APPLE__ */
  9711. #ifndef __APPLE__
  9712. .align 32
  9713. #else
  9714. .p2align 5
  9715. #endif /* __APPLE__ */
  9716. L_avx2_sha256_shuf_DC00:
  9717. .quad 0xffffffffffffffff, 0xb0a090803020100
  9718. .quad 0xffffffffffffffff, 0xb0a090803020100
  9719. #ifndef __APPLE__
  9720. .data
  9721. #else
  9722. .section __DATA,__data
  9723. #endif /* __APPLE__ */
  9724. #ifndef __APPLE__
  9725. .align 32
  9726. #else
  9727. .p2align 5
  9728. #endif /* __APPLE__ */
  9729. L_avx2_sha256_flip_mask:
  9730. .quad 0x405060700010203, 0xc0d0e0f08090a0b
  9731. .quad 0x405060700010203, 0xc0d0e0f08090a0b
  9732. #ifndef __APPLE__
  9733. .text
  9734. .globl Transform_Sha256_AVX2
  9735. .type Transform_Sha256_AVX2,@function
  9736. .align 16
  9737. Transform_Sha256_AVX2:
  9738. #else
  9739. .section __TEXT,__text
  9740. .globl _Transform_Sha256_AVX2
  9741. .p2align 4
  9742. _Transform_Sha256_AVX2:
  9743. #endif /* __APPLE__ */
  9744. pushq %rbx
  9745. pushq %r12
  9746. pushq %r13
  9747. pushq %r14
  9748. pushq %r15
  9749. subq $0x200, %rsp
  9750. leaq 32(%rdi), %rax
  9751. vmovdqa L_avx2_sha256_flip_mask(%rip), %xmm13
  9752. vmovdqa L_avx2_sha256_shuf_00BA(%rip), %ymm11
  9753. vmovdqa L_avx2_sha256_shuf_DC00(%rip), %ymm12
  9754. movl (%rdi), %r8d
  9755. movl 4(%rdi), %r9d
  9756. movl 8(%rdi), %r10d
  9757. movl 12(%rdi), %r11d
  9758. movl 16(%rdi), %r12d
  9759. movl 20(%rdi), %r13d
  9760. movl 24(%rdi), %r14d
  9761. movl 28(%rdi), %r15d
  9762. # X0, X1, X2, X3 = W[0..15]
  9763. vmovdqu (%rax), %xmm0
  9764. vmovdqu 16(%rax), %xmm1
  9765. vpshufb %xmm13, %xmm0, %xmm0
  9766. vpshufb %xmm13, %xmm1, %xmm1
  9767. vmovdqu 32(%rax), %xmm2
  9768. vmovdqu 48(%rax), %xmm3
  9769. vpshufb %xmm13, %xmm2, %xmm2
  9770. vpshufb %xmm13, %xmm3, %xmm3
  9771. movl %r9d, %ebx
  9772. movl %r12d, %edx
  9773. xorl %r10d, %ebx
  9774. # set_w_k_xfer_4: 0
  9775. vpaddd 0+L_avx2_sha256_k(%rip), %ymm0, %ymm4
  9776. vpaddd 32+L_avx2_sha256_k(%rip), %ymm1, %ymm5
  9777. vmovdqu %ymm4, (%rsp)
  9778. vmovdqu %ymm5, 32(%rsp)
  9779. vpaddd 64+L_avx2_sha256_k(%rip), %ymm2, %ymm4
  9780. vpaddd 96+L_avx2_sha256_k(%rip), %ymm3, %ymm5
  9781. vmovdqu %ymm4, 64(%rsp)
  9782. vmovdqu %ymm5, 96(%rsp)
  9783. # msg_sched: 0-3
  9784. # rnd_0: 0 - 0
  9785. rorl $14, %edx
  9786. vpalignr $4, %ymm0, %ymm1, %ymm5
  9787. vpalignr $4, %ymm2, %ymm3, %ymm4
  9788. # rnd_0: 1 - 2
  9789. movl %r9d, %eax
  9790. movl %r13d, %ecx
  9791. addl (%rsp), %r15d
  9792. xorl %r14d, %ecx
  9793. xorl %r12d, %edx
  9794. andl %r12d, %ecx
  9795. vpsrld $7, %ymm5, %ymm6
  9796. vpslld $25, %ymm5, %ymm7
  9797. # rnd_0: 3 - 4
  9798. rorl $5, %edx
  9799. xorl %r14d, %ecx
  9800. xorl %r12d, %edx
  9801. addl %ecx, %r15d
  9802. rorl $6, %edx
  9803. xorl %r8d, %eax
  9804. addl %edx, %r15d
  9805. movl %r8d, %ecx
  9806. vpsrld $18, %ymm5, %ymm8
  9807. vpslld $14, %ymm5, %ymm9
  9808. # rnd_0: 5 - 6
  9809. andl %eax, %ebx
  9810. rorl $9, %ecx
  9811. xorl %r8d, %ecx
  9812. xorl %r9d, %ebx
  9813. rorl $11, %ecx
  9814. addl %r15d, %r11d
  9815. xorl %r8d, %ecx
  9816. addl %ebx, %r15d
  9817. vpor %ymm6, %ymm7, %ymm6
  9818. vpor %ymm8, %ymm9, %ymm8
  9819. # rnd_0: 7 - 7
  9820. rorl $2, %ecx
  9821. movl %r11d, %edx
  9822. addl %ecx, %r15d
  9823. # rnd_1: 0 - 1
  9824. rorl $14, %edx
  9825. movl %r8d, %ebx
  9826. movl %r12d, %ecx
  9827. addl 4(%rsp), %r14d
  9828. xorl %r13d, %ecx
  9829. vpsrld $3, %ymm5, %ymm9
  9830. vpxor %ymm6, %ymm8, %ymm6
  9831. # rnd_1: 2 - 3
  9832. xorl %r11d, %edx
  9833. andl %r11d, %ecx
  9834. rorl $5, %edx
  9835. xorl %r13d, %ecx
  9836. xorl %r11d, %edx
  9837. addl %ecx, %r14d
  9838. vpxor %ymm6, %ymm9, %ymm5
  9839. vpshufd $0xfa, %ymm3, %ymm6
  9840. # rnd_1: 4 - 5
  9841. rorl $6, %edx
  9842. xorl %r15d, %ebx
  9843. addl %edx, %r14d
  9844. movl %r15d, %ecx
  9845. andl %ebx, %eax
  9846. rorl $9, %ecx
  9847. xorl %r15d, %ecx
  9848. xorl %r8d, %eax
  9849. vpsrld $10, %ymm6, %ymm8
  9850. vpsrlq $19, %ymm6, %ymm7
  9851. # rnd_1: 6 - 7
  9852. rorl $11, %ecx
  9853. addl %r14d, %r10d
  9854. xorl %r15d, %ecx
  9855. addl %eax, %r14d
  9856. rorl $2, %ecx
  9857. movl %r10d, %edx
  9858. addl %ecx, %r14d
  9859. # rnd_0: 0 - 0
  9860. rorl $14, %edx
  9861. vpsrlq $0x11, %ymm6, %ymm6
  9862. vpaddd %ymm0, %ymm4, %ymm4
  9863. # rnd_0: 1 - 3
  9864. movl %r15d, %eax
  9865. movl %r11d, %ecx
  9866. addl 8(%rsp), %r13d
  9867. xorl %r12d, %ecx
  9868. xorl %r10d, %edx
  9869. andl %r10d, %ecx
  9870. rorl $5, %edx
  9871. xorl %r12d, %ecx
  9872. xorl %r10d, %edx
  9873. addl %ecx, %r13d
  9874. vpxor %ymm6, %ymm7, %ymm6
  9875. vpaddd %ymm5, %ymm4, %ymm4
  9876. # rnd_0: 4 - 4
  9877. rorl $6, %edx
  9878. xorl %r14d, %eax
  9879. addl %edx, %r13d
  9880. movl %r14d, %ecx
  9881. vpxor %ymm6, %ymm8, %ymm8
  9882. # rnd_0: 5 - 5
  9883. andl %eax, %ebx
  9884. rorl $9, %ecx
  9885. xorl %r14d, %ecx
  9886. xorl %r15d, %ebx
  9887. vpshufb %ymm11, %ymm8, %ymm8
  9888. # rnd_0: 6 - 6
  9889. rorl $11, %ecx
  9890. addl %r13d, %r9d
  9891. xorl %r14d, %ecx
  9892. addl %ebx, %r13d
  9893. vpaddd %ymm8, %ymm4, %ymm4
  9894. # rnd_0: 7 - 7
  9895. rorl $2, %ecx
  9896. movl %r9d, %edx
  9897. addl %ecx, %r13d
  9898. # rnd_1: 0 - 0
  9899. rorl $14, %edx
  9900. vpshufd $0x50, %ymm4, %ymm6
  9901. # rnd_1: 1 - 1
  9902. movl %r14d, %ebx
  9903. movl %r10d, %ecx
  9904. addl 12(%rsp), %r12d
  9905. xorl %r11d, %ecx
  9906. vpsrlq $0x11, %ymm6, %ymm8
  9907. vpsrlq $19, %ymm6, %ymm7
  9908. # rnd_1: 2 - 3
  9909. xorl %r9d, %edx
  9910. andl %r9d, %ecx
  9911. rorl $5, %edx
  9912. xorl %r11d, %ecx
  9913. xorl %r9d, %edx
  9914. addl %ecx, %r12d
  9915. vpsrld $10, %ymm6, %ymm9
  9916. vpxor %ymm8, %ymm7, %ymm8
  9917. # rnd_1: 4 - 5
  9918. rorl $6, %edx
  9919. xorl %r13d, %ebx
  9920. addl %edx, %r12d
  9921. movl %r13d, %ecx
  9922. andl %ebx, %eax
  9923. rorl $9, %ecx
  9924. xorl %r13d, %ecx
  9925. xorl %r14d, %eax
  9926. vpxor %ymm9, %ymm8, %ymm9
  9927. # rnd_1: 6 - 6
  9928. rorl $11, %ecx
  9929. addl %r12d, %r8d
  9930. xorl %r13d, %ecx
  9931. addl %eax, %r12d
  9932. vpshufb %ymm12, %ymm9, %ymm9
  9933. # rnd_1: 7 - 7
  9934. rorl $2, %ecx
  9935. movl %r8d, %edx
  9936. addl %ecx, %r12d
  9937. vpaddd %ymm4, %ymm9, %ymm0
  9938. # msg_sched done: 0-3
  9939. # msg_sched: 8-11
  9940. # rnd_0: 0 - 0
  9941. rorl $14, %edx
  9942. vpalignr $4, %ymm1, %ymm2, %ymm5
  9943. vpalignr $4, %ymm3, %ymm0, %ymm4
  9944. # rnd_0: 1 - 2
  9945. movl %r13d, %eax
  9946. movl %r9d, %ecx
  9947. addl 32(%rsp), %r11d
  9948. xorl %r10d, %ecx
  9949. xorl %r8d, %edx
  9950. andl %r8d, %ecx
  9951. vpsrld $7, %ymm5, %ymm6
  9952. vpslld $25, %ymm5, %ymm7
  9953. # rnd_0: 3 - 4
  9954. rorl $5, %edx
  9955. xorl %r10d, %ecx
  9956. xorl %r8d, %edx
  9957. addl %ecx, %r11d
  9958. rorl $6, %edx
  9959. xorl %r12d, %eax
  9960. addl %edx, %r11d
  9961. movl %r12d, %ecx
  9962. vpsrld $18, %ymm5, %ymm8
  9963. vpslld $14, %ymm5, %ymm9
  9964. # rnd_0: 5 - 6
  9965. andl %eax, %ebx
  9966. rorl $9, %ecx
  9967. xorl %r12d, %ecx
  9968. xorl %r13d, %ebx
  9969. rorl $11, %ecx
  9970. addl %r11d, %r15d
  9971. xorl %r12d, %ecx
  9972. addl %ebx, %r11d
  9973. vpor %ymm6, %ymm7, %ymm6
  9974. vpor %ymm8, %ymm9, %ymm8
  9975. # rnd_0: 7 - 7
  9976. rorl $2, %ecx
  9977. movl %r15d, %edx
  9978. addl %ecx, %r11d
  9979. # rnd_1: 0 - 1
  9980. rorl $14, %edx
  9981. movl %r12d, %ebx
  9982. movl %r8d, %ecx
  9983. addl 36(%rsp), %r10d
  9984. xorl %r9d, %ecx
  9985. vpsrld $3, %ymm5, %ymm9
  9986. vpxor %ymm6, %ymm8, %ymm6
  9987. # rnd_1: 2 - 3
  9988. xorl %r15d, %edx
  9989. andl %r15d, %ecx
  9990. rorl $5, %edx
  9991. xorl %r9d, %ecx
  9992. xorl %r15d, %edx
  9993. addl %ecx, %r10d
  9994. vpxor %ymm6, %ymm9, %ymm5
  9995. vpshufd $0xfa, %ymm0, %ymm6
  9996. # rnd_1: 4 - 5
  9997. rorl $6, %edx
  9998. xorl %r11d, %ebx
  9999. addl %edx, %r10d
  10000. movl %r11d, %ecx
  10001. andl %ebx, %eax
  10002. rorl $9, %ecx
  10003. xorl %r11d, %ecx
  10004. xorl %r12d, %eax
  10005. vpsrld $10, %ymm6, %ymm8
  10006. vpsrlq $19, %ymm6, %ymm7
  10007. # rnd_1: 6 - 7
  10008. rorl $11, %ecx
  10009. addl %r10d, %r14d
  10010. xorl %r11d, %ecx
  10011. addl %eax, %r10d
  10012. rorl $2, %ecx
  10013. movl %r14d, %edx
  10014. addl %ecx, %r10d
  10015. # rnd_0: 0 - 0
  10016. rorl $14, %edx
  10017. vpsrlq $0x11, %ymm6, %ymm6
  10018. vpaddd %ymm1, %ymm4, %ymm4
  10019. # rnd_0: 1 - 3
  10020. movl %r11d, %eax
  10021. movl %r15d, %ecx
  10022. addl 40(%rsp), %r9d
  10023. xorl %r8d, %ecx
  10024. xorl %r14d, %edx
  10025. andl %r14d, %ecx
  10026. rorl $5, %edx
  10027. xorl %r8d, %ecx
  10028. xorl %r14d, %edx
  10029. addl %ecx, %r9d
  10030. vpxor %ymm6, %ymm7, %ymm6
  10031. vpaddd %ymm5, %ymm4, %ymm4
  10032. # rnd_0: 4 - 4
  10033. rorl $6, %edx
  10034. xorl %r10d, %eax
  10035. addl %edx, %r9d
  10036. movl %r10d, %ecx
  10037. vpxor %ymm6, %ymm8, %ymm8
  10038. # rnd_0: 5 - 5
  10039. andl %eax, %ebx
  10040. rorl $9, %ecx
  10041. xorl %r10d, %ecx
  10042. xorl %r11d, %ebx
  10043. vpshufb %ymm11, %ymm8, %ymm8
  10044. # rnd_0: 6 - 6
  10045. rorl $11, %ecx
  10046. addl %r9d, %r13d
  10047. xorl %r10d, %ecx
  10048. addl %ebx, %r9d
  10049. vpaddd %ymm8, %ymm4, %ymm4
  10050. # rnd_0: 7 - 7
  10051. rorl $2, %ecx
  10052. movl %r13d, %edx
  10053. addl %ecx, %r9d
  10054. # rnd_1: 0 - 0
  10055. rorl $14, %edx
  10056. vpshufd $0x50, %ymm4, %ymm6
  10057. # rnd_1: 1 - 1
  10058. movl %r10d, %ebx
  10059. movl %r14d, %ecx
  10060. addl 44(%rsp), %r8d
  10061. xorl %r15d, %ecx
  10062. vpsrlq $0x11, %ymm6, %ymm8
  10063. vpsrlq $19, %ymm6, %ymm7
  10064. # rnd_1: 2 - 3
  10065. xorl %r13d, %edx
  10066. andl %r13d, %ecx
  10067. rorl $5, %edx
  10068. xorl %r15d, %ecx
  10069. xorl %r13d, %edx
  10070. addl %ecx, %r8d
  10071. vpsrld $10, %ymm6, %ymm9
  10072. vpxor %ymm8, %ymm7, %ymm8
  10073. # rnd_1: 4 - 5
  10074. rorl $6, %edx
  10075. xorl %r9d, %ebx
  10076. addl %edx, %r8d
  10077. movl %r9d, %ecx
  10078. andl %ebx, %eax
  10079. rorl $9, %ecx
  10080. xorl %r9d, %ecx
  10081. xorl %r10d, %eax
  10082. vpxor %ymm9, %ymm8, %ymm9
  10083. # rnd_1: 6 - 6
  10084. rorl $11, %ecx
  10085. addl %r8d, %r12d
  10086. xorl %r9d, %ecx
  10087. addl %eax, %r8d
  10088. vpshufb %ymm12, %ymm9, %ymm9
  10089. # rnd_1: 7 - 7
  10090. rorl $2, %ecx
  10091. movl %r12d, %edx
  10092. addl %ecx, %r8d
  10093. vpaddd %ymm4, %ymm9, %ymm1
  10094. # msg_sched done: 8-11
  10095. # msg_sched: 16-19
  10096. # rnd_0: 0 - 0
  10097. rorl $14, %edx
  10098. vpalignr $4, %ymm2, %ymm3, %ymm5
  10099. vpalignr $4, %ymm0, %ymm1, %ymm4
  10100. # rnd_0: 1 - 2
  10101. movl %r9d, %eax
  10102. movl %r13d, %ecx
  10103. addl 64(%rsp), %r15d
  10104. xorl %r14d, %ecx
  10105. xorl %r12d, %edx
  10106. andl %r12d, %ecx
  10107. vpsrld $7, %ymm5, %ymm6
  10108. vpslld $25, %ymm5, %ymm7
  10109. # rnd_0: 3 - 4
  10110. rorl $5, %edx
  10111. xorl %r14d, %ecx
  10112. xorl %r12d, %edx
  10113. addl %ecx, %r15d
  10114. rorl $6, %edx
  10115. xorl %r8d, %eax
  10116. addl %edx, %r15d
  10117. movl %r8d, %ecx
  10118. vpsrld $18, %ymm5, %ymm8
  10119. vpslld $14, %ymm5, %ymm9
  10120. # rnd_0: 5 - 6
  10121. andl %eax, %ebx
  10122. rorl $9, %ecx
  10123. xorl %r8d, %ecx
  10124. xorl %r9d, %ebx
  10125. rorl $11, %ecx
  10126. addl %r15d, %r11d
  10127. xorl %r8d, %ecx
  10128. addl %ebx, %r15d
  10129. vpor %ymm6, %ymm7, %ymm6
  10130. vpor %ymm8, %ymm9, %ymm8
  10131. # rnd_0: 7 - 7
  10132. rorl $2, %ecx
  10133. movl %r11d, %edx
  10134. addl %ecx, %r15d
  10135. # rnd_1: 0 - 1
  10136. rorl $14, %edx
  10137. movl %r8d, %ebx
  10138. movl %r12d, %ecx
  10139. addl 68(%rsp), %r14d
  10140. xorl %r13d, %ecx
  10141. vpsrld $3, %ymm5, %ymm9
  10142. vpxor %ymm6, %ymm8, %ymm6
  10143. # rnd_1: 2 - 3
  10144. xorl %r11d, %edx
  10145. andl %r11d, %ecx
  10146. rorl $5, %edx
  10147. xorl %r13d, %ecx
  10148. xorl %r11d, %edx
  10149. addl %ecx, %r14d
  10150. vpxor %ymm6, %ymm9, %ymm5
  10151. vpshufd $0xfa, %ymm1, %ymm6
  10152. # rnd_1: 4 - 5
  10153. rorl $6, %edx
  10154. xorl %r15d, %ebx
  10155. addl %edx, %r14d
  10156. movl %r15d, %ecx
  10157. andl %ebx, %eax
  10158. rorl $9, %ecx
  10159. xorl %r15d, %ecx
  10160. xorl %r8d, %eax
  10161. vpsrld $10, %ymm6, %ymm8
  10162. vpsrlq $19, %ymm6, %ymm7
  10163. # rnd_1: 6 - 7
  10164. rorl $11, %ecx
  10165. addl %r14d, %r10d
  10166. xorl %r15d, %ecx
  10167. addl %eax, %r14d
  10168. rorl $2, %ecx
  10169. movl %r10d, %edx
  10170. addl %ecx, %r14d
  10171. # rnd_0: 0 - 0
  10172. rorl $14, %edx
  10173. vpsrlq $0x11, %ymm6, %ymm6
  10174. vpaddd %ymm2, %ymm4, %ymm4
  10175. # rnd_0: 1 - 3
  10176. movl %r15d, %eax
  10177. movl %r11d, %ecx
  10178. addl 72(%rsp), %r13d
  10179. xorl %r12d, %ecx
  10180. xorl %r10d, %edx
  10181. andl %r10d, %ecx
  10182. rorl $5, %edx
  10183. xorl %r12d, %ecx
  10184. xorl %r10d, %edx
  10185. addl %ecx, %r13d
  10186. vpxor %ymm6, %ymm7, %ymm6
  10187. vpaddd %ymm5, %ymm4, %ymm4
  10188. # rnd_0: 4 - 4
  10189. rorl $6, %edx
  10190. xorl %r14d, %eax
  10191. addl %edx, %r13d
  10192. movl %r14d, %ecx
  10193. vpxor %ymm6, %ymm8, %ymm8
  10194. # rnd_0: 5 - 5
  10195. andl %eax, %ebx
  10196. rorl $9, %ecx
  10197. xorl %r14d, %ecx
  10198. xorl %r15d, %ebx
  10199. vpshufb %ymm11, %ymm8, %ymm8
  10200. # rnd_0: 6 - 6
  10201. rorl $11, %ecx
  10202. addl %r13d, %r9d
  10203. xorl %r14d, %ecx
  10204. addl %ebx, %r13d
  10205. vpaddd %ymm8, %ymm4, %ymm4
  10206. # rnd_0: 7 - 7
  10207. rorl $2, %ecx
  10208. movl %r9d, %edx
  10209. addl %ecx, %r13d
  10210. # rnd_1: 0 - 0
  10211. rorl $14, %edx
  10212. vpshufd $0x50, %ymm4, %ymm6
  10213. # rnd_1: 1 - 1
  10214. movl %r14d, %ebx
  10215. movl %r10d, %ecx
  10216. addl 76(%rsp), %r12d
  10217. xorl %r11d, %ecx
  10218. vpsrlq $0x11, %ymm6, %ymm8
  10219. vpsrlq $19, %ymm6, %ymm7
  10220. # rnd_1: 2 - 3
  10221. xorl %r9d, %edx
  10222. andl %r9d, %ecx
  10223. rorl $5, %edx
  10224. xorl %r11d, %ecx
  10225. xorl %r9d, %edx
  10226. addl %ecx, %r12d
  10227. vpsrld $10, %ymm6, %ymm9
  10228. vpxor %ymm8, %ymm7, %ymm8
  10229. # rnd_1: 4 - 5
  10230. rorl $6, %edx
  10231. xorl %r13d, %ebx
  10232. addl %edx, %r12d
  10233. movl %r13d, %ecx
  10234. andl %ebx, %eax
  10235. rorl $9, %ecx
  10236. xorl %r13d, %ecx
  10237. xorl %r14d, %eax
  10238. vpxor %ymm9, %ymm8, %ymm9
  10239. # rnd_1: 6 - 6
  10240. rorl $11, %ecx
  10241. addl %r12d, %r8d
  10242. xorl %r13d, %ecx
  10243. addl %eax, %r12d
  10244. vpshufb %ymm12, %ymm9, %ymm9
  10245. # rnd_1: 7 - 7
  10246. rorl $2, %ecx
  10247. movl %r8d, %edx
  10248. addl %ecx, %r12d
  10249. vpaddd %ymm4, %ymm9, %ymm2
  10250. # msg_sched done: 16-19
  10251. # msg_sched: 24-27
  10252. # rnd_0: 0 - 0
  10253. rorl $14, %edx
  10254. vpalignr $4, %ymm3, %ymm0, %ymm5
  10255. vpalignr $4, %ymm1, %ymm2, %ymm4
  10256. # rnd_0: 1 - 2
  10257. movl %r13d, %eax
  10258. movl %r9d, %ecx
  10259. addl 96(%rsp), %r11d
  10260. xorl %r10d, %ecx
  10261. xorl %r8d, %edx
  10262. andl %r8d, %ecx
  10263. vpsrld $7, %ymm5, %ymm6
  10264. vpslld $25, %ymm5, %ymm7
  10265. # rnd_0: 3 - 4
  10266. rorl $5, %edx
  10267. xorl %r10d, %ecx
  10268. xorl %r8d, %edx
  10269. addl %ecx, %r11d
  10270. rorl $6, %edx
  10271. xorl %r12d, %eax
  10272. addl %edx, %r11d
  10273. movl %r12d, %ecx
  10274. vpsrld $18, %ymm5, %ymm8
  10275. vpslld $14, %ymm5, %ymm9
  10276. # rnd_0: 5 - 6
  10277. andl %eax, %ebx
  10278. rorl $9, %ecx
  10279. xorl %r12d, %ecx
  10280. xorl %r13d, %ebx
  10281. rorl $11, %ecx
  10282. addl %r11d, %r15d
  10283. xorl %r12d, %ecx
  10284. addl %ebx, %r11d
  10285. vpor %ymm6, %ymm7, %ymm6
  10286. vpor %ymm8, %ymm9, %ymm8
  10287. # rnd_0: 7 - 7
  10288. rorl $2, %ecx
  10289. movl %r15d, %edx
  10290. addl %ecx, %r11d
  10291. # rnd_1: 0 - 1
  10292. rorl $14, %edx
  10293. movl %r12d, %ebx
  10294. movl %r8d, %ecx
  10295. addl 100(%rsp), %r10d
  10296. xorl %r9d, %ecx
  10297. vpsrld $3, %ymm5, %ymm9
  10298. vpxor %ymm6, %ymm8, %ymm6
  10299. # rnd_1: 2 - 3
  10300. xorl %r15d, %edx
  10301. andl %r15d, %ecx
  10302. rorl $5, %edx
  10303. xorl %r9d, %ecx
  10304. xorl %r15d, %edx
  10305. addl %ecx, %r10d
  10306. vpxor %ymm6, %ymm9, %ymm5
  10307. vpshufd $0xfa, %ymm2, %ymm6
  10308. # rnd_1: 4 - 5
  10309. rorl $6, %edx
  10310. xorl %r11d, %ebx
  10311. addl %edx, %r10d
  10312. movl %r11d, %ecx
  10313. andl %ebx, %eax
  10314. rorl $9, %ecx
  10315. xorl %r11d, %ecx
  10316. xorl %r12d, %eax
  10317. vpsrld $10, %ymm6, %ymm8
  10318. vpsrlq $19, %ymm6, %ymm7
  10319. # rnd_1: 6 - 7
  10320. rorl $11, %ecx
  10321. addl %r10d, %r14d
  10322. xorl %r11d, %ecx
  10323. addl %eax, %r10d
  10324. rorl $2, %ecx
  10325. movl %r14d, %edx
  10326. addl %ecx, %r10d
  10327. # rnd_0: 0 - 0
  10328. rorl $14, %edx
  10329. vpsrlq $0x11, %ymm6, %ymm6
  10330. vpaddd %ymm3, %ymm4, %ymm4
  10331. # rnd_0: 1 - 3
  10332. movl %r11d, %eax
  10333. movl %r15d, %ecx
  10334. addl 104(%rsp), %r9d
  10335. xorl %r8d, %ecx
  10336. xorl %r14d, %edx
  10337. andl %r14d, %ecx
  10338. rorl $5, %edx
  10339. xorl %r8d, %ecx
  10340. xorl %r14d, %edx
  10341. addl %ecx, %r9d
  10342. vpxor %ymm6, %ymm7, %ymm6
  10343. vpaddd %ymm5, %ymm4, %ymm4
  10344. # rnd_0: 4 - 4
  10345. rorl $6, %edx
  10346. xorl %r10d, %eax
  10347. addl %edx, %r9d
  10348. movl %r10d, %ecx
  10349. vpxor %ymm6, %ymm8, %ymm8
  10350. # rnd_0: 5 - 5
  10351. andl %eax, %ebx
  10352. rorl $9, %ecx
  10353. xorl %r10d, %ecx
  10354. xorl %r11d, %ebx
  10355. vpshufb %ymm11, %ymm8, %ymm8
  10356. # rnd_0: 6 - 6
  10357. rorl $11, %ecx
  10358. addl %r9d, %r13d
  10359. xorl %r10d, %ecx
  10360. addl %ebx, %r9d
  10361. vpaddd %ymm8, %ymm4, %ymm4
  10362. # rnd_0: 7 - 7
  10363. rorl $2, %ecx
  10364. movl %r13d, %edx
  10365. addl %ecx, %r9d
  10366. # rnd_1: 0 - 0
  10367. rorl $14, %edx
  10368. vpshufd $0x50, %ymm4, %ymm6
  10369. # rnd_1: 1 - 1
  10370. movl %r10d, %ebx
  10371. movl %r14d, %ecx
  10372. addl 108(%rsp), %r8d
  10373. xorl %r15d, %ecx
  10374. vpsrlq $0x11, %ymm6, %ymm8
  10375. vpsrlq $19, %ymm6, %ymm7
  10376. # rnd_1: 2 - 3
  10377. xorl %r13d, %edx
  10378. andl %r13d, %ecx
  10379. rorl $5, %edx
  10380. xorl %r15d, %ecx
  10381. xorl %r13d, %edx
  10382. addl %ecx, %r8d
  10383. vpsrld $10, %ymm6, %ymm9
  10384. vpxor %ymm8, %ymm7, %ymm8
  10385. # rnd_1: 4 - 5
  10386. rorl $6, %edx
  10387. xorl %r9d, %ebx
  10388. addl %edx, %r8d
  10389. movl %r9d, %ecx
  10390. andl %ebx, %eax
  10391. rorl $9, %ecx
  10392. xorl %r9d, %ecx
  10393. xorl %r10d, %eax
  10394. vpxor %ymm9, %ymm8, %ymm9
  10395. # rnd_1: 6 - 6
  10396. rorl $11, %ecx
  10397. addl %r8d, %r12d
  10398. xorl %r9d, %ecx
  10399. addl %eax, %r8d
  10400. vpshufb %ymm12, %ymm9, %ymm9
  10401. # rnd_1: 7 - 7
  10402. rorl $2, %ecx
  10403. movl %r12d, %edx
  10404. addl %ecx, %r8d
  10405. vpaddd %ymm4, %ymm9, %ymm3
  10406. # msg_sched done: 24-27
  10407. # set_w_k_xfer_4: 4
  10408. vpaddd 128+L_avx2_sha256_k(%rip), %ymm0, %ymm4
  10409. vpaddd 160+L_avx2_sha256_k(%rip), %ymm1, %ymm5
  10410. vmovdqu %ymm4, 128(%rsp)
  10411. vmovdqu %ymm5, 160(%rsp)
  10412. vpaddd 192+L_avx2_sha256_k(%rip), %ymm2, %ymm4
  10413. vpaddd 224+L_avx2_sha256_k(%rip), %ymm3, %ymm5
  10414. vmovdqu %ymm4, 192(%rsp)
  10415. vmovdqu %ymm5, 224(%rsp)
  10416. # msg_sched: 32-35
  10417. # rnd_0: 0 - 0
  10418. rorl $14, %edx
  10419. vpalignr $4, %ymm0, %ymm1, %ymm5
  10420. vpalignr $4, %ymm2, %ymm3, %ymm4
  10421. # rnd_0: 1 - 2
  10422. movl %r9d, %eax
  10423. movl %r13d, %ecx
  10424. addl 128(%rsp), %r15d
  10425. xorl %r14d, %ecx
  10426. xorl %r12d, %edx
  10427. andl %r12d, %ecx
  10428. vpsrld $7, %ymm5, %ymm6
  10429. vpslld $25, %ymm5, %ymm7
  10430. # rnd_0: 3 - 4
  10431. rorl $5, %edx
  10432. xorl %r14d, %ecx
  10433. xorl %r12d, %edx
  10434. addl %ecx, %r15d
  10435. rorl $6, %edx
  10436. xorl %r8d, %eax
  10437. addl %edx, %r15d
  10438. movl %r8d, %ecx
  10439. vpsrld $18, %ymm5, %ymm8
  10440. vpslld $14, %ymm5, %ymm9
  10441. # rnd_0: 5 - 6
  10442. andl %eax, %ebx
  10443. rorl $9, %ecx
  10444. xorl %r8d, %ecx
  10445. xorl %r9d, %ebx
  10446. rorl $11, %ecx
  10447. addl %r15d, %r11d
  10448. xorl %r8d, %ecx
  10449. addl %ebx, %r15d
  10450. vpor %ymm6, %ymm7, %ymm6
  10451. vpor %ymm8, %ymm9, %ymm8
  10452. # rnd_0: 7 - 7
  10453. rorl $2, %ecx
  10454. movl %r11d, %edx
  10455. addl %ecx, %r15d
  10456. # rnd_1: 0 - 1
  10457. rorl $14, %edx
  10458. movl %r8d, %ebx
  10459. movl %r12d, %ecx
  10460. addl 132(%rsp), %r14d
  10461. xorl %r13d, %ecx
  10462. vpsrld $3, %ymm5, %ymm9
  10463. vpxor %ymm6, %ymm8, %ymm6
  10464. # rnd_1: 2 - 3
  10465. xorl %r11d, %edx
  10466. andl %r11d, %ecx
  10467. rorl $5, %edx
  10468. xorl %r13d, %ecx
  10469. xorl %r11d, %edx
  10470. addl %ecx, %r14d
  10471. vpxor %ymm6, %ymm9, %ymm5
  10472. vpshufd $0xfa, %ymm3, %ymm6
  10473. # rnd_1: 4 - 5
  10474. rorl $6, %edx
  10475. xorl %r15d, %ebx
  10476. addl %edx, %r14d
  10477. movl %r15d, %ecx
  10478. andl %ebx, %eax
  10479. rorl $9, %ecx
  10480. xorl %r15d, %ecx
  10481. xorl %r8d, %eax
  10482. vpsrld $10, %ymm6, %ymm8
  10483. vpsrlq $19, %ymm6, %ymm7
  10484. # rnd_1: 6 - 7
  10485. rorl $11, %ecx
  10486. addl %r14d, %r10d
  10487. xorl %r15d, %ecx
  10488. addl %eax, %r14d
  10489. rorl $2, %ecx
  10490. movl %r10d, %edx
  10491. addl %ecx, %r14d
  10492. # rnd_0: 0 - 0
  10493. rorl $14, %edx
  10494. vpsrlq $0x11, %ymm6, %ymm6
  10495. vpaddd %ymm0, %ymm4, %ymm4
  10496. # rnd_0: 1 - 3
  10497. movl %r15d, %eax
  10498. movl %r11d, %ecx
  10499. addl 136(%rsp), %r13d
  10500. xorl %r12d, %ecx
  10501. xorl %r10d, %edx
  10502. andl %r10d, %ecx
  10503. rorl $5, %edx
  10504. xorl %r12d, %ecx
  10505. xorl %r10d, %edx
  10506. addl %ecx, %r13d
  10507. vpxor %ymm6, %ymm7, %ymm6
  10508. vpaddd %ymm5, %ymm4, %ymm4
  10509. # rnd_0: 4 - 4
  10510. rorl $6, %edx
  10511. xorl %r14d, %eax
  10512. addl %edx, %r13d
  10513. movl %r14d, %ecx
  10514. vpxor %ymm6, %ymm8, %ymm8
  10515. # rnd_0: 5 - 5
  10516. andl %eax, %ebx
  10517. rorl $9, %ecx
  10518. xorl %r14d, %ecx
  10519. xorl %r15d, %ebx
  10520. vpshufb %ymm11, %ymm8, %ymm8
  10521. # rnd_0: 6 - 6
  10522. rorl $11, %ecx
  10523. addl %r13d, %r9d
  10524. xorl %r14d, %ecx
  10525. addl %ebx, %r13d
  10526. vpaddd %ymm8, %ymm4, %ymm4
  10527. # rnd_0: 7 - 7
  10528. rorl $2, %ecx
  10529. movl %r9d, %edx
  10530. addl %ecx, %r13d
  10531. # rnd_1: 0 - 0
  10532. rorl $14, %edx
  10533. vpshufd $0x50, %ymm4, %ymm6
  10534. # rnd_1: 1 - 1
  10535. movl %r14d, %ebx
  10536. movl %r10d, %ecx
  10537. addl 140(%rsp), %r12d
  10538. xorl %r11d, %ecx
  10539. vpsrlq $0x11, %ymm6, %ymm8
  10540. vpsrlq $19, %ymm6, %ymm7
  10541. # rnd_1: 2 - 3
  10542. xorl %r9d, %edx
  10543. andl %r9d, %ecx
  10544. rorl $5, %edx
  10545. xorl %r11d, %ecx
  10546. xorl %r9d, %edx
  10547. addl %ecx, %r12d
  10548. vpsrld $10, %ymm6, %ymm9
  10549. vpxor %ymm8, %ymm7, %ymm8
  10550. # rnd_1: 4 - 5
  10551. rorl $6, %edx
  10552. xorl %r13d, %ebx
  10553. addl %edx, %r12d
  10554. movl %r13d, %ecx
  10555. andl %ebx, %eax
  10556. rorl $9, %ecx
  10557. xorl %r13d, %ecx
  10558. xorl %r14d, %eax
  10559. vpxor %ymm9, %ymm8, %ymm9
  10560. # rnd_1: 6 - 6
  10561. rorl $11, %ecx
  10562. addl %r12d, %r8d
  10563. xorl %r13d, %ecx
  10564. addl %eax, %r12d
  10565. vpshufb %ymm12, %ymm9, %ymm9
  10566. # rnd_1: 7 - 7
  10567. rorl $2, %ecx
  10568. movl %r8d, %edx
  10569. addl %ecx, %r12d
  10570. vpaddd %ymm4, %ymm9, %ymm0
  10571. # msg_sched done: 32-35
  10572. # msg_sched: 40-43
  10573. # rnd_0: 0 - 0
  10574. rorl $14, %edx
  10575. vpalignr $4, %ymm1, %ymm2, %ymm5
  10576. vpalignr $4, %ymm3, %ymm0, %ymm4
  10577. # rnd_0: 1 - 2
  10578. movl %r13d, %eax
  10579. movl %r9d, %ecx
  10580. addl 160(%rsp), %r11d
  10581. xorl %r10d, %ecx
  10582. xorl %r8d, %edx
  10583. andl %r8d, %ecx
  10584. vpsrld $7, %ymm5, %ymm6
  10585. vpslld $25, %ymm5, %ymm7
  10586. # rnd_0: 3 - 4
  10587. rorl $5, %edx
  10588. xorl %r10d, %ecx
  10589. xorl %r8d, %edx
  10590. addl %ecx, %r11d
  10591. rorl $6, %edx
  10592. xorl %r12d, %eax
  10593. addl %edx, %r11d
  10594. movl %r12d, %ecx
  10595. vpsrld $18, %ymm5, %ymm8
  10596. vpslld $14, %ymm5, %ymm9
  10597. # rnd_0: 5 - 6
  10598. andl %eax, %ebx
  10599. rorl $9, %ecx
  10600. xorl %r12d, %ecx
  10601. xorl %r13d, %ebx
  10602. rorl $11, %ecx
  10603. addl %r11d, %r15d
  10604. xorl %r12d, %ecx
  10605. addl %ebx, %r11d
  10606. vpor %ymm6, %ymm7, %ymm6
  10607. vpor %ymm8, %ymm9, %ymm8
  10608. # rnd_0: 7 - 7
  10609. rorl $2, %ecx
  10610. movl %r15d, %edx
  10611. addl %ecx, %r11d
  10612. # rnd_1: 0 - 1
  10613. rorl $14, %edx
  10614. movl %r12d, %ebx
  10615. movl %r8d, %ecx
  10616. addl 164(%rsp), %r10d
  10617. xorl %r9d, %ecx
  10618. vpsrld $3, %ymm5, %ymm9
  10619. vpxor %ymm6, %ymm8, %ymm6
  10620. # rnd_1: 2 - 3
  10621. xorl %r15d, %edx
  10622. andl %r15d, %ecx
  10623. rorl $5, %edx
  10624. xorl %r9d, %ecx
  10625. xorl %r15d, %edx
  10626. addl %ecx, %r10d
  10627. vpxor %ymm6, %ymm9, %ymm5
  10628. vpshufd $0xfa, %ymm0, %ymm6
  10629. # rnd_1: 4 - 5
  10630. rorl $6, %edx
  10631. xorl %r11d, %ebx
  10632. addl %edx, %r10d
  10633. movl %r11d, %ecx
  10634. andl %ebx, %eax
  10635. rorl $9, %ecx
  10636. xorl %r11d, %ecx
  10637. xorl %r12d, %eax
  10638. vpsrld $10, %ymm6, %ymm8
  10639. vpsrlq $19, %ymm6, %ymm7
  10640. # rnd_1: 6 - 7
  10641. rorl $11, %ecx
  10642. addl %r10d, %r14d
  10643. xorl %r11d, %ecx
  10644. addl %eax, %r10d
  10645. rorl $2, %ecx
  10646. movl %r14d, %edx
  10647. addl %ecx, %r10d
  10648. # rnd_0: 0 - 0
  10649. rorl $14, %edx
  10650. vpsrlq $0x11, %ymm6, %ymm6
  10651. vpaddd %ymm1, %ymm4, %ymm4
  10652. # rnd_0: 1 - 3
  10653. movl %r11d, %eax
  10654. movl %r15d, %ecx
  10655. addl 168(%rsp), %r9d
  10656. xorl %r8d, %ecx
  10657. xorl %r14d, %edx
  10658. andl %r14d, %ecx
  10659. rorl $5, %edx
  10660. xorl %r8d, %ecx
  10661. xorl %r14d, %edx
  10662. addl %ecx, %r9d
  10663. vpxor %ymm6, %ymm7, %ymm6
  10664. vpaddd %ymm5, %ymm4, %ymm4
  10665. # rnd_0: 4 - 4
  10666. rorl $6, %edx
  10667. xorl %r10d, %eax
  10668. addl %edx, %r9d
  10669. movl %r10d, %ecx
  10670. vpxor %ymm6, %ymm8, %ymm8
  10671. # rnd_0: 5 - 5
  10672. andl %eax, %ebx
  10673. rorl $9, %ecx
  10674. xorl %r10d, %ecx
  10675. xorl %r11d, %ebx
  10676. vpshufb %ymm11, %ymm8, %ymm8
  10677. # rnd_0: 6 - 6
  10678. rorl $11, %ecx
  10679. addl %r9d, %r13d
  10680. xorl %r10d, %ecx
  10681. addl %ebx, %r9d
  10682. vpaddd %ymm8, %ymm4, %ymm4
  10683. # rnd_0: 7 - 7
  10684. rorl $2, %ecx
  10685. movl %r13d, %edx
  10686. addl %ecx, %r9d
  10687. # rnd_1: 0 - 0
  10688. rorl $14, %edx
  10689. vpshufd $0x50, %ymm4, %ymm6
  10690. # rnd_1: 1 - 1
  10691. movl %r10d, %ebx
  10692. movl %r14d, %ecx
  10693. addl 172(%rsp), %r8d
  10694. xorl %r15d, %ecx
  10695. vpsrlq $0x11, %ymm6, %ymm8
  10696. vpsrlq $19, %ymm6, %ymm7
  10697. # rnd_1: 2 - 3
  10698. xorl %r13d, %edx
  10699. andl %r13d, %ecx
  10700. rorl $5, %edx
  10701. xorl %r15d, %ecx
  10702. xorl %r13d, %edx
  10703. addl %ecx, %r8d
  10704. vpsrld $10, %ymm6, %ymm9
  10705. vpxor %ymm8, %ymm7, %ymm8
  10706. # rnd_1: 4 - 5
  10707. rorl $6, %edx
  10708. xorl %r9d, %ebx
  10709. addl %edx, %r8d
  10710. movl %r9d, %ecx
  10711. andl %ebx, %eax
  10712. rorl $9, %ecx
  10713. xorl %r9d, %ecx
  10714. xorl %r10d, %eax
  10715. vpxor %ymm9, %ymm8, %ymm9
  10716. # rnd_1: 6 - 6
  10717. rorl $11, %ecx
  10718. addl %r8d, %r12d
  10719. xorl %r9d, %ecx
  10720. addl %eax, %r8d
  10721. vpshufb %ymm12, %ymm9, %ymm9
  10722. # rnd_1: 7 - 7
  10723. rorl $2, %ecx
  10724. movl %r12d, %edx
  10725. addl %ecx, %r8d
  10726. vpaddd %ymm4, %ymm9, %ymm1
  10727. # msg_sched done: 40-43
  10728. # msg_sched: 48-51
  10729. # rnd_0: 0 - 0
  10730. rorl $14, %edx
  10731. vpalignr $4, %ymm2, %ymm3, %ymm5
  10732. vpalignr $4, %ymm0, %ymm1, %ymm4
  10733. # rnd_0: 1 - 2
  10734. movl %r9d, %eax
  10735. movl %r13d, %ecx
  10736. addl 192(%rsp), %r15d
  10737. xorl %r14d, %ecx
  10738. xorl %r12d, %edx
  10739. andl %r12d, %ecx
  10740. vpsrld $7, %ymm5, %ymm6
  10741. vpslld $25, %ymm5, %ymm7
  10742. # rnd_0: 3 - 4
  10743. rorl $5, %edx
  10744. xorl %r14d, %ecx
  10745. xorl %r12d, %edx
  10746. addl %ecx, %r15d
  10747. rorl $6, %edx
  10748. xorl %r8d, %eax
  10749. addl %edx, %r15d
  10750. movl %r8d, %ecx
  10751. vpsrld $18, %ymm5, %ymm8
  10752. vpslld $14, %ymm5, %ymm9
  10753. # rnd_0: 5 - 6
  10754. andl %eax, %ebx
  10755. rorl $9, %ecx
  10756. xorl %r8d, %ecx
  10757. xorl %r9d, %ebx
  10758. rorl $11, %ecx
  10759. addl %r15d, %r11d
  10760. xorl %r8d, %ecx
  10761. addl %ebx, %r15d
  10762. vpor %ymm6, %ymm7, %ymm6
  10763. vpor %ymm8, %ymm9, %ymm8
  10764. # rnd_0: 7 - 7
  10765. rorl $2, %ecx
  10766. movl %r11d, %edx
  10767. addl %ecx, %r15d
  10768. # rnd_1: 0 - 1
  10769. rorl $14, %edx
  10770. movl %r8d, %ebx
  10771. movl %r12d, %ecx
  10772. addl 196(%rsp), %r14d
  10773. xorl %r13d, %ecx
  10774. vpsrld $3, %ymm5, %ymm9
  10775. vpxor %ymm6, %ymm8, %ymm6
  10776. # rnd_1: 2 - 3
  10777. xorl %r11d, %edx
  10778. andl %r11d, %ecx
  10779. rorl $5, %edx
  10780. xorl %r13d, %ecx
  10781. xorl %r11d, %edx
  10782. addl %ecx, %r14d
  10783. vpxor %ymm6, %ymm9, %ymm5
  10784. vpshufd $0xfa, %ymm1, %ymm6
  10785. # rnd_1: 4 - 5
  10786. rorl $6, %edx
  10787. xorl %r15d, %ebx
  10788. addl %edx, %r14d
  10789. movl %r15d, %ecx
  10790. andl %ebx, %eax
  10791. rorl $9, %ecx
  10792. xorl %r15d, %ecx
  10793. xorl %r8d, %eax
  10794. vpsrld $10, %ymm6, %ymm8
  10795. vpsrlq $19, %ymm6, %ymm7
  10796. # rnd_1: 6 - 7
  10797. rorl $11, %ecx
  10798. addl %r14d, %r10d
  10799. xorl %r15d, %ecx
  10800. addl %eax, %r14d
  10801. rorl $2, %ecx
  10802. movl %r10d, %edx
  10803. addl %ecx, %r14d
  10804. # rnd_0: 0 - 0
  10805. rorl $14, %edx
  10806. vpsrlq $0x11, %ymm6, %ymm6
  10807. vpaddd %ymm2, %ymm4, %ymm4
  10808. # rnd_0: 1 - 3
  10809. movl %r15d, %eax
  10810. movl %r11d, %ecx
  10811. addl 200(%rsp), %r13d
  10812. xorl %r12d, %ecx
  10813. xorl %r10d, %edx
  10814. andl %r10d, %ecx
  10815. rorl $5, %edx
  10816. xorl %r12d, %ecx
  10817. xorl %r10d, %edx
  10818. addl %ecx, %r13d
  10819. vpxor %ymm6, %ymm7, %ymm6
  10820. vpaddd %ymm5, %ymm4, %ymm4
  10821. # rnd_0: 4 - 4
  10822. rorl $6, %edx
  10823. xorl %r14d, %eax
  10824. addl %edx, %r13d
  10825. movl %r14d, %ecx
  10826. vpxor %ymm6, %ymm8, %ymm8
  10827. # rnd_0: 5 - 5
  10828. andl %eax, %ebx
  10829. rorl $9, %ecx
  10830. xorl %r14d, %ecx
  10831. xorl %r15d, %ebx
  10832. vpshufb %ymm11, %ymm8, %ymm8
  10833. # rnd_0: 6 - 6
  10834. rorl $11, %ecx
  10835. addl %r13d, %r9d
  10836. xorl %r14d, %ecx
  10837. addl %ebx, %r13d
  10838. vpaddd %ymm8, %ymm4, %ymm4
  10839. # rnd_0: 7 - 7
  10840. rorl $2, %ecx
  10841. movl %r9d, %edx
  10842. addl %ecx, %r13d
  10843. # rnd_1: 0 - 0
  10844. rorl $14, %edx
  10845. vpshufd $0x50, %ymm4, %ymm6
  10846. # rnd_1: 1 - 1
  10847. movl %r14d, %ebx
  10848. movl %r10d, %ecx
  10849. addl 204(%rsp), %r12d
  10850. xorl %r11d, %ecx
  10851. vpsrlq $0x11, %ymm6, %ymm8
  10852. vpsrlq $19, %ymm6, %ymm7
  10853. # rnd_1: 2 - 3
  10854. xorl %r9d, %edx
  10855. andl %r9d, %ecx
  10856. rorl $5, %edx
  10857. xorl %r11d, %ecx
  10858. xorl %r9d, %edx
  10859. addl %ecx, %r12d
  10860. vpsrld $10, %ymm6, %ymm9
  10861. vpxor %ymm8, %ymm7, %ymm8
  10862. # rnd_1: 4 - 5
  10863. rorl $6, %edx
  10864. xorl %r13d, %ebx
  10865. addl %edx, %r12d
  10866. movl %r13d, %ecx
  10867. andl %ebx, %eax
  10868. rorl $9, %ecx
  10869. xorl %r13d, %ecx
  10870. xorl %r14d, %eax
  10871. vpxor %ymm9, %ymm8, %ymm9
  10872. # rnd_1: 6 - 6
  10873. rorl $11, %ecx
  10874. addl %r12d, %r8d
  10875. xorl %r13d, %ecx
  10876. addl %eax, %r12d
  10877. vpshufb %ymm12, %ymm9, %ymm9
  10878. # rnd_1: 7 - 7
  10879. rorl $2, %ecx
  10880. movl %r8d, %edx
  10881. addl %ecx, %r12d
  10882. vpaddd %ymm4, %ymm9, %ymm2
  10883. # msg_sched done: 48-51
  10884. # msg_sched: 56-59
  10885. # rnd_0: 0 - 0
  10886. rorl $14, %edx
  10887. vpalignr $4, %ymm3, %ymm0, %ymm5
  10888. vpalignr $4, %ymm1, %ymm2, %ymm4
  10889. # rnd_0: 1 - 2
  10890. movl %r13d, %eax
  10891. movl %r9d, %ecx
  10892. addl 224(%rsp), %r11d
  10893. xorl %r10d, %ecx
  10894. xorl %r8d, %edx
  10895. andl %r8d, %ecx
  10896. vpsrld $7, %ymm5, %ymm6
  10897. vpslld $25, %ymm5, %ymm7
  10898. # rnd_0: 3 - 4
  10899. rorl $5, %edx
  10900. xorl %r10d, %ecx
  10901. xorl %r8d, %edx
  10902. addl %ecx, %r11d
  10903. rorl $6, %edx
  10904. xorl %r12d, %eax
  10905. addl %edx, %r11d
  10906. movl %r12d, %ecx
  10907. vpsrld $18, %ymm5, %ymm8
  10908. vpslld $14, %ymm5, %ymm9
  10909. # rnd_0: 5 - 6
  10910. andl %eax, %ebx
  10911. rorl $9, %ecx
  10912. xorl %r12d, %ecx
  10913. xorl %r13d, %ebx
  10914. rorl $11, %ecx
  10915. addl %r11d, %r15d
  10916. xorl %r12d, %ecx
  10917. addl %ebx, %r11d
  10918. vpor %ymm6, %ymm7, %ymm6
  10919. vpor %ymm8, %ymm9, %ymm8
  10920. # rnd_0: 7 - 7
  10921. rorl $2, %ecx
  10922. movl %r15d, %edx
  10923. addl %ecx, %r11d
  10924. # rnd_1: 0 - 1
  10925. rorl $14, %edx
  10926. movl %r12d, %ebx
  10927. movl %r8d, %ecx
  10928. addl 228(%rsp), %r10d
  10929. xorl %r9d, %ecx
  10930. vpsrld $3, %ymm5, %ymm9
  10931. vpxor %ymm6, %ymm8, %ymm6
  10932. # rnd_1: 2 - 3
  10933. xorl %r15d, %edx
  10934. andl %r15d, %ecx
  10935. rorl $5, %edx
  10936. xorl %r9d, %ecx
  10937. xorl %r15d, %edx
  10938. addl %ecx, %r10d
  10939. vpxor %ymm6, %ymm9, %ymm5
  10940. vpshufd $0xfa, %ymm2, %ymm6
  10941. # rnd_1: 4 - 5
  10942. rorl $6, %edx
  10943. xorl %r11d, %ebx
  10944. addl %edx, %r10d
  10945. movl %r11d, %ecx
  10946. andl %ebx, %eax
  10947. rorl $9, %ecx
  10948. xorl %r11d, %ecx
  10949. xorl %r12d, %eax
  10950. vpsrld $10, %ymm6, %ymm8
  10951. vpsrlq $19, %ymm6, %ymm7
  10952. # rnd_1: 6 - 7
  10953. rorl $11, %ecx
  10954. addl %r10d, %r14d
  10955. xorl %r11d, %ecx
  10956. addl %eax, %r10d
  10957. rorl $2, %ecx
  10958. movl %r14d, %edx
  10959. addl %ecx, %r10d
  10960. # rnd_0: 0 - 0
  10961. rorl $14, %edx
  10962. vpsrlq $0x11, %ymm6, %ymm6
  10963. vpaddd %ymm3, %ymm4, %ymm4
  10964. # rnd_0: 1 - 3
  10965. movl %r11d, %eax
  10966. movl %r15d, %ecx
  10967. addl 232(%rsp), %r9d
  10968. xorl %r8d, %ecx
  10969. xorl %r14d, %edx
  10970. andl %r14d, %ecx
  10971. rorl $5, %edx
  10972. xorl %r8d, %ecx
  10973. xorl %r14d, %edx
  10974. addl %ecx, %r9d
  10975. vpxor %ymm6, %ymm7, %ymm6
  10976. vpaddd %ymm5, %ymm4, %ymm4
  10977. # rnd_0: 4 - 4
  10978. rorl $6, %edx
  10979. xorl %r10d, %eax
  10980. addl %edx, %r9d
  10981. movl %r10d, %ecx
  10982. vpxor %ymm6, %ymm8, %ymm8
  10983. # rnd_0: 5 - 5
  10984. andl %eax, %ebx
  10985. rorl $9, %ecx
  10986. xorl %r10d, %ecx
  10987. xorl %r11d, %ebx
  10988. vpshufb %ymm11, %ymm8, %ymm8
  10989. # rnd_0: 6 - 6
  10990. rorl $11, %ecx
  10991. addl %r9d, %r13d
  10992. xorl %r10d, %ecx
  10993. addl %ebx, %r9d
  10994. vpaddd %ymm8, %ymm4, %ymm4
  10995. # rnd_0: 7 - 7
  10996. rorl $2, %ecx
  10997. movl %r13d, %edx
  10998. addl %ecx, %r9d
  10999. # rnd_1: 0 - 0
  11000. rorl $14, %edx
  11001. vpshufd $0x50, %ymm4, %ymm6
  11002. # rnd_1: 1 - 1
  11003. movl %r10d, %ebx
  11004. movl %r14d, %ecx
  11005. addl 236(%rsp), %r8d
  11006. xorl %r15d, %ecx
  11007. vpsrlq $0x11, %ymm6, %ymm8
  11008. vpsrlq $19, %ymm6, %ymm7
  11009. # rnd_1: 2 - 3
  11010. xorl %r13d, %edx
  11011. andl %r13d, %ecx
  11012. rorl $5, %edx
  11013. xorl %r15d, %ecx
  11014. xorl %r13d, %edx
  11015. addl %ecx, %r8d
  11016. vpsrld $10, %ymm6, %ymm9
  11017. vpxor %ymm8, %ymm7, %ymm8
  11018. # rnd_1: 4 - 5
  11019. rorl $6, %edx
  11020. xorl %r9d, %ebx
  11021. addl %edx, %r8d
  11022. movl %r9d, %ecx
  11023. andl %ebx, %eax
  11024. rorl $9, %ecx
  11025. xorl %r9d, %ecx
  11026. xorl %r10d, %eax
  11027. vpxor %ymm9, %ymm8, %ymm9
  11028. # rnd_1: 6 - 6
  11029. rorl $11, %ecx
  11030. addl %r8d, %r12d
  11031. xorl %r9d, %ecx
  11032. addl %eax, %r8d
  11033. vpshufb %ymm12, %ymm9, %ymm9
  11034. # rnd_1: 7 - 7
  11035. rorl $2, %ecx
  11036. movl %r12d, %edx
  11037. addl %ecx, %r8d
  11038. vpaddd %ymm4, %ymm9, %ymm3
  11039. # msg_sched done: 56-59
  11040. # set_w_k_xfer_4: 8
  11041. vpaddd 256+L_avx2_sha256_k(%rip), %ymm0, %ymm4
  11042. vpaddd 288+L_avx2_sha256_k(%rip), %ymm1, %ymm5
  11043. vmovdqu %ymm4, 256(%rsp)
  11044. vmovdqu %ymm5, 288(%rsp)
  11045. vpaddd 320+L_avx2_sha256_k(%rip), %ymm2, %ymm4
  11046. vpaddd 352+L_avx2_sha256_k(%rip), %ymm3, %ymm5
  11047. vmovdqu %ymm4, 320(%rsp)
  11048. vmovdqu %ymm5, 352(%rsp)
  11049. # msg_sched: 64-67
  11050. # rnd_0: 0 - 0
  11051. rorl $14, %edx
  11052. vpalignr $4, %ymm0, %ymm1, %ymm5
  11053. vpalignr $4, %ymm2, %ymm3, %ymm4
  11054. # rnd_0: 1 - 2
  11055. movl %r9d, %eax
  11056. movl %r13d, %ecx
  11057. addl 256(%rsp), %r15d
  11058. xorl %r14d, %ecx
  11059. xorl %r12d, %edx
  11060. andl %r12d, %ecx
  11061. vpsrld $7, %ymm5, %ymm6
  11062. vpslld $25, %ymm5, %ymm7
  11063. # rnd_0: 3 - 4
  11064. rorl $5, %edx
  11065. xorl %r14d, %ecx
  11066. xorl %r12d, %edx
  11067. addl %ecx, %r15d
  11068. rorl $6, %edx
  11069. xorl %r8d, %eax
  11070. addl %edx, %r15d
  11071. movl %r8d, %ecx
  11072. vpsrld $18, %ymm5, %ymm8
  11073. vpslld $14, %ymm5, %ymm9
  11074. # rnd_0: 5 - 6
  11075. andl %eax, %ebx
  11076. rorl $9, %ecx
  11077. xorl %r8d, %ecx
  11078. xorl %r9d, %ebx
  11079. rorl $11, %ecx
  11080. addl %r15d, %r11d
  11081. xorl %r8d, %ecx
  11082. addl %ebx, %r15d
  11083. vpor %ymm6, %ymm7, %ymm6
  11084. vpor %ymm8, %ymm9, %ymm8
  11085. # rnd_0: 7 - 7
  11086. rorl $2, %ecx
  11087. movl %r11d, %edx
  11088. addl %ecx, %r15d
  11089. # rnd_1: 0 - 1
  11090. rorl $14, %edx
  11091. movl %r8d, %ebx
  11092. movl %r12d, %ecx
  11093. addl 260(%rsp), %r14d
  11094. xorl %r13d, %ecx
  11095. vpsrld $3, %ymm5, %ymm9
  11096. vpxor %ymm6, %ymm8, %ymm6
  11097. # rnd_1: 2 - 3
  11098. xorl %r11d, %edx
  11099. andl %r11d, %ecx
  11100. rorl $5, %edx
  11101. xorl %r13d, %ecx
  11102. xorl %r11d, %edx
  11103. addl %ecx, %r14d
  11104. vpxor %ymm6, %ymm9, %ymm5
  11105. vpshufd $0xfa, %ymm3, %ymm6
  11106. # rnd_1: 4 - 5
  11107. rorl $6, %edx
  11108. xorl %r15d, %ebx
  11109. addl %edx, %r14d
  11110. movl %r15d, %ecx
  11111. andl %ebx, %eax
  11112. rorl $9, %ecx
  11113. xorl %r15d, %ecx
  11114. xorl %r8d, %eax
  11115. vpsrld $10, %ymm6, %ymm8
  11116. vpsrlq $19, %ymm6, %ymm7
  11117. # rnd_1: 6 - 7
  11118. rorl $11, %ecx
  11119. addl %r14d, %r10d
  11120. xorl %r15d, %ecx
  11121. addl %eax, %r14d
  11122. rorl $2, %ecx
  11123. movl %r10d, %edx
  11124. addl %ecx, %r14d
  11125. # rnd_0: 0 - 0
  11126. rorl $14, %edx
  11127. vpsrlq $0x11, %ymm6, %ymm6
  11128. vpaddd %ymm0, %ymm4, %ymm4
  11129. # rnd_0: 1 - 3
  11130. movl %r15d, %eax
  11131. movl %r11d, %ecx
  11132. addl 264(%rsp), %r13d
  11133. xorl %r12d, %ecx
  11134. xorl %r10d, %edx
  11135. andl %r10d, %ecx
  11136. rorl $5, %edx
  11137. xorl %r12d, %ecx
  11138. xorl %r10d, %edx
  11139. addl %ecx, %r13d
  11140. vpxor %ymm6, %ymm7, %ymm6
  11141. vpaddd %ymm5, %ymm4, %ymm4
  11142. # rnd_0: 4 - 4
  11143. rorl $6, %edx
  11144. xorl %r14d, %eax
  11145. addl %edx, %r13d
  11146. movl %r14d, %ecx
  11147. vpxor %ymm6, %ymm8, %ymm8
  11148. # rnd_0: 5 - 5
  11149. andl %eax, %ebx
  11150. rorl $9, %ecx
  11151. xorl %r14d, %ecx
  11152. xorl %r15d, %ebx
  11153. vpshufb %ymm11, %ymm8, %ymm8
  11154. # rnd_0: 6 - 6
  11155. rorl $11, %ecx
  11156. addl %r13d, %r9d
  11157. xorl %r14d, %ecx
  11158. addl %ebx, %r13d
  11159. vpaddd %ymm8, %ymm4, %ymm4
  11160. # rnd_0: 7 - 7
  11161. rorl $2, %ecx
  11162. movl %r9d, %edx
  11163. addl %ecx, %r13d
  11164. # rnd_1: 0 - 0
  11165. rorl $14, %edx
  11166. vpshufd $0x50, %ymm4, %ymm6
  11167. # rnd_1: 1 - 1
  11168. movl %r14d, %ebx
  11169. movl %r10d, %ecx
  11170. addl 268(%rsp), %r12d
  11171. xorl %r11d, %ecx
  11172. vpsrlq $0x11, %ymm6, %ymm8
  11173. vpsrlq $19, %ymm6, %ymm7
  11174. # rnd_1: 2 - 3
  11175. xorl %r9d, %edx
  11176. andl %r9d, %ecx
  11177. rorl $5, %edx
  11178. xorl %r11d, %ecx
  11179. xorl %r9d, %edx
  11180. addl %ecx, %r12d
  11181. vpsrld $10, %ymm6, %ymm9
  11182. vpxor %ymm8, %ymm7, %ymm8
  11183. # rnd_1: 4 - 5
  11184. rorl $6, %edx
  11185. xorl %r13d, %ebx
  11186. addl %edx, %r12d
  11187. movl %r13d, %ecx
  11188. andl %ebx, %eax
  11189. rorl $9, %ecx
  11190. xorl %r13d, %ecx
  11191. xorl %r14d, %eax
  11192. vpxor %ymm9, %ymm8, %ymm9
  11193. # rnd_1: 6 - 6
  11194. rorl $11, %ecx
  11195. addl %r12d, %r8d
  11196. xorl %r13d, %ecx
  11197. addl %eax, %r12d
  11198. vpshufb %ymm12, %ymm9, %ymm9
  11199. # rnd_1: 7 - 7
  11200. rorl $2, %ecx
  11201. movl %r8d, %edx
  11202. addl %ecx, %r12d
  11203. vpaddd %ymm4, %ymm9, %ymm0
  11204. # msg_sched done: 64-67
  11205. # msg_sched: 72-75
  11206. # rnd_0: 0 - 0
  11207. rorl $14, %edx
  11208. vpalignr $4, %ymm1, %ymm2, %ymm5
  11209. vpalignr $4, %ymm3, %ymm0, %ymm4
  11210. # rnd_0: 1 - 2
  11211. movl %r13d, %eax
  11212. movl %r9d, %ecx
  11213. addl 288(%rsp), %r11d
  11214. xorl %r10d, %ecx
  11215. xorl %r8d, %edx
  11216. andl %r8d, %ecx
  11217. vpsrld $7, %ymm5, %ymm6
  11218. vpslld $25, %ymm5, %ymm7
  11219. # rnd_0: 3 - 4
  11220. rorl $5, %edx
  11221. xorl %r10d, %ecx
  11222. xorl %r8d, %edx
  11223. addl %ecx, %r11d
  11224. rorl $6, %edx
  11225. xorl %r12d, %eax
  11226. addl %edx, %r11d
  11227. movl %r12d, %ecx
  11228. vpsrld $18, %ymm5, %ymm8
  11229. vpslld $14, %ymm5, %ymm9
  11230. # rnd_0: 5 - 6
  11231. andl %eax, %ebx
  11232. rorl $9, %ecx
  11233. xorl %r12d, %ecx
  11234. xorl %r13d, %ebx
  11235. rorl $11, %ecx
  11236. addl %r11d, %r15d
  11237. xorl %r12d, %ecx
  11238. addl %ebx, %r11d
  11239. vpor %ymm6, %ymm7, %ymm6
  11240. vpor %ymm8, %ymm9, %ymm8
  11241. # rnd_0: 7 - 7
  11242. rorl $2, %ecx
  11243. movl %r15d, %edx
  11244. addl %ecx, %r11d
  11245. # rnd_1: 0 - 1
  11246. rorl $14, %edx
  11247. movl %r12d, %ebx
  11248. movl %r8d, %ecx
  11249. addl 292(%rsp), %r10d
  11250. xorl %r9d, %ecx
  11251. vpsrld $3, %ymm5, %ymm9
  11252. vpxor %ymm6, %ymm8, %ymm6
  11253. # rnd_1: 2 - 3
  11254. xorl %r15d, %edx
  11255. andl %r15d, %ecx
  11256. rorl $5, %edx
  11257. xorl %r9d, %ecx
  11258. xorl %r15d, %edx
  11259. addl %ecx, %r10d
  11260. vpxor %ymm6, %ymm9, %ymm5
  11261. vpshufd $0xfa, %ymm0, %ymm6
  11262. # rnd_1: 4 - 5
  11263. rorl $6, %edx
  11264. xorl %r11d, %ebx
  11265. addl %edx, %r10d
  11266. movl %r11d, %ecx
  11267. andl %ebx, %eax
  11268. rorl $9, %ecx
  11269. xorl %r11d, %ecx
  11270. xorl %r12d, %eax
  11271. vpsrld $10, %ymm6, %ymm8
  11272. vpsrlq $19, %ymm6, %ymm7
  11273. # rnd_1: 6 - 7
  11274. rorl $11, %ecx
  11275. addl %r10d, %r14d
  11276. xorl %r11d, %ecx
  11277. addl %eax, %r10d
  11278. rorl $2, %ecx
  11279. movl %r14d, %edx
  11280. addl %ecx, %r10d
  11281. # rnd_0: 0 - 0
  11282. rorl $14, %edx
  11283. vpsrlq $0x11, %ymm6, %ymm6
  11284. vpaddd %ymm1, %ymm4, %ymm4
  11285. # rnd_0: 1 - 3
  11286. movl %r11d, %eax
  11287. movl %r15d, %ecx
  11288. addl 296(%rsp), %r9d
  11289. xorl %r8d, %ecx
  11290. xorl %r14d, %edx
  11291. andl %r14d, %ecx
  11292. rorl $5, %edx
  11293. xorl %r8d, %ecx
  11294. xorl %r14d, %edx
  11295. addl %ecx, %r9d
  11296. vpxor %ymm6, %ymm7, %ymm6
  11297. vpaddd %ymm5, %ymm4, %ymm4
  11298. # rnd_0: 4 - 4
  11299. rorl $6, %edx
  11300. xorl %r10d, %eax
  11301. addl %edx, %r9d
  11302. movl %r10d, %ecx
  11303. vpxor %ymm6, %ymm8, %ymm8
  11304. # rnd_0: 5 - 5
  11305. andl %eax, %ebx
  11306. rorl $9, %ecx
  11307. xorl %r10d, %ecx
  11308. xorl %r11d, %ebx
  11309. vpshufb %ymm11, %ymm8, %ymm8
  11310. # rnd_0: 6 - 6
  11311. rorl $11, %ecx
  11312. addl %r9d, %r13d
  11313. xorl %r10d, %ecx
  11314. addl %ebx, %r9d
  11315. vpaddd %ymm8, %ymm4, %ymm4
  11316. # rnd_0: 7 - 7
  11317. rorl $2, %ecx
  11318. movl %r13d, %edx
  11319. addl %ecx, %r9d
  11320. # rnd_1: 0 - 0
  11321. rorl $14, %edx
  11322. vpshufd $0x50, %ymm4, %ymm6
  11323. # rnd_1: 1 - 1
  11324. movl %r10d, %ebx
  11325. movl %r14d, %ecx
  11326. addl 300(%rsp), %r8d
  11327. xorl %r15d, %ecx
  11328. vpsrlq $0x11, %ymm6, %ymm8
  11329. vpsrlq $19, %ymm6, %ymm7
  11330. # rnd_1: 2 - 3
  11331. xorl %r13d, %edx
  11332. andl %r13d, %ecx
  11333. rorl $5, %edx
  11334. xorl %r15d, %ecx
  11335. xorl %r13d, %edx
  11336. addl %ecx, %r8d
  11337. vpsrld $10, %ymm6, %ymm9
  11338. vpxor %ymm8, %ymm7, %ymm8
  11339. # rnd_1: 4 - 5
  11340. rorl $6, %edx
  11341. xorl %r9d, %ebx
  11342. addl %edx, %r8d
  11343. movl %r9d, %ecx
  11344. andl %ebx, %eax
  11345. rorl $9, %ecx
  11346. xorl %r9d, %ecx
  11347. xorl %r10d, %eax
  11348. vpxor %ymm9, %ymm8, %ymm9
  11349. # rnd_1: 6 - 6
  11350. rorl $11, %ecx
  11351. addl %r8d, %r12d
  11352. xorl %r9d, %ecx
  11353. addl %eax, %r8d
  11354. vpshufb %ymm12, %ymm9, %ymm9
  11355. # rnd_1: 7 - 7
  11356. rorl $2, %ecx
  11357. movl %r12d, %edx
  11358. addl %ecx, %r8d
  11359. vpaddd %ymm4, %ymm9, %ymm1
  11360. # msg_sched done: 72-75
  11361. # msg_sched: 80-83
  11362. # rnd_0: 0 - 0
  11363. rorl $14, %edx
  11364. vpalignr $4, %ymm2, %ymm3, %ymm5
  11365. vpalignr $4, %ymm0, %ymm1, %ymm4
  11366. # rnd_0: 1 - 2
  11367. movl %r9d, %eax
  11368. movl %r13d, %ecx
  11369. addl 320(%rsp), %r15d
  11370. xorl %r14d, %ecx
  11371. xorl %r12d, %edx
  11372. andl %r12d, %ecx
  11373. vpsrld $7, %ymm5, %ymm6
  11374. vpslld $25, %ymm5, %ymm7
  11375. # rnd_0: 3 - 4
  11376. rorl $5, %edx
  11377. xorl %r14d, %ecx
  11378. xorl %r12d, %edx
  11379. addl %ecx, %r15d
  11380. rorl $6, %edx
  11381. xorl %r8d, %eax
  11382. addl %edx, %r15d
  11383. movl %r8d, %ecx
  11384. vpsrld $18, %ymm5, %ymm8
  11385. vpslld $14, %ymm5, %ymm9
  11386. # rnd_0: 5 - 6
  11387. andl %eax, %ebx
  11388. rorl $9, %ecx
  11389. xorl %r8d, %ecx
  11390. xorl %r9d, %ebx
  11391. rorl $11, %ecx
  11392. addl %r15d, %r11d
  11393. xorl %r8d, %ecx
  11394. addl %ebx, %r15d
  11395. vpor %ymm6, %ymm7, %ymm6
  11396. vpor %ymm8, %ymm9, %ymm8
  11397. # rnd_0: 7 - 7
  11398. rorl $2, %ecx
  11399. movl %r11d, %edx
  11400. addl %ecx, %r15d
  11401. # rnd_1: 0 - 1
  11402. rorl $14, %edx
  11403. movl %r8d, %ebx
  11404. movl %r12d, %ecx
  11405. addl 324(%rsp), %r14d
  11406. xorl %r13d, %ecx
  11407. vpsrld $3, %ymm5, %ymm9
  11408. vpxor %ymm6, %ymm8, %ymm6
  11409. # rnd_1: 2 - 3
  11410. xorl %r11d, %edx
  11411. andl %r11d, %ecx
  11412. rorl $5, %edx
  11413. xorl %r13d, %ecx
  11414. xorl %r11d, %edx
  11415. addl %ecx, %r14d
  11416. vpxor %ymm6, %ymm9, %ymm5
  11417. vpshufd $0xfa, %ymm1, %ymm6
  11418. # rnd_1: 4 - 5
  11419. rorl $6, %edx
  11420. xorl %r15d, %ebx
  11421. addl %edx, %r14d
  11422. movl %r15d, %ecx
  11423. andl %ebx, %eax
  11424. rorl $9, %ecx
  11425. xorl %r15d, %ecx
  11426. xorl %r8d, %eax
  11427. vpsrld $10, %ymm6, %ymm8
  11428. vpsrlq $19, %ymm6, %ymm7
  11429. # rnd_1: 6 - 7
  11430. rorl $11, %ecx
  11431. addl %r14d, %r10d
  11432. xorl %r15d, %ecx
  11433. addl %eax, %r14d
  11434. rorl $2, %ecx
  11435. movl %r10d, %edx
  11436. addl %ecx, %r14d
  11437. # rnd_0: 0 - 0
  11438. rorl $14, %edx
  11439. vpsrlq $0x11, %ymm6, %ymm6
  11440. vpaddd %ymm2, %ymm4, %ymm4
  11441. # rnd_0: 1 - 3
  11442. movl %r15d, %eax
  11443. movl %r11d, %ecx
  11444. addl 328(%rsp), %r13d
  11445. xorl %r12d, %ecx
  11446. xorl %r10d, %edx
  11447. andl %r10d, %ecx
  11448. rorl $5, %edx
  11449. xorl %r12d, %ecx
  11450. xorl %r10d, %edx
  11451. addl %ecx, %r13d
  11452. vpxor %ymm6, %ymm7, %ymm6
  11453. vpaddd %ymm5, %ymm4, %ymm4
  11454. # rnd_0: 4 - 4
  11455. rorl $6, %edx
  11456. xorl %r14d, %eax
  11457. addl %edx, %r13d
  11458. movl %r14d, %ecx
  11459. vpxor %ymm6, %ymm8, %ymm8
  11460. # rnd_0: 5 - 5
  11461. andl %eax, %ebx
  11462. rorl $9, %ecx
  11463. xorl %r14d, %ecx
  11464. xorl %r15d, %ebx
  11465. vpshufb %ymm11, %ymm8, %ymm8
  11466. # rnd_0: 6 - 6
  11467. rorl $11, %ecx
  11468. addl %r13d, %r9d
  11469. xorl %r14d, %ecx
  11470. addl %ebx, %r13d
  11471. vpaddd %ymm8, %ymm4, %ymm4
  11472. # rnd_0: 7 - 7
  11473. rorl $2, %ecx
  11474. movl %r9d, %edx
  11475. addl %ecx, %r13d
  11476. # rnd_1: 0 - 0
  11477. rorl $14, %edx
  11478. vpshufd $0x50, %ymm4, %ymm6
  11479. # rnd_1: 1 - 1
  11480. movl %r14d, %ebx
  11481. movl %r10d, %ecx
  11482. addl 332(%rsp), %r12d
  11483. xorl %r11d, %ecx
  11484. vpsrlq $0x11, %ymm6, %ymm8
  11485. vpsrlq $19, %ymm6, %ymm7
  11486. # rnd_1: 2 - 3
  11487. xorl %r9d, %edx
  11488. andl %r9d, %ecx
  11489. rorl $5, %edx
  11490. xorl %r11d, %ecx
  11491. xorl %r9d, %edx
  11492. addl %ecx, %r12d
  11493. vpsrld $10, %ymm6, %ymm9
  11494. vpxor %ymm8, %ymm7, %ymm8
  11495. # rnd_1: 4 - 5
  11496. rorl $6, %edx
  11497. xorl %r13d, %ebx
  11498. addl %edx, %r12d
  11499. movl %r13d, %ecx
  11500. andl %ebx, %eax
  11501. rorl $9, %ecx
  11502. xorl %r13d, %ecx
  11503. xorl %r14d, %eax
  11504. vpxor %ymm9, %ymm8, %ymm9
  11505. # rnd_1: 6 - 6
  11506. rorl $11, %ecx
  11507. addl %r12d, %r8d
  11508. xorl %r13d, %ecx
  11509. addl %eax, %r12d
  11510. vpshufb %ymm12, %ymm9, %ymm9
  11511. # rnd_1: 7 - 7
  11512. rorl $2, %ecx
  11513. movl %r8d, %edx
  11514. addl %ecx, %r12d
  11515. vpaddd %ymm4, %ymm9, %ymm2
  11516. # msg_sched done: 80-83
  11517. # msg_sched: 88-91
  11518. # rnd_0: 0 - 0
  11519. rorl $14, %edx
  11520. vpalignr $4, %ymm3, %ymm0, %ymm5
  11521. vpalignr $4, %ymm1, %ymm2, %ymm4
  11522. # rnd_0: 1 - 2
  11523. movl %r13d, %eax
  11524. movl %r9d, %ecx
  11525. addl 352(%rsp), %r11d
  11526. xorl %r10d, %ecx
  11527. xorl %r8d, %edx
  11528. andl %r8d, %ecx
  11529. vpsrld $7, %ymm5, %ymm6
  11530. vpslld $25, %ymm5, %ymm7
  11531. # rnd_0: 3 - 4
  11532. rorl $5, %edx
  11533. xorl %r10d, %ecx
  11534. xorl %r8d, %edx
  11535. addl %ecx, %r11d
  11536. rorl $6, %edx
  11537. xorl %r12d, %eax
  11538. addl %edx, %r11d
  11539. movl %r12d, %ecx
  11540. vpsrld $18, %ymm5, %ymm8
  11541. vpslld $14, %ymm5, %ymm9
  11542. # rnd_0: 5 - 6
  11543. andl %eax, %ebx
  11544. rorl $9, %ecx
  11545. xorl %r12d, %ecx
  11546. xorl %r13d, %ebx
  11547. rorl $11, %ecx
  11548. addl %r11d, %r15d
  11549. xorl %r12d, %ecx
  11550. addl %ebx, %r11d
  11551. vpor %ymm6, %ymm7, %ymm6
  11552. vpor %ymm8, %ymm9, %ymm8
  11553. # rnd_0: 7 - 7
  11554. rorl $2, %ecx
  11555. movl %r15d, %edx
  11556. addl %ecx, %r11d
  11557. # rnd_1: 0 - 1
  11558. rorl $14, %edx
  11559. movl %r12d, %ebx
  11560. movl %r8d, %ecx
  11561. addl 356(%rsp), %r10d
  11562. xorl %r9d, %ecx
  11563. vpsrld $3, %ymm5, %ymm9
  11564. vpxor %ymm6, %ymm8, %ymm6
  11565. # rnd_1: 2 - 3
  11566. xorl %r15d, %edx
  11567. andl %r15d, %ecx
  11568. rorl $5, %edx
  11569. xorl %r9d, %ecx
  11570. xorl %r15d, %edx
  11571. addl %ecx, %r10d
  11572. vpxor %ymm6, %ymm9, %ymm5
  11573. vpshufd $0xfa, %ymm2, %ymm6
  11574. # rnd_1: 4 - 5
  11575. rorl $6, %edx
  11576. xorl %r11d, %ebx
  11577. addl %edx, %r10d
  11578. movl %r11d, %ecx
  11579. andl %ebx, %eax
  11580. rorl $9, %ecx
  11581. xorl %r11d, %ecx
  11582. xorl %r12d, %eax
  11583. vpsrld $10, %ymm6, %ymm8
  11584. vpsrlq $19, %ymm6, %ymm7
  11585. # rnd_1: 6 - 7
  11586. rorl $11, %ecx
  11587. addl %r10d, %r14d
  11588. xorl %r11d, %ecx
  11589. addl %eax, %r10d
  11590. rorl $2, %ecx
  11591. movl %r14d, %edx
  11592. addl %ecx, %r10d
  11593. # rnd_0: 0 - 0
  11594. rorl $14, %edx
  11595. vpsrlq $0x11, %ymm6, %ymm6
  11596. vpaddd %ymm3, %ymm4, %ymm4
  11597. # rnd_0: 1 - 3
  11598. movl %r11d, %eax
  11599. movl %r15d, %ecx
  11600. addl 360(%rsp), %r9d
  11601. xorl %r8d, %ecx
  11602. xorl %r14d, %edx
  11603. andl %r14d, %ecx
  11604. rorl $5, %edx
  11605. xorl %r8d, %ecx
  11606. xorl %r14d, %edx
  11607. addl %ecx, %r9d
  11608. vpxor %ymm6, %ymm7, %ymm6
  11609. vpaddd %ymm5, %ymm4, %ymm4
  11610. # rnd_0: 4 - 4
  11611. rorl $6, %edx
  11612. xorl %r10d, %eax
  11613. addl %edx, %r9d
  11614. movl %r10d, %ecx
  11615. vpxor %ymm6, %ymm8, %ymm8
  11616. # rnd_0: 5 - 5
  11617. andl %eax, %ebx
  11618. rorl $9, %ecx
  11619. xorl %r10d, %ecx
  11620. xorl %r11d, %ebx
  11621. vpshufb %ymm11, %ymm8, %ymm8
  11622. # rnd_0: 6 - 6
  11623. rorl $11, %ecx
  11624. addl %r9d, %r13d
  11625. xorl %r10d, %ecx
  11626. addl %ebx, %r9d
  11627. vpaddd %ymm8, %ymm4, %ymm4
  11628. # rnd_0: 7 - 7
  11629. rorl $2, %ecx
  11630. movl %r13d, %edx
  11631. addl %ecx, %r9d
  11632. # rnd_1: 0 - 0
  11633. rorl $14, %edx
  11634. vpshufd $0x50, %ymm4, %ymm6
  11635. # rnd_1: 1 - 1
  11636. movl %r10d, %ebx
  11637. movl %r14d, %ecx
  11638. addl 364(%rsp), %r8d
  11639. xorl %r15d, %ecx
  11640. vpsrlq $0x11, %ymm6, %ymm8
  11641. vpsrlq $19, %ymm6, %ymm7
  11642. # rnd_1: 2 - 3
  11643. xorl %r13d, %edx
  11644. andl %r13d, %ecx
  11645. rorl $5, %edx
  11646. xorl %r15d, %ecx
  11647. xorl %r13d, %edx
  11648. addl %ecx, %r8d
  11649. vpsrld $10, %ymm6, %ymm9
  11650. vpxor %ymm8, %ymm7, %ymm8
  11651. # rnd_1: 4 - 5
  11652. rorl $6, %edx
  11653. xorl %r9d, %ebx
  11654. addl %edx, %r8d
  11655. movl %r9d, %ecx
  11656. andl %ebx, %eax
  11657. rorl $9, %ecx
  11658. xorl %r9d, %ecx
  11659. xorl %r10d, %eax
  11660. vpxor %ymm9, %ymm8, %ymm9
  11661. # rnd_1: 6 - 6
  11662. rorl $11, %ecx
  11663. addl %r8d, %r12d
  11664. xorl %r9d, %ecx
  11665. addl %eax, %r8d
  11666. vpshufb %ymm12, %ymm9, %ymm9
  11667. # rnd_1: 7 - 7
  11668. rorl $2, %ecx
  11669. movl %r12d, %edx
  11670. addl %ecx, %r8d
  11671. vpaddd %ymm4, %ymm9, %ymm3
  11672. # msg_sched done: 88-91
  11673. # set_w_k_xfer_4: 12
  11674. vpaddd 384+L_avx2_sha256_k(%rip), %ymm0, %ymm4
  11675. vpaddd 416+L_avx2_sha256_k(%rip), %ymm1, %ymm5
  11676. vmovdqu %ymm4, 384(%rsp)
  11677. vmovdqu %ymm5, 416(%rsp)
  11678. vpaddd 448+L_avx2_sha256_k(%rip), %ymm2, %ymm4
  11679. vpaddd 480+L_avx2_sha256_k(%rip), %ymm3, %ymm5
  11680. vmovdqu %ymm4, 448(%rsp)
  11681. vmovdqu %ymm5, 480(%rsp)
  11682. # rnd_all_4: 24-27
  11683. addl 384(%rsp), %r15d
  11684. movl %r13d, %ecx
  11685. movl %r9d, %eax
  11686. xorl %r14d, %ecx
  11687. rorl $14, %edx
  11688. andl %r12d, %ecx
  11689. xorl %r12d, %edx
  11690. xorl %r14d, %ecx
  11691. rorl $5, %edx
  11692. addl %ecx, %r15d
  11693. xorl %r12d, %edx
  11694. xorl %r8d, %eax
  11695. rorl $6, %edx
  11696. movl %r8d, %ecx
  11697. addl %edx, %r15d
  11698. rorl $9, %ecx
  11699. andl %eax, %ebx
  11700. xorl %r8d, %ecx
  11701. xorl %r9d, %ebx
  11702. rorl $11, %ecx
  11703. addl %r15d, %r11d
  11704. xorl %r8d, %ecx
  11705. addl %ebx, %r15d
  11706. rorl $2, %ecx
  11707. movl %r11d, %edx
  11708. addl %ecx, %r15d
  11709. addl 388(%rsp), %r14d
  11710. movl %r12d, %ecx
  11711. movl %r8d, %ebx
  11712. xorl %r13d, %ecx
  11713. rorl $14, %edx
  11714. andl %r11d, %ecx
  11715. xorl %r11d, %edx
  11716. xorl %r13d, %ecx
  11717. rorl $5, %edx
  11718. addl %ecx, %r14d
  11719. xorl %r11d, %edx
  11720. xorl %r15d, %ebx
  11721. rorl $6, %edx
  11722. movl %r15d, %ecx
  11723. addl %edx, %r14d
  11724. rorl $9, %ecx
  11725. andl %ebx, %eax
  11726. xorl %r15d, %ecx
  11727. xorl %r8d, %eax
  11728. rorl $11, %ecx
  11729. addl %r14d, %r10d
  11730. xorl %r15d, %ecx
  11731. addl %eax, %r14d
  11732. rorl $2, %ecx
  11733. movl %r10d, %edx
  11734. addl %ecx, %r14d
  11735. addl 392(%rsp), %r13d
  11736. movl %r11d, %ecx
  11737. movl %r15d, %eax
  11738. xorl %r12d, %ecx
  11739. rorl $14, %edx
  11740. andl %r10d, %ecx
  11741. xorl %r10d, %edx
  11742. xorl %r12d, %ecx
  11743. rorl $5, %edx
  11744. addl %ecx, %r13d
  11745. xorl %r10d, %edx
  11746. xorl %r14d, %eax
  11747. rorl $6, %edx
  11748. movl %r14d, %ecx
  11749. addl %edx, %r13d
  11750. rorl $9, %ecx
  11751. andl %eax, %ebx
  11752. xorl %r14d, %ecx
  11753. xorl %r15d, %ebx
  11754. rorl $11, %ecx
  11755. addl %r13d, %r9d
  11756. xorl %r14d, %ecx
  11757. addl %ebx, %r13d
  11758. rorl $2, %ecx
  11759. movl %r9d, %edx
  11760. addl %ecx, %r13d
  11761. addl 396(%rsp), %r12d
  11762. movl %r10d, %ecx
  11763. movl %r14d, %ebx
  11764. xorl %r11d, %ecx
  11765. rorl $14, %edx
  11766. andl %r9d, %ecx
  11767. xorl %r9d, %edx
  11768. xorl %r11d, %ecx
  11769. rorl $5, %edx
  11770. addl %ecx, %r12d
  11771. xorl %r9d, %edx
  11772. xorl %r13d, %ebx
  11773. rorl $6, %edx
  11774. movl %r13d, %ecx
  11775. addl %edx, %r12d
  11776. rorl $9, %ecx
  11777. andl %ebx, %eax
  11778. xorl %r13d, %ecx
  11779. xorl %r14d, %eax
  11780. rorl $11, %ecx
  11781. addl %r12d, %r8d
  11782. xorl %r13d, %ecx
  11783. addl %eax, %r12d
  11784. rorl $2, %ecx
  11785. movl %r8d, %edx
  11786. addl %ecx, %r12d
  11787. # rnd_all_4: 26-29
  11788. addl 416(%rsp), %r11d
  11789. movl %r9d, %ecx
  11790. movl %r13d, %eax
  11791. xorl %r10d, %ecx
  11792. rorl $14, %edx
  11793. andl %r8d, %ecx
  11794. xorl %r8d, %edx
  11795. xorl %r10d, %ecx
  11796. rorl $5, %edx
  11797. addl %ecx, %r11d
  11798. xorl %r8d, %edx
  11799. xorl %r12d, %eax
  11800. rorl $6, %edx
  11801. movl %r12d, %ecx
  11802. addl %edx, %r11d
  11803. rorl $9, %ecx
  11804. andl %eax, %ebx
  11805. xorl %r12d, %ecx
  11806. xorl %r13d, %ebx
  11807. rorl $11, %ecx
  11808. addl %r11d, %r15d
  11809. xorl %r12d, %ecx
  11810. addl %ebx, %r11d
  11811. rorl $2, %ecx
  11812. movl %r15d, %edx
  11813. addl %ecx, %r11d
  11814. addl 420(%rsp), %r10d
  11815. movl %r8d, %ecx
  11816. movl %r12d, %ebx
  11817. xorl %r9d, %ecx
  11818. rorl $14, %edx
  11819. andl %r15d, %ecx
  11820. xorl %r15d, %edx
  11821. xorl %r9d, %ecx
  11822. rorl $5, %edx
  11823. addl %ecx, %r10d
  11824. xorl %r15d, %edx
  11825. xorl %r11d, %ebx
  11826. rorl $6, %edx
  11827. movl %r11d, %ecx
  11828. addl %edx, %r10d
  11829. rorl $9, %ecx
  11830. andl %ebx, %eax
  11831. xorl %r11d, %ecx
  11832. xorl %r12d, %eax
  11833. rorl $11, %ecx
  11834. addl %r10d, %r14d
  11835. xorl %r11d, %ecx
  11836. addl %eax, %r10d
  11837. rorl $2, %ecx
  11838. movl %r14d, %edx
  11839. addl %ecx, %r10d
  11840. addl 424(%rsp), %r9d
  11841. movl %r15d, %ecx
  11842. movl %r11d, %eax
  11843. xorl %r8d, %ecx
  11844. rorl $14, %edx
  11845. andl %r14d, %ecx
  11846. xorl %r14d, %edx
  11847. xorl %r8d, %ecx
  11848. rorl $5, %edx
  11849. addl %ecx, %r9d
  11850. xorl %r14d, %edx
  11851. xorl %r10d, %eax
  11852. rorl $6, %edx
  11853. movl %r10d, %ecx
  11854. addl %edx, %r9d
  11855. rorl $9, %ecx
  11856. andl %eax, %ebx
  11857. xorl %r10d, %ecx
  11858. xorl %r11d, %ebx
  11859. rorl $11, %ecx
  11860. addl %r9d, %r13d
  11861. xorl %r10d, %ecx
  11862. addl %ebx, %r9d
  11863. rorl $2, %ecx
  11864. movl %r13d, %edx
  11865. addl %ecx, %r9d
  11866. addl 428(%rsp), %r8d
  11867. movl %r14d, %ecx
  11868. movl %r10d, %ebx
  11869. xorl %r15d, %ecx
  11870. rorl $14, %edx
  11871. andl %r13d, %ecx
  11872. xorl %r13d, %edx
  11873. xorl %r15d, %ecx
  11874. rorl $5, %edx
  11875. addl %ecx, %r8d
  11876. xorl %r13d, %edx
  11877. xorl %r9d, %ebx
  11878. rorl $6, %edx
  11879. movl %r9d, %ecx
  11880. addl %edx, %r8d
  11881. rorl $9, %ecx
  11882. andl %ebx, %eax
  11883. xorl %r9d, %ecx
  11884. xorl %r10d, %eax
  11885. rorl $11, %ecx
  11886. addl %r8d, %r12d
  11887. xorl %r9d, %ecx
  11888. addl %eax, %r8d
  11889. rorl $2, %ecx
  11890. movl %r12d, %edx
  11891. addl %ecx, %r8d
  11892. # rnd_all_4: 28-31
  11893. addl 448(%rsp), %r15d
  11894. movl %r13d, %ecx
  11895. movl %r9d, %eax
  11896. xorl %r14d, %ecx
  11897. rorl $14, %edx
  11898. andl %r12d, %ecx
  11899. xorl %r12d, %edx
  11900. xorl %r14d, %ecx
  11901. rorl $5, %edx
  11902. addl %ecx, %r15d
  11903. xorl %r12d, %edx
  11904. xorl %r8d, %eax
  11905. rorl $6, %edx
  11906. movl %r8d, %ecx
  11907. addl %edx, %r15d
  11908. rorl $9, %ecx
  11909. andl %eax, %ebx
  11910. xorl %r8d, %ecx
  11911. xorl %r9d, %ebx
  11912. rorl $11, %ecx
  11913. addl %r15d, %r11d
  11914. xorl %r8d, %ecx
  11915. addl %ebx, %r15d
  11916. rorl $2, %ecx
  11917. movl %r11d, %edx
  11918. addl %ecx, %r15d
  11919. addl 452(%rsp), %r14d
  11920. movl %r12d, %ecx
  11921. movl %r8d, %ebx
  11922. xorl %r13d, %ecx
  11923. rorl $14, %edx
  11924. andl %r11d, %ecx
  11925. xorl %r11d, %edx
  11926. xorl %r13d, %ecx
  11927. rorl $5, %edx
  11928. addl %ecx, %r14d
  11929. xorl %r11d, %edx
  11930. xorl %r15d, %ebx
  11931. rorl $6, %edx
  11932. movl %r15d, %ecx
  11933. addl %edx, %r14d
  11934. rorl $9, %ecx
  11935. andl %ebx, %eax
  11936. xorl %r15d, %ecx
  11937. xorl %r8d, %eax
  11938. rorl $11, %ecx
  11939. addl %r14d, %r10d
  11940. xorl %r15d, %ecx
  11941. addl %eax, %r14d
  11942. rorl $2, %ecx
  11943. movl %r10d, %edx
  11944. addl %ecx, %r14d
  11945. addl 456(%rsp), %r13d
  11946. movl %r11d, %ecx
  11947. movl %r15d, %eax
  11948. xorl %r12d, %ecx
  11949. rorl $14, %edx
  11950. andl %r10d, %ecx
  11951. xorl %r10d, %edx
  11952. xorl %r12d, %ecx
  11953. rorl $5, %edx
  11954. addl %ecx, %r13d
  11955. xorl %r10d, %edx
  11956. xorl %r14d, %eax
  11957. rorl $6, %edx
  11958. movl %r14d, %ecx
  11959. addl %edx, %r13d
  11960. rorl $9, %ecx
  11961. andl %eax, %ebx
  11962. xorl %r14d, %ecx
  11963. xorl %r15d, %ebx
  11964. rorl $11, %ecx
  11965. addl %r13d, %r9d
  11966. xorl %r14d, %ecx
  11967. addl %ebx, %r13d
  11968. rorl $2, %ecx
  11969. movl %r9d, %edx
  11970. addl %ecx, %r13d
  11971. addl 460(%rsp), %r12d
  11972. movl %r10d, %ecx
  11973. movl %r14d, %ebx
  11974. xorl %r11d, %ecx
  11975. rorl $14, %edx
  11976. andl %r9d, %ecx
  11977. xorl %r9d, %edx
  11978. xorl %r11d, %ecx
  11979. rorl $5, %edx
  11980. addl %ecx, %r12d
  11981. xorl %r9d, %edx
  11982. xorl %r13d, %ebx
  11983. rorl $6, %edx
  11984. movl %r13d, %ecx
  11985. addl %edx, %r12d
  11986. rorl $9, %ecx
  11987. andl %ebx, %eax
  11988. xorl %r13d, %ecx
  11989. xorl %r14d, %eax
  11990. rorl $11, %ecx
  11991. addl %r12d, %r8d
  11992. xorl %r13d, %ecx
  11993. addl %eax, %r12d
  11994. rorl $2, %ecx
  11995. movl %r8d, %edx
  11996. addl %ecx, %r12d
  11997. # rnd_all_4: 30-33
  11998. addl 480(%rsp), %r11d
  11999. movl %r9d, %ecx
  12000. movl %r13d, %eax
  12001. xorl %r10d, %ecx
  12002. rorl $14, %edx
  12003. andl %r8d, %ecx
  12004. xorl %r8d, %edx
  12005. xorl %r10d, %ecx
  12006. rorl $5, %edx
  12007. addl %ecx, %r11d
  12008. xorl %r8d, %edx
  12009. xorl %r12d, %eax
  12010. rorl $6, %edx
  12011. movl %r12d, %ecx
  12012. addl %edx, %r11d
  12013. rorl $9, %ecx
  12014. andl %eax, %ebx
  12015. xorl %r12d, %ecx
  12016. xorl %r13d, %ebx
  12017. rorl $11, %ecx
  12018. addl %r11d, %r15d
  12019. xorl %r12d, %ecx
  12020. addl %ebx, %r11d
  12021. rorl $2, %ecx
  12022. movl %r15d, %edx
  12023. addl %ecx, %r11d
  12024. addl 484(%rsp), %r10d
  12025. movl %r8d, %ecx
  12026. movl %r12d, %ebx
  12027. xorl %r9d, %ecx
  12028. rorl $14, %edx
  12029. andl %r15d, %ecx
  12030. xorl %r15d, %edx
  12031. xorl %r9d, %ecx
  12032. rorl $5, %edx
  12033. addl %ecx, %r10d
  12034. xorl %r15d, %edx
  12035. xorl %r11d, %ebx
  12036. rorl $6, %edx
  12037. movl %r11d, %ecx
  12038. addl %edx, %r10d
  12039. rorl $9, %ecx
  12040. andl %ebx, %eax
  12041. xorl %r11d, %ecx
  12042. xorl %r12d, %eax
  12043. rorl $11, %ecx
  12044. addl %r10d, %r14d
  12045. xorl %r11d, %ecx
  12046. addl %eax, %r10d
  12047. rorl $2, %ecx
  12048. movl %r14d, %edx
  12049. addl %ecx, %r10d
  12050. addl 488(%rsp), %r9d
  12051. movl %r15d, %ecx
  12052. movl %r11d, %eax
  12053. xorl %r8d, %ecx
  12054. rorl $14, %edx
  12055. andl %r14d, %ecx
  12056. xorl %r14d, %edx
  12057. xorl %r8d, %ecx
  12058. rorl $5, %edx
  12059. addl %ecx, %r9d
  12060. xorl %r14d, %edx
  12061. xorl %r10d, %eax
  12062. rorl $6, %edx
  12063. movl %r10d, %ecx
  12064. addl %edx, %r9d
  12065. rorl $9, %ecx
  12066. andl %eax, %ebx
  12067. xorl %r10d, %ecx
  12068. xorl %r11d, %ebx
  12069. rorl $11, %ecx
  12070. addl %r9d, %r13d
  12071. xorl %r10d, %ecx
  12072. addl %ebx, %r9d
  12073. rorl $2, %ecx
  12074. movl %r13d, %edx
  12075. addl %ecx, %r9d
  12076. addl 492(%rsp), %r8d
  12077. movl %r14d, %ecx
  12078. movl %r10d, %ebx
  12079. xorl %r15d, %ecx
  12080. rorl $14, %edx
  12081. andl %r13d, %ecx
  12082. xorl %r13d, %edx
  12083. xorl %r15d, %ecx
  12084. rorl $5, %edx
  12085. addl %ecx, %r8d
  12086. xorl %r13d, %edx
  12087. xorl %r9d, %ebx
  12088. rorl $6, %edx
  12089. movl %r9d, %ecx
  12090. addl %edx, %r8d
  12091. rorl $9, %ecx
  12092. andl %ebx, %eax
  12093. xorl %r9d, %ecx
  12094. xorl %r10d, %eax
  12095. rorl $11, %ecx
  12096. addl %r8d, %r12d
  12097. xorl %r9d, %ecx
  12098. addl %eax, %r8d
  12099. rorl $2, %ecx
  12100. movl %r12d, %edx
  12101. addl %ecx, %r8d
  12102. addl %r8d, (%rdi)
  12103. addl %r9d, 4(%rdi)
  12104. addl %r10d, 8(%rdi)
  12105. addl %r11d, 12(%rdi)
  12106. addl %r12d, 16(%rdi)
  12107. addl %r13d, 20(%rdi)
  12108. addl %r14d, 24(%rdi)
  12109. addl %r15d, 28(%rdi)
  12110. xorq %rax, %rax
  12111. vzeroupper
  12112. addq $0x200, %rsp
  12113. popq %r15
  12114. popq %r14
  12115. popq %r13
  12116. popq %r12
  12117. popq %rbx
  12118. repz retq
  12119. #ifndef __APPLE__
  12120. .size Transform_Sha256_AVX2,.-Transform_Sha256_AVX2
  12121. #endif /* __APPLE__ */
  12122. #ifndef __APPLE__
  12123. .text
  12124. .globl Transform_Sha256_AVX2_Len
  12125. .type Transform_Sha256_AVX2_Len,@function
  12126. .align 16
  12127. Transform_Sha256_AVX2_Len:
  12128. #else
  12129. .section __TEXT,__text
  12130. .globl _Transform_Sha256_AVX2_Len
  12131. .p2align 4
  12132. _Transform_Sha256_AVX2_Len:
  12133. #endif /* __APPLE__ */
  12134. pushq %rbx
  12135. pushq %r12
  12136. pushq %r13
  12137. pushq %r14
  12138. pushq %r15
  12139. pushq %rbp
  12140. movq %rsi, %rbp
  12141. movq %rdx, %rsi
  12142. subq $0x200, %rsp
  12143. testb $0x40, %sil
  12144. je L_sha256_len_avx2_block
  12145. vmovdqu (%rbp), %ymm0
  12146. vmovdqu 32(%rbp), %ymm1
  12147. vmovups %ymm0, 32(%rdi)
  12148. vmovups %ymm1, 64(%rdi)
  12149. #ifndef __APPLE__
  12150. call Transform_Sha256_AVX2@plt
  12151. #else
  12152. call _Transform_Sha256_AVX2
  12153. #endif /* __APPLE__ */
  12154. addq $0x40, %rbp
  12155. subl $0x40, %esi
  12156. jz L_sha256_len_avx2_done
  12157. L_sha256_len_avx2_block:
  12158. vmovdqa L_avx2_sha256_flip_mask(%rip), %ymm13
  12159. vmovdqa L_avx2_sha256_shuf_00BA(%rip), %ymm11
  12160. vmovdqa L_avx2_sha256_shuf_DC00(%rip), %ymm12
  12161. movl (%rdi), %r8d
  12162. movl 4(%rdi), %r9d
  12163. movl 8(%rdi), %r10d
  12164. movl 12(%rdi), %r11d
  12165. movl 16(%rdi), %r12d
  12166. movl 20(%rdi), %r13d
  12167. movl 24(%rdi), %r14d
  12168. movl 28(%rdi), %r15d
  12169. # Start of loop processing two blocks
  12170. L_sha256_len_avx2_start:
  12171. # X0, X1, X2, X3 = W[0..15]
  12172. vmovdqu (%rbp), %xmm0
  12173. vmovdqu 16(%rbp), %xmm1
  12174. vmovdqu 64(%rbp), %xmm4
  12175. vmovdqu 80(%rbp), %xmm5
  12176. vinserti128 $0x01, %xmm4, %ymm0, %ymm0
  12177. vinserti128 $0x01, %xmm5, %ymm1, %ymm1
  12178. vpshufb %ymm13, %ymm0, %ymm0
  12179. vpshufb %ymm13, %ymm1, %ymm1
  12180. vmovdqu 32(%rbp), %xmm2
  12181. vmovdqu 48(%rbp), %xmm3
  12182. vmovdqu 96(%rbp), %xmm6
  12183. vmovdqu 112(%rbp), %xmm7
  12184. vinserti128 $0x01, %xmm6, %ymm2, %ymm2
  12185. vinserti128 $0x01, %xmm7, %ymm3, %ymm3
  12186. vpshufb %ymm13, %ymm2, %ymm2
  12187. vpshufb %ymm13, %ymm3, %ymm3
  12188. movl %r9d, %ebx
  12189. movl %r12d, %edx
  12190. xorl %r10d, %ebx
  12191. # set_w_k_xfer_4: 0
  12192. vpaddd 0+L_avx2_sha256_k(%rip), %ymm0, %ymm4
  12193. vpaddd 32+L_avx2_sha256_k(%rip), %ymm1, %ymm5
  12194. vmovdqu %ymm4, (%rsp)
  12195. vmovdqu %ymm5, 32(%rsp)
  12196. vpaddd 64+L_avx2_sha256_k(%rip), %ymm2, %ymm4
  12197. vpaddd 96+L_avx2_sha256_k(%rip), %ymm3, %ymm5
  12198. vmovdqu %ymm4, 64(%rsp)
  12199. vmovdqu %ymm5, 96(%rsp)
  12200. # msg_sched: 0-3
  12201. # rnd_0: 0 - 0
  12202. rorl $14, %edx
  12203. vpalignr $4, %ymm0, %ymm1, %ymm5
  12204. vpalignr $4, %ymm2, %ymm3, %ymm4
  12205. # rnd_0: 1 - 2
  12206. movl %r9d, %eax
  12207. movl %r13d, %ecx
  12208. addl (%rsp), %r15d
  12209. xorl %r14d, %ecx
  12210. xorl %r12d, %edx
  12211. andl %r12d, %ecx
  12212. vpsrld $7, %ymm5, %ymm6
  12213. vpslld $25, %ymm5, %ymm7
  12214. # rnd_0: 3 - 4
  12215. rorl $5, %edx
  12216. xorl %r14d, %ecx
  12217. xorl %r12d, %edx
  12218. addl %ecx, %r15d
  12219. rorl $6, %edx
  12220. xorl %r8d, %eax
  12221. addl %edx, %r15d
  12222. movl %r8d, %ecx
  12223. vpsrld $18, %ymm5, %ymm8
  12224. vpslld $14, %ymm5, %ymm9
  12225. # rnd_0: 5 - 6
  12226. andl %eax, %ebx
  12227. rorl $9, %ecx
  12228. xorl %r8d, %ecx
  12229. xorl %r9d, %ebx
  12230. rorl $11, %ecx
  12231. addl %r15d, %r11d
  12232. xorl %r8d, %ecx
  12233. addl %ebx, %r15d
  12234. vpor %ymm6, %ymm7, %ymm6
  12235. vpor %ymm8, %ymm9, %ymm8
  12236. # rnd_0: 7 - 7
  12237. rorl $2, %ecx
  12238. movl %r11d, %edx
  12239. addl %ecx, %r15d
  12240. # rnd_1: 0 - 1
  12241. rorl $14, %edx
  12242. movl %r8d, %ebx
  12243. movl %r12d, %ecx
  12244. addl 4(%rsp), %r14d
  12245. xorl %r13d, %ecx
  12246. vpsrld $3, %ymm5, %ymm9
  12247. vpxor %ymm6, %ymm8, %ymm6
  12248. # rnd_1: 2 - 3
  12249. xorl %r11d, %edx
  12250. andl %r11d, %ecx
  12251. rorl $5, %edx
  12252. xorl %r13d, %ecx
  12253. xorl %r11d, %edx
  12254. addl %ecx, %r14d
  12255. vpxor %ymm6, %ymm9, %ymm5
  12256. vpshufd $0xfa, %ymm3, %ymm6
  12257. # rnd_1: 4 - 5
  12258. rorl $6, %edx
  12259. xorl %r15d, %ebx
  12260. addl %edx, %r14d
  12261. movl %r15d, %ecx
  12262. andl %ebx, %eax
  12263. rorl $9, %ecx
  12264. xorl %r15d, %ecx
  12265. xorl %r8d, %eax
  12266. vpsrld $10, %ymm6, %ymm8
  12267. vpsrlq $19, %ymm6, %ymm7
  12268. # rnd_1: 6 - 7
  12269. rorl $11, %ecx
  12270. addl %r14d, %r10d
  12271. xorl %r15d, %ecx
  12272. addl %eax, %r14d
  12273. rorl $2, %ecx
  12274. movl %r10d, %edx
  12275. addl %ecx, %r14d
  12276. # rnd_0: 0 - 0
  12277. rorl $14, %edx
  12278. vpsrlq $0x11, %ymm6, %ymm6
  12279. vpaddd %ymm0, %ymm4, %ymm4
  12280. # rnd_0: 1 - 3
  12281. movl %r15d, %eax
  12282. movl %r11d, %ecx
  12283. addl 8(%rsp), %r13d
  12284. xorl %r12d, %ecx
  12285. xorl %r10d, %edx
  12286. andl %r10d, %ecx
  12287. rorl $5, %edx
  12288. xorl %r12d, %ecx
  12289. xorl %r10d, %edx
  12290. addl %ecx, %r13d
  12291. vpxor %ymm6, %ymm7, %ymm6
  12292. vpaddd %ymm5, %ymm4, %ymm4
  12293. # rnd_0: 4 - 4
  12294. rorl $6, %edx
  12295. xorl %r14d, %eax
  12296. addl %edx, %r13d
  12297. movl %r14d, %ecx
  12298. vpxor %ymm6, %ymm8, %ymm8
  12299. # rnd_0: 5 - 5
  12300. andl %eax, %ebx
  12301. rorl $9, %ecx
  12302. xorl %r14d, %ecx
  12303. xorl %r15d, %ebx
  12304. vpshufb %ymm11, %ymm8, %ymm8
  12305. # rnd_0: 6 - 6
  12306. rorl $11, %ecx
  12307. addl %r13d, %r9d
  12308. xorl %r14d, %ecx
  12309. addl %ebx, %r13d
  12310. vpaddd %ymm8, %ymm4, %ymm4
  12311. # rnd_0: 7 - 7
  12312. rorl $2, %ecx
  12313. movl %r9d, %edx
  12314. addl %ecx, %r13d
  12315. # rnd_1: 0 - 0
  12316. rorl $14, %edx
  12317. vpshufd $0x50, %ymm4, %ymm6
  12318. # rnd_1: 1 - 1
  12319. movl %r14d, %ebx
  12320. movl %r10d, %ecx
  12321. addl 12(%rsp), %r12d
  12322. xorl %r11d, %ecx
  12323. vpsrlq $0x11, %ymm6, %ymm8
  12324. vpsrlq $19, %ymm6, %ymm7
  12325. # rnd_1: 2 - 3
  12326. xorl %r9d, %edx
  12327. andl %r9d, %ecx
  12328. rorl $5, %edx
  12329. xorl %r11d, %ecx
  12330. xorl %r9d, %edx
  12331. addl %ecx, %r12d
  12332. vpsrld $10, %ymm6, %ymm9
  12333. vpxor %ymm8, %ymm7, %ymm8
  12334. # rnd_1: 4 - 5
  12335. rorl $6, %edx
  12336. xorl %r13d, %ebx
  12337. addl %edx, %r12d
  12338. movl %r13d, %ecx
  12339. andl %ebx, %eax
  12340. rorl $9, %ecx
  12341. xorl %r13d, %ecx
  12342. xorl %r14d, %eax
  12343. vpxor %ymm9, %ymm8, %ymm9
  12344. # rnd_1: 6 - 6
  12345. rorl $11, %ecx
  12346. addl %r12d, %r8d
  12347. xorl %r13d, %ecx
  12348. addl %eax, %r12d
  12349. vpshufb %ymm12, %ymm9, %ymm9
  12350. # rnd_1: 7 - 7
  12351. rorl $2, %ecx
  12352. movl %r8d, %edx
  12353. addl %ecx, %r12d
  12354. vpaddd %ymm4, %ymm9, %ymm0
  12355. # msg_sched done: 0-3
  12356. # msg_sched: 8-11
  12357. # rnd_0: 0 - 0
  12358. rorl $14, %edx
  12359. vpalignr $4, %ymm1, %ymm2, %ymm5
  12360. vpalignr $4, %ymm3, %ymm0, %ymm4
  12361. # rnd_0: 1 - 2
  12362. movl %r13d, %eax
  12363. movl %r9d, %ecx
  12364. addl 32(%rsp), %r11d
  12365. xorl %r10d, %ecx
  12366. xorl %r8d, %edx
  12367. andl %r8d, %ecx
  12368. vpsrld $7, %ymm5, %ymm6
  12369. vpslld $25, %ymm5, %ymm7
  12370. # rnd_0: 3 - 4
  12371. rorl $5, %edx
  12372. xorl %r10d, %ecx
  12373. xorl %r8d, %edx
  12374. addl %ecx, %r11d
  12375. rorl $6, %edx
  12376. xorl %r12d, %eax
  12377. addl %edx, %r11d
  12378. movl %r12d, %ecx
  12379. vpsrld $18, %ymm5, %ymm8
  12380. vpslld $14, %ymm5, %ymm9
  12381. # rnd_0: 5 - 6
  12382. andl %eax, %ebx
  12383. rorl $9, %ecx
  12384. xorl %r12d, %ecx
  12385. xorl %r13d, %ebx
  12386. rorl $11, %ecx
  12387. addl %r11d, %r15d
  12388. xorl %r12d, %ecx
  12389. addl %ebx, %r11d
  12390. vpor %ymm6, %ymm7, %ymm6
  12391. vpor %ymm8, %ymm9, %ymm8
  12392. # rnd_0: 7 - 7
  12393. rorl $2, %ecx
  12394. movl %r15d, %edx
  12395. addl %ecx, %r11d
  12396. # rnd_1: 0 - 1
  12397. rorl $14, %edx
  12398. movl %r12d, %ebx
  12399. movl %r8d, %ecx
  12400. addl 36(%rsp), %r10d
  12401. xorl %r9d, %ecx
  12402. vpsrld $3, %ymm5, %ymm9
  12403. vpxor %ymm6, %ymm8, %ymm6
  12404. # rnd_1: 2 - 3
  12405. xorl %r15d, %edx
  12406. andl %r15d, %ecx
  12407. rorl $5, %edx
  12408. xorl %r9d, %ecx
  12409. xorl %r15d, %edx
  12410. addl %ecx, %r10d
  12411. vpxor %ymm6, %ymm9, %ymm5
  12412. vpshufd $0xfa, %ymm0, %ymm6
  12413. # rnd_1: 4 - 5
  12414. rorl $6, %edx
  12415. xorl %r11d, %ebx
  12416. addl %edx, %r10d
  12417. movl %r11d, %ecx
  12418. andl %ebx, %eax
  12419. rorl $9, %ecx
  12420. xorl %r11d, %ecx
  12421. xorl %r12d, %eax
  12422. vpsrld $10, %ymm6, %ymm8
  12423. vpsrlq $19, %ymm6, %ymm7
  12424. # rnd_1: 6 - 7
  12425. rorl $11, %ecx
  12426. addl %r10d, %r14d
  12427. xorl %r11d, %ecx
  12428. addl %eax, %r10d
  12429. rorl $2, %ecx
  12430. movl %r14d, %edx
  12431. addl %ecx, %r10d
  12432. # rnd_0: 0 - 0
  12433. rorl $14, %edx
  12434. vpsrlq $0x11, %ymm6, %ymm6
  12435. vpaddd %ymm1, %ymm4, %ymm4
  12436. # rnd_0: 1 - 3
  12437. movl %r11d, %eax
  12438. movl %r15d, %ecx
  12439. addl 40(%rsp), %r9d
  12440. xorl %r8d, %ecx
  12441. xorl %r14d, %edx
  12442. andl %r14d, %ecx
  12443. rorl $5, %edx
  12444. xorl %r8d, %ecx
  12445. xorl %r14d, %edx
  12446. addl %ecx, %r9d
  12447. vpxor %ymm6, %ymm7, %ymm6
  12448. vpaddd %ymm5, %ymm4, %ymm4
  12449. # rnd_0: 4 - 4
  12450. rorl $6, %edx
  12451. xorl %r10d, %eax
  12452. addl %edx, %r9d
  12453. movl %r10d, %ecx
  12454. vpxor %ymm6, %ymm8, %ymm8
  12455. # rnd_0: 5 - 5
  12456. andl %eax, %ebx
  12457. rorl $9, %ecx
  12458. xorl %r10d, %ecx
  12459. xorl %r11d, %ebx
  12460. vpshufb %ymm11, %ymm8, %ymm8
  12461. # rnd_0: 6 - 6
  12462. rorl $11, %ecx
  12463. addl %r9d, %r13d
  12464. xorl %r10d, %ecx
  12465. addl %ebx, %r9d
  12466. vpaddd %ymm8, %ymm4, %ymm4
  12467. # rnd_0: 7 - 7
  12468. rorl $2, %ecx
  12469. movl %r13d, %edx
  12470. addl %ecx, %r9d
  12471. # rnd_1: 0 - 0
  12472. rorl $14, %edx
  12473. vpshufd $0x50, %ymm4, %ymm6
  12474. # rnd_1: 1 - 1
  12475. movl %r10d, %ebx
  12476. movl %r14d, %ecx
  12477. addl 44(%rsp), %r8d
  12478. xorl %r15d, %ecx
  12479. vpsrlq $0x11, %ymm6, %ymm8
  12480. vpsrlq $19, %ymm6, %ymm7
  12481. # rnd_1: 2 - 3
  12482. xorl %r13d, %edx
  12483. andl %r13d, %ecx
  12484. rorl $5, %edx
  12485. xorl %r15d, %ecx
  12486. xorl %r13d, %edx
  12487. addl %ecx, %r8d
  12488. vpsrld $10, %ymm6, %ymm9
  12489. vpxor %ymm8, %ymm7, %ymm8
  12490. # rnd_1: 4 - 5
  12491. rorl $6, %edx
  12492. xorl %r9d, %ebx
  12493. addl %edx, %r8d
  12494. movl %r9d, %ecx
  12495. andl %ebx, %eax
  12496. rorl $9, %ecx
  12497. xorl %r9d, %ecx
  12498. xorl %r10d, %eax
  12499. vpxor %ymm9, %ymm8, %ymm9
  12500. # rnd_1: 6 - 6
  12501. rorl $11, %ecx
  12502. addl %r8d, %r12d
  12503. xorl %r9d, %ecx
  12504. addl %eax, %r8d
  12505. vpshufb %ymm12, %ymm9, %ymm9
  12506. # rnd_1: 7 - 7
  12507. rorl $2, %ecx
  12508. movl %r12d, %edx
  12509. addl %ecx, %r8d
  12510. vpaddd %ymm4, %ymm9, %ymm1
  12511. # msg_sched done: 8-11
  12512. # msg_sched: 16-19
  12513. # rnd_0: 0 - 0
  12514. rorl $14, %edx
  12515. vpalignr $4, %ymm2, %ymm3, %ymm5
  12516. vpalignr $4, %ymm0, %ymm1, %ymm4
  12517. # rnd_0: 1 - 2
  12518. movl %r9d, %eax
  12519. movl %r13d, %ecx
  12520. addl 64(%rsp), %r15d
  12521. xorl %r14d, %ecx
  12522. xorl %r12d, %edx
  12523. andl %r12d, %ecx
  12524. vpsrld $7, %ymm5, %ymm6
  12525. vpslld $25, %ymm5, %ymm7
  12526. # rnd_0: 3 - 4
  12527. rorl $5, %edx
  12528. xorl %r14d, %ecx
  12529. xorl %r12d, %edx
  12530. addl %ecx, %r15d
  12531. rorl $6, %edx
  12532. xorl %r8d, %eax
  12533. addl %edx, %r15d
  12534. movl %r8d, %ecx
  12535. vpsrld $18, %ymm5, %ymm8
  12536. vpslld $14, %ymm5, %ymm9
  12537. # rnd_0: 5 - 6
  12538. andl %eax, %ebx
  12539. rorl $9, %ecx
  12540. xorl %r8d, %ecx
  12541. xorl %r9d, %ebx
  12542. rorl $11, %ecx
  12543. addl %r15d, %r11d
  12544. xorl %r8d, %ecx
  12545. addl %ebx, %r15d
  12546. vpor %ymm6, %ymm7, %ymm6
  12547. vpor %ymm8, %ymm9, %ymm8
  12548. # rnd_0: 7 - 7
  12549. rorl $2, %ecx
  12550. movl %r11d, %edx
  12551. addl %ecx, %r15d
  12552. # rnd_1: 0 - 1
  12553. rorl $14, %edx
  12554. movl %r8d, %ebx
  12555. movl %r12d, %ecx
  12556. addl 68(%rsp), %r14d
  12557. xorl %r13d, %ecx
  12558. vpsrld $3, %ymm5, %ymm9
  12559. vpxor %ymm6, %ymm8, %ymm6
  12560. # rnd_1: 2 - 3
  12561. xorl %r11d, %edx
  12562. andl %r11d, %ecx
  12563. rorl $5, %edx
  12564. xorl %r13d, %ecx
  12565. xorl %r11d, %edx
  12566. addl %ecx, %r14d
  12567. vpxor %ymm6, %ymm9, %ymm5
  12568. vpshufd $0xfa, %ymm1, %ymm6
  12569. # rnd_1: 4 - 5
  12570. rorl $6, %edx
  12571. xorl %r15d, %ebx
  12572. addl %edx, %r14d
  12573. movl %r15d, %ecx
  12574. andl %ebx, %eax
  12575. rorl $9, %ecx
  12576. xorl %r15d, %ecx
  12577. xorl %r8d, %eax
  12578. vpsrld $10, %ymm6, %ymm8
  12579. vpsrlq $19, %ymm6, %ymm7
  12580. # rnd_1: 6 - 7
  12581. rorl $11, %ecx
  12582. addl %r14d, %r10d
  12583. xorl %r15d, %ecx
  12584. addl %eax, %r14d
  12585. rorl $2, %ecx
  12586. movl %r10d, %edx
  12587. addl %ecx, %r14d
  12588. # rnd_0: 0 - 0
  12589. rorl $14, %edx
  12590. vpsrlq $0x11, %ymm6, %ymm6
  12591. vpaddd %ymm2, %ymm4, %ymm4
  12592. # rnd_0: 1 - 3
  12593. movl %r15d, %eax
  12594. movl %r11d, %ecx
  12595. addl 72(%rsp), %r13d
  12596. xorl %r12d, %ecx
  12597. xorl %r10d, %edx
  12598. andl %r10d, %ecx
  12599. rorl $5, %edx
  12600. xorl %r12d, %ecx
  12601. xorl %r10d, %edx
  12602. addl %ecx, %r13d
  12603. vpxor %ymm6, %ymm7, %ymm6
  12604. vpaddd %ymm5, %ymm4, %ymm4
  12605. # rnd_0: 4 - 4
  12606. rorl $6, %edx
  12607. xorl %r14d, %eax
  12608. addl %edx, %r13d
  12609. movl %r14d, %ecx
  12610. vpxor %ymm6, %ymm8, %ymm8
  12611. # rnd_0: 5 - 5
  12612. andl %eax, %ebx
  12613. rorl $9, %ecx
  12614. xorl %r14d, %ecx
  12615. xorl %r15d, %ebx
  12616. vpshufb %ymm11, %ymm8, %ymm8
  12617. # rnd_0: 6 - 6
  12618. rorl $11, %ecx
  12619. addl %r13d, %r9d
  12620. xorl %r14d, %ecx
  12621. addl %ebx, %r13d
  12622. vpaddd %ymm8, %ymm4, %ymm4
  12623. # rnd_0: 7 - 7
  12624. rorl $2, %ecx
  12625. movl %r9d, %edx
  12626. addl %ecx, %r13d
  12627. # rnd_1: 0 - 0
  12628. rorl $14, %edx
  12629. vpshufd $0x50, %ymm4, %ymm6
  12630. # rnd_1: 1 - 1
  12631. movl %r14d, %ebx
  12632. movl %r10d, %ecx
  12633. addl 76(%rsp), %r12d
  12634. xorl %r11d, %ecx
  12635. vpsrlq $0x11, %ymm6, %ymm8
  12636. vpsrlq $19, %ymm6, %ymm7
  12637. # rnd_1: 2 - 3
  12638. xorl %r9d, %edx
  12639. andl %r9d, %ecx
  12640. rorl $5, %edx
  12641. xorl %r11d, %ecx
  12642. xorl %r9d, %edx
  12643. addl %ecx, %r12d
  12644. vpsrld $10, %ymm6, %ymm9
  12645. vpxor %ymm8, %ymm7, %ymm8
  12646. # rnd_1: 4 - 5
  12647. rorl $6, %edx
  12648. xorl %r13d, %ebx
  12649. addl %edx, %r12d
  12650. movl %r13d, %ecx
  12651. andl %ebx, %eax
  12652. rorl $9, %ecx
  12653. xorl %r13d, %ecx
  12654. xorl %r14d, %eax
  12655. vpxor %ymm9, %ymm8, %ymm9
  12656. # rnd_1: 6 - 6
  12657. rorl $11, %ecx
  12658. addl %r12d, %r8d
  12659. xorl %r13d, %ecx
  12660. addl %eax, %r12d
  12661. vpshufb %ymm12, %ymm9, %ymm9
  12662. # rnd_1: 7 - 7
  12663. rorl $2, %ecx
  12664. movl %r8d, %edx
  12665. addl %ecx, %r12d
  12666. vpaddd %ymm4, %ymm9, %ymm2
  12667. # msg_sched done: 16-19
  12668. # msg_sched: 24-27
  12669. # rnd_0: 0 - 0
  12670. rorl $14, %edx
  12671. vpalignr $4, %ymm3, %ymm0, %ymm5
  12672. vpalignr $4, %ymm1, %ymm2, %ymm4
  12673. # rnd_0: 1 - 2
  12674. movl %r13d, %eax
  12675. movl %r9d, %ecx
  12676. addl 96(%rsp), %r11d
  12677. xorl %r10d, %ecx
  12678. xorl %r8d, %edx
  12679. andl %r8d, %ecx
  12680. vpsrld $7, %ymm5, %ymm6
  12681. vpslld $25, %ymm5, %ymm7
  12682. # rnd_0: 3 - 4
  12683. rorl $5, %edx
  12684. xorl %r10d, %ecx
  12685. xorl %r8d, %edx
  12686. addl %ecx, %r11d
  12687. rorl $6, %edx
  12688. xorl %r12d, %eax
  12689. addl %edx, %r11d
  12690. movl %r12d, %ecx
  12691. vpsrld $18, %ymm5, %ymm8
  12692. vpslld $14, %ymm5, %ymm9
  12693. # rnd_0: 5 - 6
  12694. andl %eax, %ebx
  12695. rorl $9, %ecx
  12696. xorl %r12d, %ecx
  12697. xorl %r13d, %ebx
  12698. rorl $11, %ecx
  12699. addl %r11d, %r15d
  12700. xorl %r12d, %ecx
  12701. addl %ebx, %r11d
  12702. vpor %ymm6, %ymm7, %ymm6
  12703. vpor %ymm8, %ymm9, %ymm8
  12704. # rnd_0: 7 - 7
  12705. rorl $2, %ecx
  12706. movl %r15d, %edx
  12707. addl %ecx, %r11d
  12708. # rnd_1: 0 - 1
  12709. rorl $14, %edx
  12710. movl %r12d, %ebx
  12711. movl %r8d, %ecx
  12712. addl 100(%rsp), %r10d
  12713. xorl %r9d, %ecx
  12714. vpsrld $3, %ymm5, %ymm9
  12715. vpxor %ymm6, %ymm8, %ymm6
  12716. # rnd_1: 2 - 3
  12717. xorl %r15d, %edx
  12718. andl %r15d, %ecx
  12719. rorl $5, %edx
  12720. xorl %r9d, %ecx
  12721. xorl %r15d, %edx
  12722. addl %ecx, %r10d
  12723. vpxor %ymm6, %ymm9, %ymm5
  12724. vpshufd $0xfa, %ymm2, %ymm6
  12725. # rnd_1: 4 - 5
  12726. rorl $6, %edx
  12727. xorl %r11d, %ebx
  12728. addl %edx, %r10d
  12729. movl %r11d, %ecx
  12730. andl %ebx, %eax
  12731. rorl $9, %ecx
  12732. xorl %r11d, %ecx
  12733. xorl %r12d, %eax
  12734. vpsrld $10, %ymm6, %ymm8
  12735. vpsrlq $19, %ymm6, %ymm7
  12736. # rnd_1: 6 - 7
  12737. rorl $11, %ecx
  12738. addl %r10d, %r14d
  12739. xorl %r11d, %ecx
  12740. addl %eax, %r10d
  12741. rorl $2, %ecx
  12742. movl %r14d, %edx
  12743. addl %ecx, %r10d
  12744. # rnd_0: 0 - 0
  12745. rorl $14, %edx
  12746. vpsrlq $0x11, %ymm6, %ymm6
  12747. vpaddd %ymm3, %ymm4, %ymm4
  12748. # rnd_0: 1 - 3
  12749. movl %r11d, %eax
  12750. movl %r15d, %ecx
  12751. addl 104(%rsp), %r9d
  12752. xorl %r8d, %ecx
  12753. xorl %r14d, %edx
  12754. andl %r14d, %ecx
  12755. rorl $5, %edx
  12756. xorl %r8d, %ecx
  12757. xorl %r14d, %edx
  12758. addl %ecx, %r9d
  12759. vpxor %ymm6, %ymm7, %ymm6
  12760. vpaddd %ymm5, %ymm4, %ymm4
  12761. # rnd_0: 4 - 4
  12762. rorl $6, %edx
  12763. xorl %r10d, %eax
  12764. addl %edx, %r9d
  12765. movl %r10d, %ecx
  12766. vpxor %ymm6, %ymm8, %ymm8
  12767. # rnd_0: 5 - 5
  12768. andl %eax, %ebx
  12769. rorl $9, %ecx
  12770. xorl %r10d, %ecx
  12771. xorl %r11d, %ebx
  12772. vpshufb %ymm11, %ymm8, %ymm8
  12773. # rnd_0: 6 - 6
  12774. rorl $11, %ecx
  12775. addl %r9d, %r13d
  12776. xorl %r10d, %ecx
  12777. addl %ebx, %r9d
  12778. vpaddd %ymm8, %ymm4, %ymm4
  12779. # rnd_0: 7 - 7
  12780. rorl $2, %ecx
  12781. movl %r13d, %edx
  12782. addl %ecx, %r9d
  12783. # rnd_1: 0 - 0
  12784. rorl $14, %edx
  12785. vpshufd $0x50, %ymm4, %ymm6
  12786. # rnd_1: 1 - 1
  12787. movl %r10d, %ebx
  12788. movl %r14d, %ecx
  12789. addl 108(%rsp), %r8d
  12790. xorl %r15d, %ecx
  12791. vpsrlq $0x11, %ymm6, %ymm8
  12792. vpsrlq $19, %ymm6, %ymm7
  12793. # rnd_1: 2 - 3
  12794. xorl %r13d, %edx
  12795. andl %r13d, %ecx
  12796. rorl $5, %edx
  12797. xorl %r15d, %ecx
  12798. xorl %r13d, %edx
  12799. addl %ecx, %r8d
  12800. vpsrld $10, %ymm6, %ymm9
  12801. vpxor %ymm8, %ymm7, %ymm8
  12802. # rnd_1: 4 - 5
  12803. rorl $6, %edx
  12804. xorl %r9d, %ebx
  12805. addl %edx, %r8d
  12806. movl %r9d, %ecx
  12807. andl %ebx, %eax
  12808. rorl $9, %ecx
  12809. xorl %r9d, %ecx
  12810. xorl %r10d, %eax
  12811. vpxor %ymm9, %ymm8, %ymm9
  12812. # rnd_1: 6 - 6
  12813. rorl $11, %ecx
  12814. addl %r8d, %r12d
  12815. xorl %r9d, %ecx
  12816. addl %eax, %r8d
  12817. vpshufb %ymm12, %ymm9, %ymm9
  12818. # rnd_1: 7 - 7
  12819. rorl $2, %ecx
  12820. movl %r12d, %edx
  12821. addl %ecx, %r8d
  12822. vpaddd %ymm4, %ymm9, %ymm3
  12823. # msg_sched done: 24-27
  12824. # set_w_k_xfer_4: 4
  12825. vpaddd 128+L_avx2_sha256_k(%rip), %ymm0, %ymm4
  12826. vpaddd 160+L_avx2_sha256_k(%rip), %ymm1, %ymm5
  12827. vmovdqu %ymm4, 128(%rsp)
  12828. vmovdqu %ymm5, 160(%rsp)
  12829. vpaddd 192+L_avx2_sha256_k(%rip), %ymm2, %ymm4
  12830. vpaddd 224+L_avx2_sha256_k(%rip), %ymm3, %ymm5
  12831. vmovdqu %ymm4, 192(%rsp)
  12832. vmovdqu %ymm5, 224(%rsp)
  12833. # msg_sched: 32-35
  12834. # rnd_0: 0 - 0
  12835. rorl $14, %edx
  12836. vpalignr $4, %ymm0, %ymm1, %ymm5
  12837. vpalignr $4, %ymm2, %ymm3, %ymm4
  12838. # rnd_0: 1 - 2
  12839. movl %r9d, %eax
  12840. movl %r13d, %ecx
  12841. addl 128(%rsp), %r15d
  12842. xorl %r14d, %ecx
  12843. xorl %r12d, %edx
  12844. andl %r12d, %ecx
  12845. vpsrld $7, %ymm5, %ymm6
  12846. vpslld $25, %ymm5, %ymm7
  12847. # rnd_0: 3 - 4
  12848. rorl $5, %edx
  12849. xorl %r14d, %ecx
  12850. xorl %r12d, %edx
  12851. addl %ecx, %r15d
  12852. rorl $6, %edx
  12853. xorl %r8d, %eax
  12854. addl %edx, %r15d
  12855. movl %r8d, %ecx
  12856. vpsrld $18, %ymm5, %ymm8
  12857. vpslld $14, %ymm5, %ymm9
  12858. # rnd_0: 5 - 6
  12859. andl %eax, %ebx
  12860. rorl $9, %ecx
  12861. xorl %r8d, %ecx
  12862. xorl %r9d, %ebx
  12863. rorl $11, %ecx
  12864. addl %r15d, %r11d
  12865. xorl %r8d, %ecx
  12866. addl %ebx, %r15d
  12867. vpor %ymm6, %ymm7, %ymm6
  12868. vpor %ymm8, %ymm9, %ymm8
  12869. # rnd_0: 7 - 7
  12870. rorl $2, %ecx
  12871. movl %r11d, %edx
  12872. addl %ecx, %r15d
  12873. # rnd_1: 0 - 1
  12874. rorl $14, %edx
  12875. movl %r8d, %ebx
  12876. movl %r12d, %ecx
  12877. addl 132(%rsp), %r14d
  12878. xorl %r13d, %ecx
  12879. vpsrld $3, %ymm5, %ymm9
  12880. vpxor %ymm6, %ymm8, %ymm6
  12881. # rnd_1: 2 - 3
  12882. xorl %r11d, %edx
  12883. andl %r11d, %ecx
  12884. rorl $5, %edx
  12885. xorl %r13d, %ecx
  12886. xorl %r11d, %edx
  12887. addl %ecx, %r14d
  12888. vpxor %ymm6, %ymm9, %ymm5
  12889. vpshufd $0xfa, %ymm3, %ymm6
  12890. # rnd_1: 4 - 5
  12891. rorl $6, %edx
  12892. xorl %r15d, %ebx
  12893. addl %edx, %r14d
  12894. movl %r15d, %ecx
  12895. andl %ebx, %eax
  12896. rorl $9, %ecx
  12897. xorl %r15d, %ecx
  12898. xorl %r8d, %eax
  12899. vpsrld $10, %ymm6, %ymm8
  12900. vpsrlq $19, %ymm6, %ymm7
  12901. # rnd_1: 6 - 7
  12902. rorl $11, %ecx
  12903. addl %r14d, %r10d
  12904. xorl %r15d, %ecx
  12905. addl %eax, %r14d
  12906. rorl $2, %ecx
  12907. movl %r10d, %edx
  12908. addl %ecx, %r14d
  12909. # rnd_0: 0 - 0
  12910. rorl $14, %edx
  12911. vpsrlq $0x11, %ymm6, %ymm6
  12912. vpaddd %ymm0, %ymm4, %ymm4
  12913. # rnd_0: 1 - 3
  12914. movl %r15d, %eax
  12915. movl %r11d, %ecx
  12916. addl 136(%rsp), %r13d
  12917. xorl %r12d, %ecx
  12918. xorl %r10d, %edx
  12919. andl %r10d, %ecx
  12920. rorl $5, %edx
  12921. xorl %r12d, %ecx
  12922. xorl %r10d, %edx
  12923. addl %ecx, %r13d
  12924. vpxor %ymm6, %ymm7, %ymm6
  12925. vpaddd %ymm5, %ymm4, %ymm4
  12926. # rnd_0: 4 - 4
  12927. rorl $6, %edx
  12928. xorl %r14d, %eax
  12929. addl %edx, %r13d
  12930. movl %r14d, %ecx
  12931. vpxor %ymm6, %ymm8, %ymm8
  12932. # rnd_0: 5 - 5
  12933. andl %eax, %ebx
  12934. rorl $9, %ecx
  12935. xorl %r14d, %ecx
  12936. xorl %r15d, %ebx
  12937. vpshufb %ymm11, %ymm8, %ymm8
  12938. # rnd_0: 6 - 6
  12939. rorl $11, %ecx
  12940. addl %r13d, %r9d
  12941. xorl %r14d, %ecx
  12942. addl %ebx, %r13d
  12943. vpaddd %ymm8, %ymm4, %ymm4
  12944. # rnd_0: 7 - 7
  12945. rorl $2, %ecx
  12946. movl %r9d, %edx
  12947. addl %ecx, %r13d
  12948. # rnd_1: 0 - 0
  12949. rorl $14, %edx
  12950. vpshufd $0x50, %ymm4, %ymm6
  12951. # rnd_1: 1 - 1
  12952. movl %r14d, %ebx
  12953. movl %r10d, %ecx
  12954. addl 140(%rsp), %r12d
  12955. xorl %r11d, %ecx
  12956. vpsrlq $0x11, %ymm6, %ymm8
  12957. vpsrlq $19, %ymm6, %ymm7
  12958. # rnd_1: 2 - 3
  12959. xorl %r9d, %edx
  12960. andl %r9d, %ecx
  12961. rorl $5, %edx
  12962. xorl %r11d, %ecx
  12963. xorl %r9d, %edx
  12964. addl %ecx, %r12d
  12965. vpsrld $10, %ymm6, %ymm9
  12966. vpxor %ymm8, %ymm7, %ymm8
  12967. # rnd_1: 4 - 5
  12968. rorl $6, %edx
  12969. xorl %r13d, %ebx
  12970. addl %edx, %r12d
  12971. movl %r13d, %ecx
  12972. andl %ebx, %eax
  12973. rorl $9, %ecx
  12974. xorl %r13d, %ecx
  12975. xorl %r14d, %eax
  12976. vpxor %ymm9, %ymm8, %ymm9
  12977. # rnd_1: 6 - 6
  12978. rorl $11, %ecx
  12979. addl %r12d, %r8d
  12980. xorl %r13d, %ecx
  12981. addl %eax, %r12d
  12982. vpshufb %ymm12, %ymm9, %ymm9
  12983. # rnd_1: 7 - 7
  12984. rorl $2, %ecx
  12985. movl %r8d, %edx
  12986. addl %ecx, %r12d
  12987. vpaddd %ymm4, %ymm9, %ymm0
  12988. # msg_sched done: 32-35
  12989. # msg_sched: 40-43
  12990. # rnd_0: 0 - 0
  12991. rorl $14, %edx
  12992. vpalignr $4, %ymm1, %ymm2, %ymm5
  12993. vpalignr $4, %ymm3, %ymm0, %ymm4
  12994. # rnd_0: 1 - 2
  12995. movl %r13d, %eax
  12996. movl %r9d, %ecx
  12997. addl 160(%rsp), %r11d
  12998. xorl %r10d, %ecx
  12999. xorl %r8d, %edx
  13000. andl %r8d, %ecx
  13001. vpsrld $7, %ymm5, %ymm6
  13002. vpslld $25, %ymm5, %ymm7
  13003. # rnd_0: 3 - 4
  13004. rorl $5, %edx
  13005. xorl %r10d, %ecx
  13006. xorl %r8d, %edx
  13007. addl %ecx, %r11d
  13008. rorl $6, %edx
  13009. xorl %r12d, %eax
  13010. addl %edx, %r11d
  13011. movl %r12d, %ecx
  13012. vpsrld $18, %ymm5, %ymm8
  13013. vpslld $14, %ymm5, %ymm9
  13014. # rnd_0: 5 - 6
  13015. andl %eax, %ebx
  13016. rorl $9, %ecx
  13017. xorl %r12d, %ecx
  13018. xorl %r13d, %ebx
  13019. rorl $11, %ecx
  13020. addl %r11d, %r15d
  13021. xorl %r12d, %ecx
  13022. addl %ebx, %r11d
  13023. vpor %ymm6, %ymm7, %ymm6
  13024. vpor %ymm8, %ymm9, %ymm8
  13025. # rnd_0: 7 - 7
  13026. rorl $2, %ecx
  13027. movl %r15d, %edx
  13028. addl %ecx, %r11d
  13029. # rnd_1: 0 - 1
  13030. rorl $14, %edx
  13031. movl %r12d, %ebx
  13032. movl %r8d, %ecx
  13033. addl 164(%rsp), %r10d
  13034. xorl %r9d, %ecx
  13035. vpsrld $3, %ymm5, %ymm9
  13036. vpxor %ymm6, %ymm8, %ymm6
  13037. # rnd_1: 2 - 3
  13038. xorl %r15d, %edx
  13039. andl %r15d, %ecx
  13040. rorl $5, %edx
  13041. xorl %r9d, %ecx
  13042. xorl %r15d, %edx
  13043. addl %ecx, %r10d
  13044. vpxor %ymm6, %ymm9, %ymm5
  13045. vpshufd $0xfa, %ymm0, %ymm6
  13046. # rnd_1: 4 - 5
  13047. rorl $6, %edx
  13048. xorl %r11d, %ebx
  13049. addl %edx, %r10d
  13050. movl %r11d, %ecx
  13051. andl %ebx, %eax
  13052. rorl $9, %ecx
  13053. xorl %r11d, %ecx
  13054. xorl %r12d, %eax
  13055. vpsrld $10, %ymm6, %ymm8
  13056. vpsrlq $19, %ymm6, %ymm7
  13057. # rnd_1: 6 - 7
  13058. rorl $11, %ecx
  13059. addl %r10d, %r14d
  13060. xorl %r11d, %ecx
  13061. addl %eax, %r10d
  13062. rorl $2, %ecx
  13063. movl %r14d, %edx
  13064. addl %ecx, %r10d
  13065. # rnd_0: 0 - 0
  13066. rorl $14, %edx
  13067. vpsrlq $0x11, %ymm6, %ymm6
  13068. vpaddd %ymm1, %ymm4, %ymm4
  13069. # rnd_0: 1 - 3
  13070. movl %r11d, %eax
  13071. movl %r15d, %ecx
  13072. addl 168(%rsp), %r9d
  13073. xorl %r8d, %ecx
  13074. xorl %r14d, %edx
  13075. andl %r14d, %ecx
  13076. rorl $5, %edx
  13077. xorl %r8d, %ecx
  13078. xorl %r14d, %edx
  13079. addl %ecx, %r9d
  13080. vpxor %ymm6, %ymm7, %ymm6
  13081. vpaddd %ymm5, %ymm4, %ymm4
  13082. # rnd_0: 4 - 4
  13083. rorl $6, %edx
  13084. xorl %r10d, %eax
  13085. addl %edx, %r9d
  13086. movl %r10d, %ecx
  13087. vpxor %ymm6, %ymm8, %ymm8
  13088. # rnd_0: 5 - 5
  13089. andl %eax, %ebx
  13090. rorl $9, %ecx
  13091. xorl %r10d, %ecx
  13092. xorl %r11d, %ebx
  13093. vpshufb %ymm11, %ymm8, %ymm8
  13094. # rnd_0: 6 - 6
  13095. rorl $11, %ecx
  13096. addl %r9d, %r13d
  13097. xorl %r10d, %ecx
  13098. addl %ebx, %r9d
  13099. vpaddd %ymm8, %ymm4, %ymm4
  13100. # rnd_0: 7 - 7
  13101. rorl $2, %ecx
  13102. movl %r13d, %edx
  13103. addl %ecx, %r9d
  13104. # rnd_1: 0 - 0
  13105. rorl $14, %edx
  13106. vpshufd $0x50, %ymm4, %ymm6
  13107. # rnd_1: 1 - 1
  13108. movl %r10d, %ebx
  13109. movl %r14d, %ecx
  13110. addl 172(%rsp), %r8d
  13111. xorl %r15d, %ecx
  13112. vpsrlq $0x11, %ymm6, %ymm8
  13113. vpsrlq $19, %ymm6, %ymm7
  13114. # rnd_1: 2 - 3
  13115. xorl %r13d, %edx
  13116. andl %r13d, %ecx
  13117. rorl $5, %edx
  13118. xorl %r15d, %ecx
  13119. xorl %r13d, %edx
  13120. addl %ecx, %r8d
  13121. vpsrld $10, %ymm6, %ymm9
  13122. vpxor %ymm8, %ymm7, %ymm8
  13123. # rnd_1: 4 - 5
  13124. rorl $6, %edx
  13125. xorl %r9d, %ebx
  13126. addl %edx, %r8d
  13127. movl %r9d, %ecx
  13128. andl %ebx, %eax
  13129. rorl $9, %ecx
  13130. xorl %r9d, %ecx
  13131. xorl %r10d, %eax
  13132. vpxor %ymm9, %ymm8, %ymm9
  13133. # rnd_1: 6 - 6
  13134. rorl $11, %ecx
  13135. addl %r8d, %r12d
  13136. xorl %r9d, %ecx
  13137. addl %eax, %r8d
  13138. vpshufb %ymm12, %ymm9, %ymm9
  13139. # rnd_1: 7 - 7
  13140. rorl $2, %ecx
  13141. movl %r12d, %edx
  13142. addl %ecx, %r8d
  13143. vpaddd %ymm4, %ymm9, %ymm1
  13144. # msg_sched done: 40-43
  13145. # msg_sched: 48-51
  13146. # rnd_0: 0 - 0
  13147. rorl $14, %edx
  13148. vpalignr $4, %ymm2, %ymm3, %ymm5
  13149. vpalignr $4, %ymm0, %ymm1, %ymm4
  13150. # rnd_0: 1 - 2
  13151. movl %r9d, %eax
  13152. movl %r13d, %ecx
  13153. addl 192(%rsp), %r15d
  13154. xorl %r14d, %ecx
  13155. xorl %r12d, %edx
  13156. andl %r12d, %ecx
  13157. vpsrld $7, %ymm5, %ymm6
  13158. vpslld $25, %ymm5, %ymm7
  13159. # rnd_0: 3 - 4
  13160. rorl $5, %edx
  13161. xorl %r14d, %ecx
  13162. xorl %r12d, %edx
  13163. addl %ecx, %r15d
  13164. rorl $6, %edx
  13165. xorl %r8d, %eax
  13166. addl %edx, %r15d
  13167. movl %r8d, %ecx
  13168. vpsrld $18, %ymm5, %ymm8
  13169. vpslld $14, %ymm5, %ymm9
  13170. # rnd_0: 5 - 6
  13171. andl %eax, %ebx
  13172. rorl $9, %ecx
  13173. xorl %r8d, %ecx
  13174. xorl %r9d, %ebx
  13175. rorl $11, %ecx
  13176. addl %r15d, %r11d
  13177. xorl %r8d, %ecx
  13178. addl %ebx, %r15d
  13179. vpor %ymm6, %ymm7, %ymm6
  13180. vpor %ymm8, %ymm9, %ymm8
  13181. # rnd_0: 7 - 7
  13182. rorl $2, %ecx
  13183. movl %r11d, %edx
  13184. addl %ecx, %r15d
  13185. # rnd_1: 0 - 1
  13186. rorl $14, %edx
  13187. movl %r8d, %ebx
  13188. movl %r12d, %ecx
  13189. addl 196(%rsp), %r14d
  13190. xorl %r13d, %ecx
  13191. vpsrld $3, %ymm5, %ymm9
  13192. vpxor %ymm6, %ymm8, %ymm6
  13193. # rnd_1: 2 - 3
  13194. xorl %r11d, %edx
  13195. andl %r11d, %ecx
  13196. rorl $5, %edx
  13197. xorl %r13d, %ecx
  13198. xorl %r11d, %edx
  13199. addl %ecx, %r14d
  13200. vpxor %ymm6, %ymm9, %ymm5
  13201. vpshufd $0xfa, %ymm1, %ymm6
  13202. # rnd_1: 4 - 5
  13203. rorl $6, %edx
  13204. xorl %r15d, %ebx
  13205. addl %edx, %r14d
  13206. movl %r15d, %ecx
  13207. andl %ebx, %eax
  13208. rorl $9, %ecx
  13209. xorl %r15d, %ecx
  13210. xorl %r8d, %eax
  13211. vpsrld $10, %ymm6, %ymm8
  13212. vpsrlq $19, %ymm6, %ymm7
  13213. # rnd_1: 6 - 7
  13214. rorl $11, %ecx
  13215. addl %r14d, %r10d
  13216. xorl %r15d, %ecx
  13217. addl %eax, %r14d
  13218. rorl $2, %ecx
  13219. movl %r10d, %edx
  13220. addl %ecx, %r14d
  13221. # rnd_0: 0 - 0
  13222. rorl $14, %edx
  13223. vpsrlq $0x11, %ymm6, %ymm6
  13224. vpaddd %ymm2, %ymm4, %ymm4
  13225. # rnd_0: 1 - 3
  13226. movl %r15d, %eax
  13227. movl %r11d, %ecx
  13228. addl 200(%rsp), %r13d
  13229. xorl %r12d, %ecx
  13230. xorl %r10d, %edx
  13231. andl %r10d, %ecx
  13232. rorl $5, %edx
  13233. xorl %r12d, %ecx
  13234. xorl %r10d, %edx
  13235. addl %ecx, %r13d
  13236. vpxor %ymm6, %ymm7, %ymm6
  13237. vpaddd %ymm5, %ymm4, %ymm4
  13238. # rnd_0: 4 - 4
  13239. rorl $6, %edx
  13240. xorl %r14d, %eax
  13241. addl %edx, %r13d
  13242. movl %r14d, %ecx
  13243. vpxor %ymm6, %ymm8, %ymm8
  13244. # rnd_0: 5 - 5
  13245. andl %eax, %ebx
  13246. rorl $9, %ecx
  13247. xorl %r14d, %ecx
  13248. xorl %r15d, %ebx
  13249. vpshufb %ymm11, %ymm8, %ymm8
  13250. # rnd_0: 6 - 6
  13251. rorl $11, %ecx
  13252. addl %r13d, %r9d
  13253. xorl %r14d, %ecx
  13254. addl %ebx, %r13d
  13255. vpaddd %ymm8, %ymm4, %ymm4
  13256. # rnd_0: 7 - 7
  13257. rorl $2, %ecx
  13258. movl %r9d, %edx
  13259. addl %ecx, %r13d
  13260. # rnd_1: 0 - 0
  13261. rorl $14, %edx
  13262. vpshufd $0x50, %ymm4, %ymm6
  13263. # rnd_1: 1 - 1
  13264. movl %r14d, %ebx
  13265. movl %r10d, %ecx
  13266. addl 204(%rsp), %r12d
  13267. xorl %r11d, %ecx
  13268. vpsrlq $0x11, %ymm6, %ymm8
  13269. vpsrlq $19, %ymm6, %ymm7
  13270. # rnd_1: 2 - 3
  13271. xorl %r9d, %edx
  13272. andl %r9d, %ecx
  13273. rorl $5, %edx
  13274. xorl %r11d, %ecx
  13275. xorl %r9d, %edx
  13276. addl %ecx, %r12d
  13277. vpsrld $10, %ymm6, %ymm9
  13278. vpxor %ymm8, %ymm7, %ymm8
  13279. # rnd_1: 4 - 5
  13280. rorl $6, %edx
  13281. xorl %r13d, %ebx
  13282. addl %edx, %r12d
  13283. movl %r13d, %ecx
  13284. andl %ebx, %eax
  13285. rorl $9, %ecx
  13286. xorl %r13d, %ecx
  13287. xorl %r14d, %eax
  13288. vpxor %ymm9, %ymm8, %ymm9
  13289. # rnd_1: 6 - 6
  13290. rorl $11, %ecx
  13291. addl %r12d, %r8d
  13292. xorl %r13d, %ecx
  13293. addl %eax, %r12d
  13294. vpshufb %ymm12, %ymm9, %ymm9
  13295. # rnd_1: 7 - 7
  13296. rorl $2, %ecx
  13297. movl %r8d, %edx
  13298. addl %ecx, %r12d
  13299. vpaddd %ymm4, %ymm9, %ymm2
  13300. # msg_sched done: 48-51
  13301. # msg_sched: 56-59
  13302. # rnd_0: 0 - 0
  13303. rorl $14, %edx
  13304. vpalignr $4, %ymm3, %ymm0, %ymm5
  13305. vpalignr $4, %ymm1, %ymm2, %ymm4
  13306. # rnd_0: 1 - 2
  13307. movl %r13d, %eax
  13308. movl %r9d, %ecx
  13309. addl 224(%rsp), %r11d
  13310. xorl %r10d, %ecx
  13311. xorl %r8d, %edx
  13312. andl %r8d, %ecx
  13313. vpsrld $7, %ymm5, %ymm6
  13314. vpslld $25, %ymm5, %ymm7
  13315. # rnd_0: 3 - 4
  13316. rorl $5, %edx
  13317. xorl %r10d, %ecx
  13318. xorl %r8d, %edx
  13319. addl %ecx, %r11d
  13320. rorl $6, %edx
  13321. xorl %r12d, %eax
  13322. addl %edx, %r11d
  13323. movl %r12d, %ecx
  13324. vpsrld $18, %ymm5, %ymm8
  13325. vpslld $14, %ymm5, %ymm9
  13326. # rnd_0: 5 - 6
  13327. andl %eax, %ebx
  13328. rorl $9, %ecx
  13329. xorl %r12d, %ecx
  13330. xorl %r13d, %ebx
  13331. rorl $11, %ecx
  13332. addl %r11d, %r15d
  13333. xorl %r12d, %ecx
  13334. addl %ebx, %r11d
  13335. vpor %ymm6, %ymm7, %ymm6
  13336. vpor %ymm8, %ymm9, %ymm8
  13337. # rnd_0: 7 - 7
  13338. rorl $2, %ecx
  13339. movl %r15d, %edx
  13340. addl %ecx, %r11d
  13341. # rnd_1: 0 - 1
  13342. rorl $14, %edx
  13343. movl %r12d, %ebx
  13344. movl %r8d, %ecx
  13345. addl 228(%rsp), %r10d
  13346. xorl %r9d, %ecx
  13347. vpsrld $3, %ymm5, %ymm9
  13348. vpxor %ymm6, %ymm8, %ymm6
  13349. # rnd_1: 2 - 3
  13350. xorl %r15d, %edx
  13351. andl %r15d, %ecx
  13352. rorl $5, %edx
  13353. xorl %r9d, %ecx
  13354. xorl %r15d, %edx
  13355. addl %ecx, %r10d
  13356. vpxor %ymm6, %ymm9, %ymm5
  13357. vpshufd $0xfa, %ymm2, %ymm6
  13358. # rnd_1: 4 - 5
  13359. rorl $6, %edx
  13360. xorl %r11d, %ebx
  13361. addl %edx, %r10d
  13362. movl %r11d, %ecx
  13363. andl %ebx, %eax
  13364. rorl $9, %ecx
  13365. xorl %r11d, %ecx
  13366. xorl %r12d, %eax
  13367. vpsrld $10, %ymm6, %ymm8
  13368. vpsrlq $19, %ymm6, %ymm7
  13369. # rnd_1: 6 - 7
  13370. rorl $11, %ecx
  13371. addl %r10d, %r14d
  13372. xorl %r11d, %ecx
  13373. addl %eax, %r10d
  13374. rorl $2, %ecx
  13375. movl %r14d, %edx
  13376. addl %ecx, %r10d
  13377. # rnd_0: 0 - 0
  13378. rorl $14, %edx
  13379. vpsrlq $0x11, %ymm6, %ymm6
  13380. vpaddd %ymm3, %ymm4, %ymm4
  13381. # rnd_0: 1 - 3
  13382. movl %r11d, %eax
  13383. movl %r15d, %ecx
  13384. addl 232(%rsp), %r9d
  13385. xorl %r8d, %ecx
  13386. xorl %r14d, %edx
  13387. andl %r14d, %ecx
  13388. rorl $5, %edx
  13389. xorl %r8d, %ecx
  13390. xorl %r14d, %edx
  13391. addl %ecx, %r9d
  13392. vpxor %ymm6, %ymm7, %ymm6
  13393. vpaddd %ymm5, %ymm4, %ymm4
  13394. # rnd_0: 4 - 4
  13395. rorl $6, %edx
  13396. xorl %r10d, %eax
  13397. addl %edx, %r9d
  13398. movl %r10d, %ecx
  13399. vpxor %ymm6, %ymm8, %ymm8
  13400. # rnd_0: 5 - 5
  13401. andl %eax, %ebx
  13402. rorl $9, %ecx
  13403. xorl %r10d, %ecx
  13404. xorl %r11d, %ebx
  13405. vpshufb %ymm11, %ymm8, %ymm8
  13406. # rnd_0: 6 - 6
  13407. rorl $11, %ecx
  13408. addl %r9d, %r13d
  13409. xorl %r10d, %ecx
  13410. addl %ebx, %r9d
  13411. vpaddd %ymm8, %ymm4, %ymm4
  13412. # rnd_0: 7 - 7
  13413. rorl $2, %ecx
  13414. movl %r13d, %edx
  13415. addl %ecx, %r9d
  13416. # rnd_1: 0 - 0
  13417. rorl $14, %edx
  13418. vpshufd $0x50, %ymm4, %ymm6
  13419. # rnd_1: 1 - 1
  13420. movl %r10d, %ebx
  13421. movl %r14d, %ecx
  13422. addl 236(%rsp), %r8d
  13423. xorl %r15d, %ecx
  13424. vpsrlq $0x11, %ymm6, %ymm8
  13425. vpsrlq $19, %ymm6, %ymm7
  13426. # rnd_1: 2 - 3
  13427. xorl %r13d, %edx
  13428. andl %r13d, %ecx
  13429. rorl $5, %edx
  13430. xorl %r15d, %ecx
  13431. xorl %r13d, %edx
  13432. addl %ecx, %r8d
  13433. vpsrld $10, %ymm6, %ymm9
  13434. vpxor %ymm8, %ymm7, %ymm8
  13435. # rnd_1: 4 - 5
  13436. rorl $6, %edx
  13437. xorl %r9d, %ebx
  13438. addl %edx, %r8d
  13439. movl %r9d, %ecx
  13440. andl %ebx, %eax
  13441. rorl $9, %ecx
  13442. xorl %r9d, %ecx
  13443. xorl %r10d, %eax
  13444. vpxor %ymm9, %ymm8, %ymm9
  13445. # rnd_1: 6 - 6
  13446. rorl $11, %ecx
  13447. addl %r8d, %r12d
  13448. xorl %r9d, %ecx
  13449. addl %eax, %r8d
  13450. vpshufb %ymm12, %ymm9, %ymm9
  13451. # rnd_1: 7 - 7
  13452. rorl $2, %ecx
  13453. movl %r12d, %edx
  13454. addl %ecx, %r8d
  13455. vpaddd %ymm4, %ymm9, %ymm3
  13456. # msg_sched done: 56-59
  13457. # set_w_k_xfer_4: 8
  13458. vpaddd 256+L_avx2_sha256_k(%rip), %ymm0, %ymm4
  13459. vpaddd 288+L_avx2_sha256_k(%rip), %ymm1, %ymm5
  13460. vmovdqu %ymm4, 256(%rsp)
  13461. vmovdqu %ymm5, 288(%rsp)
  13462. vpaddd 320+L_avx2_sha256_k(%rip), %ymm2, %ymm4
  13463. vpaddd 352+L_avx2_sha256_k(%rip), %ymm3, %ymm5
  13464. vmovdqu %ymm4, 320(%rsp)
  13465. vmovdqu %ymm5, 352(%rsp)
  13466. # msg_sched: 64-67
  13467. # rnd_0: 0 - 0
  13468. rorl $14, %edx
  13469. vpalignr $4, %ymm0, %ymm1, %ymm5
  13470. vpalignr $4, %ymm2, %ymm3, %ymm4
  13471. # rnd_0: 1 - 2
  13472. movl %r9d, %eax
  13473. movl %r13d, %ecx
  13474. addl 256(%rsp), %r15d
  13475. xorl %r14d, %ecx
  13476. xorl %r12d, %edx
  13477. andl %r12d, %ecx
  13478. vpsrld $7, %ymm5, %ymm6
  13479. vpslld $25, %ymm5, %ymm7
  13480. # rnd_0: 3 - 4
  13481. rorl $5, %edx
  13482. xorl %r14d, %ecx
  13483. xorl %r12d, %edx
  13484. addl %ecx, %r15d
  13485. rorl $6, %edx
  13486. xorl %r8d, %eax
  13487. addl %edx, %r15d
  13488. movl %r8d, %ecx
  13489. vpsrld $18, %ymm5, %ymm8
  13490. vpslld $14, %ymm5, %ymm9
  13491. # rnd_0: 5 - 6
  13492. andl %eax, %ebx
  13493. rorl $9, %ecx
  13494. xorl %r8d, %ecx
  13495. xorl %r9d, %ebx
  13496. rorl $11, %ecx
  13497. addl %r15d, %r11d
  13498. xorl %r8d, %ecx
  13499. addl %ebx, %r15d
  13500. vpor %ymm6, %ymm7, %ymm6
  13501. vpor %ymm8, %ymm9, %ymm8
  13502. # rnd_0: 7 - 7
  13503. rorl $2, %ecx
  13504. movl %r11d, %edx
  13505. addl %ecx, %r15d
  13506. # rnd_1: 0 - 1
  13507. rorl $14, %edx
  13508. movl %r8d, %ebx
  13509. movl %r12d, %ecx
  13510. addl 260(%rsp), %r14d
  13511. xorl %r13d, %ecx
  13512. vpsrld $3, %ymm5, %ymm9
  13513. vpxor %ymm6, %ymm8, %ymm6
  13514. # rnd_1: 2 - 3
  13515. xorl %r11d, %edx
  13516. andl %r11d, %ecx
  13517. rorl $5, %edx
  13518. xorl %r13d, %ecx
  13519. xorl %r11d, %edx
  13520. addl %ecx, %r14d
  13521. vpxor %ymm6, %ymm9, %ymm5
  13522. vpshufd $0xfa, %ymm3, %ymm6
  13523. # rnd_1: 4 - 5
  13524. rorl $6, %edx
  13525. xorl %r15d, %ebx
  13526. addl %edx, %r14d
  13527. movl %r15d, %ecx
  13528. andl %ebx, %eax
  13529. rorl $9, %ecx
  13530. xorl %r15d, %ecx
  13531. xorl %r8d, %eax
  13532. vpsrld $10, %ymm6, %ymm8
  13533. vpsrlq $19, %ymm6, %ymm7
  13534. # rnd_1: 6 - 7
  13535. rorl $11, %ecx
  13536. addl %r14d, %r10d
  13537. xorl %r15d, %ecx
  13538. addl %eax, %r14d
  13539. rorl $2, %ecx
  13540. movl %r10d, %edx
  13541. addl %ecx, %r14d
  13542. # rnd_0: 0 - 0
  13543. rorl $14, %edx
  13544. vpsrlq $0x11, %ymm6, %ymm6
  13545. vpaddd %ymm0, %ymm4, %ymm4
  13546. # rnd_0: 1 - 3
  13547. movl %r15d, %eax
  13548. movl %r11d, %ecx
  13549. addl 264(%rsp), %r13d
  13550. xorl %r12d, %ecx
  13551. xorl %r10d, %edx
  13552. andl %r10d, %ecx
  13553. rorl $5, %edx
  13554. xorl %r12d, %ecx
  13555. xorl %r10d, %edx
  13556. addl %ecx, %r13d
  13557. vpxor %ymm6, %ymm7, %ymm6
  13558. vpaddd %ymm5, %ymm4, %ymm4
  13559. # rnd_0: 4 - 4
  13560. rorl $6, %edx
  13561. xorl %r14d, %eax
  13562. addl %edx, %r13d
  13563. movl %r14d, %ecx
  13564. vpxor %ymm6, %ymm8, %ymm8
  13565. # rnd_0: 5 - 5
  13566. andl %eax, %ebx
  13567. rorl $9, %ecx
  13568. xorl %r14d, %ecx
  13569. xorl %r15d, %ebx
  13570. vpshufb %ymm11, %ymm8, %ymm8
  13571. # rnd_0: 6 - 6
  13572. rorl $11, %ecx
  13573. addl %r13d, %r9d
  13574. xorl %r14d, %ecx
  13575. addl %ebx, %r13d
  13576. vpaddd %ymm8, %ymm4, %ymm4
  13577. # rnd_0: 7 - 7
  13578. rorl $2, %ecx
  13579. movl %r9d, %edx
  13580. addl %ecx, %r13d
  13581. # rnd_1: 0 - 0
  13582. rorl $14, %edx
  13583. vpshufd $0x50, %ymm4, %ymm6
  13584. # rnd_1: 1 - 1
  13585. movl %r14d, %ebx
  13586. movl %r10d, %ecx
  13587. addl 268(%rsp), %r12d
  13588. xorl %r11d, %ecx
  13589. vpsrlq $0x11, %ymm6, %ymm8
  13590. vpsrlq $19, %ymm6, %ymm7
  13591. # rnd_1: 2 - 3
  13592. xorl %r9d, %edx
  13593. andl %r9d, %ecx
  13594. rorl $5, %edx
  13595. xorl %r11d, %ecx
  13596. xorl %r9d, %edx
  13597. addl %ecx, %r12d
  13598. vpsrld $10, %ymm6, %ymm9
  13599. vpxor %ymm8, %ymm7, %ymm8
  13600. # rnd_1: 4 - 5
  13601. rorl $6, %edx
  13602. xorl %r13d, %ebx
  13603. addl %edx, %r12d
  13604. movl %r13d, %ecx
  13605. andl %ebx, %eax
  13606. rorl $9, %ecx
  13607. xorl %r13d, %ecx
  13608. xorl %r14d, %eax
  13609. vpxor %ymm9, %ymm8, %ymm9
  13610. # rnd_1: 6 - 6
  13611. rorl $11, %ecx
  13612. addl %r12d, %r8d
  13613. xorl %r13d, %ecx
  13614. addl %eax, %r12d
  13615. vpshufb %ymm12, %ymm9, %ymm9
  13616. # rnd_1: 7 - 7
  13617. rorl $2, %ecx
  13618. movl %r8d, %edx
  13619. addl %ecx, %r12d
  13620. vpaddd %ymm4, %ymm9, %ymm0
  13621. # msg_sched done: 64-67
  13622. # msg_sched: 72-75
  13623. # rnd_0: 0 - 0
  13624. rorl $14, %edx
  13625. vpalignr $4, %ymm1, %ymm2, %ymm5
  13626. vpalignr $4, %ymm3, %ymm0, %ymm4
  13627. # rnd_0: 1 - 2
  13628. movl %r13d, %eax
  13629. movl %r9d, %ecx
  13630. addl 288(%rsp), %r11d
  13631. xorl %r10d, %ecx
  13632. xorl %r8d, %edx
  13633. andl %r8d, %ecx
  13634. vpsrld $7, %ymm5, %ymm6
  13635. vpslld $25, %ymm5, %ymm7
  13636. # rnd_0: 3 - 4
  13637. rorl $5, %edx
  13638. xorl %r10d, %ecx
  13639. xorl %r8d, %edx
  13640. addl %ecx, %r11d
  13641. rorl $6, %edx
  13642. xorl %r12d, %eax
  13643. addl %edx, %r11d
  13644. movl %r12d, %ecx
  13645. vpsrld $18, %ymm5, %ymm8
  13646. vpslld $14, %ymm5, %ymm9
  13647. # rnd_0: 5 - 6
  13648. andl %eax, %ebx
  13649. rorl $9, %ecx
  13650. xorl %r12d, %ecx
  13651. xorl %r13d, %ebx
  13652. rorl $11, %ecx
  13653. addl %r11d, %r15d
  13654. xorl %r12d, %ecx
  13655. addl %ebx, %r11d
  13656. vpor %ymm6, %ymm7, %ymm6
  13657. vpor %ymm8, %ymm9, %ymm8
  13658. # rnd_0: 7 - 7
  13659. rorl $2, %ecx
  13660. movl %r15d, %edx
  13661. addl %ecx, %r11d
  13662. # rnd_1: 0 - 1
  13663. rorl $14, %edx
  13664. movl %r12d, %ebx
  13665. movl %r8d, %ecx
  13666. addl 292(%rsp), %r10d
  13667. xorl %r9d, %ecx
  13668. vpsrld $3, %ymm5, %ymm9
  13669. vpxor %ymm6, %ymm8, %ymm6
  13670. # rnd_1: 2 - 3
  13671. xorl %r15d, %edx
  13672. andl %r15d, %ecx
  13673. rorl $5, %edx
  13674. xorl %r9d, %ecx
  13675. xorl %r15d, %edx
  13676. addl %ecx, %r10d
  13677. vpxor %ymm6, %ymm9, %ymm5
  13678. vpshufd $0xfa, %ymm0, %ymm6
  13679. # rnd_1: 4 - 5
  13680. rorl $6, %edx
  13681. xorl %r11d, %ebx
  13682. addl %edx, %r10d
  13683. movl %r11d, %ecx
  13684. andl %ebx, %eax
  13685. rorl $9, %ecx
  13686. xorl %r11d, %ecx
  13687. xorl %r12d, %eax
  13688. vpsrld $10, %ymm6, %ymm8
  13689. vpsrlq $19, %ymm6, %ymm7
  13690. # rnd_1: 6 - 7
  13691. rorl $11, %ecx
  13692. addl %r10d, %r14d
  13693. xorl %r11d, %ecx
  13694. addl %eax, %r10d
  13695. rorl $2, %ecx
  13696. movl %r14d, %edx
  13697. addl %ecx, %r10d
  13698. # rnd_0: 0 - 0
  13699. rorl $14, %edx
  13700. vpsrlq $0x11, %ymm6, %ymm6
  13701. vpaddd %ymm1, %ymm4, %ymm4
  13702. # rnd_0: 1 - 3
  13703. movl %r11d, %eax
  13704. movl %r15d, %ecx
  13705. addl 296(%rsp), %r9d
  13706. xorl %r8d, %ecx
  13707. xorl %r14d, %edx
  13708. andl %r14d, %ecx
  13709. rorl $5, %edx
  13710. xorl %r8d, %ecx
  13711. xorl %r14d, %edx
  13712. addl %ecx, %r9d
  13713. vpxor %ymm6, %ymm7, %ymm6
  13714. vpaddd %ymm5, %ymm4, %ymm4
  13715. # rnd_0: 4 - 4
  13716. rorl $6, %edx
  13717. xorl %r10d, %eax
  13718. addl %edx, %r9d
  13719. movl %r10d, %ecx
  13720. vpxor %ymm6, %ymm8, %ymm8
  13721. # rnd_0: 5 - 5
  13722. andl %eax, %ebx
  13723. rorl $9, %ecx
  13724. xorl %r10d, %ecx
  13725. xorl %r11d, %ebx
  13726. vpshufb %ymm11, %ymm8, %ymm8
  13727. # rnd_0: 6 - 6
  13728. rorl $11, %ecx
  13729. addl %r9d, %r13d
  13730. xorl %r10d, %ecx
  13731. addl %ebx, %r9d
  13732. vpaddd %ymm8, %ymm4, %ymm4
  13733. # rnd_0: 7 - 7
  13734. rorl $2, %ecx
  13735. movl %r13d, %edx
  13736. addl %ecx, %r9d
  13737. # rnd_1: 0 - 0
  13738. rorl $14, %edx
  13739. vpshufd $0x50, %ymm4, %ymm6
  13740. # rnd_1: 1 - 1
  13741. movl %r10d, %ebx
  13742. movl %r14d, %ecx
  13743. addl 300(%rsp), %r8d
  13744. xorl %r15d, %ecx
  13745. vpsrlq $0x11, %ymm6, %ymm8
  13746. vpsrlq $19, %ymm6, %ymm7
  13747. # rnd_1: 2 - 3
  13748. xorl %r13d, %edx
  13749. andl %r13d, %ecx
  13750. rorl $5, %edx
  13751. xorl %r15d, %ecx
  13752. xorl %r13d, %edx
  13753. addl %ecx, %r8d
  13754. vpsrld $10, %ymm6, %ymm9
  13755. vpxor %ymm8, %ymm7, %ymm8
  13756. # rnd_1: 4 - 5
  13757. rorl $6, %edx
  13758. xorl %r9d, %ebx
  13759. addl %edx, %r8d
  13760. movl %r9d, %ecx
  13761. andl %ebx, %eax
  13762. rorl $9, %ecx
  13763. xorl %r9d, %ecx
  13764. xorl %r10d, %eax
  13765. vpxor %ymm9, %ymm8, %ymm9
  13766. # rnd_1: 6 - 6
  13767. rorl $11, %ecx
  13768. addl %r8d, %r12d
  13769. xorl %r9d, %ecx
  13770. addl %eax, %r8d
  13771. vpshufb %ymm12, %ymm9, %ymm9
  13772. # rnd_1: 7 - 7
  13773. rorl $2, %ecx
  13774. movl %r12d, %edx
  13775. addl %ecx, %r8d
  13776. vpaddd %ymm4, %ymm9, %ymm1
  13777. # msg_sched done: 72-75
  13778. # msg_sched: 80-83
  13779. # rnd_0: 0 - 0
  13780. rorl $14, %edx
  13781. vpalignr $4, %ymm2, %ymm3, %ymm5
  13782. vpalignr $4, %ymm0, %ymm1, %ymm4
  13783. # rnd_0: 1 - 2
  13784. movl %r9d, %eax
  13785. movl %r13d, %ecx
  13786. addl 320(%rsp), %r15d
  13787. xorl %r14d, %ecx
  13788. xorl %r12d, %edx
  13789. andl %r12d, %ecx
  13790. vpsrld $7, %ymm5, %ymm6
  13791. vpslld $25, %ymm5, %ymm7
  13792. # rnd_0: 3 - 4
  13793. rorl $5, %edx
  13794. xorl %r14d, %ecx
  13795. xorl %r12d, %edx
  13796. addl %ecx, %r15d
  13797. rorl $6, %edx
  13798. xorl %r8d, %eax
  13799. addl %edx, %r15d
  13800. movl %r8d, %ecx
  13801. vpsrld $18, %ymm5, %ymm8
  13802. vpslld $14, %ymm5, %ymm9
  13803. # rnd_0: 5 - 6
  13804. andl %eax, %ebx
  13805. rorl $9, %ecx
  13806. xorl %r8d, %ecx
  13807. xorl %r9d, %ebx
  13808. rorl $11, %ecx
  13809. addl %r15d, %r11d
  13810. xorl %r8d, %ecx
  13811. addl %ebx, %r15d
  13812. vpor %ymm6, %ymm7, %ymm6
  13813. vpor %ymm8, %ymm9, %ymm8
  13814. # rnd_0: 7 - 7
  13815. rorl $2, %ecx
  13816. movl %r11d, %edx
  13817. addl %ecx, %r15d
  13818. # rnd_1: 0 - 1
  13819. rorl $14, %edx
  13820. movl %r8d, %ebx
  13821. movl %r12d, %ecx
  13822. addl 324(%rsp), %r14d
  13823. xorl %r13d, %ecx
  13824. vpsrld $3, %ymm5, %ymm9
  13825. vpxor %ymm6, %ymm8, %ymm6
  13826. # rnd_1: 2 - 3
  13827. xorl %r11d, %edx
  13828. andl %r11d, %ecx
  13829. rorl $5, %edx
  13830. xorl %r13d, %ecx
  13831. xorl %r11d, %edx
  13832. addl %ecx, %r14d
  13833. vpxor %ymm6, %ymm9, %ymm5
  13834. vpshufd $0xfa, %ymm1, %ymm6
  13835. # rnd_1: 4 - 5
  13836. rorl $6, %edx
  13837. xorl %r15d, %ebx
  13838. addl %edx, %r14d
  13839. movl %r15d, %ecx
  13840. andl %ebx, %eax
  13841. rorl $9, %ecx
  13842. xorl %r15d, %ecx
  13843. xorl %r8d, %eax
  13844. vpsrld $10, %ymm6, %ymm8
  13845. vpsrlq $19, %ymm6, %ymm7
  13846. # rnd_1: 6 - 7
  13847. rorl $11, %ecx
  13848. addl %r14d, %r10d
  13849. xorl %r15d, %ecx
  13850. addl %eax, %r14d
  13851. rorl $2, %ecx
  13852. movl %r10d, %edx
  13853. addl %ecx, %r14d
  13854. # rnd_0: 0 - 0
  13855. rorl $14, %edx
  13856. vpsrlq $0x11, %ymm6, %ymm6
  13857. vpaddd %ymm2, %ymm4, %ymm4
  13858. # rnd_0: 1 - 3
  13859. movl %r15d, %eax
  13860. movl %r11d, %ecx
  13861. addl 328(%rsp), %r13d
  13862. xorl %r12d, %ecx
  13863. xorl %r10d, %edx
  13864. andl %r10d, %ecx
  13865. rorl $5, %edx
  13866. xorl %r12d, %ecx
  13867. xorl %r10d, %edx
  13868. addl %ecx, %r13d
  13869. vpxor %ymm6, %ymm7, %ymm6
  13870. vpaddd %ymm5, %ymm4, %ymm4
  13871. # rnd_0: 4 - 4
  13872. rorl $6, %edx
  13873. xorl %r14d, %eax
  13874. addl %edx, %r13d
  13875. movl %r14d, %ecx
  13876. vpxor %ymm6, %ymm8, %ymm8
  13877. # rnd_0: 5 - 5
  13878. andl %eax, %ebx
  13879. rorl $9, %ecx
  13880. xorl %r14d, %ecx
  13881. xorl %r15d, %ebx
  13882. vpshufb %ymm11, %ymm8, %ymm8
  13883. # rnd_0: 6 - 6
  13884. rorl $11, %ecx
  13885. addl %r13d, %r9d
  13886. xorl %r14d, %ecx
  13887. addl %ebx, %r13d
  13888. vpaddd %ymm8, %ymm4, %ymm4
  13889. # rnd_0: 7 - 7
  13890. rorl $2, %ecx
  13891. movl %r9d, %edx
  13892. addl %ecx, %r13d
  13893. # rnd_1: 0 - 0
  13894. rorl $14, %edx
  13895. vpshufd $0x50, %ymm4, %ymm6
  13896. # rnd_1: 1 - 1
  13897. movl %r14d, %ebx
  13898. movl %r10d, %ecx
  13899. addl 332(%rsp), %r12d
  13900. xorl %r11d, %ecx
  13901. vpsrlq $0x11, %ymm6, %ymm8
  13902. vpsrlq $19, %ymm6, %ymm7
  13903. # rnd_1: 2 - 3
  13904. xorl %r9d, %edx
  13905. andl %r9d, %ecx
  13906. rorl $5, %edx
  13907. xorl %r11d, %ecx
  13908. xorl %r9d, %edx
  13909. addl %ecx, %r12d
  13910. vpsrld $10, %ymm6, %ymm9
  13911. vpxor %ymm8, %ymm7, %ymm8
  13912. # rnd_1: 4 - 5
  13913. rorl $6, %edx
  13914. xorl %r13d, %ebx
  13915. addl %edx, %r12d
  13916. movl %r13d, %ecx
  13917. andl %ebx, %eax
  13918. rorl $9, %ecx
  13919. xorl %r13d, %ecx
  13920. xorl %r14d, %eax
  13921. vpxor %ymm9, %ymm8, %ymm9
  13922. # rnd_1: 6 - 6
  13923. rorl $11, %ecx
  13924. addl %r12d, %r8d
  13925. xorl %r13d, %ecx
  13926. addl %eax, %r12d
  13927. vpshufb %ymm12, %ymm9, %ymm9
  13928. # rnd_1: 7 - 7
  13929. rorl $2, %ecx
  13930. movl %r8d, %edx
  13931. addl %ecx, %r12d
  13932. vpaddd %ymm4, %ymm9, %ymm2
  13933. # msg_sched done: 80-83
  13934. # msg_sched: 88-91
  13935. # rnd_0: 0 - 0
  13936. rorl $14, %edx
  13937. vpalignr $4, %ymm3, %ymm0, %ymm5
  13938. vpalignr $4, %ymm1, %ymm2, %ymm4
  13939. # rnd_0: 1 - 2
  13940. movl %r13d, %eax
  13941. movl %r9d, %ecx
  13942. addl 352(%rsp), %r11d
  13943. xorl %r10d, %ecx
  13944. xorl %r8d, %edx
  13945. andl %r8d, %ecx
  13946. vpsrld $7, %ymm5, %ymm6
  13947. vpslld $25, %ymm5, %ymm7
  13948. # rnd_0: 3 - 4
  13949. rorl $5, %edx
  13950. xorl %r10d, %ecx
  13951. xorl %r8d, %edx
  13952. addl %ecx, %r11d
  13953. rorl $6, %edx
  13954. xorl %r12d, %eax
  13955. addl %edx, %r11d
  13956. movl %r12d, %ecx
  13957. vpsrld $18, %ymm5, %ymm8
  13958. vpslld $14, %ymm5, %ymm9
  13959. # rnd_0: 5 - 6
  13960. andl %eax, %ebx
  13961. rorl $9, %ecx
  13962. xorl %r12d, %ecx
  13963. xorl %r13d, %ebx
  13964. rorl $11, %ecx
  13965. addl %r11d, %r15d
  13966. xorl %r12d, %ecx
  13967. addl %ebx, %r11d
  13968. vpor %ymm6, %ymm7, %ymm6
  13969. vpor %ymm8, %ymm9, %ymm8
  13970. # rnd_0: 7 - 7
  13971. rorl $2, %ecx
  13972. movl %r15d, %edx
  13973. addl %ecx, %r11d
  13974. # rnd_1: 0 - 1
  13975. rorl $14, %edx
  13976. movl %r12d, %ebx
  13977. movl %r8d, %ecx
  13978. addl 356(%rsp), %r10d
  13979. xorl %r9d, %ecx
  13980. vpsrld $3, %ymm5, %ymm9
  13981. vpxor %ymm6, %ymm8, %ymm6
  13982. # rnd_1: 2 - 3
  13983. xorl %r15d, %edx
  13984. andl %r15d, %ecx
  13985. rorl $5, %edx
  13986. xorl %r9d, %ecx
  13987. xorl %r15d, %edx
  13988. addl %ecx, %r10d
  13989. vpxor %ymm6, %ymm9, %ymm5
  13990. vpshufd $0xfa, %ymm2, %ymm6
  13991. # rnd_1: 4 - 5
  13992. rorl $6, %edx
  13993. xorl %r11d, %ebx
  13994. addl %edx, %r10d
  13995. movl %r11d, %ecx
  13996. andl %ebx, %eax
  13997. rorl $9, %ecx
  13998. xorl %r11d, %ecx
  13999. xorl %r12d, %eax
  14000. vpsrld $10, %ymm6, %ymm8
  14001. vpsrlq $19, %ymm6, %ymm7
  14002. # rnd_1: 6 - 7
  14003. rorl $11, %ecx
  14004. addl %r10d, %r14d
  14005. xorl %r11d, %ecx
  14006. addl %eax, %r10d
  14007. rorl $2, %ecx
  14008. movl %r14d, %edx
  14009. addl %ecx, %r10d
  14010. # rnd_0: 0 - 0
  14011. rorl $14, %edx
  14012. vpsrlq $0x11, %ymm6, %ymm6
  14013. vpaddd %ymm3, %ymm4, %ymm4
  14014. # rnd_0: 1 - 3
  14015. movl %r11d, %eax
  14016. movl %r15d, %ecx
  14017. addl 360(%rsp), %r9d
  14018. xorl %r8d, %ecx
  14019. xorl %r14d, %edx
  14020. andl %r14d, %ecx
  14021. rorl $5, %edx
  14022. xorl %r8d, %ecx
  14023. xorl %r14d, %edx
  14024. addl %ecx, %r9d
  14025. vpxor %ymm6, %ymm7, %ymm6
  14026. vpaddd %ymm5, %ymm4, %ymm4
  14027. # rnd_0: 4 - 4
  14028. rorl $6, %edx
  14029. xorl %r10d, %eax
  14030. addl %edx, %r9d
  14031. movl %r10d, %ecx
  14032. vpxor %ymm6, %ymm8, %ymm8
  14033. # rnd_0: 5 - 5
  14034. andl %eax, %ebx
  14035. rorl $9, %ecx
  14036. xorl %r10d, %ecx
  14037. xorl %r11d, %ebx
  14038. vpshufb %ymm11, %ymm8, %ymm8
  14039. # rnd_0: 6 - 6
  14040. rorl $11, %ecx
  14041. addl %r9d, %r13d
  14042. xorl %r10d, %ecx
  14043. addl %ebx, %r9d
  14044. vpaddd %ymm8, %ymm4, %ymm4
  14045. # rnd_0: 7 - 7
  14046. rorl $2, %ecx
  14047. movl %r13d, %edx
  14048. addl %ecx, %r9d
  14049. # rnd_1: 0 - 0
  14050. rorl $14, %edx
  14051. vpshufd $0x50, %ymm4, %ymm6
  14052. # rnd_1: 1 - 1
  14053. movl %r10d, %ebx
  14054. movl %r14d, %ecx
  14055. addl 364(%rsp), %r8d
  14056. xorl %r15d, %ecx
  14057. vpsrlq $0x11, %ymm6, %ymm8
  14058. vpsrlq $19, %ymm6, %ymm7
  14059. # rnd_1: 2 - 3
  14060. xorl %r13d, %edx
  14061. andl %r13d, %ecx
  14062. rorl $5, %edx
  14063. xorl %r15d, %ecx
  14064. xorl %r13d, %edx
  14065. addl %ecx, %r8d
  14066. vpsrld $10, %ymm6, %ymm9
  14067. vpxor %ymm8, %ymm7, %ymm8
  14068. # rnd_1: 4 - 5
  14069. rorl $6, %edx
  14070. xorl %r9d, %ebx
  14071. addl %edx, %r8d
  14072. movl %r9d, %ecx
  14073. andl %ebx, %eax
  14074. rorl $9, %ecx
  14075. xorl %r9d, %ecx
  14076. xorl %r10d, %eax
  14077. vpxor %ymm9, %ymm8, %ymm9
  14078. # rnd_1: 6 - 6
  14079. rorl $11, %ecx
  14080. addl %r8d, %r12d
  14081. xorl %r9d, %ecx
  14082. addl %eax, %r8d
  14083. vpshufb %ymm12, %ymm9, %ymm9
  14084. # rnd_1: 7 - 7
  14085. rorl $2, %ecx
  14086. movl %r12d, %edx
  14087. addl %ecx, %r8d
  14088. vpaddd %ymm4, %ymm9, %ymm3
  14089. # msg_sched done: 88-91
  14090. # set_w_k_xfer_4: 12
  14091. vpaddd 384+L_avx2_sha256_k(%rip), %ymm0, %ymm4
  14092. vpaddd 416+L_avx2_sha256_k(%rip), %ymm1, %ymm5
  14093. vmovdqu %ymm4, 384(%rsp)
  14094. vmovdqu %ymm5, 416(%rsp)
  14095. vpaddd 448+L_avx2_sha256_k(%rip), %ymm2, %ymm4
  14096. vpaddd 480+L_avx2_sha256_k(%rip), %ymm3, %ymm5
  14097. vmovdqu %ymm4, 448(%rsp)
  14098. vmovdqu %ymm5, 480(%rsp)
  14099. # rnd_all_4: 24-27
  14100. addl 384(%rsp), %r15d
  14101. movl %r13d, %ecx
  14102. movl %r9d, %eax
  14103. xorl %r14d, %ecx
  14104. rorl $14, %edx
  14105. andl %r12d, %ecx
  14106. xorl %r12d, %edx
  14107. xorl %r14d, %ecx
  14108. rorl $5, %edx
  14109. addl %ecx, %r15d
  14110. xorl %r12d, %edx
  14111. xorl %r8d, %eax
  14112. rorl $6, %edx
  14113. movl %r8d, %ecx
  14114. addl %edx, %r15d
  14115. rorl $9, %ecx
  14116. andl %eax, %ebx
  14117. xorl %r8d, %ecx
  14118. xorl %r9d, %ebx
  14119. rorl $11, %ecx
  14120. addl %r15d, %r11d
  14121. xorl %r8d, %ecx
  14122. addl %ebx, %r15d
  14123. rorl $2, %ecx
  14124. movl %r11d, %edx
  14125. addl %ecx, %r15d
  14126. addl 388(%rsp), %r14d
  14127. movl %r12d, %ecx
  14128. movl %r8d, %ebx
  14129. xorl %r13d, %ecx
  14130. rorl $14, %edx
  14131. andl %r11d, %ecx
  14132. xorl %r11d, %edx
  14133. xorl %r13d, %ecx
  14134. rorl $5, %edx
  14135. addl %ecx, %r14d
  14136. xorl %r11d, %edx
  14137. xorl %r15d, %ebx
  14138. rorl $6, %edx
  14139. movl %r15d, %ecx
  14140. addl %edx, %r14d
  14141. rorl $9, %ecx
  14142. andl %ebx, %eax
  14143. xorl %r15d, %ecx
  14144. xorl %r8d, %eax
  14145. rorl $11, %ecx
  14146. addl %r14d, %r10d
  14147. xorl %r15d, %ecx
  14148. addl %eax, %r14d
  14149. rorl $2, %ecx
  14150. movl %r10d, %edx
  14151. addl %ecx, %r14d
  14152. addl 392(%rsp), %r13d
  14153. movl %r11d, %ecx
  14154. movl %r15d, %eax
  14155. xorl %r12d, %ecx
  14156. rorl $14, %edx
  14157. andl %r10d, %ecx
  14158. xorl %r10d, %edx
  14159. xorl %r12d, %ecx
  14160. rorl $5, %edx
  14161. addl %ecx, %r13d
  14162. xorl %r10d, %edx
  14163. xorl %r14d, %eax
  14164. rorl $6, %edx
  14165. movl %r14d, %ecx
  14166. addl %edx, %r13d
  14167. rorl $9, %ecx
  14168. andl %eax, %ebx
  14169. xorl %r14d, %ecx
  14170. xorl %r15d, %ebx
  14171. rorl $11, %ecx
  14172. addl %r13d, %r9d
  14173. xorl %r14d, %ecx
  14174. addl %ebx, %r13d
  14175. rorl $2, %ecx
  14176. movl %r9d, %edx
  14177. addl %ecx, %r13d
  14178. addl 396(%rsp), %r12d
  14179. movl %r10d, %ecx
  14180. movl %r14d, %ebx
  14181. xorl %r11d, %ecx
  14182. rorl $14, %edx
  14183. andl %r9d, %ecx
  14184. xorl %r9d, %edx
  14185. xorl %r11d, %ecx
  14186. rorl $5, %edx
  14187. addl %ecx, %r12d
  14188. xorl %r9d, %edx
  14189. xorl %r13d, %ebx
  14190. rorl $6, %edx
  14191. movl %r13d, %ecx
  14192. addl %edx, %r12d
  14193. rorl $9, %ecx
  14194. andl %ebx, %eax
  14195. xorl %r13d, %ecx
  14196. xorl %r14d, %eax
  14197. rorl $11, %ecx
  14198. addl %r12d, %r8d
  14199. xorl %r13d, %ecx
  14200. addl %eax, %r12d
  14201. rorl $2, %ecx
  14202. movl %r8d, %edx
  14203. addl %ecx, %r12d
  14204. # rnd_all_4: 26-29
  14205. addl 416(%rsp), %r11d
  14206. movl %r9d, %ecx
  14207. movl %r13d, %eax
  14208. xorl %r10d, %ecx
  14209. rorl $14, %edx
  14210. andl %r8d, %ecx
  14211. xorl %r8d, %edx
  14212. xorl %r10d, %ecx
  14213. rorl $5, %edx
  14214. addl %ecx, %r11d
  14215. xorl %r8d, %edx
  14216. xorl %r12d, %eax
  14217. rorl $6, %edx
  14218. movl %r12d, %ecx
  14219. addl %edx, %r11d
  14220. rorl $9, %ecx
  14221. andl %eax, %ebx
  14222. xorl %r12d, %ecx
  14223. xorl %r13d, %ebx
  14224. rorl $11, %ecx
  14225. addl %r11d, %r15d
  14226. xorl %r12d, %ecx
  14227. addl %ebx, %r11d
  14228. rorl $2, %ecx
  14229. movl %r15d, %edx
  14230. addl %ecx, %r11d
  14231. addl 420(%rsp), %r10d
  14232. movl %r8d, %ecx
  14233. movl %r12d, %ebx
  14234. xorl %r9d, %ecx
  14235. rorl $14, %edx
  14236. andl %r15d, %ecx
  14237. xorl %r15d, %edx
  14238. xorl %r9d, %ecx
  14239. rorl $5, %edx
  14240. addl %ecx, %r10d
  14241. xorl %r15d, %edx
  14242. xorl %r11d, %ebx
  14243. rorl $6, %edx
  14244. movl %r11d, %ecx
  14245. addl %edx, %r10d
  14246. rorl $9, %ecx
  14247. andl %ebx, %eax
  14248. xorl %r11d, %ecx
  14249. xorl %r12d, %eax
  14250. rorl $11, %ecx
  14251. addl %r10d, %r14d
  14252. xorl %r11d, %ecx
  14253. addl %eax, %r10d
  14254. rorl $2, %ecx
  14255. movl %r14d, %edx
  14256. addl %ecx, %r10d
  14257. addl 424(%rsp), %r9d
  14258. movl %r15d, %ecx
  14259. movl %r11d, %eax
  14260. xorl %r8d, %ecx
  14261. rorl $14, %edx
  14262. andl %r14d, %ecx
  14263. xorl %r14d, %edx
  14264. xorl %r8d, %ecx
  14265. rorl $5, %edx
  14266. addl %ecx, %r9d
  14267. xorl %r14d, %edx
  14268. xorl %r10d, %eax
  14269. rorl $6, %edx
  14270. movl %r10d, %ecx
  14271. addl %edx, %r9d
  14272. rorl $9, %ecx
  14273. andl %eax, %ebx
  14274. xorl %r10d, %ecx
  14275. xorl %r11d, %ebx
  14276. rorl $11, %ecx
  14277. addl %r9d, %r13d
  14278. xorl %r10d, %ecx
  14279. addl %ebx, %r9d
  14280. rorl $2, %ecx
  14281. movl %r13d, %edx
  14282. addl %ecx, %r9d
  14283. addl 428(%rsp), %r8d
  14284. movl %r14d, %ecx
  14285. movl %r10d, %ebx
  14286. xorl %r15d, %ecx
  14287. rorl $14, %edx
  14288. andl %r13d, %ecx
  14289. xorl %r13d, %edx
  14290. xorl %r15d, %ecx
  14291. rorl $5, %edx
  14292. addl %ecx, %r8d
  14293. xorl %r13d, %edx
  14294. xorl %r9d, %ebx
  14295. rorl $6, %edx
  14296. movl %r9d, %ecx
  14297. addl %edx, %r8d
  14298. rorl $9, %ecx
  14299. andl %ebx, %eax
  14300. xorl %r9d, %ecx
  14301. xorl %r10d, %eax
  14302. rorl $11, %ecx
  14303. addl %r8d, %r12d
  14304. xorl %r9d, %ecx
  14305. addl %eax, %r8d
  14306. rorl $2, %ecx
  14307. movl %r12d, %edx
  14308. addl %ecx, %r8d
  14309. # rnd_all_4: 28-31
  14310. addl 448(%rsp), %r15d
  14311. movl %r13d, %ecx
  14312. movl %r9d, %eax
  14313. xorl %r14d, %ecx
  14314. rorl $14, %edx
  14315. andl %r12d, %ecx
  14316. xorl %r12d, %edx
  14317. xorl %r14d, %ecx
  14318. rorl $5, %edx
  14319. addl %ecx, %r15d
  14320. xorl %r12d, %edx
  14321. xorl %r8d, %eax
  14322. rorl $6, %edx
  14323. movl %r8d, %ecx
  14324. addl %edx, %r15d
  14325. rorl $9, %ecx
  14326. andl %eax, %ebx
  14327. xorl %r8d, %ecx
  14328. xorl %r9d, %ebx
  14329. rorl $11, %ecx
  14330. addl %r15d, %r11d
  14331. xorl %r8d, %ecx
  14332. addl %ebx, %r15d
  14333. rorl $2, %ecx
  14334. movl %r11d, %edx
  14335. addl %ecx, %r15d
  14336. addl 452(%rsp), %r14d
  14337. movl %r12d, %ecx
  14338. movl %r8d, %ebx
  14339. xorl %r13d, %ecx
  14340. rorl $14, %edx
  14341. andl %r11d, %ecx
  14342. xorl %r11d, %edx
  14343. xorl %r13d, %ecx
  14344. rorl $5, %edx
  14345. addl %ecx, %r14d
  14346. xorl %r11d, %edx
  14347. xorl %r15d, %ebx
  14348. rorl $6, %edx
  14349. movl %r15d, %ecx
  14350. addl %edx, %r14d
  14351. rorl $9, %ecx
  14352. andl %ebx, %eax
  14353. xorl %r15d, %ecx
  14354. xorl %r8d, %eax
  14355. rorl $11, %ecx
  14356. addl %r14d, %r10d
  14357. xorl %r15d, %ecx
  14358. addl %eax, %r14d
  14359. rorl $2, %ecx
  14360. movl %r10d, %edx
  14361. addl %ecx, %r14d
  14362. addl 456(%rsp), %r13d
  14363. movl %r11d, %ecx
  14364. movl %r15d, %eax
  14365. xorl %r12d, %ecx
  14366. rorl $14, %edx
  14367. andl %r10d, %ecx
  14368. xorl %r10d, %edx
  14369. xorl %r12d, %ecx
  14370. rorl $5, %edx
  14371. addl %ecx, %r13d
  14372. xorl %r10d, %edx
  14373. xorl %r14d, %eax
  14374. rorl $6, %edx
  14375. movl %r14d, %ecx
  14376. addl %edx, %r13d
  14377. rorl $9, %ecx
  14378. andl %eax, %ebx
  14379. xorl %r14d, %ecx
  14380. xorl %r15d, %ebx
  14381. rorl $11, %ecx
  14382. addl %r13d, %r9d
  14383. xorl %r14d, %ecx
  14384. addl %ebx, %r13d
  14385. rorl $2, %ecx
  14386. movl %r9d, %edx
  14387. addl %ecx, %r13d
  14388. addl 460(%rsp), %r12d
  14389. movl %r10d, %ecx
  14390. movl %r14d, %ebx
  14391. xorl %r11d, %ecx
  14392. rorl $14, %edx
  14393. andl %r9d, %ecx
  14394. xorl %r9d, %edx
  14395. xorl %r11d, %ecx
  14396. rorl $5, %edx
  14397. addl %ecx, %r12d
  14398. xorl %r9d, %edx
  14399. xorl %r13d, %ebx
  14400. rorl $6, %edx
  14401. movl %r13d, %ecx
  14402. addl %edx, %r12d
  14403. rorl $9, %ecx
  14404. andl %ebx, %eax
  14405. xorl %r13d, %ecx
  14406. xorl %r14d, %eax
  14407. rorl $11, %ecx
  14408. addl %r12d, %r8d
  14409. xorl %r13d, %ecx
  14410. addl %eax, %r12d
  14411. rorl $2, %ecx
  14412. movl %r8d, %edx
  14413. addl %ecx, %r12d
  14414. # rnd_all_4: 30-33
  14415. addl 480(%rsp), %r11d
  14416. movl %r9d, %ecx
  14417. movl %r13d, %eax
  14418. xorl %r10d, %ecx
  14419. rorl $14, %edx
  14420. andl %r8d, %ecx
  14421. xorl %r8d, %edx
  14422. xorl %r10d, %ecx
  14423. rorl $5, %edx
  14424. addl %ecx, %r11d
  14425. xorl %r8d, %edx
  14426. xorl %r12d, %eax
  14427. rorl $6, %edx
  14428. movl %r12d, %ecx
  14429. addl %edx, %r11d
  14430. rorl $9, %ecx
  14431. andl %eax, %ebx
  14432. xorl %r12d, %ecx
  14433. xorl %r13d, %ebx
  14434. rorl $11, %ecx
  14435. addl %r11d, %r15d
  14436. xorl %r12d, %ecx
  14437. addl %ebx, %r11d
  14438. rorl $2, %ecx
  14439. movl %r15d, %edx
  14440. addl %ecx, %r11d
  14441. addl 484(%rsp), %r10d
  14442. movl %r8d, %ecx
  14443. movl %r12d, %ebx
  14444. xorl %r9d, %ecx
  14445. rorl $14, %edx
  14446. andl %r15d, %ecx
  14447. xorl %r15d, %edx
  14448. xorl %r9d, %ecx
  14449. rorl $5, %edx
  14450. addl %ecx, %r10d
  14451. xorl %r15d, %edx
  14452. xorl %r11d, %ebx
  14453. rorl $6, %edx
  14454. movl %r11d, %ecx
  14455. addl %edx, %r10d
  14456. rorl $9, %ecx
  14457. andl %ebx, %eax
  14458. xorl %r11d, %ecx
  14459. xorl %r12d, %eax
  14460. rorl $11, %ecx
  14461. addl %r10d, %r14d
  14462. xorl %r11d, %ecx
  14463. addl %eax, %r10d
  14464. rorl $2, %ecx
  14465. movl %r14d, %edx
  14466. addl %ecx, %r10d
  14467. addl 488(%rsp), %r9d
  14468. movl %r15d, %ecx
  14469. movl %r11d, %eax
  14470. xorl %r8d, %ecx
  14471. rorl $14, %edx
  14472. andl %r14d, %ecx
  14473. xorl %r14d, %edx
  14474. xorl %r8d, %ecx
  14475. rorl $5, %edx
  14476. addl %ecx, %r9d
  14477. xorl %r14d, %edx
  14478. xorl %r10d, %eax
  14479. rorl $6, %edx
  14480. movl %r10d, %ecx
  14481. addl %edx, %r9d
  14482. rorl $9, %ecx
  14483. andl %eax, %ebx
  14484. xorl %r10d, %ecx
  14485. xorl %r11d, %ebx
  14486. rorl $11, %ecx
  14487. addl %r9d, %r13d
  14488. xorl %r10d, %ecx
  14489. addl %ebx, %r9d
  14490. rorl $2, %ecx
  14491. movl %r13d, %edx
  14492. addl %ecx, %r9d
  14493. addl 492(%rsp), %r8d
  14494. movl %r14d, %ecx
  14495. movl %r10d, %ebx
  14496. xorl %r15d, %ecx
  14497. rorl $14, %edx
  14498. andl %r13d, %ecx
  14499. xorl %r13d, %edx
  14500. xorl %r15d, %ecx
  14501. rorl $5, %edx
  14502. addl %ecx, %r8d
  14503. xorl %r13d, %edx
  14504. xorl %r9d, %ebx
  14505. rorl $6, %edx
  14506. movl %r9d, %ecx
  14507. addl %edx, %r8d
  14508. rorl $9, %ecx
  14509. andl %ebx, %eax
  14510. xorl %r9d, %ecx
  14511. xorl %r10d, %eax
  14512. rorl $11, %ecx
  14513. addl %r8d, %r12d
  14514. xorl %r9d, %ecx
  14515. addl %eax, %r8d
  14516. rorl $2, %ecx
  14517. movl %r12d, %edx
  14518. addl %ecx, %r8d
  14519. addl (%rdi), %r8d
  14520. addl 4(%rdi), %r9d
  14521. addl 8(%rdi), %r10d
  14522. addl 12(%rdi), %r11d
  14523. addl 16(%rdi), %r12d
  14524. addl 20(%rdi), %r13d
  14525. addl 24(%rdi), %r14d
  14526. addl 28(%rdi), %r15d
  14527. movl %r8d, (%rdi)
  14528. movl %r9d, 4(%rdi)
  14529. movl %r10d, 8(%rdi)
  14530. movl %r11d, 12(%rdi)
  14531. movl %r12d, 16(%rdi)
  14532. movl %r13d, 20(%rdi)
  14533. movl %r14d, 24(%rdi)
  14534. movl %r15d, 28(%rdi)
  14535. movl %r9d, %ebx
  14536. movl %r12d, %edx
  14537. xorl %r10d, %ebx
  14538. # rnd_all_4: 1-4
  14539. addl 16(%rsp), %r15d
  14540. movl %r13d, %ecx
  14541. movl %r9d, %eax
  14542. xorl %r14d, %ecx
  14543. rorl $14, %edx
  14544. andl %r12d, %ecx
  14545. xorl %r12d, %edx
  14546. xorl %r14d, %ecx
  14547. rorl $5, %edx
  14548. addl %ecx, %r15d
  14549. xorl %r12d, %edx
  14550. xorl %r8d, %eax
  14551. rorl $6, %edx
  14552. movl %r8d, %ecx
  14553. addl %edx, %r15d
  14554. rorl $9, %ecx
  14555. andl %eax, %ebx
  14556. xorl %r8d, %ecx
  14557. xorl %r9d, %ebx
  14558. rorl $11, %ecx
  14559. addl %r15d, %r11d
  14560. xorl %r8d, %ecx
  14561. addl %ebx, %r15d
  14562. rorl $2, %ecx
  14563. movl %r11d, %edx
  14564. addl %ecx, %r15d
  14565. addl 20(%rsp), %r14d
  14566. movl %r12d, %ecx
  14567. movl %r8d, %ebx
  14568. xorl %r13d, %ecx
  14569. rorl $14, %edx
  14570. andl %r11d, %ecx
  14571. xorl %r11d, %edx
  14572. xorl %r13d, %ecx
  14573. rorl $5, %edx
  14574. addl %ecx, %r14d
  14575. xorl %r11d, %edx
  14576. xorl %r15d, %ebx
  14577. rorl $6, %edx
  14578. movl %r15d, %ecx
  14579. addl %edx, %r14d
  14580. rorl $9, %ecx
  14581. andl %ebx, %eax
  14582. xorl %r15d, %ecx
  14583. xorl %r8d, %eax
  14584. rorl $11, %ecx
  14585. addl %r14d, %r10d
  14586. xorl %r15d, %ecx
  14587. addl %eax, %r14d
  14588. rorl $2, %ecx
  14589. movl %r10d, %edx
  14590. addl %ecx, %r14d
  14591. addl 24(%rsp), %r13d
  14592. movl %r11d, %ecx
  14593. movl %r15d, %eax
  14594. xorl %r12d, %ecx
  14595. rorl $14, %edx
  14596. andl %r10d, %ecx
  14597. xorl %r10d, %edx
  14598. xorl %r12d, %ecx
  14599. rorl $5, %edx
  14600. addl %ecx, %r13d
  14601. xorl %r10d, %edx
  14602. xorl %r14d, %eax
  14603. rorl $6, %edx
  14604. movl %r14d, %ecx
  14605. addl %edx, %r13d
  14606. rorl $9, %ecx
  14607. andl %eax, %ebx
  14608. xorl %r14d, %ecx
  14609. xorl %r15d, %ebx
  14610. rorl $11, %ecx
  14611. addl %r13d, %r9d
  14612. xorl %r14d, %ecx
  14613. addl %ebx, %r13d
  14614. rorl $2, %ecx
  14615. movl %r9d, %edx
  14616. addl %ecx, %r13d
  14617. addl 28(%rsp), %r12d
  14618. movl %r10d, %ecx
  14619. movl %r14d, %ebx
  14620. xorl %r11d, %ecx
  14621. rorl $14, %edx
  14622. andl %r9d, %ecx
  14623. xorl %r9d, %edx
  14624. xorl %r11d, %ecx
  14625. rorl $5, %edx
  14626. addl %ecx, %r12d
  14627. xorl %r9d, %edx
  14628. xorl %r13d, %ebx
  14629. rorl $6, %edx
  14630. movl %r13d, %ecx
  14631. addl %edx, %r12d
  14632. rorl $9, %ecx
  14633. andl %ebx, %eax
  14634. xorl %r13d, %ecx
  14635. xorl %r14d, %eax
  14636. rorl $11, %ecx
  14637. addl %r12d, %r8d
  14638. xorl %r13d, %ecx
  14639. addl %eax, %r12d
  14640. rorl $2, %ecx
  14641. movl %r8d, %edx
  14642. addl %ecx, %r12d
  14643. # rnd_all_4: 3-6
  14644. addl 48(%rsp), %r11d
  14645. movl %r9d, %ecx
  14646. movl %r13d, %eax
  14647. xorl %r10d, %ecx
  14648. rorl $14, %edx
  14649. andl %r8d, %ecx
  14650. xorl %r8d, %edx
  14651. xorl %r10d, %ecx
  14652. rorl $5, %edx
  14653. addl %ecx, %r11d
  14654. xorl %r8d, %edx
  14655. xorl %r12d, %eax
  14656. rorl $6, %edx
  14657. movl %r12d, %ecx
  14658. addl %edx, %r11d
  14659. rorl $9, %ecx
  14660. andl %eax, %ebx
  14661. xorl %r12d, %ecx
  14662. xorl %r13d, %ebx
  14663. rorl $11, %ecx
  14664. addl %r11d, %r15d
  14665. xorl %r12d, %ecx
  14666. addl %ebx, %r11d
  14667. rorl $2, %ecx
  14668. movl %r15d, %edx
  14669. addl %ecx, %r11d
  14670. addl 52(%rsp), %r10d
  14671. movl %r8d, %ecx
  14672. movl %r12d, %ebx
  14673. xorl %r9d, %ecx
  14674. rorl $14, %edx
  14675. andl %r15d, %ecx
  14676. xorl %r15d, %edx
  14677. xorl %r9d, %ecx
  14678. rorl $5, %edx
  14679. addl %ecx, %r10d
  14680. xorl %r15d, %edx
  14681. xorl %r11d, %ebx
  14682. rorl $6, %edx
  14683. movl %r11d, %ecx
  14684. addl %edx, %r10d
  14685. rorl $9, %ecx
  14686. andl %ebx, %eax
  14687. xorl %r11d, %ecx
  14688. xorl %r12d, %eax
  14689. rorl $11, %ecx
  14690. addl %r10d, %r14d
  14691. xorl %r11d, %ecx
  14692. addl %eax, %r10d
  14693. rorl $2, %ecx
  14694. movl %r14d, %edx
  14695. addl %ecx, %r10d
  14696. addl 56(%rsp), %r9d
  14697. movl %r15d, %ecx
  14698. movl %r11d, %eax
  14699. xorl %r8d, %ecx
  14700. rorl $14, %edx
  14701. andl %r14d, %ecx
  14702. xorl %r14d, %edx
  14703. xorl %r8d, %ecx
  14704. rorl $5, %edx
  14705. addl %ecx, %r9d
  14706. xorl %r14d, %edx
  14707. xorl %r10d, %eax
  14708. rorl $6, %edx
  14709. movl %r10d, %ecx
  14710. addl %edx, %r9d
  14711. rorl $9, %ecx
  14712. andl %eax, %ebx
  14713. xorl %r10d, %ecx
  14714. xorl %r11d, %ebx
  14715. rorl $11, %ecx
  14716. addl %r9d, %r13d
  14717. xorl %r10d, %ecx
  14718. addl %ebx, %r9d
  14719. rorl $2, %ecx
  14720. movl %r13d, %edx
  14721. addl %ecx, %r9d
  14722. addl 60(%rsp), %r8d
  14723. movl %r14d, %ecx
  14724. movl %r10d, %ebx
  14725. xorl %r15d, %ecx
  14726. rorl $14, %edx
  14727. andl %r13d, %ecx
  14728. xorl %r13d, %edx
  14729. xorl %r15d, %ecx
  14730. rorl $5, %edx
  14731. addl %ecx, %r8d
  14732. xorl %r13d, %edx
  14733. xorl %r9d, %ebx
  14734. rorl $6, %edx
  14735. movl %r9d, %ecx
  14736. addl %edx, %r8d
  14737. rorl $9, %ecx
  14738. andl %ebx, %eax
  14739. xorl %r9d, %ecx
  14740. xorl %r10d, %eax
  14741. rorl $11, %ecx
  14742. addl %r8d, %r12d
  14743. xorl %r9d, %ecx
  14744. addl %eax, %r8d
  14745. rorl $2, %ecx
  14746. movl %r12d, %edx
  14747. addl %ecx, %r8d
  14748. # rnd_all_4: 5-8
  14749. addl 80(%rsp), %r15d
  14750. movl %r13d, %ecx
  14751. movl %r9d, %eax
  14752. xorl %r14d, %ecx
  14753. rorl $14, %edx
  14754. andl %r12d, %ecx
  14755. xorl %r12d, %edx
  14756. xorl %r14d, %ecx
  14757. rorl $5, %edx
  14758. addl %ecx, %r15d
  14759. xorl %r12d, %edx
  14760. xorl %r8d, %eax
  14761. rorl $6, %edx
  14762. movl %r8d, %ecx
  14763. addl %edx, %r15d
  14764. rorl $9, %ecx
  14765. andl %eax, %ebx
  14766. xorl %r8d, %ecx
  14767. xorl %r9d, %ebx
  14768. rorl $11, %ecx
  14769. addl %r15d, %r11d
  14770. xorl %r8d, %ecx
  14771. addl %ebx, %r15d
  14772. rorl $2, %ecx
  14773. movl %r11d, %edx
  14774. addl %ecx, %r15d
  14775. addl 84(%rsp), %r14d
  14776. movl %r12d, %ecx
  14777. movl %r8d, %ebx
  14778. xorl %r13d, %ecx
  14779. rorl $14, %edx
  14780. andl %r11d, %ecx
  14781. xorl %r11d, %edx
  14782. xorl %r13d, %ecx
  14783. rorl $5, %edx
  14784. addl %ecx, %r14d
  14785. xorl %r11d, %edx
  14786. xorl %r15d, %ebx
  14787. rorl $6, %edx
  14788. movl %r15d, %ecx
  14789. addl %edx, %r14d
  14790. rorl $9, %ecx
  14791. andl %ebx, %eax
  14792. xorl %r15d, %ecx
  14793. xorl %r8d, %eax
  14794. rorl $11, %ecx
  14795. addl %r14d, %r10d
  14796. xorl %r15d, %ecx
  14797. addl %eax, %r14d
  14798. rorl $2, %ecx
  14799. movl %r10d, %edx
  14800. addl %ecx, %r14d
  14801. addl 88(%rsp), %r13d
  14802. movl %r11d, %ecx
  14803. movl %r15d, %eax
  14804. xorl %r12d, %ecx
  14805. rorl $14, %edx
  14806. andl %r10d, %ecx
  14807. xorl %r10d, %edx
  14808. xorl %r12d, %ecx
  14809. rorl $5, %edx
  14810. addl %ecx, %r13d
  14811. xorl %r10d, %edx
  14812. xorl %r14d, %eax
  14813. rorl $6, %edx
  14814. movl %r14d, %ecx
  14815. addl %edx, %r13d
  14816. rorl $9, %ecx
  14817. andl %eax, %ebx
  14818. xorl %r14d, %ecx
  14819. xorl %r15d, %ebx
  14820. rorl $11, %ecx
  14821. addl %r13d, %r9d
  14822. xorl %r14d, %ecx
  14823. addl %ebx, %r13d
  14824. rorl $2, %ecx
  14825. movl %r9d, %edx
  14826. addl %ecx, %r13d
  14827. addl 92(%rsp), %r12d
  14828. movl %r10d, %ecx
  14829. movl %r14d, %ebx
  14830. xorl %r11d, %ecx
  14831. rorl $14, %edx
  14832. andl %r9d, %ecx
  14833. xorl %r9d, %edx
  14834. xorl %r11d, %ecx
  14835. rorl $5, %edx
  14836. addl %ecx, %r12d
  14837. xorl %r9d, %edx
  14838. xorl %r13d, %ebx
  14839. rorl $6, %edx
  14840. movl %r13d, %ecx
  14841. addl %edx, %r12d
  14842. rorl $9, %ecx
  14843. andl %ebx, %eax
  14844. xorl %r13d, %ecx
  14845. xorl %r14d, %eax
  14846. rorl $11, %ecx
  14847. addl %r12d, %r8d
  14848. xorl %r13d, %ecx
  14849. addl %eax, %r12d
  14850. rorl $2, %ecx
  14851. movl %r8d, %edx
  14852. addl %ecx, %r12d
  14853. # rnd_all_4: 7-10
  14854. addl 112(%rsp), %r11d
  14855. movl %r9d, %ecx
  14856. movl %r13d, %eax
  14857. xorl %r10d, %ecx
  14858. rorl $14, %edx
  14859. andl %r8d, %ecx
  14860. xorl %r8d, %edx
  14861. xorl %r10d, %ecx
  14862. rorl $5, %edx
  14863. addl %ecx, %r11d
  14864. xorl %r8d, %edx
  14865. xorl %r12d, %eax
  14866. rorl $6, %edx
  14867. movl %r12d, %ecx
  14868. addl %edx, %r11d
  14869. rorl $9, %ecx
  14870. andl %eax, %ebx
  14871. xorl %r12d, %ecx
  14872. xorl %r13d, %ebx
  14873. rorl $11, %ecx
  14874. addl %r11d, %r15d
  14875. xorl %r12d, %ecx
  14876. addl %ebx, %r11d
  14877. rorl $2, %ecx
  14878. movl %r15d, %edx
  14879. addl %ecx, %r11d
  14880. addl 116(%rsp), %r10d
  14881. movl %r8d, %ecx
  14882. movl %r12d, %ebx
  14883. xorl %r9d, %ecx
  14884. rorl $14, %edx
  14885. andl %r15d, %ecx
  14886. xorl %r15d, %edx
  14887. xorl %r9d, %ecx
  14888. rorl $5, %edx
  14889. addl %ecx, %r10d
  14890. xorl %r15d, %edx
  14891. xorl %r11d, %ebx
  14892. rorl $6, %edx
  14893. movl %r11d, %ecx
  14894. addl %edx, %r10d
  14895. rorl $9, %ecx
  14896. andl %ebx, %eax
  14897. xorl %r11d, %ecx
  14898. xorl %r12d, %eax
  14899. rorl $11, %ecx
  14900. addl %r10d, %r14d
  14901. xorl %r11d, %ecx
  14902. addl %eax, %r10d
  14903. rorl $2, %ecx
  14904. movl %r14d, %edx
  14905. addl %ecx, %r10d
  14906. addl 120(%rsp), %r9d
  14907. movl %r15d, %ecx
  14908. movl %r11d, %eax
  14909. xorl %r8d, %ecx
  14910. rorl $14, %edx
  14911. andl %r14d, %ecx
  14912. xorl %r14d, %edx
  14913. xorl %r8d, %ecx
  14914. rorl $5, %edx
  14915. addl %ecx, %r9d
  14916. xorl %r14d, %edx
  14917. xorl %r10d, %eax
  14918. rorl $6, %edx
  14919. movl %r10d, %ecx
  14920. addl %edx, %r9d
  14921. rorl $9, %ecx
  14922. andl %eax, %ebx
  14923. xorl %r10d, %ecx
  14924. xorl %r11d, %ebx
  14925. rorl $11, %ecx
  14926. addl %r9d, %r13d
  14927. xorl %r10d, %ecx
  14928. addl %ebx, %r9d
  14929. rorl $2, %ecx
  14930. movl %r13d, %edx
  14931. addl %ecx, %r9d
  14932. addl 124(%rsp), %r8d
  14933. movl %r14d, %ecx
  14934. movl %r10d, %ebx
  14935. xorl %r15d, %ecx
  14936. rorl $14, %edx
  14937. andl %r13d, %ecx
  14938. xorl %r13d, %edx
  14939. xorl %r15d, %ecx
  14940. rorl $5, %edx
  14941. addl %ecx, %r8d
  14942. xorl %r13d, %edx
  14943. xorl %r9d, %ebx
  14944. rorl $6, %edx
  14945. movl %r9d, %ecx
  14946. addl %edx, %r8d
  14947. rorl $9, %ecx
  14948. andl %ebx, %eax
  14949. xorl %r9d, %ecx
  14950. xorl %r10d, %eax
  14951. rorl $11, %ecx
  14952. addl %r8d, %r12d
  14953. xorl %r9d, %ecx
  14954. addl %eax, %r8d
  14955. rorl $2, %ecx
  14956. movl %r12d, %edx
  14957. addl %ecx, %r8d
  14958. # rnd_all_4: 9-12
  14959. addl 144(%rsp), %r15d
  14960. movl %r13d, %ecx
  14961. movl %r9d, %eax
  14962. xorl %r14d, %ecx
  14963. rorl $14, %edx
  14964. andl %r12d, %ecx
  14965. xorl %r12d, %edx
  14966. xorl %r14d, %ecx
  14967. rorl $5, %edx
  14968. addl %ecx, %r15d
  14969. xorl %r12d, %edx
  14970. xorl %r8d, %eax
  14971. rorl $6, %edx
  14972. movl %r8d, %ecx
  14973. addl %edx, %r15d
  14974. rorl $9, %ecx
  14975. andl %eax, %ebx
  14976. xorl %r8d, %ecx
  14977. xorl %r9d, %ebx
  14978. rorl $11, %ecx
  14979. addl %r15d, %r11d
  14980. xorl %r8d, %ecx
  14981. addl %ebx, %r15d
  14982. rorl $2, %ecx
  14983. movl %r11d, %edx
  14984. addl %ecx, %r15d
  14985. addl 148(%rsp), %r14d
  14986. movl %r12d, %ecx
  14987. movl %r8d, %ebx
  14988. xorl %r13d, %ecx
  14989. rorl $14, %edx
  14990. andl %r11d, %ecx
  14991. xorl %r11d, %edx
  14992. xorl %r13d, %ecx
  14993. rorl $5, %edx
  14994. addl %ecx, %r14d
  14995. xorl %r11d, %edx
  14996. xorl %r15d, %ebx
  14997. rorl $6, %edx
  14998. movl %r15d, %ecx
  14999. addl %edx, %r14d
  15000. rorl $9, %ecx
  15001. andl %ebx, %eax
  15002. xorl %r15d, %ecx
  15003. xorl %r8d, %eax
  15004. rorl $11, %ecx
  15005. addl %r14d, %r10d
  15006. xorl %r15d, %ecx
  15007. addl %eax, %r14d
  15008. rorl $2, %ecx
  15009. movl %r10d, %edx
  15010. addl %ecx, %r14d
  15011. addl 152(%rsp), %r13d
  15012. movl %r11d, %ecx
  15013. movl %r15d, %eax
  15014. xorl %r12d, %ecx
  15015. rorl $14, %edx
  15016. andl %r10d, %ecx
  15017. xorl %r10d, %edx
  15018. xorl %r12d, %ecx
  15019. rorl $5, %edx
  15020. addl %ecx, %r13d
  15021. xorl %r10d, %edx
  15022. xorl %r14d, %eax
  15023. rorl $6, %edx
  15024. movl %r14d, %ecx
  15025. addl %edx, %r13d
  15026. rorl $9, %ecx
  15027. andl %eax, %ebx
  15028. xorl %r14d, %ecx
  15029. xorl %r15d, %ebx
  15030. rorl $11, %ecx
  15031. addl %r13d, %r9d
  15032. xorl %r14d, %ecx
  15033. addl %ebx, %r13d
  15034. rorl $2, %ecx
  15035. movl %r9d, %edx
  15036. addl %ecx, %r13d
  15037. addl 156(%rsp), %r12d
  15038. movl %r10d, %ecx
  15039. movl %r14d, %ebx
  15040. xorl %r11d, %ecx
  15041. rorl $14, %edx
  15042. andl %r9d, %ecx
  15043. xorl %r9d, %edx
  15044. xorl %r11d, %ecx
  15045. rorl $5, %edx
  15046. addl %ecx, %r12d
  15047. xorl %r9d, %edx
  15048. xorl %r13d, %ebx
  15049. rorl $6, %edx
  15050. movl %r13d, %ecx
  15051. addl %edx, %r12d
  15052. rorl $9, %ecx
  15053. andl %ebx, %eax
  15054. xorl %r13d, %ecx
  15055. xorl %r14d, %eax
  15056. rorl $11, %ecx
  15057. addl %r12d, %r8d
  15058. xorl %r13d, %ecx
  15059. addl %eax, %r12d
  15060. rorl $2, %ecx
  15061. movl %r8d, %edx
  15062. addl %ecx, %r12d
  15063. # rnd_all_4: 11-14
  15064. addl 176(%rsp), %r11d
  15065. movl %r9d, %ecx
  15066. movl %r13d, %eax
  15067. xorl %r10d, %ecx
  15068. rorl $14, %edx
  15069. andl %r8d, %ecx
  15070. xorl %r8d, %edx
  15071. xorl %r10d, %ecx
  15072. rorl $5, %edx
  15073. addl %ecx, %r11d
  15074. xorl %r8d, %edx
  15075. xorl %r12d, %eax
  15076. rorl $6, %edx
  15077. movl %r12d, %ecx
  15078. addl %edx, %r11d
  15079. rorl $9, %ecx
  15080. andl %eax, %ebx
  15081. xorl %r12d, %ecx
  15082. xorl %r13d, %ebx
  15083. rorl $11, %ecx
  15084. addl %r11d, %r15d
  15085. xorl %r12d, %ecx
  15086. addl %ebx, %r11d
  15087. rorl $2, %ecx
  15088. movl %r15d, %edx
  15089. addl %ecx, %r11d
  15090. addl 180(%rsp), %r10d
  15091. movl %r8d, %ecx
  15092. movl %r12d, %ebx
  15093. xorl %r9d, %ecx
  15094. rorl $14, %edx
  15095. andl %r15d, %ecx
  15096. xorl %r15d, %edx
  15097. xorl %r9d, %ecx
  15098. rorl $5, %edx
  15099. addl %ecx, %r10d
  15100. xorl %r15d, %edx
  15101. xorl %r11d, %ebx
  15102. rorl $6, %edx
  15103. movl %r11d, %ecx
  15104. addl %edx, %r10d
  15105. rorl $9, %ecx
  15106. andl %ebx, %eax
  15107. xorl %r11d, %ecx
  15108. xorl %r12d, %eax
  15109. rorl $11, %ecx
  15110. addl %r10d, %r14d
  15111. xorl %r11d, %ecx
  15112. addl %eax, %r10d
  15113. rorl $2, %ecx
  15114. movl %r14d, %edx
  15115. addl %ecx, %r10d
  15116. addl 184(%rsp), %r9d
  15117. movl %r15d, %ecx
  15118. movl %r11d, %eax
  15119. xorl %r8d, %ecx
  15120. rorl $14, %edx
  15121. andl %r14d, %ecx
  15122. xorl %r14d, %edx
  15123. xorl %r8d, %ecx
  15124. rorl $5, %edx
  15125. addl %ecx, %r9d
  15126. xorl %r14d, %edx
  15127. xorl %r10d, %eax
  15128. rorl $6, %edx
  15129. movl %r10d, %ecx
  15130. addl %edx, %r9d
  15131. rorl $9, %ecx
  15132. andl %eax, %ebx
  15133. xorl %r10d, %ecx
  15134. xorl %r11d, %ebx
  15135. rorl $11, %ecx
  15136. addl %r9d, %r13d
  15137. xorl %r10d, %ecx
  15138. addl %ebx, %r9d
  15139. rorl $2, %ecx
  15140. movl %r13d, %edx
  15141. addl %ecx, %r9d
  15142. addl 188(%rsp), %r8d
  15143. movl %r14d, %ecx
  15144. movl %r10d, %ebx
  15145. xorl %r15d, %ecx
  15146. rorl $14, %edx
  15147. andl %r13d, %ecx
  15148. xorl %r13d, %edx
  15149. xorl %r15d, %ecx
  15150. rorl $5, %edx
  15151. addl %ecx, %r8d
  15152. xorl %r13d, %edx
  15153. xorl %r9d, %ebx
  15154. rorl $6, %edx
  15155. movl %r9d, %ecx
  15156. addl %edx, %r8d
  15157. rorl $9, %ecx
  15158. andl %ebx, %eax
  15159. xorl %r9d, %ecx
  15160. xorl %r10d, %eax
  15161. rorl $11, %ecx
  15162. addl %r8d, %r12d
  15163. xorl %r9d, %ecx
  15164. addl %eax, %r8d
  15165. rorl $2, %ecx
  15166. movl %r12d, %edx
  15167. addl %ecx, %r8d
  15168. # rnd_all_4: 13-16
  15169. addl 208(%rsp), %r15d
  15170. movl %r13d, %ecx
  15171. movl %r9d, %eax
  15172. xorl %r14d, %ecx
  15173. rorl $14, %edx
  15174. andl %r12d, %ecx
  15175. xorl %r12d, %edx
  15176. xorl %r14d, %ecx
  15177. rorl $5, %edx
  15178. addl %ecx, %r15d
  15179. xorl %r12d, %edx
  15180. xorl %r8d, %eax
  15181. rorl $6, %edx
  15182. movl %r8d, %ecx
  15183. addl %edx, %r15d
  15184. rorl $9, %ecx
  15185. andl %eax, %ebx
  15186. xorl %r8d, %ecx
  15187. xorl %r9d, %ebx
  15188. rorl $11, %ecx
  15189. addl %r15d, %r11d
  15190. xorl %r8d, %ecx
  15191. addl %ebx, %r15d
  15192. rorl $2, %ecx
  15193. movl %r11d, %edx
  15194. addl %ecx, %r15d
  15195. addl 212(%rsp), %r14d
  15196. movl %r12d, %ecx
  15197. movl %r8d, %ebx
  15198. xorl %r13d, %ecx
  15199. rorl $14, %edx
  15200. andl %r11d, %ecx
  15201. xorl %r11d, %edx
  15202. xorl %r13d, %ecx
  15203. rorl $5, %edx
  15204. addl %ecx, %r14d
  15205. xorl %r11d, %edx
  15206. xorl %r15d, %ebx
  15207. rorl $6, %edx
  15208. movl %r15d, %ecx
  15209. addl %edx, %r14d
  15210. rorl $9, %ecx
  15211. andl %ebx, %eax
  15212. xorl %r15d, %ecx
  15213. xorl %r8d, %eax
  15214. rorl $11, %ecx
  15215. addl %r14d, %r10d
  15216. xorl %r15d, %ecx
  15217. addl %eax, %r14d
  15218. rorl $2, %ecx
  15219. movl %r10d, %edx
  15220. addl %ecx, %r14d
  15221. addl 216(%rsp), %r13d
  15222. movl %r11d, %ecx
  15223. movl %r15d, %eax
  15224. xorl %r12d, %ecx
  15225. rorl $14, %edx
  15226. andl %r10d, %ecx
  15227. xorl %r10d, %edx
  15228. xorl %r12d, %ecx
  15229. rorl $5, %edx
  15230. addl %ecx, %r13d
  15231. xorl %r10d, %edx
  15232. xorl %r14d, %eax
  15233. rorl $6, %edx
  15234. movl %r14d, %ecx
  15235. addl %edx, %r13d
  15236. rorl $9, %ecx
  15237. andl %eax, %ebx
  15238. xorl %r14d, %ecx
  15239. xorl %r15d, %ebx
  15240. rorl $11, %ecx
  15241. addl %r13d, %r9d
  15242. xorl %r14d, %ecx
  15243. addl %ebx, %r13d
  15244. rorl $2, %ecx
  15245. movl %r9d, %edx
  15246. addl %ecx, %r13d
  15247. addl 220(%rsp), %r12d
  15248. movl %r10d, %ecx
  15249. movl %r14d, %ebx
  15250. xorl %r11d, %ecx
  15251. rorl $14, %edx
  15252. andl %r9d, %ecx
  15253. xorl %r9d, %edx
  15254. xorl %r11d, %ecx
  15255. rorl $5, %edx
  15256. addl %ecx, %r12d
  15257. xorl %r9d, %edx
  15258. xorl %r13d, %ebx
  15259. rorl $6, %edx
  15260. movl %r13d, %ecx
  15261. addl %edx, %r12d
  15262. rorl $9, %ecx
  15263. andl %ebx, %eax
  15264. xorl %r13d, %ecx
  15265. xorl %r14d, %eax
  15266. rorl $11, %ecx
  15267. addl %r12d, %r8d
  15268. xorl %r13d, %ecx
  15269. addl %eax, %r12d
  15270. rorl $2, %ecx
  15271. movl %r8d, %edx
  15272. addl %ecx, %r12d
  15273. # rnd_all_4: 15-18
  15274. addl 240(%rsp), %r11d
  15275. movl %r9d, %ecx
  15276. movl %r13d, %eax
  15277. xorl %r10d, %ecx
  15278. rorl $14, %edx
  15279. andl %r8d, %ecx
  15280. xorl %r8d, %edx
  15281. xorl %r10d, %ecx
  15282. rorl $5, %edx
  15283. addl %ecx, %r11d
  15284. xorl %r8d, %edx
  15285. xorl %r12d, %eax
  15286. rorl $6, %edx
  15287. movl %r12d, %ecx
  15288. addl %edx, %r11d
  15289. rorl $9, %ecx
  15290. andl %eax, %ebx
  15291. xorl %r12d, %ecx
  15292. xorl %r13d, %ebx
  15293. rorl $11, %ecx
  15294. addl %r11d, %r15d
  15295. xorl %r12d, %ecx
  15296. addl %ebx, %r11d
  15297. rorl $2, %ecx
  15298. movl %r15d, %edx
  15299. addl %ecx, %r11d
  15300. addl 244(%rsp), %r10d
  15301. movl %r8d, %ecx
  15302. movl %r12d, %ebx
  15303. xorl %r9d, %ecx
  15304. rorl $14, %edx
  15305. andl %r15d, %ecx
  15306. xorl %r15d, %edx
  15307. xorl %r9d, %ecx
  15308. rorl $5, %edx
  15309. addl %ecx, %r10d
  15310. xorl %r15d, %edx
  15311. xorl %r11d, %ebx
  15312. rorl $6, %edx
  15313. movl %r11d, %ecx
  15314. addl %edx, %r10d
  15315. rorl $9, %ecx
  15316. andl %ebx, %eax
  15317. xorl %r11d, %ecx
  15318. xorl %r12d, %eax
  15319. rorl $11, %ecx
  15320. addl %r10d, %r14d
  15321. xorl %r11d, %ecx
  15322. addl %eax, %r10d
  15323. rorl $2, %ecx
  15324. movl %r14d, %edx
  15325. addl %ecx, %r10d
  15326. addl 248(%rsp), %r9d
  15327. movl %r15d, %ecx
  15328. movl %r11d, %eax
  15329. xorl %r8d, %ecx
  15330. rorl $14, %edx
  15331. andl %r14d, %ecx
  15332. xorl %r14d, %edx
  15333. xorl %r8d, %ecx
  15334. rorl $5, %edx
  15335. addl %ecx, %r9d
  15336. xorl %r14d, %edx
  15337. xorl %r10d, %eax
  15338. rorl $6, %edx
  15339. movl %r10d, %ecx
  15340. addl %edx, %r9d
  15341. rorl $9, %ecx
  15342. andl %eax, %ebx
  15343. xorl %r10d, %ecx
  15344. xorl %r11d, %ebx
  15345. rorl $11, %ecx
  15346. addl %r9d, %r13d
  15347. xorl %r10d, %ecx
  15348. addl %ebx, %r9d
  15349. rorl $2, %ecx
  15350. movl %r13d, %edx
  15351. addl %ecx, %r9d
  15352. addl 252(%rsp), %r8d
  15353. movl %r14d, %ecx
  15354. movl %r10d, %ebx
  15355. xorl %r15d, %ecx
  15356. rorl $14, %edx
  15357. andl %r13d, %ecx
  15358. xorl %r13d, %edx
  15359. xorl %r15d, %ecx
  15360. rorl $5, %edx
  15361. addl %ecx, %r8d
  15362. xorl %r13d, %edx
  15363. xorl %r9d, %ebx
  15364. rorl $6, %edx
  15365. movl %r9d, %ecx
  15366. addl %edx, %r8d
  15367. rorl $9, %ecx
  15368. andl %ebx, %eax
  15369. xorl %r9d, %ecx
  15370. xorl %r10d, %eax
  15371. rorl $11, %ecx
  15372. addl %r8d, %r12d
  15373. xorl %r9d, %ecx
  15374. addl %eax, %r8d
  15375. rorl $2, %ecx
  15376. movl %r12d, %edx
  15377. addl %ecx, %r8d
  15378. # rnd_all_4: 17-20
  15379. addl 272(%rsp), %r15d
  15380. movl %r13d, %ecx
  15381. movl %r9d, %eax
  15382. xorl %r14d, %ecx
  15383. rorl $14, %edx
  15384. andl %r12d, %ecx
  15385. xorl %r12d, %edx
  15386. xorl %r14d, %ecx
  15387. rorl $5, %edx
  15388. addl %ecx, %r15d
  15389. xorl %r12d, %edx
  15390. xorl %r8d, %eax
  15391. rorl $6, %edx
  15392. movl %r8d, %ecx
  15393. addl %edx, %r15d
  15394. rorl $9, %ecx
  15395. andl %eax, %ebx
  15396. xorl %r8d, %ecx
  15397. xorl %r9d, %ebx
  15398. rorl $11, %ecx
  15399. addl %r15d, %r11d
  15400. xorl %r8d, %ecx
  15401. addl %ebx, %r15d
  15402. rorl $2, %ecx
  15403. movl %r11d, %edx
  15404. addl %ecx, %r15d
  15405. addl 276(%rsp), %r14d
  15406. movl %r12d, %ecx
  15407. movl %r8d, %ebx
  15408. xorl %r13d, %ecx
  15409. rorl $14, %edx
  15410. andl %r11d, %ecx
  15411. xorl %r11d, %edx
  15412. xorl %r13d, %ecx
  15413. rorl $5, %edx
  15414. addl %ecx, %r14d
  15415. xorl %r11d, %edx
  15416. xorl %r15d, %ebx
  15417. rorl $6, %edx
  15418. movl %r15d, %ecx
  15419. addl %edx, %r14d
  15420. rorl $9, %ecx
  15421. andl %ebx, %eax
  15422. xorl %r15d, %ecx
  15423. xorl %r8d, %eax
  15424. rorl $11, %ecx
  15425. addl %r14d, %r10d
  15426. xorl %r15d, %ecx
  15427. addl %eax, %r14d
  15428. rorl $2, %ecx
  15429. movl %r10d, %edx
  15430. addl %ecx, %r14d
  15431. addl 280(%rsp), %r13d
  15432. movl %r11d, %ecx
  15433. movl %r15d, %eax
  15434. xorl %r12d, %ecx
  15435. rorl $14, %edx
  15436. andl %r10d, %ecx
  15437. xorl %r10d, %edx
  15438. xorl %r12d, %ecx
  15439. rorl $5, %edx
  15440. addl %ecx, %r13d
  15441. xorl %r10d, %edx
  15442. xorl %r14d, %eax
  15443. rorl $6, %edx
  15444. movl %r14d, %ecx
  15445. addl %edx, %r13d
  15446. rorl $9, %ecx
  15447. andl %eax, %ebx
  15448. xorl %r14d, %ecx
  15449. xorl %r15d, %ebx
  15450. rorl $11, %ecx
  15451. addl %r13d, %r9d
  15452. xorl %r14d, %ecx
  15453. addl %ebx, %r13d
  15454. rorl $2, %ecx
  15455. movl %r9d, %edx
  15456. addl %ecx, %r13d
  15457. addl 284(%rsp), %r12d
  15458. movl %r10d, %ecx
  15459. movl %r14d, %ebx
  15460. xorl %r11d, %ecx
  15461. rorl $14, %edx
  15462. andl %r9d, %ecx
  15463. xorl %r9d, %edx
  15464. xorl %r11d, %ecx
  15465. rorl $5, %edx
  15466. addl %ecx, %r12d
  15467. xorl %r9d, %edx
  15468. xorl %r13d, %ebx
  15469. rorl $6, %edx
  15470. movl %r13d, %ecx
  15471. addl %edx, %r12d
  15472. rorl $9, %ecx
  15473. andl %ebx, %eax
  15474. xorl %r13d, %ecx
  15475. xorl %r14d, %eax
  15476. rorl $11, %ecx
  15477. addl %r12d, %r8d
  15478. xorl %r13d, %ecx
  15479. addl %eax, %r12d
  15480. rorl $2, %ecx
  15481. movl %r8d, %edx
  15482. addl %ecx, %r12d
  15483. # rnd_all_4: 19-22
  15484. addl 304(%rsp), %r11d
  15485. movl %r9d, %ecx
  15486. movl %r13d, %eax
  15487. xorl %r10d, %ecx
  15488. rorl $14, %edx
  15489. andl %r8d, %ecx
  15490. xorl %r8d, %edx
  15491. xorl %r10d, %ecx
  15492. rorl $5, %edx
  15493. addl %ecx, %r11d
  15494. xorl %r8d, %edx
  15495. xorl %r12d, %eax
  15496. rorl $6, %edx
  15497. movl %r12d, %ecx
  15498. addl %edx, %r11d
  15499. rorl $9, %ecx
  15500. andl %eax, %ebx
  15501. xorl %r12d, %ecx
  15502. xorl %r13d, %ebx
  15503. rorl $11, %ecx
  15504. addl %r11d, %r15d
  15505. xorl %r12d, %ecx
  15506. addl %ebx, %r11d
  15507. rorl $2, %ecx
  15508. movl %r15d, %edx
  15509. addl %ecx, %r11d
  15510. addl 308(%rsp), %r10d
  15511. movl %r8d, %ecx
  15512. movl %r12d, %ebx
  15513. xorl %r9d, %ecx
  15514. rorl $14, %edx
  15515. andl %r15d, %ecx
  15516. xorl %r15d, %edx
  15517. xorl %r9d, %ecx
  15518. rorl $5, %edx
  15519. addl %ecx, %r10d
  15520. xorl %r15d, %edx
  15521. xorl %r11d, %ebx
  15522. rorl $6, %edx
  15523. movl %r11d, %ecx
  15524. addl %edx, %r10d
  15525. rorl $9, %ecx
  15526. andl %ebx, %eax
  15527. xorl %r11d, %ecx
  15528. xorl %r12d, %eax
  15529. rorl $11, %ecx
  15530. addl %r10d, %r14d
  15531. xorl %r11d, %ecx
  15532. addl %eax, %r10d
  15533. rorl $2, %ecx
  15534. movl %r14d, %edx
  15535. addl %ecx, %r10d
  15536. addl 312(%rsp), %r9d
  15537. movl %r15d, %ecx
  15538. movl %r11d, %eax
  15539. xorl %r8d, %ecx
  15540. rorl $14, %edx
  15541. andl %r14d, %ecx
  15542. xorl %r14d, %edx
  15543. xorl %r8d, %ecx
  15544. rorl $5, %edx
  15545. addl %ecx, %r9d
  15546. xorl %r14d, %edx
  15547. xorl %r10d, %eax
  15548. rorl $6, %edx
  15549. movl %r10d, %ecx
  15550. addl %edx, %r9d
  15551. rorl $9, %ecx
  15552. andl %eax, %ebx
  15553. xorl %r10d, %ecx
  15554. xorl %r11d, %ebx
  15555. rorl $11, %ecx
  15556. addl %r9d, %r13d
  15557. xorl %r10d, %ecx
  15558. addl %ebx, %r9d
  15559. rorl $2, %ecx
  15560. movl %r13d, %edx
  15561. addl %ecx, %r9d
  15562. addl 316(%rsp), %r8d
  15563. movl %r14d, %ecx
  15564. movl %r10d, %ebx
  15565. xorl %r15d, %ecx
  15566. rorl $14, %edx
  15567. andl %r13d, %ecx
  15568. xorl %r13d, %edx
  15569. xorl %r15d, %ecx
  15570. rorl $5, %edx
  15571. addl %ecx, %r8d
  15572. xorl %r13d, %edx
  15573. xorl %r9d, %ebx
  15574. rorl $6, %edx
  15575. movl %r9d, %ecx
  15576. addl %edx, %r8d
  15577. rorl $9, %ecx
  15578. andl %ebx, %eax
  15579. xorl %r9d, %ecx
  15580. xorl %r10d, %eax
  15581. rorl $11, %ecx
  15582. addl %r8d, %r12d
  15583. xorl %r9d, %ecx
  15584. addl %eax, %r8d
  15585. rorl $2, %ecx
  15586. movl %r12d, %edx
  15587. addl %ecx, %r8d
  15588. # rnd_all_4: 21-24
  15589. addl 336(%rsp), %r15d
  15590. movl %r13d, %ecx
  15591. movl %r9d, %eax
  15592. xorl %r14d, %ecx
  15593. rorl $14, %edx
  15594. andl %r12d, %ecx
  15595. xorl %r12d, %edx
  15596. xorl %r14d, %ecx
  15597. rorl $5, %edx
  15598. addl %ecx, %r15d
  15599. xorl %r12d, %edx
  15600. xorl %r8d, %eax
  15601. rorl $6, %edx
  15602. movl %r8d, %ecx
  15603. addl %edx, %r15d
  15604. rorl $9, %ecx
  15605. andl %eax, %ebx
  15606. xorl %r8d, %ecx
  15607. xorl %r9d, %ebx
  15608. rorl $11, %ecx
  15609. addl %r15d, %r11d
  15610. xorl %r8d, %ecx
  15611. addl %ebx, %r15d
  15612. rorl $2, %ecx
  15613. movl %r11d, %edx
  15614. addl %ecx, %r15d
  15615. addl 340(%rsp), %r14d
  15616. movl %r12d, %ecx
  15617. movl %r8d, %ebx
  15618. xorl %r13d, %ecx
  15619. rorl $14, %edx
  15620. andl %r11d, %ecx
  15621. xorl %r11d, %edx
  15622. xorl %r13d, %ecx
  15623. rorl $5, %edx
  15624. addl %ecx, %r14d
  15625. xorl %r11d, %edx
  15626. xorl %r15d, %ebx
  15627. rorl $6, %edx
  15628. movl %r15d, %ecx
  15629. addl %edx, %r14d
  15630. rorl $9, %ecx
  15631. andl %ebx, %eax
  15632. xorl %r15d, %ecx
  15633. xorl %r8d, %eax
  15634. rorl $11, %ecx
  15635. addl %r14d, %r10d
  15636. xorl %r15d, %ecx
  15637. addl %eax, %r14d
  15638. rorl $2, %ecx
  15639. movl %r10d, %edx
  15640. addl %ecx, %r14d
  15641. addl 344(%rsp), %r13d
  15642. movl %r11d, %ecx
  15643. movl %r15d, %eax
  15644. xorl %r12d, %ecx
  15645. rorl $14, %edx
  15646. andl %r10d, %ecx
  15647. xorl %r10d, %edx
  15648. xorl %r12d, %ecx
  15649. rorl $5, %edx
  15650. addl %ecx, %r13d
  15651. xorl %r10d, %edx
  15652. xorl %r14d, %eax
  15653. rorl $6, %edx
  15654. movl %r14d, %ecx
  15655. addl %edx, %r13d
  15656. rorl $9, %ecx
  15657. andl %eax, %ebx
  15658. xorl %r14d, %ecx
  15659. xorl %r15d, %ebx
  15660. rorl $11, %ecx
  15661. addl %r13d, %r9d
  15662. xorl %r14d, %ecx
  15663. addl %ebx, %r13d
  15664. rorl $2, %ecx
  15665. movl %r9d, %edx
  15666. addl %ecx, %r13d
  15667. addl 348(%rsp), %r12d
  15668. movl %r10d, %ecx
  15669. movl %r14d, %ebx
  15670. xorl %r11d, %ecx
  15671. rorl $14, %edx
  15672. andl %r9d, %ecx
  15673. xorl %r9d, %edx
  15674. xorl %r11d, %ecx
  15675. rorl $5, %edx
  15676. addl %ecx, %r12d
  15677. xorl %r9d, %edx
  15678. xorl %r13d, %ebx
  15679. rorl $6, %edx
  15680. movl %r13d, %ecx
  15681. addl %edx, %r12d
  15682. rorl $9, %ecx
  15683. andl %ebx, %eax
  15684. xorl %r13d, %ecx
  15685. xorl %r14d, %eax
  15686. rorl $11, %ecx
  15687. addl %r12d, %r8d
  15688. xorl %r13d, %ecx
  15689. addl %eax, %r12d
  15690. rorl $2, %ecx
  15691. movl %r8d, %edx
  15692. addl %ecx, %r12d
  15693. # rnd_all_4: 23-26
  15694. addl 368(%rsp), %r11d
  15695. movl %r9d, %ecx
  15696. movl %r13d, %eax
  15697. xorl %r10d, %ecx
  15698. rorl $14, %edx
  15699. andl %r8d, %ecx
  15700. xorl %r8d, %edx
  15701. xorl %r10d, %ecx
  15702. rorl $5, %edx
  15703. addl %ecx, %r11d
  15704. xorl %r8d, %edx
  15705. xorl %r12d, %eax
  15706. rorl $6, %edx
  15707. movl %r12d, %ecx
  15708. addl %edx, %r11d
  15709. rorl $9, %ecx
  15710. andl %eax, %ebx
  15711. xorl %r12d, %ecx
  15712. xorl %r13d, %ebx
  15713. rorl $11, %ecx
  15714. addl %r11d, %r15d
  15715. xorl %r12d, %ecx
  15716. addl %ebx, %r11d
  15717. rorl $2, %ecx
  15718. movl %r15d, %edx
  15719. addl %ecx, %r11d
  15720. addl 372(%rsp), %r10d
  15721. movl %r8d, %ecx
  15722. movl %r12d, %ebx
  15723. xorl %r9d, %ecx
  15724. rorl $14, %edx
  15725. andl %r15d, %ecx
  15726. xorl %r15d, %edx
  15727. xorl %r9d, %ecx
  15728. rorl $5, %edx
  15729. addl %ecx, %r10d
  15730. xorl %r15d, %edx
  15731. xorl %r11d, %ebx
  15732. rorl $6, %edx
  15733. movl %r11d, %ecx
  15734. addl %edx, %r10d
  15735. rorl $9, %ecx
  15736. andl %ebx, %eax
  15737. xorl %r11d, %ecx
  15738. xorl %r12d, %eax
  15739. rorl $11, %ecx
  15740. addl %r10d, %r14d
  15741. xorl %r11d, %ecx
  15742. addl %eax, %r10d
  15743. rorl $2, %ecx
  15744. movl %r14d, %edx
  15745. addl %ecx, %r10d
  15746. addl 376(%rsp), %r9d
  15747. movl %r15d, %ecx
  15748. movl %r11d, %eax
  15749. xorl %r8d, %ecx
  15750. rorl $14, %edx
  15751. andl %r14d, %ecx
  15752. xorl %r14d, %edx
  15753. xorl %r8d, %ecx
  15754. rorl $5, %edx
  15755. addl %ecx, %r9d
  15756. xorl %r14d, %edx
  15757. xorl %r10d, %eax
  15758. rorl $6, %edx
  15759. movl %r10d, %ecx
  15760. addl %edx, %r9d
  15761. rorl $9, %ecx
  15762. andl %eax, %ebx
  15763. xorl %r10d, %ecx
  15764. xorl %r11d, %ebx
  15765. rorl $11, %ecx
  15766. addl %r9d, %r13d
  15767. xorl %r10d, %ecx
  15768. addl %ebx, %r9d
  15769. rorl $2, %ecx
  15770. movl %r13d, %edx
  15771. addl %ecx, %r9d
  15772. addl 380(%rsp), %r8d
  15773. movl %r14d, %ecx
  15774. movl %r10d, %ebx
  15775. xorl %r15d, %ecx
  15776. rorl $14, %edx
  15777. andl %r13d, %ecx
  15778. xorl %r13d, %edx
  15779. xorl %r15d, %ecx
  15780. rorl $5, %edx
  15781. addl %ecx, %r8d
  15782. xorl %r13d, %edx
  15783. xorl %r9d, %ebx
  15784. rorl $6, %edx
  15785. movl %r9d, %ecx
  15786. addl %edx, %r8d
  15787. rorl $9, %ecx
  15788. andl %ebx, %eax
  15789. xorl %r9d, %ecx
  15790. xorl %r10d, %eax
  15791. rorl $11, %ecx
  15792. addl %r8d, %r12d
  15793. xorl %r9d, %ecx
  15794. addl %eax, %r8d
  15795. rorl $2, %ecx
  15796. movl %r12d, %edx
  15797. addl %ecx, %r8d
  15798. # rnd_all_4: 25-28
  15799. addl 400(%rsp), %r15d
  15800. movl %r13d, %ecx
  15801. movl %r9d, %eax
  15802. xorl %r14d, %ecx
  15803. rorl $14, %edx
  15804. andl %r12d, %ecx
  15805. xorl %r12d, %edx
  15806. xorl %r14d, %ecx
  15807. rorl $5, %edx
  15808. addl %ecx, %r15d
  15809. xorl %r12d, %edx
  15810. xorl %r8d, %eax
  15811. rorl $6, %edx
  15812. movl %r8d, %ecx
  15813. addl %edx, %r15d
  15814. rorl $9, %ecx
  15815. andl %eax, %ebx
  15816. xorl %r8d, %ecx
  15817. xorl %r9d, %ebx
  15818. rorl $11, %ecx
  15819. addl %r15d, %r11d
  15820. xorl %r8d, %ecx
  15821. addl %ebx, %r15d
  15822. rorl $2, %ecx
  15823. movl %r11d, %edx
  15824. addl %ecx, %r15d
  15825. addl 404(%rsp), %r14d
  15826. movl %r12d, %ecx
  15827. movl %r8d, %ebx
  15828. xorl %r13d, %ecx
  15829. rorl $14, %edx
  15830. andl %r11d, %ecx
  15831. xorl %r11d, %edx
  15832. xorl %r13d, %ecx
  15833. rorl $5, %edx
  15834. addl %ecx, %r14d
  15835. xorl %r11d, %edx
  15836. xorl %r15d, %ebx
  15837. rorl $6, %edx
  15838. movl %r15d, %ecx
  15839. addl %edx, %r14d
  15840. rorl $9, %ecx
  15841. andl %ebx, %eax
  15842. xorl %r15d, %ecx
  15843. xorl %r8d, %eax
  15844. rorl $11, %ecx
  15845. addl %r14d, %r10d
  15846. xorl %r15d, %ecx
  15847. addl %eax, %r14d
  15848. rorl $2, %ecx
  15849. movl %r10d, %edx
  15850. addl %ecx, %r14d
  15851. addl 408(%rsp), %r13d
  15852. movl %r11d, %ecx
  15853. movl %r15d, %eax
  15854. xorl %r12d, %ecx
  15855. rorl $14, %edx
  15856. andl %r10d, %ecx
  15857. xorl %r10d, %edx
  15858. xorl %r12d, %ecx
  15859. rorl $5, %edx
  15860. addl %ecx, %r13d
  15861. xorl %r10d, %edx
  15862. xorl %r14d, %eax
  15863. rorl $6, %edx
  15864. movl %r14d, %ecx
  15865. addl %edx, %r13d
  15866. rorl $9, %ecx
  15867. andl %eax, %ebx
  15868. xorl %r14d, %ecx
  15869. xorl %r15d, %ebx
  15870. rorl $11, %ecx
  15871. addl %r13d, %r9d
  15872. xorl %r14d, %ecx
  15873. addl %ebx, %r13d
  15874. rorl $2, %ecx
  15875. movl %r9d, %edx
  15876. addl %ecx, %r13d
  15877. addl 412(%rsp), %r12d
  15878. movl %r10d, %ecx
  15879. movl %r14d, %ebx
  15880. xorl %r11d, %ecx
  15881. rorl $14, %edx
  15882. andl %r9d, %ecx
  15883. xorl %r9d, %edx
  15884. xorl %r11d, %ecx
  15885. rorl $5, %edx
  15886. addl %ecx, %r12d
  15887. xorl %r9d, %edx
  15888. xorl %r13d, %ebx
  15889. rorl $6, %edx
  15890. movl %r13d, %ecx
  15891. addl %edx, %r12d
  15892. rorl $9, %ecx
  15893. andl %ebx, %eax
  15894. xorl %r13d, %ecx
  15895. xorl %r14d, %eax
  15896. rorl $11, %ecx
  15897. addl %r12d, %r8d
  15898. xorl %r13d, %ecx
  15899. addl %eax, %r12d
  15900. rorl $2, %ecx
  15901. movl %r8d, %edx
  15902. addl %ecx, %r12d
  15903. # rnd_all_4: 27-30
  15904. addl 432(%rsp), %r11d
  15905. movl %r9d, %ecx
  15906. movl %r13d, %eax
  15907. xorl %r10d, %ecx
  15908. rorl $14, %edx
  15909. andl %r8d, %ecx
  15910. xorl %r8d, %edx
  15911. xorl %r10d, %ecx
  15912. rorl $5, %edx
  15913. addl %ecx, %r11d
  15914. xorl %r8d, %edx
  15915. xorl %r12d, %eax
  15916. rorl $6, %edx
  15917. movl %r12d, %ecx
  15918. addl %edx, %r11d
  15919. rorl $9, %ecx
  15920. andl %eax, %ebx
  15921. xorl %r12d, %ecx
  15922. xorl %r13d, %ebx
  15923. rorl $11, %ecx
  15924. addl %r11d, %r15d
  15925. xorl %r12d, %ecx
  15926. addl %ebx, %r11d
  15927. rorl $2, %ecx
  15928. movl %r15d, %edx
  15929. addl %ecx, %r11d
  15930. addl 436(%rsp), %r10d
  15931. movl %r8d, %ecx
  15932. movl %r12d, %ebx
  15933. xorl %r9d, %ecx
  15934. rorl $14, %edx
  15935. andl %r15d, %ecx
  15936. xorl %r15d, %edx
  15937. xorl %r9d, %ecx
  15938. rorl $5, %edx
  15939. addl %ecx, %r10d
  15940. xorl %r15d, %edx
  15941. xorl %r11d, %ebx
  15942. rorl $6, %edx
  15943. movl %r11d, %ecx
  15944. addl %edx, %r10d
  15945. rorl $9, %ecx
  15946. andl %ebx, %eax
  15947. xorl %r11d, %ecx
  15948. xorl %r12d, %eax
  15949. rorl $11, %ecx
  15950. addl %r10d, %r14d
  15951. xorl %r11d, %ecx
  15952. addl %eax, %r10d
  15953. rorl $2, %ecx
  15954. movl %r14d, %edx
  15955. addl %ecx, %r10d
  15956. addl 440(%rsp), %r9d
  15957. movl %r15d, %ecx
  15958. movl %r11d, %eax
  15959. xorl %r8d, %ecx
  15960. rorl $14, %edx
  15961. andl %r14d, %ecx
  15962. xorl %r14d, %edx
  15963. xorl %r8d, %ecx
  15964. rorl $5, %edx
  15965. addl %ecx, %r9d
  15966. xorl %r14d, %edx
  15967. xorl %r10d, %eax
  15968. rorl $6, %edx
  15969. movl %r10d, %ecx
  15970. addl %edx, %r9d
  15971. rorl $9, %ecx
  15972. andl %eax, %ebx
  15973. xorl %r10d, %ecx
  15974. xorl %r11d, %ebx
  15975. rorl $11, %ecx
  15976. addl %r9d, %r13d
  15977. xorl %r10d, %ecx
  15978. addl %ebx, %r9d
  15979. rorl $2, %ecx
  15980. movl %r13d, %edx
  15981. addl %ecx, %r9d
  15982. addl 444(%rsp), %r8d
  15983. movl %r14d, %ecx
  15984. movl %r10d, %ebx
  15985. xorl %r15d, %ecx
  15986. rorl $14, %edx
  15987. andl %r13d, %ecx
  15988. xorl %r13d, %edx
  15989. xorl %r15d, %ecx
  15990. rorl $5, %edx
  15991. addl %ecx, %r8d
  15992. xorl %r13d, %edx
  15993. xorl %r9d, %ebx
  15994. rorl $6, %edx
  15995. movl %r9d, %ecx
  15996. addl %edx, %r8d
  15997. rorl $9, %ecx
  15998. andl %ebx, %eax
  15999. xorl %r9d, %ecx
  16000. xorl %r10d, %eax
  16001. rorl $11, %ecx
  16002. addl %r8d, %r12d
  16003. xorl %r9d, %ecx
  16004. addl %eax, %r8d
  16005. rorl $2, %ecx
  16006. movl %r12d, %edx
  16007. addl %ecx, %r8d
  16008. # rnd_all_4: 29-32
  16009. addl 464(%rsp), %r15d
  16010. movl %r13d, %ecx
  16011. movl %r9d, %eax
  16012. xorl %r14d, %ecx
  16013. rorl $14, %edx
  16014. andl %r12d, %ecx
  16015. xorl %r12d, %edx
  16016. xorl %r14d, %ecx
  16017. rorl $5, %edx
  16018. addl %ecx, %r15d
  16019. xorl %r12d, %edx
  16020. xorl %r8d, %eax
  16021. rorl $6, %edx
  16022. movl %r8d, %ecx
  16023. addl %edx, %r15d
  16024. rorl $9, %ecx
  16025. andl %eax, %ebx
  16026. xorl %r8d, %ecx
  16027. xorl %r9d, %ebx
  16028. rorl $11, %ecx
  16029. addl %r15d, %r11d
  16030. xorl %r8d, %ecx
  16031. addl %ebx, %r15d
  16032. rorl $2, %ecx
  16033. movl %r11d, %edx
  16034. addl %ecx, %r15d
  16035. addl 468(%rsp), %r14d
  16036. movl %r12d, %ecx
  16037. movl %r8d, %ebx
  16038. xorl %r13d, %ecx
  16039. rorl $14, %edx
  16040. andl %r11d, %ecx
  16041. xorl %r11d, %edx
  16042. xorl %r13d, %ecx
  16043. rorl $5, %edx
  16044. addl %ecx, %r14d
  16045. xorl %r11d, %edx
  16046. xorl %r15d, %ebx
  16047. rorl $6, %edx
  16048. movl %r15d, %ecx
  16049. addl %edx, %r14d
  16050. rorl $9, %ecx
  16051. andl %ebx, %eax
  16052. xorl %r15d, %ecx
  16053. xorl %r8d, %eax
  16054. rorl $11, %ecx
  16055. addl %r14d, %r10d
  16056. xorl %r15d, %ecx
  16057. addl %eax, %r14d
  16058. rorl $2, %ecx
  16059. movl %r10d, %edx
  16060. addl %ecx, %r14d
  16061. addl 472(%rsp), %r13d
  16062. movl %r11d, %ecx
  16063. movl %r15d, %eax
  16064. xorl %r12d, %ecx
  16065. rorl $14, %edx
  16066. andl %r10d, %ecx
  16067. xorl %r10d, %edx
  16068. xorl %r12d, %ecx
  16069. rorl $5, %edx
  16070. addl %ecx, %r13d
  16071. xorl %r10d, %edx
  16072. xorl %r14d, %eax
  16073. rorl $6, %edx
  16074. movl %r14d, %ecx
  16075. addl %edx, %r13d
  16076. rorl $9, %ecx
  16077. andl %eax, %ebx
  16078. xorl %r14d, %ecx
  16079. xorl %r15d, %ebx
  16080. rorl $11, %ecx
  16081. addl %r13d, %r9d
  16082. xorl %r14d, %ecx
  16083. addl %ebx, %r13d
  16084. rorl $2, %ecx
  16085. movl %r9d, %edx
  16086. addl %ecx, %r13d
  16087. addl 476(%rsp), %r12d
  16088. movl %r10d, %ecx
  16089. movl %r14d, %ebx
  16090. xorl %r11d, %ecx
  16091. rorl $14, %edx
  16092. andl %r9d, %ecx
  16093. xorl %r9d, %edx
  16094. xorl %r11d, %ecx
  16095. rorl $5, %edx
  16096. addl %ecx, %r12d
  16097. xorl %r9d, %edx
  16098. xorl %r13d, %ebx
  16099. rorl $6, %edx
  16100. movl %r13d, %ecx
  16101. addl %edx, %r12d
  16102. rorl $9, %ecx
  16103. andl %ebx, %eax
  16104. xorl %r13d, %ecx
  16105. xorl %r14d, %eax
  16106. rorl $11, %ecx
  16107. addl %r12d, %r8d
  16108. xorl %r13d, %ecx
  16109. addl %eax, %r12d
  16110. rorl $2, %ecx
  16111. movl %r8d, %edx
  16112. addl %ecx, %r12d
  16113. # rnd_all_4: 31-34
  16114. addl 496(%rsp), %r11d
  16115. movl %r9d, %ecx
  16116. movl %r13d, %eax
  16117. xorl %r10d, %ecx
  16118. rorl $14, %edx
  16119. andl %r8d, %ecx
  16120. xorl %r8d, %edx
  16121. xorl %r10d, %ecx
  16122. rorl $5, %edx
  16123. addl %ecx, %r11d
  16124. xorl %r8d, %edx
  16125. xorl %r12d, %eax
  16126. rorl $6, %edx
  16127. movl %r12d, %ecx
  16128. addl %edx, %r11d
  16129. rorl $9, %ecx
  16130. andl %eax, %ebx
  16131. xorl %r12d, %ecx
  16132. xorl %r13d, %ebx
  16133. rorl $11, %ecx
  16134. addl %r11d, %r15d
  16135. xorl %r12d, %ecx
  16136. addl %ebx, %r11d
  16137. rorl $2, %ecx
  16138. movl %r15d, %edx
  16139. addl %ecx, %r11d
  16140. addl 500(%rsp), %r10d
  16141. movl %r8d, %ecx
  16142. movl %r12d, %ebx
  16143. xorl %r9d, %ecx
  16144. rorl $14, %edx
  16145. andl %r15d, %ecx
  16146. xorl %r15d, %edx
  16147. xorl %r9d, %ecx
  16148. rorl $5, %edx
  16149. addl %ecx, %r10d
  16150. xorl %r15d, %edx
  16151. xorl %r11d, %ebx
  16152. rorl $6, %edx
  16153. movl %r11d, %ecx
  16154. addl %edx, %r10d
  16155. rorl $9, %ecx
  16156. andl %ebx, %eax
  16157. xorl %r11d, %ecx
  16158. xorl %r12d, %eax
  16159. rorl $11, %ecx
  16160. addl %r10d, %r14d
  16161. xorl %r11d, %ecx
  16162. addl %eax, %r10d
  16163. rorl $2, %ecx
  16164. movl %r14d, %edx
  16165. addl %ecx, %r10d
  16166. addl 504(%rsp), %r9d
  16167. movl %r15d, %ecx
  16168. movl %r11d, %eax
  16169. xorl %r8d, %ecx
  16170. rorl $14, %edx
  16171. andl %r14d, %ecx
  16172. xorl %r14d, %edx
  16173. xorl %r8d, %ecx
  16174. rorl $5, %edx
  16175. addl %ecx, %r9d
  16176. xorl %r14d, %edx
  16177. xorl %r10d, %eax
  16178. rorl $6, %edx
  16179. movl %r10d, %ecx
  16180. addl %edx, %r9d
  16181. rorl $9, %ecx
  16182. andl %eax, %ebx
  16183. xorl %r10d, %ecx
  16184. xorl %r11d, %ebx
  16185. rorl $11, %ecx
  16186. addl %r9d, %r13d
  16187. xorl %r10d, %ecx
  16188. addl %ebx, %r9d
  16189. rorl $2, %ecx
  16190. movl %r13d, %edx
  16191. addl %ecx, %r9d
  16192. addl 508(%rsp), %r8d
  16193. movl %r14d, %ecx
  16194. movl %r10d, %ebx
  16195. xorl %r15d, %ecx
  16196. rorl $14, %edx
  16197. andl %r13d, %ecx
  16198. xorl %r13d, %edx
  16199. xorl %r15d, %ecx
  16200. rorl $5, %edx
  16201. addl %ecx, %r8d
  16202. xorl %r13d, %edx
  16203. xorl %r9d, %ebx
  16204. rorl $6, %edx
  16205. movl %r9d, %ecx
  16206. addl %edx, %r8d
  16207. rorl $9, %ecx
  16208. andl %ebx, %eax
  16209. xorl %r9d, %ecx
  16210. xorl %r10d, %eax
  16211. rorl $11, %ecx
  16212. addl %r8d, %r12d
  16213. xorl %r9d, %ecx
  16214. addl %eax, %r8d
  16215. rorl $2, %ecx
  16216. movl %r12d, %edx
  16217. addl %ecx, %r8d
  16218. addl (%rdi), %r8d
  16219. addl 4(%rdi), %r9d
  16220. addl 8(%rdi), %r10d
  16221. addl 12(%rdi), %r11d
  16222. addl 16(%rdi), %r12d
  16223. addl 20(%rdi), %r13d
  16224. addl 24(%rdi), %r14d
  16225. addl 28(%rdi), %r15d
  16226. addq $0x80, %rbp
  16227. subl $0x80, %esi
  16228. movl %r8d, (%rdi)
  16229. movl %r9d, 4(%rdi)
  16230. movl %r10d, 8(%rdi)
  16231. movl %r11d, 12(%rdi)
  16232. movl %r12d, 16(%rdi)
  16233. movl %r13d, 20(%rdi)
  16234. movl %r14d, 24(%rdi)
  16235. movl %r15d, 28(%rdi)
  16236. jnz L_sha256_len_avx2_start
  16237. L_sha256_len_avx2_done:
  16238. xorq %rax, %rax
  16239. vzeroupper
  16240. addq $0x200, %rsp
  16241. popq %rbp
  16242. popq %r15
  16243. popq %r14
  16244. popq %r13
  16245. popq %r12
  16246. popq %rbx
  16247. repz retq
  16248. #ifndef __APPLE__
  16249. .size Transform_Sha256_AVX2_Len,.-Transform_Sha256_AVX2_Len
  16250. #endif /* __APPLE__ */
  16251. #ifndef __APPLE__
  16252. .data
  16253. #else
  16254. .section __DATA,__data
  16255. #endif /* __APPLE__ */
  16256. L_avx2_rorx_sha256_k:
  16257. .long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
  16258. .long 0x428a2f98,0x71374491,0xb5c0fbcf,0xe9b5dba5
  16259. .long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
  16260. .long 0x3956c25b,0x59f111f1,0x923f82a4,0xab1c5ed5
  16261. .long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
  16262. .long 0xd807aa98,0x12835b01,0x243185be,0x550c7dc3
  16263. .long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
  16264. .long 0x72be5d74,0x80deb1fe,0x9bdc06a7,0xc19bf174
  16265. .long 0xe49b69c1,0xefbe4786,0xfc19dc6,0x240ca1cc
  16266. .long 0xe49b69c1,0xefbe4786,0xfc19dc6,0x240ca1cc
  16267. .long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
  16268. .long 0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da
  16269. .long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
  16270. .long 0x983e5152,0xa831c66d,0xb00327c8,0xbf597fc7
  16271. .long 0xc6e00bf3,0xd5a79147,0x6ca6351,0x14292967
  16272. .long 0xc6e00bf3,0xd5a79147,0x6ca6351,0x14292967
  16273. .long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
  16274. .long 0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13
  16275. .long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
  16276. .long 0x650a7354,0x766a0abb,0x81c2c92e,0x92722c85
  16277. .long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
  16278. .long 0xa2bfe8a1,0xa81a664b,0xc24b8b70,0xc76c51a3
  16279. .long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
  16280. .long 0xd192e819,0xd6990624,0xf40e3585,0x106aa070
  16281. .long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
  16282. .long 0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5
  16283. .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
  16284. .long 0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3
  16285. .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
  16286. .long 0x748f82ee,0x78a5636f,0x84c87814,0x8cc70208
  16287. .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
  16288. .long 0x90befffa,0xa4506ceb,0xbef9a3f7,0xc67178f2
  16289. #ifndef __APPLE__
  16290. .data
  16291. #else
  16292. .section __DATA,__data
  16293. #endif /* __APPLE__ */
  16294. #ifndef __APPLE__
  16295. .align 32
  16296. #else
  16297. .p2align 5
  16298. #endif /* __APPLE__ */
  16299. L_avx2_rorx_sha256_flip_mask:
  16300. .quad 0x405060700010203, 0xc0d0e0f08090a0b
  16301. .quad 0x405060700010203, 0xc0d0e0f08090a0b
  16302. #ifndef __APPLE__
  16303. .data
  16304. #else
  16305. .section __DATA,__data
  16306. #endif /* __APPLE__ */
  16307. #ifndef __APPLE__
  16308. .align 32
  16309. #else
  16310. .p2align 5
  16311. #endif /* __APPLE__ */
  16312. L_avx2_rorx_sha256_shuf_00BA:
  16313. .quad 0xb0a090803020100, 0xffffffffffffffff
  16314. .quad 0xb0a090803020100, 0xffffffffffffffff
  16315. #ifndef __APPLE__
  16316. .data
  16317. #else
  16318. .section __DATA,__data
  16319. #endif /* __APPLE__ */
  16320. #ifndef __APPLE__
  16321. .align 32
  16322. #else
  16323. .p2align 5
  16324. #endif /* __APPLE__ */
  16325. L_avx2_rorx_sha256_shuf_DC00:
  16326. .quad 0xffffffffffffffff, 0xb0a090803020100
  16327. .quad 0xffffffffffffffff, 0xb0a090803020100
  16328. #ifndef __APPLE__
  16329. .text
  16330. .globl Transform_Sha256_AVX2_RORX
  16331. .type Transform_Sha256_AVX2_RORX,@function
  16332. .align 16
  16333. Transform_Sha256_AVX2_RORX:
  16334. #else
  16335. .section __TEXT,__text
  16336. .globl _Transform_Sha256_AVX2_RORX
  16337. .p2align 4
  16338. _Transform_Sha256_AVX2_RORX:
  16339. #endif /* __APPLE__ */
  16340. pushq %rbx
  16341. pushq %r12
  16342. pushq %r13
  16343. pushq %r14
  16344. pushq %r15
  16345. subq $0x200, %rsp
  16346. leaq 32(%rdi), %rax
  16347. vmovdqa L_avx2_rorx_sha256_flip_mask(%rip), %xmm13
  16348. vmovdqa L_avx2_rorx_sha256_shuf_00BA(%rip), %ymm11
  16349. vmovdqa L_avx2_rorx_sha256_shuf_DC00(%rip), %ymm12
  16350. # X0, X1, X2, X3 = W[0..15]
  16351. vmovdqu (%rax), %xmm0
  16352. vmovdqu 16(%rax), %xmm1
  16353. vpshufb %xmm13, %xmm0, %xmm0
  16354. vpshufb %xmm13, %xmm1, %xmm1
  16355. vpaddd 0+L_avx2_rorx_sha256_k(%rip), %ymm0, %ymm4
  16356. vpaddd 32+L_avx2_rorx_sha256_k(%rip), %ymm1, %ymm5
  16357. vmovdqu %ymm4, (%rsp)
  16358. vmovdqu %ymm5, 32(%rsp)
  16359. vmovdqu 32(%rax), %xmm2
  16360. vmovdqu 48(%rax), %xmm3
  16361. vpshufb %xmm13, %xmm2, %xmm2
  16362. vpshufb %xmm13, %xmm3, %xmm3
  16363. vpaddd 64+L_avx2_rorx_sha256_k(%rip), %ymm2, %ymm4
  16364. vpaddd 96+L_avx2_rorx_sha256_k(%rip), %ymm3, %ymm5
  16365. vmovdqu %ymm4, 64(%rsp)
  16366. vmovdqu %ymm5, 96(%rsp)
  16367. movl (%rdi), %r8d
  16368. movl 4(%rdi), %r9d
  16369. movl 8(%rdi), %r10d
  16370. movl 12(%rdi), %r11d
  16371. movl 16(%rdi), %r12d
  16372. movl 20(%rdi), %r13d
  16373. movl 24(%rdi), %r14d
  16374. movl 28(%rdi), %r15d
  16375. movl %r9d, %ebx
  16376. rorxl $6, %r12d, %edx
  16377. xorl %r10d, %ebx
  16378. # rnd_0: 0 - 0
  16379. movl %r13d, %eax
  16380. rorxl $11, %r12d, %ecx
  16381. addl (%rsp), %r15d
  16382. vpalignr $4, %ymm0, %ymm1, %ymm5
  16383. # rnd_0: 1 - 1
  16384. xorl %edx, %ecx
  16385. xorl %r14d, %eax
  16386. rorxl $25, %r12d, %edx
  16387. vpalignr $4, %ymm2, %ymm3, %ymm4
  16388. # rnd_0: 2 - 2
  16389. andl %r12d, %eax
  16390. xorl %ecx, %edx
  16391. rorxl $13, %r8d, %ecx
  16392. vpsrld $7, %ymm5, %ymm6
  16393. # rnd_0: 3 - 3
  16394. addl %edx, %r15d
  16395. rorxl $2, %r8d, %edx
  16396. xorl %r14d, %eax
  16397. vpslld $25, %ymm5, %ymm7
  16398. # rnd_0: 4 - 4
  16399. xorl %edx, %ecx
  16400. rorxl $22, %r8d, %edx
  16401. addl %eax, %r15d
  16402. vpsrld $18, %ymm5, %ymm8
  16403. # rnd_0: 5 - 5
  16404. xorl %ecx, %edx
  16405. movl %r9d, %eax
  16406. addl %r15d, %r11d
  16407. vpslld $14, %ymm5, %ymm9
  16408. # rnd_0: 6 - 6
  16409. xorl %r8d, %eax
  16410. addl %edx, %r15d
  16411. andl %eax, %ebx
  16412. vpor %ymm7, %ymm6, %ymm6
  16413. # rnd_0: 7 - 7
  16414. xorl %r9d, %ebx
  16415. rorxl $6, %r11d, %edx
  16416. addl %ebx, %r15d
  16417. vpor %ymm9, %ymm8, %ymm8
  16418. # rnd_1: 0 - 0
  16419. movl %r12d, %ebx
  16420. rorxl $11, %r11d, %ecx
  16421. addl 4(%rsp), %r14d
  16422. vpsrld $3, %ymm5, %ymm9
  16423. # rnd_1: 1 - 1
  16424. xorl %edx, %ecx
  16425. xorl %r13d, %ebx
  16426. rorxl $25, %r11d, %edx
  16427. vpxor %ymm8, %ymm6, %ymm6
  16428. # rnd_1: 2 - 2
  16429. andl %r11d, %ebx
  16430. xorl %ecx, %edx
  16431. rorxl $13, %r15d, %ecx
  16432. vpshufd $0xfa, %ymm3, %ymm7
  16433. # rnd_1: 3 - 3
  16434. addl %edx, %r14d
  16435. rorxl $2, %r15d, %edx
  16436. xorl %r13d, %ebx
  16437. vpxor %ymm6, %ymm9, %ymm5
  16438. # rnd_1: 4 - 4
  16439. xorl %edx, %ecx
  16440. rorxl $22, %r15d, %edx
  16441. addl %ebx, %r14d
  16442. vpsrld $10, %ymm7, %ymm8
  16443. # rnd_1: 5 - 5
  16444. xorl %ecx, %edx
  16445. addl %r14d, %r10d
  16446. movl %r8d, %ebx
  16447. vpsrlq $19, %ymm7, %ymm6
  16448. # rnd_1: 6 - 6
  16449. xorl %r15d, %ebx
  16450. addl %edx, %r14d
  16451. andl %ebx, %eax
  16452. vpsrlq $0x11, %ymm7, %ymm7
  16453. # rnd_1: 7 - 7
  16454. xorl %r8d, %eax
  16455. rorxl $6, %r10d, %edx
  16456. addl %eax, %r14d
  16457. vpaddd %ymm0, %ymm4, %ymm4
  16458. # rnd_0: 0 - 0
  16459. movl %r11d, %eax
  16460. rorxl $11, %r10d, %ecx
  16461. addl 8(%rsp), %r13d
  16462. vpxor %ymm7, %ymm6, %ymm6
  16463. # rnd_0: 1 - 1
  16464. xorl %edx, %ecx
  16465. xorl %r12d, %eax
  16466. rorxl $25, %r10d, %edx
  16467. vpxor %ymm6, %ymm8, %ymm8
  16468. # rnd_0: 2 - 2
  16469. andl %r10d, %eax
  16470. xorl %ecx, %edx
  16471. rorxl $13, %r14d, %ecx
  16472. vpaddd %ymm5, %ymm4, %ymm4
  16473. # rnd_0: 3 - 3
  16474. addl %edx, %r13d
  16475. rorxl $2, %r14d, %edx
  16476. xorl %r12d, %eax
  16477. vpshufb %ymm11, %ymm8, %ymm8
  16478. # rnd_0: 4 - 4
  16479. xorl %edx, %ecx
  16480. rorxl $22, %r14d, %edx
  16481. addl %eax, %r13d
  16482. vpaddd %ymm8, %ymm4, %ymm4
  16483. # rnd_0: 5 - 5
  16484. xorl %ecx, %edx
  16485. movl %r15d, %eax
  16486. addl %r13d, %r9d
  16487. vpshufd $0x50, %ymm4, %ymm6
  16488. # rnd_0: 6 - 6
  16489. xorl %r14d, %eax
  16490. addl %edx, %r13d
  16491. andl %eax, %ebx
  16492. vpsrlq $0x11, %ymm6, %ymm8
  16493. # rnd_0: 7 - 7
  16494. xorl %r15d, %ebx
  16495. rorxl $6, %r9d, %edx
  16496. addl %ebx, %r13d
  16497. vpsrlq $19, %ymm6, %ymm7
  16498. # rnd_1: 0 - 0
  16499. movl %r10d, %ebx
  16500. rorxl $11, %r9d, %ecx
  16501. addl 12(%rsp), %r12d
  16502. vpsrld $10, %ymm6, %ymm9
  16503. # rnd_1: 1 - 1
  16504. xorl %edx, %ecx
  16505. xorl %r11d, %ebx
  16506. rorxl $25, %r9d, %edx
  16507. vpxor %ymm7, %ymm8, %ymm8
  16508. # rnd_1: 2 - 2
  16509. andl %r9d, %ebx
  16510. xorl %ecx, %edx
  16511. rorxl $13, %r13d, %ecx
  16512. vpxor %ymm8, %ymm9, %ymm9
  16513. # rnd_1: 3 - 3
  16514. addl %edx, %r12d
  16515. rorxl $2, %r13d, %edx
  16516. xorl %r11d, %ebx
  16517. vpshufb %ymm12, %ymm9, %ymm9
  16518. # rnd_1: 4 - 4
  16519. xorl %edx, %ecx
  16520. rorxl $22, %r13d, %edx
  16521. addl %ebx, %r12d
  16522. vpaddd %ymm4, %ymm9, %ymm0
  16523. # rnd_1: 5 - 5
  16524. xorl %ecx, %edx
  16525. addl %r12d, %r8d
  16526. movl %r14d, %ebx
  16527. vpaddd 128+L_avx2_rorx_sha256_k(%rip), %ymm0, %ymm4
  16528. # rnd_1: 6 - 6
  16529. xorl %r13d, %ebx
  16530. addl %edx, %r12d
  16531. andl %ebx, %eax
  16532. # rnd_1: 7 - 7
  16533. xorl %r14d, %eax
  16534. rorxl $6, %r8d, %edx
  16535. addl %eax, %r12d
  16536. vmovdqu %ymm4, 128(%rsp)
  16537. # rnd_0: 0 - 0
  16538. movl %r9d, %eax
  16539. rorxl $11, %r8d, %ecx
  16540. addl 32(%rsp), %r11d
  16541. vpalignr $4, %ymm1, %ymm2, %ymm5
  16542. # rnd_0: 1 - 1
  16543. xorl %edx, %ecx
  16544. xorl %r10d, %eax
  16545. rorxl $25, %r8d, %edx
  16546. vpalignr $4, %ymm3, %ymm0, %ymm4
  16547. # rnd_0: 2 - 2
  16548. andl %r8d, %eax
  16549. xorl %ecx, %edx
  16550. rorxl $13, %r12d, %ecx
  16551. vpsrld $7, %ymm5, %ymm6
  16552. # rnd_0: 3 - 3
  16553. addl %edx, %r11d
  16554. rorxl $2, %r12d, %edx
  16555. xorl %r10d, %eax
  16556. vpslld $25, %ymm5, %ymm7
  16557. # rnd_0: 4 - 4
  16558. xorl %edx, %ecx
  16559. rorxl $22, %r12d, %edx
  16560. addl %eax, %r11d
  16561. vpsrld $18, %ymm5, %ymm8
  16562. # rnd_0: 5 - 5
  16563. xorl %ecx, %edx
  16564. movl %r13d, %eax
  16565. addl %r11d, %r15d
  16566. vpslld $14, %ymm5, %ymm9
  16567. # rnd_0: 6 - 6
  16568. xorl %r12d, %eax
  16569. addl %edx, %r11d
  16570. andl %eax, %ebx
  16571. vpor %ymm7, %ymm6, %ymm6
  16572. # rnd_0: 7 - 7
  16573. xorl %r13d, %ebx
  16574. rorxl $6, %r15d, %edx
  16575. addl %ebx, %r11d
  16576. vpor %ymm9, %ymm8, %ymm8
  16577. # rnd_1: 0 - 0
  16578. movl %r8d, %ebx
  16579. rorxl $11, %r15d, %ecx
  16580. addl 36(%rsp), %r10d
  16581. vpsrld $3, %ymm5, %ymm9
  16582. # rnd_1: 1 - 1
  16583. xorl %edx, %ecx
  16584. xorl %r9d, %ebx
  16585. rorxl $25, %r15d, %edx
  16586. vpxor %ymm8, %ymm6, %ymm6
  16587. # rnd_1: 2 - 2
  16588. andl %r15d, %ebx
  16589. xorl %ecx, %edx
  16590. rorxl $13, %r11d, %ecx
  16591. vpshufd $0xfa, %ymm0, %ymm7
  16592. # rnd_1: 3 - 3
  16593. addl %edx, %r10d
  16594. rorxl $2, %r11d, %edx
  16595. xorl %r9d, %ebx
  16596. vpxor %ymm6, %ymm9, %ymm5
  16597. # rnd_1: 4 - 4
  16598. xorl %edx, %ecx
  16599. rorxl $22, %r11d, %edx
  16600. addl %ebx, %r10d
  16601. vpsrld $10, %ymm7, %ymm8
  16602. # rnd_1: 5 - 5
  16603. xorl %ecx, %edx
  16604. addl %r10d, %r14d
  16605. movl %r12d, %ebx
  16606. vpsrlq $19, %ymm7, %ymm6
  16607. # rnd_1: 6 - 6
  16608. xorl %r11d, %ebx
  16609. addl %edx, %r10d
  16610. andl %ebx, %eax
  16611. vpsrlq $0x11, %ymm7, %ymm7
  16612. # rnd_1: 7 - 7
  16613. xorl %r12d, %eax
  16614. rorxl $6, %r14d, %edx
  16615. addl %eax, %r10d
  16616. vpaddd %ymm1, %ymm4, %ymm4
  16617. # rnd_0: 0 - 0
  16618. movl %r15d, %eax
  16619. rorxl $11, %r14d, %ecx
  16620. addl 40(%rsp), %r9d
  16621. vpxor %ymm7, %ymm6, %ymm6
  16622. # rnd_0: 1 - 1
  16623. xorl %edx, %ecx
  16624. xorl %r8d, %eax
  16625. rorxl $25, %r14d, %edx
  16626. vpxor %ymm6, %ymm8, %ymm8
  16627. # rnd_0: 2 - 2
  16628. andl %r14d, %eax
  16629. xorl %ecx, %edx
  16630. rorxl $13, %r10d, %ecx
  16631. vpaddd %ymm5, %ymm4, %ymm4
  16632. # rnd_0: 3 - 3
  16633. addl %edx, %r9d
  16634. rorxl $2, %r10d, %edx
  16635. xorl %r8d, %eax
  16636. vpshufb %ymm11, %ymm8, %ymm8
  16637. # rnd_0: 4 - 4
  16638. xorl %edx, %ecx
  16639. rorxl $22, %r10d, %edx
  16640. addl %eax, %r9d
  16641. vpaddd %ymm8, %ymm4, %ymm4
  16642. # rnd_0: 5 - 5
  16643. xorl %ecx, %edx
  16644. movl %r11d, %eax
  16645. addl %r9d, %r13d
  16646. vpshufd $0x50, %ymm4, %ymm6
  16647. # rnd_0: 6 - 6
  16648. xorl %r10d, %eax
  16649. addl %edx, %r9d
  16650. andl %eax, %ebx
  16651. vpsrlq $0x11, %ymm6, %ymm8
  16652. # rnd_0: 7 - 7
  16653. xorl %r11d, %ebx
  16654. rorxl $6, %r13d, %edx
  16655. addl %ebx, %r9d
  16656. vpsrlq $19, %ymm6, %ymm7
  16657. # rnd_1: 0 - 0
  16658. movl %r14d, %ebx
  16659. rorxl $11, %r13d, %ecx
  16660. addl 44(%rsp), %r8d
  16661. vpsrld $10, %ymm6, %ymm9
  16662. # rnd_1: 1 - 1
  16663. xorl %edx, %ecx
  16664. xorl %r15d, %ebx
  16665. rorxl $25, %r13d, %edx
  16666. vpxor %ymm7, %ymm8, %ymm8
  16667. # rnd_1: 2 - 2
  16668. andl %r13d, %ebx
  16669. xorl %ecx, %edx
  16670. rorxl $13, %r9d, %ecx
  16671. vpxor %ymm8, %ymm9, %ymm9
  16672. # rnd_1: 3 - 3
  16673. addl %edx, %r8d
  16674. rorxl $2, %r9d, %edx
  16675. xorl %r15d, %ebx
  16676. vpshufb %ymm12, %ymm9, %ymm9
  16677. # rnd_1: 4 - 4
  16678. xorl %edx, %ecx
  16679. rorxl $22, %r9d, %edx
  16680. addl %ebx, %r8d
  16681. vpaddd %ymm4, %ymm9, %ymm1
  16682. # rnd_1: 5 - 5
  16683. xorl %ecx, %edx
  16684. addl %r8d, %r12d
  16685. movl %r10d, %ebx
  16686. vpaddd 160+L_avx2_rorx_sha256_k(%rip), %ymm1, %ymm4
  16687. # rnd_1: 6 - 6
  16688. xorl %r9d, %ebx
  16689. addl %edx, %r8d
  16690. andl %ebx, %eax
  16691. # rnd_1: 7 - 7
  16692. xorl %r10d, %eax
  16693. rorxl $6, %r12d, %edx
  16694. addl %eax, %r8d
  16695. vmovdqu %ymm4, 160(%rsp)
  16696. # rnd_0: 0 - 0
  16697. movl %r13d, %eax
  16698. rorxl $11, %r12d, %ecx
  16699. addl 64(%rsp), %r15d
  16700. vpalignr $4, %ymm2, %ymm3, %ymm5
  16701. # rnd_0: 1 - 1
  16702. xorl %edx, %ecx
  16703. xorl %r14d, %eax
  16704. rorxl $25, %r12d, %edx
  16705. vpalignr $4, %ymm0, %ymm1, %ymm4
  16706. # rnd_0: 2 - 2
  16707. andl %r12d, %eax
  16708. xorl %ecx, %edx
  16709. rorxl $13, %r8d, %ecx
  16710. vpsrld $7, %ymm5, %ymm6
  16711. # rnd_0: 3 - 3
  16712. addl %edx, %r15d
  16713. rorxl $2, %r8d, %edx
  16714. xorl %r14d, %eax
  16715. vpslld $25, %ymm5, %ymm7
  16716. # rnd_0: 4 - 4
  16717. xorl %edx, %ecx
  16718. rorxl $22, %r8d, %edx
  16719. addl %eax, %r15d
  16720. vpsrld $18, %ymm5, %ymm8
  16721. # rnd_0: 5 - 5
  16722. xorl %ecx, %edx
  16723. movl %r9d, %eax
  16724. addl %r15d, %r11d
  16725. vpslld $14, %ymm5, %ymm9
  16726. # rnd_0: 6 - 6
  16727. xorl %r8d, %eax
  16728. addl %edx, %r15d
  16729. andl %eax, %ebx
  16730. vpor %ymm7, %ymm6, %ymm6
  16731. # rnd_0: 7 - 7
  16732. xorl %r9d, %ebx
  16733. rorxl $6, %r11d, %edx
  16734. addl %ebx, %r15d
  16735. vpor %ymm9, %ymm8, %ymm8
  16736. # rnd_1: 0 - 0
  16737. movl %r12d, %ebx
  16738. rorxl $11, %r11d, %ecx
  16739. addl 68(%rsp), %r14d
  16740. vpsrld $3, %ymm5, %ymm9
  16741. # rnd_1: 1 - 1
  16742. xorl %edx, %ecx
  16743. xorl %r13d, %ebx
  16744. rorxl $25, %r11d, %edx
  16745. vpxor %ymm8, %ymm6, %ymm6
  16746. # rnd_1: 2 - 2
  16747. andl %r11d, %ebx
  16748. xorl %ecx, %edx
  16749. rorxl $13, %r15d, %ecx
  16750. vpshufd $0xfa, %ymm1, %ymm7
  16751. # rnd_1: 3 - 3
  16752. addl %edx, %r14d
  16753. rorxl $2, %r15d, %edx
  16754. xorl %r13d, %ebx
  16755. vpxor %ymm6, %ymm9, %ymm5
  16756. # rnd_1: 4 - 4
  16757. xorl %edx, %ecx
  16758. rorxl $22, %r15d, %edx
  16759. addl %ebx, %r14d
  16760. vpsrld $10, %ymm7, %ymm8
  16761. # rnd_1: 5 - 5
  16762. xorl %ecx, %edx
  16763. addl %r14d, %r10d
  16764. movl %r8d, %ebx
  16765. vpsrlq $19, %ymm7, %ymm6
  16766. # rnd_1: 6 - 6
  16767. xorl %r15d, %ebx
  16768. addl %edx, %r14d
  16769. andl %ebx, %eax
  16770. vpsrlq $0x11, %ymm7, %ymm7
  16771. # rnd_1: 7 - 7
  16772. xorl %r8d, %eax
  16773. rorxl $6, %r10d, %edx
  16774. addl %eax, %r14d
  16775. vpaddd %ymm2, %ymm4, %ymm4
  16776. # rnd_0: 0 - 0
  16777. movl %r11d, %eax
  16778. rorxl $11, %r10d, %ecx
  16779. addl 72(%rsp), %r13d
  16780. vpxor %ymm7, %ymm6, %ymm6
  16781. # rnd_0: 1 - 1
  16782. xorl %edx, %ecx
  16783. xorl %r12d, %eax
  16784. rorxl $25, %r10d, %edx
  16785. vpxor %ymm6, %ymm8, %ymm8
  16786. # rnd_0: 2 - 2
  16787. andl %r10d, %eax
  16788. xorl %ecx, %edx
  16789. rorxl $13, %r14d, %ecx
  16790. vpaddd %ymm5, %ymm4, %ymm4
  16791. # rnd_0: 3 - 3
  16792. addl %edx, %r13d
  16793. rorxl $2, %r14d, %edx
  16794. xorl %r12d, %eax
  16795. vpshufb %ymm11, %ymm8, %ymm8
  16796. # rnd_0: 4 - 4
  16797. xorl %edx, %ecx
  16798. rorxl $22, %r14d, %edx
  16799. addl %eax, %r13d
  16800. vpaddd %ymm8, %ymm4, %ymm4
  16801. # rnd_0: 5 - 5
  16802. xorl %ecx, %edx
  16803. movl %r15d, %eax
  16804. addl %r13d, %r9d
  16805. vpshufd $0x50, %ymm4, %ymm6
  16806. # rnd_0: 6 - 6
  16807. xorl %r14d, %eax
  16808. addl %edx, %r13d
  16809. andl %eax, %ebx
  16810. vpsrlq $0x11, %ymm6, %ymm8
  16811. # rnd_0: 7 - 7
  16812. xorl %r15d, %ebx
  16813. rorxl $6, %r9d, %edx
  16814. addl %ebx, %r13d
  16815. vpsrlq $19, %ymm6, %ymm7
  16816. # rnd_1: 0 - 0
  16817. movl %r10d, %ebx
  16818. rorxl $11, %r9d, %ecx
  16819. addl 76(%rsp), %r12d
  16820. vpsrld $10, %ymm6, %ymm9
  16821. # rnd_1: 1 - 1
  16822. xorl %edx, %ecx
  16823. xorl %r11d, %ebx
  16824. rorxl $25, %r9d, %edx
  16825. vpxor %ymm7, %ymm8, %ymm8
  16826. # rnd_1: 2 - 2
  16827. andl %r9d, %ebx
  16828. xorl %ecx, %edx
  16829. rorxl $13, %r13d, %ecx
  16830. vpxor %ymm8, %ymm9, %ymm9
  16831. # rnd_1: 3 - 3
  16832. addl %edx, %r12d
  16833. rorxl $2, %r13d, %edx
  16834. xorl %r11d, %ebx
  16835. vpshufb %ymm12, %ymm9, %ymm9
  16836. # rnd_1: 4 - 4
  16837. xorl %edx, %ecx
  16838. rorxl $22, %r13d, %edx
  16839. addl %ebx, %r12d
  16840. vpaddd %ymm4, %ymm9, %ymm2
  16841. # rnd_1: 5 - 5
  16842. xorl %ecx, %edx
  16843. addl %r12d, %r8d
  16844. movl %r14d, %ebx
  16845. vpaddd 192+L_avx2_rorx_sha256_k(%rip), %ymm2, %ymm4
  16846. # rnd_1: 6 - 6
  16847. xorl %r13d, %ebx
  16848. addl %edx, %r12d
  16849. andl %ebx, %eax
  16850. # rnd_1: 7 - 7
  16851. xorl %r14d, %eax
  16852. rorxl $6, %r8d, %edx
  16853. addl %eax, %r12d
  16854. vmovdqu %ymm4, 192(%rsp)
  16855. # rnd_0: 0 - 0
  16856. movl %r9d, %eax
  16857. rorxl $11, %r8d, %ecx
  16858. addl 96(%rsp), %r11d
  16859. vpalignr $4, %ymm3, %ymm0, %ymm5
  16860. # rnd_0: 1 - 1
  16861. xorl %edx, %ecx
  16862. xorl %r10d, %eax
  16863. rorxl $25, %r8d, %edx
  16864. vpalignr $4, %ymm1, %ymm2, %ymm4
  16865. # rnd_0: 2 - 2
  16866. andl %r8d, %eax
  16867. xorl %ecx, %edx
  16868. rorxl $13, %r12d, %ecx
  16869. vpsrld $7, %ymm5, %ymm6
  16870. # rnd_0: 3 - 3
  16871. addl %edx, %r11d
  16872. rorxl $2, %r12d, %edx
  16873. xorl %r10d, %eax
  16874. vpslld $25, %ymm5, %ymm7
  16875. # rnd_0: 4 - 4
  16876. xorl %edx, %ecx
  16877. rorxl $22, %r12d, %edx
  16878. addl %eax, %r11d
  16879. vpsrld $18, %ymm5, %ymm8
  16880. # rnd_0: 5 - 5
  16881. xorl %ecx, %edx
  16882. movl %r13d, %eax
  16883. addl %r11d, %r15d
  16884. vpslld $14, %ymm5, %ymm9
  16885. # rnd_0: 6 - 6
  16886. xorl %r12d, %eax
  16887. addl %edx, %r11d
  16888. andl %eax, %ebx
  16889. vpor %ymm7, %ymm6, %ymm6
  16890. # rnd_0: 7 - 7
  16891. xorl %r13d, %ebx
  16892. rorxl $6, %r15d, %edx
  16893. addl %ebx, %r11d
  16894. vpor %ymm9, %ymm8, %ymm8
  16895. # rnd_1: 0 - 0
  16896. movl %r8d, %ebx
  16897. rorxl $11, %r15d, %ecx
  16898. addl 100(%rsp), %r10d
  16899. vpsrld $3, %ymm5, %ymm9
  16900. # rnd_1: 1 - 1
  16901. xorl %edx, %ecx
  16902. xorl %r9d, %ebx
  16903. rorxl $25, %r15d, %edx
  16904. vpxor %ymm8, %ymm6, %ymm6
  16905. # rnd_1: 2 - 2
  16906. andl %r15d, %ebx
  16907. xorl %ecx, %edx
  16908. rorxl $13, %r11d, %ecx
  16909. vpshufd $0xfa, %ymm2, %ymm7
  16910. # rnd_1: 3 - 3
  16911. addl %edx, %r10d
  16912. rorxl $2, %r11d, %edx
  16913. xorl %r9d, %ebx
  16914. vpxor %ymm6, %ymm9, %ymm5
  16915. # rnd_1: 4 - 4
  16916. xorl %edx, %ecx
  16917. rorxl $22, %r11d, %edx
  16918. addl %ebx, %r10d
  16919. vpsrld $10, %ymm7, %ymm8
  16920. # rnd_1: 5 - 5
  16921. xorl %ecx, %edx
  16922. addl %r10d, %r14d
  16923. movl %r12d, %ebx
  16924. vpsrlq $19, %ymm7, %ymm6
  16925. # rnd_1: 6 - 6
  16926. xorl %r11d, %ebx
  16927. addl %edx, %r10d
  16928. andl %ebx, %eax
  16929. vpsrlq $0x11, %ymm7, %ymm7
  16930. # rnd_1: 7 - 7
  16931. xorl %r12d, %eax
  16932. rorxl $6, %r14d, %edx
  16933. addl %eax, %r10d
  16934. vpaddd %ymm3, %ymm4, %ymm4
  16935. # rnd_0: 0 - 0
  16936. movl %r15d, %eax
  16937. rorxl $11, %r14d, %ecx
  16938. addl 104(%rsp), %r9d
  16939. vpxor %ymm7, %ymm6, %ymm6
  16940. # rnd_0: 1 - 1
  16941. xorl %edx, %ecx
  16942. xorl %r8d, %eax
  16943. rorxl $25, %r14d, %edx
  16944. vpxor %ymm6, %ymm8, %ymm8
  16945. # rnd_0: 2 - 2
  16946. andl %r14d, %eax
  16947. xorl %ecx, %edx
  16948. rorxl $13, %r10d, %ecx
  16949. vpaddd %ymm5, %ymm4, %ymm4
  16950. # rnd_0: 3 - 3
  16951. addl %edx, %r9d
  16952. rorxl $2, %r10d, %edx
  16953. xorl %r8d, %eax
  16954. vpshufb %ymm11, %ymm8, %ymm8
  16955. # rnd_0: 4 - 4
  16956. xorl %edx, %ecx
  16957. rorxl $22, %r10d, %edx
  16958. addl %eax, %r9d
  16959. vpaddd %ymm8, %ymm4, %ymm4
  16960. # rnd_0: 5 - 5
  16961. xorl %ecx, %edx
  16962. movl %r11d, %eax
  16963. addl %r9d, %r13d
  16964. vpshufd $0x50, %ymm4, %ymm6
  16965. # rnd_0: 6 - 6
  16966. xorl %r10d, %eax
  16967. addl %edx, %r9d
  16968. andl %eax, %ebx
  16969. vpsrlq $0x11, %ymm6, %ymm8
  16970. # rnd_0: 7 - 7
  16971. xorl %r11d, %ebx
  16972. rorxl $6, %r13d, %edx
  16973. addl %ebx, %r9d
  16974. vpsrlq $19, %ymm6, %ymm7
  16975. # rnd_1: 0 - 0
  16976. movl %r14d, %ebx
  16977. rorxl $11, %r13d, %ecx
  16978. addl 108(%rsp), %r8d
  16979. vpsrld $10, %ymm6, %ymm9
  16980. # rnd_1: 1 - 1
  16981. xorl %edx, %ecx
  16982. xorl %r15d, %ebx
  16983. rorxl $25, %r13d, %edx
  16984. vpxor %ymm7, %ymm8, %ymm8
  16985. # rnd_1: 2 - 2
  16986. andl %r13d, %ebx
  16987. xorl %ecx, %edx
  16988. rorxl $13, %r9d, %ecx
  16989. vpxor %ymm8, %ymm9, %ymm9
  16990. # rnd_1: 3 - 3
  16991. addl %edx, %r8d
  16992. rorxl $2, %r9d, %edx
  16993. xorl %r15d, %ebx
  16994. vpshufb %ymm12, %ymm9, %ymm9
  16995. # rnd_1: 4 - 4
  16996. xorl %edx, %ecx
  16997. rorxl $22, %r9d, %edx
  16998. addl %ebx, %r8d
  16999. vpaddd %ymm4, %ymm9, %ymm3
  17000. # rnd_1: 5 - 5
  17001. xorl %ecx, %edx
  17002. addl %r8d, %r12d
  17003. movl %r10d, %ebx
  17004. vpaddd 224+L_avx2_rorx_sha256_k(%rip), %ymm3, %ymm4
  17005. # rnd_1: 6 - 6
  17006. xorl %r9d, %ebx
  17007. addl %edx, %r8d
  17008. andl %ebx, %eax
  17009. # rnd_1: 7 - 7
  17010. xorl %r10d, %eax
  17011. rorxl $6, %r12d, %edx
  17012. addl %eax, %r8d
  17013. vmovdqu %ymm4, 224(%rsp)
  17014. # rnd_0: 0 - 0
  17015. movl %r13d, %eax
  17016. rorxl $11, %r12d, %ecx
  17017. addl 128(%rsp), %r15d
  17018. vpalignr $4, %ymm0, %ymm1, %ymm5
  17019. # rnd_0: 1 - 1
  17020. xorl %edx, %ecx
  17021. xorl %r14d, %eax
  17022. rorxl $25, %r12d, %edx
  17023. vpalignr $4, %ymm2, %ymm3, %ymm4
  17024. # rnd_0: 2 - 2
  17025. andl %r12d, %eax
  17026. xorl %ecx, %edx
  17027. rorxl $13, %r8d, %ecx
  17028. vpsrld $7, %ymm5, %ymm6
  17029. # rnd_0: 3 - 3
  17030. addl %edx, %r15d
  17031. rorxl $2, %r8d, %edx
  17032. xorl %r14d, %eax
  17033. vpslld $25, %ymm5, %ymm7
  17034. # rnd_0: 4 - 4
  17035. xorl %edx, %ecx
  17036. rorxl $22, %r8d, %edx
  17037. addl %eax, %r15d
  17038. vpsrld $18, %ymm5, %ymm8
  17039. # rnd_0: 5 - 5
  17040. xorl %ecx, %edx
  17041. movl %r9d, %eax
  17042. addl %r15d, %r11d
  17043. vpslld $14, %ymm5, %ymm9
  17044. # rnd_0: 6 - 6
  17045. xorl %r8d, %eax
  17046. addl %edx, %r15d
  17047. andl %eax, %ebx
  17048. vpor %ymm7, %ymm6, %ymm6
  17049. # rnd_0: 7 - 7
  17050. xorl %r9d, %ebx
  17051. rorxl $6, %r11d, %edx
  17052. addl %ebx, %r15d
  17053. vpor %ymm9, %ymm8, %ymm8
  17054. # rnd_1: 0 - 0
  17055. movl %r12d, %ebx
  17056. rorxl $11, %r11d, %ecx
  17057. addl 132(%rsp), %r14d
  17058. vpsrld $3, %ymm5, %ymm9
  17059. # rnd_1: 1 - 1
  17060. xorl %edx, %ecx
  17061. xorl %r13d, %ebx
  17062. rorxl $25, %r11d, %edx
  17063. vpxor %ymm8, %ymm6, %ymm6
  17064. # rnd_1: 2 - 2
  17065. andl %r11d, %ebx
  17066. xorl %ecx, %edx
  17067. rorxl $13, %r15d, %ecx
  17068. vpshufd $0xfa, %ymm3, %ymm7
  17069. # rnd_1: 3 - 3
  17070. addl %edx, %r14d
  17071. rorxl $2, %r15d, %edx
  17072. xorl %r13d, %ebx
  17073. vpxor %ymm6, %ymm9, %ymm5
  17074. # rnd_1: 4 - 4
  17075. xorl %edx, %ecx
  17076. rorxl $22, %r15d, %edx
  17077. addl %ebx, %r14d
  17078. vpsrld $10, %ymm7, %ymm8
  17079. # rnd_1: 5 - 5
  17080. xorl %ecx, %edx
  17081. addl %r14d, %r10d
  17082. movl %r8d, %ebx
  17083. vpsrlq $19, %ymm7, %ymm6
  17084. # rnd_1: 6 - 6
  17085. xorl %r15d, %ebx
  17086. addl %edx, %r14d
  17087. andl %ebx, %eax
  17088. vpsrlq $0x11, %ymm7, %ymm7
  17089. # rnd_1: 7 - 7
  17090. xorl %r8d, %eax
  17091. rorxl $6, %r10d, %edx
  17092. addl %eax, %r14d
  17093. vpaddd %ymm0, %ymm4, %ymm4
  17094. # rnd_0: 0 - 0
  17095. movl %r11d, %eax
  17096. rorxl $11, %r10d, %ecx
  17097. addl 136(%rsp), %r13d
  17098. vpxor %ymm7, %ymm6, %ymm6
  17099. # rnd_0: 1 - 1
  17100. xorl %edx, %ecx
  17101. xorl %r12d, %eax
  17102. rorxl $25, %r10d, %edx
  17103. vpxor %ymm6, %ymm8, %ymm8
  17104. # rnd_0: 2 - 2
  17105. andl %r10d, %eax
  17106. xorl %ecx, %edx
  17107. rorxl $13, %r14d, %ecx
  17108. vpaddd %ymm5, %ymm4, %ymm4
  17109. # rnd_0: 3 - 3
  17110. addl %edx, %r13d
  17111. rorxl $2, %r14d, %edx
  17112. xorl %r12d, %eax
  17113. vpshufb %ymm11, %ymm8, %ymm8
  17114. # rnd_0: 4 - 4
  17115. xorl %edx, %ecx
  17116. rorxl $22, %r14d, %edx
  17117. addl %eax, %r13d
  17118. vpaddd %ymm8, %ymm4, %ymm4
  17119. # rnd_0: 5 - 5
  17120. xorl %ecx, %edx
  17121. movl %r15d, %eax
  17122. addl %r13d, %r9d
  17123. vpshufd $0x50, %ymm4, %ymm6
  17124. # rnd_0: 6 - 6
  17125. xorl %r14d, %eax
  17126. addl %edx, %r13d
  17127. andl %eax, %ebx
  17128. vpsrlq $0x11, %ymm6, %ymm8
  17129. # rnd_0: 7 - 7
  17130. xorl %r15d, %ebx
  17131. rorxl $6, %r9d, %edx
  17132. addl %ebx, %r13d
  17133. vpsrlq $19, %ymm6, %ymm7
  17134. # rnd_1: 0 - 0
  17135. movl %r10d, %ebx
  17136. rorxl $11, %r9d, %ecx
  17137. addl 140(%rsp), %r12d
  17138. vpsrld $10, %ymm6, %ymm9
  17139. # rnd_1: 1 - 1
  17140. xorl %edx, %ecx
  17141. xorl %r11d, %ebx
  17142. rorxl $25, %r9d, %edx
  17143. vpxor %ymm7, %ymm8, %ymm8
  17144. # rnd_1: 2 - 2
  17145. andl %r9d, %ebx
  17146. xorl %ecx, %edx
  17147. rorxl $13, %r13d, %ecx
  17148. vpxor %ymm8, %ymm9, %ymm9
  17149. # rnd_1: 3 - 3
  17150. addl %edx, %r12d
  17151. rorxl $2, %r13d, %edx
  17152. xorl %r11d, %ebx
  17153. vpshufb %ymm12, %ymm9, %ymm9
  17154. # rnd_1: 4 - 4
  17155. xorl %edx, %ecx
  17156. rorxl $22, %r13d, %edx
  17157. addl %ebx, %r12d
  17158. vpaddd %ymm4, %ymm9, %ymm0
  17159. # rnd_1: 5 - 5
  17160. xorl %ecx, %edx
  17161. addl %r12d, %r8d
  17162. movl %r14d, %ebx
  17163. vpaddd 256+L_avx2_rorx_sha256_k(%rip), %ymm0, %ymm4
  17164. # rnd_1: 6 - 6
  17165. xorl %r13d, %ebx
  17166. addl %edx, %r12d
  17167. andl %ebx, %eax
  17168. # rnd_1: 7 - 7
  17169. xorl %r14d, %eax
  17170. rorxl $6, %r8d, %edx
  17171. addl %eax, %r12d
  17172. vmovdqu %ymm4, 256(%rsp)
  17173. # rnd_0: 0 - 0
  17174. movl %r9d, %eax
  17175. rorxl $11, %r8d, %ecx
  17176. addl 160(%rsp), %r11d
  17177. vpalignr $4, %ymm1, %ymm2, %ymm5
  17178. # rnd_0: 1 - 1
  17179. xorl %edx, %ecx
  17180. xorl %r10d, %eax
  17181. rorxl $25, %r8d, %edx
  17182. vpalignr $4, %ymm3, %ymm0, %ymm4
  17183. # rnd_0: 2 - 2
  17184. andl %r8d, %eax
  17185. xorl %ecx, %edx
  17186. rorxl $13, %r12d, %ecx
  17187. vpsrld $7, %ymm5, %ymm6
  17188. # rnd_0: 3 - 3
  17189. addl %edx, %r11d
  17190. rorxl $2, %r12d, %edx
  17191. xorl %r10d, %eax
  17192. vpslld $25, %ymm5, %ymm7
  17193. # rnd_0: 4 - 4
  17194. xorl %edx, %ecx
  17195. rorxl $22, %r12d, %edx
  17196. addl %eax, %r11d
  17197. vpsrld $18, %ymm5, %ymm8
  17198. # rnd_0: 5 - 5
  17199. xorl %ecx, %edx
  17200. movl %r13d, %eax
  17201. addl %r11d, %r15d
  17202. vpslld $14, %ymm5, %ymm9
  17203. # rnd_0: 6 - 6
  17204. xorl %r12d, %eax
  17205. addl %edx, %r11d
  17206. andl %eax, %ebx
  17207. vpor %ymm7, %ymm6, %ymm6
  17208. # rnd_0: 7 - 7
  17209. xorl %r13d, %ebx
  17210. rorxl $6, %r15d, %edx
  17211. addl %ebx, %r11d
  17212. vpor %ymm9, %ymm8, %ymm8
  17213. # rnd_1: 0 - 0
  17214. movl %r8d, %ebx
  17215. rorxl $11, %r15d, %ecx
  17216. addl 164(%rsp), %r10d
  17217. vpsrld $3, %ymm5, %ymm9
  17218. # rnd_1: 1 - 1
  17219. xorl %edx, %ecx
  17220. xorl %r9d, %ebx
  17221. rorxl $25, %r15d, %edx
  17222. vpxor %ymm8, %ymm6, %ymm6
  17223. # rnd_1: 2 - 2
  17224. andl %r15d, %ebx
  17225. xorl %ecx, %edx
  17226. rorxl $13, %r11d, %ecx
  17227. vpshufd $0xfa, %ymm0, %ymm7
  17228. # rnd_1: 3 - 3
  17229. addl %edx, %r10d
  17230. rorxl $2, %r11d, %edx
  17231. xorl %r9d, %ebx
  17232. vpxor %ymm6, %ymm9, %ymm5
  17233. # rnd_1: 4 - 4
  17234. xorl %edx, %ecx
  17235. rorxl $22, %r11d, %edx
  17236. addl %ebx, %r10d
  17237. vpsrld $10, %ymm7, %ymm8
  17238. # rnd_1: 5 - 5
  17239. xorl %ecx, %edx
  17240. addl %r10d, %r14d
  17241. movl %r12d, %ebx
  17242. vpsrlq $19, %ymm7, %ymm6
  17243. # rnd_1: 6 - 6
  17244. xorl %r11d, %ebx
  17245. addl %edx, %r10d
  17246. andl %ebx, %eax
  17247. vpsrlq $0x11, %ymm7, %ymm7
  17248. # rnd_1: 7 - 7
  17249. xorl %r12d, %eax
  17250. rorxl $6, %r14d, %edx
  17251. addl %eax, %r10d
  17252. vpaddd %ymm1, %ymm4, %ymm4
  17253. # rnd_0: 0 - 0
  17254. movl %r15d, %eax
  17255. rorxl $11, %r14d, %ecx
  17256. addl 168(%rsp), %r9d
  17257. vpxor %ymm7, %ymm6, %ymm6
  17258. # rnd_0: 1 - 1
  17259. xorl %edx, %ecx
  17260. xorl %r8d, %eax
  17261. rorxl $25, %r14d, %edx
  17262. vpxor %ymm6, %ymm8, %ymm8
  17263. # rnd_0: 2 - 2
  17264. andl %r14d, %eax
  17265. xorl %ecx, %edx
  17266. rorxl $13, %r10d, %ecx
  17267. vpaddd %ymm5, %ymm4, %ymm4
  17268. # rnd_0: 3 - 3
  17269. addl %edx, %r9d
  17270. rorxl $2, %r10d, %edx
  17271. xorl %r8d, %eax
  17272. vpshufb %ymm11, %ymm8, %ymm8
  17273. # rnd_0: 4 - 4
  17274. xorl %edx, %ecx
  17275. rorxl $22, %r10d, %edx
  17276. addl %eax, %r9d
  17277. vpaddd %ymm8, %ymm4, %ymm4
  17278. # rnd_0: 5 - 5
  17279. xorl %ecx, %edx
  17280. movl %r11d, %eax
  17281. addl %r9d, %r13d
  17282. vpshufd $0x50, %ymm4, %ymm6
  17283. # rnd_0: 6 - 6
  17284. xorl %r10d, %eax
  17285. addl %edx, %r9d
  17286. andl %eax, %ebx
  17287. vpsrlq $0x11, %ymm6, %ymm8
  17288. # rnd_0: 7 - 7
  17289. xorl %r11d, %ebx
  17290. rorxl $6, %r13d, %edx
  17291. addl %ebx, %r9d
  17292. vpsrlq $19, %ymm6, %ymm7
  17293. # rnd_1: 0 - 0
  17294. movl %r14d, %ebx
  17295. rorxl $11, %r13d, %ecx
  17296. addl 172(%rsp), %r8d
  17297. vpsrld $10, %ymm6, %ymm9
  17298. # rnd_1: 1 - 1
  17299. xorl %edx, %ecx
  17300. xorl %r15d, %ebx
  17301. rorxl $25, %r13d, %edx
  17302. vpxor %ymm7, %ymm8, %ymm8
  17303. # rnd_1: 2 - 2
  17304. andl %r13d, %ebx
  17305. xorl %ecx, %edx
  17306. rorxl $13, %r9d, %ecx
  17307. vpxor %ymm8, %ymm9, %ymm9
  17308. # rnd_1: 3 - 3
  17309. addl %edx, %r8d
  17310. rorxl $2, %r9d, %edx
  17311. xorl %r15d, %ebx
  17312. vpshufb %ymm12, %ymm9, %ymm9
  17313. # rnd_1: 4 - 4
  17314. xorl %edx, %ecx
  17315. rorxl $22, %r9d, %edx
  17316. addl %ebx, %r8d
  17317. vpaddd %ymm4, %ymm9, %ymm1
  17318. # rnd_1: 5 - 5
  17319. xorl %ecx, %edx
  17320. addl %r8d, %r12d
  17321. movl %r10d, %ebx
  17322. vpaddd 288+L_avx2_rorx_sha256_k(%rip), %ymm1, %ymm4
  17323. # rnd_1: 6 - 6
  17324. xorl %r9d, %ebx
  17325. addl %edx, %r8d
  17326. andl %ebx, %eax
  17327. # rnd_1: 7 - 7
  17328. xorl %r10d, %eax
  17329. rorxl $6, %r12d, %edx
  17330. addl %eax, %r8d
  17331. vmovdqu %ymm4, 288(%rsp)
  17332. # rnd_0: 0 - 0
  17333. movl %r13d, %eax
  17334. rorxl $11, %r12d, %ecx
  17335. addl 192(%rsp), %r15d
  17336. vpalignr $4, %ymm2, %ymm3, %ymm5
  17337. # rnd_0: 1 - 1
  17338. xorl %edx, %ecx
  17339. xorl %r14d, %eax
  17340. rorxl $25, %r12d, %edx
  17341. vpalignr $4, %ymm0, %ymm1, %ymm4
  17342. # rnd_0: 2 - 2
  17343. andl %r12d, %eax
  17344. xorl %ecx, %edx
  17345. rorxl $13, %r8d, %ecx
  17346. vpsrld $7, %ymm5, %ymm6
  17347. # rnd_0: 3 - 3
  17348. addl %edx, %r15d
  17349. rorxl $2, %r8d, %edx
  17350. xorl %r14d, %eax
  17351. vpslld $25, %ymm5, %ymm7
  17352. # rnd_0: 4 - 4
  17353. xorl %edx, %ecx
  17354. rorxl $22, %r8d, %edx
  17355. addl %eax, %r15d
  17356. vpsrld $18, %ymm5, %ymm8
  17357. # rnd_0: 5 - 5
  17358. xorl %ecx, %edx
  17359. movl %r9d, %eax
  17360. addl %r15d, %r11d
  17361. vpslld $14, %ymm5, %ymm9
  17362. # rnd_0: 6 - 6
  17363. xorl %r8d, %eax
  17364. addl %edx, %r15d
  17365. andl %eax, %ebx
  17366. vpor %ymm7, %ymm6, %ymm6
  17367. # rnd_0: 7 - 7
  17368. xorl %r9d, %ebx
  17369. rorxl $6, %r11d, %edx
  17370. addl %ebx, %r15d
  17371. vpor %ymm9, %ymm8, %ymm8
  17372. # rnd_1: 0 - 0
  17373. movl %r12d, %ebx
  17374. rorxl $11, %r11d, %ecx
  17375. addl 196(%rsp), %r14d
  17376. vpsrld $3, %ymm5, %ymm9
  17377. # rnd_1: 1 - 1
  17378. xorl %edx, %ecx
  17379. xorl %r13d, %ebx
  17380. rorxl $25, %r11d, %edx
  17381. vpxor %ymm8, %ymm6, %ymm6
  17382. # rnd_1: 2 - 2
  17383. andl %r11d, %ebx
  17384. xorl %ecx, %edx
  17385. rorxl $13, %r15d, %ecx
  17386. vpshufd $0xfa, %ymm1, %ymm7
  17387. # rnd_1: 3 - 3
  17388. addl %edx, %r14d
  17389. rorxl $2, %r15d, %edx
  17390. xorl %r13d, %ebx
  17391. vpxor %ymm6, %ymm9, %ymm5
  17392. # rnd_1: 4 - 4
  17393. xorl %edx, %ecx
  17394. rorxl $22, %r15d, %edx
  17395. addl %ebx, %r14d
  17396. vpsrld $10, %ymm7, %ymm8
  17397. # rnd_1: 5 - 5
  17398. xorl %ecx, %edx
  17399. addl %r14d, %r10d
  17400. movl %r8d, %ebx
  17401. vpsrlq $19, %ymm7, %ymm6
  17402. # rnd_1: 6 - 6
  17403. xorl %r15d, %ebx
  17404. addl %edx, %r14d
  17405. andl %ebx, %eax
  17406. vpsrlq $0x11, %ymm7, %ymm7
  17407. # rnd_1: 7 - 7
  17408. xorl %r8d, %eax
  17409. rorxl $6, %r10d, %edx
  17410. addl %eax, %r14d
  17411. vpaddd %ymm2, %ymm4, %ymm4
  17412. # rnd_0: 0 - 0
  17413. movl %r11d, %eax
  17414. rorxl $11, %r10d, %ecx
  17415. addl 200(%rsp), %r13d
  17416. vpxor %ymm7, %ymm6, %ymm6
  17417. # rnd_0: 1 - 1
  17418. xorl %edx, %ecx
  17419. xorl %r12d, %eax
  17420. rorxl $25, %r10d, %edx
  17421. vpxor %ymm6, %ymm8, %ymm8
  17422. # rnd_0: 2 - 2
  17423. andl %r10d, %eax
  17424. xorl %ecx, %edx
  17425. rorxl $13, %r14d, %ecx
  17426. vpaddd %ymm5, %ymm4, %ymm4
  17427. # rnd_0: 3 - 3
  17428. addl %edx, %r13d
  17429. rorxl $2, %r14d, %edx
  17430. xorl %r12d, %eax
  17431. vpshufb %ymm11, %ymm8, %ymm8
  17432. # rnd_0: 4 - 4
  17433. xorl %edx, %ecx
  17434. rorxl $22, %r14d, %edx
  17435. addl %eax, %r13d
  17436. vpaddd %ymm8, %ymm4, %ymm4
  17437. # rnd_0: 5 - 5
  17438. xorl %ecx, %edx
  17439. movl %r15d, %eax
  17440. addl %r13d, %r9d
  17441. vpshufd $0x50, %ymm4, %ymm6
  17442. # rnd_0: 6 - 6
  17443. xorl %r14d, %eax
  17444. addl %edx, %r13d
  17445. andl %eax, %ebx
  17446. vpsrlq $0x11, %ymm6, %ymm8
  17447. # rnd_0: 7 - 7
  17448. xorl %r15d, %ebx
  17449. rorxl $6, %r9d, %edx
  17450. addl %ebx, %r13d
  17451. vpsrlq $19, %ymm6, %ymm7
  17452. # rnd_1: 0 - 0
  17453. movl %r10d, %ebx
  17454. rorxl $11, %r9d, %ecx
  17455. addl 204(%rsp), %r12d
  17456. vpsrld $10, %ymm6, %ymm9
  17457. # rnd_1: 1 - 1
  17458. xorl %edx, %ecx
  17459. xorl %r11d, %ebx
  17460. rorxl $25, %r9d, %edx
  17461. vpxor %ymm7, %ymm8, %ymm8
  17462. # rnd_1: 2 - 2
  17463. andl %r9d, %ebx
  17464. xorl %ecx, %edx
  17465. rorxl $13, %r13d, %ecx
  17466. vpxor %ymm8, %ymm9, %ymm9
  17467. # rnd_1: 3 - 3
  17468. addl %edx, %r12d
  17469. rorxl $2, %r13d, %edx
  17470. xorl %r11d, %ebx
  17471. vpshufb %ymm12, %ymm9, %ymm9
  17472. # rnd_1: 4 - 4
  17473. xorl %edx, %ecx
  17474. rorxl $22, %r13d, %edx
  17475. addl %ebx, %r12d
  17476. vpaddd %ymm4, %ymm9, %ymm2
  17477. # rnd_1: 5 - 5
  17478. xorl %ecx, %edx
  17479. addl %r12d, %r8d
  17480. movl %r14d, %ebx
  17481. vpaddd 320+L_avx2_rorx_sha256_k(%rip), %ymm2, %ymm4
  17482. # rnd_1: 6 - 6
  17483. xorl %r13d, %ebx
  17484. addl %edx, %r12d
  17485. andl %ebx, %eax
  17486. # rnd_1: 7 - 7
  17487. xorl %r14d, %eax
  17488. rorxl $6, %r8d, %edx
  17489. addl %eax, %r12d
  17490. vmovdqu %ymm4, 320(%rsp)
  17491. # rnd_0: 0 - 0
  17492. movl %r9d, %eax
  17493. rorxl $11, %r8d, %ecx
  17494. addl 224(%rsp), %r11d
  17495. vpalignr $4, %ymm3, %ymm0, %ymm5
  17496. # rnd_0: 1 - 1
  17497. xorl %edx, %ecx
  17498. xorl %r10d, %eax
  17499. rorxl $25, %r8d, %edx
  17500. vpalignr $4, %ymm1, %ymm2, %ymm4
  17501. # rnd_0: 2 - 2
  17502. andl %r8d, %eax
  17503. xorl %ecx, %edx
  17504. rorxl $13, %r12d, %ecx
  17505. vpsrld $7, %ymm5, %ymm6
  17506. # rnd_0: 3 - 3
  17507. addl %edx, %r11d
  17508. rorxl $2, %r12d, %edx
  17509. xorl %r10d, %eax
  17510. vpslld $25, %ymm5, %ymm7
  17511. # rnd_0: 4 - 4
  17512. xorl %edx, %ecx
  17513. rorxl $22, %r12d, %edx
  17514. addl %eax, %r11d
  17515. vpsrld $18, %ymm5, %ymm8
  17516. # rnd_0: 5 - 5
  17517. xorl %ecx, %edx
  17518. movl %r13d, %eax
  17519. addl %r11d, %r15d
  17520. vpslld $14, %ymm5, %ymm9
  17521. # rnd_0: 6 - 6
  17522. xorl %r12d, %eax
  17523. addl %edx, %r11d
  17524. andl %eax, %ebx
  17525. vpor %ymm7, %ymm6, %ymm6
  17526. # rnd_0: 7 - 7
  17527. xorl %r13d, %ebx
  17528. rorxl $6, %r15d, %edx
  17529. addl %ebx, %r11d
  17530. vpor %ymm9, %ymm8, %ymm8
  17531. # rnd_1: 0 - 0
  17532. movl %r8d, %ebx
  17533. rorxl $11, %r15d, %ecx
  17534. addl 228(%rsp), %r10d
  17535. vpsrld $3, %ymm5, %ymm9
  17536. # rnd_1: 1 - 1
  17537. xorl %edx, %ecx
  17538. xorl %r9d, %ebx
  17539. rorxl $25, %r15d, %edx
  17540. vpxor %ymm8, %ymm6, %ymm6
  17541. # rnd_1: 2 - 2
  17542. andl %r15d, %ebx
  17543. xorl %ecx, %edx
  17544. rorxl $13, %r11d, %ecx
  17545. vpshufd $0xfa, %ymm2, %ymm7
  17546. # rnd_1: 3 - 3
  17547. addl %edx, %r10d
  17548. rorxl $2, %r11d, %edx
  17549. xorl %r9d, %ebx
  17550. vpxor %ymm6, %ymm9, %ymm5
  17551. # rnd_1: 4 - 4
  17552. xorl %edx, %ecx
  17553. rorxl $22, %r11d, %edx
  17554. addl %ebx, %r10d
  17555. vpsrld $10, %ymm7, %ymm8
  17556. # rnd_1: 5 - 5
  17557. xorl %ecx, %edx
  17558. addl %r10d, %r14d
  17559. movl %r12d, %ebx
  17560. vpsrlq $19, %ymm7, %ymm6
  17561. # rnd_1: 6 - 6
  17562. xorl %r11d, %ebx
  17563. addl %edx, %r10d
  17564. andl %ebx, %eax
  17565. vpsrlq $0x11, %ymm7, %ymm7
  17566. # rnd_1: 7 - 7
  17567. xorl %r12d, %eax
  17568. rorxl $6, %r14d, %edx
  17569. addl %eax, %r10d
  17570. vpaddd %ymm3, %ymm4, %ymm4
  17571. # rnd_0: 0 - 0
  17572. movl %r15d, %eax
  17573. rorxl $11, %r14d, %ecx
  17574. addl 232(%rsp), %r9d
  17575. vpxor %ymm7, %ymm6, %ymm6
  17576. # rnd_0: 1 - 1
  17577. xorl %edx, %ecx
  17578. xorl %r8d, %eax
  17579. rorxl $25, %r14d, %edx
  17580. vpxor %ymm6, %ymm8, %ymm8
  17581. # rnd_0: 2 - 2
  17582. andl %r14d, %eax
  17583. xorl %ecx, %edx
  17584. rorxl $13, %r10d, %ecx
  17585. vpaddd %ymm5, %ymm4, %ymm4
  17586. # rnd_0: 3 - 3
  17587. addl %edx, %r9d
  17588. rorxl $2, %r10d, %edx
  17589. xorl %r8d, %eax
  17590. vpshufb %ymm11, %ymm8, %ymm8
  17591. # rnd_0: 4 - 4
  17592. xorl %edx, %ecx
  17593. rorxl $22, %r10d, %edx
  17594. addl %eax, %r9d
  17595. vpaddd %ymm8, %ymm4, %ymm4
  17596. # rnd_0: 5 - 5
  17597. xorl %ecx, %edx
  17598. movl %r11d, %eax
  17599. addl %r9d, %r13d
  17600. vpshufd $0x50, %ymm4, %ymm6
  17601. # rnd_0: 6 - 6
  17602. xorl %r10d, %eax
  17603. addl %edx, %r9d
  17604. andl %eax, %ebx
  17605. vpsrlq $0x11, %ymm6, %ymm8
  17606. # rnd_0: 7 - 7
  17607. xorl %r11d, %ebx
  17608. rorxl $6, %r13d, %edx
  17609. addl %ebx, %r9d
  17610. vpsrlq $19, %ymm6, %ymm7
  17611. # rnd_1: 0 - 0
  17612. movl %r14d, %ebx
  17613. rorxl $11, %r13d, %ecx
  17614. addl 236(%rsp), %r8d
  17615. vpsrld $10, %ymm6, %ymm9
  17616. # rnd_1: 1 - 1
  17617. xorl %edx, %ecx
  17618. xorl %r15d, %ebx
  17619. rorxl $25, %r13d, %edx
  17620. vpxor %ymm7, %ymm8, %ymm8
  17621. # rnd_1: 2 - 2
  17622. andl %r13d, %ebx
  17623. xorl %ecx, %edx
  17624. rorxl $13, %r9d, %ecx
  17625. vpxor %ymm8, %ymm9, %ymm9
  17626. # rnd_1: 3 - 3
  17627. addl %edx, %r8d
  17628. rorxl $2, %r9d, %edx
  17629. xorl %r15d, %ebx
  17630. vpshufb %ymm12, %ymm9, %ymm9
  17631. # rnd_1: 4 - 4
  17632. xorl %edx, %ecx
  17633. rorxl $22, %r9d, %edx
  17634. addl %ebx, %r8d
  17635. vpaddd %ymm4, %ymm9, %ymm3
  17636. # rnd_1: 5 - 5
  17637. xorl %ecx, %edx
  17638. addl %r8d, %r12d
  17639. movl %r10d, %ebx
  17640. vpaddd 352+L_avx2_rorx_sha256_k(%rip), %ymm3, %ymm4
  17641. # rnd_1: 6 - 6
  17642. xorl %r9d, %ebx
  17643. addl %edx, %r8d
  17644. andl %ebx, %eax
  17645. # rnd_1: 7 - 7
  17646. xorl %r10d, %eax
  17647. rorxl $6, %r12d, %edx
  17648. addl %eax, %r8d
  17649. vmovdqu %ymm4, 352(%rsp)
  17650. # rnd_0: 0 - 0
  17651. movl %r13d, %eax
  17652. rorxl $11, %r12d, %ecx
  17653. addl 256(%rsp), %r15d
  17654. vpalignr $4, %ymm0, %ymm1, %ymm5
  17655. # rnd_0: 1 - 1
  17656. xorl %edx, %ecx
  17657. xorl %r14d, %eax
  17658. rorxl $25, %r12d, %edx
  17659. vpalignr $4, %ymm2, %ymm3, %ymm4
  17660. # rnd_0: 2 - 2
  17661. andl %r12d, %eax
  17662. xorl %ecx, %edx
  17663. rorxl $13, %r8d, %ecx
  17664. vpsrld $7, %ymm5, %ymm6
  17665. # rnd_0: 3 - 3
  17666. addl %edx, %r15d
  17667. rorxl $2, %r8d, %edx
  17668. xorl %r14d, %eax
  17669. vpslld $25, %ymm5, %ymm7
  17670. # rnd_0: 4 - 4
  17671. xorl %edx, %ecx
  17672. rorxl $22, %r8d, %edx
  17673. addl %eax, %r15d
  17674. vpsrld $18, %ymm5, %ymm8
  17675. # rnd_0: 5 - 5
  17676. xorl %ecx, %edx
  17677. movl %r9d, %eax
  17678. addl %r15d, %r11d
  17679. vpslld $14, %ymm5, %ymm9
  17680. # rnd_0: 6 - 6
  17681. xorl %r8d, %eax
  17682. addl %edx, %r15d
  17683. andl %eax, %ebx
  17684. vpor %ymm7, %ymm6, %ymm6
  17685. # rnd_0: 7 - 7
  17686. xorl %r9d, %ebx
  17687. rorxl $6, %r11d, %edx
  17688. addl %ebx, %r15d
  17689. vpor %ymm9, %ymm8, %ymm8
  17690. # rnd_1: 0 - 0
  17691. movl %r12d, %ebx
  17692. rorxl $11, %r11d, %ecx
  17693. addl 260(%rsp), %r14d
  17694. vpsrld $3, %ymm5, %ymm9
  17695. # rnd_1: 1 - 1
  17696. xorl %edx, %ecx
  17697. xorl %r13d, %ebx
  17698. rorxl $25, %r11d, %edx
  17699. vpxor %ymm8, %ymm6, %ymm6
  17700. # rnd_1: 2 - 2
  17701. andl %r11d, %ebx
  17702. xorl %ecx, %edx
  17703. rorxl $13, %r15d, %ecx
  17704. vpshufd $0xfa, %ymm3, %ymm7
  17705. # rnd_1: 3 - 3
  17706. addl %edx, %r14d
  17707. rorxl $2, %r15d, %edx
  17708. xorl %r13d, %ebx
  17709. vpxor %ymm6, %ymm9, %ymm5
  17710. # rnd_1: 4 - 4
  17711. xorl %edx, %ecx
  17712. rorxl $22, %r15d, %edx
  17713. addl %ebx, %r14d
  17714. vpsrld $10, %ymm7, %ymm8
  17715. # rnd_1: 5 - 5
  17716. xorl %ecx, %edx
  17717. addl %r14d, %r10d
  17718. movl %r8d, %ebx
  17719. vpsrlq $19, %ymm7, %ymm6
  17720. # rnd_1: 6 - 6
  17721. xorl %r15d, %ebx
  17722. addl %edx, %r14d
  17723. andl %ebx, %eax
  17724. vpsrlq $0x11, %ymm7, %ymm7
  17725. # rnd_1: 7 - 7
  17726. xorl %r8d, %eax
  17727. rorxl $6, %r10d, %edx
  17728. addl %eax, %r14d
  17729. vpaddd %ymm0, %ymm4, %ymm4
  17730. # rnd_0: 0 - 0
  17731. movl %r11d, %eax
  17732. rorxl $11, %r10d, %ecx
  17733. addl 264(%rsp), %r13d
  17734. vpxor %ymm7, %ymm6, %ymm6
  17735. # rnd_0: 1 - 1
  17736. xorl %edx, %ecx
  17737. xorl %r12d, %eax
  17738. rorxl $25, %r10d, %edx
  17739. vpxor %ymm6, %ymm8, %ymm8
  17740. # rnd_0: 2 - 2
  17741. andl %r10d, %eax
  17742. xorl %ecx, %edx
  17743. rorxl $13, %r14d, %ecx
  17744. vpaddd %ymm5, %ymm4, %ymm4
  17745. # rnd_0: 3 - 3
  17746. addl %edx, %r13d
  17747. rorxl $2, %r14d, %edx
  17748. xorl %r12d, %eax
  17749. vpshufb %ymm11, %ymm8, %ymm8
  17750. # rnd_0: 4 - 4
  17751. xorl %edx, %ecx
  17752. rorxl $22, %r14d, %edx
  17753. addl %eax, %r13d
  17754. vpaddd %ymm8, %ymm4, %ymm4
  17755. # rnd_0: 5 - 5
  17756. xorl %ecx, %edx
  17757. movl %r15d, %eax
  17758. addl %r13d, %r9d
  17759. vpshufd $0x50, %ymm4, %ymm6
  17760. # rnd_0: 6 - 6
  17761. xorl %r14d, %eax
  17762. addl %edx, %r13d
  17763. andl %eax, %ebx
  17764. vpsrlq $0x11, %ymm6, %ymm8
  17765. # rnd_0: 7 - 7
  17766. xorl %r15d, %ebx
  17767. rorxl $6, %r9d, %edx
  17768. addl %ebx, %r13d
  17769. vpsrlq $19, %ymm6, %ymm7
  17770. # rnd_1: 0 - 0
  17771. movl %r10d, %ebx
  17772. rorxl $11, %r9d, %ecx
  17773. addl 268(%rsp), %r12d
  17774. vpsrld $10, %ymm6, %ymm9
  17775. # rnd_1: 1 - 1
  17776. xorl %edx, %ecx
  17777. xorl %r11d, %ebx
  17778. rorxl $25, %r9d, %edx
  17779. vpxor %ymm7, %ymm8, %ymm8
  17780. # rnd_1: 2 - 2
  17781. andl %r9d, %ebx
  17782. xorl %ecx, %edx
  17783. rorxl $13, %r13d, %ecx
  17784. vpxor %ymm8, %ymm9, %ymm9
  17785. # rnd_1: 3 - 3
  17786. addl %edx, %r12d
  17787. rorxl $2, %r13d, %edx
  17788. xorl %r11d, %ebx
  17789. vpshufb %ymm12, %ymm9, %ymm9
  17790. # rnd_1: 4 - 4
  17791. xorl %edx, %ecx
  17792. rorxl $22, %r13d, %edx
  17793. addl %ebx, %r12d
  17794. vpaddd %ymm4, %ymm9, %ymm0
  17795. # rnd_1: 5 - 5
  17796. xorl %ecx, %edx
  17797. addl %r12d, %r8d
  17798. movl %r14d, %ebx
  17799. vpaddd 384+L_avx2_rorx_sha256_k(%rip), %ymm0, %ymm4
  17800. # rnd_1: 6 - 6
  17801. xorl %r13d, %ebx
  17802. addl %edx, %r12d
  17803. andl %ebx, %eax
  17804. # rnd_1: 7 - 7
  17805. xorl %r14d, %eax
  17806. rorxl $6, %r8d, %edx
  17807. addl %eax, %r12d
  17808. vmovdqu %ymm4, 384(%rsp)
  17809. # rnd_0: 0 - 0
  17810. movl %r9d, %eax
  17811. rorxl $11, %r8d, %ecx
  17812. addl 288(%rsp), %r11d
  17813. vpalignr $4, %ymm1, %ymm2, %ymm5
  17814. # rnd_0: 1 - 1
  17815. xorl %edx, %ecx
  17816. xorl %r10d, %eax
  17817. rorxl $25, %r8d, %edx
  17818. vpalignr $4, %ymm3, %ymm0, %ymm4
  17819. # rnd_0: 2 - 2
  17820. andl %r8d, %eax
  17821. xorl %ecx, %edx
  17822. rorxl $13, %r12d, %ecx
  17823. vpsrld $7, %ymm5, %ymm6
  17824. # rnd_0: 3 - 3
  17825. addl %edx, %r11d
  17826. rorxl $2, %r12d, %edx
  17827. xorl %r10d, %eax
  17828. vpslld $25, %ymm5, %ymm7
  17829. # rnd_0: 4 - 4
  17830. xorl %edx, %ecx
  17831. rorxl $22, %r12d, %edx
  17832. addl %eax, %r11d
  17833. vpsrld $18, %ymm5, %ymm8
  17834. # rnd_0: 5 - 5
  17835. xorl %ecx, %edx
  17836. movl %r13d, %eax
  17837. addl %r11d, %r15d
  17838. vpslld $14, %ymm5, %ymm9
  17839. # rnd_0: 6 - 6
  17840. xorl %r12d, %eax
  17841. addl %edx, %r11d
  17842. andl %eax, %ebx
  17843. vpor %ymm7, %ymm6, %ymm6
  17844. # rnd_0: 7 - 7
  17845. xorl %r13d, %ebx
  17846. rorxl $6, %r15d, %edx
  17847. addl %ebx, %r11d
  17848. vpor %ymm9, %ymm8, %ymm8
  17849. # rnd_1: 0 - 0
  17850. movl %r8d, %ebx
  17851. rorxl $11, %r15d, %ecx
  17852. addl 292(%rsp), %r10d
  17853. vpsrld $3, %ymm5, %ymm9
  17854. # rnd_1: 1 - 1
  17855. xorl %edx, %ecx
  17856. xorl %r9d, %ebx
  17857. rorxl $25, %r15d, %edx
  17858. vpxor %ymm8, %ymm6, %ymm6
  17859. # rnd_1: 2 - 2
  17860. andl %r15d, %ebx
  17861. xorl %ecx, %edx
  17862. rorxl $13, %r11d, %ecx
  17863. vpshufd $0xfa, %ymm0, %ymm7
  17864. # rnd_1: 3 - 3
  17865. addl %edx, %r10d
  17866. rorxl $2, %r11d, %edx
  17867. xorl %r9d, %ebx
  17868. vpxor %ymm6, %ymm9, %ymm5
  17869. # rnd_1: 4 - 4
  17870. xorl %edx, %ecx
  17871. rorxl $22, %r11d, %edx
  17872. addl %ebx, %r10d
  17873. vpsrld $10, %ymm7, %ymm8
  17874. # rnd_1: 5 - 5
  17875. xorl %ecx, %edx
  17876. addl %r10d, %r14d
  17877. movl %r12d, %ebx
  17878. vpsrlq $19, %ymm7, %ymm6
  17879. # rnd_1: 6 - 6
  17880. xorl %r11d, %ebx
  17881. addl %edx, %r10d
  17882. andl %ebx, %eax
  17883. vpsrlq $0x11, %ymm7, %ymm7
  17884. # rnd_1: 7 - 7
  17885. xorl %r12d, %eax
  17886. rorxl $6, %r14d, %edx
  17887. addl %eax, %r10d
  17888. vpaddd %ymm1, %ymm4, %ymm4
  17889. # rnd_0: 0 - 0
  17890. movl %r15d, %eax
  17891. rorxl $11, %r14d, %ecx
  17892. addl 296(%rsp), %r9d
  17893. vpxor %ymm7, %ymm6, %ymm6
  17894. # rnd_0: 1 - 1
  17895. xorl %edx, %ecx
  17896. xorl %r8d, %eax
  17897. rorxl $25, %r14d, %edx
  17898. vpxor %ymm6, %ymm8, %ymm8
  17899. # rnd_0: 2 - 2
  17900. andl %r14d, %eax
  17901. xorl %ecx, %edx
  17902. rorxl $13, %r10d, %ecx
  17903. vpaddd %ymm5, %ymm4, %ymm4
  17904. # rnd_0: 3 - 3
  17905. addl %edx, %r9d
  17906. rorxl $2, %r10d, %edx
  17907. xorl %r8d, %eax
  17908. vpshufb %ymm11, %ymm8, %ymm8
  17909. # rnd_0: 4 - 4
  17910. xorl %edx, %ecx
  17911. rorxl $22, %r10d, %edx
  17912. addl %eax, %r9d
  17913. vpaddd %ymm8, %ymm4, %ymm4
  17914. # rnd_0: 5 - 5
  17915. xorl %ecx, %edx
  17916. movl %r11d, %eax
  17917. addl %r9d, %r13d
  17918. vpshufd $0x50, %ymm4, %ymm6
  17919. # rnd_0: 6 - 6
  17920. xorl %r10d, %eax
  17921. addl %edx, %r9d
  17922. andl %eax, %ebx
  17923. vpsrlq $0x11, %ymm6, %ymm8
  17924. # rnd_0: 7 - 7
  17925. xorl %r11d, %ebx
  17926. rorxl $6, %r13d, %edx
  17927. addl %ebx, %r9d
  17928. vpsrlq $19, %ymm6, %ymm7
  17929. # rnd_1: 0 - 0
  17930. movl %r14d, %ebx
  17931. rorxl $11, %r13d, %ecx
  17932. addl 300(%rsp), %r8d
  17933. vpsrld $10, %ymm6, %ymm9
  17934. # rnd_1: 1 - 1
  17935. xorl %edx, %ecx
  17936. xorl %r15d, %ebx
  17937. rorxl $25, %r13d, %edx
  17938. vpxor %ymm7, %ymm8, %ymm8
  17939. # rnd_1: 2 - 2
  17940. andl %r13d, %ebx
  17941. xorl %ecx, %edx
  17942. rorxl $13, %r9d, %ecx
  17943. vpxor %ymm8, %ymm9, %ymm9
  17944. # rnd_1: 3 - 3
  17945. addl %edx, %r8d
  17946. rorxl $2, %r9d, %edx
  17947. xorl %r15d, %ebx
  17948. vpshufb %ymm12, %ymm9, %ymm9
  17949. # rnd_1: 4 - 4
  17950. xorl %edx, %ecx
  17951. rorxl $22, %r9d, %edx
  17952. addl %ebx, %r8d
  17953. vpaddd %ymm4, %ymm9, %ymm1
  17954. # rnd_1: 5 - 5
  17955. xorl %ecx, %edx
  17956. addl %r8d, %r12d
  17957. movl %r10d, %ebx
  17958. vpaddd 416+L_avx2_rorx_sha256_k(%rip), %ymm1, %ymm4
  17959. # rnd_1: 6 - 6
  17960. xorl %r9d, %ebx
  17961. addl %edx, %r8d
  17962. andl %ebx, %eax
  17963. # rnd_1: 7 - 7
  17964. xorl %r10d, %eax
  17965. rorxl $6, %r12d, %edx
  17966. addl %eax, %r8d
  17967. vmovdqu %ymm4, 416(%rsp)
  17968. # rnd_0: 0 - 0
  17969. movl %r13d, %eax
  17970. rorxl $11, %r12d, %ecx
  17971. addl 320(%rsp), %r15d
  17972. vpalignr $4, %ymm2, %ymm3, %ymm5
  17973. # rnd_0: 1 - 1
  17974. xorl %edx, %ecx
  17975. xorl %r14d, %eax
  17976. rorxl $25, %r12d, %edx
  17977. vpalignr $4, %ymm0, %ymm1, %ymm4
  17978. # rnd_0: 2 - 2
  17979. andl %r12d, %eax
  17980. xorl %ecx, %edx
  17981. rorxl $13, %r8d, %ecx
  17982. vpsrld $7, %ymm5, %ymm6
  17983. # rnd_0: 3 - 3
  17984. addl %edx, %r15d
  17985. rorxl $2, %r8d, %edx
  17986. xorl %r14d, %eax
  17987. vpslld $25, %ymm5, %ymm7
  17988. # rnd_0: 4 - 4
  17989. xorl %edx, %ecx
  17990. rorxl $22, %r8d, %edx
  17991. addl %eax, %r15d
  17992. vpsrld $18, %ymm5, %ymm8
  17993. # rnd_0: 5 - 5
  17994. xorl %ecx, %edx
  17995. movl %r9d, %eax
  17996. addl %r15d, %r11d
  17997. vpslld $14, %ymm5, %ymm9
  17998. # rnd_0: 6 - 6
  17999. xorl %r8d, %eax
  18000. addl %edx, %r15d
  18001. andl %eax, %ebx
  18002. vpor %ymm7, %ymm6, %ymm6
  18003. # rnd_0: 7 - 7
  18004. xorl %r9d, %ebx
  18005. rorxl $6, %r11d, %edx
  18006. addl %ebx, %r15d
  18007. vpor %ymm9, %ymm8, %ymm8
  18008. # rnd_1: 0 - 0
  18009. movl %r12d, %ebx
  18010. rorxl $11, %r11d, %ecx
  18011. addl 324(%rsp), %r14d
  18012. vpsrld $3, %ymm5, %ymm9
  18013. # rnd_1: 1 - 1
  18014. xorl %edx, %ecx
  18015. xorl %r13d, %ebx
  18016. rorxl $25, %r11d, %edx
  18017. vpxor %ymm8, %ymm6, %ymm6
  18018. # rnd_1: 2 - 2
  18019. andl %r11d, %ebx
  18020. xorl %ecx, %edx
  18021. rorxl $13, %r15d, %ecx
  18022. vpshufd $0xfa, %ymm1, %ymm7
  18023. # rnd_1: 3 - 3
  18024. addl %edx, %r14d
  18025. rorxl $2, %r15d, %edx
  18026. xorl %r13d, %ebx
  18027. vpxor %ymm6, %ymm9, %ymm5
  18028. # rnd_1: 4 - 4
  18029. xorl %edx, %ecx
  18030. rorxl $22, %r15d, %edx
  18031. addl %ebx, %r14d
  18032. vpsrld $10, %ymm7, %ymm8
  18033. # rnd_1: 5 - 5
  18034. xorl %ecx, %edx
  18035. addl %r14d, %r10d
  18036. movl %r8d, %ebx
  18037. vpsrlq $19, %ymm7, %ymm6
  18038. # rnd_1: 6 - 6
  18039. xorl %r15d, %ebx
  18040. addl %edx, %r14d
  18041. andl %ebx, %eax
  18042. vpsrlq $0x11, %ymm7, %ymm7
  18043. # rnd_1: 7 - 7
  18044. xorl %r8d, %eax
  18045. rorxl $6, %r10d, %edx
  18046. addl %eax, %r14d
  18047. vpaddd %ymm2, %ymm4, %ymm4
  18048. # rnd_0: 0 - 0
  18049. movl %r11d, %eax
  18050. rorxl $11, %r10d, %ecx
  18051. addl 328(%rsp), %r13d
  18052. vpxor %ymm7, %ymm6, %ymm6
  18053. # rnd_0: 1 - 1
  18054. xorl %edx, %ecx
  18055. xorl %r12d, %eax
  18056. rorxl $25, %r10d, %edx
  18057. vpxor %ymm6, %ymm8, %ymm8
  18058. # rnd_0: 2 - 2
  18059. andl %r10d, %eax
  18060. xorl %ecx, %edx
  18061. rorxl $13, %r14d, %ecx
  18062. vpaddd %ymm5, %ymm4, %ymm4
  18063. # rnd_0: 3 - 3
  18064. addl %edx, %r13d
  18065. rorxl $2, %r14d, %edx
  18066. xorl %r12d, %eax
  18067. vpshufb %ymm11, %ymm8, %ymm8
  18068. # rnd_0: 4 - 4
  18069. xorl %edx, %ecx
  18070. rorxl $22, %r14d, %edx
  18071. addl %eax, %r13d
  18072. vpaddd %ymm8, %ymm4, %ymm4
  18073. # rnd_0: 5 - 5
  18074. xorl %ecx, %edx
  18075. movl %r15d, %eax
  18076. addl %r13d, %r9d
  18077. vpshufd $0x50, %ymm4, %ymm6
  18078. # rnd_0: 6 - 6
  18079. xorl %r14d, %eax
  18080. addl %edx, %r13d
  18081. andl %eax, %ebx
  18082. vpsrlq $0x11, %ymm6, %ymm8
  18083. # rnd_0: 7 - 7
  18084. xorl %r15d, %ebx
  18085. rorxl $6, %r9d, %edx
  18086. addl %ebx, %r13d
  18087. vpsrlq $19, %ymm6, %ymm7
  18088. # rnd_1: 0 - 0
  18089. movl %r10d, %ebx
  18090. rorxl $11, %r9d, %ecx
  18091. addl 332(%rsp), %r12d
  18092. vpsrld $10, %ymm6, %ymm9
  18093. # rnd_1: 1 - 1
  18094. xorl %edx, %ecx
  18095. xorl %r11d, %ebx
  18096. rorxl $25, %r9d, %edx
  18097. vpxor %ymm7, %ymm8, %ymm8
  18098. # rnd_1: 2 - 2
  18099. andl %r9d, %ebx
  18100. xorl %ecx, %edx
  18101. rorxl $13, %r13d, %ecx
  18102. vpxor %ymm8, %ymm9, %ymm9
  18103. # rnd_1: 3 - 3
  18104. addl %edx, %r12d
  18105. rorxl $2, %r13d, %edx
  18106. xorl %r11d, %ebx
  18107. vpshufb %ymm12, %ymm9, %ymm9
  18108. # rnd_1: 4 - 4
  18109. xorl %edx, %ecx
  18110. rorxl $22, %r13d, %edx
  18111. addl %ebx, %r12d
  18112. vpaddd %ymm4, %ymm9, %ymm2
  18113. # rnd_1: 5 - 5
  18114. xorl %ecx, %edx
  18115. addl %r12d, %r8d
  18116. movl %r14d, %ebx
  18117. vpaddd 448+L_avx2_rorx_sha256_k(%rip), %ymm2, %ymm4
  18118. # rnd_1: 6 - 6
  18119. xorl %r13d, %ebx
  18120. addl %edx, %r12d
  18121. andl %ebx, %eax
  18122. # rnd_1: 7 - 7
  18123. xorl %r14d, %eax
  18124. rorxl $6, %r8d, %edx
  18125. addl %eax, %r12d
  18126. vmovdqu %ymm4, 448(%rsp)
  18127. # rnd_0: 0 - 0
  18128. movl %r9d, %eax
  18129. rorxl $11, %r8d, %ecx
  18130. addl 352(%rsp), %r11d
  18131. vpalignr $4, %ymm3, %ymm0, %ymm5
  18132. # rnd_0: 1 - 1
  18133. xorl %edx, %ecx
  18134. xorl %r10d, %eax
  18135. rorxl $25, %r8d, %edx
  18136. vpalignr $4, %ymm1, %ymm2, %ymm4
  18137. # rnd_0: 2 - 2
  18138. andl %r8d, %eax
  18139. xorl %ecx, %edx
  18140. rorxl $13, %r12d, %ecx
  18141. vpsrld $7, %ymm5, %ymm6
  18142. # rnd_0: 3 - 3
  18143. addl %edx, %r11d
  18144. rorxl $2, %r12d, %edx
  18145. xorl %r10d, %eax
  18146. vpslld $25, %ymm5, %ymm7
  18147. # rnd_0: 4 - 4
  18148. xorl %edx, %ecx
  18149. rorxl $22, %r12d, %edx
  18150. addl %eax, %r11d
  18151. vpsrld $18, %ymm5, %ymm8
  18152. # rnd_0: 5 - 5
  18153. xorl %ecx, %edx
  18154. movl %r13d, %eax
  18155. addl %r11d, %r15d
  18156. vpslld $14, %ymm5, %ymm9
  18157. # rnd_0: 6 - 6
  18158. xorl %r12d, %eax
  18159. addl %edx, %r11d
  18160. andl %eax, %ebx
  18161. vpor %ymm7, %ymm6, %ymm6
  18162. # rnd_0: 7 - 7
  18163. xorl %r13d, %ebx
  18164. rorxl $6, %r15d, %edx
  18165. addl %ebx, %r11d
  18166. vpor %ymm9, %ymm8, %ymm8
  18167. # rnd_1: 0 - 0
  18168. movl %r8d, %ebx
  18169. rorxl $11, %r15d, %ecx
  18170. addl 356(%rsp), %r10d
  18171. vpsrld $3, %ymm5, %ymm9
  18172. # rnd_1: 1 - 1
  18173. xorl %edx, %ecx
  18174. xorl %r9d, %ebx
  18175. rorxl $25, %r15d, %edx
  18176. vpxor %ymm8, %ymm6, %ymm6
  18177. # rnd_1: 2 - 2
  18178. andl %r15d, %ebx
  18179. xorl %ecx, %edx
  18180. rorxl $13, %r11d, %ecx
  18181. vpshufd $0xfa, %ymm2, %ymm7
  18182. # rnd_1: 3 - 3
  18183. addl %edx, %r10d
  18184. rorxl $2, %r11d, %edx
  18185. xorl %r9d, %ebx
  18186. vpxor %ymm6, %ymm9, %ymm5
  18187. # rnd_1: 4 - 4
  18188. xorl %edx, %ecx
  18189. rorxl $22, %r11d, %edx
  18190. addl %ebx, %r10d
  18191. vpsrld $10, %ymm7, %ymm8
  18192. # rnd_1: 5 - 5
  18193. xorl %ecx, %edx
  18194. addl %r10d, %r14d
  18195. movl %r12d, %ebx
  18196. vpsrlq $19, %ymm7, %ymm6
  18197. # rnd_1: 6 - 6
  18198. xorl %r11d, %ebx
  18199. addl %edx, %r10d
  18200. andl %ebx, %eax
  18201. vpsrlq $0x11, %ymm7, %ymm7
  18202. # rnd_1: 7 - 7
  18203. xorl %r12d, %eax
  18204. rorxl $6, %r14d, %edx
  18205. addl %eax, %r10d
  18206. vpaddd %ymm3, %ymm4, %ymm4
  18207. # rnd_0: 0 - 0
  18208. movl %r15d, %eax
  18209. rorxl $11, %r14d, %ecx
  18210. addl 360(%rsp), %r9d
  18211. vpxor %ymm7, %ymm6, %ymm6
  18212. # rnd_0: 1 - 1
  18213. xorl %edx, %ecx
  18214. xorl %r8d, %eax
  18215. rorxl $25, %r14d, %edx
  18216. vpxor %ymm6, %ymm8, %ymm8
  18217. # rnd_0: 2 - 2
  18218. andl %r14d, %eax
  18219. xorl %ecx, %edx
  18220. rorxl $13, %r10d, %ecx
  18221. vpaddd %ymm5, %ymm4, %ymm4
  18222. # rnd_0: 3 - 3
  18223. addl %edx, %r9d
  18224. rorxl $2, %r10d, %edx
  18225. xorl %r8d, %eax
  18226. vpshufb %ymm11, %ymm8, %ymm8
  18227. # rnd_0: 4 - 4
  18228. xorl %edx, %ecx
  18229. rorxl $22, %r10d, %edx
  18230. addl %eax, %r9d
  18231. vpaddd %ymm8, %ymm4, %ymm4
  18232. # rnd_0: 5 - 5
  18233. xorl %ecx, %edx
  18234. movl %r11d, %eax
  18235. addl %r9d, %r13d
  18236. vpshufd $0x50, %ymm4, %ymm6
  18237. # rnd_0: 6 - 6
  18238. xorl %r10d, %eax
  18239. addl %edx, %r9d
  18240. andl %eax, %ebx
  18241. vpsrlq $0x11, %ymm6, %ymm8
  18242. # rnd_0: 7 - 7
  18243. xorl %r11d, %ebx
  18244. rorxl $6, %r13d, %edx
  18245. addl %ebx, %r9d
  18246. vpsrlq $19, %ymm6, %ymm7
  18247. # rnd_1: 0 - 0
  18248. movl %r14d, %ebx
  18249. rorxl $11, %r13d, %ecx
  18250. addl 364(%rsp), %r8d
  18251. vpsrld $10, %ymm6, %ymm9
  18252. # rnd_1: 1 - 1
  18253. xorl %edx, %ecx
  18254. xorl %r15d, %ebx
  18255. rorxl $25, %r13d, %edx
  18256. vpxor %ymm7, %ymm8, %ymm8
  18257. # rnd_1: 2 - 2
  18258. andl %r13d, %ebx
  18259. xorl %ecx, %edx
  18260. rorxl $13, %r9d, %ecx
  18261. vpxor %ymm8, %ymm9, %ymm9
  18262. # rnd_1: 3 - 3
  18263. addl %edx, %r8d
  18264. rorxl $2, %r9d, %edx
  18265. xorl %r15d, %ebx
  18266. vpshufb %ymm12, %ymm9, %ymm9
  18267. # rnd_1: 4 - 4
  18268. xorl %edx, %ecx
  18269. rorxl $22, %r9d, %edx
  18270. addl %ebx, %r8d
  18271. vpaddd %ymm4, %ymm9, %ymm3
  18272. # rnd_1: 5 - 5
  18273. xorl %ecx, %edx
  18274. addl %r8d, %r12d
  18275. movl %r10d, %ebx
  18276. vpaddd 480+L_avx2_rorx_sha256_k(%rip), %ymm3, %ymm4
  18277. # rnd_1: 6 - 6
  18278. xorl %r9d, %ebx
  18279. addl %edx, %r8d
  18280. andl %ebx, %eax
  18281. # rnd_1: 7 - 7
  18282. xorl %r10d, %eax
  18283. rorxl $6, %r12d, %edx
  18284. addl %eax, %r8d
  18285. vmovdqu %ymm4, 480(%rsp)
  18286. xorl %eax, %eax
  18287. xorl %ecx, %ecx
  18288. rorxl $6, %r12d, %edx
  18289. rorxl $11, %r12d, %ecx
  18290. leal (%r8,%rax,1), %r8d
  18291. addl 384(%rsp), %r15d
  18292. movl %r13d, %eax
  18293. xorl %edx, %ecx
  18294. xorl %r14d, %eax
  18295. rorxl $25, %r12d, %edx
  18296. xorl %ecx, %edx
  18297. andl %r12d, %eax
  18298. addl %edx, %r15d
  18299. rorxl $2, %r8d, %edx
  18300. rorxl $13, %r8d, %ecx
  18301. xorl %r14d, %eax
  18302. xorl %edx, %ecx
  18303. rorxl $22, %r8d, %edx
  18304. addl %eax, %r15d
  18305. xorl %ecx, %edx
  18306. movl %r9d, %eax
  18307. addl %r15d, %r11d
  18308. xorl %r8d, %eax
  18309. andl %eax, %ebx
  18310. addl %edx, %r15d
  18311. xorl %r9d, %ebx
  18312. rorxl $6, %r11d, %edx
  18313. rorxl $11, %r11d, %ecx
  18314. addl %ebx, %r15d
  18315. addl 388(%rsp), %r14d
  18316. movl %r12d, %ebx
  18317. xorl %edx, %ecx
  18318. xorl %r13d, %ebx
  18319. rorxl $25, %r11d, %edx
  18320. xorl %ecx, %edx
  18321. andl %r11d, %ebx
  18322. addl %edx, %r14d
  18323. rorxl $2, %r15d, %edx
  18324. rorxl $13, %r15d, %ecx
  18325. xorl %r13d, %ebx
  18326. xorl %edx, %ecx
  18327. rorxl $22, %r15d, %edx
  18328. addl %ebx, %r14d
  18329. xorl %ecx, %edx
  18330. movl %r8d, %ebx
  18331. leal (%r10,%r14,1), %r10d
  18332. xorl %r15d, %ebx
  18333. andl %ebx, %eax
  18334. addl %edx, %r14d
  18335. xorl %r8d, %eax
  18336. rorxl $6, %r10d, %edx
  18337. rorxl $11, %r10d, %ecx
  18338. leal (%r14,%rax,1), %r14d
  18339. addl 392(%rsp), %r13d
  18340. movl %r11d, %eax
  18341. xorl %edx, %ecx
  18342. xorl %r12d, %eax
  18343. rorxl $25, %r10d, %edx
  18344. xorl %ecx, %edx
  18345. andl %r10d, %eax
  18346. addl %edx, %r13d
  18347. rorxl $2, %r14d, %edx
  18348. rorxl $13, %r14d, %ecx
  18349. xorl %r12d, %eax
  18350. xorl %edx, %ecx
  18351. rorxl $22, %r14d, %edx
  18352. addl %eax, %r13d
  18353. xorl %ecx, %edx
  18354. movl %r15d, %eax
  18355. addl %r13d, %r9d
  18356. xorl %r14d, %eax
  18357. andl %eax, %ebx
  18358. addl %edx, %r13d
  18359. xorl %r15d, %ebx
  18360. rorxl $6, %r9d, %edx
  18361. rorxl $11, %r9d, %ecx
  18362. addl %ebx, %r13d
  18363. addl 396(%rsp), %r12d
  18364. movl %r10d, %ebx
  18365. xorl %edx, %ecx
  18366. xorl %r11d, %ebx
  18367. rorxl $25, %r9d, %edx
  18368. xorl %ecx, %edx
  18369. andl %r9d, %ebx
  18370. addl %edx, %r12d
  18371. rorxl $2, %r13d, %edx
  18372. rorxl $13, %r13d, %ecx
  18373. xorl %r11d, %ebx
  18374. xorl %edx, %ecx
  18375. rorxl $22, %r13d, %edx
  18376. addl %ebx, %r12d
  18377. xorl %ecx, %edx
  18378. movl %r14d, %ebx
  18379. leal (%r8,%r12,1), %r8d
  18380. xorl %r13d, %ebx
  18381. andl %ebx, %eax
  18382. addl %edx, %r12d
  18383. xorl %r14d, %eax
  18384. rorxl $6, %r8d, %edx
  18385. rorxl $11, %r8d, %ecx
  18386. leal (%r12,%rax,1), %r12d
  18387. addl 416(%rsp), %r11d
  18388. movl %r9d, %eax
  18389. xorl %edx, %ecx
  18390. xorl %r10d, %eax
  18391. rorxl $25, %r8d, %edx
  18392. xorl %ecx, %edx
  18393. andl %r8d, %eax
  18394. addl %edx, %r11d
  18395. rorxl $2, %r12d, %edx
  18396. rorxl $13, %r12d, %ecx
  18397. xorl %r10d, %eax
  18398. xorl %edx, %ecx
  18399. rorxl $22, %r12d, %edx
  18400. addl %eax, %r11d
  18401. xorl %ecx, %edx
  18402. movl %r13d, %eax
  18403. addl %r11d, %r15d
  18404. xorl %r12d, %eax
  18405. andl %eax, %ebx
  18406. addl %edx, %r11d
  18407. xorl %r13d, %ebx
  18408. rorxl $6, %r15d, %edx
  18409. rorxl $11, %r15d, %ecx
  18410. addl %ebx, %r11d
  18411. addl 420(%rsp), %r10d
  18412. movl %r8d, %ebx
  18413. xorl %edx, %ecx
  18414. xorl %r9d, %ebx
  18415. rorxl $25, %r15d, %edx
  18416. xorl %ecx, %edx
  18417. andl %r15d, %ebx
  18418. addl %edx, %r10d
  18419. rorxl $2, %r11d, %edx
  18420. rorxl $13, %r11d, %ecx
  18421. xorl %r9d, %ebx
  18422. xorl %edx, %ecx
  18423. rorxl $22, %r11d, %edx
  18424. addl %ebx, %r10d
  18425. xorl %ecx, %edx
  18426. movl %r12d, %ebx
  18427. leal (%r14,%r10,1), %r14d
  18428. xorl %r11d, %ebx
  18429. andl %ebx, %eax
  18430. addl %edx, %r10d
  18431. xorl %r12d, %eax
  18432. rorxl $6, %r14d, %edx
  18433. rorxl $11, %r14d, %ecx
  18434. leal (%r10,%rax,1), %r10d
  18435. addl 424(%rsp), %r9d
  18436. movl %r15d, %eax
  18437. xorl %edx, %ecx
  18438. xorl %r8d, %eax
  18439. rorxl $25, %r14d, %edx
  18440. xorl %ecx, %edx
  18441. andl %r14d, %eax
  18442. addl %edx, %r9d
  18443. rorxl $2, %r10d, %edx
  18444. rorxl $13, %r10d, %ecx
  18445. xorl %r8d, %eax
  18446. xorl %edx, %ecx
  18447. rorxl $22, %r10d, %edx
  18448. addl %eax, %r9d
  18449. xorl %ecx, %edx
  18450. movl %r11d, %eax
  18451. addl %r9d, %r13d
  18452. xorl %r10d, %eax
  18453. andl %eax, %ebx
  18454. addl %edx, %r9d
  18455. xorl %r11d, %ebx
  18456. rorxl $6, %r13d, %edx
  18457. rorxl $11, %r13d, %ecx
  18458. addl %ebx, %r9d
  18459. addl 428(%rsp), %r8d
  18460. movl %r14d, %ebx
  18461. xorl %edx, %ecx
  18462. xorl %r15d, %ebx
  18463. rorxl $25, %r13d, %edx
  18464. xorl %ecx, %edx
  18465. andl %r13d, %ebx
  18466. addl %edx, %r8d
  18467. rorxl $2, %r9d, %edx
  18468. rorxl $13, %r9d, %ecx
  18469. xorl %r15d, %ebx
  18470. xorl %edx, %ecx
  18471. rorxl $22, %r9d, %edx
  18472. addl %ebx, %r8d
  18473. xorl %ecx, %edx
  18474. movl %r10d, %ebx
  18475. leal (%r12,%r8,1), %r12d
  18476. xorl %r9d, %ebx
  18477. andl %ebx, %eax
  18478. addl %edx, %r8d
  18479. xorl %r10d, %eax
  18480. rorxl $6, %r12d, %edx
  18481. rorxl $11, %r12d, %ecx
  18482. leal (%r8,%rax,1), %r8d
  18483. addl 448(%rsp), %r15d
  18484. movl %r13d, %eax
  18485. xorl %edx, %ecx
  18486. xorl %r14d, %eax
  18487. rorxl $25, %r12d, %edx
  18488. xorl %ecx, %edx
  18489. andl %r12d, %eax
  18490. addl %edx, %r15d
  18491. rorxl $2, %r8d, %edx
  18492. rorxl $13, %r8d, %ecx
  18493. xorl %r14d, %eax
  18494. xorl %edx, %ecx
  18495. rorxl $22, %r8d, %edx
  18496. addl %eax, %r15d
  18497. xorl %ecx, %edx
  18498. movl %r9d, %eax
  18499. addl %r15d, %r11d
  18500. xorl %r8d, %eax
  18501. andl %eax, %ebx
  18502. addl %edx, %r15d
  18503. xorl %r9d, %ebx
  18504. rorxl $6, %r11d, %edx
  18505. rorxl $11, %r11d, %ecx
  18506. addl %ebx, %r15d
  18507. addl 452(%rsp), %r14d
  18508. movl %r12d, %ebx
  18509. xorl %edx, %ecx
  18510. xorl %r13d, %ebx
  18511. rorxl $25, %r11d, %edx
  18512. xorl %ecx, %edx
  18513. andl %r11d, %ebx
  18514. addl %edx, %r14d
  18515. rorxl $2, %r15d, %edx
  18516. rorxl $13, %r15d, %ecx
  18517. xorl %r13d, %ebx
  18518. xorl %edx, %ecx
  18519. rorxl $22, %r15d, %edx
  18520. addl %ebx, %r14d
  18521. xorl %ecx, %edx
  18522. movl %r8d, %ebx
  18523. leal (%r10,%r14,1), %r10d
  18524. xorl %r15d, %ebx
  18525. andl %ebx, %eax
  18526. addl %edx, %r14d
  18527. xorl %r8d, %eax
  18528. rorxl $6, %r10d, %edx
  18529. rorxl $11, %r10d, %ecx
  18530. leal (%r14,%rax,1), %r14d
  18531. addl 456(%rsp), %r13d
  18532. movl %r11d, %eax
  18533. xorl %edx, %ecx
  18534. xorl %r12d, %eax
  18535. rorxl $25, %r10d, %edx
  18536. xorl %ecx, %edx
  18537. andl %r10d, %eax
  18538. addl %edx, %r13d
  18539. rorxl $2, %r14d, %edx
  18540. rorxl $13, %r14d, %ecx
  18541. xorl %r12d, %eax
  18542. xorl %edx, %ecx
  18543. rorxl $22, %r14d, %edx
  18544. addl %eax, %r13d
  18545. xorl %ecx, %edx
  18546. movl %r15d, %eax
  18547. addl %r13d, %r9d
  18548. xorl %r14d, %eax
  18549. andl %eax, %ebx
  18550. addl %edx, %r13d
  18551. xorl %r15d, %ebx
  18552. rorxl $6, %r9d, %edx
  18553. rorxl $11, %r9d, %ecx
  18554. addl %ebx, %r13d
  18555. addl 460(%rsp), %r12d
  18556. movl %r10d, %ebx
  18557. xorl %edx, %ecx
  18558. xorl %r11d, %ebx
  18559. rorxl $25, %r9d, %edx
  18560. xorl %ecx, %edx
  18561. andl %r9d, %ebx
  18562. addl %edx, %r12d
  18563. rorxl $2, %r13d, %edx
  18564. rorxl $13, %r13d, %ecx
  18565. xorl %r11d, %ebx
  18566. xorl %edx, %ecx
  18567. rorxl $22, %r13d, %edx
  18568. addl %ebx, %r12d
  18569. xorl %ecx, %edx
  18570. movl %r14d, %ebx
  18571. leal (%r8,%r12,1), %r8d
  18572. xorl %r13d, %ebx
  18573. andl %ebx, %eax
  18574. addl %edx, %r12d
  18575. xorl %r14d, %eax
  18576. rorxl $6, %r8d, %edx
  18577. rorxl $11, %r8d, %ecx
  18578. leal (%r12,%rax,1), %r12d
  18579. addl 480(%rsp), %r11d
  18580. movl %r9d, %eax
  18581. xorl %edx, %ecx
  18582. xorl %r10d, %eax
  18583. rorxl $25, %r8d, %edx
  18584. xorl %ecx, %edx
  18585. andl %r8d, %eax
  18586. addl %edx, %r11d
  18587. rorxl $2, %r12d, %edx
  18588. rorxl $13, %r12d, %ecx
  18589. xorl %r10d, %eax
  18590. xorl %edx, %ecx
  18591. rorxl $22, %r12d, %edx
  18592. addl %eax, %r11d
  18593. xorl %ecx, %edx
  18594. movl %r13d, %eax
  18595. addl %r11d, %r15d
  18596. xorl %r12d, %eax
  18597. andl %eax, %ebx
  18598. addl %edx, %r11d
  18599. xorl %r13d, %ebx
  18600. rorxl $6, %r15d, %edx
  18601. rorxl $11, %r15d, %ecx
  18602. addl %ebx, %r11d
  18603. addl 484(%rsp), %r10d
  18604. movl %r8d, %ebx
  18605. xorl %edx, %ecx
  18606. xorl %r9d, %ebx
  18607. rorxl $25, %r15d, %edx
  18608. xorl %ecx, %edx
  18609. andl %r15d, %ebx
  18610. addl %edx, %r10d
  18611. rorxl $2, %r11d, %edx
  18612. rorxl $13, %r11d, %ecx
  18613. xorl %r9d, %ebx
  18614. xorl %edx, %ecx
  18615. rorxl $22, %r11d, %edx
  18616. addl %ebx, %r10d
  18617. xorl %ecx, %edx
  18618. movl %r12d, %ebx
  18619. leal (%r14,%r10,1), %r14d
  18620. xorl %r11d, %ebx
  18621. andl %ebx, %eax
  18622. addl %edx, %r10d
  18623. xorl %r12d, %eax
  18624. rorxl $6, %r14d, %edx
  18625. rorxl $11, %r14d, %ecx
  18626. leal (%r10,%rax,1), %r10d
  18627. addl 488(%rsp), %r9d
  18628. movl %r15d, %eax
  18629. xorl %edx, %ecx
  18630. xorl %r8d, %eax
  18631. rorxl $25, %r14d, %edx
  18632. xorl %ecx, %edx
  18633. andl %r14d, %eax
  18634. addl %edx, %r9d
  18635. rorxl $2, %r10d, %edx
  18636. rorxl $13, %r10d, %ecx
  18637. xorl %r8d, %eax
  18638. xorl %edx, %ecx
  18639. rorxl $22, %r10d, %edx
  18640. addl %eax, %r9d
  18641. xorl %ecx, %edx
  18642. movl %r11d, %eax
  18643. addl %r9d, %r13d
  18644. xorl %r10d, %eax
  18645. andl %eax, %ebx
  18646. addl %edx, %r9d
  18647. xorl %r11d, %ebx
  18648. rorxl $6, %r13d, %edx
  18649. rorxl $11, %r13d, %ecx
  18650. addl %ebx, %r9d
  18651. addl 492(%rsp), %r8d
  18652. movl %r14d, %ebx
  18653. xorl %edx, %ecx
  18654. xorl %r15d, %ebx
  18655. rorxl $25, %r13d, %edx
  18656. xorl %ecx, %edx
  18657. andl %r13d, %ebx
  18658. addl %edx, %r8d
  18659. rorxl $2, %r9d, %edx
  18660. rorxl $13, %r9d, %ecx
  18661. xorl %r15d, %ebx
  18662. xorl %edx, %ecx
  18663. rorxl $22, %r9d, %edx
  18664. addl %ebx, %r8d
  18665. xorl %ecx, %edx
  18666. movl %r10d, %ebx
  18667. leal (%r12,%r8,1), %r12d
  18668. xorl %r9d, %ebx
  18669. andl %ebx, %eax
  18670. addl %edx, %r8d
  18671. xorl %r10d, %eax
  18672. addl %eax, %r8d
  18673. addl %r8d, (%rdi)
  18674. addl %r9d, 4(%rdi)
  18675. addl %r10d, 8(%rdi)
  18676. addl %r11d, 12(%rdi)
  18677. addl %r12d, 16(%rdi)
  18678. addl %r13d, 20(%rdi)
  18679. addl %r14d, 24(%rdi)
  18680. addl %r15d, 28(%rdi)
  18681. xorq %rax, %rax
  18682. vzeroupper
  18683. addq $0x200, %rsp
  18684. popq %r15
  18685. popq %r14
  18686. popq %r13
  18687. popq %r12
  18688. popq %rbx
  18689. repz retq
  18690. #ifndef __APPLE__
  18691. .size Transform_Sha256_AVX2_RORX,.-Transform_Sha256_AVX2_RORX
  18692. #endif /* __APPLE__ */
  18693. #ifndef __APPLE__
  18694. .text
  18695. .globl Transform_Sha256_AVX2_RORX_Len
  18696. .type Transform_Sha256_AVX2_RORX_Len,@function
  18697. .align 16
  18698. Transform_Sha256_AVX2_RORX_Len:
  18699. #else
  18700. .section __TEXT,__text
  18701. .globl _Transform_Sha256_AVX2_RORX_Len
  18702. .p2align 4
  18703. _Transform_Sha256_AVX2_RORX_Len:
  18704. #endif /* __APPLE__ */
  18705. pushq %rbx
  18706. pushq %r12
  18707. pushq %r13
  18708. pushq %r14
  18709. pushq %r15
  18710. pushq %rbp
  18711. movq %rsi, %rbp
  18712. movq %rdx, %rsi
  18713. subq $0x200, %rsp
  18714. testb $0x40, %sil
  18715. je L_sha256_len_avx2_rorx_block
  18716. vmovdqu (%rbp), %ymm0
  18717. vmovdqu 32(%rbp), %ymm1
  18718. vmovups %ymm0, 32(%rdi)
  18719. vmovups %ymm1, 64(%rdi)
  18720. #ifndef __APPLE__
  18721. call Transform_Sha256_AVX2_RORX@plt
  18722. #else
  18723. call _Transform_Sha256_AVX2_RORX
  18724. #endif /* __APPLE__ */
  18725. addq $0x40, %rbp
  18726. subl $0x40, %esi
  18727. jz L_sha256_len_avx2_rorx_done
  18728. L_sha256_len_avx2_rorx_block:
  18729. vmovdqa L_avx2_rorx_sha256_flip_mask(%rip), %ymm13
  18730. vmovdqa L_avx2_rorx_sha256_shuf_00BA(%rip), %ymm11
  18731. vmovdqa L_avx2_rorx_sha256_shuf_DC00(%rip), %ymm12
  18732. movl (%rdi), %r8d
  18733. movl 4(%rdi), %r9d
  18734. movl 8(%rdi), %r10d
  18735. movl 12(%rdi), %r11d
  18736. movl 16(%rdi), %r12d
  18737. movl 20(%rdi), %r13d
  18738. movl 24(%rdi), %r14d
  18739. movl 28(%rdi), %r15d
  18740. # Start of loop processing two blocks
  18741. L_sha256_len_avx2_rorx_start:
  18742. # X0, X1, X2, X3 = W[0..15]
  18743. vmovdqu (%rbp), %xmm0
  18744. vmovdqu 16(%rbp), %xmm1
  18745. vinserti128 $0x01, 64(%rbp), %ymm0, %ymm0
  18746. vinserti128 $0x01, 80(%rbp), %ymm1, %ymm1
  18747. vpshufb %ymm13, %ymm0, %ymm0
  18748. vpshufb %ymm13, %ymm1, %ymm1
  18749. vpaddd 0+L_avx2_rorx_sha256_k(%rip), %ymm0, %ymm4
  18750. vpaddd 32+L_avx2_rorx_sha256_k(%rip), %ymm1, %ymm5
  18751. vmovdqu %ymm4, (%rsp)
  18752. vmovdqu %ymm5, 32(%rsp)
  18753. vmovdqu 32(%rbp), %xmm2
  18754. vmovdqu 48(%rbp), %xmm3
  18755. vinserti128 $0x01, 96(%rbp), %ymm2, %ymm2
  18756. vinserti128 $0x01, 112(%rbp), %ymm3, %ymm3
  18757. vpshufb %ymm13, %ymm2, %ymm2
  18758. vpshufb %ymm13, %ymm3, %ymm3
  18759. vpaddd 64+L_avx2_rorx_sha256_k(%rip), %ymm2, %ymm4
  18760. vpaddd 96+L_avx2_rorx_sha256_k(%rip), %ymm3, %ymm5
  18761. vmovdqu %ymm4, 64(%rsp)
  18762. vmovdqu %ymm5, 96(%rsp)
  18763. movl %r9d, %ebx
  18764. rorxl $6, %r12d, %edx
  18765. xorl %r10d, %ebx
  18766. # rnd_0: 0 - 0
  18767. movl %r13d, %eax
  18768. rorxl $11, %r12d, %ecx
  18769. addl (%rsp), %r15d
  18770. vpalignr $4, %ymm0, %ymm1, %ymm5
  18771. # rnd_0: 1 - 1
  18772. xorl %edx, %ecx
  18773. xorl %r14d, %eax
  18774. rorxl $25, %r12d, %edx
  18775. vpalignr $4, %ymm2, %ymm3, %ymm4
  18776. # rnd_0: 2 - 2
  18777. andl %r12d, %eax
  18778. xorl %ecx, %edx
  18779. rorxl $13, %r8d, %ecx
  18780. vpsrld $7, %ymm5, %ymm6
  18781. # rnd_0: 3 - 3
  18782. addl %edx, %r15d
  18783. rorxl $2, %r8d, %edx
  18784. xorl %r14d, %eax
  18785. vpslld $25, %ymm5, %ymm7
  18786. # rnd_0: 4 - 4
  18787. xorl %edx, %ecx
  18788. rorxl $22, %r8d, %edx
  18789. addl %eax, %r15d
  18790. vpsrld $18, %ymm5, %ymm8
  18791. # rnd_0: 5 - 5
  18792. xorl %ecx, %edx
  18793. movl %r9d, %eax
  18794. addl %r15d, %r11d
  18795. vpslld $14, %ymm5, %ymm9
  18796. # rnd_0: 6 - 6
  18797. xorl %r8d, %eax
  18798. addl %edx, %r15d
  18799. andl %eax, %ebx
  18800. vpor %ymm7, %ymm6, %ymm6
  18801. # rnd_0: 7 - 7
  18802. xorl %r9d, %ebx
  18803. rorxl $6, %r11d, %edx
  18804. addl %ebx, %r15d
  18805. vpor %ymm9, %ymm8, %ymm8
  18806. # rnd_1: 0 - 0
  18807. movl %r12d, %ebx
  18808. rorxl $11, %r11d, %ecx
  18809. addl 4(%rsp), %r14d
  18810. vpsrld $3, %ymm5, %ymm9
  18811. # rnd_1: 1 - 1
  18812. xorl %edx, %ecx
  18813. xorl %r13d, %ebx
  18814. rorxl $25, %r11d, %edx
  18815. vpxor %ymm8, %ymm6, %ymm6
  18816. # rnd_1: 2 - 2
  18817. andl %r11d, %ebx
  18818. xorl %ecx, %edx
  18819. rorxl $13, %r15d, %ecx
  18820. vpshufd $0xfa, %ymm3, %ymm7
  18821. # rnd_1: 3 - 3
  18822. addl %edx, %r14d
  18823. rorxl $2, %r15d, %edx
  18824. xorl %r13d, %ebx
  18825. vpxor %ymm6, %ymm9, %ymm5
  18826. # rnd_1: 4 - 4
  18827. xorl %edx, %ecx
  18828. rorxl $22, %r15d, %edx
  18829. addl %ebx, %r14d
  18830. vpsrld $10, %ymm7, %ymm8
  18831. # rnd_1: 5 - 5
  18832. xorl %ecx, %edx
  18833. addl %r14d, %r10d
  18834. movl %r8d, %ebx
  18835. vpsrlq $19, %ymm7, %ymm6
  18836. # rnd_1: 6 - 6
  18837. xorl %r15d, %ebx
  18838. addl %edx, %r14d
  18839. andl %ebx, %eax
  18840. vpsrlq $0x11, %ymm7, %ymm7
  18841. # rnd_1: 7 - 7
  18842. xorl %r8d, %eax
  18843. rorxl $6, %r10d, %edx
  18844. addl %eax, %r14d
  18845. vpaddd %ymm0, %ymm4, %ymm4
  18846. # rnd_0: 0 - 0
  18847. movl %r11d, %eax
  18848. rorxl $11, %r10d, %ecx
  18849. addl 8(%rsp), %r13d
  18850. vpxor %ymm7, %ymm6, %ymm6
  18851. # rnd_0: 1 - 1
  18852. xorl %edx, %ecx
  18853. xorl %r12d, %eax
  18854. rorxl $25, %r10d, %edx
  18855. vpxor %ymm6, %ymm8, %ymm8
  18856. # rnd_0: 2 - 2
  18857. andl %r10d, %eax
  18858. xorl %ecx, %edx
  18859. rorxl $13, %r14d, %ecx
  18860. vpaddd %ymm5, %ymm4, %ymm4
  18861. # rnd_0: 3 - 3
  18862. addl %edx, %r13d
  18863. rorxl $2, %r14d, %edx
  18864. xorl %r12d, %eax
  18865. vpshufb %ymm11, %ymm8, %ymm8
  18866. # rnd_0: 4 - 4
  18867. xorl %edx, %ecx
  18868. rorxl $22, %r14d, %edx
  18869. addl %eax, %r13d
  18870. vpaddd %ymm8, %ymm4, %ymm4
  18871. # rnd_0: 5 - 5
  18872. xorl %ecx, %edx
  18873. movl %r15d, %eax
  18874. addl %r13d, %r9d
  18875. vpshufd $0x50, %ymm4, %ymm6
  18876. # rnd_0: 6 - 6
  18877. xorl %r14d, %eax
  18878. addl %edx, %r13d
  18879. andl %eax, %ebx
  18880. vpsrlq $0x11, %ymm6, %ymm8
  18881. # rnd_0: 7 - 7
  18882. xorl %r15d, %ebx
  18883. rorxl $6, %r9d, %edx
  18884. addl %ebx, %r13d
  18885. vpsrlq $19, %ymm6, %ymm7
  18886. # rnd_1: 0 - 0
  18887. movl %r10d, %ebx
  18888. rorxl $11, %r9d, %ecx
  18889. addl 12(%rsp), %r12d
  18890. vpsrld $10, %ymm6, %ymm9
  18891. # rnd_1: 1 - 1
  18892. xorl %edx, %ecx
  18893. xorl %r11d, %ebx
  18894. rorxl $25, %r9d, %edx
  18895. vpxor %ymm7, %ymm8, %ymm8
  18896. # rnd_1: 2 - 2
  18897. andl %r9d, %ebx
  18898. xorl %ecx, %edx
  18899. rorxl $13, %r13d, %ecx
  18900. vpxor %ymm8, %ymm9, %ymm9
  18901. # rnd_1: 3 - 3
  18902. addl %edx, %r12d
  18903. rorxl $2, %r13d, %edx
  18904. xorl %r11d, %ebx
  18905. vpshufb %ymm12, %ymm9, %ymm9
  18906. # rnd_1: 4 - 4
  18907. xorl %edx, %ecx
  18908. rorxl $22, %r13d, %edx
  18909. addl %ebx, %r12d
  18910. vpaddd %ymm4, %ymm9, %ymm0
  18911. # rnd_1: 5 - 5
  18912. xorl %ecx, %edx
  18913. addl %r12d, %r8d
  18914. movl %r14d, %ebx
  18915. vpaddd 128+L_avx2_rorx_sha256_k(%rip), %ymm0, %ymm4
  18916. # rnd_1: 6 - 6
  18917. xorl %r13d, %ebx
  18918. addl %edx, %r12d
  18919. andl %ebx, %eax
  18920. # rnd_1: 7 - 7
  18921. xorl %r14d, %eax
  18922. rorxl $6, %r8d, %edx
  18923. addl %eax, %r12d
  18924. vmovdqu %ymm4, 128(%rsp)
  18925. # rnd_0: 0 - 0
  18926. movl %r9d, %eax
  18927. rorxl $11, %r8d, %ecx
  18928. addl 32(%rsp), %r11d
  18929. vpalignr $4, %ymm1, %ymm2, %ymm5
  18930. # rnd_0: 1 - 1
  18931. xorl %edx, %ecx
  18932. xorl %r10d, %eax
  18933. rorxl $25, %r8d, %edx
  18934. vpalignr $4, %ymm3, %ymm0, %ymm4
  18935. # rnd_0: 2 - 2
  18936. andl %r8d, %eax
  18937. xorl %ecx, %edx
  18938. rorxl $13, %r12d, %ecx
  18939. vpsrld $7, %ymm5, %ymm6
  18940. # rnd_0: 3 - 3
  18941. addl %edx, %r11d
  18942. rorxl $2, %r12d, %edx
  18943. xorl %r10d, %eax
  18944. vpslld $25, %ymm5, %ymm7
  18945. # rnd_0: 4 - 4
  18946. xorl %edx, %ecx
  18947. rorxl $22, %r12d, %edx
  18948. addl %eax, %r11d
  18949. vpsrld $18, %ymm5, %ymm8
  18950. # rnd_0: 5 - 5
  18951. xorl %ecx, %edx
  18952. movl %r13d, %eax
  18953. addl %r11d, %r15d
  18954. vpslld $14, %ymm5, %ymm9
  18955. # rnd_0: 6 - 6
  18956. xorl %r12d, %eax
  18957. addl %edx, %r11d
  18958. andl %eax, %ebx
  18959. vpor %ymm7, %ymm6, %ymm6
  18960. # rnd_0: 7 - 7
  18961. xorl %r13d, %ebx
  18962. rorxl $6, %r15d, %edx
  18963. addl %ebx, %r11d
  18964. vpor %ymm9, %ymm8, %ymm8
  18965. # rnd_1: 0 - 0
  18966. movl %r8d, %ebx
  18967. rorxl $11, %r15d, %ecx
  18968. addl 36(%rsp), %r10d
  18969. vpsrld $3, %ymm5, %ymm9
  18970. # rnd_1: 1 - 1
  18971. xorl %edx, %ecx
  18972. xorl %r9d, %ebx
  18973. rorxl $25, %r15d, %edx
  18974. vpxor %ymm8, %ymm6, %ymm6
  18975. # rnd_1: 2 - 2
  18976. andl %r15d, %ebx
  18977. xorl %ecx, %edx
  18978. rorxl $13, %r11d, %ecx
  18979. vpshufd $0xfa, %ymm0, %ymm7
  18980. # rnd_1: 3 - 3
  18981. addl %edx, %r10d
  18982. rorxl $2, %r11d, %edx
  18983. xorl %r9d, %ebx
  18984. vpxor %ymm6, %ymm9, %ymm5
  18985. # rnd_1: 4 - 4
  18986. xorl %edx, %ecx
  18987. rorxl $22, %r11d, %edx
  18988. addl %ebx, %r10d
  18989. vpsrld $10, %ymm7, %ymm8
  18990. # rnd_1: 5 - 5
  18991. xorl %ecx, %edx
  18992. addl %r10d, %r14d
  18993. movl %r12d, %ebx
  18994. vpsrlq $19, %ymm7, %ymm6
  18995. # rnd_1: 6 - 6
  18996. xorl %r11d, %ebx
  18997. addl %edx, %r10d
  18998. andl %ebx, %eax
  18999. vpsrlq $0x11, %ymm7, %ymm7
  19000. # rnd_1: 7 - 7
  19001. xorl %r12d, %eax
  19002. rorxl $6, %r14d, %edx
  19003. addl %eax, %r10d
  19004. vpaddd %ymm1, %ymm4, %ymm4
  19005. # rnd_0: 0 - 0
  19006. movl %r15d, %eax
  19007. rorxl $11, %r14d, %ecx
  19008. addl 40(%rsp), %r9d
  19009. vpxor %ymm7, %ymm6, %ymm6
  19010. # rnd_0: 1 - 1
  19011. xorl %edx, %ecx
  19012. xorl %r8d, %eax
  19013. rorxl $25, %r14d, %edx
  19014. vpxor %ymm6, %ymm8, %ymm8
  19015. # rnd_0: 2 - 2
  19016. andl %r14d, %eax
  19017. xorl %ecx, %edx
  19018. rorxl $13, %r10d, %ecx
  19019. vpaddd %ymm5, %ymm4, %ymm4
  19020. # rnd_0: 3 - 3
  19021. addl %edx, %r9d
  19022. rorxl $2, %r10d, %edx
  19023. xorl %r8d, %eax
  19024. vpshufb %ymm11, %ymm8, %ymm8
  19025. # rnd_0: 4 - 4
  19026. xorl %edx, %ecx
  19027. rorxl $22, %r10d, %edx
  19028. addl %eax, %r9d
  19029. vpaddd %ymm8, %ymm4, %ymm4
  19030. # rnd_0: 5 - 5
  19031. xorl %ecx, %edx
  19032. movl %r11d, %eax
  19033. addl %r9d, %r13d
  19034. vpshufd $0x50, %ymm4, %ymm6
  19035. # rnd_0: 6 - 6
  19036. xorl %r10d, %eax
  19037. addl %edx, %r9d
  19038. andl %eax, %ebx
  19039. vpsrlq $0x11, %ymm6, %ymm8
  19040. # rnd_0: 7 - 7
  19041. xorl %r11d, %ebx
  19042. rorxl $6, %r13d, %edx
  19043. addl %ebx, %r9d
  19044. vpsrlq $19, %ymm6, %ymm7
  19045. # rnd_1: 0 - 0
  19046. movl %r14d, %ebx
  19047. rorxl $11, %r13d, %ecx
  19048. addl 44(%rsp), %r8d
  19049. vpsrld $10, %ymm6, %ymm9
  19050. # rnd_1: 1 - 1
  19051. xorl %edx, %ecx
  19052. xorl %r15d, %ebx
  19053. rorxl $25, %r13d, %edx
  19054. vpxor %ymm7, %ymm8, %ymm8
  19055. # rnd_1: 2 - 2
  19056. andl %r13d, %ebx
  19057. xorl %ecx, %edx
  19058. rorxl $13, %r9d, %ecx
  19059. vpxor %ymm8, %ymm9, %ymm9
  19060. # rnd_1: 3 - 3
  19061. addl %edx, %r8d
  19062. rorxl $2, %r9d, %edx
  19063. xorl %r15d, %ebx
  19064. vpshufb %ymm12, %ymm9, %ymm9
  19065. # rnd_1: 4 - 4
  19066. xorl %edx, %ecx
  19067. rorxl $22, %r9d, %edx
  19068. addl %ebx, %r8d
  19069. vpaddd %ymm4, %ymm9, %ymm1
  19070. # rnd_1: 5 - 5
  19071. xorl %ecx, %edx
  19072. addl %r8d, %r12d
  19073. movl %r10d, %ebx
  19074. vpaddd 160+L_avx2_rorx_sha256_k(%rip), %ymm1, %ymm4
  19075. # rnd_1: 6 - 6
  19076. xorl %r9d, %ebx
  19077. addl %edx, %r8d
  19078. andl %ebx, %eax
  19079. # rnd_1: 7 - 7
  19080. xorl %r10d, %eax
  19081. rorxl $6, %r12d, %edx
  19082. addl %eax, %r8d
  19083. vmovdqu %ymm4, 160(%rsp)
  19084. # rnd_0: 0 - 0
  19085. movl %r13d, %eax
  19086. rorxl $11, %r12d, %ecx
  19087. addl 64(%rsp), %r15d
  19088. vpalignr $4, %ymm2, %ymm3, %ymm5
  19089. # rnd_0: 1 - 1
  19090. xorl %edx, %ecx
  19091. xorl %r14d, %eax
  19092. rorxl $25, %r12d, %edx
  19093. vpalignr $4, %ymm0, %ymm1, %ymm4
  19094. # rnd_0: 2 - 2
  19095. andl %r12d, %eax
  19096. xorl %ecx, %edx
  19097. rorxl $13, %r8d, %ecx
  19098. vpsrld $7, %ymm5, %ymm6
  19099. # rnd_0: 3 - 3
  19100. addl %edx, %r15d
  19101. rorxl $2, %r8d, %edx
  19102. xorl %r14d, %eax
  19103. vpslld $25, %ymm5, %ymm7
  19104. # rnd_0: 4 - 4
  19105. xorl %edx, %ecx
  19106. rorxl $22, %r8d, %edx
  19107. addl %eax, %r15d
  19108. vpsrld $18, %ymm5, %ymm8
  19109. # rnd_0: 5 - 5
  19110. xorl %ecx, %edx
  19111. movl %r9d, %eax
  19112. addl %r15d, %r11d
  19113. vpslld $14, %ymm5, %ymm9
  19114. # rnd_0: 6 - 6
  19115. xorl %r8d, %eax
  19116. addl %edx, %r15d
  19117. andl %eax, %ebx
  19118. vpor %ymm7, %ymm6, %ymm6
  19119. # rnd_0: 7 - 7
  19120. xorl %r9d, %ebx
  19121. rorxl $6, %r11d, %edx
  19122. addl %ebx, %r15d
  19123. vpor %ymm9, %ymm8, %ymm8
  19124. # rnd_1: 0 - 0
  19125. movl %r12d, %ebx
  19126. rorxl $11, %r11d, %ecx
  19127. addl 68(%rsp), %r14d
  19128. vpsrld $3, %ymm5, %ymm9
  19129. # rnd_1: 1 - 1
  19130. xorl %edx, %ecx
  19131. xorl %r13d, %ebx
  19132. rorxl $25, %r11d, %edx
  19133. vpxor %ymm8, %ymm6, %ymm6
  19134. # rnd_1: 2 - 2
  19135. andl %r11d, %ebx
  19136. xorl %ecx, %edx
  19137. rorxl $13, %r15d, %ecx
  19138. vpshufd $0xfa, %ymm1, %ymm7
  19139. # rnd_1: 3 - 3
  19140. addl %edx, %r14d
  19141. rorxl $2, %r15d, %edx
  19142. xorl %r13d, %ebx
  19143. vpxor %ymm6, %ymm9, %ymm5
  19144. # rnd_1: 4 - 4
  19145. xorl %edx, %ecx
  19146. rorxl $22, %r15d, %edx
  19147. addl %ebx, %r14d
  19148. vpsrld $10, %ymm7, %ymm8
  19149. # rnd_1: 5 - 5
  19150. xorl %ecx, %edx
  19151. addl %r14d, %r10d
  19152. movl %r8d, %ebx
  19153. vpsrlq $19, %ymm7, %ymm6
  19154. # rnd_1: 6 - 6
  19155. xorl %r15d, %ebx
  19156. addl %edx, %r14d
  19157. andl %ebx, %eax
  19158. vpsrlq $0x11, %ymm7, %ymm7
  19159. # rnd_1: 7 - 7
  19160. xorl %r8d, %eax
  19161. rorxl $6, %r10d, %edx
  19162. addl %eax, %r14d
  19163. vpaddd %ymm2, %ymm4, %ymm4
  19164. # rnd_0: 0 - 0
  19165. movl %r11d, %eax
  19166. rorxl $11, %r10d, %ecx
  19167. addl 72(%rsp), %r13d
  19168. vpxor %ymm7, %ymm6, %ymm6
  19169. # rnd_0: 1 - 1
  19170. xorl %edx, %ecx
  19171. xorl %r12d, %eax
  19172. rorxl $25, %r10d, %edx
  19173. vpxor %ymm6, %ymm8, %ymm8
  19174. # rnd_0: 2 - 2
  19175. andl %r10d, %eax
  19176. xorl %ecx, %edx
  19177. rorxl $13, %r14d, %ecx
  19178. vpaddd %ymm5, %ymm4, %ymm4
  19179. # rnd_0: 3 - 3
  19180. addl %edx, %r13d
  19181. rorxl $2, %r14d, %edx
  19182. xorl %r12d, %eax
  19183. vpshufb %ymm11, %ymm8, %ymm8
  19184. # rnd_0: 4 - 4
  19185. xorl %edx, %ecx
  19186. rorxl $22, %r14d, %edx
  19187. addl %eax, %r13d
  19188. vpaddd %ymm8, %ymm4, %ymm4
  19189. # rnd_0: 5 - 5
  19190. xorl %ecx, %edx
  19191. movl %r15d, %eax
  19192. addl %r13d, %r9d
  19193. vpshufd $0x50, %ymm4, %ymm6
  19194. # rnd_0: 6 - 6
  19195. xorl %r14d, %eax
  19196. addl %edx, %r13d
  19197. andl %eax, %ebx
  19198. vpsrlq $0x11, %ymm6, %ymm8
  19199. # rnd_0: 7 - 7
  19200. xorl %r15d, %ebx
  19201. rorxl $6, %r9d, %edx
  19202. addl %ebx, %r13d
  19203. vpsrlq $19, %ymm6, %ymm7
  19204. # rnd_1: 0 - 0
  19205. movl %r10d, %ebx
  19206. rorxl $11, %r9d, %ecx
  19207. addl 76(%rsp), %r12d
  19208. vpsrld $10, %ymm6, %ymm9
  19209. # rnd_1: 1 - 1
  19210. xorl %edx, %ecx
  19211. xorl %r11d, %ebx
  19212. rorxl $25, %r9d, %edx
  19213. vpxor %ymm7, %ymm8, %ymm8
  19214. # rnd_1: 2 - 2
  19215. andl %r9d, %ebx
  19216. xorl %ecx, %edx
  19217. rorxl $13, %r13d, %ecx
  19218. vpxor %ymm8, %ymm9, %ymm9
  19219. # rnd_1: 3 - 3
  19220. addl %edx, %r12d
  19221. rorxl $2, %r13d, %edx
  19222. xorl %r11d, %ebx
  19223. vpshufb %ymm12, %ymm9, %ymm9
  19224. # rnd_1: 4 - 4
  19225. xorl %edx, %ecx
  19226. rorxl $22, %r13d, %edx
  19227. addl %ebx, %r12d
  19228. vpaddd %ymm4, %ymm9, %ymm2
  19229. # rnd_1: 5 - 5
  19230. xorl %ecx, %edx
  19231. addl %r12d, %r8d
  19232. movl %r14d, %ebx
  19233. vpaddd 192+L_avx2_rorx_sha256_k(%rip), %ymm2, %ymm4
  19234. # rnd_1: 6 - 6
  19235. xorl %r13d, %ebx
  19236. addl %edx, %r12d
  19237. andl %ebx, %eax
  19238. # rnd_1: 7 - 7
  19239. xorl %r14d, %eax
  19240. rorxl $6, %r8d, %edx
  19241. addl %eax, %r12d
  19242. vmovdqu %ymm4, 192(%rsp)
  19243. # rnd_0: 0 - 0
  19244. movl %r9d, %eax
  19245. rorxl $11, %r8d, %ecx
  19246. addl 96(%rsp), %r11d
  19247. vpalignr $4, %ymm3, %ymm0, %ymm5
  19248. # rnd_0: 1 - 1
  19249. xorl %edx, %ecx
  19250. xorl %r10d, %eax
  19251. rorxl $25, %r8d, %edx
  19252. vpalignr $4, %ymm1, %ymm2, %ymm4
  19253. # rnd_0: 2 - 2
  19254. andl %r8d, %eax
  19255. xorl %ecx, %edx
  19256. rorxl $13, %r12d, %ecx
  19257. vpsrld $7, %ymm5, %ymm6
  19258. # rnd_0: 3 - 3
  19259. addl %edx, %r11d
  19260. rorxl $2, %r12d, %edx
  19261. xorl %r10d, %eax
  19262. vpslld $25, %ymm5, %ymm7
  19263. # rnd_0: 4 - 4
  19264. xorl %edx, %ecx
  19265. rorxl $22, %r12d, %edx
  19266. addl %eax, %r11d
  19267. vpsrld $18, %ymm5, %ymm8
  19268. # rnd_0: 5 - 5
  19269. xorl %ecx, %edx
  19270. movl %r13d, %eax
  19271. addl %r11d, %r15d
  19272. vpslld $14, %ymm5, %ymm9
  19273. # rnd_0: 6 - 6
  19274. xorl %r12d, %eax
  19275. addl %edx, %r11d
  19276. andl %eax, %ebx
  19277. vpor %ymm7, %ymm6, %ymm6
  19278. # rnd_0: 7 - 7
  19279. xorl %r13d, %ebx
  19280. rorxl $6, %r15d, %edx
  19281. addl %ebx, %r11d
  19282. vpor %ymm9, %ymm8, %ymm8
  19283. # rnd_1: 0 - 0
  19284. movl %r8d, %ebx
  19285. rorxl $11, %r15d, %ecx
  19286. addl 100(%rsp), %r10d
  19287. vpsrld $3, %ymm5, %ymm9
  19288. # rnd_1: 1 - 1
  19289. xorl %edx, %ecx
  19290. xorl %r9d, %ebx
  19291. rorxl $25, %r15d, %edx
  19292. vpxor %ymm8, %ymm6, %ymm6
  19293. # rnd_1: 2 - 2
  19294. andl %r15d, %ebx
  19295. xorl %ecx, %edx
  19296. rorxl $13, %r11d, %ecx
  19297. vpshufd $0xfa, %ymm2, %ymm7
  19298. # rnd_1: 3 - 3
  19299. addl %edx, %r10d
  19300. rorxl $2, %r11d, %edx
  19301. xorl %r9d, %ebx
  19302. vpxor %ymm6, %ymm9, %ymm5
  19303. # rnd_1: 4 - 4
  19304. xorl %edx, %ecx
  19305. rorxl $22, %r11d, %edx
  19306. addl %ebx, %r10d
  19307. vpsrld $10, %ymm7, %ymm8
  19308. # rnd_1: 5 - 5
  19309. xorl %ecx, %edx
  19310. addl %r10d, %r14d
  19311. movl %r12d, %ebx
  19312. vpsrlq $19, %ymm7, %ymm6
  19313. # rnd_1: 6 - 6
  19314. xorl %r11d, %ebx
  19315. addl %edx, %r10d
  19316. andl %ebx, %eax
  19317. vpsrlq $0x11, %ymm7, %ymm7
  19318. # rnd_1: 7 - 7
  19319. xorl %r12d, %eax
  19320. rorxl $6, %r14d, %edx
  19321. addl %eax, %r10d
  19322. vpaddd %ymm3, %ymm4, %ymm4
  19323. # rnd_0: 0 - 0
  19324. movl %r15d, %eax
  19325. rorxl $11, %r14d, %ecx
  19326. addl 104(%rsp), %r9d
  19327. vpxor %ymm7, %ymm6, %ymm6
  19328. # rnd_0: 1 - 1
  19329. xorl %edx, %ecx
  19330. xorl %r8d, %eax
  19331. rorxl $25, %r14d, %edx
  19332. vpxor %ymm6, %ymm8, %ymm8
  19333. # rnd_0: 2 - 2
  19334. andl %r14d, %eax
  19335. xorl %ecx, %edx
  19336. rorxl $13, %r10d, %ecx
  19337. vpaddd %ymm5, %ymm4, %ymm4
  19338. # rnd_0: 3 - 3
  19339. addl %edx, %r9d
  19340. rorxl $2, %r10d, %edx
  19341. xorl %r8d, %eax
  19342. vpshufb %ymm11, %ymm8, %ymm8
  19343. # rnd_0: 4 - 4
  19344. xorl %edx, %ecx
  19345. rorxl $22, %r10d, %edx
  19346. addl %eax, %r9d
  19347. vpaddd %ymm8, %ymm4, %ymm4
  19348. # rnd_0: 5 - 5
  19349. xorl %ecx, %edx
  19350. movl %r11d, %eax
  19351. addl %r9d, %r13d
  19352. vpshufd $0x50, %ymm4, %ymm6
  19353. # rnd_0: 6 - 6
  19354. xorl %r10d, %eax
  19355. addl %edx, %r9d
  19356. andl %eax, %ebx
  19357. vpsrlq $0x11, %ymm6, %ymm8
  19358. # rnd_0: 7 - 7
  19359. xorl %r11d, %ebx
  19360. rorxl $6, %r13d, %edx
  19361. addl %ebx, %r9d
  19362. vpsrlq $19, %ymm6, %ymm7
  19363. # rnd_1: 0 - 0
  19364. movl %r14d, %ebx
  19365. rorxl $11, %r13d, %ecx
  19366. addl 108(%rsp), %r8d
  19367. vpsrld $10, %ymm6, %ymm9
  19368. # rnd_1: 1 - 1
  19369. xorl %edx, %ecx
  19370. xorl %r15d, %ebx
  19371. rorxl $25, %r13d, %edx
  19372. vpxor %ymm7, %ymm8, %ymm8
  19373. # rnd_1: 2 - 2
  19374. andl %r13d, %ebx
  19375. xorl %ecx, %edx
  19376. rorxl $13, %r9d, %ecx
  19377. vpxor %ymm8, %ymm9, %ymm9
  19378. # rnd_1: 3 - 3
  19379. addl %edx, %r8d
  19380. rorxl $2, %r9d, %edx
  19381. xorl %r15d, %ebx
  19382. vpshufb %ymm12, %ymm9, %ymm9
  19383. # rnd_1: 4 - 4
  19384. xorl %edx, %ecx
  19385. rorxl $22, %r9d, %edx
  19386. addl %ebx, %r8d
  19387. vpaddd %ymm4, %ymm9, %ymm3
  19388. # rnd_1: 5 - 5
  19389. xorl %ecx, %edx
  19390. addl %r8d, %r12d
  19391. movl %r10d, %ebx
  19392. vpaddd 224+L_avx2_rorx_sha256_k(%rip), %ymm3, %ymm4
  19393. # rnd_1: 6 - 6
  19394. xorl %r9d, %ebx
  19395. addl %edx, %r8d
  19396. andl %ebx, %eax
  19397. # rnd_1: 7 - 7
  19398. xorl %r10d, %eax
  19399. rorxl $6, %r12d, %edx
  19400. addl %eax, %r8d
  19401. vmovdqu %ymm4, 224(%rsp)
  19402. # rnd_0: 0 - 0
  19403. movl %r13d, %eax
  19404. rorxl $11, %r12d, %ecx
  19405. addl 128(%rsp), %r15d
  19406. vpalignr $4, %ymm0, %ymm1, %ymm5
  19407. # rnd_0: 1 - 1
  19408. xorl %edx, %ecx
  19409. xorl %r14d, %eax
  19410. rorxl $25, %r12d, %edx
  19411. vpalignr $4, %ymm2, %ymm3, %ymm4
  19412. # rnd_0: 2 - 2
  19413. andl %r12d, %eax
  19414. xorl %ecx, %edx
  19415. rorxl $13, %r8d, %ecx
  19416. vpsrld $7, %ymm5, %ymm6
  19417. # rnd_0: 3 - 3
  19418. addl %edx, %r15d
  19419. rorxl $2, %r8d, %edx
  19420. xorl %r14d, %eax
  19421. vpslld $25, %ymm5, %ymm7
  19422. # rnd_0: 4 - 4
  19423. xorl %edx, %ecx
  19424. rorxl $22, %r8d, %edx
  19425. addl %eax, %r15d
  19426. vpsrld $18, %ymm5, %ymm8
  19427. # rnd_0: 5 - 5
  19428. xorl %ecx, %edx
  19429. movl %r9d, %eax
  19430. addl %r15d, %r11d
  19431. vpslld $14, %ymm5, %ymm9
  19432. # rnd_0: 6 - 6
  19433. xorl %r8d, %eax
  19434. addl %edx, %r15d
  19435. andl %eax, %ebx
  19436. vpor %ymm7, %ymm6, %ymm6
  19437. # rnd_0: 7 - 7
  19438. xorl %r9d, %ebx
  19439. rorxl $6, %r11d, %edx
  19440. addl %ebx, %r15d
  19441. vpor %ymm9, %ymm8, %ymm8
  19442. # rnd_1: 0 - 0
  19443. movl %r12d, %ebx
  19444. rorxl $11, %r11d, %ecx
  19445. addl 132(%rsp), %r14d
  19446. vpsrld $3, %ymm5, %ymm9
  19447. # rnd_1: 1 - 1
  19448. xorl %edx, %ecx
  19449. xorl %r13d, %ebx
  19450. rorxl $25, %r11d, %edx
  19451. vpxor %ymm8, %ymm6, %ymm6
  19452. # rnd_1: 2 - 2
  19453. andl %r11d, %ebx
  19454. xorl %ecx, %edx
  19455. rorxl $13, %r15d, %ecx
  19456. vpshufd $0xfa, %ymm3, %ymm7
  19457. # rnd_1: 3 - 3
  19458. addl %edx, %r14d
  19459. rorxl $2, %r15d, %edx
  19460. xorl %r13d, %ebx
  19461. vpxor %ymm6, %ymm9, %ymm5
  19462. # rnd_1: 4 - 4
  19463. xorl %edx, %ecx
  19464. rorxl $22, %r15d, %edx
  19465. addl %ebx, %r14d
  19466. vpsrld $10, %ymm7, %ymm8
  19467. # rnd_1: 5 - 5
  19468. xorl %ecx, %edx
  19469. addl %r14d, %r10d
  19470. movl %r8d, %ebx
  19471. vpsrlq $19, %ymm7, %ymm6
  19472. # rnd_1: 6 - 6
  19473. xorl %r15d, %ebx
  19474. addl %edx, %r14d
  19475. andl %ebx, %eax
  19476. vpsrlq $0x11, %ymm7, %ymm7
  19477. # rnd_1: 7 - 7
  19478. xorl %r8d, %eax
  19479. rorxl $6, %r10d, %edx
  19480. addl %eax, %r14d
  19481. vpaddd %ymm0, %ymm4, %ymm4
  19482. # rnd_0: 0 - 0
  19483. movl %r11d, %eax
  19484. rorxl $11, %r10d, %ecx
  19485. addl 136(%rsp), %r13d
  19486. vpxor %ymm7, %ymm6, %ymm6
  19487. # rnd_0: 1 - 1
  19488. xorl %edx, %ecx
  19489. xorl %r12d, %eax
  19490. rorxl $25, %r10d, %edx
  19491. vpxor %ymm6, %ymm8, %ymm8
  19492. # rnd_0: 2 - 2
  19493. andl %r10d, %eax
  19494. xorl %ecx, %edx
  19495. rorxl $13, %r14d, %ecx
  19496. vpaddd %ymm5, %ymm4, %ymm4
  19497. # rnd_0: 3 - 3
  19498. addl %edx, %r13d
  19499. rorxl $2, %r14d, %edx
  19500. xorl %r12d, %eax
  19501. vpshufb %ymm11, %ymm8, %ymm8
  19502. # rnd_0: 4 - 4
  19503. xorl %edx, %ecx
  19504. rorxl $22, %r14d, %edx
  19505. addl %eax, %r13d
  19506. vpaddd %ymm8, %ymm4, %ymm4
  19507. # rnd_0: 5 - 5
  19508. xorl %ecx, %edx
  19509. movl %r15d, %eax
  19510. addl %r13d, %r9d
  19511. vpshufd $0x50, %ymm4, %ymm6
  19512. # rnd_0: 6 - 6
  19513. xorl %r14d, %eax
  19514. addl %edx, %r13d
  19515. andl %eax, %ebx
  19516. vpsrlq $0x11, %ymm6, %ymm8
  19517. # rnd_0: 7 - 7
  19518. xorl %r15d, %ebx
  19519. rorxl $6, %r9d, %edx
  19520. addl %ebx, %r13d
  19521. vpsrlq $19, %ymm6, %ymm7
  19522. # rnd_1: 0 - 0
  19523. movl %r10d, %ebx
  19524. rorxl $11, %r9d, %ecx
  19525. addl 140(%rsp), %r12d
  19526. vpsrld $10, %ymm6, %ymm9
  19527. # rnd_1: 1 - 1
  19528. xorl %edx, %ecx
  19529. xorl %r11d, %ebx
  19530. rorxl $25, %r9d, %edx
  19531. vpxor %ymm7, %ymm8, %ymm8
  19532. # rnd_1: 2 - 2
  19533. andl %r9d, %ebx
  19534. xorl %ecx, %edx
  19535. rorxl $13, %r13d, %ecx
  19536. vpxor %ymm8, %ymm9, %ymm9
  19537. # rnd_1: 3 - 3
  19538. addl %edx, %r12d
  19539. rorxl $2, %r13d, %edx
  19540. xorl %r11d, %ebx
  19541. vpshufb %ymm12, %ymm9, %ymm9
  19542. # rnd_1: 4 - 4
  19543. xorl %edx, %ecx
  19544. rorxl $22, %r13d, %edx
  19545. addl %ebx, %r12d
  19546. vpaddd %ymm4, %ymm9, %ymm0
  19547. # rnd_1: 5 - 5
  19548. xorl %ecx, %edx
  19549. addl %r12d, %r8d
  19550. movl %r14d, %ebx
  19551. vpaddd 256+L_avx2_rorx_sha256_k(%rip), %ymm0, %ymm4
  19552. # rnd_1: 6 - 6
  19553. xorl %r13d, %ebx
  19554. addl %edx, %r12d
  19555. andl %ebx, %eax
  19556. # rnd_1: 7 - 7
  19557. xorl %r14d, %eax
  19558. rorxl $6, %r8d, %edx
  19559. addl %eax, %r12d
  19560. vmovdqu %ymm4, 256(%rsp)
  19561. # rnd_0: 0 - 0
  19562. movl %r9d, %eax
  19563. rorxl $11, %r8d, %ecx
  19564. addl 160(%rsp), %r11d
  19565. vpalignr $4, %ymm1, %ymm2, %ymm5
  19566. # rnd_0: 1 - 1
  19567. xorl %edx, %ecx
  19568. xorl %r10d, %eax
  19569. rorxl $25, %r8d, %edx
  19570. vpalignr $4, %ymm3, %ymm0, %ymm4
  19571. # rnd_0: 2 - 2
  19572. andl %r8d, %eax
  19573. xorl %ecx, %edx
  19574. rorxl $13, %r12d, %ecx
  19575. vpsrld $7, %ymm5, %ymm6
  19576. # rnd_0: 3 - 3
  19577. addl %edx, %r11d
  19578. rorxl $2, %r12d, %edx
  19579. xorl %r10d, %eax
  19580. vpslld $25, %ymm5, %ymm7
  19581. # rnd_0: 4 - 4
  19582. xorl %edx, %ecx
  19583. rorxl $22, %r12d, %edx
  19584. addl %eax, %r11d
  19585. vpsrld $18, %ymm5, %ymm8
  19586. # rnd_0: 5 - 5
  19587. xorl %ecx, %edx
  19588. movl %r13d, %eax
  19589. addl %r11d, %r15d
  19590. vpslld $14, %ymm5, %ymm9
  19591. # rnd_0: 6 - 6
  19592. xorl %r12d, %eax
  19593. addl %edx, %r11d
  19594. andl %eax, %ebx
  19595. vpor %ymm7, %ymm6, %ymm6
  19596. # rnd_0: 7 - 7
  19597. xorl %r13d, %ebx
  19598. rorxl $6, %r15d, %edx
  19599. addl %ebx, %r11d
  19600. vpor %ymm9, %ymm8, %ymm8
  19601. # rnd_1: 0 - 0
  19602. movl %r8d, %ebx
  19603. rorxl $11, %r15d, %ecx
  19604. addl 164(%rsp), %r10d
  19605. vpsrld $3, %ymm5, %ymm9
  19606. # rnd_1: 1 - 1
  19607. xorl %edx, %ecx
  19608. xorl %r9d, %ebx
  19609. rorxl $25, %r15d, %edx
  19610. vpxor %ymm8, %ymm6, %ymm6
  19611. # rnd_1: 2 - 2
  19612. andl %r15d, %ebx
  19613. xorl %ecx, %edx
  19614. rorxl $13, %r11d, %ecx
  19615. vpshufd $0xfa, %ymm0, %ymm7
  19616. # rnd_1: 3 - 3
  19617. addl %edx, %r10d
  19618. rorxl $2, %r11d, %edx
  19619. xorl %r9d, %ebx
  19620. vpxor %ymm6, %ymm9, %ymm5
  19621. # rnd_1: 4 - 4
  19622. xorl %edx, %ecx
  19623. rorxl $22, %r11d, %edx
  19624. addl %ebx, %r10d
  19625. vpsrld $10, %ymm7, %ymm8
  19626. # rnd_1: 5 - 5
  19627. xorl %ecx, %edx
  19628. addl %r10d, %r14d
  19629. movl %r12d, %ebx
  19630. vpsrlq $19, %ymm7, %ymm6
  19631. # rnd_1: 6 - 6
  19632. xorl %r11d, %ebx
  19633. addl %edx, %r10d
  19634. andl %ebx, %eax
  19635. vpsrlq $0x11, %ymm7, %ymm7
  19636. # rnd_1: 7 - 7
  19637. xorl %r12d, %eax
  19638. rorxl $6, %r14d, %edx
  19639. addl %eax, %r10d
  19640. vpaddd %ymm1, %ymm4, %ymm4
  19641. # rnd_0: 0 - 0
  19642. movl %r15d, %eax
  19643. rorxl $11, %r14d, %ecx
  19644. addl 168(%rsp), %r9d
  19645. vpxor %ymm7, %ymm6, %ymm6
  19646. # rnd_0: 1 - 1
  19647. xorl %edx, %ecx
  19648. xorl %r8d, %eax
  19649. rorxl $25, %r14d, %edx
  19650. vpxor %ymm6, %ymm8, %ymm8
  19651. # rnd_0: 2 - 2
  19652. andl %r14d, %eax
  19653. xorl %ecx, %edx
  19654. rorxl $13, %r10d, %ecx
  19655. vpaddd %ymm5, %ymm4, %ymm4
  19656. # rnd_0: 3 - 3
  19657. addl %edx, %r9d
  19658. rorxl $2, %r10d, %edx
  19659. xorl %r8d, %eax
  19660. vpshufb %ymm11, %ymm8, %ymm8
  19661. # rnd_0: 4 - 4
  19662. xorl %edx, %ecx
  19663. rorxl $22, %r10d, %edx
  19664. addl %eax, %r9d
  19665. vpaddd %ymm8, %ymm4, %ymm4
  19666. # rnd_0: 5 - 5
  19667. xorl %ecx, %edx
  19668. movl %r11d, %eax
  19669. addl %r9d, %r13d
  19670. vpshufd $0x50, %ymm4, %ymm6
  19671. # rnd_0: 6 - 6
  19672. xorl %r10d, %eax
  19673. addl %edx, %r9d
  19674. andl %eax, %ebx
  19675. vpsrlq $0x11, %ymm6, %ymm8
  19676. # rnd_0: 7 - 7
  19677. xorl %r11d, %ebx
  19678. rorxl $6, %r13d, %edx
  19679. addl %ebx, %r9d
  19680. vpsrlq $19, %ymm6, %ymm7
  19681. # rnd_1: 0 - 0
  19682. movl %r14d, %ebx
  19683. rorxl $11, %r13d, %ecx
  19684. addl 172(%rsp), %r8d
  19685. vpsrld $10, %ymm6, %ymm9
  19686. # rnd_1: 1 - 1
  19687. xorl %edx, %ecx
  19688. xorl %r15d, %ebx
  19689. rorxl $25, %r13d, %edx
  19690. vpxor %ymm7, %ymm8, %ymm8
  19691. # rnd_1: 2 - 2
  19692. andl %r13d, %ebx
  19693. xorl %ecx, %edx
  19694. rorxl $13, %r9d, %ecx
  19695. vpxor %ymm8, %ymm9, %ymm9
  19696. # rnd_1: 3 - 3
  19697. addl %edx, %r8d
  19698. rorxl $2, %r9d, %edx
  19699. xorl %r15d, %ebx
  19700. vpshufb %ymm12, %ymm9, %ymm9
  19701. # rnd_1: 4 - 4
  19702. xorl %edx, %ecx
  19703. rorxl $22, %r9d, %edx
  19704. addl %ebx, %r8d
  19705. vpaddd %ymm4, %ymm9, %ymm1
  19706. # rnd_1: 5 - 5
  19707. xorl %ecx, %edx
  19708. addl %r8d, %r12d
  19709. movl %r10d, %ebx
  19710. vpaddd 288+L_avx2_rorx_sha256_k(%rip), %ymm1, %ymm4
  19711. # rnd_1: 6 - 6
  19712. xorl %r9d, %ebx
  19713. addl %edx, %r8d
  19714. andl %ebx, %eax
  19715. # rnd_1: 7 - 7
  19716. xorl %r10d, %eax
  19717. rorxl $6, %r12d, %edx
  19718. addl %eax, %r8d
  19719. vmovdqu %ymm4, 288(%rsp)
  19720. # rnd_0: 0 - 0
  19721. movl %r13d, %eax
  19722. rorxl $11, %r12d, %ecx
  19723. addl 192(%rsp), %r15d
  19724. vpalignr $4, %ymm2, %ymm3, %ymm5
  19725. # rnd_0: 1 - 1
  19726. xorl %edx, %ecx
  19727. xorl %r14d, %eax
  19728. rorxl $25, %r12d, %edx
  19729. vpalignr $4, %ymm0, %ymm1, %ymm4
  19730. # rnd_0: 2 - 2
  19731. andl %r12d, %eax
  19732. xorl %ecx, %edx
  19733. rorxl $13, %r8d, %ecx
  19734. vpsrld $7, %ymm5, %ymm6
  19735. # rnd_0: 3 - 3
  19736. addl %edx, %r15d
  19737. rorxl $2, %r8d, %edx
  19738. xorl %r14d, %eax
  19739. vpslld $25, %ymm5, %ymm7
  19740. # rnd_0: 4 - 4
  19741. xorl %edx, %ecx
  19742. rorxl $22, %r8d, %edx
  19743. addl %eax, %r15d
  19744. vpsrld $18, %ymm5, %ymm8
  19745. # rnd_0: 5 - 5
  19746. xorl %ecx, %edx
  19747. movl %r9d, %eax
  19748. addl %r15d, %r11d
  19749. vpslld $14, %ymm5, %ymm9
  19750. # rnd_0: 6 - 6
  19751. xorl %r8d, %eax
  19752. addl %edx, %r15d
  19753. andl %eax, %ebx
  19754. vpor %ymm7, %ymm6, %ymm6
  19755. # rnd_0: 7 - 7
  19756. xorl %r9d, %ebx
  19757. rorxl $6, %r11d, %edx
  19758. addl %ebx, %r15d
  19759. vpor %ymm9, %ymm8, %ymm8
  19760. # rnd_1: 0 - 0
  19761. movl %r12d, %ebx
  19762. rorxl $11, %r11d, %ecx
  19763. addl 196(%rsp), %r14d
  19764. vpsrld $3, %ymm5, %ymm9
  19765. # rnd_1: 1 - 1
  19766. xorl %edx, %ecx
  19767. xorl %r13d, %ebx
  19768. rorxl $25, %r11d, %edx
  19769. vpxor %ymm8, %ymm6, %ymm6
  19770. # rnd_1: 2 - 2
  19771. andl %r11d, %ebx
  19772. xorl %ecx, %edx
  19773. rorxl $13, %r15d, %ecx
  19774. vpshufd $0xfa, %ymm1, %ymm7
  19775. # rnd_1: 3 - 3
  19776. addl %edx, %r14d
  19777. rorxl $2, %r15d, %edx
  19778. xorl %r13d, %ebx
  19779. vpxor %ymm6, %ymm9, %ymm5
  19780. # rnd_1: 4 - 4
  19781. xorl %edx, %ecx
  19782. rorxl $22, %r15d, %edx
  19783. addl %ebx, %r14d
  19784. vpsrld $10, %ymm7, %ymm8
  19785. # rnd_1: 5 - 5
  19786. xorl %ecx, %edx
  19787. addl %r14d, %r10d
  19788. movl %r8d, %ebx
  19789. vpsrlq $19, %ymm7, %ymm6
  19790. # rnd_1: 6 - 6
  19791. xorl %r15d, %ebx
  19792. addl %edx, %r14d
  19793. andl %ebx, %eax
  19794. vpsrlq $0x11, %ymm7, %ymm7
  19795. # rnd_1: 7 - 7
  19796. xorl %r8d, %eax
  19797. rorxl $6, %r10d, %edx
  19798. addl %eax, %r14d
  19799. vpaddd %ymm2, %ymm4, %ymm4
  19800. # rnd_0: 0 - 0
  19801. movl %r11d, %eax
  19802. rorxl $11, %r10d, %ecx
  19803. addl 200(%rsp), %r13d
  19804. vpxor %ymm7, %ymm6, %ymm6
  19805. # rnd_0: 1 - 1
  19806. xorl %edx, %ecx
  19807. xorl %r12d, %eax
  19808. rorxl $25, %r10d, %edx
  19809. vpxor %ymm6, %ymm8, %ymm8
  19810. # rnd_0: 2 - 2
  19811. andl %r10d, %eax
  19812. xorl %ecx, %edx
  19813. rorxl $13, %r14d, %ecx
  19814. vpaddd %ymm5, %ymm4, %ymm4
  19815. # rnd_0: 3 - 3
  19816. addl %edx, %r13d
  19817. rorxl $2, %r14d, %edx
  19818. xorl %r12d, %eax
  19819. vpshufb %ymm11, %ymm8, %ymm8
  19820. # rnd_0: 4 - 4
  19821. xorl %edx, %ecx
  19822. rorxl $22, %r14d, %edx
  19823. addl %eax, %r13d
  19824. vpaddd %ymm8, %ymm4, %ymm4
  19825. # rnd_0: 5 - 5
  19826. xorl %ecx, %edx
  19827. movl %r15d, %eax
  19828. addl %r13d, %r9d
  19829. vpshufd $0x50, %ymm4, %ymm6
  19830. # rnd_0: 6 - 6
  19831. xorl %r14d, %eax
  19832. addl %edx, %r13d
  19833. andl %eax, %ebx
  19834. vpsrlq $0x11, %ymm6, %ymm8
  19835. # rnd_0: 7 - 7
  19836. xorl %r15d, %ebx
  19837. rorxl $6, %r9d, %edx
  19838. addl %ebx, %r13d
  19839. vpsrlq $19, %ymm6, %ymm7
  19840. # rnd_1: 0 - 0
  19841. movl %r10d, %ebx
  19842. rorxl $11, %r9d, %ecx
  19843. addl 204(%rsp), %r12d
  19844. vpsrld $10, %ymm6, %ymm9
  19845. # rnd_1: 1 - 1
  19846. xorl %edx, %ecx
  19847. xorl %r11d, %ebx
  19848. rorxl $25, %r9d, %edx
  19849. vpxor %ymm7, %ymm8, %ymm8
  19850. # rnd_1: 2 - 2
  19851. andl %r9d, %ebx
  19852. xorl %ecx, %edx
  19853. rorxl $13, %r13d, %ecx
  19854. vpxor %ymm8, %ymm9, %ymm9
  19855. # rnd_1: 3 - 3
  19856. addl %edx, %r12d
  19857. rorxl $2, %r13d, %edx
  19858. xorl %r11d, %ebx
  19859. vpshufb %ymm12, %ymm9, %ymm9
  19860. # rnd_1: 4 - 4
  19861. xorl %edx, %ecx
  19862. rorxl $22, %r13d, %edx
  19863. addl %ebx, %r12d
  19864. vpaddd %ymm4, %ymm9, %ymm2
  19865. # rnd_1: 5 - 5
  19866. xorl %ecx, %edx
  19867. addl %r12d, %r8d
  19868. movl %r14d, %ebx
  19869. vpaddd 320+L_avx2_rorx_sha256_k(%rip), %ymm2, %ymm4
  19870. # rnd_1: 6 - 6
  19871. xorl %r13d, %ebx
  19872. addl %edx, %r12d
  19873. andl %ebx, %eax
  19874. # rnd_1: 7 - 7
  19875. xorl %r14d, %eax
  19876. rorxl $6, %r8d, %edx
  19877. addl %eax, %r12d
  19878. vmovdqu %ymm4, 320(%rsp)
  19879. # rnd_0: 0 - 0
  19880. movl %r9d, %eax
  19881. rorxl $11, %r8d, %ecx
  19882. addl 224(%rsp), %r11d
  19883. vpalignr $4, %ymm3, %ymm0, %ymm5
  19884. # rnd_0: 1 - 1
  19885. xorl %edx, %ecx
  19886. xorl %r10d, %eax
  19887. rorxl $25, %r8d, %edx
  19888. vpalignr $4, %ymm1, %ymm2, %ymm4
  19889. # rnd_0: 2 - 2
  19890. andl %r8d, %eax
  19891. xorl %ecx, %edx
  19892. rorxl $13, %r12d, %ecx
  19893. vpsrld $7, %ymm5, %ymm6
  19894. # rnd_0: 3 - 3
  19895. addl %edx, %r11d
  19896. rorxl $2, %r12d, %edx
  19897. xorl %r10d, %eax
  19898. vpslld $25, %ymm5, %ymm7
  19899. # rnd_0: 4 - 4
  19900. xorl %edx, %ecx
  19901. rorxl $22, %r12d, %edx
  19902. addl %eax, %r11d
  19903. vpsrld $18, %ymm5, %ymm8
  19904. # rnd_0: 5 - 5
  19905. xorl %ecx, %edx
  19906. movl %r13d, %eax
  19907. addl %r11d, %r15d
  19908. vpslld $14, %ymm5, %ymm9
  19909. # rnd_0: 6 - 6
  19910. xorl %r12d, %eax
  19911. addl %edx, %r11d
  19912. andl %eax, %ebx
  19913. vpor %ymm7, %ymm6, %ymm6
  19914. # rnd_0: 7 - 7
  19915. xorl %r13d, %ebx
  19916. rorxl $6, %r15d, %edx
  19917. addl %ebx, %r11d
  19918. vpor %ymm9, %ymm8, %ymm8
  19919. # rnd_1: 0 - 0
  19920. movl %r8d, %ebx
  19921. rorxl $11, %r15d, %ecx
  19922. addl 228(%rsp), %r10d
  19923. vpsrld $3, %ymm5, %ymm9
  19924. # rnd_1: 1 - 1
  19925. xorl %edx, %ecx
  19926. xorl %r9d, %ebx
  19927. rorxl $25, %r15d, %edx
  19928. vpxor %ymm8, %ymm6, %ymm6
  19929. # rnd_1: 2 - 2
  19930. andl %r15d, %ebx
  19931. xorl %ecx, %edx
  19932. rorxl $13, %r11d, %ecx
  19933. vpshufd $0xfa, %ymm2, %ymm7
  19934. # rnd_1: 3 - 3
  19935. addl %edx, %r10d
  19936. rorxl $2, %r11d, %edx
  19937. xorl %r9d, %ebx
  19938. vpxor %ymm6, %ymm9, %ymm5
  19939. # rnd_1: 4 - 4
  19940. xorl %edx, %ecx
  19941. rorxl $22, %r11d, %edx
  19942. addl %ebx, %r10d
  19943. vpsrld $10, %ymm7, %ymm8
  19944. # rnd_1: 5 - 5
  19945. xorl %ecx, %edx
  19946. addl %r10d, %r14d
  19947. movl %r12d, %ebx
  19948. vpsrlq $19, %ymm7, %ymm6
  19949. # rnd_1: 6 - 6
  19950. xorl %r11d, %ebx
  19951. addl %edx, %r10d
  19952. andl %ebx, %eax
  19953. vpsrlq $0x11, %ymm7, %ymm7
  19954. # rnd_1: 7 - 7
  19955. xorl %r12d, %eax
  19956. rorxl $6, %r14d, %edx
  19957. addl %eax, %r10d
  19958. vpaddd %ymm3, %ymm4, %ymm4
  19959. # rnd_0: 0 - 0
  19960. movl %r15d, %eax
  19961. rorxl $11, %r14d, %ecx
  19962. addl 232(%rsp), %r9d
  19963. vpxor %ymm7, %ymm6, %ymm6
  19964. # rnd_0: 1 - 1
  19965. xorl %edx, %ecx
  19966. xorl %r8d, %eax
  19967. rorxl $25, %r14d, %edx
  19968. vpxor %ymm6, %ymm8, %ymm8
  19969. # rnd_0: 2 - 2
  19970. andl %r14d, %eax
  19971. xorl %ecx, %edx
  19972. rorxl $13, %r10d, %ecx
  19973. vpaddd %ymm5, %ymm4, %ymm4
  19974. # rnd_0: 3 - 3
  19975. addl %edx, %r9d
  19976. rorxl $2, %r10d, %edx
  19977. xorl %r8d, %eax
  19978. vpshufb %ymm11, %ymm8, %ymm8
  19979. # rnd_0: 4 - 4
  19980. xorl %edx, %ecx
  19981. rorxl $22, %r10d, %edx
  19982. addl %eax, %r9d
  19983. vpaddd %ymm8, %ymm4, %ymm4
  19984. # rnd_0: 5 - 5
  19985. xorl %ecx, %edx
  19986. movl %r11d, %eax
  19987. addl %r9d, %r13d
  19988. vpshufd $0x50, %ymm4, %ymm6
  19989. # rnd_0: 6 - 6
  19990. xorl %r10d, %eax
  19991. addl %edx, %r9d
  19992. andl %eax, %ebx
  19993. vpsrlq $0x11, %ymm6, %ymm8
  19994. # rnd_0: 7 - 7
  19995. xorl %r11d, %ebx
  19996. rorxl $6, %r13d, %edx
  19997. addl %ebx, %r9d
  19998. vpsrlq $19, %ymm6, %ymm7
  19999. # rnd_1: 0 - 0
  20000. movl %r14d, %ebx
  20001. rorxl $11, %r13d, %ecx
  20002. addl 236(%rsp), %r8d
  20003. vpsrld $10, %ymm6, %ymm9
  20004. # rnd_1: 1 - 1
  20005. xorl %edx, %ecx
  20006. xorl %r15d, %ebx
  20007. rorxl $25, %r13d, %edx
  20008. vpxor %ymm7, %ymm8, %ymm8
  20009. # rnd_1: 2 - 2
  20010. andl %r13d, %ebx
  20011. xorl %ecx, %edx
  20012. rorxl $13, %r9d, %ecx
  20013. vpxor %ymm8, %ymm9, %ymm9
  20014. # rnd_1: 3 - 3
  20015. addl %edx, %r8d
  20016. rorxl $2, %r9d, %edx
  20017. xorl %r15d, %ebx
  20018. vpshufb %ymm12, %ymm9, %ymm9
  20019. # rnd_1: 4 - 4
  20020. xorl %edx, %ecx
  20021. rorxl $22, %r9d, %edx
  20022. addl %ebx, %r8d
  20023. vpaddd %ymm4, %ymm9, %ymm3
  20024. # rnd_1: 5 - 5
  20025. xorl %ecx, %edx
  20026. addl %r8d, %r12d
  20027. movl %r10d, %ebx
  20028. vpaddd 352+L_avx2_rorx_sha256_k(%rip), %ymm3, %ymm4
  20029. # rnd_1: 6 - 6
  20030. xorl %r9d, %ebx
  20031. addl %edx, %r8d
  20032. andl %ebx, %eax
  20033. # rnd_1: 7 - 7
  20034. xorl %r10d, %eax
  20035. rorxl $6, %r12d, %edx
  20036. addl %eax, %r8d
  20037. vmovdqu %ymm4, 352(%rsp)
  20038. # rnd_0: 0 - 0
  20039. movl %r13d, %eax
  20040. rorxl $11, %r12d, %ecx
  20041. addl 256(%rsp), %r15d
  20042. vpalignr $4, %ymm0, %ymm1, %ymm5
  20043. # rnd_0: 1 - 1
  20044. xorl %edx, %ecx
  20045. xorl %r14d, %eax
  20046. rorxl $25, %r12d, %edx
  20047. vpalignr $4, %ymm2, %ymm3, %ymm4
  20048. # rnd_0: 2 - 2
  20049. andl %r12d, %eax
  20050. xorl %ecx, %edx
  20051. rorxl $13, %r8d, %ecx
  20052. vpsrld $7, %ymm5, %ymm6
  20053. # rnd_0: 3 - 3
  20054. addl %edx, %r15d
  20055. rorxl $2, %r8d, %edx
  20056. xorl %r14d, %eax
  20057. vpslld $25, %ymm5, %ymm7
  20058. # rnd_0: 4 - 4
  20059. xorl %edx, %ecx
  20060. rorxl $22, %r8d, %edx
  20061. addl %eax, %r15d
  20062. vpsrld $18, %ymm5, %ymm8
  20063. # rnd_0: 5 - 5
  20064. xorl %ecx, %edx
  20065. movl %r9d, %eax
  20066. addl %r15d, %r11d
  20067. vpslld $14, %ymm5, %ymm9
  20068. # rnd_0: 6 - 6
  20069. xorl %r8d, %eax
  20070. addl %edx, %r15d
  20071. andl %eax, %ebx
  20072. vpor %ymm7, %ymm6, %ymm6
  20073. # rnd_0: 7 - 7
  20074. xorl %r9d, %ebx
  20075. rorxl $6, %r11d, %edx
  20076. addl %ebx, %r15d
  20077. vpor %ymm9, %ymm8, %ymm8
  20078. # rnd_1: 0 - 0
  20079. movl %r12d, %ebx
  20080. rorxl $11, %r11d, %ecx
  20081. addl 260(%rsp), %r14d
  20082. vpsrld $3, %ymm5, %ymm9
  20083. # rnd_1: 1 - 1
  20084. xorl %edx, %ecx
  20085. xorl %r13d, %ebx
  20086. rorxl $25, %r11d, %edx
  20087. vpxor %ymm8, %ymm6, %ymm6
  20088. # rnd_1: 2 - 2
  20089. andl %r11d, %ebx
  20090. xorl %ecx, %edx
  20091. rorxl $13, %r15d, %ecx
  20092. vpshufd $0xfa, %ymm3, %ymm7
  20093. # rnd_1: 3 - 3
  20094. addl %edx, %r14d
  20095. rorxl $2, %r15d, %edx
  20096. xorl %r13d, %ebx
  20097. vpxor %ymm6, %ymm9, %ymm5
  20098. # rnd_1: 4 - 4
  20099. xorl %edx, %ecx
  20100. rorxl $22, %r15d, %edx
  20101. addl %ebx, %r14d
  20102. vpsrld $10, %ymm7, %ymm8
  20103. # rnd_1: 5 - 5
  20104. xorl %ecx, %edx
  20105. addl %r14d, %r10d
  20106. movl %r8d, %ebx
  20107. vpsrlq $19, %ymm7, %ymm6
  20108. # rnd_1: 6 - 6
  20109. xorl %r15d, %ebx
  20110. addl %edx, %r14d
  20111. andl %ebx, %eax
  20112. vpsrlq $0x11, %ymm7, %ymm7
  20113. # rnd_1: 7 - 7
  20114. xorl %r8d, %eax
  20115. rorxl $6, %r10d, %edx
  20116. addl %eax, %r14d
  20117. vpaddd %ymm0, %ymm4, %ymm4
  20118. # rnd_0: 0 - 0
  20119. movl %r11d, %eax
  20120. rorxl $11, %r10d, %ecx
  20121. addl 264(%rsp), %r13d
  20122. vpxor %ymm7, %ymm6, %ymm6
  20123. # rnd_0: 1 - 1
  20124. xorl %edx, %ecx
  20125. xorl %r12d, %eax
  20126. rorxl $25, %r10d, %edx
  20127. vpxor %ymm6, %ymm8, %ymm8
  20128. # rnd_0: 2 - 2
  20129. andl %r10d, %eax
  20130. xorl %ecx, %edx
  20131. rorxl $13, %r14d, %ecx
  20132. vpaddd %ymm5, %ymm4, %ymm4
  20133. # rnd_0: 3 - 3
  20134. addl %edx, %r13d
  20135. rorxl $2, %r14d, %edx
  20136. xorl %r12d, %eax
  20137. vpshufb %ymm11, %ymm8, %ymm8
  20138. # rnd_0: 4 - 4
  20139. xorl %edx, %ecx
  20140. rorxl $22, %r14d, %edx
  20141. addl %eax, %r13d
  20142. vpaddd %ymm8, %ymm4, %ymm4
  20143. # rnd_0: 5 - 5
  20144. xorl %ecx, %edx
  20145. movl %r15d, %eax
  20146. addl %r13d, %r9d
  20147. vpshufd $0x50, %ymm4, %ymm6
  20148. # rnd_0: 6 - 6
  20149. xorl %r14d, %eax
  20150. addl %edx, %r13d
  20151. andl %eax, %ebx
  20152. vpsrlq $0x11, %ymm6, %ymm8
  20153. # rnd_0: 7 - 7
  20154. xorl %r15d, %ebx
  20155. rorxl $6, %r9d, %edx
  20156. addl %ebx, %r13d
  20157. vpsrlq $19, %ymm6, %ymm7
  20158. # rnd_1: 0 - 0
  20159. movl %r10d, %ebx
  20160. rorxl $11, %r9d, %ecx
  20161. addl 268(%rsp), %r12d
  20162. vpsrld $10, %ymm6, %ymm9
  20163. # rnd_1: 1 - 1
  20164. xorl %edx, %ecx
  20165. xorl %r11d, %ebx
  20166. rorxl $25, %r9d, %edx
  20167. vpxor %ymm7, %ymm8, %ymm8
  20168. # rnd_1: 2 - 2
  20169. andl %r9d, %ebx
  20170. xorl %ecx, %edx
  20171. rorxl $13, %r13d, %ecx
  20172. vpxor %ymm8, %ymm9, %ymm9
  20173. # rnd_1: 3 - 3
  20174. addl %edx, %r12d
  20175. rorxl $2, %r13d, %edx
  20176. xorl %r11d, %ebx
  20177. vpshufb %ymm12, %ymm9, %ymm9
  20178. # rnd_1: 4 - 4
  20179. xorl %edx, %ecx
  20180. rorxl $22, %r13d, %edx
  20181. addl %ebx, %r12d
  20182. vpaddd %ymm4, %ymm9, %ymm0
  20183. # rnd_1: 5 - 5
  20184. xorl %ecx, %edx
  20185. addl %r12d, %r8d
  20186. movl %r14d, %ebx
  20187. vpaddd 384+L_avx2_rorx_sha256_k(%rip), %ymm0, %ymm4
  20188. # rnd_1: 6 - 6
  20189. xorl %r13d, %ebx
  20190. addl %edx, %r12d
  20191. andl %ebx, %eax
  20192. # rnd_1: 7 - 7
  20193. xorl %r14d, %eax
  20194. rorxl $6, %r8d, %edx
  20195. addl %eax, %r12d
  20196. vmovdqu %ymm4, 384(%rsp)
  20197. # rnd_0: 0 - 0
  20198. movl %r9d, %eax
  20199. rorxl $11, %r8d, %ecx
  20200. addl 288(%rsp), %r11d
  20201. vpalignr $4, %ymm1, %ymm2, %ymm5
  20202. # rnd_0: 1 - 1
  20203. xorl %edx, %ecx
  20204. xorl %r10d, %eax
  20205. rorxl $25, %r8d, %edx
  20206. vpalignr $4, %ymm3, %ymm0, %ymm4
  20207. # rnd_0: 2 - 2
  20208. andl %r8d, %eax
  20209. xorl %ecx, %edx
  20210. rorxl $13, %r12d, %ecx
  20211. vpsrld $7, %ymm5, %ymm6
  20212. # rnd_0: 3 - 3
  20213. addl %edx, %r11d
  20214. rorxl $2, %r12d, %edx
  20215. xorl %r10d, %eax
  20216. vpslld $25, %ymm5, %ymm7
  20217. # rnd_0: 4 - 4
  20218. xorl %edx, %ecx
  20219. rorxl $22, %r12d, %edx
  20220. addl %eax, %r11d
  20221. vpsrld $18, %ymm5, %ymm8
  20222. # rnd_0: 5 - 5
  20223. xorl %ecx, %edx
  20224. movl %r13d, %eax
  20225. addl %r11d, %r15d
  20226. vpslld $14, %ymm5, %ymm9
  20227. # rnd_0: 6 - 6
  20228. xorl %r12d, %eax
  20229. addl %edx, %r11d
  20230. andl %eax, %ebx
  20231. vpor %ymm7, %ymm6, %ymm6
  20232. # rnd_0: 7 - 7
  20233. xorl %r13d, %ebx
  20234. rorxl $6, %r15d, %edx
  20235. addl %ebx, %r11d
  20236. vpor %ymm9, %ymm8, %ymm8
  20237. # rnd_1: 0 - 0
  20238. movl %r8d, %ebx
  20239. rorxl $11, %r15d, %ecx
  20240. addl 292(%rsp), %r10d
  20241. vpsrld $3, %ymm5, %ymm9
  20242. # rnd_1: 1 - 1
  20243. xorl %edx, %ecx
  20244. xorl %r9d, %ebx
  20245. rorxl $25, %r15d, %edx
  20246. vpxor %ymm8, %ymm6, %ymm6
  20247. # rnd_1: 2 - 2
  20248. andl %r15d, %ebx
  20249. xorl %ecx, %edx
  20250. rorxl $13, %r11d, %ecx
  20251. vpshufd $0xfa, %ymm0, %ymm7
  20252. # rnd_1: 3 - 3
  20253. addl %edx, %r10d
  20254. rorxl $2, %r11d, %edx
  20255. xorl %r9d, %ebx
  20256. vpxor %ymm6, %ymm9, %ymm5
  20257. # rnd_1: 4 - 4
  20258. xorl %edx, %ecx
  20259. rorxl $22, %r11d, %edx
  20260. addl %ebx, %r10d
  20261. vpsrld $10, %ymm7, %ymm8
  20262. # rnd_1: 5 - 5
  20263. xorl %ecx, %edx
  20264. addl %r10d, %r14d
  20265. movl %r12d, %ebx
  20266. vpsrlq $19, %ymm7, %ymm6
  20267. # rnd_1: 6 - 6
  20268. xorl %r11d, %ebx
  20269. addl %edx, %r10d
  20270. andl %ebx, %eax
  20271. vpsrlq $0x11, %ymm7, %ymm7
  20272. # rnd_1: 7 - 7
  20273. xorl %r12d, %eax
  20274. rorxl $6, %r14d, %edx
  20275. addl %eax, %r10d
  20276. vpaddd %ymm1, %ymm4, %ymm4
  20277. # rnd_0: 0 - 0
  20278. movl %r15d, %eax
  20279. rorxl $11, %r14d, %ecx
  20280. addl 296(%rsp), %r9d
  20281. vpxor %ymm7, %ymm6, %ymm6
  20282. # rnd_0: 1 - 1
  20283. xorl %edx, %ecx
  20284. xorl %r8d, %eax
  20285. rorxl $25, %r14d, %edx
  20286. vpxor %ymm6, %ymm8, %ymm8
  20287. # rnd_0: 2 - 2
  20288. andl %r14d, %eax
  20289. xorl %ecx, %edx
  20290. rorxl $13, %r10d, %ecx
  20291. vpaddd %ymm5, %ymm4, %ymm4
  20292. # rnd_0: 3 - 3
  20293. addl %edx, %r9d
  20294. rorxl $2, %r10d, %edx
  20295. xorl %r8d, %eax
  20296. vpshufb %ymm11, %ymm8, %ymm8
  20297. # rnd_0: 4 - 4
  20298. xorl %edx, %ecx
  20299. rorxl $22, %r10d, %edx
  20300. addl %eax, %r9d
  20301. vpaddd %ymm8, %ymm4, %ymm4
  20302. # rnd_0: 5 - 5
  20303. xorl %ecx, %edx
  20304. movl %r11d, %eax
  20305. addl %r9d, %r13d
  20306. vpshufd $0x50, %ymm4, %ymm6
  20307. # rnd_0: 6 - 6
  20308. xorl %r10d, %eax
  20309. addl %edx, %r9d
  20310. andl %eax, %ebx
  20311. vpsrlq $0x11, %ymm6, %ymm8
  20312. # rnd_0: 7 - 7
  20313. xorl %r11d, %ebx
  20314. rorxl $6, %r13d, %edx
  20315. addl %ebx, %r9d
  20316. vpsrlq $19, %ymm6, %ymm7
  20317. # rnd_1: 0 - 0
  20318. movl %r14d, %ebx
  20319. rorxl $11, %r13d, %ecx
  20320. addl 300(%rsp), %r8d
  20321. vpsrld $10, %ymm6, %ymm9
  20322. # rnd_1: 1 - 1
  20323. xorl %edx, %ecx
  20324. xorl %r15d, %ebx
  20325. rorxl $25, %r13d, %edx
  20326. vpxor %ymm7, %ymm8, %ymm8
  20327. # rnd_1: 2 - 2
  20328. andl %r13d, %ebx
  20329. xorl %ecx, %edx
  20330. rorxl $13, %r9d, %ecx
  20331. vpxor %ymm8, %ymm9, %ymm9
  20332. # rnd_1: 3 - 3
  20333. addl %edx, %r8d
  20334. rorxl $2, %r9d, %edx
  20335. xorl %r15d, %ebx
  20336. vpshufb %ymm12, %ymm9, %ymm9
  20337. # rnd_1: 4 - 4
  20338. xorl %edx, %ecx
  20339. rorxl $22, %r9d, %edx
  20340. addl %ebx, %r8d
  20341. vpaddd %ymm4, %ymm9, %ymm1
  20342. # rnd_1: 5 - 5
  20343. xorl %ecx, %edx
  20344. addl %r8d, %r12d
  20345. movl %r10d, %ebx
  20346. vpaddd 416+L_avx2_rorx_sha256_k(%rip), %ymm1, %ymm4
  20347. # rnd_1: 6 - 6
  20348. xorl %r9d, %ebx
  20349. addl %edx, %r8d
  20350. andl %ebx, %eax
  20351. # rnd_1: 7 - 7
  20352. xorl %r10d, %eax
  20353. rorxl $6, %r12d, %edx
  20354. addl %eax, %r8d
  20355. vmovdqu %ymm4, 416(%rsp)
  20356. # rnd_0: 0 - 0
  20357. movl %r13d, %eax
  20358. rorxl $11, %r12d, %ecx
  20359. addl 320(%rsp), %r15d
  20360. vpalignr $4, %ymm2, %ymm3, %ymm5
  20361. # rnd_0: 1 - 1
  20362. xorl %edx, %ecx
  20363. xorl %r14d, %eax
  20364. rorxl $25, %r12d, %edx
  20365. vpalignr $4, %ymm0, %ymm1, %ymm4
  20366. # rnd_0: 2 - 2
  20367. andl %r12d, %eax
  20368. xorl %ecx, %edx
  20369. rorxl $13, %r8d, %ecx
  20370. vpsrld $7, %ymm5, %ymm6
  20371. # rnd_0: 3 - 3
  20372. addl %edx, %r15d
  20373. rorxl $2, %r8d, %edx
  20374. xorl %r14d, %eax
  20375. vpslld $25, %ymm5, %ymm7
  20376. # rnd_0: 4 - 4
  20377. xorl %edx, %ecx
  20378. rorxl $22, %r8d, %edx
  20379. addl %eax, %r15d
  20380. vpsrld $18, %ymm5, %ymm8
  20381. # rnd_0: 5 - 5
  20382. xorl %ecx, %edx
  20383. movl %r9d, %eax
  20384. addl %r15d, %r11d
  20385. vpslld $14, %ymm5, %ymm9
  20386. # rnd_0: 6 - 6
  20387. xorl %r8d, %eax
  20388. addl %edx, %r15d
  20389. andl %eax, %ebx
  20390. vpor %ymm7, %ymm6, %ymm6
  20391. # rnd_0: 7 - 7
  20392. xorl %r9d, %ebx
  20393. rorxl $6, %r11d, %edx
  20394. addl %ebx, %r15d
  20395. vpor %ymm9, %ymm8, %ymm8
  20396. # rnd_1: 0 - 0
  20397. movl %r12d, %ebx
  20398. rorxl $11, %r11d, %ecx
  20399. addl 324(%rsp), %r14d
  20400. vpsrld $3, %ymm5, %ymm9
  20401. # rnd_1: 1 - 1
  20402. xorl %edx, %ecx
  20403. xorl %r13d, %ebx
  20404. rorxl $25, %r11d, %edx
  20405. vpxor %ymm8, %ymm6, %ymm6
  20406. # rnd_1: 2 - 2
  20407. andl %r11d, %ebx
  20408. xorl %ecx, %edx
  20409. rorxl $13, %r15d, %ecx
  20410. vpshufd $0xfa, %ymm1, %ymm7
  20411. # rnd_1: 3 - 3
  20412. addl %edx, %r14d
  20413. rorxl $2, %r15d, %edx
  20414. xorl %r13d, %ebx
  20415. vpxor %ymm6, %ymm9, %ymm5
  20416. # rnd_1: 4 - 4
  20417. xorl %edx, %ecx
  20418. rorxl $22, %r15d, %edx
  20419. addl %ebx, %r14d
  20420. vpsrld $10, %ymm7, %ymm8
  20421. # rnd_1: 5 - 5
  20422. xorl %ecx, %edx
  20423. addl %r14d, %r10d
  20424. movl %r8d, %ebx
  20425. vpsrlq $19, %ymm7, %ymm6
  20426. # rnd_1: 6 - 6
  20427. xorl %r15d, %ebx
  20428. addl %edx, %r14d
  20429. andl %ebx, %eax
  20430. vpsrlq $0x11, %ymm7, %ymm7
  20431. # rnd_1: 7 - 7
  20432. xorl %r8d, %eax
  20433. rorxl $6, %r10d, %edx
  20434. addl %eax, %r14d
  20435. vpaddd %ymm2, %ymm4, %ymm4
  20436. # rnd_0: 0 - 0
  20437. movl %r11d, %eax
  20438. rorxl $11, %r10d, %ecx
  20439. addl 328(%rsp), %r13d
  20440. vpxor %ymm7, %ymm6, %ymm6
  20441. # rnd_0: 1 - 1
  20442. xorl %edx, %ecx
  20443. xorl %r12d, %eax
  20444. rorxl $25, %r10d, %edx
  20445. vpxor %ymm6, %ymm8, %ymm8
  20446. # rnd_0: 2 - 2
  20447. andl %r10d, %eax
  20448. xorl %ecx, %edx
  20449. rorxl $13, %r14d, %ecx
  20450. vpaddd %ymm5, %ymm4, %ymm4
  20451. # rnd_0: 3 - 3
  20452. addl %edx, %r13d
  20453. rorxl $2, %r14d, %edx
  20454. xorl %r12d, %eax
  20455. vpshufb %ymm11, %ymm8, %ymm8
  20456. # rnd_0: 4 - 4
  20457. xorl %edx, %ecx
  20458. rorxl $22, %r14d, %edx
  20459. addl %eax, %r13d
  20460. vpaddd %ymm8, %ymm4, %ymm4
  20461. # rnd_0: 5 - 5
  20462. xorl %ecx, %edx
  20463. movl %r15d, %eax
  20464. addl %r13d, %r9d
  20465. vpshufd $0x50, %ymm4, %ymm6
  20466. # rnd_0: 6 - 6
  20467. xorl %r14d, %eax
  20468. addl %edx, %r13d
  20469. andl %eax, %ebx
  20470. vpsrlq $0x11, %ymm6, %ymm8
  20471. # rnd_0: 7 - 7
  20472. xorl %r15d, %ebx
  20473. rorxl $6, %r9d, %edx
  20474. addl %ebx, %r13d
  20475. vpsrlq $19, %ymm6, %ymm7
  20476. # rnd_1: 0 - 0
  20477. movl %r10d, %ebx
  20478. rorxl $11, %r9d, %ecx
  20479. addl 332(%rsp), %r12d
  20480. vpsrld $10, %ymm6, %ymm9
  20481. # rnd_1: 1 - 1
  20482. xorl %edx, %ecx
  20483. xorl %r11d, %ebx
  20484. rorxl $25, %r9d, %edx
  20485. vpxor %ymm7, %ymm8, %ymm8
  20486. # rnd_1: 2 - 2
  20487. andl %r9d, %ebx
  20488. xorl %ecx, %edx
  20489. rorxl $13, %r13d, %ecx
  20490. vpxor %ymm8, %ymm9, %ymm9
  20491. # rnd_1: 3 - 3
  20492. addl %edx, %r12d
  20493. rorxl $2, %r13d, %edx
  20494. xorl %r11d, %ebx
  20495. vpshufb %ymm12, %ymm9, %ymm9
  20496. # rnd_1: 4 - 4
  20497. xorl %edx, %ecx
  20498. rorxl $22, %r13d, %edx
  20499. addl %ebx, %r12d
  20500. vpaddd %ymm4, %ymm9, %ymm2
  20501. # rnd_1: 5 - 5
  20502. xorl %ecx, %edx
  20503. addl %r12d, %r8d
  20504. movl %r14d, %ebx
  20505. vpaddd 448+L_avx2_rorx_sha256_k(%rip), %ymm2, %ymm4
  20506. # rnd_1: 6 - 6
  20507. xorl %r13d, %ebx
  20508. addl %edx, %r12d
  20509. andl %ebx, %eax
  20510. # rnd_1: 7 - 7
  20511. xorl %r14d, %eax
  20512. rorxl $6, %r8d, %edx
  20513. addl %eax, %r12d
  20514. vmovdqu %ymm4, 448(%rsp)
  20515. # rnd_0: 0 - 0
  20516. movl %r9d, %eax
  20517. rorxl $11, %r8d, %ecx
  20518. addl 352(%rsp), %r11d
  20519. vpalignr $4, %ymm3, %ymm0, %ymm5
  20520. # rnd_0: 1 - 1
  20521. xorl %edx, %ecx
  20522. xorl %r10d, %eax
  20523. rorxl $25, %r8d, %edx
  20524. vpalignr $4, %ymm1, %ymm2, %ymm4
  20525. # rnd_0: 2 - 2
  20526. andl %r8d, %eax
  20527. xorl %ecx, %edx
  20528. rorxl $13, %r12d, %ecx
  20529. vpsrld $7, %ymm5, %ymm6
  20530. # rnd_0: 3 - 3
  20531. addl %edx, %r11d
  20532. rorxl $2, %r12d, %edx
  20533. xorl %r10d, %eax
  20534. vpslld $25, %ymm5, %ymm7
  20535. # rnd_0: 4 - 4
  20536. xorl %edx, %ecx
  20537. rorxl $22, %r12d, %edx
  20538. addl %eax, %r11d
  20539. vpsrld $18, %ymm5, %ymm8
  20540. # rnd_0: 5 - 5
  20541. xorl %ecx, %edx
  20542. movl %r13d, %eax
  20543. addl %r11d, %r15d
  20544. vpslld $14, %ymm5, %ymm9
  20545. # rnd_0: 6 - 6
  20546. xorl %r12d, %eax
  20547. addl %edx, %r11d
  20548. andl %eax, %ebx
  20549. vpor %ymm7, %ymm6, %ymm6
  20550. # rnd_0: 7 - 7
  20551. xorl %r13d, %ebx
  20552. rorxl $6, %r15d, %edx
  20553. addl %ebx, %r11d
  20554. vpor %ymm9, %ymm8, %ymm8
  20555. # rnd_1: 0 - 0
  20556. movl %r8d, %ebx
  20557. rorxl $11, %r15d, %ecx
  20558. addl 356(%rsp), %r10d
  20559. vpsrld $3, %ymm5, %ymm9
  20560. # rnd_1: 1 - 1
  20561. xorl %edx, %ecx
  20562. xorl %r9d, %ebx
  20563. rorxl $25, %r15d, %edx
  20564. vpxor %ymm8, %ymm6, %ymm6
  20565. # rnd_1: 2 - 2
  20566. andl %r15d, %ebx
  20567. xorl %ecx, %edx
  20568. rorxl $13, %r11d, %ecx
  20569. vpshufd $0xfa, %ymm2, %ymm7
  20570. # rnd_1: 3 - 3
  20571. addl %edx, %r10d
  20572. rorxl $2, %r11d, %edx
  20573. xorl %r9d, %ebx
  20574. vpxor %ymm6, %ymm9, %ymm5
  20575. # rnd_1: 4 - 4
  20576. xorl %edx, %ecx
  20577. rorxl $22, %r11d, %edx
  20578. addl %ebx, %r10d
  20579. vpsrld $10, %ymm7, %ymm8
  20580. # rnd_1: 5 - 5
  20581. xorl %ecx, %edx
  20582. addl %r10d, %r14d
  20583. movl %r12d, %ebx
  20584. vpsrlq $19, %ymm7, %ymm6
  20585. # rnd_1: 6 - 6
  20586. xorl %r11d, %ebx
  20587. addl %edx, %r10d
  20588. andl %ebx, %eax
  20589. vpsrlq $0x11, %ymm7, %ymm7
  20590. # rnd_1: 7 - 7
  20591. xorl %r12d, %eax
  20592. rorxl $6, %r14d, %edx
  20593. addl %eax, %r10d
  20594. vpaddd %ymm3, %ymm4, %ymm4
  20595. # rnd_0: 0 - 0
  20596. movl %r15d, %eax
  20597. rorxl $11, %r14d, %ecx
  20598. addl 360(%rsp), %r9d
  20599. vpxor %ymm7, %ymm6, %ymm6
  20600. # rnd_0: 1 - 1
  20601. xorl %edx, %ecx
  20602. xorl %r8d, %eax
  20603. rorxl $25, %r14d, %edx
  20604. vpxor %ymm6, %ymm8, %ymm8
  20605. # rnd_0: 2 - 2
  20606. andl %r14d, %eax
  20607. xorl %ecx, %edx
  20608. rorxl $13, %r10d, %ecx
  20609. vpaddd %ymm5, %ymm4, %ymm4
  20610. # rnd_0: 3 - 3
  20611. addl %edx, %r9d
  20612. rorxl $2, %r10d, %edx
  20613. xorl %r8d, %eax
  20614. vpshufb %ymm11, %ymm8, %ymm8
  20615. # rnd_0: 4 - 4
  20616. xorl %edx, %ecx
  20617. rorxl $22, %r10d, %edx
  20618. addl %eax, %r9d
  20619. vpaddd %ymm8, %ymm4, %ymm4
  20620. # rnd_0: 5 - 5
  20621. xorl %ecx, %edx
  20622. movl %r11d, %eax
  20623. addl %r9d, %r13d
  20624. vpshufd $0x50, %ymm4, %ymm6
  20625. # rnd_0: 6 - 6
  20626. xorl %r10d, %eax
  20627. addl %edx, %r9d
  20628. andl %eax, %ebx
  20629. vpsrlq $0x11, %ymm6, %ymm8
  20630. # rnd_0: 7 - 7
  20631. xorl %r11d, %ebx
  20632. rorxl $6, %r13d, %edx
  20633. addl %ebx, %r9d
  20634. vpsrlq $19, %ymm6, %ymm7
  20635. # rnd_1: 0 - 0
  20636. movl %r14d, %ebx
  20637. rorxl $11, %r13d, %ecx
  20638. addl 364(%rsp), %r8d
  20639. vpsrld $10, %ymm6, %ymm9
  20640. # rnd_1: 1 - 1
  20641. xorl %edx, %ecx
  20642. xorl %r15d, %ebx
  20643. rorxl $25, %r13d, %edx
  20644. vpxor %ymm7, %ymm8, %ymm8
  20645. # rnd_1: 2 - 2
  20646. andl %r13d, %ebx
  20647. xorl %ecx, %edx
  20648. rorxl $13, %r9d, %ecx
  20649. vpxor %ymm8, %ymm9, %ymm9
  20650. # rnd_1: 3 - 3
  20651. addl %edx, %r8d
  20652. rorxl $2, %r9d, %edx
  20653. xorl %r15d, %ebx
  20654. vpshufb %ymm12, %ymm9, %ymm9
  20655. # rnd_1: 4 - 4
  20656. xorl %edx, %ecx
  20657. rorxl $22, %r9d, %edx
  20658. addl %ebx, %r8d
  20659. vpaddd %ymm4, %ymm9, %ymm3
  20660. # rnd_1: 5 - 5
  20661. xorl %ecx, %edx
  20662. addl %r8d, %r12d
  20663. movl %r10d, %ebx
  20664. vpaddd 480+L_avx2_rorx_sha256_k(%rip), %ymm3, %ymm4
  20665. # rnd_1: 6 - 6
  20666. xorl %r9d, %ebx
  20667. addl %edx, %r8d
  20668. andl %ebx, %eax
  20669. # rnd_1: 7 - 7
  20670. xorl %r10d, %eax
  20671. rorxl $6, %r12d, %edx
  20672. addl %eax, %r8d
  20673. vmovdqu %ymm4, 480(%rsp)
  20674. xorl %eax, %eax
  20675. xorl %ecx, %ecx
  20676. rorxl $6, %r12d, %edx
  20677. rorxl $11, %r12d, %ecx
  20678. leal (%r8,%rax,1), %r8d
  20679. addl 384(%rsp), %r15d
  20680. movl %r13d, %eax
  20681. xorl %edx, %ecx
  20682. xorl %r14d, %eax
  20683. rorxl $25, %r12d, %edx
  20684. xorl %ecx, %edx
  20685. andl %r12d, %eax
  20686. addl %edx, %r15d
  20687. rorxl $2, %r8d, %edx
  20688. rorxl $13, %r8d, %ecx
  20689. xorl %r14d, %eax
  20690. xorl %edx, %ecx
  20691. rorxl $22, %r8d, %edx
  20692. addl %eax, %r15d
  20693. xorl %ecx, %edx
  20694. movl %r9d, %eax
  20695. addl %r15d, %r11d
  20696. xorl %r8d, %eax
  20697. andl %eax, %ebx
  20698. addl %edx, %r15d
  20699. xorl %r9d, %ebx
  20700. rorxl $6, %r11d, %edx
  20701. rorxl $11, %r11d, %ecx
  20702. addl %ebx, %r15d
  20703. addl 388(%rsp), %r14d
  20704. movl %r12d, %ebx
  20705. xorl %edx, %ecx
  20706. xorl %r13d, %ebx
  20707. rorxl $25, %r11d, %edx
  20708. xorl %ecx, %edx
  20709. andl %r11d, %ebx
  20710. addl %edx, %r14d
  20711. rorxl $2, %r15d, %edx
  20712. rorxl $13, %r15d, %ecx
  20713. xorl %r13d, %ebx
  20714. xorl %edx, %ecx
  20715. rorxl $22, %r15d, %edx
  20716. addl %ebx, %r14d
  20717. xorl %ecx, %edx
  20718. movl %r8d, %ebx
  20719. leal (%r10,%r14,1), %r10d
  20720. xorl %r15d, %ebx
  20721. andl %ebx, %eax
  20722. addl %edx, %r14d
  20723. xorl %r8d, %eax
  20724. rorxl $6, %r10d, %edx
  20725. rorxl $11, %r10d, %ecx
  20726. leal (%r14,%rax,1), %r14d
  20727. addl 392(%rsp), %r13d
  20728. movl %r11d, %eax
  20729. xorl %edx, %ecx
  20730. xorl %r12d, %eax
  20731. rorxl $25, %r10d, %edx
  20732. xorl %ecx, %edx
  20733. andl %r10d, %eax
  20734. addl %edx, %r13d
  20735. rorxl $2, %r14d, %edx
  20736. rorxl $13, %r14d, %ecx
  20737. xorl %r12d, %eax
  20738. xorl %edx, %ecx
  20739. rorxl $22, %r14d, %edx
  20740. addl %eax, %r13d
  20741. xorl %ecx, %edx
  20742. movl %r15d, %eax
  20743. addl %r13d, %r9d
  20744. xorl %r14d, %eax
  20745. andl %eax, %ebx
  20746. addl %edx, %r13d
  20747. xorl %r15d, %ebx
  20748. rorxl $6, %r9d, %edx
  20749. rorxl $11, %r9d, %ecx
  20750. addl %ebx, %r13d
  20751. addl 396(%rsp), %r12d
  20752. movl %r10d, %ebx
  20753. xorl %edx, %ecx
  20754. xorl %r11d, %ebx
  20755. rorxl $25, %r9d, %edx
  20756. xorl %ecx, %edx
  20757. andl %r9d, %ebx
  20758. addl %edx, %r12d
  20759. rorxl $2, %r13d, %edx
  20760. rorxl $13, %r13d, %ecx
  20761. xorl %r11d, %ebx
  20762. xorl %edx, %ecx
  20763. rorxl $22, %r13d, %edx
  20764. addl %ebx, %r12d
  20765. xorl %ecx, %edx
  20766. movl %r14d, %ebx
  20767. leal (%r8,%r12,1), %r8d
  20768. xorl %r13d, %ebx
  20769. andl %ebx, %eax
  20770. addl %edx, %r12d
  20771. xorl %r14d, %eax
  20772. rorxl $6, %r8d, %edx
  20773. rorxl $11, %r8d, %ecx
  20774. leal (%r12,%rax,1), %r12d
  20775. addl 416(%rsp), %r11d
  20776. movl %r9d, %eax
  20777. xorl %edx, %ecx
  20778. xorl %r10d, %eax
  20779. rorxl $25, %r8d, %edx
  20780. xorl %ecx, %edx
  20781. andl %r8d, %eax
  20782. addl %edx, %r11d
  20783. rorxl $2, %r12d, %edx
  20784. rorxl $13, %r12d, %ecx
  20785. xorl %r10d, %eax
  20786. xorl %edx, %ecx
  20787. rorxl $22, %r12d, %edx
  20788. addl %eax, %r11d
  20789. xorl %ecx, %edx
  20790. movl %r13d, %eax
  20791. addl %r11d, %r15d
  20792. xorl %r12d, %eax
  20793. andl %eax, %ebx
  20794. addl %edx, %r11d
  20795. xorl %r13d, %ebx
  20796. rorxl $6, %r15d, %edx
  20797. rorxl $11, %r15d, %ecx
  20798. addl %ebx, %r11d
  20799. addl 420(%rsp), %r10d
  20800. movl %r8d, %ebx
  20801. xorl %edx, %ecx
  20802. xorl %r9d, %ebx
  20803. rorxl $25, %r15d, %edx
  20804. xorl %ecx, %edx
  20805. andl %r15d, %ebx
  20806. addl %edx, %r10d
  20807. rorxl $2, %r11d, %edx
  20808. rorxl $13, %r11d, %ecx
  20809. xorl %r9d, %ebx
  20810. xorl %edx, %ecx
  20811. rorxl $22, %r11d, %edx
  20812. addl %ebx, %r10d
  20813. xorl %ecx, %edx
  20814. movl %r12d, %ebx
  20815. leal (%r14,%r10,1), %r14d
  20816. xorl %r11d, %ebx
  20817. andl %ebx, %eax
  20818. addl %edx, %r10d
  20819. xorl %r12d, %eax
  20820. rorxl $6, %r14d, %edx
  20821. rorxl $11, %r14d, %ecx
  20822. leal (%r10,%rax,1), %r10d
  20823. addl 424(%rsp), %r9d
  20824. movl %r15d, %eax
  20825. xorl %edx, %ecx
  20826. xorl %r8d, %eax
  20827. rorxl $25, %r14d, %edx
  20828. xorl %ecx, %edx
  20829. andl %r14d, %eax
  20830. addl %edx, %r9d
  20831. rorxl $2, %r10d, %edx
  20832. rorxl $13, %r10d, %ecx
  20833. xorl %r8d, %eax
  20834. xorl %edx, %ecx
  20835. rorxl $22, %r10d, %edx
  20836. addl %eax, %r9d
  20837. xorl %ecx, %edx
  20838. movl %r11d, %eax
  20839. addl %r9d, %r13d
  20840. xorl %r10d, %eax
  20841. andl %eax, %ebx
  20842. addl %edx, %r9d
  20843. xorl %r11d, %ebx
  20844. rorxl $6, %r13d, %edx
  20845. rorxl $11, %r13d, %ecx
  20846. addl %ebx, %r9d
  20847. addl 428(%rsp), %r8d
  20848. movl %r14d, %ebx
  20849. xorl %edx, %ecx
  20850. xorl %r15d, %ebx
  20851. rorxl $25, %r13d, %edx
  20852. xorl %ecx, %edx
  20853. andl %r13d, %ebx
  20854. addl %edx, %r8d
  20855. rorxl $2, %r9d, %edx
  20856. rorxl $13, %r9d, %ecx
  20857. xorl %r15d, %ebx
  20858. xorl %edx, %ecx
  20859. rorxl $22, %r9d, %edx
  20860. addl %ebx, %r8d
  20861. xorl %ecx, %edx
  20862. movl %r10d, %ebx
  20863. leal (%r12,%r8,1), %r12d
  20864. xorl %r9d, %ebx
  20865. andl %ebx, %eax
  20866. addl %edx, %r8d
  20867. xorl %r10d, %eax
  20868. rorxl $6, %r12d, %edx
  20869. rorxl $11, %r12d, %ecx
  20870. leal (%r8,%rax,1), %r8d
  20871. addl 448(%rsp), %r15d
  20872. movl %r13d, %eax
  20873. xorl %edx, %ecx
  20874. xorl %r14d, %eax
  20875. rorxl $25, %r12d, %edx
  20876. xorl %ecx, %edx
  20877. andl %r12d, %eax
  20878. addl %edx, %r15d
  20879. rorxl $2, %r8d, %edx
  20880. rorxl $13, %r8d, %ecx
  20881. xorl %r14d, %eax
  20882. xorl %edx, %ecx
  20883. rorxl $22, %r8d, %edx
  20884. addl %eax, %r15d
  20885. xorl %ecx, %edx
  20886. movl %r9d, %eax
  20887. addl %r15d, %r11d
  20888. xorl %r8d, %eax
  20889. andl %eax, %ebx
  20890. addl %edx, %r15d
  20891. xorl %r9d, %ebx
  20892. rorxl $6, %r11d, %edx
  20893. rorxl $11, %r11d, %ecx
  20894. addl %ebx, %r15d
  20895. addl 452(%rsp), %r14d
  20896. movl %r12d, %ebx
  20897. xorl %edx, %ecx
  20898. xorl %r13d, %ebx
  20899. rorxl $25, %r11d, %edx
  20900. xorl %ecx, %edx
  20901. andl %r11d, %ebx
  20902. addl %edx, %r14d
  20903. rorxl $2, %r15d, %edx
  20904. rorxl $13, %r15d, %ecx
  20905. xorl %r13d, %ebx
  20906. xorl %edx, %ecx
  20907. rorxl $22, %r15d, %edx
  20908. addl %ebx, %r14d
  20909. xorl %ecx, %edx
  20910. movl %r8d, %ebx
  20911. leal (%r10,%r14,1), %r10d
  20912. xorl %r15d, %ebx
  20913. andl %ebx, %eax
  20914. addl %edx, %r14d
  20915. xorl %r8d, %eax
  20916. rorxl $6, %r10d, %edx
  20917. rorxl $11, %r10d, %ecx
  20918. leal (%r14,%rax,1), %r14d
  20919. addl 456(%rsp), %r13d
  20920. movl %r11d, %eax
  20921. xorl %edx, %ecx
  20922. xorl %r12d, %eax
  20923. rorxl $25, %r10d, %edx
  20924. xorl %ecx, %edx
  20925. andl %r10d, %eax
  20926. addl %edx, %r13d
  20927. rorxl $2, %r14d, %edx
  20928. rorxl $13, %r14d, %ecx
  20929. xorl %r12d, %eax
  20930. xorl %edx, %ecx
  20931. rorxl $22, %r14d, %edx
  20932. addl %eax, %r13d
  20933. xorl %ecx, %edx
  20934. movl %r15d, %eax
  20935. addl %r13d, %r9d
  20936. xorl %r14d, %eax
  20937. andl %eax, %ebx
  20938. addl %edx, %r13d
  20939. xorl %r15d, %ebx
  20940. rorxl $6, %r9d, %edx
  20941. rorxl $11, %r9d, %ecx
  20942. addl %ebx, %r13d
  20943. addl 460(%rsp), %r12d
  20944. movl %r10d, %ebx
  20945. xorl %edx, %ecx
  20946. xorl %r11d, %ebx
  20947. rorxl $25, %r9d, %edx
  20948. xorl %ecx, %edx
  20949. andl %r9d, %ebx
  20950. addl %edx, %r12d
  20951. rorxl $2, %r13d, %edx
  20952. rorxl $13, %r13d, %ecx
  20953. xorl %r11d, %ebx
  20954. xorl %edx, %ecx
  20955. rorxl $22, %r13d, %edx
  20956. addl %ebx, %r12d
  20957. xorl %ecx, %edx
  20958. movl %r14d, %ebx
  20959. leal (%r8,%r12,1), %r8d
  20960. xorl %r13d, %ebx
  20961. andl %ebx, %eax
  20962. addl %edx, %r12d
  20963. xorl %r14d, %eax
  20964. rorxl $6, %r8d, %edx
  20965. rorxl $11, %r8d, %ecx
  20966. leal (%r12,%rax,1), %r12d
  20967. addl 480(%rsp), %r11d
  20968. movl %r9d, %eax
  20969. xorl %edx, %ecx
  20970. xorl %r10d, %eax
  20971. rorxl $25, %r8d, %edx
  20972. xorl %ecx, %edx
  20973. andl %r8d, %eax
  20974. addl %edx, %r11d
  20975. rorxl $2, %r12d, %edx
  20976. rorxl $13, %r12d, %ecx
  20977. xorl %r10d, %eax
  20978. xorl %edx, %ecx
  20979. rorxl $22, %r12d, %edx
  20980. addl %eax, %r11d
  20981. xorl %ecx, %edx
  20982. movl %r13d, %eax
  20983. addl %r11d, %r15d
  20984. xorl %r12d, %eax
  20985. andl %eax, %ebx
  20986. addl %edx, %r11d
  20987. xorl %r13d, %ebx
  20988. rorxl $6, %r15d, %edx
  20989. rorxl $11, %r15d, %ecx
  20990. addl %ebx, %r11d
  20991. addl 484(%rsp), %r10d
  20992. movl %r8d, %ebx
  20993. xorl %edx, %ecx
  20994. xorl %r9d, %ebx
  20995. rorxl $25, %r15d, %edx
  20996. xorl %ecx, %edx
  20997. andl %r15d, %ebx
  20998. addl %edx, %r10d
  20999. rorxl $2, %r11d, %edx
  21000. rorxl $13, %r11d, %ecx
  21001. xorl %r9d, %ebx
  21002. xorl %edx, %ecx
  21003. rorxl $22, %r11d, %edx
  21004. addl %ebx, %r10d
  21005. xorl %ecx, %edx
  21006. movl %r12d, %ebx
  21007. leal (%r14,%r10,1), %r14d
  21008. xorl %r11d, %ebx
  21009. andl %ebx, %eax
  21010. addl %edx, %r10d
  21011. xorl %r12d, %eax
  21012. rorxl $6, %r14d, %edx
  21013. rorxl $11, %r14d, %ecx
  21014. leal (%r10,%rax,1), %r10d
  21015. addl 488(%rsp), %r9d
  21016. movl %r15d, %eax
  21017. xorl %edx, %ecx
  21018. xorl %r8d, %eax
  21019. rorxl $25, %r14d, %edx
  21020. xorl %ecx, %edx
  21021. andl %r14d, %eax
  21022. addl %edx, %r9d
  21023. rorxl $2, %r10d, %edx
  21024. rorxl $13, %r10d, %ecx
  21025. xorl %r8d, %eax
  21026. xorl %edx, %ecx
  21027. rorxl $22, %r10d, %edx
  21028. addl %eax, %r9d
  21029. xorl %ecx, %edx
  21030. movl %r11d, %eax
  21031. addl %r9d, %r13d
  21032. xorl %r10d, %eax
  21033. andl %eax, %ebx
  21034. addl %edx, %r9d
  21035. xorl %r11d, %ebx
  21036. rorxl $6, %r13d, %edx
  21037. rorxl $11, %r13d, %ecx
  21038. addl %ebx, %r9d
  21039. addl 492(%rsp), %r8d
  21040. movl %r14d, %ebx
  21041. xorl %edx, %ecx
  21042. xorl %r15d, %ebx
  21043. rorxl $25, %r13d, %edx
  21044. xorl %ecx, %edx
  21045. andl %r13d, %ebx
  21046. addl %edx, %r8d
  21047. rorxl $2, %r9d, %edx
  21048. rorxl $13, %r9d, %ecx
  21049. xorl %r15d, %ebx
  21050. xorl %edx, %ecx
  21051. rorxl $22, %r9d, %edx
  21052. addl %ebx, %r8d
  21053. xorl %ecx, %edx
  21054. movl %r10d, %ebx
  21055. leal (%r12,%r8,1), %r12d
  21056. xorl %r9d, %ebx
  21057. andl %ebx, %eax
  21058. addl %edx, %r8d
  21059. xorl %r10d, %eax
  21060. addl %eax, %r8d
  21061. xorl %ecx, %ecx
  21062. addl (%rdi), %r8d
  21063. addl 4(%rdi), %r9d
  21064. addl 8(%rdi), %r10d
  21065. addl 12(%rdi), %r11d
  21066. addl 16(%rdi), %r12d
  21067. addl 20(%rdi), %r13d
  21068. addl 24(%rdi), %r14d
  21069. addl 28(%rdi), %r15d
  21070. movl %r8d, (%rdi)
  21071. movl %r9d, 4(%rdi)
  21072. movl %r10d, 8(%rdi)
  21073. movl %r11d, 12(%rdi)
  21074. movl %r12d, 16(%rdi)
  21075. movl %r13d, 20(%rdi)
  21076. movl %r14d, 24(%rdi)
  21077. movl %r15d, 28(%rdi)
  21078. movl %r9d, %ebx
  21079. xorl %eax, %eax
  21080. xorl %r10d, %ebx
  21081. rorxl $6, %r12d, %edx
  21082. rorxl $11, %r12d, %ecx
  21083. leal (%r8,%rax,1), %r8d
  21084. addl 16(%rsp), %r15d
  21085. movl %r13d, %eax
  21086. xorl %edx, %ecx
  21087. xorl %r14d, %eax
  21088. rorxl $25, %r12d, %edx
  21089. xorl %ecx, %edx
  21090. andl %r12d, %eax
  21091. addl %edx, %r15d
  21092. rorxl $2, %r8d, %edx
  21093. rorxl $13, %r8d, %ecx
  21094. xorl %r14d, %eax
  21095. xorl %edx, %ecx
  21096. rorxl $22, %r8d, %edx
  21097. addl %eax, %r15d
  21098. xorl %ecx, %edx
  21099. movl %r9d, %eax
  21100. addl %r15d, %r11d
  21101. xorl %r8d, %eax
  21102. andl %eax, %ebx
  21103. addl %edx, %r15d
  21104. xorl %r9d, %ebx
  21105. rorxl $6, %r11d, %edx
  21106. rorxl $11, %r11d, %ecx
  21107. addl %ebx, %r15d
  21108. addl 20(%rsp), %r14d
  21109. movl %r12d, %ebx
  21110. xorl %edx, %ecx
  21111. xorl %r13d, %ebx
  21112. rorxl $25, %r11d, %edx
  21113. xorl %ecx, %edx
  21114. andl %r11d, %ebx
  21115. addl %edx, %r14d
  21116. rorxl $2, %r15d, %edx
  21117. rorxl $13, %r15d, %ecx
  21118. xorl %r13d, %ebx
  21119. xorl %edx, %ecx
  21120. rorxl $22, %r15d, %edx
  21121. addl %ebx, %r14d
  21122. xorl %ecx, %edx
  21123. movl %r8d, %ebx
  21124. leal (%r10,%r14,1), %r10d
  21125. xorl %r15d, %ebx
  21126. andl %ebx, %eax
  21127. addl %edx, %r14d
  21128. xorl %r8d, %eax
  21129. rorxl $6, %r10d, %edx
  21130. rorxl $11, %r10d, %ecx
  21131. leal (%r14,%rax,1), %r14d
  21132. addl 24(%rsp), %r13d
  21133. movl %r11d, %eax
  21134. xorl %edx, %ecx
  21135. xorl %r12d, %eax
  21136. rorxl $25, %r10d, %edx
  21137. xorl %ecx, %edx
  21138. andl %r10d, %eax
  21139. addl %edx, %r13d
  21140. rorxl $2, %r14d, %edx
  21141. rorxl $13, %r14d, %ecx
  21142. xorl %r12d, %eax
  21143. xorl %edx, %ecx
  21144. rorxl $22, %r14d, %edx
  21145. addl %eax, %r13d
  21146. xorl %ecx, %edx
  21147. movl %r15d, %eax
  21148. addl %r13d, %r9d
  21149. xorl %r14d, %eax
  21150. andl %eax, %ebx
  21151. addl %edx, %r13d
  21152. xorl %r15d, %ebx
  21153. rorxl $6, %r9d, %edx
  21154. rorxl $11, %r9d, %ecx
  21155. addl %ebx, %r13d
  21156. addl 28(%rsp), %r12d
  21157. movl %r10d, %ebx
  21158. xorl %edx, %ecx
  21159. xorl %r11d, %ebx
  21160. rorxl $25, %r9d, %edx
  21161. xorl %ecx, %edx
  21162. andl %r9d, %ebx
  21163. addl %edx, %r12d
  21164. rorxl $2, %r13d, %edx
  21165. rorxl $13, %r13d, %ecx
  21166. xorl %r11d, %ebx
  21167. xorl %edx, %ecx
  21168. rorxl $22, %r13d, %edx
  21169. addl %ebx, %r12d
  21170. xorl %ecx, %edx
  21171. movl %r14d, %ebx
  21172. leal (%r8,%r12,1), %r8d
  21173. xorl %r13d, %ebx
  21174. andl %ebx, %eax
  21175. addl %edx, %r12d
  21176. xorl %r14d, %eax
  21177. rorxl $6, %r8d, %edx
  21178. rorxl $11, %r8d, %ecx
  21179. leal (%r12,%rax,1), %r12d
  21180. addl 48(%rsp), %r11d
  21181. movl %r9d, %eax
  21182. xorl %edx, %ecx
  21183. xorl %r10d, %eax
  21184. rorxl $25, %r8d, %edx
  21185. xorl %ecx, %edx
  21186. andl %r8d, %eax
  21187. addl %edx, %r11d
  21188. rorxl $2, %r12d, %edx
  21189. rorxl $13, %r12d, %ecx
  21190. xorl %r10d, %eax
  21191. xorl %edx, %ecx
  21192. rorxl $22, %r12d, %edx
  21193. addl %eax, %r11d
  21194. xorl %ecx, %edx
  21195. movl %r13d, %eax
  21196. addl %r11d, %r15d
  21197. xorl %r12d, %eax
  21198. andl %eax, %ebx
  21199. addl %edx, %r11d
  21200. xorl %r13d, %ebx
  21201. rorxl $6, %r15d, %edx
  21202. rorxl $11, %r15d, %ecx
  21203. addl %ebx, %r11d
  21204. addl 52(%rsp), %r10d
  21205. movl %r8d, %ebx
  21206. xorl %edx, %ecx
  21207. xorl %r9d, %ebx
  21208. rorxl $25, %r15d, %edx
  21209. xorl %ecx, %edx
  21210. andl %r15d, %ebx
  21211. addl %edx, %r10d
  21212. rorxl $2, %r11d, %edx
  21213. rorxl $13, %r11d, %ecx
  21214. xorl %r9d, %ebx
  21215. xorl %edx, %ecx
  21216. rorxl $22, %r11d, %edx
  21217. addl %ebx, %r10d
  21218. xorl %ecx, %edx
  21219. movl %r12d, %ebx
  21220. leal (%r14,%r10,1), %r14d
  21221. xorl %r11d, %ebx
  21222. andl %ebx, %eax
  21223. addl %edx, %r10d
  21224. xorl %r12d, %eax
  21225. rorxl $6, %r14d, %edx
  21226. rorxl $11, %r14d, %ecx
  21227. leal (%r10,%rax,1), %r10d
  21228. addl 56(%rsp), %r9d
  21229. movl %r15d, %eax
  21230. xorl %edx, %ecx
  21231. xorl %r8d, %eax
  21232. rorxl $25, %r14d, %edx
  21233. xorl %ecx, %edx
  21234. andl %r14d, %eax
  21235. addl %edx, %r9d
  21236. rorxl $2, %r10d, %edx
  21237. rorxl $13, %r10d, %ecx
  21238. xorl %r8d, %eax
  21239. xorl %edx, %ecx
  21240. rorxl $22, %r10d, %edx
  21241. addl %eax, %r9d
  21242. xorl %ecx, %edx
  21243. movl %r11d, %eax
  21244. addl %r9d, %r13d
  21245. xorl %r10d, %eax
  21246. andl %eax, %ebx
  21247. addl %edx, %r9d
  21248. xorl %r11d, %ebx
  21249. rorxl $6, %r13d, %edx
  21250. rorxl $11, %r13d, %ecx
  21251. addl %ebx, %r9d
  21252. addl 60(%rsp), %r8d
  21253. movl %r14d, %ebx
  21254. xorl %edx, %ecx
  21255. xorl %r15d, %ebx
  21256. rorxl $25, %r13d, %edx
  21257. xorl %ecx, %edx
  21258. andl %r13d, %ebx
  21259. addl %edx, %r8d
  21260. rorxl $2, %r9d, %edx
  21261. rorxl $13, %r9d, %ecx
  21262. xorl %r15d, %ebx
  21263. xorl %edx, %ecx
  21264. rorxl $22, %r9d, %edx
  21265. addl %ebx, %r8d
  21266. xorl %ecx, %edx
  21267. movl %r10d, %ebx
  21268. leal (%r12,%r8,1), %r12d
  21269. xorl %r9d, %ebx
  21270. andl %ebx, %eax
  21271. addl %edx, %r8d
  21272. xorl %r10d, %eax
  21273. rorxl $6, %r12d, %edx
  21274. rorxl $11, %r12d, %ecx
  21275. leal (%r8,%rax,1), %r8d
  21276. addl 80(%rsp), %r15d
  21277. movl %r13d, %eax
  21278. xorl %edx, %ecx
  21279. xorl %r14d, %eax
  21280. rorxl $25, %r12d, %edx
  21281. xorl %ecx, %edx
  21282. andl %r12d, %eax
  21283. addl %edx, %r15d
  21284. rorxl $2, %r8d, %edx
  21285. rorxl $13, %r8d, %ecx
  21286. xorl %r14d, %eax
  21287. xorl %edx, %ecx
  21288. rorxl $22, %r8d, %edx
  21289. addl %eax, %r15d
  21290. xorl %ecx, %edx
  21291. movl %r9d, %eax
  21292. addl %r15d, %r11d
  21293. xorl %r8d, %eax
  21294. andl %eax, %ebx
  21295. addl %edx, %r15d
  21296. xorl %r9d, %ebx
  21297. rorxl $6, %r11d, %edx
  21298. rorxl $11, %r11d, %ecx
  21299. addl %ebx, %r15d
  21300. addl 84(%rsp), %r14d
  21301. movl %r12d, %ebx
  21302. xorl %edx, %ecx
  21303. xorl %r13d, %ebx
  21304. rorxl $25, %r11d, %edx
  21305. xorl %ecx, %edx
  21306. andl %r11d, %ebx
  21307. addl %edx, %r14d
  21308. rorxl $2, %r15d, %edx
  21309. rorxl $13, %r15d, %ecx
  21310. xorl %r13d, %ebx
  21311. xorl %edx, %ecx
  21312. rorxl $22, %r15d, %edx
  21313. addl %ebx, %r14d
  21314. xorl %ecx, %edx
  21315. movl %r8d, %ebx
  21316. leal (%r10,%r14,1), %r10d
  21317. xorl %r15d, %ebx
  21318. andl %ebx, %eax
  21319. addl %edx, %r14d
  21320. xorl %r8d, %eax
  21321. rorxl $6, %r10d, %edx
  21322. rorxl $11, %r10d, %ecx
  21323. leal (%r14,%rax,1), %r14d
  21324. addl 88(%rsp), %r13d
  21325. movl %r11d, %eax
  21326. xorl %edx, %ecx
  21327. xorl %r12d, %eax
  21328. rorxl $25, %r10d, %edx
  21329. xorl %ecx, %edx
  21330. andl %r10d, %eax
  21331. addl %edx, %r13d
  21332. rorxl $2, %r14d, %edx
  21333. rorxl $13, %r14d, %ecx
  21334. xorl %r12d, %eax
  21335. xorl %edx, %ecx
  21336. rorxl $22, %r14d, %edx
  21337. addl %eax, %r13d
  21338. xorl %ecx, %edx
  21339. movl %r15d, %eax
  21340. addl %r13d, %r9d
  21341. xorl %r14d, %eax
  21342. andl %eax, %ebx
  21343. addl %edx, %r13d
  21344. xorl %r15d, %ebx
  21345. rorxl $6, %r9d, %edx
  21346. rorxl $11, %r9d, %ecx
  21347. addl %ebx, %r13d
  21348. addl 92(%rsp), %r12d
  21349. movl %r10d, %ebx
  21350. xorl %edx, %ecx
  21351. xorl %r11d, %ebx
  21352. rorxl $25, %r9d, %edx
  21353. xorl %ecx, %edx
  21354. andl %r9d, %ebx
  21355. addl %edx, %r12d
  21356. rorxl $2, %r13d, %edx
  21357. rorxl $13, %r13d, %ecx
  21358. xorl %r11d, %ebx
  21359. xorl %edx, %ecx
  21360. rorxl $22, %r13d, %edx
  21361. addl %ebx, %r12d
  21362. xorl %ecx, %edx
  21363. movl %r14d, %ebx
  21364. leal (%r8,%r12,1), %r8d
  21365. xorl %r13d, %ebx
  21366. andl %ebx, %eax
  21367. addl %edx, %r12d
  21368. xorl %r14d, %eax
  21369. rorxl $6, %r8d, %edx
  21370. rorxl $11, %r8d, %ecx
  21371. leal (%r12,%rax,1), %r12d
  21372. addl 112(%rsp), %r11d
  21373. movl %r9d, %eax
  21374. xorl %edx, %ecx
  21375. xorl %r10d, %eax
  21376. rorxl $25, %r8d, %edx
  21377. xorl %ecx, %edx
  21378. andl %r8d, %eax
  21379. addl %edx, %r11d
  21380. rorxl $2, %r12d, %edx
  21381. rorxl $13, %r12d, %ecx
  21382. xorl %r10d, %eax
  21383. xorl %edx, %ecx
  21384. rorxl $22, %r12d, %edx
  21385. addl %eax, %r11d
  21386. xorl %ecx, %edx
  21387. movl %r13d, %eax
  21388. addl %r11d, %r15d
  21389. xorl %r12d, %eax
  21390. andl %eax, %ebx
  21391. addl %edx, %r11d
  21392. xorl %r13d, %ebx
  21393. rorxl $6, %r15d, %edx
  21394. rorxl $11, %r15d, %ecx
  21395. addl %ebx, %r11d
  21396. addl 116(%rsp), %r10d
  21397. movl %r8d, %ebx
  21398. xorl %edx, %ecx
  21399. xorl %r9d, %ebx
  21400. rorxl $25, %r15d, %edx
  21401. xorl %ecx, %edx
  21402. andl %r15d, %ebx
  21403. addl %edx, %r10d
  21404. rorxl $2, %r11d, %edx
  21405. rorxl $13, %r11d, %ecx
  21406. xorl %r9d, %ebx
  21407. xorl %edx, %ecx
  21408. rorxl $22, %r11d, %edx
  21409. addl %ebx, %r10d
  21410. xorl %ecx, %edx
  21411. movl %r12d, %ebx
  21412. leal (%r14,%r10,1), %r14d
  21413. xorl %r11d, %ebx
  21414. andl %ebx, %eax
  21415. addl %edx, %r10d
  21416. xorl %r12d, %eax
  21417. rorxl $6, %r14d, %edx
  21418. rorxl $11, %r14d, %ecx
  21419. leal (%r10,%rax,1), %r10d
  21420. addl 120(%rsp), %r9d
  21421. movl %r15d, %eax
  21422. xorl %edx, %ecx
  21423. xorl %r8d, %eax
  21424. rorxl $25, %r14d, %edx
  21425. xorl %ecx, %edx
  21426. andl %r14d, %eax
  21427. addl %edx, %r9d
  21428. rorxl $2, %r10d, %edx
  21429. rorxl $13, %r10d, %ecx
  21430. xorl %r8d, %eax
  21431. xorl %edx, %ecx
  21432. rorxl $22, %r10d, %edx
  21433. addl %eax, %r9d
  21434. xorl %ecx, %edx
  21435. movl %r11d, %eax
  21436. addl %r9d, %r13d
  21437. xorl %r10d, %eax
  21438. andl %eax, %ebx
  21439. addl %edx, %r9d
  21440. xorl %r11d, %ebx
  21441. rorxl $6, %r13d, %edx
  21442. rorxl $11, %r13d, %ecx
  21443. addl %ebx, %r9d
  21444. addl 124(%rsp), %r8d
  21445. movl %r14d, %ebx
  21446. xorl %edx, %ecx
  21447. xorl %r15d, %ebx
  21448. rorxl $25, %r13d, %edx
  21449. xorl %ecx, %edx
  21450. andl %r13d, %ebx
  21451. addl %edx, %r8d
  21452. rorxl $2, %r9d, %edx
  21453. rorxl $13, %r9d, %ecx
  21454. xorl %r15d, %ebx
  21455. xorl %edx, %ecx
  21456. rorxl $22, %r9d, %edx
  21457. addl %ebx, %r8d
  21458. xorl %ecx, %edx
  21459. movl %r10d, %ebx
  21460. leal (%r12,%r8,1), %r12d
  21461. xorl %r9d, %ebx
  21462. andl %ebx, %eax
  21463. addl %edx, %r8d
  21464. xorl %r10d, %eax
  21465. rorxl $6, %r12d, %edx
  21466. rorxl $11, %r12d, %ecx
  21467. leal (%r8,%rax,1), %r8d
  21468. addl 144(%rsp), %r15d
  21469. movl %r13d, %eax
  21470. xorl %edx, %ecx
  21471. xorl %r14d, %eax
  21472. rorxl $25, %r12d, %edx
  21473. xorl %ecx, %edx
  21474. andl %r12d, %eax
  21475. addl %edx, %r15d
  21476. rorxl $2, %r8d, %edx
  21477. rorxl $13, %r8d, %ecx
  21478. xorl %r14d, %eax
  21479. xorl %edx, %ecx
  21480. rorxl $22, %r8d, %edx
  21481. addl %eax, %r15d
  21482. xorl %ecx, %edx
  21483. movl %r9d, %eax
  21484. addl %r15d, %r11d
  21485. xorl %r8d, %eax
  21486. andl %eax, %ebx
  21487. addl %edx, %r15d
  21488. xorl %r9d, %ebx
  21489. rorxl $6, %r11d, %edx
  21490. rorxl $11, %r11d, %ecx
  21491. addl %ebx, %r15d
  21492. addl 148(%rsp), %r14d
  21493. movl %r12d, %ebx
  21494. xorl %edx, %ecx
  21495. xorl %r13d, %ebx
  21496. rorxl $25, %r11d, %edx
  21497. xorl %ecx, %edx
  21498. andl %r11d, %ebx
  21499. addl %edx, %r14d
  21500. rorxl $2, %r15d, %edx
  21501. rorxl $13, %r15d, %ecx
  21502. xorl %r13d, %ebx
  21503. xorl %edx, %ecx
  21504. rorxl $22, %r15d, %edx
  21505. addl %ebx, %r14d
  21506. xorl %ecx, %edx
  21507. movl %r8d, %ebx
  21508. leal (%r10,%r14,1), %r10d
  21509. xorl %r15d, %ebx
  21510. andl %ebx, %eax
  21511. addl %edx, %r14d
  21512. xorl %r8d, %eax
  21513. rorxl $6, %r10d, %edx
  21514. rorxl $11, %r10d, %ecx
  21515. leal (%r14,%rax,1), %r14d
  21516. addl 152(%rsp), %r13d
  21517. movl %r11d, %eax
  21518. xorl %edx, %ecx
  21519. xorl %r12d, %eax
  21520. rorxl $25, %r10d, %edx
  21521. xorl %ecx, %edx
  21522. andl %r10d, %eax
  21523. addl %edx, %r13d
  21524. rorxl $2, %r14d, %edx
  21525. rorxl $13, %r14d, %ecx
  21526. xorl %r12d, %eax
  21527. xorl %edx, %ecx
  21528. rorxl $22, %r14d, %edx
  21529. addl %eax, %r13d
  21530. xorl %ecx, %edx
  21531. movl %r15d, %eax
  21532. addl %r13d, %r9d
  21533. xorl %r14d, %eax
  21534. andl %eax, %ebx
  21535. addl %edx, %r13d
  21536. xorl %r15d, %ebx
  21537. rorxl $6, %r9d, %edx
  21538. rorxl $11, %r9d, %ecx
  21539. addl %ebx, %r13d
  21540. addl 156(%rsp), %r12d
  21541. movl %r10d, %ebx
  21542. xorl %edx, %ecx
  21543. xorl %r11d, %ebx
  21544. rorxl $25, %r9d, %edx
  21545. xorl %ecx, %edx
  21546. andl %r9d, %ebx
  21547. addl %edx, %r12d
  21548. rorxl $2, %r13d, %edx
  21549. rorxl $13, %r13d, %ecx
  21550. xorl %r11d, %ebx
  21551. xorl %edx, %ecx
  21552. rorxl $22, %r13d, %edx
  21553. addl %ebx, %r12d
  21554. xorl %ecx, %edx
  21555. movl %r14d, %ebx
  21556. leal (%r8,%r12,1), %r8d
  21557. xorl %r13d, %ebx
  21558. andl %ebx, %eax
  21559. addl %edx, %r12d
  21560. xorl %r14d, %eax
  21561. rorxl $6, %r8d, %edx
  21562. rorxl $11, %r8d, %ecx
  21563. leal (%r12,%rax,1), %r12d
  21564. addl 176(%rsp), %r11d
  21565. movl %r9d, %eax
  21566. xorl %edx, %ecx
  21567. xorl %r10d, %eax
  21568. rorxl $25, %r8d, %edx
  21569. xorl %ecx, %edx
  21570. andl %r8d, %eax
  21571. addl %edx, %r11d
  21572. rorxl $2, %r12d, %edx
  21573. rorxl $13, %r12d, %ecx
  21574. xorl %r10d, %eax
  21575. xorl %edx, %ecx
  21576. rorxl $22, %r12d, %edx
  21577. addl %eax, %r11d
  21578. xorl %ecx, %edx
  21579. movl %r13d, %eax
  21580. addl %r11d, %r15d
  21581. xorl %r12d, %eax
  21582. andl %eax, %ebx
  21583. addl %edx, %r11d
  21584. xorl %r13d, %ebx
  21585. rorxl $6, %r15d, %edx
  21586. rorxl $11, %r15d, %ecx
  21587. addl %ebx, %r11d
  21588. addl 180(%rsp), %r10d
  21589. movl %r8d, %ebx
  21590. xorl %edx, %ecx
  21591. xorl %r9d, %ebx
  21592. rorxl $25, %r15d, %edx
  21593. xorl %ecx, %edx
  21594. andl %r15d, %ebx
  21595. addl %edx, %r10d
  21596. rorxl $2, %r11d, %edx
  21597. rorxl $13, %r11d, %ecx
  21598. xorl %r9d, %ebx
  21599. xorl %edx, %ecx
  21600. rorxl $22, %r11d, %edx
  21601. addl %ebx, %r10d
  21602. xorl %ecx, %edx
  21603. movl %r12d, %ebx
  21604. leal (%r14,%r10,1), %r14d
  21605. xorl %r11d, %ebx
  21606. andl %ebx, %eax
  21607. addl %edx, %r10d
  21608. xorl %r12d, %eax
  21609. rorxl $6, %r14d, %edx
  21610. rorxl $11, %r14d, %ecx
  21611. leal (%r10,%rax,1), %r10d
  21612. addl 184(%rsp), %r9d
  21613. movl %r15d, %eax
  21614. xorl %edx, %ecx
  21615. xorl %r8d, %eax
  21616. rorxl $25, %r14d, %edx
  21617. xorl %ecx, %edx
  21618. andl %r14d, %eax
  21619. addl %edx, %r9d
  21620. rorxl $2, %r10d, %edx
  21621. rorxl $13, %r10d, %ecx
  21622. xorl %r8d, %eax
  21623. xorl %edx, %ecx
  21624. rorxl $22, %r10d, %edx
  21625. addl %eax, %r9d
  21626. xorl %ecx, %edx
  21627. movl %r11d, %eax
  21628. addl %r9d, %r13d
  21629. xorl %r10d, %eax
  21630. andl %eax, %ebx
  21631. addl %edx, %r9d
  21632. xorl %r11d, %ebx
  21633. rorxl $6, %r13d, %edx
  21634. rorxl $11, %r13d, %ecx
  21635. addl %ebx, %r9d
  21636. addl 188(%rsp), %r8d
  21637. movl %r14d, %ebx
  21638. xorl %edx, %ecx
  21639. xorl %r15d, %ebx
  21640. rorxl $25, %r13d, %edx
  21641. xorl %ecx, %edx
  21642. andl %r13d, %ebx
  21643. addl %edx, %r8d
  21644. rorxl $2, %r9d, %edx
  21645. rorxl $13, %r9d, %ecx
  21646. xorl %r15d, %ebx
  21647. xorl %edx, %ecx
  21648. rorxl $22, %r9d, %edx
  21649. addl %ebx, %r8d
  21650. xorl %ecx, %edx
  21651. movl %r10d, %ebx
  21652. leal (%r12,%r8,1), %r12d
  21653. xorl %r9d, %ebx
  21654. andl %ebx, %eax
  21655. addl %edx, %r8d
  21656. xorl %r10d, %eax
  21657. rorxl $6, %r12d, %edx
  21658. rorxl $11, %r12d, %ecx
  21659. leal (%r8,%rax,1), %r8d
  21660. addl 208(%rsp), %r15d
  21661. movl %r13d, %eax
  21662. xorl %edx, %ecx
  21663. xorl %r14d, %eax
  21664. rorxl $25, %r12d, %edx
  21665. xorl %ecx, %edx
  21666. andl %r12d, %eax
  21667. addl %edx, %r15d
  21668. rorxl $2, %r8d, %edx
  21669. rorxl $13, %r8d, %ecx
  21670. xorl %r14d, %eax
  21671. xorl %edx, %ecx
  21672. rorxl $22, %r8d, %edx
  21673. addl %eax, %r15d
  21674. xorl %ecx, %edx
  21675. movl %r9d, %eax
  21676. addl %r15d, %r11d
  21677. xorl %r8d, %eax
  21678. andl %eax, %ebx
  21679. addl %edx, %r15d
  21680. xorl %r9d, %ebx
  21681. rorxl $6, %r11d, %edx
  21682. rorxl $11, %r11d, %ecx
  21683. addl %ebx, %r15d
  21684. addl 212(%rsp), %r14d
  21685. movl %r12d, %ebx
  21686. xorl %edx, %ecx
  21687. xorl %r13d, %ebx
  21688. rorxl $25, %r11d, %edx
  21689. xorl %ecx, %edx
  21690. andl %r11d, %ebx
  21691. addl %edx, %r14d
  21692. rorxl $2, %r15d, %edx
  21693. rorxl $13, %r15d, %ecx
  21694. xorl %r13d, %ebx
  21695. xorl %edx, %ecx
  21696. rorxl $22, %r15d, %edx
  21697. addl %ebx, %r14d
  21698. xorl %ecx, %edx
  21699. movl %r8d, %ebx
  21700. leal (%r10,%r14,1), %r10d
  21701. xorl %r15d, %ebx
  21702. andl %ebx, %eax
  21703. addl %edx, %r14d
  21704. xorl %r8d, %eax
  21705. rorxl $6, %r10d, %edx
  21706. rorxl $11, %r10d, %ecx
  21707. leal (%r14,%rax,1), %r14d
  21708. addl 216(%rsp), %r13d
  21709. movl %r11d, %eax
  21710. xorl %edx, %ecx
  21711. xorl %r12d, %eax
  21712. rorxl $25, %r10d, %edx
  21713. xorl %ecx, %edx
  21714. andl %r10d, %eax
  21715. addl %edx, %r13d
  21716. rorxl $2, %r14d, %edx
  21717. rorxl $13, %r14d, %ecx
  21718. xorl %r12d, %eax
  21719. xorl %edx, %ecx
  21720. rorxl $22, %r14d, %edx
  21721. addl %eax, %r13d
  21722. xorl %ecx, %edx
  21723. movl %r15d, %eax
  21724. addl %r13d, %r9d
  21725. xorl %r14d, %eax
  21726. andl %eax, %ebx
  21727. addl %edx, %r13d
  21728. xorl %r15d, %ebx
  21729. rorxl $6, %r9d, %edx
  21730. rorxl $11, %r9d, %ecx
  21731. addl %ebx, %r13d
  21732. addl 220(%rsp), %r12d
  21733. movl %r10d, %ebx
  21734. xorl %edx, %ecx
  21735. xorl %r11d, %ebx
  21736. rorxl $25, %r9d, %edx
  21737. xorl %ecx, %edx
  21738. andl %r9d, %ebx
  21739. addl %edx, %r12d
  21740. rorxl $2, %r13d, %edx
  21741. rorxl $13, %r13d, %ecx
  21742. xorl %r11d, %ebx
  21743. xorl %edx, %ecx
  21744. rorxl $22, %r13d, %edx
  21745. addl %ebx, %r12d
  21746. xorl %ecx, %edx
  21747. movl %r14d, %ebx
  21748. leal (%r8,%r12,1), %r8d
  21749. xorl %r13d, %ebx
  21750. andl %ebx, %eax
  21751. addl %edx, %r12d
  21752. xorl %r14d, %eax
  21753. rorxl $6, %r8d, %edx
  21754. rorxl $11, %r8d, %ecx
  21755. leal (%r12,%rax,1), %r12d
  21756. addl 240(%rsp), %r11d
  21757. movl %r9d, %eax
  21758. xorl %edx, %ecx
  21759. xorl %r10d, %eax
  21760. rorxl $25, %r8d, %edx
  21761. xorl %ecx, %edx
  21762. andl %r8d, %eax
  21763. addl %edx, %r11d
  21764. rorxl $2, %r12d, %edx
  21765. rorxl $13, %r12d, %ecx
  21766. xorl %r10d, %eax
  21767. xorl %edx, %ecx
  21768. rorxl $22, %r12d, %edx
  21769. addl %eax, %r11d
  21770. xorl %ecx, %edx
  21771. movl %r13d, %eax
  21772. addl %r11d, %r15d
  21773. xorl %r12d, %eax
  21774. andl %eax, %ebx
  21775. addl %edx, %r11d
  21776. xorl %r13d, %ebx
  21777. rorxl $6, %r15d, %edx
  21778. rorxl $11, %r15d, %ecx
  21779. addl %ebx, %r11d
  21780. addl 244(%rsp), %r10d
  21781. movl %r8d, %ebx
  21782. xorl %edx, %ecx
  21783. xorl %r9d, %ebx
  21784. rorxl $25, %r15d, %edx
  21785. xorl %ecx, %edx
  21786. andl %r15d, %ebx
  21787. addl %edx, %r10d
  21788. rorxl $2, %r11d, %edx
  21789. rorxl $13, %r11d, %ecx
  21790. xorl %r9d, %ebx
  21791. xorl %edx, %ecx
  21792. rorxl $22, %r11d, %edx
  21793. addl %ebx, %r10d
  21794. xorl %ecx, %edx
  21795. movl %r12d, %ebx
  21796. leal (%r14,%r10,1), %r14d
  21797. xorl %r11d, %ebx
  21798. andl %ebx, %eax
  21799. addl %edx, %r10d
  21800. xorl %r12d, %eax
  21801. rorxl $6, %r14d, %edx
  21802. rorxl $11, %r14d, %ecx
  21803. leal (%r10,%rax,1), %r10d
  21804. addl 248(%rsp), %r9d
  21805. movl %r15d, %eax
  21806. xorl %edx, %ecx
  21807. xorl %r8d, %eax
  21808. rorxl $25, %r14d, %edx
  21809. xorl %ecx, %edx
  21810. andl %r14d, %eax
  21811. addl %edx, %r9d
  21812. rorxl $2, %r10d, %edx
  21813. rorxl $13, %r10d, %ecx
  21814. xorl %r8d, %eax
  21815. xorl %edx, %ecx
  21816. rorxl $22, %r10d, %edx
  21817. addl %eax, %r9d
  21818. xorl %ecx, %edx
  21819. movl %r11d, %eax
  21820. addl %r9d, %r13d
  21821. xorl %r10d, %eax
  21822. andl %eax, %ebx
  21823. addl %edx, %r9d
  21824. xorl %r11d, %ebx
  21825. rorxl $6, %r13d, %edx
  21826. rorxl $11, %r13d, %ecx
  21827. addl %ebx, %r9d
  21828. addl 252(%rsp), %r8d
  21829. movl %r14d, %ebx
  21830. xorl %edx, %ecx
  21831. xorl %r15d, %ebx
  21832. rorxl $25, %r13d, %edx
  21833. xorl %ecx, %edx
  21834. andl %r13d, %ebx
  21835. addl %edx, %r8d
  21836. rorxl $2, %r9d, %edx
  21837. rorxl $13, %r9d, %ecx
  21838. xorl %r15d, %ebx
  21839. xorl %edx, %ecx
  21840. rorxl $22, %r9d, %edx
  21841. addl %ebx, %r8d
  21842. xorl %ecx, %edx
  21843. movl %r10d, %ebx
  21844. leal (%r12,%r8,1), %r12d
  21845. xorl %r9d, %ebx
  21846. andl %ebx, %eax
  21847. addl %edx, %r8d
  21848. xorl %r10d, %eax
  21849. rorxl $6, %r12d, %edx
  21850. rorxl $11, %r12d, %ecx
  21851. leal (%r8,%rax,1), %r8d
  21852. addl 272(%rsp), %r15d
  21853. movl %r13d, %eax
  21854. xorl %edx, %ecx
  21855. xorl %r14d, %eax
  21856. rorxl $25, %r12d, %edx
  21857. xorl %ecx, %edx
  21858. andl %r12d, %eax
  21859. addl %edx, %r15d
  21860. rorxl $2, %r8d, %edx
  21861. rorxl $13, %r8d, %ecx
  21862. xorl %r14d, %eax
  21863. xorl %edx, %ecx
  21864. rorxl $22, %r8d, %edx
  21865. addl %eax, %r15d
  21866. xorl %ecx, %edx
  21867. movl %r9d, %eax
  21868. addl %r15d, %r11d
  21869. xorl %r8d, %eax
  21870. andl %eax, %ebx
  21871. addl %edx, %r15d
  21872. xorl %r9d, %ebx
  21873. rorxl $6, %r11d, %edx
  21874. rorxl $11, %r11d, %ecx
  21875. addl %ebx, %r15d
  21876. addl 276(%rsp), %r14d
  21877. movl %r12d, %ebx
  21878. xorl %edx, %ecx
  21879. xorl %r13d, %ebx
  21880. rorxl $25, %r11d, %edx
  21881. xorl %ecx, %edx
  21882. andl %r11d, %ebx
  21883. addl %edx, %r14d
  21884. rorxl $2, %r15d, %edx
  21885. rorxl $13, %r15d, %ecx
  21886. xorl %r13d, %ebx
  21887. xorl %edx, %ecx
  21888. rorxl $22, %r15d, %edx
  21889. addl %ebx, %r14d
  21890. xorl %ecx, %edx
  21891. movl %r8d, %ebx
  21892. leal (%r10,%r14,1), %r10d
  21893. xorl %r15d, %ebx
  21894. andl %ebx, %eax
  21895. addl %edx, %r14d
  21896. xorl %r8d, %eax
  21897. rorxl $6, %r10d, %edx
  21898. rorxl $11, %r10d, %ecx
  21899. leal (%r14,%rax,1), %r14d
  21900. addl 280(%rsp), %r13d
  21901. movl %r11d, %eax
  21902. xorl %edx, %ecx
  21903. xorl %r12d, %eax
  21904. rorxl $25, %r10d, %edx
  21905. xorl %ecx, %edx
  21906. andl %r10d, %eax
  21907. addl %edx, %r13d
  21908. rorxl $2, %r14d, %edx
  21909. rorxl $13, %r14d, %ecx
  21910. xorl %r12d, %eax
  21911. xorl %edx, %ecx
  21912. rorxl $22, %r14d, %edx
  21913. addl %eax, %r13d
  21914. xorl %ecx, %edx
  21915. movl %r15d, %eax
  21916. addl %r13d, %r9d
  21917. xorl %r14d, %eax
  21918. andl %eax, %ebx
  21919. addl %edx, %r13d
  21920. xorl %r15d, %ebx
  21921. rorxl $6, %r9d, %edx
  21922. rorxl $11, %r9d, %ecx
  21923. addl %ebx, %r13d
  21924. addl 284(%rsp), %r12d
  21925. movl %r10d, %ebx
  21926. xorl %edx, %ecx
  21927. xorl %r11d, %ebx
  21928. rorxl $25, %r9d, %edx
  21929. xorl %ecx, %edx
  21930. andl %r9d, %ebx
  21931. addl %edx, %r12d
  21932. rorxl $2, %r13d, %edx
  21933. rorxl $13, %r13d, %ecx
  21934. xorl %r11d, %ebx
  21935. xorl %edx, %ecx
  21936. rorxl $22, %r13d, %edx
  21937. addl %ebx, %r12d
  21938. xorl %ecx, %edx
  21939. movl %r14d, %ebx
  21940. leal (%r8,%r12,1), %r8d
  21941. xorl %r13d, %ebx
  21942. andl %ebx, %eax
  21943. addl %edx, %r12d
  21944. xorl %r14d, %eax
  21945. rorxl $6, %r8d, %edx
  21946. rorxl $11, %r8d, %ecx
  21947. leal (%r12,%rax,1), %r12d
  21948. addl 304(%rsp), %r11d
  21949. movl %r9d, %eax
  21950. xorl %edx, %ecx
  21951. xorl %r10d, %eax
  21952. rorxl $25, %r8d, %edx
  21953. xorl %ecx, %edx
  21954. andl %r8d, %eax
  21955. addl %edx, %r11d
  21956. rorxl $2, %r12d, %edx
  21957. rorxl $13, %r12d, %ecx
  21958. xorl %r10d, %eax
  21959. xorl %edx, %ecx
  21960. rorxl $22, %r12d, %edx
  21961. addl %eax, %r11d
  21962. xorl %ecx, %edx
  21963. movl %r13d, %eax
  21964. addl %r11d, %r15d
  21965. xorl %r12d, %eax
  21966. andl %eax, %ebx
  21967. addl %edx, %r11d
  21968. xorl %r13d, %ebx
  21969. rorxl $6, %r15d, %edx
  21970. rorxl $11, %r15d, %ecx
  21971. addl %ebx, %r11d
  21972. addl 308(%rsp), %r10d
  21973. movl %r8d, %ebx
  21974. xorl %edx, %ecx
  21975. xorl %r9d, %ebx
  21976. rorxl $25, %r15d, %edx
  21977. xorl %ecx, %edx
  21978. andl %r15d, %ebx
  21979. addl %edx, %r10d
  21980. rorxl $2, %r11d, %edx
  21981. rorxl $13, %r11d, %ecx
  21982. xorl %r9d, %ebx
  21983. xorl %edx, %ecx
  21984. rorxl $22, %r11d, %edx
  21985. addl %ebx, %r10d
  21986. xorl %ecx, %edx
  21987. movl %r12d, %ebx
  21988. leal (%r14,%r10,1), %r14d
  21989. xorl %r11d, %ebx
  21990. andl %ebx, %eax
  21991. addl %edx, %r10d
  21992. xorl %r12d, %eax
  21993. rorxl $6, %r14d, %edx
  21994. rorxl $11, %r14d, %ecx
  21995. leal (%r10,%rax,1), %r10d
  21996. addl 312(%rsp), %r9d
  21997. movl %r15d, %eax
  21998. xorl %edx, %ecx
  21999. xorl %r8d, %eax
  22000. rorxl $25, %r14d, %edx
  22001. xorl %ecx, %edx
  22002. andl %r14d, %eax
  22003. addl %edx, %r9d
  22004. rorxl $2, %r10d, %edx
  22005. rorxl $13, %r10d, %ecx
  22006. xorl %r8d, %eax
  22007. xorl %edx, %ecx
  22008. rorxl $22, %r10d, %edx
  22009. addl %eax, %r9d
  22010. xorl %ecx, %edx
  22011. movl %r11d, %eax
  22012. addl %r9d, %r13d
  22013. xorl %r10d, %eax
  22014. andl %eax, %ebx
  22015. addl %edx, %r9d
  22016. xorl %r11d, %ebx
  22017. rorxl $6, %r13d, %edx
  22018. rorxl $11, %r13d, %ecx
  22019. addl %ebx, %r9d
  22020. addl 316(%rsp), %r8d
  22021. movl %r14d, %ebx
  22022. xorl %edx, %ecx
  22023. xorl %r15d, %ebx
  22024. rorxl $25, %r13d, %edx
  22025. xorl %ecx, %edx
  22026. andl %r13d, %ebx
  22027. addl %edx, %r8d
  22028. rorxl $2, %r9d, %edx
  22029. rorxl $13, %r9d, %ecx
  22030. xorl %r15d, %ebx
  22031. xorl %edx, %ecx
  22032. rorxl $22, %r9d, %edx
  22033. addl %ebx, %r8d
  22034. xorl %ecx, %edx
  22035. movl %r10d, %ebx
  22036. leal (%r12,%r8,1), %r12d
  22037. xorl %r9d, %ebx
  22038. andl %ebx, %eax
  22039. addl %edx, %r8d
  22040. xorl %r10d, %eax
  22041. rorxl $6, %r12d, %edx
  22042. rorxl $11, %r12d, %ecx
  22043. leal (%r8,%rax,1), %r8d
  22044. addl 336(%rsp), %r15d
  22045. movl %r13d, %eax
  22046. xorl %edx, %ecx
  22047. xorl %r14d, %eax
  22048. rorxl $25, %r12d, %edx
  22049. xorl %ecx, %edx
  22050. andl %r12d, %eax
  22051. addl %edx, %r15d
  22052. rorxl $2, %r8d, %edx
  22053. rorxl $13, %r8d, %ecx
  22054. xorl %r14d, %eax
  22055. xorl %edx, %ecx
  22056. rorxl $22, %r8d, %edx
  22057. addl %eax, %r15d
  22058. xorl %ecx, %edx
  22059. movl %r9d, %eax
  22060. addl %r15d, %r11d
  22061. xorl %r8d, %eax
  22062. andl %eax, %ebx
  22063. addl %edx, %r15d
  22064. xorl %r9d, %ebx
  22065. rorxl $6, %r11d, %edx
  22066. rorxl $11, %r11d, %ecx
  22067. addl %ebx, %r15d
  22068. addl 340(%rsp), %r14d
  22069. movl %r12d, %ebx
  22070. xorl %edx, %ecx
  22071. xorl %r13d, %ebx
  22072. rorxl $25, %r11d, %edx
  22073. xorl %ecx, %edx
  22074. andl %r11d, %ebx
  22075. addl %edx, %r14d
  22076. rorxl $2, %r15d, %edx
  22077. rorxl $13, %r15d, %ecx
  22078. xorl %r13d, %ebx
  22079. xorl %edx, %ecx
  22080. rorxl $22, %r15d, %edx
  22081. addl %ebx, %r14d
  22082. xorl %ecx, %edx
  22083. movl %r8d, %ebx
  22084. leal (%r10,%r14,1), %r10d
  22085. xorl %r15d, %ebx
  22086. andl %ebx, %eax
  22087. addl %edx, %r14d
  22088. xorl %r8d, %eax
  22089. rorxl $6, %r10d, %edx
  22090. rorxl $11, %r10d, %ecx
  22091. leal (%r14,%rax,1), %r14d
  22092. addl 344(%rsp), %r13d
  22093. movl %r11d, %eax
  22094. xorl %edx, %ecx
  22095. xorl %r12d, %eax
  22096. rorxl $25, %r10d, %edx
  22097. xorl %ecx, %edx
  22098. andl %r10d, %eax
  22099. addl %edx, %r13d
  22100. rorxl $2, %r14d, %edx
  22101. rorxl $13, %r14d, %ecx
  22102. xorl %r12d, %eax
  22103. xorl %edx, %ecx
  22104. rorxl $22, %r14d, %edx
  22105. addl %eax, %r13d
  22106. xorl %ecx, %edx
  22107. movl %r15d, %eax
  22108. addl %r13d, %r9d
  22109. xorl %r14d, %eax
  22110. andl %eax, %ebx
  22111. addl %edx, %r13d
  22112. xorl %r15d, %ebx
  22113. rorxl $6, %r9d, %edx
  22114. rorxl $11, %r9d, %ecx
  22115. addl %ebx, %r13d
  22116. addl 348(%rsp), %r12d
  22117. movl %r10d, %ebx
  22118. xorl %edx, %ecx
  22119. xorl %r11d, %ebx
  22120. rorxl $25, %r9d, %edx
  22121. xorl %ecx, %edx
  22122. andl %r9d, %ebx
  22123. addl %edx, %r12d
  22124. rorxl $2, %r13d, %edx
  22125. rorxl $13, %r13d, %ecx
  22126. xorl %r11d, %ebx
  22127. xorl %edx, %ecx
  22128. rorxl $22, %r13d, %edx
  22129. addl %ebx, %r12d
  22130. xorl %ecx, %edx
  22131. movl %r14d, %ebx
  22132. leal (%r8,%r12,1), %r8d
  22133. xorl %r13d, %ebx
  22134. andl %ebx, %eax
  22135. addl %edx, %r12d
  22136. xorl %r14d, %eax
  22137. rorxl $6, %r8d, %edx
  22138. rorxl $11, %r8d, %ecx
  22139. leal (%r12,%rax,1), %r12d
  22140. addl 368(%rsp), %r11d
  22141. movl %r9d, %eax
  22142. xorl %edx, %ecx
  22143. xorl %r10d, %eax
  22144. rorxl $25, %r8d, %edx
  22145. xorl %ecx, %edx
  22146. andl %r8d, %eax
  22147. addl %edx, %r11d
  22148. rorxl $2, %r12d, %edx
  22149. rorxl $13, %r12d, %ecx
  22150. xorl %r10d, %eax
  22151. xorl %edx, %ecx
  22152. rorxl $22, %r12d, %edx
  22153. addl %eax, %r11d
  22154. xorl %ecx, %edx
  22155. movl %r13d, %eax
  22156. addl %r11d, %r15d
  22157. xorl %r12d, %eax
  22158. andl %eax, %ebx
  22159. addl %edx, %r11d
  22160. xorl %r13d, %ebx
  22161. rorxl $6, %r15d, %edx
  22162. rorxl $11, %r15d, %ecx
  22163. addl %ebx, %r11d
  22164. addl 372(%rsp), %r10d
  22165. movl %r8d, %ebx
  22166. xorl %edx, %ecx
  22167. xorl %r9d, %ebx
  22168. rorxl $25, %r15d, %edx
  22169. xorl %ecx, %edx
  22170. andl %r15d, %ebx
  22171. addl %edx, %r10d
  22172. rorxl $2, %r11d, %edx
  22173. rorxl $13, %r11d, %ecx
  22174. xorl %r9d, %ebx
  22175. xorl %edx, %ecx
  22176. rorxl $22, %r11d, %edx
  22177. addl %ebx, %r10d
  22178. xorl %ecx, %edx
  22179. movl %r12d, %ebx
  22180. leal (%r14,%r10,1), %r14d
  22181. xorl %r11d, %ebx
  22182. andl %ebx, %eax
  22183. addl %edx, %r10d
  22184. xorl %r12d, %eax
  22185. rorxl $6, %r14d, %edx
  22186. rorxl $11, %r14d, %ecx
  22187. leal (%r10,%rax,1), %r10d
  22188. addl 376(%rsp), %r9d
  22189. movl %r15d, %eax
  22190. xorl %edx, %ecx
  22191. xorl %r8d, %eax
  22192. rorxl $25, %r14d, %edx
  22193. xorl %ecx, %edx
  22194. andl %r14d, %eax
  22195. addl %edx, %r9d
  22196. rorxl $2, %r10d, %edx
  22197. rorxl $13, %r10d, %ecx
  22198. xorl %r8d, %eax
  22199. xorl %edx, %ecx
  22200. rorxl $22, %r10d, %edx
  22201. addl %eax, %r9d
  22202. xorl %ecx, %edx
  22203. movl %r11d, %eax
  22204. addl %r9d, %r13d
  22205. xorl %r10d, %eax
  22206. andl %eax, %ebx
  22207. addl %edx, %r9d
  22208. xorl %r11d, %ebx
  22209. rorxl $6, %r13d, %edx
  22210. rorxl $11, %r13d, %ecx
  22211. addl %ebx, %r9d
  22212. addl 380(%rsp), %r8d
  22213. movl %r14d, %ebx
  22214. xorl %edx, %ecx
  22215. xorl %r15d, %ebx
  22216. rorxl $25, %r13d, %edx
  22217. xorl %ecx, %edx
  22218. andl %r13d, %ebx
  22219. addl %edx, %r8d
  22220. rorxl $2, %r9d, %edx
  22221. rorxl $13, %r9d, %ecx
  22222. xorl %r15d, %ebx
  22223. xorl %edx, %ecx
  22224. rorxl $22, %r9d, %edx
  22225. addl %ebx, %r8d
  22226. xorl %ecx, %edx
  22227. movl %r10d, %ebx
  22228. leal (%r12,%r8,1), %r12d
  22229. xorl %r9d, %ebx
  22230. andl %ebx, %eax
  22231. addl %edx, %r8d
  22232. xorl %r10d, %eax
  22233. rorxl $6, %r12d, %edx
  22234. rorxl $11, %r12d, %ecx
  22235. leal (%r8,%rax,1), %r8d
  22236. addl 400(%rsp), %r15d
  22237. movl %r13d, %eax
  22238. xorl %edx, %ecx
  22239. xorl %r14d, %eax
  22240. rorxl $25, %r12d, %edx
  22241. xorl %ecx, %edx
  22242. andl %r12d, %eax
  22243. addl %edx, %r15d
  22244. rorxl $2, %r8d, %edx
  22245. rorxl $13, %r8d, %ecx
  22246. xorl %r14d, %eax
  22247. xorl %edx, %ecx
  22248. rorxl $22, %r8d, %edx
  22249. addl %eax, %r15d
  22250. xorl %ecx, %edx
  22251. movl %r9d, %eax
  22252. addl %r15d, %r11d
  22253. xorl %r8d, %eax
  22254. andl %eax, %ebx
  22255. addl %edx, %r15d
  22256. xorl %r9d, %ebx
  22257. rorxl $6, %r11d, %edx
  22258. rorxl $11, %r11d, %ecx
  22259. addl %ebx, %r15d
  22260. addl 404(%rsp), %r14d
  22261. movl %r12d, %ebx
  22262. xorl %edx, %ecx
  22263. xorl %r13d, %ebx
  22264. rorxl $25, %r11d, %edx
  22265. xorl %ecx, %edx
  22266. andl %r11d, %ebx
  22267. addl %edx, %r14d
  22268. rorxl $2, %r15d, %edx
  22269. rorxl $13, %r15d, %ecx
  22270. xorl %r13d, %ebx
  22271. xorl %edx, %ecx
  22272. rorxl $22, %r15d, %edx
  22273. addl %ebx, %r14d
  22274. xorl %ecx, %edx
  22275. movl %r8d, %ebx
  22276. leal (%r10,%r14,1), %r10d
  22277. xorl %r15d, %ebx
  22278. andl %ebx, %eax
  22279. addl %edx, %r14d
  22280. xorl %r8d, %eax
  22281. rorxl $6, %r10d, %edx
  22282. rorxl $11, %r10d, %ecx
  22283. leal (%r14,%rax,1), %r14d
  22284. addl 408(%rsp), %r13d
  22285. movl %r11d, %eax
  22286. xorl %edx, %ecx
  22287. xorl %r12d, %eax
  22288. rorxl $25, %r10d, %edx
  22289. xorl %ecx, %edx
  22290. andl %r10d, %eax
  22291. addl %edx, %r13d
  22292. rorxl $2, %r14d, %edx
  22293. rorxl $13, %r14d, %ecx
  22294. xorl %r12d, %eax
  22295. xorl %edx, %ecx
  22296. rorxl $22, %r14d, %edx
  22297. addl %eax, %r13d
  22298. xorl %ecx, %edx
  22299. movl %r15d, %eax
  22300. addl %r13d, %r9d
  22301. xorl %r14d, %eax
  22302. andl %eax, %ebx
  22303. addl %edx, %r13d
  22304. xorl %r15d, %ebx
  22305. rorxl $6, %r9d, %edx
  22306. rorxl $11, %r9d, %ecx
  22307. addl %ebx, %r13d
  22308. addl 412(%rsp), %r12d
  22309. movl %r10d, %ebx
  22310. xorl %edx, %ecx
  22311. xorl %r11d, %ebx
  22312. rorxl $25, %r9d, %edx
  22313. xorl %ecx, %edx
  22314. andl %r9d, %ebx
  22315. addl %edx, %r12d
  22316. rorxl $2, %r13d, %edx
  22317. rorxl $13, %r13d, %ecx
  22318. xorl %r11d, %ebx
  22319. xorl %edx, %ecx
  22320. rorxl $22, %r13d, %edx
  22321. addl %ebx, %r12d
  22322. xorl %ecx, %edx
  22323. movl %r14d, %ebx
  22324. leal (%r8,%r12,1), %r8d
  22325. xorl %r13d, %ebx
  22326. andl %ebx, %eax
  22327. addl %edx, %r12d
  22328. xorl %r14d, %eax
  22329. rorxl $6, %r8d, %edx
  22330. rorxl $11, %r8d, %ecx
  22331. leal (%r12,%rax,1), %r12d
  22332. addl 432(%rsp), %r11d
  22333. movl %r9d, %eax
  22334. xorl %edx, %ecx
  22335. xorl %r10d, %eax
  22336. rorxl $25, %r8d, %edx
  22337. xorl %ecx, %edx
  22338. andl %r8d, %eax
  22339. addl %edx, %r11d
  22340. rorxl $2, %r12d, %edx
  22341. rorxl $13, %r12d, %ecx
  22342. xorl %r10d, %eax
  22343. xorl %edx, %ecx
  22344. rorxl $22, %r12d, %edx
  22345. addl %eax, %r11d
  22346. xorl %ecx, %edx
  22347. movl %r13d, %eax
  22348. addl %r11d, %r15d
  22349. xorl %r12d, %eax
  22350. andl %eax, %ebx
  22351. addl %edx, %r11d
  22352. xorl %r13d, %ebx
  22353. rorxl $6, %r15d, %edx
  22354. rorxl $11, %r15d, %ecx
  22355. addl %ebx, %r11d
  22356. addl 436(%rsp), %r10d
  22357. movl %r8d, %ebx
  22358. xorl %edx, %ecx
  22359. xorl %r9d, %ebx
  22360. rorxl $25, %r15d, %edx
  22361. xorl %ecx, %edx
  22362. andl %r15d, %ebx
  22363. addl %edx, %r10d
  22364. rorxl $2, %r11d, %edx
  22365. rorxl $13, %r11d, %ecx
  22366. xorl %r9d, %ebx
  22367. xorl %edx, %ecx
  22368. rorxl $22, %r11d, %edx
  22369. addl %ebx, %r10d
  22370. xorl %ecx, %edx
  22371. movl %r12d, %ebx
  22372. leal (%r14,%r10,1), %r14d
  22373. xorl %r11d, %ebx
  22374. andl %ebx, %eax
  22375. addl %edx, %r10d
  22376. xorl %r12d, %eax
  22377. rorxl $6, %r14d, %edx
  22378. rorxl $11, %r14d, %ecx
  22379. leal (%r10,%rax,1), %r10d
  22380. addl 440(%rsp), %r9d
  22381. movl %r15d, %eax
  22382. xorl %edx, %ecx
  22383. xorl %r8d, %eax
  22384. rorxl $25, %r14d, %edx
  22385. xorl %ecx, %edx
  22386. andl %r14d, %eax
  22387. addl %edx, %r9d
  22388. rorxl $2, %r10d, %edx
  22389. rorxl $13, %r10d, %ecx
  22390. xorl %r8d, %eax
  22391. xorl %edx, %ecx
  22392. rorxl $22, %r10d, %edx
  22393. addl %eax, %r9d
  22394. xorl %ecx, %edx
  22395. movl %r11d, %eax
  22396. addl %r9d, %r13d
  22397. xorl %r10d, %eax
  22398. andl %eax, %ebx
  22399. addl %edx, %r9d
  22400. xorl %r11d, %ebx
  22401. rorxl $6, %r13d, %edx
  22402. rorxl $11, %r13d, %ecx
  22403. addl %ebx, %r9d
  22404. addl 444(%rsp), %r8d
  22405. movl %r14d, %ebx
  22406. xorl %edx, %ecx
  22407. xorl %r15d, %ebx
  22408. rorxl $25, %r13d, %edx
  22409. xorl %ecx, %edx
  22410. andl %r13d, %ebx
  22411. addl %edx, %r8d
  22412. rorxl $2, %r9d, %edx
  22413. rorxl $13, %r9d, %ecx
  22414. xorl %r15d, %ebx
  22415. xorl %edx, %ecx
  22416. rorxl $22, %r9d, %edx
  22417. addl %ebx, %r8d
  22418. xorl %ecx, %edx
  22419. movl %r10d, %ebx
  22420. leal (%r12,%r8,1), %r12d
  22421. xorl %r9d, %ebx
  22422. andl %ebx, %eax
  22423. addl %edx, %r8d
  22424. xorl %r10d, %eax
  22425. rorxl $6, %r12d, %edx
  22426. rorxl $11, %r12d, %ecx
  22427. leal (%r8,%rax,1), %r8d
  22428. addl 464(%rsp), %r15d
  22429. movl %r13d, %eax
  22430. xorl %edx, %ecx
  22431. xorl %r14d, %eax
  22432. rorxl $25, %r12d, %edx
  22433. xorl %ecx, %edx
  22434. andl %r12d, %eax
  22435. addl %edx, %r15d
  22436. rorxl $2, %r8d, %edx
  22437. rorxl $13, %r8d, %ecx
  22438. xorl %r14d, %eax
  22439. xorl %edx, %ecx
  22440. rorxl $22, %r8d, %edx
  22441. addl %eax, %r15d
  22442. xorl %ecx, %edx
  22443. movl %r9d, %eax
  22444. addl %r15d, %r11d
  22445. xorl %r8d, %eax
  22446. andl %eax, %ebx
  22447. addl %edx, %r15d
  22448. xorl %r9d, %ebx
  22449. rorxl $6, %r11d, %edx
  22450. rorxl $11, %r11d, %ecx
  22451. addl %ebx, %r15d
  22452. addl 468(%rsp), %r14d
  22453. movl %r12d, %ebx
  22454. xorl %edx, %ecx
  22455. xorl %r13d, %ebx
  22456. rorxl $25, %r11d, %edx
  22457. xorl %ecx, %edx
  22458. andl %r11d, %ebx
  22459. addl %edx, %r14d
  22460. rorxl $2, %r15d, %edx
  22461. rorxl $13, %r15d, %ecx
  22462. xorl %r13d, %ebx
  22463. xorl %edx, %ecx
  22464. rorxl $22, %r15d, %edx
  22465. addl %ebx, %r14d
  22466. xorl %ecx, %edx
  22467. movl %r8d, %ebx
  22468. leal (%r10,%r14,1), %r10d
  22469. xorl %r15d, %ebx
  22470. andl %ebx, %eax
  22471. addl %edx, %r14d
  22472. xorl %r8d, %eax
  22473. rorxl $6, %r10d, %edx
  22474. rorxl $11, %r10d, %ecx
  22475. leal (%r14,%rax,1), %r14d
  22476. addl 472(%rsp), %r13d
  22477. movl %r11d, %eax
  22478. xorl %edx, %ecx
  22479. xorl %r12d, %eax
  22480. rorxl $25, %r10d, %edx
  22481. xorl %ecx, %edx
  22482. andl %r10d, %eax
  22483. addl %edx, %r13d
  22484. rorxl $2, %r14d, %edx
  22485. rorxl $13, %r14d, %ecx
  22486. xorl %r12d, %eax
  22487. xorl %edx, %ecx
  22488. rorxl $22, %r14d, %edx
  22489. addl %eax, %r13d
  22490. xorl %ecx, %edx
  22491. movl %r15d, %eax
  22492. addl %r13d, %r9d
  22493. xorl %r14d, %eax
  22494. andl %eax, %ebx
  22495. addl %edx, %r13d
  22496. xorl %r15d, %ebx
  22497. rorxl $6, %r9d, %edx
  22498. rorxl $11, %r9d, %ecx
  22499. addl %ebx, %r13d
  22500. addl 476(%rsp), %r12d
  22501. movl %r10d, %ebx
  22502. xorl %edx, %ecx
  22503. xorl %r11d, %ebx
  22504. rorxl $25, %r9d, %edx
  22505. xorl %ecx, %edx
  22506. andl %r9d, %ebx
  22507. addl %edx, %r12d
  22508. rorxl $2, %r13d, %edx
  22509. rorxl $13, %r13d, %ecx
  22510. xorl %r11d, %ebx
  22511. xorl %edx, %ecx
  22512. rorxl $22, %r13d, %edx
  22513. addl %ebx, %r12d
  22514. xorl %ecx, %edx
  22515. movl %r14d, %ebx
  22516. leal (%r8,%r12,1), %r8d
  22517. xorl %r13d, %ebx
  22518. andl %ebx, %eax
  22519. addl %edx, %r12d
  22520. xorl %r14d, %eax
  22521. rorxl $6, %r8d, %edx
  22522. rorxl $11, %r8d, %ecx
  22523. leal (%r12,%rax,1), %r12d
  22524. addl 496(%rsp), %r11d
  22525. movl %r9d, %eax
  22526. xorl %edx, %ecx
  22527. xorl %r10d, %eax
  22528. rorxl $25, %r8d, %edx
  22529. xorl %ecx, %edx
  22530. andl %r8d, %eax
  22531. addl %edx, %r11d
  22532. rorxl $2, %r12d, %edx
  22533. rorxl $13, %r12d, %ecx
  22534. xorl %r10d, %eax
  22535. xorl %edx, %ecx
  22536. rorxl $22, %r12d, %edx
  22537. addl %eax, %r11d
  22538. xorl %ecx, %edx
  22539. movl %r13d, %eax
  22540. addl %r11d, %r15d
  22541. xorl %r12d, %eax
  22542. andl %eax, %ebx
  22543. addl %edx, %r11d
  22544. xorl %r13d, %ebx
  22545. rorxl $6, %r15d, %edx
  22546. rorxl $11, %r15d, %ecx
  22547. addl %ebx, %r11d
  22548. addl 500(%rsp), %r10d
  22549. movl %r8d, %ebx
  22550. xorl %edx, %ecx
  22551. xorl %r9d, %ebx
  22552. rorxl $25, %r15d, %edx
  22553. xorl %ecx, %edx
  22554. andl %r15d, %ebx
  22555. addl %edx, %r10d
  22556. rorxl $2, %r11d, %edx
  22557. rorxl $13, %r11d, %ecx
  22558. xorl %r9d, %ebx
  22559. xorl %edx, %ecx
  22560. rorxl $22, %r11d, %edx
  22561. addl %ebx, %r10d
  22562. xorl %ecx, %edx
  22563. movl %r12d, %ebx
  22564. leal (%r14,%r10,1), %r14d
  22565. xorl %r11d, %ebx
  22566. andl %ebx, %eax
  22567. addl %edx, %r10d
  22568. xorl %r12d, %eax
  22569. rorxl $6, %r14d, %edx
  22570. rorxl $11, %r14d, %ecx
  22571. leal (%r10,%rax,1), %r10d
  22572. addl 504(%rsp), %r9d
  22573. movl %r15d, %eax
  22574. xorl %edx, %ecx
  22575. xorl %r8d, %eax
  22576. rorxl $25, %r14d, %edx
  22577. xorl %ecx, %edx
  22578. andl %r14d, %eax
  22579. addl %edx, %r9d
  22580. rorxl $2, %r10d, %edx
  22581. rorxl $13, %r10d, %ecx
  22582. xorl %r8d, %eax
  22583. xorl %edx, %ecx
  22584. rorxl $22, %r10d, %edx
  22585. addl %eax, %r9d
  22586. xorl %ecx, %edx
  22587. movl %r11d, %eax
  22588. addl %r9d, %r13d
  22589. xorl %r10d, %eax
  22590. andl %eax, %ebx
  22591. addl %edx, %r9d
  22592. xorl %r11d, %ebx
  22593. rorxl $6, %r13d, %edx
  22594. rorxl $11, %r13d, %ecx
  22595. addl %ebx, %r9d
  22596. addl 508(%rsp), %r8d
  22597. movl %r14d, %ebx
  22598. xorl %edx, %ecx
  22599. xorl %r15d, %ebx
  22600. rorxl $25, %r13d, %edx
  22601. xorl %ecx, %edx
  22602. andl %r13d, %ebx
  22603. addl %edx, %r8d
  22604. rorxl $2, %r9d, %edx
  22605. rorxl $13, %r9d, %ecx
  22606. xorl %r15d, %ebx
  22607. xorl %edx, %ecx
  22608. rorxl $22, %r9d, %edx
  22609. addl %ebx, %r8d
  22610. xorl %ecx, %edx
  22611. movl %r10d, %ebx
  22612. leal (%r12,%r8,1), %r12d
  22613. xorl %r9d, %ebx
  22614. andl %ebx, %eax
  22615. addl %edx, %r8d
  22616. xorl %r10d, %eax
  22617. addl %eax, %r8d
  22618. addq $0x80, %rbp
  22619. addl (%rdi), %r8d
  22620. addl 4(%rdi), %r9d
  22621. addl 8(%rdi), %r10d
  22622. addl 12(%rdi), %r11d
  22623. addl 16(%rdi), %r12d
  22624. addl 20(%rdi), %r13d
  22625. addl 24(%rdi), %r14d
  22626. addl 28(%rdi), %r15d
  22627. subl $0x80, %esi
  22628. movl %r8d, (%rdi)
  22629. movl %r9d, 4(%rdi)
  22630. movl %r10d, 8(%rdi)
  22631. movl %r11d, 12(%rdi)
  22632. movl %r12d, 16(%rdi)
  22633. movl %r13d, 20(%rdi)
  22634. movl %r14d, 24(%rdi)
  22635. movl %r15d, 28(%rdi)
  22636. jnz L_sha256_len_avx2_rorx_start
  22637. L_sha256_len_avx2_rorx_done:
  22638. xorq %rax, %rax
  22639. vzeroupper
  22640. addq $0x200, %rsp
  22641. popq %rbp
  22642. popq %r15
  22643. popq %r14
  22644. popq %r13
  22645. popq %r12
  22646. popq %rbx
  22647. repz retq
  22648. #ifndef __APPLE__
  22649. .size Transform_Sha256_AVX2_RORX_Len,.-Transform_Sha256_AVX2_RORX_Len
  22650. #endif /* __APPLE__ */
  22651. #endif /* HAVE_INTEL_AVX2 */
  22652. #if defined(__linux__) && defined(__ELF__)
  22653. .section .note.GNU-stack,"",%progbits
  22654. #endif