sha256-x86_64.s 95 KB

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