sha256-x86_64.s 93 KB

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