sha1-x86_64.s 98 KB

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