sha256-586.masm 126 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992299329942995299629972998299930003001300230033004300530063007300830093010301130123013301430153016301730183019302030213022302330243025302630273028302930303031303230333034303530363037303830393040304130423043304430453046304730483049305030513052305330543055305630573058305930603061306230633064306530663067306830693070307130723073307430753076307730783079308030813082308330843085308630873088308930903091309230933094309530963097309830993100310131023103310431053106310731083109311031113112311331143115311631173118311931203121312231233124312531263127312831293130313131323133313431353136313731383139314031413142314331443145314631473148314931503151315231533154315531563157315831593160316131623163316431653166316731683169317031713172317331743175317631773178317931803181318231833184318531863187318831893190319131923193319431953196319731983199320032013202320332043205320632073208320932103211321232133214321532163217321832193220322132223223322432253226322732283229323032313232323332343235323632373238323932403241324232433244324532463247324832493250325132523253325432553256325732583259326032613262326332643265326632673268326932703271327232733274327532763277327832793280328132823283328432853286328732883289329032913292329332943295329632973298329933003301330233033304330533063307330833093310331133123313331433153316331733183319332033213322332333243325332633273328332933303331333233333334333533363337333833393340334133423343334433453346334733483349335033513352335333543355335633573358335933603361336233633364336533663367336833693370337133723373337433753376337733783379338033813382338333843385338633873388338933903391339233933394339533963397339833993400340134023403340434053406340734083409341034113412341334143415341634173418341934203421342234233424342534263427342834293430343134323433343434353436343734383439344034413442344334443445344634473448344934503451345234533454345534563457345834593460346134623463346434653466346734683469347034713472347334743475347634773478347934803481348234833484348534863487348834893490349134923493349434953496349734983499350035013502350335043505350635073508350935103511351235133514351535163517351835193520352135223523352435253526352735283529353035313532353335343535353635373538353935403541354235433544354535463547354835493550355135523553355435553556355735583559356035613562356335643565356635673568356935703571357235733574357535763577357835793580358135823583358435853586358735883589359035913592359335943595359635973598359936003601360236033604360536063607360836093610361136123613361436153616361736183619362036213622362336243625362636273628362936303631363236333634363536363637363836393640364136423643364436453646364736483649365036513652365336543655365636573658365936603661366236633664366536663667366836693670367136723673367436753676367736783679368036813682368336843685368636873688368936903691369236933694369536963697369836993700370137023703370437053706370737083709371037113712371337143715371637173718371937203721372237233724372537263727372837293730373137323733373437353736373737383739374037413742374337443745374637473748374937503751375237533754375537563757375837593760376137623763376437653766376737683769377037713772377337743775377637773778377937803781378237833784378537863787378837893790379137923793379437953796379737983799380038013802380338043805380638073808380938103811381238133814381538163817381838193820382138223823382438253826382738283829383038313832383338343835383638373838383938403841384238433844384538463847384838493850385138523853385438553856385738583859386038613862386338643865386638673868386938703871387238733874387538763877387838793880388138823883388438853886388738883889389038913892389338943895389638973898389939003901390239033904390539063907390839093910391139123913391439153916391739183919392039213922392339243925392639273928392939303931393239333934393539363937393839393940394139423943394439453946394739483949395039513952395339543955395639573958395939603961396239633964396539663967396839693970397139723973397439753976397739783979398039813982398339843985398639873988398939903991399239933994399539963997399839994000400140024003400440054006400740084009401040114012401340144015401640174018401940204021402240234024402540264027402840294030403140324033403440354036403740384039404040414042404340444045404640474048404940504051405240534054405540564057405840594060406140624063406440654066406740684069407040714072407340744075407640774078407940804081408240834084408540864087408840894090409140924093409440954096409740984099410041014102410341044105410641074108410941104111411241134114411541164117411841194120412141224123412441254126412741284129413041314132413341344135413641374138413941404141414241434144414541464147414841494150415141524153415441554156415741584159416041614162416341644165416641674168416941704171417241734174417541764177417841794180418141824183418441854186418741884189419041914192419341944195419641974198419942004201420242034204420542064207420842094210421142124213421442154216421742184219422042214222422342244225422642274228422942304231423242334234423542364237423842394240424142424243424442454246424742484249425042514252425342544255425642574258425942604261426242634264426542664267426842694270427142724273427442754276427742784279428042814282428342844285428642874288428942904291429242934294429542964297429842994300430143024303430443054306430743084309431043114312431343144315431643174318431943204321432243234324432543264327432843294330433143324333433443354336433743384339434043414342434343444345434643474348434943504351435243534354435543564357435843594360436143624363436443654366436743684369437043714372437343744375437643774378437943804381438243834384438543864387438843894390439143924393439443954396439743984399440044014402440344044405440644074408440944104411441244134414441544164417441844194420442144224423442444254426442744284429443044314432443344344435443644374438443944404441444244434444444544464447444844494450445144524453445444554456445744584459446044614462446344644465446644674468446944704471447244734474447544764477447844794480448144824483448444854486448744884489449044914492449344944495449644974498449945004501450245034504450545064507450845094510451145124513451445154516451745184519452045214522452345244525452645274528452945304531453245334534453545364537453845394540454145424543454445454546454745484549455045514552455345544555455645574558455945604561456245634564456545664567456845694570457145724573457445754576457745784579458045814582458345844585458645874588458945904591459245934594459545964597459845994600460146024603460446054606460746084609461046114612461346144615461646174618461946204621462246234624462546264627462846294630463146324633463446354636463746384639464046414642464346444645464646474648464946504651465246534654465546564657465846594660466146624663466446654666466746684669467046714672467346744675467646774678467946804681468246834684468546864687468846894690469146924693469446954696469746984699470047014702470347044705470647074708470947104711471247134714471547164717471847194720472147224723472447254726472747284729473047314732473347344735473647374738473947404741474247434744474547464747474847494750475147524753475447554756475747584759476047614762476347644765476647674768476947704771477247734774477547764777477847794780478147824783478447854786478747884789479047914792479347944795479647974798479948004801480248034804480548064807480848094810481148124813481448154816481748184819482048214822482348244825482648274828482948304831483248334834483548364837483848394840484148424843484448454846484748484849485048514852485348544855485648574858485948604861486248634864486548664867486848694870487148724873487448754876487748784879488048814882488348844885488648874888488948904891489248934894489548964897489848994900490149024903490449054906490749084909491049114912491349144915491649174918491949204921492249234924492549264927492849294930493149324933493449354936493749384939494049414942494349444945494649474948494949504951495249534954495549564957495849594960496149624963496449654966496749684969497049714972497349744975497649774978497949804981498249834984498549864987498849894990499149924993499449954996499749984999500050015002500350045005500650075008500950105011501250135014501550165017501850195020502150225023502450255026502750285029503050315032503350345035503650375038503950405041504250435044504550465047504850495050505150525053505450555056505750585059506050615062506350645065506650675068506950705071507250735074507550765077507850795080508150825083508450855086508750885089509050915092509350945095509650975098509951005101510251035104510551065107510851095110511151125113511451155116511751185119512051215122512351245125512651275128512951305131513251335134513551365137513851395140514151425143514451455146514751485149515051515152515351545155515651575158515951605161516251635164516551665167516851695170517151725173517451755176517751785179518051815182518351845185518651875188518951905191519251935194519551965197519851995200520152025203520452055206520752085209521052115212521352145215521652175218521952205221522252235224522552265227522852295230523152325233523452355236523752385239524052415242524352445245524652475248524952505251525252535254525552565257525852595260526152625263526452655266526752685269527052715272527352745275527652775278527952805281528252835284528552865287528852895290529152925293529452955296529752985299530053015302530353045305530653075308530953105311531253135314531553165317531853195320532153225323532453255326532753285329533053315332533353345335533653375338533953405341534253435344534553465347534853495350535153525353535453555356535753585359536053615362536353645365536653675368536953705371537253735374537553765377537853795380538153825383538453855386538753885389539053915392539353945395539653975398539954005401540254035404540554065407540854095410541154125413541454155416541754185419542054215422542354245425542654275428542954305431543254335434543554365437543854395440544154425443544454455446544754485449545054515452545354545455545654575458545954605461546254635464546554665467546854695470547154725473547454755476547754785479548054815482548354845485548654875488548954905491549254935494549554965497549854995500550155025503550455055506550755085509551055115512551355145515551655175518551955205521552255235524552555265527552855295530553155325533553455355536553755385539554055415542554355445545554655475548554955505551555255535554555555565557555855595560556155625563556455655566556755685569557055715572557355745575557655775578557955805581558255835584558555865587558855895590559155925593559455955596559755985599560056015602560356045605560656075608560956105611561256135614561556165617561856195620562156225623562456255626562756285629563056315632563356345635563656375638563956405641564256435644564556465647564856495650565156525653565456555656565756585659566056615662566356645665566656675668566956705671567256735674567556765677567856795680568156825683568456855686568756885689569056915692569356945695569656975698569957005701570257035704570557065707570857095710571157125713571457155716571757185719572057215722572357245725572657275728572957305731573257335734573557365737573857395740574157425743574457455746574757485749575057515752575357545755575657575758575957605761576257635764576557665767576857695770577157725773577457755776577757785779578057815782578357845785578657875788578957905791579257935794579557965797579857995800580158025803580458055806580758085809581058115812581358145815581658175818581958205821582258235824582558265827582858295830583158325833583458355836583758385839584058415842584358445845584658475848584958505851585258535854585558565857585858595860586158625863586458655866586758685869587058715872587358745875587658775878587958805881588258835884588558865887588858895890589158925893589458955896589758985899590059015902590359045905590659075908590959105911591259135914591559165917591859195920592159225923592459255926592759285929593059315932593359345935593659375938593959405941594259435944594559465947594859495950595159525953595459555956595759585959596059615962596359645965596659675968596959705971597259735974597559765977597859795980598159825983598459855986598759885989599059915992599359945995599659975998599960006001600260036004600560066007600860096010601160126013601460156016601760186019602060216022602360246025602660276028602960306031603260336034603560366037603860396040604160426043604460456046604760486049605060516052605360546055605660576058605960606061606260636064606560666067606860696070607160726073607460756076607760786079608060816082608360846085608660876088608960906091609260936094609560966097609860996100610161026103610461056106610761086109611061116112611361146115611661176118611961206121612261236124612561266127612861296130613161326133613461356136613761386139614061416142614361446145614661476148614961506151615261536154615561566157615861596160616161626163616461656166616761686169617061716172617361746175617661776178617961806181618261836184618561866187618861896190619161926193619461956196619761986199620062016202620362046205620662076208620962106211621262136214621562166217621862196220622162226223622462256226622762286229623062316232623362346235623662376238623962406241624262436244624562466247624862496250625162526253625462556256625762586259626062616262626362646265626662676268626962706271627262736274627562766277627862796280628162826283628462856286628762886289629062916292629362946295629662976298629963006301630263036304630563066307630863096310631163126313631463156316631763186319632063216322632363246325632663276328632963306331633263336334633563366337633863396340634163426343634463456346634763486349635063516352635363546355635663576358635963606361636263636364636563666367636863696370637163726373637463756376637763786379638063816382638363846385638663876388638963906391639263936394639563966397639863996400640164026403640464056406640764086409641064116412641364146415641664176418641964206421642264236424642564266427642864296430643164326433643464356436643764386439644064416442644364446445644664476448644964506451645264536454645564566457645864596460646164626463646464656466646764686469647064716472647364746475647664776478647964806481648264836484648564866487648864896490649164926493649464956496649764986499650065016502650365046505650665076508650965106511651265136514651565166517651865196520652165226523652465256526652765286529653065316532653365346535653665376538653965406541654265436544654565466547654865496550655165526553655465556556655765586559656065616562656365646565656665676568656965706571657265736574657565766577657865796580658165826583658465856586658765886589659065916592659365946595659665976598659966006601660266036604660566066607660866096610661166126613661466156616661766186619662066216622662366246625662666276628662966306631663266336634663566366637663866396640664166426643664466456646664766486649665066516652665366546655665666576658665966606661666266636664666566666667666866696670667166726673667466756676667766786679668066816682668366846685668666876688668966906691669266936694669566966697669866996700670167026703670467056706670767086709671067116712671367146715671667176718671967206721672267236724672567266727672867296730673167326733673467356736673767386739674067416742674367446745674667476748674967506751675267536754675567566757675867596760676167626763676467656766676767686769677067716772677367746775677667776778677967806781678267836784678567866787678867896790679167926793679467956796679767986799680068016802680368046805680668076808680968106811681268136814681568166817
  1. IF @Version LT 800
  2. ECHO MASM version 8.00 or later is strongly recommended.
  3. ENDIF
  4. .686
  5. .XMM
  6. IF @Version LT 800
  7. XMMWORD STRUCT 16
  8. DQ 2 dup (?)
  9. XMMWORD ENDS
  10. ENDIF
  11. .MODEL FLAT
  12. OPTION DOTNAME
  13. IF @Version LT 800
  14. .text$ SEGMENT PAGE 'CODE'
  15. ELSE
  16. .text$ SEGMENT ALIGN(64) 'CODE'
  17. ENDIF
  18. ;EXTERN _OPENSSL_ia32cap_P:NEAR
  19. ALIGN 16
  20. _sha256_block_data_order PROC PUBLIC
  21. $L_sha256_block_data_order_begin::
  22. push ebp
  23. push ebx
  24. push esi
  25. push edi
  26. mov esi,DWORD PTR 20[esp]
  27. mov edi,DWORD PTR 24[esp]
  28. mov eax,DWORD PTR 28[esp]
  29. mov ebx,esp
  30. call $L000pic_point
  31. $L000pic_point:
  32. pop ebp
  33. lea ebp,DWORD PTR ($L001K256-$L000pic_point)[ebp]
  34. sub esp,16
  35. and esp,-64
  36. shl eax,6
  37. add eax,edi
  38. mov DWORD PTR [esp],esi
  39. mov DWORD PTR 4[esp],edi
  40. mov DWORD PTR 8[esp],eax
  41. mov DWORD PTR 12[esp],ebx
  42. lea edx,DWORD PTR _OPENSSL_ia32cap_P
  43. mov ecx,DWORD PTR [edx]
  44. mov ebx,DWORD PTR 4[edx]
  45. test ecx,1048576
  46. jnz $L002loop
  47. mov edx,DWORD PTR 8[edx]
  48. test ecx,16777216
  49. jz $L003no_xmm
  50. and ecx,1073741824
  51. and ebx,268435968
  52. test edx,536870912
  53. jnz $L004shaext
  54. or ecx,ebx
  55. and ecx,1342177280
  56. cmp ecx,1342177280
  57. je $L005AVX
  58. test ebx,512
  59. jnz $L006SSSE3
  60. $L003no_xmm:
  61. sub eax,edi
  62. cmp eax,256
  63. jae $L007unrolled
  64. jmp $L002loop
  65. ALIGN 16
  66. $L002loop:
  67. mov eax,DWORD PTR [edi]
  68. mov ebx,DWORD PTR 4[edi]
  69. mov ecx,DWORD PTR 8[edi]
  70. bswap eax
  71. mov edx,DWORD PTR 12[edi]
  72. bswap ebx
  73. push eax
  74. bswap ecx
  75. push ebx
  76. bswap edx
  77. push ecx
  78. push edx
  79. mov eax,DWORD PTR 16[edi]
  80. mov ebx,DWORD PTR 20[edi]
  81. mov ecx,DWORD PTR 24[edi]
  82. bswap eax
  83. mov edx,DWORD PTR 28[edi]
  84. bswap ebx
  85. push eax
  86. bswap ecx
  87. push ebx
  88. bswap edx
  89. push ecx
  90. push edx
  91. mov eax,DWORD PTR 32[edi]
  92. mov ebx,DWORD PTR 36[edi]
  93. mov ecx,DWORD PTR 40[edi]
  94. bswap eax
  95. mov edx,DWORD PTR 44[edi]
  96. bswap ebx
  97. push eax
  98. bswap ecx
  99. push ebx
  100. bswap edx
  101. push ecx
  102. push edx
  103. mov eax,DWORD PTR 48[edi]
  104. mov ebx,DWORD PTR 52[edi]
  105. mov ecx,DWORD PTR 56[edi]
  106. bswap eax
  107. mov edx,DWORD PTR 60[edi]
  108. bswap ebx
  109. push eax
  110. bswap ecx
  111. push ebx
  112. bswap edx
  113. push ecx
  114. push edx
  115. add edi,64
  116. lea esp,DWORD PTR [esp-36]
  117. mov DWORD PTR 104[esp],edi
  118. mov eax,DWORD PTR [esi]
  119. mov ebx,DWORD PTR 4[esi]
  120. mov ecx,DWORD PTR 8[esi]
  121. mov edi,DWORD PTR 12[esi]
  122. mov DWORD PTR 8[esp],ebx
  123. xor ebx,ecx
  124. mov DWORD PTR 12[esp],ecx
  125. mov DWORD PTR 16[esp],edi
  126. mov DWORD PTR [esp],ebx
  127. mov edx,DWORD PTR 16[esi]
  128. mov ebx,DWORD PTR 20[esi]
  129. mov ecx,DWORD PTR 24[esi]
  130. mov edi,DWORD PTR 28[esi]
  131. mov DWORD PTR 24[esp],ebx
  132. mov DWORD PTR 28[esp],ecx
  133. mov DWORD PTR 32[esp],edi
  134. ALIGN 16
  135. $L00800_15:
  136. mov ecx,edx
  137. mov esi,DWORD PTR 24[esp]
  138. ror ecx,14
  139. mov edi,DWORD PTR 28[esp]
  140. xor ecx,edx
  141. xor esi,edi
  142. mov ebx,DWORD PTR 96[esp]
  143. ror ecx,5
  144. and esi,edx
  145. mov DWORD PTR 20[esp],edx
  146. xor edx,ecx
  147. add ebx,DWORD PTR 32[esp]
  148. xor esi,edi
  149. ror edx,6
  150. mov ecx,eax
  151. add ebx,esi
  152. ror ecx,9
  153. add ebx,edx
  154. mov edi,DWORD PTR 8[esp]
  155. xor ecx,eax
  156. mov DWORD PTR 4[esp],eax
  157. lea esp,DWORD PTR [esp-4]
  158. ror ecx,11
  159. mov esi,DWORD PTR [ebp]
  160. xor ecx,eax
  161. mov edx,DWORD PTR 20[esp]
  162. xor eax,edi
  163. ror ecx,2
  164. add ebx,esi
  165. mov DWORD PTR [esp],eax
  166. add edx,ebx
  167. and eax,DWORD PTR 4[esp]
  168. add ebx,ecx
  169. xor eax,edi
  170. add ebp,4
  171. add eax,ebx
  172. cmp esi,3248222580
  173. jne $L00800_15
  174. mov ecx,DWORD PTR 156[esp]
  175. jmp $L00916_63
  176. ALIGN 16
  177. $L00916_63:
  178. mov ebx,ecx
  179. mov esi,DWORD PTR 104[esp]
  180. ror ecx,11
  181. mov edi,esi
  182. ror esi,2
  183. xor ecx,ebx
  184. shr ebx,3
  185. ror ecx,7
  186. xor esi,edi
  187. xor ebx,ecx
  188. ror esi,17
  189. add ebx,DWORD PTR 160[esp]
  190. shr edi,10
  191. add ebx,DWORD PTR 124[esp]
  192. mov ecx,edx
  193. xor edi,esi
  194. mov esi,DWORD PTR 24[esp]
  195. ror ecx,14
  196. add ebx,edi
  197. mov edi,DWORD PTR 28[esp]
  198. xor ecx,edx
  199. xor esi,edi
  200. mov DWORD PTR 96[esp],ebx
  201. ror ecx,5
  202. and esi,edx
  203. mov DWORD PTR 20[esp],edx
  204. xor edx,ecx
  205. add ebx,DWORD PTR 32[esp]
  206. xor esi,edi
  207. ror edx,6
  208. mov ecx,eax
  209. add ebx,esi
  210. ror ecx,9
  211. add ebx,edx
  212. mov edi,DWORD PTR 8[esp]
  213. xor ecx,eax
  214. mov DWORD PTR 4[esp],eax
  215. lea esp,DWORD PTR [esp-4]
  216. ror ecx,11
  217. mov esi,DWORD PTR [ebp]
  218. xor ecx,eax
  219. mov edx,DWORD PTR 20[esp]
  220. xor eax,edi
  221. ror ecx,2
  222. add ebx,esi
  223. mov DWORD PTR [esp],eax
  224. add edx,ebx
  225. and eax,DWORD PTR 4[esp]
  226. add ebx,ecx
  227. xor eax,edi
  228. mov ecx,DWORD PTR 156[esp]
  229. add ebp,4
  230. add eax,ebx
  231. cmp esi,3329325298
  232. jne $L00916_63
  233. mov esi,DWORD PTR 356[esp]
  234. mov ebx,DWORD PTR 8[esp]
  235. mov ecx,DWORD PTR 16[esp]
  236. add eax,DWORD PTR [esi]
  237. add ebx,DWORD PTR 4[esi]
  238. add edi,DWORD PTR 8[esi]
  239. add ecx,DWORD PTR 12[esi]
  240. mov DWORD PTR [esi],eax
  241. mov DWORD PTR 4[esi],ebx
  242. mov DWORD PTR 8[esi],edi
  243. mov DWORD PTR 12[esi],ecx
  244. mov eax,DWORD PTR 24[esp]
  245. mov ebx,DWORD PTR 28[esp]
  246. mov ecx,DWORD PTR 32[esp]
  247. mov edi,DWORD PTR 360[esp]
  248. add edx,DWORD PTR 16[esi]
  249. add eax,DWORD PTR 20[esi]
  250. add ebx,DWORD PTR 24[esi]
  251. add ecx,DWORD PTR 28[esi]
  252. mov DWORD PTR 16[esi],edx
  253. mov DWORD PTR 20[esi],eax
  254. mov DWORD PTR 24[esi],ebx
  255. mov DWORD PTR 28[esi],ecx
  256. lea esp,DWORD PTR 356[esp]
  257. sub ebp,256
  258. cmp edi,DWORD PTR 8[esp]
  259. jb $L002loop
  260. mov esp,DWORD PTR 12[esp]
  261. pop edi
  262. pop esi
  263. pop ebx
  264. pop ebp
  265. ret
  266. ALIGN 64
  267. $L001K256:
  268. DD 1116352408,1899447441,3049323471,3921009573
  269. DD 961987163,1508970993,2453635748,2870763221
  270. DD 3624381080,310598401,607225278,1426881987
  271. DD 1925078388,2162078206,2614888103,3248222580
  272. DD 3835390401,4022224774,264347078,604807628
  273. DD 770255983,1249150122,1555081692,1996064986
  274. DD 2554220882,2821834349,2952996808,3210313671
  275. DD 3336571891,3584528711,113926993,338241895
  276. DD 666307205,773529912,1294757372,1396182291
  277. DD 1695183700,1986661051,2177026350,2456956037
  278. DD 2730485921,2820302411,3259730800,3345764771
  279. DD 3516065817,3600352804,4094571909,275423344
  280. DD 430227734,506948616,659060556,883997877
  281. DD 958139571,1322822218,1537002063,1747873779
  282. DD 1955562222,2024104815,2227730452,2361852424
  283. DD 2428436474,2756734187,3204031479,3329325298
  284. DD 66051,67438087,134810123,202182159
  285. DB 83,72,65,50,53,54,32,98,108,111,99,107,32,116,114,97
  286. DB 110,115,102,111,114,109,32,102,111,114,32,120,56,54,44,32
  287. DB 67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97
  288. DB 112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103
  289. DB 62,0
  290. ALIGN 16
  291. $L007unrolled:
  292. lea esp,DWORD PTR [esp-96]
  293. mov eax,DWORD PTR [esi]
  294. mov ebp,DWORD PTR 4[esi]
  295. mov ecx,DWORD PTR 8[esi]
  296. mov ebx,DWORD PTR 12[esi]
  297. mov DWORD PTR 4[esp],ebp
  298. xor ebp,ecx
  299. mov DWORD PTR 8[esp],ecx
  300. mov DWORD PTR 12[esp],ebx
  301. mov edx,DWORD PTR 16[esi]
  302. mov ebx,DWORD PTR 20[esi]
  303. mov ecx,DWORD PTR 24[esi]
  304. mov esi,DWORD PTR 28[esi]
  305. mov DWORD PTR 20[esp],ebx
  306. mov DWORD PTR 24[esp],ecx
  307. mov DWORD PTR 28[esp],esi
  308. jmp $L010grand_loop
  309. ALIGN 16
  310. $L010grand_loop:
  311. mov ebx,DWORD PTR [edi]
  312. mov ecx,DWORD PTR 4[edi]
  313. bswap ebx
  314. mov esi,DWORD PTR 8[edi]
  315. bswap ecx
  316. mov DWORD PTR 32[esp],ebx
  317. bswap esi
  318. mov DWORD PTR 36[esp],ecx
  319. mov DWORD PTR 40[esp],esi
  320. mov ebx,DWORD PTR 12[edi]
  321. mov ecx,DWORD PTR 16[edi]
  322. bswap ebx
  323. mov esi,DWORD PTR 20[edi]
  324. bswap ecx
  325. mov DWORD PTR 44[esp],ebx
  326. bswap esi
  327. mov DWORD PTR 48[esp],ecx
  328. mov DWORD PTR 52[esp],esi
  329. mov ebx,DWORD PTR 24[edi]
  330. mov ecx,DWORD PTR 28[edi]
  331. bswap ebx
  332. mov esi,DWORD PTR 32[edi]
  333. bswap ecx
  334. mov DWORD PTR 56[esp],ebx
  335. bswap esi
  336. mov DWORD PTR 60[esp],ecx
  337. mov DWORD PTR 64[esp],esi
  338. mov ebx,DWORD PTR 36[edi]
  339. mov ecx,DWORD PTR 40[edi]
  340. bswap ebx
  341. mov esi,DWORD PTR 44[edi]
  342. bswap ecx
  343. mov DWORD PTR 68[esp],ebx
  344. bswap esi
  345. mov DWORD PTR 72[esp],ecx
  346. mov DWORD PTR 76[esp],esi
  347. mov ebx,DWORD PTR 48[edi]
  348. mov ecx,DWORD PTR 52[edi]
  349. bswap ebx
  350. mov esi,DWORD PTR 56[edi]
  351. bswap ecx
  352. mov DWORD PTR 80[esp],ebx
  353. bswap esi
  354. mov DWORD PTR 84[esp],ecx
  355. mov DWORD PTR 88[esp],esi
  356. mov ebx,DWORD PTR 60[edi]
  357. add edi,64
  358. bswap ebx
  359. mov DWORD PTR 100[esp],edi
  360. mov DWORD PTR 92[esp],ebx
  361. mov ecx,edx
  362. mov esi,DWORD PTR 20[esp]
  363. ror edx,14
  364. mov edi,DWORD PTR 24[esp]
  365. xor edx,ecx
  366. mov ebx,DWORD PTR 32[esp]
  367. xor esi,edi
  368. ror edx,5
  369. and esi,ecx
  370. mov DWORD PTR 16[esp],ecx
  371. xor edx,ecx
  372. add ebx,DWORD PTR 28[esp]
  373. xor edi,esi
  374. ror edx,6
  375. mov ecx,eax
  376. add ebx,edi
  377. ror ecx,9
  378. mov esi,eax
  379. mov edi,DWORD PTR 4[esp]
  380. xor ecx,eax
  381. mov DWORD PTR [esp],eax
  382. xor eax,edi
  383. ror ecx,11
  384. and ebp,eax
  385. lea edx,DWORD PTR 1116352408[edx*1+ebx]
  386. xor ecx,esi
  387. xor ebp,edi
  388. ror ecx,2
  389. add ebp,edx
  390. add edx,DWORD PTR 12[esp]
  391. add ebp,ecx
  392. mov esi,edx
  393. mov ecx,DWORD PTR 16[esp]
  394. ror edx,14
  395. mov edi,DWORD PTR 20[esp]
  396. xor edx,esi
  397. mov ebx,DWORD PTR 36[esp]
  398. xor ecx,edi
  399. ror edx,5
  400. and ecx,esi
  401. mov DWORD PTR 12[esp],esi
  402. xor edx,esi
  403. add ebx,DWORD PTR 24[esp]
  404. xor edi,ecx
  405. ror edx,6
  406. mov esi,ebp
  407. add ebx,edi
  408. ror esi,9
  409. mov ecx,ebp
  410. mov edi,DWORD PTR [esp]
  411. xor esi,ebp
  412. mov DWORD PTR 28[esp],ebp
  413. xor ebp,edi
  414. ror esi,11
  415. and eax,ebp
  416. lea edx,DWORD PTR 1899447441[edx*1+ebx]
  417. xor esi,ecx
  418. xor eax,edi
  419. ror esi,2
  420. add eax,edx
  421. add edx,DWORD PTR 8[esp]
  422. add eax,esi
  423. mov ecx,edx
  424. mov esi,DWORD PTR 12[esp]
  425. ror edx,14
  426. mov edi,DWORD PTR 16[esp]
  427. xor edx,ecx
  428. mov ebx,DWORD PTR 40[esp]
  429. xor esi,edi
  430. ror edx,5
  431. and esi,ecx
  432. mov DWORD PTR 8[esp],ecx
  433. xor edx,ecx
  434. add ebx,DWORD PTR 20[esp]
  435. xor edi,esi
  436. ror edx,6
  437. mov ecx,eax
  438. add ebx,edi
  439. ror ecx,9
  440. mov esi,eax
  441. mov edi,DWORD PTR 28[esp]
  442. xor ecx,eax
  443. mov DWORD PTR 24[esp],eax
  444. xor eax,edi
  445. ror ecx,11
  446. and ebp,eax
  447. lea edx,DWORD PTR 3049323471[edx*1+ebx]
  448. xor ecx,esi
  449. xor ebp,edi
  450. ror ecx,2
  451. add ebp,edx
  452. add edx,DWORD PTR 4[esp]
  453. add ebp,ecx
  454. mov esi,edx
  455. mov ecx,DWORD PTR 8[esp]
  456. ror edx,14
  457. mov edi,DWORD PTR 12[esp]
  458. xor edx,esi
  459. mov ebx,DWORD PTR 44[esp]
  460. xor ecx,edi
  461. ror edx,5
  462. and ecx,esi
  463. mov DWORD PTR 4[esp],esi
  464. xor edx,esi
  465. add ebx,DWORD PTR 16[esp]
  466. xor edi,ecx
  467. ror edx,6
  468. mov esi,ebp
  469. add ebx,edi
  470. ror esi,9
  471. mov ecx,ebp
  472. mov edi,DWORD PTR 24[esp]
  473. xor esi,ebp
  474. mov DWORD PTR 20[esp],ebp
  475. xor ebp,edi
  476. ror esi,11
  477. and eax,ebp
  478. lea edx,DWORD PTR 3921009573[edx*1+ebx]
  479. xor esi,ecx
  480. xor eax,edi
  481. ror esi,2
  482. add eax,edx
  483. add edx,DWORD PTR [esp]
  484. add eax,esi
  485. mov ecx,edx
  486. mov esi,DWORD PTR 4[esp]
  487. ror edx,14
  488. mov edi,DWORD PTR 8[esp]
  489. xor edx,ecx
  490. mov ebx,DWORD PTR 48[esp]
  491. xor esi,edi
  492. ror edx,5
  493. and esi,ecx
  494. mov DWORD PTR [esp],ecx
  495. xor edx,ecx
  496. add ebx,DWORD PTR 12[esp]
  497. xor edi,esi
  498. ror edx,6
  499. mov ecx,eax
  500. add ebx,edi
  501. ror ecx,9
  502. mov esi,eax
  503. mov edi,DWORD PTR 20[esp]
  504. xor ecx,eax
  505. mov DWORD PTR 16[esp],eax
  506. xor eax,edi
  507. ror ecx,11
  508. and ebp,eax
  509. lea edx,DWORD PTR 961987163[edx*1+ebx]
  510. xor ecx,esi
  511. xor ebp,edi
  512. ror ecx,2
  513. add ebp,edx
  514. add edx,DWORD PTR 28[esp]
  515. add ebp,ecx
  516. mov esi,edx
  517. mov ecx,DWORD PTR [esp]
  518. ror edx,14
  519. mov edi,DWORD PTR 4[esp]
  520. xor edx,esi
  521. mov ebx,DWORD PTR 52[esp]
  522. xor ecx,edi
  523. ror edx,5
  524. and ecx,esi
  525. mov DWORD PTR 28[esp],esi
  526. xor edx,esi
  527. add ebx,DWORD PTR 8[esp]
  528. xor edi,ecx
  529. ror edx,6
  530. mov esi,ebp
  531. add ebx,edi
  532. ror esi,9
  533. mov ecx,ebp
  534. mov edi,DWORD PTR 16[esp]
  535. xor esi,ebp
  536. mov DWORD PTR 12[esp],ebp
  537. xor ebp,edi
  538. ror esi,11
  539. and eax,ebp
  540. lea edx,DWORD PTR 1508970993[edx*1+ebx]
  541. xor esi,ecx
  542. xor eax,edi
  543. ror esi,2
  544. add eax,edx
  545. add edx,DWORD PTR 24[esp]
  546. add eax,esi
  547. mov ecx,edx
  548. mov esi,DWORD PTR 28[esp]
  549. ror edx,14
  550. mov edi,DWORD PTR [esp]
  551. xor edx,ecx
  552. mov ebx,DWORD PTR 56[esp]
  553. xor esi,edi
  554. ror edx,5
  555. and esi,ecx
  556. mov DWORD PTR 24[esp],ecx
  557. xor edx,ecx
  558. add ebx,DWORD PTR 4[esp]
  559. xor edi,esi
  560. ror edx,6
  561. mov ecx,eax
  562. add ebx,edi
  563. ror ecx,9
  564. mov esi,eax
  565. mov edi,DWORD PTR 12[esp]
  566. xor ecx,eax
  567. mov DWORD PTR 8[esp],eax
  568. xor eax,edi
  569. ror ecx,11
  570. and ebp,eax
  571. lea edx,DWORD PTR 2453635748[edx*1+ebx]
  572. xor ecx,esi
  573. xor ebp,edi
  574. ror ecx,2
  575. add ebp,edx
  576. add edx,DWORD PTR 20[esp]
  577. add ebp,ecx
  578. mov esi,edx
  579. mov ecx,DWORD PTR 24[esp]
  580. ror edx,14
  581. mov edi,DWORD PTR 28[esp]
  582. xor edx,esi
  583. mov ebx,DWORD PTR 60[esp]
  584. xor ecx,edi
  585. ror edx,5
  586. and ecx,esi
  587. mov DWORD PTR 20[esp],esi
  588. xor edx,esi
  589. add ebx,DWORD PTR [esp]
  590. xor edi,ecx
  591. ror edx,6
  592. mov esi,ebp
  593. add ebx,edi
  594. ror esi,9
  595. mov ecx,ebp
  596. mov edi,DWORD PTR 8[esp]
  597. xor esi,ebp
  598. mov DWORD PTR 4[esp],ebp
  599. xor ebp,edi
  600. ror esi,11
  601. and eax,ebp
  602. lea edx,DWORD PTR 2870763221[edx*1+ebx]
  603. xor esi,ecx
  604. xor eax,edi
  605. ror esi,2
  606. add eax,edx
  607. add edx,DWORD PTR 16[esp]
  608. add eax,esi
  609. mov ecx,edx
  610. mov esi,DWORD PTR 20[esp]
  611. ror edx,14
  612. mov edi,DWORD PTR 24[esp]
  613. xor edx,ecx
  614. mov ebx,DWORD PTR 64[esp]
  615. xor esi,edi
  616. ror edx,5
  617. and esi,ecx
  618. mov DWORD PTR 16[esp],ecx
  619. xor edx,ecx
  620. add ebx,DWORD PTR 28[esp]
  621. xor edi,esi
  622. ror edx,6
  623. mov ecx,eax
  624. add ebx,edi
  625. ror ecx,9
  626. mov esi,eax
  627. mov edi,DWORD PTR 4[esp]
  628. xor ecx,eax
  629. mov DWORD PTR [esp],eax
  630. xor eax,edi
  631. ror ecx,11
  632. and ebp,eax
  633. lea edx,DWORD PTR 3624381080[edx*1+ebx]
  634. xor ecx,esi
  635. xor ebp,edi
  636. ror ecx,2
  637. add ebp,edx
  638. add edx,DWORD PTR 12[esp]
  639. add ebp,ecx
  640. mov esi,edx
  641. mov ecx,DWORD PTR 16[esp]
  642. ror edx,14
  643. mov edi,DWORD PTR 20[esp]
  644. xor edx,esi
  645. mov ebx,DWORD PTR 68[esp]
  646. xor ecx,edi
  647. ror edx,5
  648. and ecx,esi
  649. mov DWORD PTR 12[esp],esi
  650. xor edx,esi
  651. add ebx,DWORD PTR 24[esp]
  652. xor edi,ecx
  653. ror edx,6
  654. mov esi,ebp
  655. add ebx,edi
  656. ror esi,9
  657. mov ecx,ebp
  658. mov edi,DWORD PTR [esp]
  659. xor esi,ebp
  660. mov DWORD PTR 28[esp],ebp
  661. xor ebp,edi
  662. ror esi,11
  663. and eax,ebp
  664. lea edx,DWORD PTR 310598401[edx*1+ebx]
  665. xor esi,ecx
  666. xor eax,edi
  667. ror esi,2
  668. add eax,edx
  669. add edx,DWORD PTR 8[esp]
  670. add eax,esi
  671. mov ecx,edx
  672. mov esi,DWORD PTR 12[esp]
  673. ror edx,14
  674. mov edi,DWORD PTR 16[esp]
  675. xor edx,ecx
  676. mov ebx,DWORD PTR 72[esp]
  677. xor esi,edi
  678. ror edx,5
  679. and esi,ecx
  680. mov DWORD PTR 8[esp],ecx
  681. xor edx,ecx
  682. add ebx,DWORD PTR 20[esp]
  683. xor edi,esi
  684. ror edx,6
  685. mov ecx,eax
  686. add ebx,edi
  687. ror ecx,9
  688. mov esi,eax
  689. mov edi,DWORD PTR 28[esp]
  690. xor ecx,eax
  691. mov DWORD PTR 24[esp],eax
  692. xor eax,edi
  693. ror ecx,11
  694. and ebp,eax
  695. lea edx,DWORD PTR 607225278[edx*1+ebx]
  696. xor ecx,esi
  697. xor ebp,edi
  698. ror ecx,2
  699. add ebp,edx
  700. add edx,DWORD PTR 4[esp]
  701. add ebp,ecx
  702. mov esi,edx
  703. mov ecx,DWORD PTR 8[esp]
  704. ror edx,14
  705. mov edi,DWORD PTR 12[esp]
  706. xor edx,esi
  707. mov ebx,DWORD PTR 76[esp]
  708. xor ecx,edi
  709. ror edx,5
  710. and ecx,esi
  711. mov DWORD PTR 4[esp],esi
  712. xor edx,esi
  713. add ebx,DWORD PTR 16[esp]
  714. xor edi,ecx
  715. ror edx,6
  716. mov esi,ebp
  717. add ebx,edi
  718. ror esi,9
  719. mov ecx,ebp
  720. mov edi,DWORD PTR 24[esp]
  721. xor esi,ebp
  722. mov DWORD PTR 20[esp],ebp
  723. xor ebp,edi
  724. ror esi,11
  725. and eax,ebp
  726. lea edx,DWORD PTR 1426881987[edx*1+ebx]
  727. xor esi,ecx
  728. xor eax,edi
  729. ror esi,2
  730. add eax,edx
  731. add edx,DWORD PTR [esp]
  732. add eax,esi
  733. mov ecx,edx
  734. mov esi,DWORD PTR 4[esp]
  735. ror edx,14
  736. mov edi,DWORD PTR 8[esp]
  737. xor edx,ecx
  738. mov ebx,DWORD PTR 80[esp]
  739. xor esi,edi
  740. ror edx,5
  741. and esi,ecx
  742. mov DWORD PTR [esp],ecx
  743. xor edx,ecx
  744. add ebx,DWORD PTR 12[esp]
  745. xor edi,esi
  746. ror edx,6
  747. mov ecx,eax
  748. add ebx,edi
  749. ror ecx,9
  750. mov esi,eax
  751. mov edi,DWORD PTR 20[esp]
  752. xor ecx,eax
  753. mov DWORD PTR 16[esp],eax
  754. xor eax,edi
  755. ror ecx,11
  756. and ebp,eax
  757. lea edx,DWORD PTR 1925078388[edx*1+ebx]
  758. xor ecx,esi
  759. xor ebp,edi
  760. ror ecx,2
  761. add ebp,edx
  762. add edx,DWORD PTR 28[esp]
  763. add ebp,ecx
  764. mov esi,edx
  765. mov ecx,DWORD PTR [esp]
  766. ror edx,14
  767. mov edi,DWORD PTR 4[esp]
  768. xor edx,esi
  769. mov ebx,DWORD PTR 84[esp]
  770. xor ecx,edi
  771. ror edx,5
  772. and ecx,esi
  773. mov DWORD PTR 28[esp],esi
  774. xor edx,esi
  775. add ebx,DWORD PTR 8[esp]
  776. xor edi,ecx
  777. ror edx,6
  778. mov esi,ebp
  779. add ebx,edi
  780. ror esi,9
  781. mov ecx,ebp
  782. mov edi,DWORD PTR 16[esp]
  783. xor esi,ebp
  784. mov DWORD PTR 12[esp],ebp
  785. xor ebp,edi
  786. ror esi,11
  787. and eax,ebp
  788. lea edx,DWORD PTR 2162078206[edx*1+ebx]
  789. xor esi,ecx
  790. xor eax,edi
  791. ror esi,2
  792. add eax,edx
  793. add edx,DWORD PTR 24[esp]
  794. add eax,esi
  795. mov ecx,edx
  796. mov esi,DWORD PTR 28[esp]
  797. ror edx,14
  798. mov edi,DWORD PTR [esp]
  799. xor edx,ecx
  800. mov ebx,DWORD PTR 88[esp]
  801. xor esi,edi
  802. ror edx,5
  803. and esi,ecx
  804. mov DWORD PTR 24[esp],ecx
  805. xor edx,ecx
  806. add ebx,DWORD PTR 4[esp]
  807. xor edi,esi
  808. ror edx,6
  809. mov ecx,eax
  810. add ebx,edi
  811. ror ecx,9
  812. mov esi,eax
  813. mov edi,DWORD PTR 12[esp]
  814. xor ecx,eax
  815. mov DWORD PTR 8[esp],eax
  816. xor eax,edi
  817. ror ecx,11
  818. and ebp,eax
  819. lea edx,DWORD PTR 2614888103[edx*1+ebx]
  820. xor ecx,esi
  821. xor ebp,edi
  822. ror ecx,2
  823. add ebp,edx
  824. add edx,DWORD PTR 20[esp]
  825. add ebp,ecx
  826. mov esi,edx
  827. mov ecx,DWORD PTR 24[esp]
  828. ror edx,14
  829. mov edi,DWORD PTR 28[esp]
  830. xor edx,esi
  831. mov ebx,DWORD PTR 92[esp]
  832. xor ecx,edi
  833. ror edx,5
  834. and ecx,esi
  835. mov DWORD PTR 20[esp],esi
  836. xor edx,esi
  837. add ebx,DWORD PTR [esp]
  838. xor edi,ecx
  839. ror edx,6
  840. mov esi,ebp
  841. add ebx,edi
  842. ror esi,9
  843. mov ecx,ebp
  844. mov edi,DWORD PTR 8[esp]
  845. xor esi,ebp
  846. mov DWORD PTR 4[esp],ebp
  847. xor ebp,edi
  848. ror esi,11
  849. and eax,ebp
  850. lea edx,DWORD PTR 3248222580[edx*1+ebx]
  851. xor esi,ecx
  852. xor eax,edi
  853. mov ecx,DWORD PTR 36[esp]
  854. ror esi,2
  855. add eax,edx
  856. add edx,DWORD PTR 16[esp]
  857. add eax,esi
  858. mov esi,DWORD PTR 88[esp]
  859. mov ebx,ecx
  860. ror ecx,11
  861. mov edi,esi
  862. ror esi,2
  863. xor ecx,ebx
  864. shr ebx,3
  865. ror ecx,7
  866. xor esi,edi
  867. xor ebx,ecx
  868. ror esi,17
  869. add ebx,DWORD PTR 32[esp]
  870. shr edi,10
  871. add ebx,DWORD PTR 68[esp]
  872. mov ecx,edx
  873. xor edi,esi
  874. mov esi,DWORD PTR 20[esp]
  875. ror edx,14
  876. add ebx,edi
  877. mov edi,DWORD PTR 24[esp]
  878. xor edx,ecx
  879. mov DWORD PTR 32[esp],ebx
  880. xor esi,edi
  881. ror edx,5
  882. and esi,ecx
  883. mov DWORD PTR 16[esp],ecx
  884. xor edx,ecx
  885. add ebx,DWORD PTR 28[esp]
  886. xor edi,esi
  887. ror edx,6
  888. mov ecx,eax
  889. add ebx,edi
  890. ror ecx,9
  891. mov esi,eax
  892. mov edi,DWORD PTR 4[esp]
  893. xor ecx,eax
  894. mov DWORD PTR [esp],eax
  895. xor eax,edi
  896. ror ecx,11
  897. and ebp,eax
  898. lea edx,DWORD PTR 3835390401[edx*1+ebx]
  899. xor ecx,esi
  900. xor ebp,edi
  901. mov esi,DWORD PTR 40[esp]
  902. ror ecx,2
  903. add ebp,edx
  904. add edx,DWORD PTR 12[esp]
  905. add ebp,ecx
  906. mov ecx,DWORD PTR 92[esp]
  907. mov ebx,esi
  908. ror esi,11
  909. mov edi,ecx
  910. ror ecx,2
  911. xor esi,ebx
  912. shr ebx,3
  913. ror esi,7
  914. xor ecx,edi
  915. xor ebx,esi
  916. ror ecx,17
  917. add ebx,DWORD PTR 36[esp]
  918. shr edi,10
  919. add ebx,DWORD PTR 72[esp]
  920. mov esi,edx
  921. xor edi,ecx
  922. mov ecx,DWORD PTR 16[esp]
  923. ror edx,14
  924. add ebx,edi
  925. mov edi,DWORD PTR 20[esp]
  926. xor edx,esi
  927. mov DWORD PTR 36[esp],ebx
  928. xor ecx,edi
  929. ror edx,5
  930. and ecx,esi
  931. mov DWORD PTR 12[esp],esi
  932. xor edx,esi
  933. add ebx,DWORD PTR 24[esp]
  934. xor edi,ecx
  935. ror edx,6
  936. mov esi,ebp
  937. add ebx,edi
  938. ror esi,9
  939. mov ecx,ebp
  940. mov edi,DWORD PTR [esp]
  941. xor esi,ebp
  942. mov DWORD PTR 28[esp],ebp
  943. xor ebp,edi
  944. ror esi,11
  945. and eax,ebp
  946. lea edx,DWORD PTR 4022224774[edx*1+ebx]
  947. xor esi,ecx
  948. xor eax,edi
  949. mov ecx,DWORD PTR 44[esp]
  950. ror esi,2
  951. add eax,edx
  952. add edx,DWORD PTR 8[esp]
  953. add eax,esi
  954. mov esi,DWORD PTR 32[esp]
  955. mov ebx,ecx
  956. ror ecx,11
  957. mov edi,esi
  958. ror esi,2
  959. xor ecx,ebx
  960. shr ebx,3
  961. ror ecx,7
  962. xor esi,edi
  963. xor ebx,ecx
  964. ror esi,17
  965. add ebx,DWORD PTR 40[esp]
  966. shr edi,10
  967. add ebx,DWORD PTR 76[esp]
  968. mov ecx,edx
  969. xor edi,esi
  970. mov esi,DWORD PTR 12[esp]
  971. ror edx,14
  972. add ebx,edi
  973. mov edi,DWORD PTR 16[esp]
  974. xor edx,ecx
  975. mov DWORD PTR 40[esp],ebx
  976. xor esi,edi
  977. ror edx,5
  978. and esi,ecx
  979. mov DWORD PTR 8[esp],ecx
  980. xor edx,ecx
  981. add ebx,DWORD PTR 20[esp]
  982. xor edi,esi
  983. ror edx,6
  984. mov ecx,eax
  985. add ebx,edi
  986. ror ecx,9
  987. mov esi,eax
  988. mov edi,DWORD PTR 28[esp]
  989. xor ecx,eax
  990. mov DWORD PTR 24[esp],eax
  991. xor eax,edi
  992. ror ecx,11
  993. and ebp,eax
  994. lea edx,DWORD PTR 264347078[edx*1+ebx]
  995. xor ecx,esi
  996. xor ebp,edi
  997. mov esi,DWORD PTR 48[esp]
  998. ror ecx,2
  999. add ebp,edx
  1000. add edx,DWORD PTR 4[esp]
  1001. add ebp,ecx
  1002. mov ecx,DWORD PTR 36[esp]
  1003. mov ebx,esi
  1004. ror esi,11
  1005. mov edi,ecx
  1006. ror ecx,2
  1007. xor esi,ebx
  1008. shr ebx,3
  1009. ror esi,7
  1010. xor ecx,edi
  1011. xor ebx,esi
  1012. ror ecx,17
  1013. add ebx,DWORD PTR 44[esp]
  1014. shr edi,10
  1015. add ebx,DWORD PTR 80[esp]
  1016. mov esi,edx
  1017. xor edi,ecx
  1018. mov ecx,DWORD PTR 8[esp]
  1019. ror edx,14
  1020. add ebx,edi
  1021. mov edi,DWORD PTR 12[esp]
  1022. xor edx,esi
  1023. mov DWORD PTR 44[esp],ebx
  1024. xor ecx,edi
  1025. ror edx,5
  1026. and ecx,esi
  1027. mov DWORD PTR 4[esp],esi
  1028. xor edx,esi
  1029. add ebx,DWORD PTR 16[esp]
  1030. xor edi,ecx
  1031. ror edx,6
  1032. mov esi,ebp
  1033. add ebx,edi
  1034. ror esi,9
  1035. mov ecx,ebp
  1036. mov edi,DWORD PTR 24[esp]
  1037. xor esi,ebp
  1038. mov DWORD PTR 20[esp],ebp
  1039. xor ebp,edi
  1040. ror esi,11
  1041. and eax,ebp
  1042. lea edx,DWORD PTR 604807628[edx*1+ebx]
  1043. xor esi,ecx
  1044. xor eax,edi
  1045. mov ecx,DWORD PTR 52[esp]
  1046. ror esi,2
  1047. add eax,edx
  1048. add edx,DWORD PTR [esp]
  1049. add eax,esi
  1050. mov esi,DWORD PTR 40[esp]
  1051. mov ebx,ecx
  1052. ror ecx,11
  1053. mov edi,esi
  1054. ror esi,2
  1055. xor ecx,ebx
  1056. shr ebx,3
  1057. ror ecx,7
  1058. xor esi,edi
  1059. xor ebx,ecx
  1060. ror esi,17
  1061. add ebx,DWORD PTR 48[esp]
  1062. shr edi,10
  1063. add ebx,DWORD PTR 84[esp]
  1064. mov ecx,edx
  1065. xor edi,esi
  1066. mov esi,DWORD PTR 4[esp]
  1067. ror edx,14
  1068. add ebx,edi
  1069. mov edi,DWORD PTR 8[esp]
  1070. xor edx,ecx
  1071. mov DWORD PTR 48[esp],ebx
  1072. xor esi,edi
  1073. ror edx,5
  1074. and esi,ecx
  1075. mov DWORD PTR [esp],ecx
  1076. xor edx,ecx
  1077. add ebx,DWORD PTR 12[esp]
  1078. xor edi,esi
  1079. ror edx,6
  1080. mov ecx,eax
  1081. add ebx,edi
  1082. ror ecx,9
  1083. mov esi,eax
  1084. mov edi,DWORD PTR 20[esp]
  1085. xor ecx,eax
  1086. mov DWORD PTR 16[esp],eax
  1087. xor eax,edi
  1088. ror ecx,11
  1089. and ebp,eax
  1090. lea edx,DWORD PTR 770255983[edx*1+ebx]
  1091. xor ecx,esi
  1092. xor ebp,edi
  1093. mov esi,DWORD PTR 56[esp]
  1094. ror ecx,2
  1095. add ebp,edx
  1096. add edx,DWORD PTR 28[esp]
  1097. add ebp,ecx
  1098. mov ecx,DWORD PTR 44[esp]
  1099. mov ebx,esi
  1100. ror esi,11
  1101. mov edi,ecx
  1102. ror ecx,2
  1103. xor esi,ebx
  1104. shr ebx,3
  1105. ror esi,7
  1106. xor ecx,edi
  1107. xor ebx,esi
  1108. ror ecx,17
  1109. add ebx,DWORD PTR 52[esp]
  1110. shr edi,10
  1111. add ebx,DWORD PTR 88[esp]
  1112. mov esi,edx
  1113. xor edi,ecx
  1114. mov ecx,DWORD PTR [esp]
  1115. ror edx,14
  1116. add ebx,edi
  1117. mov edi,DWORD PTR 4[esp]
  1118. xor edx,esi
  1119. mov DWORD PTR 52[esp],ebx
  1120. xor ecx,edi
  1121. ror edx,5
  1122. and ecx,esi
  1123. mov DWORD PTR 28[esp],esi
  1124. xor edx,esi
  1125. add ebx,DWORD PTR 8[esp]
  1126. xor edi,ecx
  1127. ror edx,6
  1128. mov esi,ebp
  1129. add ebx,edi
  1130. ror esi,9
  1131. mov ecx,ebp
  1132. mov edi,DWORD PTR 16[esp]
  1133. xor esi,ebp
  1134. mov DWORD PTR 12[esp],ebp
  1135. xor ebp,edi
  1136. ror esi,11
  1137. and eax,ebp
  1138. lea edx,DWORD PTR 1249150122[edx*1+ebx]
  1139. xor esi,ecx
  1140. xor eax,edi
  1141. mov ecx,DWORD PTR 60[esp]
  1142. ror esi,2
  1143. add eax,edx
  1144. add edx,DWORD PTR 24[esp]
  1145. add eax,esi
  1146. mov esi,DWORD PTR 48[esp]
  1147. mov ebx,ecx
  1148. ror ecx,11
  1149. mov edi,esi
  1150. ror esi,2
  1151. xor ecx,ebx
  1152. shr ebx,3
  1153. ror ecx,7
  1154. xor esi,edi
  1155. xor ebx,ecx
  1156. ror esi,17
  1157. add ebx,DWORD PTR 56[esp]
  1158. shr edi,10
  1159. add ebx,DWORD PTR 92[esp]
  1160. mov ecx,edx
  1161. xor edi,esi
  1162. mov esi,DWORD PTR 28[esp]
  1163. ror edx,14
  1164. add ebx,edi
  1165. mov edi,DWORD PTR [esp]
  1166. xor edx,ecx
  1167. mov DWORD PTR 56[esp],ebx
  1168. xor esi,edi
  1169. ror edx,5
  1170. and esi,ecx
  1171. mov DWORD PTR 24[esp],ecx
  1172. xor edx,ecx
  1173. add ebx,DWORD PTR 4[esp]
  1174. xor edi,esi
  1175. ror edx,6
  1176. mov ecx,eax
  1177. add ebx,edi
  1178. ror ecx,9
  1179. mov esi,eax
  1180. mov edi,DWORD PTR 12[esp]
  1181. xor ecx,eax
  1182. mov DWORD PTR 8[esp],eax
  1183. xor eax,edi
  1184. ror ecx,11
  1185. and ebp,eax
  1186. lea edx,DWORD PTR 1555081692[edx*1+ebx]
  1187. xor ecx,esi
  1188. xor ebp,edi
  1189. mov esi,DWORD PTR 64[esp]
  1190. ror ecx,2
  1191. add ebp,edx
  1192. add edx,DWORD PTR 20[esp]
  1193. add ebp,ecx
  1194. mov ecx,DWORD PTR 52[esp]
  1195. mov ebx,esi
  1196. ror esi,11
  1197. mov edi,ecx
  1198. ror ecx,2
  1199. xor esi,ebx
  1200. shr ebx,3
  1201. ror esi,7
  1202. xor ecx,edi
  1203. xor ebx,esi
  1204. ror ecx,17
  1205. add ebx,DWORD PTR 60[esp]
  1206. shr edi,10
  1207. add ebx,DWORD PTR 32[esp]
  1208. mov esi,edx
  1209. xor edi,ecx
  1210. mov ecx,DWORD PTR 24[esp]
  1211. ror edx,14
  1212. add ebx,edi
  1213. mov edi,DWORD PTR 28[esp]
  1214. xor edx,esi
  1215. mov DWORD PTR 60[esp],ebx
  1216. xor ecx,edi
  1217. ror edx,5
  1218. and ecx,esi
  1219. mov DWORD PTR 20[esp],esi
  1220. xor edx,esi
  1221. add ebx,DWORD PTR [esp]
  1222. xor edi,ecx
  1223. ror edx,6
  1224. mov esi,ebp
  1225. add ebx,edi
  1226. ror esi,9
  1227. mov ecx,ebp
  1228. mov edi,DWORD PTR 8[esp]
  1229. xor esi,ebp
  1230. mov DWORD PTR 4[esp],ebp
  1231. xor ebp,edi
  1232. ror esi,11
  1233. and eax,ebp
  1234. lea edx,DWORD PTR 1996064986[edx*1+ebx]
  1235. xor esi,ecx
  1236. xor eax,edi
  1237. mov ecx,DWORD PTR 68[esp]
  1238. ror esi,2
  1239. add eax,edx
  1240. add edx,DWORD PTR 16[esp]
  1241. add eax,esi
  1242. mov esi,DWORD PTR 56[esp]
  1243. mov ebx,ecx
  1244. ror ecx,11
  1245. mov edi,esi
  1246. ror esi,2
  1247. xor ecx,ebx
  1248. shr ebx,3
  1249. ror ecx,7
  1250. xor esi,edi
  1251. xor ebx,ecx
  1252. ror esi,17
  1253. add ebx,DWORD PTR 64[esp]
  1254. shr edi,10
  1255. add ebx,DWORD PTR 36[esp]
  1256. mov ecx,edx
  1257. xor edi,esi
  1258. mov esi,DWORD PTR 20[esp]
  1259. ror edx,14
  1260. add ebx,edi
  1261. mov edi,DWORD PTR 24[esp]
  1262. xor edx,ecx
  1263. mov DWORD PTR 64[esp],ebx
  1264. xor esi,edi
  1265. ror edx,5
  1266. and esi,ecx
  1267. mov DWORD PTR 16[esp],ecx
  1268. xor edx,ecx
  1269. add ebx,DWORD PTR 28[esp]
  1270. xor edi,esi
  1271. ror edx,6
  1272. mov ecx,eax
  1273. add ebx,edi
  1274. ror ecx,9
  1275. mov esi,eax
  1276. mov edi,DWORD PTR 4[esp]
  1277. xor ecx,eax
  1278. mov DWORD PTR [esp],eax
  1279. xor eax,edi
  1280. ror ecx,11
  1281. and ebp,eax
  1282. lea edx,DWORD PTR 2554220882[edx*1+ebx]
  1283. xor ecx,esi
  1284. xor ebp,edi
  1285. mov esi,DWORD PTR 72[esp]
  1286. ror ecx,2
  1287. add ebp,edx
  1288. add edx,DWORD PTR 12[esp]
  1289. add ebp,ecx
  1290. mov ecx,DWORD PTR 60[esp]
  1291. mov ebx,esi
  1292. ror esi,11
  1293. mov edi,ecx
  1294. ror ecx,2
  1295. xor esi,ebx
  1296. shr ebx,3
  1297. ror esi,7
  1298. xor ecx,edi
  1299. xor ebx,esi
  1300. ror ecx,17
  1301. add ebx,DWORD PTR 68[esp]
  1302. shr edi,10
  1303. add ebx,DWORD PTR 40[esp]
  1304. mov esi,edx
  1305. xor edi,ecx
  1306. mov ecx,DWORD PTR 16[esp]
  1307. ror edx,14
  1308. add ebx,edi
  1309. mov edi,DWORD PTR 20[esp]
  1310. xor edx,esi
  1311. mov DWORD PTR 68[esp],ebx
  1312. xor ecx,edi
  1313. ror edx,5
  1314. and ecx,esi
  1315. mov DWORD PTR 12[esp],esi
  1316. xor edx,esi
  1317. add ebx,DWORD PTR 24[esp]
  1318. xor edi,ecx
  1319. ror edx,6
  1320. mov esi,ebp
  1321. add ebx,edi
  1322. ror esi,9
  1323. mov ecx,ebp
  1324. mov edi,DWORD PTR [esp]
  1325. xor esi,ebp
  1326. mov DWORD PTR 28[esp],ebp
  1327. xor ebp,edi
  1328. ror esi,11
  1329. and eax,ebp
  1330. lea edx,DWORD PTR 2821834349[edx*1+ebx]
  1331. xor esi,ecx
  1332. xor eax,edi
  1333. mov ecx,DWORD PTR 76[esp]
  1334. ror esi,2
  1335. add eax,edx
  1336. add edx,DWORD PTR 8[esp]
  1337. add eax,esi
  1338. mov esi,DWORD PTR 64[esp]
  1339. mov ebx,ecx
  1340. ror ecx,11
  1341. mov edi,esi
  1342. ror esi,2
  1343. xor ecx,ebx
  1344. shr ebx,3
  1345. ror ecx,7
  1346. xor esi,edi
  1347. xor ebx,ecx
  1348. ror esi,17
  1349. add ebx,DWORD PTR 72[esp]
  1350. shr edi,10
  1351. add ebx,DWORD PTR 44[esp]
  1352. mov ecx,edx
  1353. xor edi,esi
  1354. mov esi,DWORD PTR 12[esp]
  1355. ror edx,14
  1356. add ebx,edi
  1357. mov edi,DWORD PTR 16[esp]
  1358. xor edx,ecx
  1359. mov DWORD PTR 72[esp],ebx
  1360. xor esi,edi
  1361. ror edx,5
  1362. and esi,ecx
  1363. mov DWORD PTR 8[esp],ecx
  1364. xor edx,ecx
  1365. add ebx,DWORD PTR 20[esp]
  1366. xor edi,esi
  1367. ror edx,6
  1368. mov ecx,eax
  1369. add ebx,edi
  1370. ror ecx,9
  1371. mov esi,eax
  1372. mov edi,DWORD PTR 28[esp]
  1373. xor ecx,eax
  1374. mov DWORD PTR 24[esp],eax
  1375. xor eax,edi
  1376. ror ecx,11
  1377. and ebp,eax
  1378. lea edx,DWORD PTR 2952996808[edx*1+ebx]
  1379. xor ecx,esi
  1380. xor ebp,edi
  1381. mov esi,DWORD PTR 80[esp]
  1382. ror ecx,2
  1383. add ebp,edx
  1384. add edx,DWORD PTR 4[esp]
  1385. add ebp,ecx
  1386. mov ecx,DWORD PTR 68[esp]
  1387. mov ebx,esi
  1388. ror esi,11
  1389. mov edi,ecx
  1390. ror ecx,2
  1391. xor esi,ebx
  1392. shr ebx,3
  1393. ror esi,7
  1394. xor ecx,edi
  1395. xor ebx,esi
  1396. ror ecx,17
  1397. add ebx,DWORD PTR 76[esp]
  1398. shr edi,10
  1399. add ebx,DWORD PTR 48[esp]
  1400. mov esi,edx
  1401. xor edi,ecx
  1402. mov ecx,DWORD PTR 8[esp]
  1403. ror edx,14
  1404. add ebx,edi
  1405. mov edi,DWORD PTR 12[esp]
  1406. xor edx,esi
  1407. mov DWORD PTR 76[esp],ebx
  1408. xor ecx,edi
  1409. ror edx,5
  1410. and ecx,esi
  1411. mov DWORD PTR 4[esp],esi
  1412. xor edx,esi
  1413. add ebx,DWORD PTR 16[esp]
  1414. xor edi,ecx
  1415. ror edx,6
  1416. mov esi,ebp
  1417. add ebx,edi
  1418. ror esi,9
  1419. mov ecx,ebp
  1420. mov edi,DWORD PTR 24[esp]
  1421. xor esi,ebp
  1422. mov DWORD PTR 20[esp],ebp
  1423. xor ebp,edi
  1424. ror esi,11
  1425. and eax,ebp
  1426. lea edx,DWORD PTR 3210313671[edx*1+ebx]
  1427. xor esi,ecx
  1428. xor eax,edi
  1429. mov ecx,DWORD PTR 84[esp]
  1430. ror esi,2
  1431. add eax,edx
  1432. add edx,DWORD PTR [esp]
  1433. add eax,esi
  1434. mov esi,DWORD PTR 72[esp]
  1435. mov ebx,ecx
  1436. ror ecx,11
  1437. mov edi,esi
  1438. ror esi,2
  1439. xor ecx,ebx
  1440. shr ebx,3
  1441. ror ecx,7
  1442. xor esi,edi
  1443. xor ebx,ecx
  1444. ror esi,17
  1445. add ebx,DWORD PTR 80[esp]
  1446. shr edi,10
  1447. add ebx,DWORD PTR 52[esp]
  1448. mov ecx,edx
  1449. xor edi,esi
  1450. mov esi,DWORD PTR 4[esp]
  1451. ror edx,14
  1452. add ebx,edi
  1453. mov edi,DWORD PTR 8[esp]
  1454. xor edx,ecx
  1455. mov DWORD PTR 80[esp],ebx
  1456. xor esi,edi
  1457. ror edx,5
  1458. and esi,ecx
  1459. mov DWORD PTR [esp],ecx
  1460. xor edx,ecx
  1461. add ebx,DWORD PTR 12[esp]
  1462. xor edi,esi
  1463. ror edx,6
  1464. mov ecx,eax
  1465. add ebx,edi
  1466. ror ecx,9
  1467. mov esi,eax
  1468. mov edi,DWORD PTR 20[esp]
  1469. xor ecx,eax
  1470. mov DWORD PTR 16[esp],eax
  1471. xor eax,edi
  1472. ror ecx,11
  1473. and ebp,eax
  1474. lea edx,DWORD PTR 3336571891[edx*1+ebx]
  1475. xor ecx,esi
  1476. xor ebp,edi
  1477. mov esi,DWORD PTR 88[esp]
  1478. ror ecx,2
  1479. add ebp,edx
  1480. add edx,DWORD PTR 28[esp]
  1481. add ebp,ecx
  1482. mov ecx,DWORD PTR 76[esp]
  1483. mov ebx,esi
  1484. ror esi,11
  1485. mov edi,ecx
  1486. ror ecx,2
  1487. xor esi,ebx
  1488. shr ebx,3
  1489. ror esi,7
  1490. xor ecx,edi
  1491. xor ebx,esi
  1492. ror ecx,17
  1493. add ebx,DWORD PTR 84[esp]
  1494. shr edi,10
  1495. add ebx,DWORD PTR 56[esp]
  1496. mov esi,edx
  1497. xor edi,ecx
  1498. mov ecx,DWORD PTR [esp]
  1499. ror edx,14
  1500. add ebx,edi
  1501. mov edi,DWORD PTR 4[esp]
  1502. xor edx,esi
  1503. mov DWORD PTR 84[esp],ebx
  1504. xor ecx,edi
  1505. ror edx,5
  1506. and ecx,esi
  1507. mov DWORD PTR 28[esp],esi
  1508. xor edx,esi
  1509. add ebx,DWORD PTR 8[esp]
  1510. xor edi,ecx
  1511. ror edx,6
  1512. mov esi,ebp
  1513. add ebx,edi
  1514. ror esi,9
  1515. mov ecx,ebp
  1516. mov edi,DWORD PTR 16[esp]
  1517. xor esi,ebp
  1518. mov DWORD PTR 12[esp],ebp
  1519. xor ebp,edi
  1520. ror esi,11
  1521. and eax,ebp
  1522. lea edx,DWORD PTR 3584528711[edx*1+ebx]
  1523. xor esi,ecx
  1524. xor eax,edi
  1525. mov ecx,DWORD PTR 92[esp]
  1526. ror esi,2
  1527. add eax,edx
  1528. add edx,DWORD PTR 24[esp]
  1529. add eax,esi
  1530. mov esi,DWORD PTR 80[esp]
  1531. mov ebx,ecx
  1532. ror ecx,11
  1533. mov edi,esi
  1534. ror esi,2
  1535. xor ecx,ebx
  1536. shr ebx,3
  1537. ror ecx,7
  1538. xor esi,edi
  1539. xor ebx,ecx
  1540. ror esi,17
  1541. add ebx,DWORD PTR 88[esp]
  1542. shr edi,10
  1543. add ebx,DWORD PTR 60[esp]
  1544. mov ecx,edx
  1545. xor edi,esi
  1546. mov esi,DWORD PTR 28[esp]
  1547. ror edx,14
  1548. add ebx,edi
  1549. mov edi,DWORD PTR [esp]
  1550. xor edx,ecx
  1551. mov DWORD PTR 88[esp],ebx
  1552. xor esi,edi
  1553. ror edx,5
  1554. and esi,ecx
  1555. mov DWORD PTR 24[esp],ecx
  1556. xor edx,ecx
  1557. add ebx,DWORD PTR 4[esp]
  1558. xor edi,esi
  1559. ror edx,6
  1560. mov ecx,eax
  1561. add ebx,edi
  1562. ror ecx,9
  1563. mov esi,eax
  1564. mov edi,DWORD PTR 12[esp]
  1565. xor ecx,eax
  1566. mov DWORD PTR 8[esp],eax
  1567. xor eax,edi
  1568. ror ecx,11
  1569. and ebp,eax
  1570. lea edx,DWORD PTR 113926993[edx*1+ebx]
  1571. xor ecx,esi
  1572. xor ebp,edi
  1573. mov esi,DWORD PTR 32[esp]
  1574. ror ecx,2
  1575. add ebp,edx
  1576. add edx,DWORD PTR 20[esp]
  1577. add ebp,ecx
  1578. mov ecx,DWORD PTR 84[esp]
  1579. mov ebx,esi
  1580. ror esi,11
  1581. mov edi,ecx
  1582. ror ecx,2
  1583. xor esi,ebx
  1584. shr ebx,3
  1585. ror esi,7
  1586. xor ecx,edi
  1587. xor ebx,esi
  1588. ror ecx,17
  1589. add ebx,DWORD PTR 92[esp]
  1590. shr edi,10
  1591. add ebx,DWORD PTR 64[esp]
  1592. mov esi,edx
  1593. xor edi,ecx
  1594. mov ecx,DWORD PTR 24[esp]
  1595. ror edx,14
  1596. add ebx,edi
  1597. mov edi,DWORD PTR 28[esp]
  1598. xor edx,esi
  1599. mov DWORD PTR 92[esp],ebx
  1600. xor ecx,edi
  1601. ror edx,5
  1602. and ecx,esi
  1603. mov DWORD PTR 20[esp],esi
  1604. xor edx,esi
  1605. add ebx,DWORD PTR [esp]
  1606. xor edi,ecx
  1607. ror edx,6
  1608. mov esi,ebp
  1609. add ebx,edi
  1610. ror esi,9
  1611. mov ecx,ebp
  1612. mov edi,DWORD PTR 8[esp]
  1613. xor esi,ebp
  1614. mov DWORD PTR 4[esp],ebp
  1615. xor ebp,edi
  1616. ror esi,11
  1617. and eax,ebp
  1618. lea edx,DWORD PTR 338241895[edx*1+ebx]
  1619. xor esi,ecx
  1620. xor eax,edi
  1621. mov ecx,DWORD PTR 36[esp]
  1622. ror esi,2
  1623. add eax,edx
  1624. add edx,DWORD PTR 16[esp]
  1625. add eax,esi
  1626. mov esi,DWORD PTR 88[esp]
  1627. mov ebx,ecx
  1628. ror ecx,11
  1629. mov edi,esi
  1630. ror esi,2
  1631. xor ecx,ebx
  1632. shr ebx,3
  1633. ror ecx,7
  1634. xor esi,edi
  1635. xor ebx,ecx
  1636. ror esi,17
  1637. add ebx,DWORD PTR 32[esp]
  1638. shr edi,10
  1639. add ebx,DWORD PTR 68[esp]
  1640. mov ecx,edx
  1641. xor edi,esi
  1642. mov esi,DWORD PTR 20[esp]
  1643. ror edx,14
  1644. add ebx,edi
  1645. mov edi,DWORD PTR 24[esp]
  1646. xor edx,ecx
  1647. mov DWORD PTR 32[esp],ebx
  1648. xor esi,edi
  1649. ror edx,5
  1650. and esi,ecx
  1651. mov DWORD PTR 16[esp],ecx
  1652. xor edx,ecx
  1653. add ebx,DWORD PTR 28[esp]
  1654. xor edi,esi
  1655. ror edx,6
  1656. mov ecx,eax
  1657. add ebx,edi
  1658. ror ecx,9
  1659. mov esi,eax
  1660. mov edi,DWORD PTR 4[esp]
  1661. xor ecx,eax
  1662. mov DWORD PTR [esp],eax
  1663. xor eax,edi
  1664. ror ecx,11
  1665. and ebp,eax
  1666. lea edx,DWORD PTR 666307205[edx*1+ebx]
  1667. xor ecx,esi
  1668. xor ebp,edi
  1669. mov esi,DWORD PTR 40[esp]
  1670. ror ecx,2
  1671. add ebp,edx
  1672. add edx,DWORD PTR 12[esp]
  1673. add ebp,ecx
  1674. mov ecx,DWORD PTR 92[esp]
  1675. mov ebx,esi
  1676. ror esi,11
  1677. mov edi,ecx
  1678. ror ecx,2
  1679. xor esi,ebx
  1680. shr ebx,3
  1681. ror esi,7
  1682. xor ecx,edi
  1683. xor ebx,esi
  1684. ror ecx,17
  1685. add ebx,DWORD PTR 36[esp]
  1686. shr edi,10
  1687. add ebx,DWORD PTR 72[esp]
  1688. mov esi,edx
  1689. xor edi,ecx
  1690. mov ecx,DWORD PTR 16[esp]
  1691. ror edx,14
  1692. add ebx,edi
  1693. mov edi,DWORD PTR 20[esp]
  1694. xor edx,esi
  1695. mov DWORD PTR 36[esp],ebx
  1696. xor ecx,edi
  1697. ror edx,5
  1698. and ecx,esi
  1699. mov DWORD PTR 12[esp],esi
  1700. xor edx,esi
  1701. add ebx,DWORD PTR 24[esp]
  1702. xor edi,ecx
  1703. ror edx,6
  1704. mov esi,ebp
  1705. add ebx,edi
  1706. ror esi,9
  1707. mov ecx,ebp
  1708. mov edi,DWORD PTR [esp]
  1709. xor esi,ebp
  1710. mov DWORD PTR 28[esp],ebp
  1711. xor ebp,edi
  1712. ror esi,11
  1713. and eax,ebp
  1714. lea edx,DWORD PTR 773529912[edx*1+ebx]
  1715. xor esi,ecx
  1716. xor eax,edi
  1717. mov ecx,DWORD PTR 44[esp]
  1718. ror esi,2
  1719. add eax,edx
  1720. add edx,DWORD PTR 8[esp]
  1721. add eax,esi
  1722. mov esi,DWORD PTR 32[esp]
  1723. mov ebx,ecx
  1724. ror ecx,11
  1725. mov edi,esi
  1726. ror esi,2
  1727. xor ecx,ebx
  1728. shr ebx,3
  1729. ror ecx,7
  1730. xor esi,edi
  1731. xor ebx,ecx
  1732. ror esi,17
  1733. add ebx,DWORD PTR 40[esp]
  1734. shr edi,10
  1735. add ebx,DWORD PTR 76[esp]
  1736. mov ecx,edx
  1737. xor edi,esi
  1738. mov esi,DWORD PTR 12[esp]
  1739. ror edx,14
  1740. add ebx,edi
  1741. mov edi,DWORD PTR 16[esp]
  1742. xor edx,ecx
  1743. mov DWORD PTR 40[esp],ebx
  1744. xor esi,edi
  1745. ror edx,5
  1746. and esi,ecx
  1747. mov DWORD PTR 8[esp],ecx
  1748. xor edx,ecx
  1749. add ebx,DWORD PTR 20[esp]
  1750. xor edi,esi
  1751. ror edx,6
  1752. mov ecx,eax
  1753. add ebx,edi
  1754. ror ecx,9
  1755. mov esi,eax
  1756. mov edi,DWORD PTR 28[esp]
  1757. xor ecx,eax
  1758. mov DWORD PTR 24[esp],eax
  1759. xor eax,edi
  1760. ror ecx,11
  1761. and ebp,eax
  1762. lea edx,DWORD PTR 1294757372[edx*1+ebx]
  1763. xor ecx,esi
  1764. xor ebp,edi
  1765. mov esi,DWORD PTR 48[esp]
  1766. ror ecx,2
  1767. add ebp,edx
  1768. add edx,DWORD PTR 4[esp]
  1769. add ebp,ecx
  1770. mov ecx,DWORD PTR 36[esp]
  1771. mov ebx,esi
  1772. ror esi,11
  1773. mov edi,ecx
  1774. ror ecx,2
  1775. xor esi,ebx
  1776. shr ebx,3
  1777. ror esi,7
  1778. xor ecx,edi
  1779. xor ebx,esi
  1780. ror ecx,17
  1781. add ebx,DWORD PTR 44[esp]
  1782. shr edi,10
  1783. add ebx,DWORD PTR 80[esp]
  1784. mov esi,edx
  1785. xor edi,ecx
  1786. mov ecx,DWORD PTR 8[esp]
  1787. ror edx,14
  1788. add ebx,edi
  1789. mov edi,DWORD PTR 12[esp]
  1790. xor edx,esi
  1791. mov DWORD PTR 44[esp],ebx
  1792. xor ecx,edi
  1793. ror edx,5
  1794. and ecx,esi
  1795. mov DWORD PTR 4[esp],esi
  1796. xor edx,esi
  1797. add ebx,DWORD PTR 16[esp]
  1798. xor edi,ecx
  1799. ror edx,6
  1800. mov esi,ebp
  1801. add ebx,edi
  1802. ror esi,9
  1803. mov ecx,ebp
  1804. mov edi,DWORD PTR 24[esp]
  1805. xor esi,ebp
  1806. mov DWORD PTR 20[esp],ebp
  1807. xor ebp,edi
  1808. ror esi,11
  1809. and eax,ebp
  1810. lea edx,DWORD PTR 1396182291[edx*1+ebx]
  1811. xor esi,ecx
  1812. xor eax,edi
  1813. mov ecx,DWORD PTR 52[esp]
  1814. ror esi,2
  1815. add eax,edx
  1816. add edx,DWORD PTR [esp]
  1817. add eax,esi
  1818. mov esi,DWORD PTR 40[esp]
  1819. mov ebx,ecx
  1820. ror ecx,11
  1821. mov edi,esi
  1822. ror esi,2
  1823. xor ecx,ebx
  1824. shr ebx,3
  1825. ror ecx,7
  1826. xor esi,edi
  1827. xor ebx,ecx
  1828. ror esi,17
  1829. add ebx,DWORD PTR 48[esp]
  1830. shr edi,10
  1831. add ebx,DWORD PTR 84[esp]
  1832. mov ecx,edx
  1833. xor edi,esi
  1834. mov esi,DWORD PTR 4[esp]
  1835. ror edx,14
  1836. add ebx,edi
  1837. mov edi,DWORD PTR 8[esp]
  1838. xor edx,ecx
  1839. mov DWORD PTR 48[esp],ebx
  1840. xor esi,edi
  1841. ror edx,5
  1842. and esi,ecx
  1843. mov DWORD PTR [esp],ecx
  1844. xor edx,ecx
  1845. add ebx,DWORD PTR 12[esp]
  1846. xor edi,esi
  1847. ror edx,6
  1848. mov ecx,eax
  1849. add ebx,edi
  1850. ror ecx,9
  1851. mov esi,eax
  1852. mov edi,DWORD PTR 20[esp]
  1853. xor ecx,eax
  1854. mov DWORD PTR 16[esp],eax
  1855. xor eax,edi
  1856. ror ecx,11
  1857. and ebp,eax
  1858. lea edx,DWORD PTR 1695183700[edx*1+ebx]
  1859. xor ecx,esi
  1860. xor ebp,edi
  1861. mov esi,DWORD PTR 56[esp]
  1862. ror ecx,2
  1863. add ebp,edx
  1864. add edx,DWORD PTR 28[esp]
  1865. add ebp,ecx
  1866. mov ecx,DWORD PTR 44[esp]
  1867. mov ebx,esi
  1868. ror esi,11
  1869. mov edi,ecx
  1870. ror ecx,2
  1871. xor esi,ebx
  1872. shr ebx,3
  1873. ror esi,7
  1874. xor ecx,edi
  1875. xor ebx,esi
  1876. ror ecx,17
  1877. add ebx,DWORD PTR 52[esp]
  1878. shr edi,10
  1879. add ebx,DWORD PTR 88[esp]
  1880. mov esi,edx
  1881. xor edi,ecx
  1882. mov ecx,DWORD PTR [esp]
  1883. ror edx,14
  1884. add ebx,edi
  1885. mov edi,DWORD PTR 4[esp]
  1886. xor edx,esi
  1887. mov DWORD PTR 52[esp],ebx
  1888. xor ecx,edi
  1889. ror edx,5
  1890. and ecx,esi
  1891. mov DWORD PTR 28[esp],esi
  1892. xor edx,esi
  1893. add ebx,DWORD PTR 8[esp]
  1894. xor edi,ecx
  1895. ror edx,6
  1896. mov esi,ebp
  1897. add ebx,edi
  1898. ror esi,9
  1899. mov ecx,ebp
  1900. mov edi,DWORD PTR 16[esp]
  1901. xor esi,ebp
  1902. mov DWORD PTR 12[esp],ebp
  1903. xor ebp,edi
  1904. ror esi,11
  1905. and eax,ebp
  1906. lea edx,DWORD PTR 1986661051[edx*1+ebx]
  1907. xor esi,ecx
  1908. xor eax,edi
  1909. mov ecx,DWORD PTR 60[esp]
  1910. ror esi,2
  1911. add eax,edx
  1912. add edx,DWORD PTR 24[esp]
  1913. add eax,esi
  1914. mov esi,DWORD PTR 48[esp]
  1915. mov ebx,ecx
  1916. ror ecx,11
  1917. mov edi,esi
  1918. ror esi,2
  1919. xor ecx,ebx
  1920. shr ebx,3
  1921. ror ecx,7
  1922. xor esi,edi
  1923. xor ebx,ecx
  1924. ror esi,17
  1925. add ebx,DWORD PTR 56[esp]
  1926. shr edi,10
  1927. add ebx,DWORD PTR 92[esp]
  1928. mov ecx,edx
  1929. xor edi,esi
  1930. mov esi,DWORD PTR 28[esp]
  1931. ror edx,14
  1932. add ebx,edi
  1933. mov edi,DWORD PTR [esp]
  1934. xor edx,ecx
  1935. mov DWORD PTR 56[esp],ebx
  1936. xor esi,edi
  1937. ror edx,5
  1938. and esi,ecx
  1939. mov DWORD PTR 24[esp],ecx
  1940. xor edx,ecx
  1941. add ebx,DWORD PTR 4[esp]
  1942. xor edi,esi
  1943. ror edx,6
  1944. mov ecx,eax
  1945. add ebx,edi
  1946. ror ecx,9
  1947. mov esi,eax
  1948. mov edi,DWORD PTR 12[esp]
  1949. xor ecx,eax
  1950. mov DWORD PTR 8[esp],eax
  1951. xor eax,edi
  1952. ror ecx,11
  1953. and ebp,eax
  1954. lea edx,DWORD PTR 2177026350[edx*1+ebx]
  1955. xor ecx,esi
  1956. xor ebp,edi
  1957. mov esi,DWORD PTR 64[esp]
  1958. ror ecx,2
  1959. add ebp,edx
  1960. add edx,DWORD PTR 20[esp]
  1961. add ebp,ecx
  1962. mov ecx,DWORD PTR 52[esp]
  1963. mov ebx,esi
  1964. ror esi,11
  1965. mov edi,ecx
  1966. ror ecx,2
  1967. xor esi,ebx
  1968. shr ebx,3
  1969. ror esi,7
  1970. xor ecx,edi
  1971. xor ebx,esi
  1972. ror ecx,17
  1973. add ebx,DWORD PTR 60[esp]
  1974. shr edi,10
  1975. add ebx,DWORD PTR 32[esp]
  1976. mov esi,edx
  1977. xor edi,ecx
  1978. mov ecx,DWORD PTR 24[esp]
  1979. ror edx,14
  1980. add ebx,edi
  1981. mov edi,DWORD PTR 28[esp]
  1982. xor edx,esi
  1983. mov DWORD PTR 60[esp],ebx
  1984. xor ecx,edi
  1985. ror edx,5
  1986. and ecx,esi
  1987. mov DWORD PTR 20[esp],esi
  1988. xor edx,esi
  1989. add ebx,DWORD PTR [esp]
  1990. xor edi,ecx
  1991. ror edx,6
  1992. mov esi,ebp
  1993. add ebx,edi
  1994. ror esi,9
  1995. mov ecx,ebp
  1996. mov edi,DWORD PTR 8[esp]
  1997. xor esi,ebp
  1998. mov DWORD PTR 4[esp],ebp
  1999. xor ebp,edi
  2000. ror esi,11
  2001. and eax,ebp
  2002. lea edx,DWORD PTR 2456956037[edx*1+ebx]
  2003. xor esi,ecx
  2004. xor eax,edi
  2005. mov ecx,DWORD PTR 68[esp]
  2006. ror esi,2
  2007. add eax,edx
  2008. add edx,DWORD PTR 16[esp]
  2009. add eax,esi
  2010. mov esi,DWORD PTR 56[esp]
  2011. mov ebx,ecx
  2012. ror ecx,11
  2013. mov edi,esi
  2014. ror esi,2
  2015. xor ecx,ebx
  2016. shr ebx,3
  2017. ror ecx,7
  2018. xor esi,edi
  2019. xor ebx,ecx
  2020. ror esi,17
  2021. add ebx,DWORD PTR 64[esp]
  2022. shr edi,10
  2023. add ebx,DWORD PTR 36[esp]
  2024. mov ecx,edx
  2025. xor edi,esi
  2026. mov esi,DWORD PTR 20[esp]
  2027. ror edx,14
  2028. add ebx,edi
  2029. mov edi,DWORD PTR 24[esp]
  2030. xor edx,ecx
  2031. mov DWORD PTR 64[esp],ebx
  2032. xor esi,edi
  2033. ror edx,5
  2034. and esi,ecx
  2035. mov DWORD PTR 16[esp],ecx
  2036. xor edx,ecx
  2037. add ebx,DWORD PTR 28[esp]
  2038. xor edi,esi
  2039. ror edx,6
  2040. mov ecx,eax
  2041. add ebx,edi
  2042. ror ecx,9
  2043. mov esi,eax
  2044. mov edi,DWORD PTR 4[esp]
  2045. xor ecx,eax
  2046. mov DWORD PTR [esp],eax
  2047. xor eax,edi
  2048. ror ecx,11
  2049. and ebp,eax
  2050. lea edx,DWORD PTR 2730485921[edx*1+ebx]
  2051. xor ecx,esi
  2052. xor ebp,edi
  2053. mov esi,DWORD PTR 72[esp]
  2054. ror ecx,2
  2055. add ebp,edx
  2056. add edx,DWORD PTR 12[esp]
  2057. add ebp,ecx
  2058. mov ecx,DWORD PTR 60[esp]
  2059. mov ebx,esi
  2060. ror esi,11
  2061. mov edi,ecx
  2062. ror ecx,2
  2063. xor esi,ebx
  2064. shr ebx,3
  2065. ror esi,7
  2066. xor ecx,edi
  2067. xor ebx,esi
  2068. ror ecx,17
  2069. add ebx,DWORD PTR 68[esp]
  2070. shr edi,10
  2071. add ebx,DWORD PTR 40[esp]
  2072. mov esi,edx
  2073. xor edi,ecx
  2074. mov ecx,DWORD PTR 16[esp]
  2075. ror edx,14
  2076. add ebx,edi
  2077. mov edi,DWORD PTR 20[esp]
  2078. xor edx,esi
  2079. mov DWORD PTR 68[esp],ebx
  2080. xor ecx,edi
  2081. ror edx,5
  2082. and ecx,esi
  2083. mov DWORD PTR 12[esp],esi
  2084. xor edx,esi
  2085. add ebx,DWORD PTR 24[esp]
  2086. xor edi,ecx
  2087. ror edx,6
  2088. mov esi,ebp
  2089. add ebx,edi
  2090. ror esi,9
  2091. mov ecx,ebp
  2092. mov edi,DWORD PTR [esp]
  2093. xor esi,ebp
  2094. mov DWORD PTR 28[esp],ebp
  2095. xor ebp,edi
  2096. ror esi,11
  2097. and eax,ebp
  2098. lea edx,DWORD PTR 2820302411[edx*1+ebx]
  2099. xor esi,ecx
  2100. xor eax,edi
  2101. mov ecx,DWORD PTR 76[esp]
  2102. ror esi,2
  2103. add eax,edx
  2104. add edx,DWORD PTR 8[esp]
  2105. add eax,esi
  2106. mov esi,DWORD PTR 64[esp]
  2107. mov ebx,ecx
  2108. ror ecx,11
  2109. mov edi,esi
  2110. ror esi,2
  2111. xor ecx,ebx
  2112. shr ebx,3
  2113. ror ecx,7
  2114. xor esi,edi
  2115. xor ebx,ecx
  2116. ror esi,17
  2117. add ebx,DWORD PTR 72[esp]
  2118. shr edi,10
  2119. add ebx,DWORD PTR 44[esp]
  2120. mov ecx,edx
  2121. xor edi,esi
  2122. mov esi,DWORD PTR 12[esp]
  2123. ror edx,14
  2124. add ebx,edi
  2125. mov edi,DWORD PTR 16[esp]
  2126. xor edx,ecx
  2127. mov DWORD PTR 72[esp],ebx
  2128. xor esi,edi
  2129. ror edx,5
  2130. and esi,ecx
  2131. mov DWORD PTR 8[esp],ecx
  2132. xor edx,ecx
  2133. add ebx,DWORD PTR 20[esp]
  2134. xor edi,esi
  2135. ror edx,6
  2136. mov ecx,eax
  2137. add ebx,edi
  2138. ror ecx,9
  2139. mov esi,eax
  2140. mov edi,DWORD PTR 28[esp]
  2141. xor ecx,eax
  2142. mov DWORD PTR 24[esp],eax
  2143. xor eax,edi
  2144. ror ecx,11
  2145. and ebp,eax
  2146. lea edx,DWORD PTR 3259730800[edx*1+ebx]
  2147. xor ecx,esi
  2148. xor ebp,edi
  2149. mov esi,DWORD PTR 80[esp]
  2150. ror ecx,2
  2151. add ebp,edx
  2152. add edx,DWORD PTR 4[esp]
  2153. add ebp,ecx
  2154. mov ecx,DWORD PTR 68[esp]
  2155. mov ebx,esi
  2156. ror esi,11
  2157. mov edi,ecx
  2158. ror ecx,2
  2159. xor esi,ebx
  2160. shr ebx,3
  2161. ror esi,7
  2162. xor ecx,edi
  2163. xor ebx,esi
  2164. ror ecx,17
  2165. add ebx,DWORD PTR 76[esp]
  2166. shr edi,10
  2167. add ebx,DWORD PTR 48[esp]
  2168. mov esi,edx
  2169. xor edi,ecx
  2170. mov ecx,DWORD PTR 8[esp]
  2171. ror edx,14
  2172. add ebx,edi
  2173. mov edi,DWORD PTR 12[esp]
  2174. xor edx,esi
  2175. mov DWORD PTR 76[esp],ebx
  2176. xor ecx,edi
  2177. ror edx,5
  2178. and ecx,esi
  2179. mov DWORD PTR 4[esp],esi
  2180. xor edx,esi
  2181. add ebx,DWORD PTR 16[esp]
  2182. xor edi,ecx
  2183. ror edx,6
  2184. mov esi,ebp
  2185. add ebx,edi
  2186. ror esi,9
  2187. mov ecx,ebp
  2188. mov edi,DWORD PTR 24[esp]
  2189. xor esi,ebp
  2190. mov DWORD PTR 20[esp],ebp
  2191. xor ebp,edi
  2192. ror esi,11
  2193. and eax,ebp
  2194. lea edx,DWORD PTR 3345764771[edx*1+ebx]
  2195. xor esi,ecx
  2196. xor eax,edi
  2197. mov ecx,DWORD PTR 84[esp]
  2198. ror esi,2
  2199. add eax,edx
  2200. add edx,DWORD PTR [esp]
  2201. add eax,esi
  2202. mov esi,DWORD PTR 72[esp]
  2203. mov ebx,ecx
  2204. ror ecx,11
  2205. mov edi,esi
  2206. ror esi,2
  2207. xor ecx,ebx
  2208. shr ebx,3
  2209. ror ecx,7
  2210. xor esi,edi
  2211. xor ebx,ecx
  2212. ror esi,17
  2213. add ebx,DWORD PTR 80[esp]
  2214. shr edi,10
  2215. add ebx,DWORD PTR 52[esp]
  2216. mov ecx,edx
  2217. xor edi,esi
  2218. mov esi,DWORD PTR 4[esp]
  2219. ror edx,14
  2220. add ebx,edi
  2221. mov edi,DWORD PTR 8[esp]
  2222. xor edx,ecx
  2223. mov DWORD PTR 80[esp],ebx
  2224. xor esi,edi
  2225. ror edx,5
  2226. and esi,ecx
  2227. mov DWORD PTR [esp],ecx
  2228. xor edx,ecx
  2229. add ebx,DWORD PTR 12[esp]
  2230. xor edi,esi
  2231. ror edx,6
  2232. mov ecx,eax
  2233. add ebx,edi
  2234. ror ecx,9
  2235. mov esi,eax
  2236. mov edi,DWORD PTR 20[esp]
  2237. xor ecx,eax
  2238. mov DWORD PTR 16[esp],eax
  2239. xor eax,edi
  2240. ror ecx,11
  2241. and ebp,eax
  2242. lea edx,DWORD PTR 3516065817[edx*1+ebx]
  2243. xor ecx,esi
  2244. xor ebp,edi
  2245. mov esi,DWORD PTR 88[esp]
  2246. ror ecx,2
  2247. add ebp,edx
  2248. add edx,DWORD PTR 28[esp]
  2249. add ebp,ecx
  2250. mov ecx,DWORD PTR 76[esp]
  2251. mov ebx,esi
  2252. ror esi,11
  2253. mov edi,ecx
  2254. ror ecx,2
  2255. xor esi,ebx
  2256. shr ebx,3
  2257. ror esi,7
  2258. xor ecx,edi
  2259. xor ebx,esi
  2260. ror ecx,17
  2261. add ebx,DWORD PTR 84[esp]
  2262. shr edi,10
  2263. add ebx,DWORD PTR 56[esp]
  2264. mov esi,edx
  2265. xor edi,ecx
  2266. mov ecx,DWORD PTR [esp]
  2267. ror edx,14
  2268. add ebx,edi
  2269. mov edi,DWORD PTR 4[esp]
  2270. xor edx,esi
  2271. mov DWORD PTR 84[esp],ebx
  2272. xor ecx,edi
  2273. ror edx,5
  2274. and ecx,esi
  2275. mov DWORD PTR 28[esp],esi
  2276. xor edx,esi
  2277. add ebx,DWORD PTR 8[esp]
  2278. xor edi,ecx
  2279. ror edx,6
  2280. mov esi,ebp
  2281. add ebx,edi
  2282. ror esi,9
  2283. mov ecx,ebp
  2284. mov edi,DWORD PTR 16[esp]
  2285. xor esi,ebp
  2286. mov DWORD PTR 12[esp],ebp
  2287. xor ebp,edi
  2288. ror esi,11
  2289. and eax,ebp
  2290. lea edx,DWORD PTR 3600352804[edx*1+ebx]
  2291. xor esi,ecx
  2292. xor eax,edi
  2293. mov ecx,DWORD PTR 92[esp]
  2294. ror esi,2
  2295. add eax,edx
  2296. add edx,DWORD PTR 24[esp]
  2297. add eax,esi
  2298. mov esi,DWORD PTR 80[esp]
  2299. mov ebx,ecx
  2300. ror ecx,11
  2301. mov edi,esi
  2302. ror esi,2
  2303. xor ecx,ebx
  2304. shr ebx,3
  2305. ror ecx,7
  2306. xor esi,edi
  2307. xor ebx,ecx
  2308. ror esi,17
  2309. add ebx,DWORD PTR 88[esp]
  2310. shr edi,10
  2311. add ebx,DWORD PTR 60[esp]
  2312. mov ecx,edx
  2313. xor edi,esi
  2314. mov esi,DWORD PTR 28[esp]
  2315. ror edx,14
  2316. add ebx,edi
  2317. mov edi,DWORD PTR [esp]
  2318. xor edx,ecx
  2319. mov DWORD PTR 88[esp],ebx
  2320. xor esi,edi
  2321. ror edx,5
  2322. and esi,ecx
  2323. mov DWORD PTR 24[esp],ecx
  2324. xor edx,ecx
  2325. add ebx,DWORD PTR 4[esp]
  2326. xor edi,esi
  2327. ror edx,6
  2328. mov ecx,eax
  2329. add ebx,edi
  2330. ror ecx,9
  2331. mov esi,eax
  2332. mov edi,DWORD PTR 12[esp]
  2333. xor ecx,eax
  2334. mov DWORD PTR 8[esp],eax
  2335. xor eax,edi
  2336. ror ecx,11
  2337. and ebp,eax
  2338. lea edx,DWORD PTR 4094571909[edx*1+ebx]
  2339. xor ecx,esi
  2340. xor ebp,edi
  2341. mov esi,DWORD PTR 32[esp]
  2342. ror ecx,2
  2343. add ebp,edx
  2344. add edx,DWORD PTR 20[esp]
  2345. add ebp,ecx
  2346. mov ecx,DWORD PTR 84[esp]
  2347. mov ebx,esi
  2348. ror esi,11
  2349. mov edi,ecx
  2350. ror ecx,2
  2351. xor esi,ebx
  2352. shr ebx,3
  2353. ror esi,7
  2354. xor ecx,edi
  2355. xor ebx,esi
  2356. ror ecx,17
  2357. add ebx,DWORD PTR 92[esp]
  2358. shr edi,10
  2359. add ebx,DWORD PTR 64[esp]
  2360. mov esi,edx
  2361. xor edi,ecx
  2362. mov ecx,DWORD PTR 24[esp]
  2363. ror edx,14
  2364. add ebx,edi
  2365. mov edi,DWORD PTR 28[esp]
  2366. xor edx,esi
  2367. mov DWORD PTR 92[esp],ebx
  2368. xor ecx,edi
  2369. ror edx,5
  2370. and ecx,esi
  2371. mov DWORD PTR 20[esp],esi
  2372. xor edx,esi
  2373. add ebx,DWORD PTR [esp]
  2374. xor edi,ecx
  2375. ror edx,6
  2376. mov esi,ebp
  2377. add ebx,edi
  2378. ror esi,9
  2379. mov ecx,ebp
  2380. mov edi,DWORD PTR 8[esp]
  2381. xor esi,ebp
  2382. mov DWORD PTR 4[esp],ebp
  2383. xor ebp,edi
  2384. ror esi,11
  2385. and eax,ebp
  2386. lea edx,DWORD PTR 275423344[edx*1+ebx]
  2387. xor esi,ecx
  2388. xor eax,edi
  2389. mov ecx,DWORD PTR 36[esp]
  2390. ror esi,2
  2391. add eax,edx
  2392. add edx,DWORD PTR 16[esp]
  2393. add eax,esi
  2394. mov esi,DWORD PTR 88[esp]
  2395. mov ebx,ecx
  2396. ror ecx,11
  2397. mov edi,esi
  2398. ror esi,2
  2399. xor ecx,ebx
  2400. shr ebx,3
  2401. ror ecx,7
  2402. xor esi,edi
  2403. xor ebx,ecx
  2404. ror esi,17
  2405. add ebx,DWORD PTR 32[esp]
  2406. shr edi,10
  2407. add ebx,DWORD PTR 68[esp]
  2408. mov ecx,edx
  2409. xor edi,esi
  2410. mov esi,DWORD PTR 20[esp]
  2411. ror edx,14
  2412. add ebx,edi
  2413. mov edi,DWORD PTR 24[esp]
  2414. xor edx,ecx
  2415. mov DWORD PTR 32[esp],ebx
  2416. xor esi,edi
  2417. ror edx,5
  2418. and esi,ecx
  2419. mov DWORD PTR 16[esp],ecx
  2420. xor edx,ecx
  2421. add ebx,DWORD PTR 28[esp]
  2422. xor edi,esi
  2423. ror edx,6
  2424. mov ecx,eax
  2425. add ebx,edi
  2426. ror ecx,9
  2427. mov esi,eax
  2428. mov edi,DWORD PTR 4[esp]
  2429. xor ecx,eax
  2430. mov DWORD PTR [esp],eax
  2431. xor eax,edi
  2432. ror ecx,11
  2433. and ebp,eax
  2434. lea edx,DWORD PTR 430227734[edx*1+ebx]
  2435. xor ecx,esi
  2436. xor ebp,edi
  2437. mov esi,DWORD PTR 40[esp]
  2438. ror ecx,2
  2439. add ebp,edx
  2440. add edx,DWORD PTR 12[esp]
  2441. add ebp,ecx
  2442. mov ecx,DWORD PTR 92[esp]
  2443. mov ebx,esi
  2444. ror esi,11
  2445. mov edi,ecx
  2446. ror ecx,2
  2447. xor esi,ebx
  2448. shr ebx,3
  2449. ror esi,7
  2450. xor ecx,edi
  2451. xor ebx,esi
  2452. ror ecx,17
  2453. add ebx,DWORD PTR 36[esp]
  2454. shr edi,10
  2455. add ebx,DWORD PTR 72[esp]
  2456. mov esi,edx
  2457. xor edi,ecx
  2458. mov ecx,DWORD PTR 16[esp]
  2459. ror edx,14
  2460. add ebx,edi
  2461. mov edi,DWORD PTR 20[esp]
  2462. xor edx,esi
  2463. mov DWORD PTR 36[esp],ebx
  2464. xor ecx,edi
  2465. ror edx,5
  2466. and ecx,esi
  2467. mov DWORD PTR 12[esp],esi
  2468. xor edx,esi
  2469. add ebx,DWORD PTR 24[esp]
  2470. xor edi,ecx
  2471. ror edx,6
  2472. mov esi,ebp
  2473. add ebx,edi
  2474. ror esi,9
  2475. mov ecx,ebp
  2476. mov edi,DWORD PTR [esp]
  2477. xor esi,ebp
  2478. mov DWORD PTR 28[esp],ebp
  2479. xor ebp,edi
  2480. ror esi,11
  2481. and eax,ebp
  2482. lea edx,DWORD PTR 506948616[edx*1+ebx]
  2483. xor esi,ecx
  2484. xor eax,edi
  2485. mov ecx,DWORD PTR 44[esp]
  2486. ror esi,2
  2487. add eax,edx
  2488. add edx,DWORD PTR 8[esp]
  2489. add eax,esi
  2490. mov esi,DWORD PTR 32[esp]
  2491. mov ebx,ecx
  2492. ror ecx,11
  2493. mov edi,esi
  2494. ror esi,2
  2495. xor ecx,ebx
  2496. shr ebx,3
  2497. ror ecx,7
  2498. xor esi,edi
  2499. xor ebx,ecx
  2500. ror esi,17
  2501. add ebx,DWORD PTR 40[esp]
  2502. shr edi,10
  2503. add ebx,DWORD PTR 76[esp]
  2504. mov ecx,edx
  2505. xor edi,esi
  2506. mov esi,DWORD PTR 12[esp]
  2507. ror edx,14
  2508. add ebx,edi
  2509. mov edi,DWORD PTR 16[esp]
  2510. xor edx,ecx
  2511. mov DWORD PTR 40[esp],ebx
  2512. xor esi,edi
  2513. ror edx,5
  2514. and esi,ecx
  2515. mov DWORD PTR 8[esp],ecx
  2516. xor edx,ecx
  2517. add ebx,DWORD PTR 20[esp]
  2518. xor edi,esi
  2519. ror edx,6
  2520. mov ecx,eax
  2521. add ebx,edi
  2522. ror ecx,9
  2523. mov esi,eax
  2524. mov edi,DWORD PTR 28[esp]
  2525. xor ecx,eax
  2526. mov DWORD PTR 24[esp],eax
  2527. xor eax,edi
  2528. ror ecx,11
  2529. and ebp,eax
  2530. lea edx,DWORD PTR 659060556[edx*1+ebx]
  2531. xor ecx,esi
  2532. xor ebp,edi
  2533. mov esi,DWORD PTR 48[esp]
  2534. ror ecx,2
  2535. add ebp,edx
  2536. add edx,DWORD PTR 4[esp]
  2537. add ebp,ecx
  2538. mov ecx,DWORD PTR 36[esp]
  2539. mov ebx,esi
  2540. ror esi,11
  2541. mov edi,ecx
  2542. ror ecx,2
  2543. xor esi,ebx
  2544. shr ebx,3
  2545. ror esi,7
  2546. xor ecx,edi
  2547. xor ebx,esi
  2548. ror ecx,17
  2549. add ebx,DWORD PTR 44[esp]
  2550. shr edi,10
  2551. add ebx,DWORD PTR 80[esp]
  2552. mov esi,edx
  2553. xor edi,ecx
  2554. mov ecx,DWORD PTR 8[esp]
  2555. ror edx,14
  2556. add ebx,edi
  2557. mov edi,DWORD PTR 12[esp]
  2558. xor edx,esi
  2559. mov DWORD PTR 44[esp],ebx
  2560. xor ecx,edi
  2561. ror edx,5
  2562. and ecx,esi
  2563. mov DWORD PTR 4[esp],esi
  2564. xor edx,esi
  2565. add ebx,DWORD PTR 16[esp]
  2566. xor edi,ecx
  2567. ror edx,6
  2568. mov esi,ebp
  2569. add ebx,edi
  2570. ror esi,9
  2571. mov ecx,ebp
  2572. mov edi,DWORD PTR 24[esp]
  2573. xor esi,ebp
  2574. mov DWORD PTR 20[esp],ebp
  2575. xor ebp,edi
  2576. ror esi,11
  2577. and eax,ebp
  2578. lea edx,DWORD PTR 883997877[edx*1+ebx]
  2579. xor esi,ecx
  2580. xor eax,edi
  2581. mov ecx,DWORD PTR 52[esp]
  2582. ror esi,2
  2583. add eax,edx
  2584. add edx,DWORD PTR [esp]
  2585. add eax,esi
  2586. mov esi,DWORD PTR 40[esp]
  2587. mov ebx,ecx
  2588. ror ecx,11
  2589. mov edi,esi
  2590. ror esi,2
  2591. xor ecx,ebx
  2592. shr ebx,3
  2593. ror ecx,7
  2594. xor esi,edi
  2595. xor ebx,ecx
  2596. ror esi,17
  2597. add ebx,DWORD PTR 48[esp]
  2598. shr edi,10
  2599. add ebx,DWORD PTR 84[esp]
  2600. mov ecx,edx
  2601. xor edi,esi
  2602. mov esi,DWORD PTR 4[esp]
  2603. ror edx,14
  2604. add ebx,edi
  2605. mov edi,DWORD PTR 8[esp]
  2606. xor edx,ecx
  2607. mov DWORD PTR 48[esp],ebx
  2608. xor esi,edi
  2609. ror edx,5
  2610. and esi,ecx
  2611. mov DWORD PTR [esp],ecx
  2612. xor edx,ecx
  2613. add ebx,DWORD PTR 12[esp]
  2614. xor edi,esi
  2615. ror edx,6
  2616. mov ecx,eax
  2617. add ebx,edi
  2618. ror ecx,9
  2619. mov esi,eax
  2620. mov edi,DWORD PTR 20[esp]
  2621. xor ecx,eax
  2622. mov DWORD PTR 16[esp],eax
  2623. xor eax,edi
  2624. ror ecx,11
  2625. and ebp,eax
  2626. lea edx,DWORD PTR 958139571[edx*1+ebx]
  2627. xor ecx,esi
  2628. xor ebp,edi
  2629. mov esi,DWORD PTR 56[esp]
  2630. ror ecx,2
  2631. add ebp,edx
  2632. add edx,DWORD PTR 28[esp]
  2633. add ebp,ecx
  2634. mov ecx,DWORD PTR 44[esp]
  2635. mov ebx,esi
  2636. ror esi,11
  2637. mov edi,ecx
  2638. ror ecx,2
  2639. xor esi,ebx
  2640. shr ebx,3
  2641. ror esi,7
  2642. xor ecx,edi
  2643. xor ebx,esi
  2644. ror ecx,17
  2645. add ebx,DWORD PTR 52[esp]
  2646. shr edi,10
  2647. add ebx,DWORD PTR 88[esp]
  2648. mov esi,edx
  2649. xor edi,ecx
  2650. mov ecx,DWORD PTR [esp]
  2651. ror edx,14
  2652. add ebx,edi
  2653. mov edi,DWORD PTR 4[esp]
  2654. xor edx,esi
  2655. mov DWORD PTR 52[esp],ebx
  2656. xor ecx,edi
  2657. ror edx,5
  2658. and ecx,esi
  2659. mov DWORD PTR 28[esp],esi
  2660. xor edx,esi
  2661. add ebx,DWORD PTR 8[esp]
  2662. xor edi,ecx
  2663. ror edx,6
  2664. mov esi,ebp
  2665. add ebx,edi
  2666. ror esi,9
  2667. mov ecx,ebp
  2668. mov edi,DWORD PTR 16[esp]
  2669. xor esi,ebp
  2670. mov DWORD PTR 12[esp],ebp
  2671. xor ebp,edi
  2672. ror esi,11
  2673. and eax,ebp
  2674. lea edx,DWORD PTR 1322822218[edx*1+ebx]
  2675. xor esi,ecx
  2676. xor eax,edi
  2677. mov ecx,DWORD PTR 60[esp]
  2678. ror esi,2
  2679. add eax,edx
  2680. add edx,DWORD PTR 24[esp]
  2681. add eax,esi
  2682. mov esi,DWORD PTR 48[esp]
  2683. mov ebx,ecx
  2684. ror ecx,11
  2685. mov edi,esi
  2686. ror esi,2
  2687. xor ecx,ebx
  2688. shr ebx,3
  2689. ror ecx,7
  2690. xor esi,edi
  2691. xor ebx,ecx
  2692. ror esi,17
  2693. add ebx,DWORD PTR 56[esp]
  2694. shr edi,10
  2695. add ebx,DWORD PTR 92[esp]
  2696. mov ecx,edx
  2697. xor edi,esi
  2698. mov esi,DWORD PTR 28[esp]
  2699. ror edx,14
  2700. add ebx,edi
  2701. mov edi,DWORD PTR [esp]
  2702. xor edx,ecx
  2703. mov DWORD PTR 56[esp],ebx
  2704. xor esi,edi
  2705. ror edx,5
  2706. and esi,ecx
  2707. mov DWORD PTR 24[esp],ecx
  2708. xor edx,ecx
  2709. add ebx,DWORD PTR 4[esp]
  2710. xor edi,esi
  2711. ror edx,6
  2712. mov ecx,eax
  2713. add ebx,edi
  2714. ror ecx,9
  2715. mov esi,eax
  2716. mov edi,DWORD PTR 12[esp]
  2717. xor ecx,eax
  2718. mov DWORD PTR 8[esp],eax
  2719. xor eax,edi
  2720. ror ecx,11
  2721. and ebp,eax
  2722. lea edx,DWORD PTR 1537002063[edx*1+ebx]
  2723. xor ecx,esi
  2724. xor ebp,edi
  2725. mov esi,DWORD PTR 64[esp]
  2726. ror ecx,2
  2727. add ebp,edx
  2728. add edx,DWORD PTR 20[esp]
  2729. add ebp,ecx
  2730. mov ecx,DWORD PTR 52[esp]
  2731. mov ebx,esi
  2732. ror esi,11
  2733. mov edi,ecx
  2734. ror ecx,2
  2735. xor esi,ebx
  2736. shr ebx,3
  2737. ror esi,7
  2738. xor ecx,edi
  2739. xor ebx,esi
  2740. ror ecx,17
  2741. add ebx,DWORD PTR 60[esp]
  2742. shr edi,10
  2743. add ebx,DWORD PTR 32[esp]
  2744. mov esi,edx
  2745. xor edi,ecx
  2746. mov ecx,DWORD PTR 24[esp]
  2747. ror edx,14
  2748. add ebx,edi
  2749. mov edi,DWORD PTR 28[esp]
  2750. xor edx,esi
  2751. mov DWORD PTR 60[esp],ebx
  2752. xor ecx,edi
  2753. ror edx,5
  2754. and ecx,esi
  2755. mov DWORD PTR 20[esp],esi
  2756. xor edx,esi
  2757. add ebx,DWORD PTR [esp]
  2758. xor edi,ecx
  2759. ror edx,6
  2760. mov esi,ebp
  2761. add ebx,edi
  2762. ror esi,9
  2763. mov ecx,ebp
  2764. mov edi,DWORD PTR 8[esp]
  2765. xor esi,ebp
  2766. mov DWORD PTR 4[esp],ebp
  2767. xor ebp,edi
  2768. ror esi,11
  2769. and eax,ebp
  2770. lea edx,DWORD PTR 1747873779[edx*1+ebx]
  2771. xor esi,ecx
  2772. xor eax,edi
  2773. mov ecx,DWORD PTR 68[esp]
  2774. ror esi,2
  2775. add eax,edx
  2776. add edx,DWORD PTR 16[esp]
  2777. add eax,esi
  2778. mov esi,DWORD PTR 56[esp]
  2779. mov ebx,ecx
  2780. ror ecx,11
  2781. mov edi,esi
  2782. ror esi,2
  2783. xor ecx,ebx
  2784. shr ebx,3
  2785. ror ecx,7
  2786. xor esi,edi
  2787. xor ebx,ecx
  2788. ror esi,17
  2789. add ebx,DWORD PTR 64[esp]
  2790. shr edi,10
  2791. add ebx,DWORD PTR 36[esp]
  2792. mov ecx,edx
  2793. xor edi,esi
  2794. mov esi,DWORD PTR 20[esp]
  2795. ror edx,14
  2796. add ebx,edi
  2797. mov edi,DWORD PTR 24[esp]
  2798. xor edx,ecx
  2799. mov DWORD PTR 64[esp],ebx
  2800. xor esi,edi
  2801. ror edx,5
  2802. and esi,ecx
  2803. mov DWORD PTR 16[esp],ecx
  2804. xor edx,ecx
  2805. add ebx,DWORD PTR 28[esp]
  2806. xor edi,esi
  2807. ror edx,6
  2808. mov ecx,eax
  2809. add ebx,edi
  2810. ror ecx,9
  2811. mov esi,eax
  2812. mov edi,DWORD PTR 4[esp]
  2813. xor ecx,eax
  2814. mov DWORD PTR [esp],eax
  2815. xor eax,edi
  2816. ror ecx,11
  2817. and ebp,eax
  2818. lea edx,DWORD PTR 1955562222[edx*1+ebx]
  2819. xor ecx,esi
  2820. xor ebp,edi
  2821. mov esi,DWORD PTR 72[esp]
  2822. ror ecx,2
  2823. add ebp,edx
  2824. add edx,DWORD PTR 12[esp]
  2825. add ebp,ecx
  2826. mov ecx,DWORD PTR 60[esp]
  2827. mov ebx,esi
  2828. ror esi,11
  2829. mov edi,ecx
  2830. ror ecx,2
  2831. xor esi,ebx
  2832. shr ebx,3
  2833. ror esi,7
  2834. xor ecx,edi
  2835. xor ebx,esi
  2836. ror ecx,17
  2837. add ebx,DWORD PTR 68[esp]
  2838. shr edi,10
  2839. add ebx,DWORD PTR 40[esp]
  2840. mov esi,edx
  2841. xor edi,ecx
  2842. mov ecx,DWORD PTR 16[esp]
  2843. ror edx,14
  2844. add ebx,edi
  2845. mov edi,DWORD PTR 20[esp]
  2846. xor edx,esi
  2847. mov DWORD PTR 68[esp],ebx
  2848. xor ecx,edi
  2849. ror edx,5
  2850. and ecx,esi
  2851. mov DWORD PTR 12[esp],esi
  2852. xor edx,esi
  2853. add ebx,DWORD PTR 24[esp]
  2854. xor edi,ecx
  2855. ror edx,6
  2856. mov esi,ebp
  2857. add ebx,edi
  2858. ror esi,9
  2859. mov ecx,ebp
  2860. mov edi,DWORD PTR [esp]
  2861. xor esi,ebp
  2862. mov DWORD PTR 28[esp],ebp
  2863. xor ebp,edi
  2864. ror esi,11
  2865. and eax,ebp
  2866. lea edx,DWORD PTR 2024104815[edx*1+ebx]
  2867. xor esi,ecx
  2868. xor eax,edi
  2869. mov ecx,DWORD PTR 76[esp]
  2870. ror esi,2
  2871. add eax,edx
  2872. add edx,DWORD PTR 8[esp]
  2873. add eax,esi
  2874. mov esi,DWORD PTR 64[esp]
  2875. mov ebx,ecx
  2876. ror ecx,11
  2877. mov edi,esi
  2878. ror esi,2
  2879. xor ecx,ebx
  2880. shr ebx,3
  2881. ror ecx,7
  2882. xor esi,edi
  2883. xor ebx,ecx
  2884. ror esi,17
  2885. add ebx,DWORD PTR 72[esp]
  2886. shr edi,10
  2887. add ebx,DWORD PTR 44[esp]
  2888. mov ecx,edx
  2889. xor edi,esi
  2890. mov esi,DWORD PTR 12[esp]
  2891. ror edx,14
  2892. add ebx,edi
  2893. mov edi,DWORD PTR 16[esp]
  2894. xor edx,ecx
  2895. mov DWORD PTR 72[esp],ebx
  2896. xor esi,edi
  2897. ror edx,5
  2898. and esi,ecx
  2899. mov DWORD PTR 8[esp],ecx
  2900. xor edx,ecx
  2901. add ebx,DWORD PTR 20[esp]
  2902. xor edi,esi
  2903. ror edx,6
  2904. mov ecx,eax
  2905. add ebx,edi
  2906. ror ecx,9
  2907. mov esi,eax
  2908. mov edi,DWORD PTR 28[esp]
  2909. xor ecx,eax
  2910. mov DWORD PTR 24[esp],eax
  2911. xor eax,edi
  2912. ror ecx,11
  2913. and ebp,eax
  2914. lea edx,DWORD PTR 2227730452[edx*1+ebx]
  2915. xor ecx,esi
  2916. xor ebp,edi
  2917. mov esi,DWORD PTR 80[esp]
  2918. ror ecx,2
  2919. add ebp,edx
  2920. add edx,DWORD PTR 4[esp]
  2921. add ebp,ecx
  2922. mov ecx,DWORD PTR 68[esp]
  2923. mov ebx,esi
  2924. ror esi,11
  2925. mov edi,ecx
  2926. ror ecx,2
  2927. xor esi,ebx
  2928. shr ebx,3
  2929. ror esi,7
  2930. xor ecx,edi
  2931. xor ebx,esi
  2932. ror ecx,17
  2933. add ebx,DWORD PTR 76[esp]
  2934. shr edi,10
  2935. add ebx,DWORD PTR 48[esp]
  2936. mov esi,edx
  2937. xor edi,ecx
  2938. mov ecx,DWORD PTR 8[esp]
  2939. ror edx,14
  2940. add ebx,edi
  2941. mov edi,DWORD PTR 12[esp]
  2942. xor edx,esi
  2943. mov DWORD PTR 76[esp],ebx
  2944. xor ecx,edi
  2945. ror edx,5
  2946. and ecx,esi
  2947. mov DWORD PTR 4[esp],esi
  2948. xor edx,esi
  2949. add ebx,DWORD PTR 16[esp]
  2950. xor edi,ecx
  2951. ror edx,6
  2952. mov esi,ebp
  2953. add ebx,edi
  2954. ror esi,9
  2955. mov ecx,ebp
  2956. mov edi,DWORD PTR 24[esp]
  2957. xor esi,ebp
  2958. mov DWORD PTR 20[esp],ebp
  2959. xor ebp,edi
  2960. ror esi,11
  2961. and eax,ebp
  2962. lea edx,DWORD PTR 2361852424[edx*1+ebx]
  2963. xor esi,ecx
  2964. xor eax,edi
  2965. mov ecx,DWORD PTR 84[esp]
  2966. ror esi,2
  2967. add eax,edx
  2968. add edx,DWORD PTR [esp]
  2969. add eax,esi
  2970. mov esi,DWORD PTR 72[esp]
  2971. mov ebx,ecx
  2972. ror ecx,11
  2973. mov edi,esi
  2974. ror esi,2
  2975. xor ecx,ebx
  2976. shr ebx,3
  2977. ror ecx,7
  2978. xor esi,edi
  2979. xor ebx,ecx
  2980. ror esi,17
  2981. add ebx,DWORD PTR 80[esp]
  2982. shr edi,10
  2983. add ebx,DWORD PTR 52[esp]
  2984. mov ecx,edx
  2985. xor edi,esi
  2986. mov esi,DWORD PTR 4[esp]
  2987. ror edx,14
  2988. add ebx,edi
  2989. mov edi,DWORD PTR 8[esp]
  2990. xor edx,ecx
  2991. mov DWORD PTR 80[esp],ebx
  2992. xor esi,edi
  2993. ror edx,5
  2994. and esi,ecx
  2995. mov DWORD PTR [esp],ecx
  2996. xor edx,ecx
  2997. add ebx,DWORD PTR 12[esp]
  2998. xor edi,esi
  2999. ror edx,6
  3000. mov ecx,eax
  3001. add ebx,edi
  3002. ror ecx,9
  3003. mov esi,eax
  3004. mov edi,DWORD PTR 20[esp]
  3005. xor ecx,eax
  3006. mov DWORD PTR 16[esp],eax
  3007. xor eax,edi
  3008. ror ecx,11
  3009. and ebp,eax
  3010. lea edx,DWORD PTR 2428436474[edx*1+ebx]
  3011. xor ecx,esi
  3012. xor ebp,edi
  3013. mov esi,DWORD PTR 88[esp]
  3014. ror ecx,2
  3015. add ebp,edx
  3016. add edx,DWORD PTR 28[esp]
  3017. add ebp,ecx
  3018. mov ecx,DWORD PTR 76[esp]
  3019. mov ebx,esi
  3020. ror esi,11
  3021. mov edi,ecx
  3022. ror ecx,2
  3023. xor esi,ebx
  3024. shr ebx,3
  3025. ror esi,7
  3026. xor ecx,edi
  3027. xor ebx,esi
  3028. ror ecx,17
  3029. add ebx,DWORD PTR 84[esp]
  3030. shr edi,10
  3031. add ebx,DWORD PTR 56[esp]
  3032. mov esi,edx
  3033. xor edi,ecx
  3034. mov ecx,DWORD PTR [esp]
  3035. ror edx,14
  3036. add ebx,edi
  3037. mov edi,DWORD PTR 4[esp]
  3038. xor edx,esi
  3039. mov DWORD PTR 84[esp],ebx
  3040. xor ecx,edi
  3041. ror edx,5
  3042. and ecx,esi
  3043. mov DWORD PTR 28[esp],esi
  3044. xor edx,esi
  3045. add ebx,DWORD PTR 8[esp]
  3046. xor edi,ecx
  3047. ror edx,6
  3048. mov esi,ebp
  3049. add ebx,edi
  3050. ror esi,9
  3051. mov ecx,ebp
  3052. mov edi,DWORD PTR 16[esp]
  3053. xor esi,ebp
  3054. mov DWORD PTR 12[esp],ebp
  3055. xor ebp,edi
  3056. ror esi,11
  3057. and eax,ebp
  3058. lea edx,DWORD PTR 2756734187[edx*1+ebx]
  3059. xor esi,ecx
  3060. xor eax,edi
  3061. mov ecx,DWORD PTR 92[esp]
  3062. ror esi,2
  3063. add eax,edx
  3064. add edx,DWORD PTR 24[esp]
  3065. add eax,esi
  3066. mov esi,DWORD PTR 80[esp]
  3067. mov ebx,ecx
  3068. ror ecx,11
  3069. mov edi,esi
  3070. ror esi,2
  3071. xor ecx,ebx
  3072. shr ebx,3
  3073. ror ecx,7
  3074. xor esi,edi
  3075. xor ebx,ecx
  3076. ror esi,17
  3077. add ebx,DWORD PTR 88[esp]
  3078. shr edi,10
  3079. add ebx,DWORD PTR 60[esp]
  3080. mov ecx,edx
  3081. xor edi,esi
  3082. mov esi,DWORD PTR 28[esp]
  3083. ror edx,14
  3084. add ebx,edi
  3085. mov edi,DWORD PTR [esp]
  3086. xor edx,ecx
  3087. xor esi,edi
  3088. ror edx,5
  3089. and esi,ecx
  3090. mov DWORD PTR 24[esp],ecx
  3091. xor edx,ecx
  3092. add ebx,DWORD PTR 4[esp]
  3093. xor edi,esi
  3094. ror edx,6
  3095. mov ecx,eax
  3096. add ebx,edi
  3097. ror ecx,9
  3098. mov esi,eax
  3099. mov edi,DWORD PTR 12[esp]
  3100. xor ecx,eax
  3101. mov DWORD PTR 8[esp],eax
  3102. xor eax,edi
  3103. ror ecx,11
  3104. and ebp,eax
  3105. lea edx,DWORD PTR 3204031479[edx*1+ebx]
  3106. xor ecx,esi
  3107. xor ebp,edi
  3108. mov esi,DWORD PTR 32[esp]
  3109. ror ecx,2
  3110. add ebp,edx
  3111. add edx,DWORD PTR 20[esp]
  3112. add ebp,ecx
  3113. mov ecx,DWORD PTR 84[esp]
  3114. mov ebx,esi
  3115. ror esi,11
  3116. mov edi,ecx
  3117. ror ecx,2
  3118. xor esi,ebx
  3119. shr ebx,3
  3120. ror esi,7
  3121. xor ecx,edi
  3122. xor ebx,esi
  3123. ror ecx,17
  3124. add ebx,DWORD PTR 92[esp]
  3125. shr edi,10
  3126. add ebx,DWORD PTR 64[esp]
  3127. mov esi,edx
  3128. xor edi,ecx
  3129. mov ecx,DWORD PTR 24[esp]
  3130. ror edx,14
  3131. add ebx,edi
  3132. mov edi,DWORD PTR 28[esp]
  3133. xor edx,esi
  3134. xor ecx,edi
  3135. ror edx,5
  3136. and ecx,esi
  3137. mov DWORD PTR 20[esp],esi
  3138. xor edx,esi
  3139. add ebx,DWORD PTR [esp]
  3140. xor edi,ecx
  3141. ror edx,6
  3142. mov esi,ebp
  3143. add ebx,edi
  3144. ror esi,9
  3145. mov ecx,ebp
  3146. mov edi,DWORD PTR 8[esp]
  3147. xor esi,ebp
  3148. mov DWORD PTR 4[esp],ebp
  3149. xor ebp,edi
  3150. ror esi,11
  3151. and eax,ebp
  3152. lea edx,DWORD PTR 3329325298[edx*1+ebx]
  3153. xor esi,ecx
  3154. xor eax,edi
  3155. ror esi,2
  3156. add eax,edx
  3157. add edx,DWORD PTR 16[esp]
  3158. add eax,esi
  3159. mov esi,DWORD PTR 96[esp]
  3160. xor ebp,edi
  3161. mov ecx,DWORD PTR 12[esp]
  3162. add eax,DWORD PTR [esi]
  3163. add ebp,DWORD PTR 4[esi]
  3164. add edi,DWORD PTR 8[esi]
  3165. add ecx,DWORD PTR 12[esi]
  3166. mov DWORD PTR [esi],eax
  3167. mov DWORD PTR 4[esi],ebp
  3168. mov DWORD PTR 8[esi],edi
  3169. mov DWORD PTR 12[esi],ecx
  3170. mov DWORD PTR 4[esp],ebp
  3171. xor ebp,edi
  3172. mov DWORD PTR 8[esp],edi
  3173. mov DWORD PTR 12[esp],ecx
  3174. mov edi,DWORD PTR 20[esp]
  3175. mov ebx,DWORD PTR 24[esp]
  3176. mov ecx,DWORD PTR 28[esp]
  3177. add edx,DWORD PTR 16[esi]
  3178. add edi,DWORD PTR 20[esi]
  3179. add ebx,DWORD PTR 24[esi]
  3180. add ecx,DWORD PTR 28[esi]
  3181. mov DWORD PTR 16[esi],edx
  3182. mov DWORD PTR 20[esi],edi
  3183. mov DWORD PTR 24[esi],ebx
  3184. mov DWORD PTR 28[esi],ecx
  3185. mov DWORD PTR 20[esp],edi
  3186. mov edi,DWORD PTR 100[esp]
  3187. mov DWORD PTR 24[esp],ebx
  3188. mov DWORD PTR 28[esp],ecx
  3189. cmp edi,DWORD PTR 104[esp]
  3190. jb $L010grand_loop
  3191. mov esp,DWORD PTR 108[esp]
  3192. pop edi
  3193. pop esi
  3194. pop ebx
  3195. pop ebp
  3196. ret
  3197. ALIGN 32
  3198. $L004shaext:
  3199. sub esp,32
  3200. movdqu xmm1,XMMWORD PTR [esi]
  3201. lea ebp,DWORD PTR 128[ebp]
  3202. movdqu xmm2,XMMWORD PTR 16[esi]
  3203. movdqa xmm7,XMMWORD PTR 128[ebp]
  3204. pshufd xmm0,xmm1,27
  3205. pshufd xmm1,xmm1,177
  3206. pshufd xmm2,xmm2,27
  3207. DB 102,15,58,15,202,8
  3208. punpcklqdq xmm2,xmm0
  3209. jmp $L011loop_shaext
  3210. ALIGN 16
  3211. $L011loop_shaext:
  3212. movdqu xmm3,XMMWORD PTR [edi]
  3213. movdqu xmm4,XMMWORD PTR 16[edi]
  3214. movdqu xmm5,XMMWORD PTR 32[edi]
  3215. DB 102,15,56,0,223
  3216. movdqu xmm6,XMMWORD PTR 48[edi]
  3217. movdqa XMMWORD PTR 16[esp],xmm2
  3218. movdqa xmm0,XMMWORD PTR [ebp-128]
  3219. paddd xmm0,xmm3
  3220. DB 102,15,56,0,231
  3221. DB 15,56,203,209
  3222. pshufd xmm0,xmm0,14
  3223. nop
  3224. movdqa XMMWORD PTR [esp],xmm1
  3225. DB 15,56,203,202
  3226. movdqa xmm0,XMMWORD PTR [ebp-112]
  3227. paddd xmm0,xmm4
  3228. DB 102,15,56,0,239
  3229. DB 15,56,203,209
  3230. pshufd xmm0,xmm0,14
  3231. lea edi,DWORD PTR 64[edi]
  3232. DB 15,56,204,220
  3233. DB 15,56,203,202
  3234. movdqa xmm0,XMMWORD PTR [ebp-96]
  3235. paddd xmm0,xmm5
  3236. DB 102,15,56,0,247
  3237. DB 15,56,203,209
  3238. pshufd xmm0,xmm0,14
  3239. movdqa xmm7,xmm6
  3240. DB 102,15,58,15,253,4
  3241. nop
  3242. paddd xmm3,xmm7
  3243. DB 15,56,204,229
  3244. DB 15,56,203,202
  3245. movdqa xmm0,XMMWORD PTR [ebp-80]
  3246. paddd xmm0,xmm6
  3247. DB 15,56,205,222
  3248. DB 15,56,203,209
  3249. pshufd xmm0,xmm0,14
  3250. movdqa xmm7,xmm3
  3251. DB 102,15,58,15,254,4
  3252. nop
  3253. paddd xmm4,xmm7
  3254. DB 15,56,204,238
  3255. DB 15,56,203,202
  3256. movdqa xmm0,XMMWORD PTR [ebp-64]
  3257. paddd xmm0,xmm3
  3258. DB 15,56,205,227
  3259. DB 15,56,203,209
  3260. pshufd xmm0,xmm0,14
  3261. movdqa xmm7,xmm4
  3262. DB 102,15,58,15,251,4
  3263. nop
  3264. paddd xmm5,xmm7
  3265. DB 15,56,204,243
  3266. DB 15,56,203,202
  3267. movdqa xmm0,XMMWORD PTR [ebp-48]
  3268. paddd xmm0,xmm4
  3269. DB 15,56,205,236
  3270. DB 15,56,203,209
  3271. pshufd xmm0,xmm0,14
  3272. movdqa xmm7,xmm5
  3273. DB 102,15,58,15,252,4
  3274. nop
  3275. paddd xmm6,xmm7
  3276. DB 15,56,204,220
  3277. DB 15,56,203,202
  3278. movdqa xmm0,XMMWORD PTR [ebp-32]
  3279. paddd xmm0,xmm5
  3280. DB 15,56,205,245
  3281. DB 15,56,203,209
  3282. pshufd xmm0,xmm0,14
  3283. movdqa xmm7,xmm6
  3284. DB 102,15,58,15,253,4
  3285. nop
  3286. paddd xmm3,xmm7
  3287. DB 15,56,204,229
  3288. DB 15,56,203,202
  3289. movdqa xmm0,XMMWORD PTR [ebp-16]
  3290. paddd xmm0,xmm6
  3291. DB 15,56,205,222
  3292. DB 15,56,203,209
  3293. pshufd xmm0,xmm0,14
  3294. movdqa xmm7,xmm3
  3295. DB 102,15,58,15,254,4
  3296. nop
  3297. paddd xmm4,xmm7
  3298. DB 15,56,204,238
  3299. DB 15,56,203,202
  3300. movdqa xmm0,XMMWORD PTR [ebp]
  3301. paddd xmm0,xmm3
  3302. DB 15,56,205,227
  3303. DB 15,56,203,209
  3304. pshufd xmm0,xmm0,14
  3305. movdqa xmm7,xmm4
  3306. DB 102,15,58,15,251,4
  3307. nop
  3308. paddd xmm5,xmm7
  3309. DB 15,56,204,243
  3310. DB 15,56,203,202
  3311. movdqa xmm0,XMMWORD PTR 16[ebp]
  3312. paddd xmm0,xmm4
  3313. DB 15,56,205,236
  3314. DB 15,56,203,209
  3315. pshufd xmm0,xmm0,14
  3316. movdqa xmm7,xmm5
  3317. DB 102,15,58,15,252,4
  3318. nop
  3319. paddd xmm6,xmm7
  3320. DB 15,56,204,220
  3321. DB 15,56,203,202
  3322. movdqa xmm0,XMMWORD PTR 32[ebp]
  3323. paddd xmm0,xmm5
  3324. DB 15,56,205,245
  3325. DB 15,56,203,209
  3326. pshufd xmm0,xmm0,14
  3327. movdqa xmm7,xmm6
  3328. DB 102,15,58,15,253,4
  3329. nop
  3330. paddd xmm3,xmm7
  3331. DB 15,56,204,229
  3332. DB 15,56,203,202
  3333. movdqa xmm0,XMMWORD PTR 48[ebp]
  3334. paddd xmm0,xmm6
  3335. DB 15,56,205,222
  3336. DB 15,56,203,209
  3337. pshufd xmm0,xmm0,14
  3338. movdqa xmm7,xmm3
  3339. DB 102,15,58,15,254,4
  3340. nop
  3341. paddd xmm4,xmm7
  3342. DB 15,56,204,238
  3343. DB 15,56,203,202
  3344. movdqa xmm0,XMMWORD PTR 64[ebp]
  3345. paddd xmm0,xmm3
  3346. DB 15,56,205,227
  3347. DB 15,56,203,209
  3348. pshufd xmm0,xmm0,14
  3349. movdqa xmm7,xmm4
  3350. DB 102,15,58,15,251,4
  3351. nop
  3352. paddd xmm5,xmm7
  3353. DB 15,56,204,243
  3354. DB 15,56,203,202
  3355. movdqa xmm0,XMMWORD PTR 80[ebp]
  3356. paddd xmm0,xmm4
  3357. DB 15,56,205,236
  3358. DB 15,56,203,209
  3359. pshufd xmm0,xmm0,14
  3360. movdqa xmm7,xmm5
  3361. DB 102,15,58,15,252,4
  3362. DB 15,56,203,202
  3363. paddd xmm6,xmm7
  3364. movdqa xmm0,XMMWORD PTR 96[ebp]
  3365. paddd xmm0,xmm5
  3366. DB 15,56,203,209
  3367. pshufd xmm0,xmm0,14
  3368. DB 15,56,205,245
  3369. movdqa xmm7,XMMWORD PTR 128[ebp]
  3370. DB 15,56,203,202
  3371. movdqa xmm0,XMMWORD PTR 112[ebp]
  3372. paddd xmm0,xmm6
  3373. nop
  3374. DB 15,56,203,209
  3375. pshufd xmm0,xmm0,14
  3376. cmp eax,edi
  3377. nop
  3378. DB 15,56,203,202
  3379. paddd xmm2,XMMWORD PTR 16[esp]
  3380. paddd xmm1,XMMWORD PTR [esp]
  3381. jnz $L011loop_shaext
  3382. pshufd xmm2,xmm2,177
  3383. pshufd xmm7,xmm1,27
  3384. pshufd xmm1,xmm1,177
  3385. punpckhqdq xmm1,xmm2
  3386. DB 102,15,58,15,215,8
  3387. mov esp,DWORD PTR 44[esp]
  3388. movdqu XMMWORD PTR [esi],xmm1
  3389. movdqu XMMWORD PTR 16[esi],xmm2
  3390. pop edi
  3391. pop esi
  3392. pop ebx
  3393. pop ebp
  3394. ret
  3395. ALIGN 32
  3396. $L006SSSE3:
  3397. lea esp,DWORD PTR [esp-96]
  3398. mov eax,DWORD PTR [esi]
  3399. mov ebx,DWORD PTR 4[esi]
  3400. mov ecx,DWORD PTR 8[esi]
  3401. mov edi,DWORD PTR 12[esi]
  3402. mov DWORD PTR 4[esp],ebx
  3403. xor ebx,ecx
  3404. mov DWORD PTR 8[esp],ecx
  3405. mov DWORD PTR 12[esp],edi
  3406. mov edx,DWORD PTR 16[esi]
  3407. mov edi,DWORD PTR 20[esi]
  3408. mov ecx,DWORD PTR 24[esi]
  3409. mov esi,DWORD PTR 28[esi]
  3410. mov DWORD PTR 20[esp],edi
  3411. mov edi,DWORD PTR 100[esp]
  3412. mov DWORD PTR 24[esp],ecx
  3413. mov DWORD PTR 28[esp],esi
  3414. movdqa xmm7,XMMWORD PTR 256[ebp]
  3415. jmp $L012grand_ssse3
  3416. ALIGN 16
  3417. $L012grand_ssse3:
  3418. movdqu xmm0,XMMWORD PTR [edi]
  3419. movdqu xmm1,XMMWORD PTR 16[edi]
  3420. movdqu xmm2,XMMWORD PTR 32[edi]
  3421. movdqu xmm3,XMMWORD PTR 48[edi]
  3422. add edi,64
  3423. DB 102,15,56,0,199
  3424. mov DWORD PTR 100[esp],edi
  3425. DB 102,15,56,0,207
  3426. movdqa xmm4,XMMWORD PTR [ebp]
  3427. DB 102,15,56,0,215
  3428. movdqa xmm5,XMMWORD PTR 16[ebp]
  3429. paddd xmm4,xmm0
  3430. DB 102,15,56,0,223
  3431. movdqa xmm6,XMMWORD PTR 32[ebp]
  3432. paddd xmm5,xmm1
  3433. movdqa xmm7,XMMWORD PTR 48[ebp]
  3434. movdqa XMMWORD PTR 32[esp],xmm4
  3435. paddd xmm6,xmm2
  3436. movdqa XMMWORD PTR 48[esp],xmm5
  3437. paddd xmm7,xmm3
  3438. movdqa XMMWORD PTR 64[esp],xmm6
  3439. movdqa XMMWORD PTR 80[esp],xmm7
  3440. jmp $L013ssse3_00_47
  3441. ALIGN 16
  3442. $L013ssse3_00_47:
  3443. add ebp,64
  3444. mov ecx,edx
  3445. movdqa xmm4,xmm1
  3446. ror edx,14
  3447. mov esi,DWORD PTR 20[esp]
  3448. movdqa xmm7,xmm3
  3449. xor edx,ecx
  3450. mov edi,DWORD PTR 24[esp]
  3451. DB 102,15,58,15,224,4
  3452. xor esi,edi
  3453. ror edx,5
  3454. and esi,ecx
  3455. DB 102,15,58,15,250,4
  3456. mov DWORD PTR 16[esp],ecx
  3457. xor edx,ecx
  3458. xor edi,esi
  3459. movdqa xmm5,xmm4
  3460. ror edx,6
  3461. mov ecx,eax
  3462. movdqa xmm6,xmm4
  3463. add edx,edi
  3464. mov edi,DWORD PTR 4[esp]
  3465. psrld xmm4,3
  3466. mov esi,eax
  3467. ror ecx,9
  3468. paddd xmm0,xmm7
  3469. mov DWORD PTR [esp],eax
  3470. xor ecx,eax
  3471. psrld xmm6,7
  3472. xor eax,edi
  3473. add edx,DWORD PTR 28[esp]
  3474. ror ecx,11
  3475. and ebx,eax
  3476. pshufd xmm7,xmm3,250
  3477. xor ecx,esi
  3478. add edx,DWORD PTR 32[esp]
  3479. pslld xmm5,14
  3480. xor ebx,edi
  3481. ror ecx,2
  3482. pxor xmm4,xmm6
  3483. add ebx,edx
  3484. add edx,DWORD PTR 12[esp]
  3485. psrld xmm6,11
  3486. add ebx,ecx
  3487. mov ecx,edx
  3488. ror edx,14
  3489. pxor xmm4,xmm5
  3490. mov esi,DWORD PTR 16[esp]
  3491. xor edx,ecx
  3492. pslld xmm5,11
  3493. mov edi,DWORD PTR 20[esp]
  3494. xor esi,edi
  3495. ror edx,5
  3496. pxor xmm4,xmm6
  3497. and esi,ecx
  3498. mov DWORD PTR 12[esp],ecx
  3499. movdqa xmm6,xmm7
  3500. xor edx,ecx
  3501. xor edi,esi
  3502. ror edx,6
  3503. pxor xmm4,xmm5
  3504. mov ecx,ebx
  3505. add edx,edi
  3506. psrld xmm7,10
  3507. mov edi,DWORD PTR [esp]
  3508. mov esi,ebx
  3509. ror ecx,9
  3510. paddd xmm0,xmm4
  3511. mov DWORD PTR 28[esp],ebx
  3512. xor ecx,ebx
  3513. psrlq xmm6,17
  3514. xor ebx,edi
  3515. add edx,DWORD PTR 24[esp]
  3516. ror ecx,11
  3517. pxor xmm7,xmm6
  3518. and eax,ebx
  3519. xor ecx,esi
  3520. psrlq xmm6,2
  3521. add edx,DWORD PTR 36[esp]
  3522. xor eax,edi
  3523. ror ecx,2
  3524. pxor xmm7,xmm6
  3525. add eax,edx
  3526. add edx,DWORD PTR 8[esp]
  3527. pshufd xmm7,xmm7,128
  3528. add eax,ecx
  3529. mov ecx,edx
  3530. ror edx,14
  3531. mov esi,DWORD PTR 12[esp]
  3532. xor edx,ecx
  3533. mov edi,DWORD PTR 16[esp]
  3534. xor esi,edi
  3535. ror edx,5
  3536. and esi,ecx
  3537. psrldq xmm7,8
  3538. mov DWORD PTR 8[esp],ecx
  3539. xor edx,ecx
  3540. xor edi,esi
  3541. paddd xmm0,xmm7
  3542. ror edx,6
  3543. mov ecx,eax
  3544. add edx,edi
  3545. mov edi,DWORD PTR 28[esp]
  3546. mov esi,eax
  3547. ror ecx,9
  3548. mov DWORD PTR 24[esp],eax
  3549. pshufd xmm7,xmm0,80
  3550. xor ecx,eax
  3551. xor eax,edi
  3552. add edx,DWORD PTR 20[esp]
  3553. movdqa xmm6,xmm7
  3554. ror ecx,11
  3555. psrld xmm7,10
  3556. and ebx,eax
  3557. psrlq xmm6,17
  3558. xor ecx,esi
  3559. add edx,DWORD PTR 40[esp]
  3560. xor ebx,edi
  3561. ror ecx,2
  3562. pxor xmm7,xmm6
  3563. add ebx,edx
  3564. add edx,DWORD PTR 4[esp]
  3565. psrlq xmm6,2
  3566. add ebx,ecx
  3567. mov ecx,edx
  3568. ror edx,14
  3569. pxor xmm7,xmm6
  3570. mov esi,DWORD PTR 8[esp]
  3571. xor edx,ecx
  3572. mov edi,DWORD PTR 12[esp]
  3573. pshufd xmm7,xmm7,8
  3574. xor esi,edi
  3575. ror edx,5
  3576. movdqa xmm6,XMMWORD PTR [ebp]
  3577. and esi,ecx
  3578. mov DWORD PTR 4[esp],ecx
  3579. pslldq xmm7,8
  3580. xor edx,ecx
  3581. xor edi,esi
  3582. ror edx,6
  3583. mov ecx,ebx
  3584. add edx,edi
  3585. mov edi,DWORD PTR 24[esp]
  3586. mov esi,ebx
  3587. ror ecx,9
  3588. paddd xmm0,xmm7
  3589. mov DWORD PTR 20[esp],ebx
  3590. xor ecx,ebx
  3591. xor ebx,edi
  3592. add edx,DWORD PTR 16[esp]
  3593. paddd xmm6,xmm0
  3594. ror ecx,11
  3595. and eax,ebx
  3596. xor ecx,esi
  3597. add edx,DWORD PTR 44[esp]
  3598. xor eax,edi
  3599. ror ecx,2
  3600. add eax,edx
  3601. add edx,DWORD PTR [esp]
  3602. add eax,ecx
  3603. movdqa XMMWORD PTR 32[esp],xmm6
  3604. mov ecx,edx
  3605. movdqa xmm4,xmm2
  3606. ror edx,14
  3607. mov esi,DWORD PTR 4[esp]
  3608. movdqa xmm7,xmm0
  3609. xor edx,ecx
  3610. mov edi,DWORD PTR 8[esp]
  3611. DB 102,15,58,15,225,4
  3612. xor esi,edi
  3613. ror edx,5
  3614. and esi,ecx
  3615. DB 102,15,58,15,251,4
  3616. mov DWORD PTR [esp],ecx
  3617. xor edx,ecx
  3618. xor edi,esi
  3619. movdqa xmm5,xmm4
  3620. ror edx,6
  3621. mov ecx,eax
  3622. movdqa xmm6,xmm4
  3623. add edx,edi
  3624. mov edi,DWORD PTR 20[esp]
  3625. psrld xmm4,3
  3626. mov esi,eax
  3627. ror ecx,9
  3628. paddd xmm1,xmm7
  3629. mov DWORD PTR 16[esp],eax
  3630. xor ecx,eax
  3631. psrld xmm6,7
  3632. xor eax,edi
  3633. add edx,DWORD PTR 12[esp]
  3634. ror ecx,11
  3635. and ebx,eax
  3636. pshufd xmm7,xmm0,250
  3637. xor ecx,esi
  3638. add edx,DWORD PTR 48[esp]
  3639. pslld xmm5,14
  3640. xor ebx,edi
  3641. ror ecx,2
  3642. pxor xmm4,xmm6
  3643. add ebx,edx
  3644. add edx,DWORD PTR 28[esp]
  3645. psrld xmm6,11
  3646. add ebx,ecx
  3647. mov ecx,edx
  3648. ror edx,14
  3649. pxor xmm4,xmm5
  3650. mov esi,DWORD PTR [esp]
  3651. xor edx,ecx
  3652. pslld xmm5,11
  3653. mov edi,DWORD PTR 4[esp]
  3654. xor esi,edi
  3655. ror edx,5
  3656. pxor xmm4,xmm6
  3657. and esi,ecx
  3658. mov DWORD PTR 28[esp],ecx
  3659. movdqa xmm6,xmm7
  3660. xor edx,ecx
  3661. xor edi,esi
  3662. ror edx,6
  3663. pxor xmm4,xmm5
  3664. mov ecx,ebx
  3665. add edx,edi
  3666. psrld xmm7,10
  3667. mov edi,DWORD PTR 16[esp]
  3668. mov esi,ebx
  3669. ror ecx,9
  3670. paddd xmm1,xmm4
  3671. mov DWORD PTR 12[esp],ebx
  3672. xor ecx,ebx
  3673. psrlq xmm6,17
  3674. xor ebx,edi
  3675. add edx,DWORD PTR 8[esp]
  3676. ror ecx,11
  3677. pxor xmm7,xmm6
  3678. and eax,ebx
  3679. xor ecx,esi
  3680. psrlq xmm6,2
  3681. add edx,DWORD PTR 52[esp]
  3682. xor eax,edi
  3683. ror ecx,2
  3684. pxor xmm7,xmm6
  3685. add eax,edx
  3686. add edx,DWORD PTR 24[esp]
  3687. pshufd xmm7,xmm7,128
  3688. add eax,ecx
  3689. mov ecx,edx
  3690. ror edx,14
  3691. mov esi,DWORD PTR 28[esp]
  3692. xor edx,ecx
  3693. mov edi,DWORD PTR [esp]
  3694. xor esi,edi
  3695. ror edx,5
  3696. and esi,ecx
  3697. psrldq xmm7,8
  3698. mov DWORD PTR 24[esp],ecx
  3699. xor edx,ecx
  3700. xor edi,esi
  3701. paddd xmm1,xmm7
  3702. ror edx,6
  3703. mov ecx,eax
  3704. add edx,edi
  3705. mov edi,DWORD PTR 12[esp]
  3706. mov esi,eax
  3707. ror ecx,9
  3708. mov DWORD PTR 8[esp],eax
  3709. pshufd xmm7,xmm1,80
  3710. xor ecx,eax
  3711. xor eax,edi
  3712. add edx,DWORD PTR 4[esp]
  3713. movdqa xmm6,xmm7
  3714. ror ecx,11
  3715. psrld xmm7,10
  3716. and ebx,eax
  3717. psrlq xmm6,17
  3718. xor ecx,esi
  3719. add edx,DWORD PTR 56[esp]
  3720. xor ebx,edi
  3721. ror ecx,2
  3722. pxor xmm7,xmm6
  3723. add ebx,edx
  3724. add edx,DWORD PTR 20[esp]
  3725. psrlq xmm6,2
  3726. add ebx,ecx
  3727. mov ecx,edx
  3728. ror edx,14
  3729. pxor xmm7,xmm6
  3730. mov esi,DWORD PTR 24[esp]
  3731. xor edx,ecx
  3732. mov edi,DWORD PTR 28[esp]
  3733. pshufd xmm7,xmm7,8
  3734. xor esi,edi
  3735. ror edx,5
  3736. movdqa xmm6,XMMWORD PTR 16[ebp]
  3737. and esi,ecx
  3738. mov DWORD PTR 20[esp],ecx
  3739. pslldq xmm7,8
  3740. xor edx,ecx
  3741. xor edi,esi
  3742. ror edx,6
  3743. mov ecx,ebx
  3744. add edx,edi
  3745. mov edi,DWORD PTR 8[esp]
  3746. mov esi,ebx
  3747. ror ecx,9
  3748. paddd xmm1,xmm7
  3749. mov DWORD PTR 4[esp],ebx
  3750. xor ecx,ebx
  3751. xor ebx,edi
  3752. add edx,DWORD PTR [esp]
  3753. paddd xmm6,xmm1
  3754. ror ecx,11
  3755. and eax,ebx
  3756. xor ecx,esi
  3757. add edx,DWORD PTR 60[esp]
  3758. xor eax,edi
  3759. ror ecx,2
  3760. add eax,edx
  3761. add edx,DWORD PTR 16[esp]
  3762. add eax,ecx
  3763. movdqa XMMWORD PTR 48[esp],xmm6
  3764. mov ecx,edx
  3765. movdqa xmm4,xmm3
  3766. ror edx,14
  3767. mov esi,DWORD PTR 20[esp]
  3768. movdqa xmm7,xmm1
  3769. xor edx,ecx
  3770. mov edi,DWORD PTR 24[esp]
  3771. DB 102,15,58,15,226,4
  3772. xor esi,edi
  3773. ror edx,5
  3774. and esi,ecx
  3775. DB 102,15,58,15,248,4
  3776. mov DWORD PTR 16[esp],ecx
  3777. xor edx,ecx
  3778. xor edi,esi
  3779. movdqa xmm5,xmm4
  3780. ror edx,6
  3781. mov ecx,eax
  3782. movdqa xmm6,xmm4
  3783. add edx,edi
  3784. mov edi,DWORD PTR 4[esp]
  3785. psrld xmm4,3
  3786. mov esi,eax
  3787. ror ecx,9
  3788. paddd xmm2,xmm7
  3789. mov DWORD PTR [esp],eax
  3790. xor ecx,eax
  3791. psrld xmm6,7
  3792. xor eax,edi
  3793. add edx,DWORD PTR 28[esp]
  3794. ror ecx,11
  3795. and ebx,eax
  3796. pshufd xmm7,xmm1,250
  3797. xor ecx,esi
  3798. add edx,DWORD PTR 64[esp]
  3799. pslld xmm5,14
  3800. xor ebx,edi
  3801. ror ecx,2
  3802. pxor xmm4,xmm6
  3803. add ebx,edx
  3804. add edx,DWORD PTR 12[esp]
  3805. psrld xmm6,11
  3806. add ebx,ecx
  3807. mov ecx,edx
  3808. ror edx,14
  3809. pxor xmm4,xmm5
  3810. mov esi,DWORD PTR 16[esp]
  3811. xor edx,ecx
  3812. pslld xmm5,11
  3813. mov edi,DWORD PTR 20[esp]
  3814. xor esi,edi
  3815. ror edx,5
  3816. pxor xmm4,xmm6
  3817. and esi,ecx
  3818. mov DWORD PTR 12[esp],ecx
  3819. movdqa xmm6,xmm7
  3820. xor edx,ecx
  3821. xor edi,esi
  3822. ror edx,6
  3823. pxor xmm4,xmm5
  3824. mov ecx,ebx
  3825. add edx,edi
  3826. psrld xmm7,10
  3827. mov edi,DWORD PTR [esp]
  3828. mov esi,ebx
  3829. ror ecx,9
  3830. paddd xmm2,xmm4
  3831. mov DWORD PTR 28[esp],ebx
  3832. xor ecx,ebx
  3833. psrlq xmm6,17
  3834. xor ebx,edi
  3835. add edx,DWORD PTR 24[esp]
  3836. ror ecx,11
  3837. pxor xmm7,xmm6
  3838. and eax,ebx
  3839. xor ecx,esi
  3840. psrlq xmm6,2
  3841. add edx,DWORD PTR 68[esp]
  3842. xor eax,edi
  3843. ror ecx,2
  3844. pxor xmm7,xmm6
  3845. add eax,edx
  3846. add edx,DWORD PTR 8[esp]
  3847. pshufd xmm7,xmm7,128
  3848. add eax,ecx
  3849. mov ecx,edx
  3850. ror edx,14
  3851. mov esi,DWORD PTR 12[esp]
  3852. xor edx,ecx
  3853. mov edi,DWORD PTR 16[esp]
  3854. xor esi,edi
  3855. ror edx,5
  3856. and esi,ecx
  3857. psrldq xmm7,8
  3858. mov DWORD PTR 8[esp],ecx
  3859. xor edx,ecx
  3860. xor edi,esi
  3861. paddd xmm2,xmm7
  3862. ror edx,6
  3863. mov ecx,eax
  3864. add edx,edi
  3865. mov edi,DWORD PTR 28[esp]
  3866. mov esi,eax
  3867. ror ecx,9
  3868. mov DWORD PTR 24[esp],eax
  3869. pshufd xmm7,xmm2,80
  3870. xor ecx,eax
  3871. xor eax,edi
  3872. add edx,DWORD PTR 20[esp]
  3873. movdqa xmm6,xmm7
  3874. ror ecx,11
  3875. psrld xmm7,10
  3876. and ebx,eax
  3877. psrlq xmm6,17
  3878. xor ecx,esi
  3879. add edx,DWORD PTR 72[esp]
  3880. xor ebx,edi
  3881. ror ecx,2
  3882. pxor xmm7,xmm6
  3883. add ebx,edx
  3884. add edx,DWORD PTR 4[esp]
  3885. psrlq xmm6,2
  3886. add ebx,ecx
  3887. mov ecx,edx
  3888. ror edx,14
  3889. pxor xmm7,xmm6
  3890. mov esi,DWORD PTR 8[esp]
  3891. xor edx,ecx
  3892. mov edi,DWORD PTR 12[esp]
  3893. pshufd xmm7,xmm7,8
  3894. xor esi,edi
  3895. ror edx,5
  3896. movdqa xmm6,XMMWORD PTR 32[ebp]
  3897. and esi,ecx
  3898. mov DWORD PTR 4[esp],ecx
  3899. pslldq xmm7,8
  3900. xor edx,ecx
  3901. xor edi,esi
  3902. ror edx,6
  3903. mov ecx,ebx
  3904. add edx,edi
  3905. mov edi,DWORD PTR 24[esp]
  3906. mov esi,ebx
  3907. ror ecx,9
  3908. paddd xmm2,xmm7
  3909. mov DWORD PTR 20[esp],ebx
  3910. xor ecx,ebx
  3911. xor ebx,edi
  3912. add edx,DWORD PTR 16[esp]
  3913. paddd xmm6,xmm2
  3914. ror ecx,11
  3915. and eax,ebx
  3916. xor ecx,esi
  3917. add edx,DWORD PTR 76[esp]
  3918. xor eax,edi
  3919. ror ecx,2
  3920. add eax,edx
  3921. add edx,DWORD PTR [esp]
  3922. add eax,ecx
  3923. movdqa XMMWORD PTR 64[esp],xmm6
  3924. mov ecx,edx
  3925. movdqa xmm4,xmm0
  3926. ror edx,14
  3927. mov esi,DWORD PTR 4[esp]
  3928. movdqa xmm7,xmm2
  3929. xor edx,ecx
  3930. mov edi,DWORD PTR 8[esp]
  3931. DB 102,15,58,15,227,4
  3932. xor esi,edi
  3933. ror edx,5
  3934. and esi,ecx
  3935. DB 102,15,58,15,249,4
  3936. mov DWORD PTR [esp],ecx
  3937. xor edx,ecx
  3938. xor edi,esi
  3939. movdqa xmm5,xmm4
  3940. ror edx,6
  3941. mov ecx,eax
  3942. movdqa xmm6,xmm4
  3943. add edx,edi
  3944. mov edi,DWORD PTR 20[esp]
  3945. psrld xmm4,3
  3946. mov esi,eax
  3947. ror ecx,9
  3948. paddd xmm3,xmm7
  3949. mov DWORD PTR 16[esp],eax
  3950. xor ecx,eax
  3951. psrld xmm6,7
  3952. xor eax,edi
  3953. add edx,DWORD PTR 12[esp]
  3954. ror ecx,11
  3955. and ebx,eax
  3956. pshufd xmm7,xmm2,250
  3957. xor ecx,esi
  3958. add edx,DWORD PTR 80[esp]
  3959. pslld xmm5,14
  3960. xor ebx,edi
  3961. ror ecx,2
  3962. pxor xmm4,xmm6
  3963. add ebx,edx
  3964. add edx,DWORD PTR 28[esp]
  3965. psrld xmm6,11
  3966. add ebx,ecx
  3967. mov ecx,edx
  3968. ror edx,14
  3969. pxor xmm4,xmm5
  3970. mov esi,DWORD PTR [esp]
  3971. xor edx,ecx
  3972. pslld xmm5,11
  3973. mov edi,DWORD PTR 4[esp]
  3974. xor esi,edi
  3975. ror edx,5
  3976. pxor xmm4,xmm6
  3977. and esi,ecx
  3978. mov DWORD PTR 28[esp],ecx
  3979. movdqa xmm6,xmm7
  3980. xor edx,ecx
  3981. xor edi,esi
  3982. ror edx,6
  3983. pxor xmm4,xmm5
  3984. mov ecx,ebx
  3985. add edx,edi
  3986. psrld xmm7,10
  3987. mov edi,DWORD PTR 16[esp]
  3988. mov esi,ebx
  3989. ror ecx,9
  3990. paddd xmm3,xmm4
  3991. mov DWORD PTR 12[esp],ebx
  3992. xor ecx,ebx
  3993. psrlq xmm6,17
  3994. xor ebx,edi
  3995. add edx,DWORD PTR 8[esp]
  3996. ror ecx,11
  3997. pxor xmm7,xmm6
  3998. and eax,ebx
  3999. xor ecx,esi
  4000. psrlq xmm6,2
  4001. add edx,DWORD PTR 84[esp]
  4002. xor eax,edi
  4003. ror ecx,2
  4004. pxor xmm7,xmm6
  4005. add eax,edx
  4006. add edx,DWORD PTR 24[esp]
  4007. pshufd xmm7,xmm7,128
  4008. add eax,ecx
  4009. mov ecx,edx
  4010. ror edx,14
  4011. mov esi,DWORD PTR 28[esp]
  4012. xor edx,ecx
  4013. mov edi,DWORD PTR [esp]
  4014. xor esi,edi
  4015. ror edx,5
  4016. and esi,ecx
  4017. psrldq xmm7,8
  4018. mov DWORD PTR 24[esp],ecx
  4019. xor edx,ecx
  4020. xor edi,esi
  4021. paddd xmm3,xmm7
  4022. ror edx,6
  4023. mov ecx,eax
  4024. add edx,edi
  4025. mov edi,DWORD PTR 12[esp]
  4026. mov esi,eax
  4027. ror ecx,9
  4028. mov DWORD PTR 8[esp],eax
  4029. pshufd xmm7,xmm3,80
  4030. xor ecx,eax
  4031. xor eax,edi
  4032. add edx,DWORD PTR 4[esp]
  4033. movdqa xmm6,xmm7
  4034. ror ecx,11
  4035. psrld xmm7,10
  4036. and ebx,eax
  4037. psrlq xmm6,17
  4038. xor ecx,esi
  4039. add edx,DWORD PTR 88[esp]
  4040. xor ebx,edi
  4041. ror ecx,2
  4042. pxor xmm7,xmm6
  4043. add ebx,edx
  4044. add edx,DWORD PTR 20[esp]
  4045. psrlq xmm6,2
  4046. add ebx,ecx
  4047. mov ecx,edx
  4048. ror edx,14
  4049. pxor xmm7,xmm6
  4050. mov esi,DWORD PTR 24[esp]
  4051. xor edx,ecx
  4052. mov edi,DWORD PTR 28[esp]
  4053. pshufd xmm7,xmm7,8
  4054. xor esi,edi
  4055. ror edx,5
  4056. movdqa xmm6,XMMWORD PTR 48[ebp]
  4057. and esi,ecx
  4058. mov DWORD PTR 20[esp],ecx
  4059. pslldq xmm7,8
  4060. xor edx,ecx
  4061. xor edi,esi
  4062. ror edx,6
  4063. mov ecx,ebx
  4064. add edx,edi
  4065. mov edi,DWORD PTR 8[esp]
  4066. mov esi,ebx
  4067. ror ecx,9
  4068. paddd xmm3,xmm7
  4069. mov DWORD PTR 4[esp],ebx
  4070. xor ecx,ebx
  4071. xor ebx,edi
  4072. add edx,DWORD PTR [esp]
  4073. paddd xmm6,xmm3
  4074. ror ecx,11
  4075. and eax,ebx
  4076. xor ecx,esi
  4077. add edx,DWORD PTR 92[esp]
  4078. xor eax,edi
  4079. ror ecx,2
  4080. add eax,edx
  4081. add edx,DWORD PTR 16[esp]
  4082. add eax,ecx
  4083. movdqa XMMWORD PTR 80[esp],xmm6
  4084. cmp DWORD PTR 64[ebp],66051
  4085. jne $L013ssse3_00_47
  4086. mov ecx,edx
  4087. ror edx,14
  4088. mov esi,DWORD PTR 20[esp]
  4089. xor edx,ecx
  4090. mov edi,DWORD PTR 24[esp]
  4091. xor esi,edi
  4092. ror edx,5
  4093. and esi,ecx
  4094. mov DWORD PTR 16[esp],ecx
  4095. xor edx,ecx
  4096. xor edi,esi
  4097. ror edx,6
  4098. mov ecx,eax
  4099. add edx,edi
  4100. mov edi,DWORD PTR 4[esp]
  4101. mov esi,eax
  4102. ror ecx,9
  4103. mov DWORD PTR [esp],eax
  4104. xor ecx,eax
  4105. xor eax,edi
  4106. add edx,DWORD PTR 28[esp]
  4107. ror ecx,11
  4108. and ebx,eax
  4109. xor ecx,esi
  4110. add edx,DWORD PTR 32[esp]
  4111. xor ebx,edi
  4112. ror ecx,2
  4113. add ebx,edx
  4114. add edx,DWORD PTR 12[esp]
  4115. add ebx,ecx
  4116. mov ecx,edx
  4117. ror edx,14
  4118. mov esi,DWORD PTR 16[esp]
  4119. xor edx,ecx
  4120. mov edi,DWORD PTR 20[esp]
  4121. xor esi,edi
  4122. ror edx,5
  4123. and esi,ecx
  4124. mov DWORD PTR 12[esp],ecx
  4125. xor edx,ecx
  4126. xor edi,esi
  4127. ror edx,6
  4128. mov ecx,ebx
  4129. add edx,edi
  4130. mov edi,DWORD PTR [esp]
  4131. mov esi,ebx
  4132. ror ecx,9
  4133. mov DWORD PTR 28[esp],ebx
  4134. xor ecx,ebx
  4135. xor ebx,edi
  4136. add edx,DWORD PTR 24[esp]
  4137. ror ecx,11
  4138. and eax,ebx
  4139. xor ecx,esi
  4140. add edx,DWORD PTR 36[esp]
  4141. xor eax,edi
  4142. ror ecx,2
  4143. add eax,edx
  4144. add edx,DWORD PTR 8[esp]
  4145. add eax,ecx
  4146. mov ecx,edx
  4147. ror edx,14
  4148. mov esi,DWORD PTR 12[esp]
  4149. xor edx,ecx
  4150. mov edi,DWORD PTR 16[esp]
  4151. xor esi,edi
  4152. ror edx,5
  4153. and esi,ecx
  4154. mov DWORD PTR 8[esp],ecx
  4155. xor edx,ecx
  4156. xor edi,esi
  4157. ror edx,6
  4158. mov ecx,eax
  4159. add edx,edi
  4160. mov edi,DWORD PTR 28[esp]
  4161. mov esi,eax
  4162. ror ecx,9
  4163. mov DWORD PTR 24[esp],eax
  4164. xor ecx,eax
  4165. xor eax,edi
  4166. add edx,DWORD PTR 20[esp]
  4167. ror ecx,11
  4168. and ebx,eax
  4169. xor ecx,esi
  4170. add edx,DWORD PTR 40[esp]
  4171. xor ebx,edi
  4172. ror ecx,2
  4173. add ebx,edx
  4174. add edx,DWORD PTR 4[esp]
  4175. add ebx,ecx
  4176. mov ecx,edx
  4177. ror edx,14
  4178. mov esi,DWORD PTR 8[esp]
  4179. xor edx,ecx
  4180. mov edi,DWORD PTR 12[esp]
  4181. xor esi,edi
  4182. ror edx,5
  4183. and esi,ecx
  4184. mov DWORD PTR 4[esp],ecx
  4185. xor edx,ecx
  4186. xor edi,esi
  4187. ror edx,6
  4188. mov ecx,ebx
  4189. add edx,edi
  4190. mov edi,DWORD PTR 24[esp]
  4191. mov esi,ebx
  4192. ror ecx,9
  4193. mov DWORD PTR 20[esp],ebx
  4194. xor ecx,ebx
  4195. xor ebx,edi
  4196. add edx,DWORD PTR 16[esp]
  4197. ror ecx,11
  4198. and eax,ebx
  4199. xor ecx,esi
  4200. add edx,DWORD PTR 44[esp]
  4201. xor eax,edi
  4202. ror ecx,2
  4203. add eax,edx
  4204. add edx,DWORD PTR [esp]
  4205. add eax,ecx
  4206. mov ecx,edx
  4207. ror edx,14
  4208. mov esi,DWORD PTR 4[esp]
  4209. xor edx,ecx
  4210. mov edi,DWORD PTR 8[esp]
  4211. xor esi,edi
  4212. ror edx,5
  4213. and esi,ecx
  4214. mov DWORD PTR [esp],ecx
  4215. xor edx,ecx
  4216. xor edi,esi
  4217. ror edx,6
  4218. mov ecx,eax
  4219. add edx,edi
  4220. mov edi,DWORD PTR 20[esp]
  4221. mov esi,eax
  4222. ror ecx,9
  4223. mov DWORD PTR 16[esp],eax
  4224. xor ecx,eax
  4225. xor eax,edi
  4226. add edx,DWORD PTR 12[esp]
  4227. ror ecx,11
  4228. and ebx,eax
  4229. xor ecx,esi
  4230. add edx,DWORD PTR 48[esp]
  4231. xor ebx,edi
  4232. ror ecx,2
  4233. add ebx,edx
  4234. add edx,DWORD PTR 28[esp]
  4235. add ebx,ecx
  4236. mov ecx,edx
  4237. ror edx,14
  4238. mov esi,DWORD PTR [esp]
  4239. xor edx,ecx
  4240. mov edi,DWORD PTR 4[esp]
  4241. xor esi,edi
  4242. ror edx,5
  4243. and esi,ecx
  4244. mov DWORD PTR 28[esp],ecx
  4245. xor edx,ecx
  4246. xor edi,esi
  4247. ror edx,6
  4248. mov ecx,ebx
  4249. add edx,edi
  4250. mov edi,DWORD PTR 16[esp]
  4251. mov esi,ebx
  4252. ror ecx,9
  4253. mov DWORD PTR 12[esp],ebx
  4254. xor ecx,ebx
  4255. xor ebx,edi
  4256. add edx,DWORD PTR 8[esp]
  4257. ror ecx,11
  4258. and eax,ebx
  4259. xor ecx,esi
  4260. add edx,DWORD PTR 52[esp]
  4261. xor eax,edi
  4262. ror ecx,2
  4263. add eax,edx
  4264. add edx,DWORD PTR 24[esp]
  4265. add eax,ecx
  4266. mov ecx,edx
  4267. ror edx,14
  4268. mov esi,DWORD PTR 28[esp]
  4269. xor edx,ecx
  4270. mov edi,DWORD PTR [esp]
  4271. xor esi,edi
  4272. ror edx,5
  4273. and esi,ecx
  4274. mov DWORD PTR 24[esp],ecx
  4275. xor edx,ecx
  4276. xor edi,esi
  4277. ror edx,6
  4278. mov ecx,eax
  4279. add edx,edi
  4280. mov edi,DWORD PTR 12[esp]
  4281. mov esi,eax
  4282. ror ecx,9
  4283. mov DWORD PTR 8[esp],eax
  4284. xor ecx,eax
  4285. xor eax,edi
  4286. add edx,DWORD PTR 4[esp]
  4287. ror ecx,11
  4288. and ebx,eax
  4289. xor ecx,esi
  4290. add edx,DWORD PTR 56[esp]
  4291. xor ebx,edi
  4292. ror ecx,2
  4293. add ebx,edx
  4294. add edx,DWORD PTR 20[esp]
  4295. add ebx,ecx
  4296. mov ecx,edx
  4297. ror edx,14
  4298. mov esi,DWORD PTR 24[esp]
  4299. xor edx,ecx
  4300. mov edi,DWORD PTR 28[esp]
  4301. xor esi,edi
  4302. ror edx,5
  4303. and esi,ecx
  4304. mov DWORD PTR 20[esp],ecx
  4305. xor edx,ecx
  4306. xor edi,esi
  4307. ror edx,6
  4308. mov ecx,ebx
  4309. add edx,edi
  4310. mov edi,DWORD PTR 8[esp]
  4311. mov esi,ebx
  4312. ror ecx,9
  4313. mov DWORD PTR 4[esp],ebx
  4314. xor ecx,ebx
  4315. xor ebx,edi
  4316. add edx,DWORD PTR [esp]
  4317. ror ecx,11
  4318. and eax,ebx
  4319. xor ecx,esi
  4320. add edx,DWORD PTR 60[esp]
  4321. xor eax,edi
  4322. ror ecx,2
  4323. add eax,edx
  4324. add edx,DWORD PTR 16[esp]
  4325. add eax,ecx
  4326. mov ecx,edx
  4327. ror edx,14
  4328. mov esi,DWORD PTR 20[esp]
  4329. xor edx,ecx
  4330. mov edi,DWORD PTR 24[esp]
  4331. xor esi,edi
  4332. ror edx,5
  4333. and esi,ecx
  4334. mov DWORD PTR 16[esp],ecx
  4335. xor edx,ecx
  4336. xor edi,esi
  4337. ror edx,6
  4338. mov ecx,eax
  4339. add edx,edi
  4340. mov edi,DWORD PTR 4[esp]
  4341. mov esi,eax
  4342. ror ecx,9
  4343. mov DWORD PTR [esp],eax
  4344. xor ecx,eax
  4345. xor eax,edi
  4346. add edx,DWORD PTR 28[esp]
  4347. ror ecx,11
  4348. and ebx,eax
  4349. xor ecx,esi
  4350. add edx,DWORD PTR 64[esp]
  4351. xor ebx,edi
  4352. ror ecx,2
  4353. add ebx,edx
  4354. add edx,DWORD PTR 12[esp]
  4355. add ebx,ecx
  4356. mov ecx,edx
  4357. ror edx,14
  4358. mov esi,DWORD PTR 16[esp]
  4359. xor edx,ecx
  4360. mov edi,DWORD PTR 20[esp]
  4361. xor esi,edi
  4362. ror edx,5
  4363. and esi,ecx
  4364. mov DWORD PTR 12[esp],ecx
  4365. xor edx,ecx
  4366. xor edi,esi
  4367. ror edx,6
  4368. mov ecx,ebx
  4369. add edx,edi
  4370. mov edi,DWORD PTR [esp]
  4371. mov esi,ebx
  4372. ror ecx,9
  4373. mov DWORD PTR 28[esp],ebx
  4374. xor ecx,ebx
  4375. xor ebx,edi
  4376. add edx,DWORD PTR 24[esp]
  4377. ror ecx,11
  4378. and eax,ebx
  4379. xor ecx,esi
  4380. add edx,DWORD PTR 68[esp]
  4381. xor eax,edi
  4382. ror ecx,2
  4383. add eax,edx
  4384. add edx,DWORD PTR 8[esp]
  4385. add eax,ecx
  4386. mov ecx,edx
  4387. ror edx,14
  4388. mov esi,DWORD PTR 12[esp]
  4389. xor edx,ecx
  4390. mov edi,DWORD PTR 16[esp]
  4391. xor esi,edi
  4392. ror edx,5
  4393. and esi,ecx
  4394. mov DWORD PTR 8[esp],ecx
  4395. xor edx,ecx
  4396. xor edi,esi
  4397. ror edx,6
  4398. mov ecx,eax
  4399. add edx,edi
  4400. mov edi,DWORD PTR 28[esp]
  4401. mov esi,eax
  4402. ror ecx,9
  4403. mov DWORD PTR 24[esp],eax
  4404. xor ecx,eax
  4405. xor eax,edi
  4406. add edx,DWORD PTR 20[esp]
  4407. ror ecx,11
  4408. and ebx,eax
  4409. xor ecx,esi
  4410. add edx,DWORD PTR 72[esp]
  4411. xor ebx,edi
  4412. ror ecx,2
  4413. add ebx,edx
  4414. add edx,DWORD PTR 4[esp]
  4415. add ebx,ecx
  4416. mov ecx,edx
  4417. ror edx,14
  4418. mov esi,DWORD PTR 8[esp]
  4419. xor edx,ecx
  4420. mov edi,DWORD PTR 12[esp]
  4421. xor esi,edi
  4422. ror edx,5
  4423. and esi,ecx
  4424. mov DWORD PTR 4[esp],ecx
  4425. xor edx,ecx
  4426. xor edi,esi
  4427. ror edx,6
  4428. mov ecx,ebx
  4429. add edx,edi
  4430. mov edi,DWORD PTR 24[esp]
  4431. mov esi,ebx
  4432. ror ecx,9
  4433. mov DWORD PTR 20[esp],ebx
  4434. xor ecx,ebx
  4435. xor ebx,edi
  4436. add edx,DWORD PTR 16[esp]
  4437. ror ecx,11
  4438. and eax,ebx
  4439. xor ecx,esi
  4440. add edx,DWORD PTR 76[esp]
  4441. xor eax,edi
  4442. ror ecx,2
  4443. add eax,edx
  4444. add edx,DWORD PTR [esp]
  4445. add eax,ecx
  4446. mov ecx,edx
  4447. ror edx,14
  4448. mov esi,DWORD PTR 4[esp]
  4449. xor edx,ecx
  4450. mov edi,DWORD PTR 8[esp]
  4451. xor esi,edi
  4452. ror edx,5
  4453. and esi,ecx
  4454. mov DWORD PTR [esp],ecx
  4455. xor edx,ecx
  4456. xor edi,esi
  4457. ror edx,6
  4458. mov ecx,eax
  4459. add edx,edi
  4460. mov edi,DWORD PTR 20[esp]
  4461. mov esi,eax
  4462. ror ecx,9
  4463. mov DWORD PTR 16[esp],eax
  4464. xor ecx,eax
  4465. xor eax,edi
  4466. add edx,DWORD PTR 12[esp]
  4467. ror ecx,11
  4468. and ebx,eax
  4469. xor ecx,esi
  4470. add edx,DWORD PTR 80[esp]
  4471. xor ebx,edi
  4472. ror ecx,2
  4473. add ebx,edx
  4474. add edx,DWORD PTR 28[esp]
  4475. add ebx,ecx
  4476. mov ecx,edx
  4477. ror edx,14
  4478. mov esi,DWORD PTR [esp]
  4479. xor edx,ecx
  4480. mov edi,DWORD PTR 4[esp]
  4481. xor esi,edi
  4482. ror edx,5
  4483. and esi,ecx
  4484. mov DWORD PTR 28[esp],ecx
  4485. xor edx,ecx
  4486. xor edi,esi
  4487. ror edx,6
  4488. mov ecx,ebx
  4489. add edx,edi
  4490. mov edi,DWORD PTR 16[esp]
  4491. mov esi,ebx
  4492. ror ecx,9
  4493. mov DWORD PTR 12[esp],ebx
  4494. xor ecx,ebx
  4495. xor ebx,edi
  4496. add edx,DWORD PTR 8[esp]
  4497. ror ecx,11
  4498. and eax,ebx
  4499. xor ecx,esi
  4500. add edx,DWORD PTR 84[esp]
  4501. xor eax,edi
  4502. ror ecx,2
  4503. add eax,edx
  4504. add edx,DWORD PTR 24[esp]
  4505. add eax,ecx
  4506. mov ecx,edx
  4507. ror edx,14
  4508. mov esi,DWORD PTR 28[esp]
  4509. xor edx,ecx
  4510. mov edi,DWORD PTR [esp]
  4511. xor esi,edi
  4512. ror edx,5
  4513. and esi,ecx
  4514. mov DWORD PTR 24[esp],ecx
  4515. xor edx,ecx
  4516. xor edi,esi
  4517. ror edx,6
  4518. mov ecx,eax
  4519. add edx,edi
  4520. mov edi,DWORD PTR 12[esp]
  4521. mov esi,eax
  4522. ror ecx,9
  4523. mov DWORD PTR 8[esp],eax
  4524. xor ecx,eax
  4525. xor eax,edi
  4526. add edx,DWORD PTR 4[esp]
  4527. ror ecx,11
  4528. and ebx,eax
  4529. xor ecx,esi
  4530. add edx,DWORD PTR 88[esp]
  4531. xor ebx,edi
  4532. ror ecx,2
  4533. add ebx,edx
  4534. add edx,DWORD PTR 20[esp]
  4535. add ebx,ecx
  4536. mov ecx,edx
  4537. ror edx,14
  4538. mov esi,DWORD PTR 24[esp]
  4539. xor edx,ecx
  4540. mov edi,DWORD PTR 28[esp]
  4541. xor esi,edi
  4542. ror edx,5
  4543. and esi,ecx
  4544. mov DWORD PTR 20[esp],ecx
  4545. xor edx,ecx
  4546. xor edi,esi
  4547. ror edx,6
  4548. mov ecx,ebx
  4549. add edx,edi
  4550. mov edi,DWORD PTR 8[esp]
  4551. mov esi,ebx
  4552. ror ecx,9
  4553. mov DWORD PTR 4[esp],ebx
  4554. xor ecx,ebx
  4555. xor ebx,edi
  4556. add edx,DWORD PTR [esp]
  4557. ror ecx,11
  4558. and eax,ebx
  4559. xor ecx,esi
  4560. add edx,DWORD PTR 92[esp]
  4561. xor eax,edi
  4562. ror ecx,2
  4563. add eax,edx
  4564. add edx,DWORD PTR 16[esp]
  4565. add eax,ecx
  4566. mov esi,DWORD PTR 96[esp]
  4567. xor ebx,edi
  4568. mov ecx,DWORD PTR 12[esp]
  4569. add eax,DWORD PTR [esi]
  4570. add ebx,DWORD PTR 4[esi]
  4571. add edi,DWORD PTR 8[esi]
  4572. add ecx,DWORD PTR 12[esi]
  4573. mov DWORD PTR [esi],eax
  4574. mov DWORD PTR 4[esi],ebx
  4575. mov DWORD PTR 8[esi],edi
  4576. mov DWORD PTR 12[esi],ecx
  4577. mov DWORD PTR 4[esp],ebx
  4578. xor ebx,edi
  4579. mov DWORD PTR 8[esp],edi
  4580. mov DWORD PTR 12[esp],ecx
  4581. mov edi,DWORD PTR 20[esp]
  4582. mov ecx,DWORD PTR 24[esp]
  4583. add edx,DWORD PTR 16[esi]
  4584. add edi,DWORD PTR 20[esi]
  4585. add ecx,DWORD PTR 24[esi]
  4586. mov DWORD PTR 16[esi],edx
  4587. mov DWORD PTR 20[esi],edi
  4588. mov DWORD PTR 20[esp],edi
  4589. mov edi,DWORD PTR 28[esp]
  4590. mov DWORD PTR 24[esi],ecx
  4591. add edi,DWORD PTR 28[esi]
  4592. mov DWORD PTR 24[esp],ecx
  4593. mov DWORD PTR 28[esi],edi
  4594. mov DWORD PTR 28[esp],edi
  4595. mov edi,DWORD PTR 100[esp]
  4596. movdqa xmm7,XMMWORD PTR 64[ebp]
  4597. sub ebp,192
  4598. cmp edi,DWORD PTR 104[esp]
  4599. jb $L012grand_ssse3
  4600. mov esp,DWORD PTR 108[esp]
  4601. pop edi
  4602. pop esi
  4603. pop ebx
  4604. pop ebp
  4605. ret
  4606. ALIGN 32
  4607. $L005AVX:
  4608. and edx,264
  4609. cmp edx,264
  4610. je $L014AVX_BMI
  4611. lea esp,DWORD PTR [esp-96]
  4612. vzeroall
  4613. mov eax,DWORD PTR [esi]
  4614. mov ebx,DWORD PTR 4[esi]
  4615. mov ecx,DWORD PTR 8[esi]
  4616. mov edi,DWORD PTR 12[esi]
  4617. mov DWORD PTR 4[esp],ebx
  4618. xor ebx,ecx
  4619. mov DWORD PTR 8[esp],ecx
  4620. mov DWORD PTR 12[esp],edi
  4621. mov edx,DWORD PTR 16[esi]
  4622. mov edi,DWORD PTR 20[esi]
  4623. mov ecx,DWORD PTR 24[esi]
  4624. mov esi,DWORD PTR 28[esi]
  4625. mov DWORD PTR 20[esp],edi
  4626. mov edi,DWORD PTR 100[esp]
  4627. mov DWORD PTR 24[esp],ecx
  4628. mov DWORD PTR 28[esp],esi
  4629. vmovdqa xmm7,XMMWORD PTR 256[ebp]
  4630. jmp $L015grand_avx
  4631. ALIGN 32
  4632. $L015grand_avx:
  4633. vmovdqu xmm0,XMMWORD PTR [edi]
  4634. vmovdqu xmm1,XMMWORD PTR 16[edi]
  4635. vmovdqu xmm2,XMMWORD PTR 32[edi]
  4636. vmovdqu xmm3,XMMWORD PTR 48[edi]
  4637. add edi,64
  4638. vpshufb xmm0,xmm0,xmm7
  4639. mov DWORD PTR 100[esp],edi
  4640. vpshufb xmm1,xmm1,xmm7
  4641. vpshufb xmm2,xmm2,xmm7
  4642. vpaddd xmm4,xmm0,XMMWORD PTR [ebp]
  4643. vpshufb xmm3,xmm3,xmm7
  4644. vpaddd xmm5,xmm1,XMMWORD PTR 16[ebp]
  4645. vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp]
  4646. vpaddd xmm7,xmm3,XMMWORD PTR 48[ebp]
  4647. vmovdqa XMMWORD PTR 32[esp],xmm4
  4648. vmovdqa XMMWORD PTR 48[esp],xmm5
  4649. vmovdqa XMMWORD PTR 64[esp],xmm6
  4650. vmovdqa XMMWORD PTR 80[esp],xmm7
  4651. jmp $L016avx_00_47
  4652. ALIGN 16
  4653. $L016avx_00_47:
  4654. add ebp,64
  4655. vpalignr xmm4,xmm1,xmm0,4
  4656. mov ecx,edx
  4657. shrd edx,edx,14
  4658. mov esi,DWORD PTR 20[esp]
  4659. vpalignr xmm7,xmm3,xmm2,4
  4660. xor edx,ecx
  4661. mov edi,DWORD PTR 24[esp]
  4662. xor esi,edi
  4663. vpsrld xmm6,xmm4,7
  4664. shrd edx,edx,5
  4665. and esi,ecx
  4666. mov DWORD PTR 16[esp],ecx
  4667. vpaddd xmm0,xmm0,xmm7
  4668. xor edx,ecx
  4669. xor edi,esi
  4670. shrd edx,edx,6
  4671. vpsrld xmm7,xmm4,3
  4672. mov ecx,eax
  4673. add edx,edi
  4674. mov edi,DWORD PTR 4[esp]
  4675. vpslld xmm5,xmm4,14
  4676. mov esi,eax
  4677. shrd ecx,ecx,9
  4678. mov DWORD PTR [esp],eax
  4679. vpxor xmm4,xmm7,xmm6
  4680. xor ecx,eax
  4681. xor eax,edi
  4682. add edx,DWORD PTR 28[esp]
  4683. vpshufd xmm7,xmm3,250
  4684. shrd ecx,ecx,11
  4685. and ebx,eax
  4686. xor ecx,esi
  4687. vpsrld xmm6,xmm6,11
  4688. add edx,DWORD PTR 32[esp]
  4689. xor ebx,edi
  4690. shrd ecx,ecx,2
  4691. vpxor xmm4,xmm4,xmm5
  4692. add ebx,edx
  4693. add edx,DWORD PTR 12[esp]
  4694. add ebx,ecx
  4695. vpslld xmm5,xmm5,11
  4696. mov ecx,edx
  4697. shrd edx,edx,14
  4698. mov esi,DWORD PTR 16[esp]
  4699. vpxor xmm4,xmm4,xmm6
  4700. xor edx,ecx
  4701. mov edi,DWORD PTR 20[esp]
  4702. xor esi,edi
  4703. vpsrld xmm6,xmm7,10
  4704. shrd edx,edx,5
  4705. and esi,ecx
  4706. mov DWORD PTR 12[esp],ecx
  4707. vpxor xmm4,xmm4,xmm5
  4708. xor edx,ecx
  4709. xor edi,esi
  4710. shrd edx,edx,6
  4711. vpsrlq xmm5,xmm7,17
  4712. mov ecx,ebx
  4713. add edx,edi
  4714. mov edi,DWORD PTR [esp]
  4715. vpaddd xmm0,xmm0,xmm4
  4716. mov esi,ebx
  4717. shrd ecx,ecx,9
  4718. mov DWORD PTR 28[esp],ebx
  4719. vpxor xmm6,xmm6,xmm5
  4720. xor ecx,ebx
  4721. xor ebx,edi
  4722. add edx,DWORD PTR 24[esp]
  4723. vpsrlq xmm7,xmm7,19
  4724. shrd ecx,ecx,11
  4725. and eax,ebx
  4726. xor ecx,esi
  4727. vpxor xmm6,xmm6,xmm7
  4728. add edx,DWORD PTR 36[esp]
  4729. xor eax,edi
  4730. shrd ecx,ecx,2
  4731. vpshufd xmm7,xmm6,132
  4732. add eax,edx
  4733. add edx,DWORD PTR 8[esp]
  4734. add eax,ecx
  4735. vpsrldq xmm7,xmm7,8
  4736. mov ecx,edx
  4737. shrd edx,edx,14
  4738. mov esi,DWORD PTR 12[esp]
  4739. vpaddd xmm0,xmm0,xmm7
  4740. xor edx,ecx
  4741. mov edi,DWORD PTR 16[esp]
  4742. xor esi,edi
  4743. vpshufd xmm7,xmm0,80
  4744. shrd edx,edx,5
  4745. and esi,ecx
  4746. mov DWORD PTR 8[esp],ecx
  4747. vpsrld xmm6,xmm7,10
  4748. xor edx,ecx
  4749. xor edi,esi
  4750. shrd edx,edx,6
  4751. vpsrlq xmm5,xmm7,17
  4752. mov ecx,eax
  4753. add edx,edi
  4754. mov edi,DWORD PTR 28[esp]
  4755. vpxor xmm6,xmm6,xmm5
  4756. mov esi,eax
  4757. shrd ecx,ecx,9
  4758. mov DWORD PTR 24[esp],eax
  4759. vpsrlq xmm7,xmm7,19
  4760. xor ecx,eax
  4761. xor eax,edi
  4762. add edx,DWORD PTR 20[esp]
  4763. vpxor xmm6,xmm6,xmm7
  4764. shrd ecx,ecx,11
  4765. and ebx,eax
  4766. xor ecx,esi
  4767. vpshufd xmm7,xmm6,232
  4768. add edx,DWORD PTR 40[esp]
  4769. xor ebx,edi
  4770. shrd ecx,ecx,2
  4771. vpslldq xmm7,xmm7,8
  4772. add ebx,edx
  4773. add edx,DWORD PTR 4[esp]
  4774. add ebx,ecx
  4775. vpaddd xmm0,xmm0,xmm7
  4776. mov ecx,edx
  4777. shrd edx,edx,14
  4778. mov esi,DWORD PTR 8[esp]
  4779. vpaddd xmm6,xmm0,XMMWORD PTR [ebp]
  4780. xor edx,ecx
  4781. mov edi,DWORD PTR 12[esp]
  4782. xor esi,edi
  4783. shrd edx,edx,5
  4784. and esi,ecx
  4785. mov DWORD PTR 4[esp],ecx
  4786. xor edx,ecx
  4787. xor edi,esi
  4788. shrd edx,edx,6
  4789. mov ecx,ebx
  4790. add edx,edi
  4791. mov edi,DWORD PTR 24[esp]
  4792. mov esi,ebx
  4793. shrd ecx,ecx,9
  4794. mov DWORD PTR 20[esp],ebx
  4795. xor ecx,ebx
  4796. xor ebx,edi
  4797. add edx,DWORD PTR 16[esp]
  4798. shrd ecx,ecx,11
  4799. and eax,ebx
  4800. xor ecx,esi
  4801. add edx,DWORD PTR 44[esp]
  4802. xor eax,edi
  4803. shrd ecx,ecx,2
  4804. add eax,edx
  4805. add edx,DWORD PTR [esp]
  4806. add eax,ecx
  4807. vmovdqa XMMWORD PTR 32[esp],xmm6
  4808. vpalignr xmm4,xmm2,xmm1,4
  4809. mov ecx,edx
  4810. shrd edx,edx,14
  4811. mov esi,DWORD PTR 4[esp]
  4812. vpalignr xmm7,xmm0,xmm3,4
  4813. xor edx,ecx
  4814. mov edi,DWORD PTR 8[esp]
  4815. xor esi,edi
  4816. vpsrld xmm6,xmm4,7
  4817. shrd edx,edx,5
  4818. and esi,ecx
  4819. mov DWORD PTR [esp],ecx
  4820. vpaddd xmm1,xmm1,xmm7
  4821. xor edx,ecx
  4822. xor edi,esi
  4823. shrd edx,edx,6
  4824. vpsrld xmm7,xmm4,3
  4825. mov ecx,eax
  4826. add edx,edi
  4827. mov edi,DWORD PTR 20[esp]
  4828. vpslld xmm5,xmm4,14
  4829. mov esi,eax
  4830. shrd ecx,ecx,9
  4831. mov DWORD PTR 16[esp],eax
  4832. vpxor xmm4,xmm7,xmm6
  4833. xor ecx,eax
  4834. xor eax,edi
  4835. add edx,DWORD PTR 12[esp]
  4836. vpshufd xmm7,xmm0,250
  4837. shrd ecx,ecx,11
  4838. and ebx,eax
  4839. xor ecx,esi
  4840. vpsrld xmm6,xmm6,11
  4841. add edx,DWORD PTR 48[esp]
  4842. xor ebx,edi
  4843. shrd ecx,ecx,2
  4844. vpxor xmm4,xmm4,xmm5
  4845. add ebx,edx
  4846. add edx,DWORD PTR 28[esp]
  4847. add ebx,ecx
  4848. vpslld xmm5,xmm5,11
  4849. mov ecx,edx
  4850. shrd edx,edx,14
  4851. mov esi,DWORD PTR [esp]
  4852. vpxor xmm4,xmm4,xmm6
  4853. xor edx,ecx
  4854. mov edi,DWORD PTR 4[esp]
  4855. xor esi,edi
  4856. vpsrld xmm6,xmm7,10
  4857. shrd edx,edx,5
  4858. and esi,ecx
  4859. mov DWORD PTR 28[esp],ecx
  4860. vpxor xmm4,xmm4,xmm5
  4861. xor edx,ecx
  4862. xor edi,esi
  4863. shrd edx,edx,6
  4864. vpsrlq xmm5,xmm7,17
  4865. mov ecx,ebx
  4866. add edx,edi
  4867. mov edi,DWORD PTR 16[esp]
  4868. vpaddd xmm1,xmm1,xmm4
  4869. mov esi,ebx
  4870. shrd ecx,ecx,9
  4871. mov DWORD PTR 12[esp],ebx
  4872. vpxor xmm6,xmm6,xmm5
  4873. xor ecx,ebx
  4874. xor ebx,edi
  4875. add edx,DWORD PTR 8[esp]
  4876. vpsrlq xmm7,xmm7,19
  4877. shrd ecx,ecx,11
  4878. and eax,ebx
  4879. xor ecx,esi
  4880. vpxor xmm6,xmm6,xmm7
  4881. add edx,DWORD PTR 52[esp]
  4882. xor eax,edi
  4883. shrd ecx,ecx,2
  4884. vpshufd xmm7,xmm6,132
  4885. add eax,edx
  4886. add edx,DWORD PTR 24[esp]
  4887. add eax,ecx
  4888. vpsrldq xmm7,xmm7,8
  4889. mov ecx,edx
  4890. shrd edx,edx,14
  4891. mov esi,DWORD PTR 28[esp]
  4892. vpaddd xmm1,xmm1,xmm7
  4893. xor edx,ecx
  4894. mov edi,DWORD PTR [esp]
  4895. xor esi,edi
  4896. vpshufd xmm7,xmm1,80
  4897. shrd edx,edx,5
  4898. and esi,ecx
  4899. mov DWORD PTR 24[esp],ecx
  4900. vpsrld xmm6,xmm7,10
  4901. xor edx,ecx
  4902. xor edi,esi
  4903. shrd edx,edx,6
  4904. vpsrlq xmm5,xmm7,17
  4905. mov ecx,eax
  4906. add edx,edi
  4907. mov edi,DWORD PTR 12[esp]
  4908. vpxor xmm6,xmm6,xmm5
  4909. mov esi,eax
  4910. shrd ecx,ecx,9
  4911. mov DWORD PTR 8[esp],eax
  4912. vpsrlq xmm7,xmm7,19
  4913. xor ecx,eax
  4914. xor eax,edi
  4915. add edx,DWORD PTR 4[esp]
  4916. vpxor xmm6,xmm6,xmm7
  4917. shrd ecx,ecx,11
  4918. and ebx,eax
  4919. xor ecx,esi
  4920. vpshufd xmm7,xmm6,232
  4921. add edx,DWORD PTR 56[esp]
  4922. xor ebx,edi
  4923. shrd ecx,ecx,2
  4924. vpslldq xmm7,xmm7,8
  4925. add ebx,edx
  4926. add edx,DWORD PTR 20[esp]
  4927. add ebx,ecx
  4928. vpaddd xmm1,xmm1,xmm7
  4929. mov ecx,edx
  4930. shrd edx,edx,14
  4931. mov esi,DWORD PTR 24[esp]
  4932. vpaddd xmm6,xmm1,XMMWORD PTR 16[ebp]
  4933. xor edx,ecx
  4934. mov edi,DWORD PTR 28[esp]
  4935. xor esi,edi
  4936. shrd edx,edx,5
  4937. and esi,ecx
  4938. mov DWORD PTR 20[esp],ecx
  4939. xor edx,ecx
  4940. xor edi,esi
  4941. shrd edx,edx,6
  4942. mov ecx,ebx
  4943. add edx,edi
  4944. mov edi,DWORD PTR 8[esp]
  4945. mov esi,ebx
  4946. shrd ecx,ecx,9
  4947. mov DWORD PTR 4[esp],ebx
  4948. xor ecx,ebx
  4949. xor ebx,edi
  4950. add edx,DWORD PTR [esp]
  4951. shrd ecx,ecx,11
  4952. and eax,ebx
  4953. xor ecx,esi
  4954. add edx,DWORD PTR 60[esp]
  4955. xor eax,edi
  4956. shrd ecx,ecx,2
  4957. add eax,edx
  4958. add edx,DWORD PTR 16[esp]
  4959. add eax,ecx
  4960. vmovdqa XMMWORD PTR 48[esp],xmm6
  4961. vpalignr xmm4,xmm3,xmm2,4
  4962. mov ecx,edx
  4963. shrd edx,edx,14
  4964. mov esi,DWORD PTR 20[esp]
  4965. vpalignr xmm7,xmm1,xmm0,4
  4966. xor edx,ecx
  4967. mov edi,DWORD PTR 24[esp]
  4968. xor esi,edi
  4969. vpsrld xmm6,xmm4,7
  4970. shrd edx,edx,5
  4971. and esi,ecx
  4972. mov DWORD PTR 16[esp],ecx
  4973. vpaddd xmm2,xmm2,xmm7
  4974. xor edx,ecx
  4975. xor edi,esi
  4976. shrd edx,edx,6
  4977. vpsrld xmm7,xmm4,3
  4978. mov ecx,eax
  4979. add edx,edi
  4980. mov edi,DWORD PTR 4[esp]
  4981. vpslld xmm5,xmm4,14
  4982. mov esi,eax
  4983. shrd ecx,ecx,9
  4984. mov DWORD PTR [esp],eax
  4985. vpxor xmm4,xmm7,xmm6
  4986. xor ecx,eax
  4987. xor eax,edi
  4988. add edx,DWORD PTR 28[esp]
  4989. vpshufd xmm7,xmm1,250
  4990. shrd ecx,ecx,11
  4991. and ebx,eax
  4992. xor ecx,esi
  4993. vpsrld xmm6,xmm6,11
  4994. add edx,DWORD PTR 64[esp]
  4995. xor ebx,edi
  4996. shrd ecx,ecx,2
  4997. vpxor xmm4,xmm4,xmm5
  4998. add ebx,edx
  4999. add edx,DWORD PTR 12[esp]
  5000. add ebx,ecx
  5001. vpslld xmm5,xmm5,11
  5002. mov ecx,edx
  5003. shrd edx,edx,14
  5004. mov esi,DWORD PTR 16[esp]
  5005. vpxor xmm4,xmm4,xmm6
  5006. xor edx,ecx
  5007. mov edi,DWORD PTR 20[esp]
  5008. xor esi,edi
  5009. vpsrld xmm6,xmm7,10
  5010. shrd edx,edx,5
  5011. and esi,ecx
  5012. mov DWORD PTR 12[esp],ecx
  5013. vpxor xmm4,xmm4,xmm5
  5014. xor edx,ecx
  5015. xor edi,esi
  5016. shrd edx,edx,6
  5017. vpsrlq xmm5,xmm7,17
  5018. mov ecx,ebx
  5019. add edx,edi
  5020. mov edi,DWORD PTR [esp]
  5021. vpaddd xmm2,xmm2,xmm4
  5022. mov esi,ebx
  5023. shrd ecx,ecx,9
  5024. mov DWORD PTR 28[esp],ebx
  5025. vpxor xmm6,xmm6,xmm5
  5026. xor ecx,ebx
  5027. xor ebx,edi
  5028. add edx,DWORD PTR 24[esp]
  5029. vpsrlq xmm7,xmm7,19
  5030. shrd ecx,ecx,11
  5031. and eax,ebx
  5032. xor ecx,esi
  5033. vpxor xmm6,xmm6,xmm7
  5034. add edx,DWORD PTR 68[esp]
  5035. xor eax,edi
  5036. shrd ecx,ecx,2
  5037. vpshufd xmm7,xmm6,132
  5038. add eax,edx
  5039. add edx,DWORD PTR 8[esp]
  5040. add eax,ecx
  5041. vpsrldq xmm7,xmm7,8
  5042. mov ecx,edx
  5043. shrd edx,edx,14
  5044. mov esi,DWORD PTR 12[esp]
  5045. vpaddd xmm2,xmm2,xmm7
  5046. xor edx,ecx
  5047. mov edi,DWORD PTR 16[esp]
  5048. xor esi,edi
  5049. vpshufd xmm7,xmm2,80
  5050. shrd edx,edx,5
  5051. and esi,ecx
  5052. mov DWORD PTR 8[esp],ecx
  5053. vpsrld xmm6,xmm7,10
  5054. xor edx,ecx
  5055. xor edi,esi
  5056. shrd edx,edx,6
  5057. vpsrlq xmm5,xmm7,17
  5058. mov ecx,eax
  5059. add edx,edi
  5060. mov edi,DWORD PTR 28[esp]
  5061. vpxor xmm6,xmm6,xmm5
  5062. mov esi,eax
  5063. shrd ecx,ecx,9
  5064. mov DWORD PTR 24[esp],eax
  5065. vpsrlq xmm7,xmm7,19
  5066. xor ecx,eax
  5067. xor eax,edi
  5068. add edx,DWORD PTR 20[esp]
  5069. vpxor xmm6,xmm6,xmm7
  5070. shrd ecx,ecx,11
  5071. and ebx,eax
  5072. xor ecx,esi
  5073. vpshufd xmm7,xmm6,232
  5074. add edx,DWORD PTR 72[esp]
  5075. xor ebx,edi
  5076. shrd ecx,ecx,2
  5077. vpslldq xmm7,xmm7,8
  5078. add ebx,edx
  5079. add edx,DWORD PTR 4[esp]
  5080. add ebx,ecx
  5081. vpaddd xmm2,xmm2,xmm7
  5082. mov ecx,edx
  5083. shrd edx,edx,14
  5084. mov esi,DWORD PTR 8[esp]
  5085. vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp]
  5086. xor edx,ecx
  5087. mov edi,DWORD PTR 12[esp]
  5088. xor esi,edi
  5089. shrd edx,edx,5
  5090. and esi,ecx
  5091. mov DWORD PTR 4[esp],ecx
  5092. xor edx,ecx
  5093. xor edi,esi
  5094. shrd edx,edx,6
  5095. mov ecx,ebx
  5096. add edx,edi
  5097. mov edi,DWORD PTR 24[esp]
  5098. mov esi,ebx
  5099. shrd ecx,ecx,9
  5100. mov DWORD PTR 20[esp],ebx
  5101. xor ecx,ebx
  5102. xor ebx,edi
  5103. add edx,DWORD PTR 16[esp]
  5104. shrd ecx,ecx,11
  5105. and eax,ebx
  5106. xor ecx,esi
  5107. add edx,DWORD PTR 76[esp]
  5108. xor eax,edi
  5109. shrd ecx,ecx,2
  5110. add eax,edx
  5111. add edx,DWORD PTR [esp]
  5112. add eax,ecx
  5113. vmovdqa XMMWORD PTR 64[esp],xmm6
  5114. vpalignr xmm4,xmm0,xmm3,4
  5115. mov ecx,edx
  5116. shrd edx,edx,14
  5117. mov esi,DWORD PTR 4[esp]
  5118. vpalignr xmm7,xmm2,xmm1,4
  5119. xor edx,ecx
  5120. mov edi,DWORD PTR 8[esp]
  5121. xor esi,edi
  5122. vpsrld xmm6,xmm4,7
  5123. shrd edx,edx,5
  5124. and esi,ecx
  5125. mov DWORD PTR [esp],ecx
  5126. vpaddd xmm3,xmm3,xmm7
  5127. xor edx,ecx
  5128. xor edi,esi
  5129. shrd edx,edx,6
  5130. vpsrld xmm7,xmm4,3
  5131. mov ecx,eax
  5132. add edx,edi
  5133. mov edi,DWORD PTR 20[esp]
  5134. vpslld xmm5,xmm4,14
  5135. mov esi,eax
  5136. shrd ecx,ecx,9
  5137. mov DWORD PTR 16[esp],eax
  5138. vpxor xmm4,xmm7,xmm6
  5139. xor ecx,eax
  5140. xor eax,edi
  5141. add edx,DWORD PTR 12[esp]
  5142. vpshufd xmm7,xmm2,250
  5143. shrd ecx,ecx,11
  5144. and ebx,eax
  5145. xor ecx,esi
  5146. vpsrld xmm6,xmm6,11
  5147. add edx,DWORD PTR 80[esp]
  5148. xor ebx,edi
  5149. shrd ecx,ecx,2
  5150. vpxor xmm4,xmm4,xmm5
  5151. add ebx,edx
  5152. add edx,DWORD PTR 28[esp]
  5153. add ebx,ecx
  5154. vpslld xmm5,xmm5,11
  5155. mov ecx,edx
  5156. shrd edx,edx,14
  5157. mov esi,DWORD PTR [esp]
  5158. vpxor xmm4,xmm4,xmm6
  5159. xor edx,ecx
  5160. mov edi,DWORD PTR 4[esp]
  5161. xor esi,edi
  5162. vpsrld xmm6,xmm7,10
  5163. shrd edx,edx,5
  5164. and esi,ecx
  5165. mov DWORD PTR 28[esp],ecx
  5166. vpxor xmm4,xmm4,xmm5
  5167. xor edx,ecx
  5168. xor edi,esi
  5169. shrd edx,edx,6
  5170. vpsrlq xmm5,xmm7,17
  5171. mov ecx,ebx
  5172. add edx,edi
  5173. mov edi,DWORD PTR 16[esp]
  5174. vpaddd xmm3,xmm3,xmm4
  5175. mov esi,ebx
  5176. shrd ecx,ecx,9
  5177. mov DWORD PTR 12[esp],ebx
  5178. vpxor xmm6,xmm6,xmm5
  5179. xor ecx,ebx
  5180. xor ebx,edi
  5181. add edx,DWORD PTR 8[esp]
  5182. vpsrlq xmm7,xmm7,19
  5183. shrd ecx,ecx,11
  5184. and eax,ebx
  5185. xor ecx,esi
  5186. vpxor xmm6,xmm6,xmm7
  5187. add edx,DWORD PTR 84[esp]
  5188. xor eax,edi
  5189. shrd ecx,ecx,2
  5190. vpshufd xmm7,xmm6,132
  5191. add eax,edx
  5192. add edx,DWORD PTR 24[esp]
  5193. add eax,ecx
  5194. vpsrldq xmm7,xmm7,8
  5195. mov ecx,edx
  5196. shrd edx,edx,14
  5197. mov esi,DWORD PTR 28[esp]
  5198. vpaddd xmm3,xmm3,xmm7
  5199. xor edx,ecx
  5200. mov edi,DWORD PTR [esp]
  5201. xor esi,edi
  5202. vpshufd xmm7,xmm3,80
  5203. shrd edx,edx,5
  5204. and esi,ecx
  5205. mov DWORD PTR 24[esp],ecx
  5206. vpsrld xmm6,xmm7,10
  5207. xor edx,ecx
  5208. xor edi,esi
  5209. shrd edx,edx,6
  5210. vpsrlq xmm5,xmm7,17
  5211. mov ecx,eax
  5212. add edx,edi
  5213. mov edi,DWORD PTR 12[esp]
  5214. vpxor xmm6,xmm6,xmm5
  5215. mov esi,eax
  5216. shrd ecx,ecx,9
  5217. mov DWORD PTR 8[esp],eax
  5218. vpsrlq xmm7,xmm7,19
  5219. xor ecx,eax
  5220. xor eax,edi
  5221. add edx,DWORD PTR 4[esp]
  5222. vpxor xmm6,xmm6,xmm7
  5223. shrd ecx,ecx,11
  5224. and ebx,eax
  5225. xor ecx,esi
  5226. vpshufd xmm7,xmm6,232
  5227. add edx,DWORD PTR 88[esp]
  5228. xor ebx,edi
  5229. shrd ecx,ecx,2
  5230. vpslldq xmm7,xmm7,8
  5231. add ebx,edx
  5232. add edx,DWORD PTR 20[esp]
  5233. add ebx,ecx
  5234. vpaddd xmm3,xmm3,xmm7
  5235. mov ecx,edx
  5236. shrd edx,edx,14
  5237. mov esi,DWORD PTR 24[esp]
  5238. vpaddd xmm6,xmm3,XMMWORD PTR 48[ebp]
  5239. xor edx,ecx
  5240. mov edi,DWORD PTR 28[esp]
  5241. xor esi,edi
  5242. shrd edx,edx,5
  5243. and esi,ecx
  5244. mov DWORD PTR 20[esp],ecx
  5245. xor edx,ecx
  5246. xor edi,esi
  5247. shrd edx,edx,6
  5248. mov ecx,ebx
  5249. add edx,edi
  5250. mov edi,DWORD PTR 8[esp]
  5251. mov esi,ebx
  5252. shrd ecx,ecx,9
  5253. mov DWORD PTR 4[esp],ebx
  5254. xor ecx,ebx
  5255. xor ebx,edi
  5256. add edx,DWORD PTR [esp]
  5257. shrd ecx,ecx,11
  5258. and eax,ebx
  5259. xor ecx,esi
  5260. add edx,DWORD PTR 92[esp]
  5261. xor eax,edi
  5262. shrd ecx,ecx,2
  5263. add eax,edx
  5264. add edx,DWORD PTR 16[esp]
  5265. add eax,ecx
  5266. vmovdqa XMMWORD PTR 80[esp],xmm6
  5267. cmp DWORD PTR 64[ebp],66051
  5268. jne $L016avx_00_47
  5269. mov ecx,edx
  5270. shrd edx,edx,14
  5271. mov esi,DWORD PTR 20[esp]
  5272. xor edx,ecx
  5273. mov edi,DWORD PTR 24[esp]
  5274. xor esi,edi
  5275. shrd edx,edx,5
  5276. and esi,ecx
  5277. mov DWORD PTR 16[esp],ecx
  5278. xor edx,ecx
  5279. xor edi,esi
  5280. shrd edx,edx,6
  5281. mov ecx,eax
  5282. add edx,edi
  5283. mov edi,DWORD PTR 4[esp]
  5284. mov esi,eax
  5285. shrd ecx,ecx,9
  5286. mov DWORD PTR [esp],eax
  5287. xor ecx,eax
  5288. xor eax,edi
  5289. add edx,DWORD PTR 28[esp]
  5290. shrd ecx,ecx,11
  5291. and ebx,eax
  5292. xor ecx,esi
  5293. add edx,DWORD PTR 32[esp]
  5294. xor ebx,edi
  5295. shrd ecx,ecx,2
  5296. add ebx,edx
  5297. add edx,DWORD PTR 12[esp]
  5298. add ebx,ecx
  5299. mov ecx,edx
  5300. shrd edx,edx,14
  5301. mov esi,DWORD PTR 16[esp]
  5302. xor edx,ecx
  5303. mov edi,DWORD PTR 20[esp]
  5304. xor esi,edi
  5305. shrd edx,edx,5
  5306. and esi,ecx
  5307. mov DWORD PTR 12[esp],ecx
  5308. xor edx,ecx
  5309. xor edi,esi
  5310. shrd edx,edx,6
  5311. mov ecx,ebx
  5312. add edx,edi
  5313. mov edi,DWORD PTR [esp]
  5314. mov esi,ebx
  5315. shrd ecx,ecx,9
  5316. mov DWORD PTR 28[esp],ebx
  5317. xor ecx,ebx
  5318. xor ebx,edi
  5319. add edx,DWORD PTR 24[esp]
  5320. shrd ecx,ecx,11
  5321. and eax,ebx
  5322. xor ecx,esi
  5323. add edx,DWORD PTR 36[esp]
  5324. xor eax,edi
  5325. shrd ecx,ecx,2
  5326. add eax,edx
  5327. add edx,DWORD PTR 8[esp]
  5328. add eax,ecx
  5329. mov ecx,edx
  5330. shrd edx,edx,14
  5331. mov esi,DWORD PTR 12[esp]
  5332. xor edx,ecx
  5333. mov edi,DWORD PTR 16[esp]
  5334. xor esi,edi
  5335. shrd edx,edx,5
  5336. and esi,ecx
  5337. mov DWORD PTR 8[esp],ecx
  5338. xor edx,ecx
  5339. xor edi,esi
  5340. shrd edx,edx,6
  5341. mov ecx,eax
  5342. add edx,edi
  5343. mov edi,DWORD PTR 28[esp]
  5344. mov esi,eax
  5345. shrd ecx,ecx,9
  5346. mov DWORD PTR 24[esp],eax
  5347. xor ecx,eax
  5348. xor eax,edi
  5349. add edx,DWORD PTR 20[esp]
  5350. shrd ecx,ecx,11
  5351. and ebx,eax
  5352. xor ecx,esi
  5353. add edx,DWORD PTR 40[esp]
  5354. xor ebx,edi
  5355. shrd ecx,ecx,2
  5356. add ebx,edx
  5357. add edx,DWORD PTR 4[esp]
  5358. add ebx,ecx
  5359. mov ecx,edx
  5360. shrd edx,edx,14
  5361. mov esi,DWORD PTR 8[esp]
  5362. xor edx,ecx
  5363. mov edi,DWORD PTR 12[esp]
  5364. xor esi,edi
  5365. shrd edx,edx,5
  5366. and esi,ecx
  5367. mov DWORD PTR 4[esp],ecx
  5368. xor edx,ecx
  5369. xor edi,esi
  5370. shrd edx,edx,6
  5371. mov ecx,ebx
  5372. add edx,edi
  5373. mov edi,DWORD PTR 24[esp]
  5374. mov esi,ebx
  5375. shrd ecx,ecx,9
  5376. mov DWORD PTR 20[esp],ebx
  5377. xor ecx,ebx
  5378. xor ebx,edi
  5379. add edx,DWORD PTR 16[esp]
  5380. shrd ecx,ecx,11
  5381. and eax,ebx
  5382. xor ecx,esi
  5383. add edx,DWORD PTR 44[esp]
  5384. xor eax,edi
  5385. shrd ecx,ecx,2
  5386. add eax,edx
  5387. add edx,DWORD PTR [esp]
  5388. add eax,ecx
  5389. mov ecx,edx
  5390. shrd edx,edx,14
  5391. mov esi,DWORD PTR 4[esp]
  5392. xor edx,ecx
  5393. mov edi,DWORD PTR 8[esp]
  5394. xor esi,edi
  5395. shrd edx,edx,5
  5396. and esi,ecx
  5397. mov DWORD PTR [esp],ecx
  5398. xor edx,ecx
  5399. xor edi,esi
  5400. shrd edx,edx,6
  5401. mov ecx,eax
  5402. add edx,edi
  5403. mov edi,DWORD PTR 20[esp]
  5404. mov esi,eax
  5405. shrd ecx,ecx,9
  5406. mov DWORD PTR 16[esp],eax
  5407. xor ecx,eax
  5408. xor eax,edi
  5409. add edx,DWORD PTR 12[esp]
  5410. shrd ecx,ecx,11
  5411. and ebx,eax
  5412. xor ecx,esi
  5413. add edx,DWORD PTR 48[esp]
  5414. xor ebx,edi
  5415. shrd ecx,ecx,2
  5416. add ebx,edx
  5417. add edx,DWORD PTR 28[esp]
  5418. add ebx,ecx
  5419. mov ecx,edx
  5420. shrd edx,edx,14
  5421. mov esi,DWORD PTR [esp]
  5422. xor edx,ecx
  5423. mov edi,DWORD PTR 4[esp]
  5424. xor esi,edi
  5425. shrd edx,edx,5
  5426. and esi,ecx
  5427. mov DWORD PTR 28[esp],ecx
  5428. xor edx,ecx
  5429. xor edi,esi
  5430. shrd edx,edx,6
  5431. mov ecx,ebx
  5432. add edx,edi
  5433. mov edi,DWORD PTR 16[esp]
  5434. mov esi,ebx
  5435. shrd ecx,ecx,9
  5436. mov DWORD PTR 12[esp],ebx
  5437. xor ecx,ebx
  5438. xor ebx,edi
  5439. add edx,DWORD PTR 8[esp]
  5440. shrd ecx,ecx,11
  5441. and eax,ebx
  5442. xor ecx,esi
  5443. add edx,DWORD PTR 52[esp]
  5444. xor eax,edi
  5445. shrd ecx,ecx,2
  5446. add eax,edx
  5447. add edx,DWORD PTR 24[esp]
  5448. add eax,ecx
  5449. mov ecx,edx
  5450. shrd edx,edx,14
  5451. mov esi,DWORD PTR 28[esp]
  5452. xor edx,ecx
  5453. mov edi,DWORD PTR [esp]
  5454. xor esi,edi
  5455. shrd edx,edx,5
  5456. and esi,ecx
  5457. mov DWORD PTR 24[esp],ecx
  5458. xor edx,ecx
  5459. xor edi,esi
  5460. shrd edx,edx,6
  5461. mov ecx,eax
  5462. add edx,edi
  5463. mov edi,DWORD PTR 12[esp]
  5464. mov esi,eax
  5465. shrd ecx,ecx,9
  5466. mov DWORD PTR 8[esp],eax
  5467. xor ecx,eax
  5468. xor eax,edi
  5469. add edx,DWORD PTR 4[esp]
  5470. shrd ecx,ecx,11
  5471. and ebx,eax
  5472. xor ecx,esi
  5473. add edx,DWORD PTR 56[esp]
  5474. xor ebx,edi
  5475. shrd ecx,ecx,2
  5476. add ebx,edx
  5477. add edx,DWORD PTR 20[esp]
  5478. add ebx,ecx
  5479. mov ecx,edx
  5480. shrd edx,edx,14
  5481. mov esi,DWORD PTR 24[esp]
  5482. xor edx,ecx
  5483. mov edi,DWORD PTR 28[esp]
  5484. xor esi,edi
  5485. shrd edx,edx,5
  5486. and esi,ecx
  5487. mov DWORD PTR 20[esp],ecx
  5488. xor edx,ecx
  5489. xor edi,esi
  5490. shrd edx,edx,6
  5491. mov ecx,ebx
  5492. add edx,edi
  5493. mov edi,DWORD PTR 8[esp]
  5494. mov esi,ebx
  5495. shrd ecx,ecx,9
  5496. mov DWORD PTR 4[esp],ebx
  5497. xor ecx,ebx
  5498. xor ebx,edi
  5499. add edx,DWORD PTR [esp]
  5500. shrd ecx,ecx,11
  5501. and eax,ebx
  5502. xor ecx,esi
  5503. add edx,DWORD PTR 60[esp]
  5504. xor eax,edi
  5505. shrd ecx,ecx,2
  5506. add eax,edx
  5507. add edx,DWORD PTR 16[esp]
  5508. add eax,ecx
  5509. mov ecx,edx
  5510. shrd edx,edx,14
  5511. mov esi,DWORD PTR 20[esp]
  5512. xor edx,ecx
  5513. mov edi,DWORD PTR 24[esp]
  5514. xor esi,edi
  5515. shrd edx,edx,5
  5516. and esi,ecx
  5517. mov DWORD PTR 16[esp],ecx
  5518. xor edx,ecx
  5519. xor edi,esi
  5520. shrd edx,edx,6
  5521. mov ecx,eax
  5522. add edx,edi
  5523. mov edi,DWORD PTR 4[esp]
  5524. mov esi,eax
  5525. shrd ecx,ecx,9
  5526. mov DWORD PTR [esp],eax
  5527. xor ecx,eax
  5528. xor eax,edi
  5529. add edx,DWORD PTR 28[esp]
  5530. shrd ecx,ecx,11
  5531. and ebx,eax
  5532. xor ecx,esi
  5533. add edx,DWORD PTR 64[esp]
  5534. xor ebx,edi
  5535. shrd ecx,ecx,2
  5536. add ebx,edx
  5537. add edx,DWORD PTR 12[esp]
  5538. add ebx,ecx
  5539. mov ecx,edx
  5540. shrd edx,edx,14
  5541. mov esi,DWORD PTR 16[esp]
  5542. xor edx,ecx
  5543. mov edi,DWORD PTR 20[esp]
  5544. xor esi,edi
  5545. shrd edx,edx,5
  5546. and esi,ecx
  5547. mov DWORD PTR 12[esp],ecx
  5548. xor edx,ecx
  5549. xor edi,esi
  5550. shrd edx,edx,6
  5551. mov ecx,ebx
  5552. add edx,edi
  5553. mov edi,DWORD PTR [esp]
  5554. mov esi,ebx
  5555. shrd ecx,ecx,9
  5556. mov DWORD PTR 28[esp],ebx
  5557. xor ecx,ebx
  5558. xor ebx,edi
  5559. add edx,DWORD PTR 24[esp]
  5560. shrd ecx,ecx,11
  5561. and eax,ebx
  5562. xor ecx,esi
  5563. add edx,DWORD PTR 68[esp]
  5564. xor eax,edi
  5565. shrd ecx,ecx,2
  5566. add eax,edx
  5567. add edx,DWORD PTR 8[esp]
  5568. add eax,ecx
  5569. mov ecx,edx
  5570. shrd edx,edx,14
  5571. mov esi,DWORD PTR 12[esp]
  5572. xor edx,ecx
  5573. mov edi,DWORD PTR 16[esp]
  5574. xor esi,edi
  5575. shrd edx,edx,5
  5576. and esi,ecx
  5577. mov DWORD PTR 8[esp],ecx
  5578. xor edx,ecx
  5579. xor edi,esi
  5580. shrd edx,edx,6
  5581. mov ecx,eax
  5582. add edx,edi
  5583. mov edi,DWORD PTR 28[esp]
  5584. mov esi,eax
  5585. shrd ecx,ecx,9
  5586. mov DWORD PTR 24[esp],eax
  5587. xor ecx,eax
  5588. xor eax,edi
  5589. add edx,DWORD PTR 20[esp]
  5590. shrd ecx,ecx,11
  5591. and ebx,eax
  5592. xor ecx,esi
  5593. add edx,DWORD PTR 72[esp]
  5594. xor ebx,edi
  5595. shrd ecx,ecx,2
  5596. add ebx,edx
  5597. add edx,DWORD PTR 4[esp]
  5598. add ebx,ecx
  5599. mov ecx,edx
  5600. shrd edx,edx,14
  5601. mov esi,DWORD PTR 8[esp]
  5602. xor edx,ecx
  5603. mov edi,DWORD PTR 12[esp]
  5604. xor esi,edi
  5605. shrd edx,edx,5
  5606. and esi,ecx
  5607. mov DWORD PTR 4[esp],ecx
  5608. xor edx,ecx
  5609. xor edi,esi
  5610. shrd edx,edx,6
  5611. mov ecx,ebx
  5612. add edx,edi
  5613. mov edi,DWORD PTR 24[esp]
  5614. mov esi,ebx
  5615. shrd ecx,ecx,9
  5616. mov DWORD PTR 20[esp],ebx
  5617. xor ecx,ebx
  5618. xor ebx,edi
  5619. add edx,DWORD PTR 16[esp]
  5620. shrd ecx,ecx,11
  5621. and eax,ebx
  5622. xor ecx,esi
  5623. add edx,DWORD PTR 76[esp]
  5624. xor eax,edi
  5625. shrd ecx,ecx,2
  5626. add eax,edx
  5627. add edx,DWORD PTR [esp]
  5628. add eax,ecx
  5629. mov ecx,edx
  5630. shrd edx,edx,14
  5631. mov esi,DWORD PTR 4[esp]
  5632. xor edx,ecx
  5633. mov edi,DWORD PTR 8[esp]
  5634. xor esi,edi
  5635. shrd edx,edx,5
  5636. and esi,ecx
  5637. mov DWORD PTR [esp],ecx
  5638. xor edx,ecx
  5639. xor edi,esi
  5640. shrd edx,edx,6
  5641. mov ecx,eax
  5642. add edx,edi
  5643. mov edi,DWORD PTR 20[esp]
  5644. mov esi,eax
  5645. shrd ecx,ecx,9
  5646. mov DWORD PTR 16[esp],eax
  5647. xor ecx,eax
  5648. xor eax,edi
  5649. add edx,DWORD PTR 12[esp]
  5650. shrd ecx,ecx,11
  5651. and ebx,eax
  5652. xor ecx,esi
  5653. add edx,DWORD PTR 80[esp]
  5654. xor ebx,edi
  5655. shrd ecx,ecx,2
  5656. add ebx,edx
  5657. add edx,DWORD PTR 28[esp]
  5658. add ebx,ecx
  5659. mov ecx,edx
  5660. shrd edx,edx,14
  5661. mov esi,DWORD PTR [esp]
  5662. xor edx,ecx
  5663. mov edi,DWORD PTR 4[esp]
  5664. xor esi,edi
  5665. shrd edx,edx,5
  5666. and esi,ecx
  5667. mov DWORD PTR 28[esp],ecx
  5668. xor edx,ecx
  5669. xor edi,esi
  5670. shrd edx,edx,6
  5671. mov ecx,ebx
  5672. add edx,edi
  5673. mov edi,DWORD PTR 16[esp]
  5674. mov esi,ebx
  5675. shrd ecx,ecx,9
  5676. mov DWORD PTR 12[esp],ebx
  5677. xor ecx,ebx
  5678. xor ebx,edi
  5679. add edx,DWORD PTR 8[esp]
  5680. shrd ecx,ecx,11
  5681. and eax,ebx
  5682. xor ecx,esi
  5683. add edx,DWORD PTR 84[esp]
  5684. xor eax,edi
  5685. shrd ecx,ecx,2
  5686. add eax,edx
  5687. add edx,DWORD PTR 24[esp]
  5688. add eax,ecx
  5689. mov ecx,edx
  5690. shrd edx,edx,14
  5691. mov esi,DWORD PTR 28[esp]
  5692. xor edx,ecx
  5693. mov edi,DWORD PTR [esp]
  5694. xor esi,edi
  5695. shrd edx,edx,5
  5696. and esi,ecx
  5697. mov DWORD PTR 24[esp],ecx
  5698. xor edx,ecx
  5699. xor edi,esi
  5700. shrd edx,edx,6
  5701. mov ecx,eax
  5702. add edx,edi
  5703. mov edi,DWORD PTR 12[esp]
  5704. mov esi,eax
  5705. shrd ecx,ecx,9
  5706. mov DWORD PTR 8[esp],eax
  5707. xor ecx,eax
  5708. xor eax,edi
  5709. add edx,DWORD PTR 4[esp]
  5710. shrd ecx,ecx,11
  5711. and ebx,eax
  5712. xor ecx,esi
  5713. add edx,DWORD PTR 88[esp]
  5714. xor ebx,edi
  5715. shrd ecx,ecx,2
  5716. add ebx,edx
  5717. add edx,DWORD PTR 20[esp]
  5718. add ebx,ecx
  5719. mov ecx,edx
  5720. shrd edx,edx,14
  5721. mov esi,DWORD PTR 24[esp]
  5722. xor edx,ecx
  5723. mov edi,DWORD PTR 28[esp]
  5724. xor esi,edi
  5725. shrd edx,edx,5
  5726. and esi,ecx
  5727. mov DWORD PTR 20[esp],ecx
  5728. xor edx,ecx
  5729. xor edi,esi
  5730. shrd edx,edx,6
  5731. mov ecx,ebx
  5732. add edx,edi
  5733. mov edi,DWORD PTR 8[esp]
  5734. mov esi,ebx
  5735. shrd ecx,ecx,9
  5736. mov DWORD PTR 4[esp],ebx
  5737. xor ecx,ebx
  5738. xor ebx,edi
  5739. add edx,DWORD PTR [esp]
  5740. shrd ecx,ecx,11
  5741. and eax,ebx
  5742. xor ecx,esi
  5743. add edx,DWORD PTR 92[esp]
  5744. xor eax,edi
  5745. shrd ecx,ecx,2
  5746. add eax,edx
  5747. add edx,DWORD PTR 16[esp]
  5748. add eax,ecx
  5749. mov esi,DWORD PTR 96[esp]
  5750. xor ebx,edi
  5751. mov ecx,DWORD PTR 12[esp]
  5752. add eax,DWORD PTR [esi]
  5753. add ebx,DWORD PTR 4[esi]
  5754. add edi,DWORD PTR 8[esi]
  5755. add ecx,DWORD PTR 12[esi]
  5756. mov DWORD PTR [esi],eax
  5757. mov DWORD PTR 4[esi],ebx
  5758. mov DWORD PTR 8[esi],edi
  5759. mov DWORD PTR 12[esi],ecx
  5760. mov DWORD PTR 4[esp],ebx
  5761. xor ebx,edi
  5762. mov DWORD PTR 8[esp],edi
  5763. mov DWORD PTR 12[esp],ecx
  5764. mov edi,DWORD PTR 20[esp]
  5765. mov ecx,DWORD PTR 24[esp]
  5766. add edx,DWORD PTR 16[esi]
  5767. add edi,DWORD PTR 20[esi]
  5768. add ecx,DWORD PTR 24[esi]
  5769. mov DWORD PTR 16[esi],edx
  5770. mov DWORD PTR 20[esi],edi
  5771. mov DWORD PTR 20[esp],edi
  5772. mov edi,DWORD PTR 28[esp]
  5773. mov DWORD PTR 24[esi],ecx
  5774. add edi,DWORD PTR 28[esi]
  5775. mov DWORD PTR 24[esp],ecx
  5776. mov DWORD PTR 28[esi],edi
  5777. mov DWORD PTR 28[esp],edi
  5778. mov edi,DWORD PTR 100[esp]
  5779. vmovdqa xmm7,XMMWORD PTR 64[ebp]
  5780. sub ebp,192
  5781. cmp edi,DWORD PTR 104[esp]
  5782. jb $L015grand_avx
  5783. mov esp,DWORD PTR 108[esp]
  5784. vzeroall
  5785. pop edi
  5786. pop esi
  5787. pop ebx
  5788. pop ebp
  5789. ret
  5790. ALIGN 32
  5791. $L014AVX_BMI:
  5792. lea esp,DWORD PTR [esp-96]
  5793. vzeroall
  5794. mov eax,DWORD PTR [esi]
  5795. mov ebx,DWORD PTR 4[esi]
  5796. mov ecx,DWORD PTR 8[esi]
  5797. mov edi,DWORD PTR 12[esi]
  5798. mov DWORD PTR 4[esp],ebx
  5799. xor ebx,ecx
  5800. mov DWORD PTR 8[esp],ecx
  5801. mov DWORD PTR 12[esp],edi
  5802. mov edx,DWORD PTR 16[esi]
  5803. mov edi,DWORD PTR 20[esi]
  5804. mov ecx,DWORD PTR 24[esi]
  5805. mov esi,DWORD PTR 28[esi]
  5806. mov DWORD PTR 20[esp],edi
  5807. mov edi,DWORD PTR 100[esp]
  5808. mov DWORD PTR 24[esp],ecx
  5809. mov DWORD PTR 28[esp],esi
  5810. vmovdqa xmm7,XMMWORD PTR 256[ebp]
  5811. jmp $L017grand_avx_bmi
  5812. ALIGN 32
  5813. $L017grand_avx_bmi:
  5814. vmovdqu xmm0,XMMWORD PTR [edi]
  5815. vmovdqu xmm1,XMMWORD PTR 16[edi]
  5816. vmovdqu xmm2,XMMWORD PTR 32[edi]
  5817. vmovdqu xmm3,XMMWORD PTR 48[edi]
  5818. add edi,64
  5819. vpshufb xmm0,xmm0,xmm7
  5820. mov DWORD PTR 100[esp],edi
  5821. vpshufb xmm1,xmm1,xmm7
  5822. vpshufb xmm2,xmm2,xmm7
  5823. vpaddd xmm4,xmm0,XMMWORD PTR [ebp]
  5824. vpshufb xmm3,xmm3,xmm7
  5825. vpaddd xmm5,xmm1,XMMWORD PTR 16[ebp]
  5826. vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp]
  5827. vpaddd xmm7,xmm3,XMMWORD PTR 48[ebp]
  5828. vmovdqa XMMWORD PTR 32[esp],xmm4
  5829. vmovdqa XMMWORD PTR 48[esp],xmm5
  5830. vmovdqa XMMWORD PTR 64[esp],xmm6
  5831. vmovdqa XMMWORD PTR 80[esp],xmm7
  5832. jmp $L018avx_bmi_00_47
  5833. ALIGN 16
  5834. $L018avx_bmi_00_47:
  5835. add ebp,64
  5836. vpalignr xmm4,xmm1,xmm0,4
  5837. rorx ecx,edx,6
  5838. rorx esi,edx,11
  5839. mov DWORD PTR 16[esp],edx
  5840. vpalignr xmm7,xmm3,xmm2,4
  5841. rorx edi,edx,25
  5842. xor ecx,esi
  5843. andn esi,edx,DWORD PTR 24[esp]
  5844. vpsrld xmm6,xmm4,7
  5845. xor ecx,edi
  5846. and edx,DWORD PTR 20[esp]
  5847. mov DWORD PTR [esp],eax
  5848. vpaddd xmm0,xmm0,xmm7
  5849. or edx,esi
  5850. rorx edi,eax,2
  5851. rorx esi,eax,13
  5852. vpsrld xmm7,xmm4,3
  5853. lea edx,DWORD PTR [ecx*1+edx]
  5854. rorx ecx,eax,22
  5855. xor esi,edi
  5856. vpslld xmm5,xmm4,14
  5857. mov edi,DWORD PTR 4[esp]
  5858. xor ecx,esi
  5859. xor eax,edi
  5860. vpxor xmm4,xmm7,xmm6
  5861. add edx,DWORD PTR 28[esp]
  5862. and ebx,eax
  5863. add edx,DWORD PTR 32[esp]
  5864. vpshufd xmm7,xmm3,250
  5865. xor ebx,edi
  5866. add ecx,edx
  5867. add edx,DWORD PTR 12[esp]
  5868. vpsrld xmm6,xmm6,11
  5869. lea ebx,DWORD PTR [ecx*1+ebx]
  5870. rorx ecx,edx,6
  5871. rorx esi,edx,11
  5872. vpxor xmm4,xmm4,xmm5
  5873. mov DWORD PTR 12[esp],edx
  5874. rorx edi,edx,25
  5875. xor ecx,esi
  5876. vpslld xmm5,xmm5,11
  5877. andn esi,edx,DWORD PTR 20[esp]
  5878. xor ecx,edi
  5879. and edx,DWORD PTR 16[esp]
  5880. vpxor xmm4,xmm4,xmm6
  5881. mov DWORD PTR 28[esp],ebx
  5882. or edx,esi
  5883. rorx edi,ebx,2
  5884. rorx esi,ebx,13
  5885. vpsrld xmm6,xmm7,10
  5886. lea edx,DWORD PTR [ecx*1+edx]
  5887. rorx ecx,ebx,22
  5888. xor esi,edi
  5889. vpxor xmm4,xmm4,xmm5
  5890. mov edi,DWORD PTR [esp]
  5891. xor ecx,esi
  5892. xor ebx,edi
  5893. vpsrlq xmm5,xmm7,17
  5894. add edx,DWORD PTR 24[esp]
  5895. and eax,ebx
  5896. add edx,DWORD PTR 36[esp]
  5897. vpaddd xmm0,xmm0,xmm4
  5898. xor eax,edi
  5899. add ecx,edx
  5900. add edx,DWORD PTR 8[esp]
  5901. vpxor xmm6,xmm6,xmm5
  5902. lea eax,DWORD PTR [ecx*1+eax]
  5903. rorx ecx,edx,6
  5904. rorx esi,edx,11
  5905. vpsrlq xmm7,xmm7,19
  5906. mov DWORD PTR 8[esp],edx
  5907. rorx edi,edx,25
  5908. xor ecx,esi
  5909. vpxor xmm6,xmm6,xmm7
  5910. andn esi,edx,DWORD PTR 16[esp]
  5911. xor ecx,edi
  5912. and edx,DWORD PTR 12[esp]
  5913. vpshufd xmm7,xmm6,132
  5914. mov DWORD PTR 24[esp],eax
  5915. or edx,esi
  5916. rorx edi,eax,2
  5917. rorx esi,eax,13
  5918. vpsrldq xmm7,xmm7,8
  5919. lea edx,DWORD PTR [ecx*1+edx]
  5920. rorx ecx,eax,22
  5921. xor esi,edi
  5922. vpaddd xmm0,xmm0,xmm7
  5923. mov edi,DWORD PTR 28[esp]
  5924. xor ecx,esi
  5925. xor eax,edi
  5926. vpshufd xmm7,xmm0,80
  5927. add edx,DWORD PTR 20[esp]
  5928. and ebx,eax
  5929. add edx,DWORD PTR 40[esp]
  5930. vpsrld xmm6,xmm7,10
  5931. xor ebx,edi
  5932. add ecx,edx
  5933. add edx,DWORD PTR 4[esp]
  5934. vpsrlq xmm5,xmm7,17
  5935. lea ebx,DWORD PTR [ecx*1+ebx]
  5936. rorx ecx,edx,6
  5937. rorx esi,edx,11
  5938. vpxor xmm6,xmm6,xmm5
  5939. mov DWORD PTR 4[esp],edx
  5940. rorx edi,edx,25
  5941. xor ecx,esi
  5942. vpsrlq xmm7,xmm7,19
  5943. andn esi,edx,DWORD PTR 12[esp]
  5944. xor ecx,edi
  5945. and edx,DWORD PTR 8[esp]
  5946. vpxor xmm6,xmm6,xmm7
  5947. mov DWORD PTR 20[esp],ebx
  5948. or edx,esi
  5949. rorx edi,ebx,2
  5950. rorx esi,ebx,13
  5951. vpshufd xmm7,xmm6,232
  5952. lea edx,DWORD PTR [ecx*1+edx]
  5953. rorx ecx,ebx,22
  5954. xor esi,edi
  5955. vpslldq xmm7,xmm7,8
  5956. mov edi,DWORD PTR 24[esp]
  5957. xor ecx,esi
  5958. xor ebx,edi
  5959. vpaddd xmm0,xmm0,xmm7
  5960. add edx,DWORD PTR 16[esp]
  5961. and eax,ebx
  5962. add edx,DWORD PTR 44[esp]
  5963. vpaddd xmm6,xmm0,XMMWORD PTR [ebp]
  5964. xor eax,edi
  5965. add ecx,edx
  5966. add edx,DWORD PTR [esp]
  5967. lea eax,DWORD PTR [ecx*1+eax]
  5968. vmovdqa XMMWORD PTR 32[esp],xmm6
  5969. vpalignr xmm4,xmm2,xmm1,4
  5970. rorx ecx,edx,6
  5971. rorx esi,edx,11
  5972. mov DWORD PTR [esp],edx
  5973. vpalignr xmm7,xmm0,xmm3,4
  5974. rorx edi,edx,25
  5975. xor ecx,esi
  5976. andn esi,edx,DWORD PTR 8[esp]
  5977. vpsrld xmm6,xmm4,7
  5978. xor ecx,edi
  5979. and edx,DWORD PTR 4[esp]
  5980. mov DWORD PTR 16[esp],eax
  5981. vpaddd xmm1,xmm1,xmm7
  5982. or edx,esi
  5983. rorx edi,eax,2
  5984. rorx esi,eax,13
  5985. vpsrld xmm7,xmm4,3
  5986. lea edx,DWORD PTR [ecx*1+edx]
  5987. rorx ecx,eax,22
  5988. xor esi,edi
  5989. vpslld xmm5,xmm4,14
  5990. mov edi,DWORD PTR 20[esp]
  5991. xor ecx,esi
  5992. xor eax,edi
  5993. vpxor xmm4,xmm7,xmm6
  5994. add edx,DWORD PTR 12[esp]
  5995. and ebx,eax
  5996. add edx,DWORD PTR 48[esp]
  5997. vpshufd xmm7,xmm0,250
  5998. xor ebx,edi
  5999. add ecx,edx
  6000. add edx,DWORD PTR 28[esp]
  6001. vpsrld xmm6,xmm6,11
  6002. lea ebx,DWORD PTR [ecx*1+ebx]
  6003. rorx ecx,edx,6
  6004. rorx esi,edx,11
  6005. vpxor xmm4,xmm4,xmm5
  6006. mov DWORD PTR 28[esp],edx
  6007. rorx edi,edx,25
  6008. xor ecx,esi
  6009. vpslld xmm5,xmm5,11
  6010. andn esi,edx,DWORD PTR 4[esp]
  6011. xor ecx,edi
  6012. and edx,DWORD PTR [esp]
  6013. vpxor xmm4,xmm4,xmm6
  6014. mov DWORD PTR 12[esp],ebx
  6015. or edx,esi
  6016. rorx edi,ebx,2
  6017. rorx esi,ebx,13
  6018. vpsrld xmm6,xmm7,10
  6019. lea edx,DWORD PTR [ecx*1+edx]
  6020. rorx ecx,ebx,22
  6021. xor esi,edi
  6022. vpxor xmm4,xmm4,xmm5
  6023. mov edi,DWORD PTR 16[esp]
  6024. xor ecx,esi
  6025. xor ebx,edi
  6026. vpsrlq xmm5,xmm7,17
  6027. add edx,DWORD PTR 8[esp]
  6028. and eax,ebx
  6029. add edx,DWORD PTR 52[esp]
  6030. vpaddd xmm1,xmm1,xmm4
  6031. xor eax,edi
  6032. add ecx,edx
  6033. add edx,DWORD PTR 24[esp]
  6034. vpxor xmm6,xmm6,xmm5
  6035. lea eax,DWORD PTR [ecx*1+eax]
  6036. rorx ecx,edx,6
  6037. rorx esi,edx,11
  6038. vpsrlq xmm7,xmm7,19
  6039. mov DWORD PTR 24[esp],edx
  6040. rorx edi,edx,25
  6041. xor ecx,esi
  6042. vpxor xmm6,xmm6,xmm7
  6043. andn esi,edx,DWORD PTR [esp]
  6044. xor ecx,edi
  6045. and edx,DWORD PTR 28[esp]
  6046. vpshufd xmm7,xmm6,132
  6047. mov DWORD PTR 8[esp],eax
  6048. or edx,esi
  6049. rorx edi,eax,2
  6050. rorx esi,eax,13
  6051. vpsrldq xmm7,xmm7,8
  6052. lea edx,DWORD PTR [ecx*1+edx]
  6053. rorx ecx,eax,22
  6054. xor esi,edi
  6055. vpaddd xmm1,xmm1,xmm7
  6056. mov edi,DWORD PTR 12[esp]
  6057. xor ecx,esi
  6058. xor eax,edi
  6059. vpshufd xmm7,xmm1,80
  6060. add edx,DWORD PTR 4[esp]
  6061. and ebx,eax
  6062. add edx,DWORD PTR 56[esp]
  6063. vpsrld xmm6,xmm7,10
  6064. xor ebx,edi
  6065. add ecx,edx
  6066. add edx,DWORD PTR 20[esp]
  6067. vpsrlq xmm5,xmm7,17
  6068. lea ebx,DWORD PTR [ecx*1+ebx]
  6069. rorx ecx,edx,6
  6070. rorx esi,edx,11
  6071. vpxor xmm6,xmm6,xmm5
  6072. mov DWORD PTR 20[esp],edx
  6073. rorx edi,edx,25
  6074. xor ecx,esi
  6075. vpsrlq xmm7,xmm7,19
  6076. andn esi,edx,DWORD PTR 28[esp]
  6077. xor ecx,edi
  6078. and edx,DWORD PTR 24[esp]
  6079. vpxor xmm6,xmm6,xmm7
  6080. mov DWORD PTR 4[esp],ebx
  6081. or edx,esi
  6082. rorx edi,ebx,2
  6083. rorx esi,ebx,13
  6084. vpshufd xmm7,xmm6,232
  6085. lea edx,DWORD PTR [ecx*1+edx]
  6086. rorx ecx,ebx,22
  6087. xor esi,edi
  6088. vpslldq xmm7,xmm7,8
  6089. mov edi,DWORD PTR 8[esp]
  6090. xor ecx,esi
  6091. xor ebx,edi
  6092. vpaddd xmm1,xmm1,xmm7
  6093. add edx,DWORD PTR [esp]
  6094. and eax,ebx
  6095. add edx,DWORD PTR 60[esp]
  6096. vpaddd xmm6,xmm1,XMMWORD PTR 16[ebp]
  6097. xor eax,edi
  6098. add ecx,edx
  6099. add edx,DWORD PTR 16[esp]
  6100. lea eax,DWORD PTR [ecx*1+eax]
  6101. vmovdqa XMMWORD PTR 48[esp],xmm6
  6102. vpalignr xmm4,xmm3,xmm2,4
  6103. rorx ecx,edx,6
  6104. rorx esi,edx,11
  6105. mov DWORD PTR 16[esp],edx
  6106. vpalignr xmm7,xmm1,xmm0,4
  6107. rorx edi,edx,25
  6108. xor ecx,esi
  6109. andn esi,edx,DWORD PTR 24[esp]
  6110. vpsrld xmm6,xmm4,7
  6111. xor ecx,edi
  6112. and edx,DWORD PTR 20[esp]
  6113. mov DWORD PTR [esp],eax
  6114. vpaddd xmm2,xmm2,xmm7
  6115. or edx,esi
  6116. rorx edi,eax,2
  6117. rorx esi,eax,13
  6118. vpsrld xmm7,xmm4,3
  6119. lea edx,DWORD PTR [ecx*1+edx]
  6120. rorx ecx,eax,22
  6121. xor esi,edi
  6122. vpslld xmm5,xmm4,14
  6123. mov edi,DWORD PTR 4[esp]
  6124. xor ecx,esi
  6125. xor eax,edi
  6126. vpxor xmm4,xmm7,xmm6
  6127. add edx,DWORD PTR 28[esp]
  6128. and ebx,eax
  6129. add edx,DWORD PTR 64[esp]
  6130. vpshufd xmm7,xmm1,250
  6131. xor ebx,edi
  6132. add ecx,edx
  6133. add edx,DWORD PTR 12[esp]
  6134. vpsrld xmm6,xmm6,11
  6135. lea ebx,DWORD PTR [ecx*1+ebx]
  6136. rorx ecx,edx,6
  6137. rorx esi,edx,11
  6138. vpxor xmm4,xmm4,xmm5
  6139. mov DWORD PTR 12[esp],edx
  6140. rorx edi,edx,25
  6141. xor ecx,esi
  6142. vpslld xmm5,xmm5,11
  6143. andn esi,edx,DWORD PTR 20[esp]
  6144. xor ecx,edi
  6145. and edx,DWORD PTR 16[esp]
  6146. vpxor xmm4,xmm4,xmm6
  6147. mov DWORD PTR 28[esp],ebx
  6148. or edx,esi
  6149. rorx edi,ebx,2
  6150. rorx esi,ebx,13
  6151. vpsrld xmm6,xmm7,10
  6152. lea edx,DWORD PTR [ecx*1+edx]
  6153. rorx ecx,ebx,22
  6154. xor esi,edi
  6155. vpxor xmm4,xmm4,xmm5
  6156. mov edi,DWORD PTR [esp]
  6157. xor ecx,esi
  6158. xor ebx,edi
  6159. vpsrlq xmm5,xmm7,17
  6160. add edx,DWORD PTR 24[esp]
  6161. and eax,ebx
  6162. add edx,DWORD PTR 68[esp]
  6163. vpaddd xmm2,xmm2,xmm4
  6164. xor eax,edi
  6165. add ecx,edx
  6166. add edx,DWORD PTR 8[esp]
  6167. vpxor xmm6,xmm6,xmm5
  6168. lea eax,DWORD PTR [ecx*1+eax]
  6169. rorx ecx,edx,6
  6170. rorx esi,edx,11
  6171. vpsrlq xmm7,xmm7,19
  6172. mov DWORD PTR 8[esp],edx
  6173. rorx edi,edx,25
  6174. xor ecx,esi
  6175. vpxor xmm6,xmm6,xmm7
  6176. andn esi,edx,DWORD PTR 16[esp]
  6177. xor ecx,edi
  6178. and edx,DWORD PTR 12[esp]
  6179. vpshufd xmm7,xmm6,132
  6180. mov DWORD PTR 24[esp],eax
  6181. or edx,esi
  6182. rorx edi,eax,2
  6183. rorx esi,eax,13
  6184. vpsrldq xmm7,xmm7,8
  6185. lea edx,DWORD PTR [ecx*1+edx]
  6186. rorx ecx,eax,22
  6187. xor esi,edi
  6188. vpaddd xmm2,xmm2,xmm7
  6189. mov edi,DWORD PTR 28[esp]
  6190. xor ecx,esi
  6191. xor eax,edi
  6192. vpshufd xmm7,xmm2,80
  6193. add edx,DWORD PTR 20[esp]
  6194. and ebx,eax
  6195. add edx,DWORD PTR 72[esp]
  6196. vpsrld xmm6,xmm7,10
  6197. xor ebx,edi
  6198. add ecx,edx
  6199. add edx,DWORD PTR 4[esp]
  6200. vpsrlq xmm5,xmm7,17
  6201. lea ebx,DWORD PTR [ecx*1+ebx]
  6202. rorx ecx,edx,6
  6203. rorx esi,edx,11
  6204. vpxor xmm6,xmm6,xmm5
  6205. mov DWORD PTR 4[esp],edx
  6206. rorx edi,edx,25
  6207. xor ecx,esi
  6208. vpsrlq xmm7,xmm7,19
  6209. andn esi,edx,DWORD PTR 12[esp]
  6210. xor ecx,edi
  6211. and edx,DWORD PTR 8[esp]
  6212. vpxor xmm6,xmm6,xmm7
  6213. mov DWORD PTR 20[esp],ebx
  6214. or edx,esi
  6215. rorx edi,ebx,2
  6216. rorx esi,ebx,13
  6217. vpshufd xmm7,xmm6,232
  6218. lea edx,DWORD PTR [ecx*1+edx]
  6219. rorx ecx,ebx,22
  6220. xor esi,edi
  6221. vpslldq xmm7,xmm7,8
  6222. mov edi,DWORD PTR 24[esp]
  6223. xor ecx,esi
  6224. xor ebx,edi
  6225. vpaddd xmm2,xmm2,xmm7
  6226. add edx,DWORD PTR 16[esp]
  6227. and eax,ebx
  6228. add edx,DWORD PTR 76[esp]
  6229. vpaddd xmm6,xmm2,XMMWORD PTR 32[ebp]
  6230. xor eax,edi
  6231. add ecx,edx
  6232. add edx,DWORD PTR [esp]
  6233. lea eax,DWORD PTR [ecx*1+eax]
  6234. vmovdqa XMMWORD PTR 64[esp],xmm6
  6235. vpalignr xmm4,xmm0,xmm3,4
  6236. rorx ecx,edx,6
  6237. rorx esi,edx,11
  6238. mov DWORD PTR [esp],edx
  6239. vpalignr xmm7,xmm2,xmm1,4
  6240. rorx edi,edx,25
  6241. xor ecx,esi
  6242. andn esi,edx,DWORD PTR 8[esp]
  6243. vpsrld xmm6,xmm4,7
  6244. xor ecx,edi
  6245. and edx,DWORD PTR 4[esp]
  6246. mov DWORD PTR 16[esp],eax
  6247. vpaddd xmm3,xmm3,xmm7
  6248. or edx,esi
  6249. rorx edi,eax,2
  6250. rorx esi,eax,13
  6251. vpsrld xmm7,xmm4,3
  6252. lea edx,DWORD PTR [ecx*1+edx]
  6253. rorx ecx,eax,22
  6254. xor esi,edi
  6255. vpslld xmm5,xmm4,14
  6256. mov edi,DWORD PTR 20[esp]
  6257. xor ecx,esi
  6258. xor eax,edi
  6259. vpxor xmm4,xmm7,xmm6
  6260. add edx,DWORD PTR 12[esp]
  6261. and ebx,eax
  6262. add edx,DWORD PTR 80[esp]
  6263. vpshufd xmm7,xmm2,250
  6264. xor ebx,edi
  6265. add ecx,edx
  6266. add edx,DWORD PTR 28[esp]
  6267. vpsrld xmm6,xmm6,11
  6268. lea ebx,DWORD PTR [ecx*1+ebx]
  6269. rorx ecx,edx,6
  6270. rorx esi,edx,11
  6271. vpxor xmm4,xmm4,xmm5
  6272. mov DWORD PTR 28[esp],edx
  6273. rorx edi,edx,25
  6274. xor ecx,esi
  6275. vpslld xmm5,xmm5,11
  6276. andn esi,edx,DWORD PTR 4[esp]
  6277. xor ecx,edi
  6278. and edx,DWORD PTR [esp]
  6279. vpxor xmm4,xmm4,xmm6
  6280. mov DWORD PTR 12[esp],ebx
  6281. or edx,esi
  6282. rorx edi,ebx,2
  6283. rorx esi,ebx,13
  6284. vpsrld xmm6,xmm7,10
  6285. lea edx,DWORD PTR [ecx*1+edx]
  6286. rorx ecx,ebx,22
  6287. xor esi,edi
  6288. vpxor xmm4,xmm4,xmm5
  6289. mov edi,DWORD PTR 16[esp]
  6290. xor ecx,esi
  6291. xor ebx,edi
  6292. vpsrlq xmm5,xmm7,17
  6293. add edx,DWORD PTR 8[esp]
  6294. and eax,ebx
  6295. add edx,DWORD PTR 84[esp]
  6296. vpaddd xmm3,xmm3,xmm4
  6297. xor eax,edi
  6298. add ecx,edx
  6299. add edx,DWORD PTR 24[esp]
  6300. vpxor xmm6,xmm6,xmm5
  6301. lea eax,DWORD PTR [ecx*1+eax]
  6302. rorx ecx,edx,6
  6303. rorx esi,edx,11
  6304. vpsrlq xmm7,xmm7,19
  6305. mov DWORD PTR 24[esp],edx
  6306. rorx edi,edx,25
  6307. xor ecx,esi
  6308. vpxor xmm6,xmm6,xmm7
  6309. andn esi,edx,DWORD PTR [esp]
  6310. xor ecx,edi
  6311. and edx,DWORD PTR 28[esp]
  6312. vpshufd xmm7,xmm6,132
  6313. mov DWORD PTR 8[esp],eax
  6314. or edx,esi
  6315. rorx edi,eax,2
  6316. rorx esi,eax,13
  6317. vpsrldq xmm7,xmm7,8
  6318. lea edx,DWORD PTR [ecx*1+edx]
  6319. rorx ecx,eax,22
  6320. xor esi,edi
  6321. vpaddd xmm3,xmm3,xmm7
  6322. mov edi,DWORD PTR 12[esp]
  6323. xor ecx,esi
  6324. xor eax,edi
  6325. vpshufd xmm7,xmm3,80
  6326. add edx,DWORD PTR 4[esp]
  6327. and ebx,eax
  6328. add edx,DWORD PTR 88[esp]
  6329. vpsrld xmm6,xmm7,10
  6330. xor ebx,edi
  6331. add ecx,edx
  6332. add edx,DWORD PTR 20[esp]
  6333. vpsrlq xmm5,xmm7,17
  6334. lea ebx,DWORD PTR [ecx*1+ebx]
  6335. rorx ecx,edx,6
  6336. rorx esi,edx,11
  6337. vpxor xmm6,xmm6,xmm5
  6338. mov DWORD PTR 20[esp],edx
  6339. rorx edi,edx,25
  6340. xor ecx,esi
  6341. vpsrlq xmm7,xmm7,19
  6342. andn esi,edx,DWORD PTR 28[esp]
  6343. xor ecx,edi
  6344. and edx,DWORD PTR 24[esp]
  6345. vpxor xmm6,xmm6,xmm7
  6346. mov DWORD PTR 4[esp],ebx
  6347. or edx,esi
  6348. rorx edi,ebx,2
  6349. rorx esi,ebx,13
  6350. vpshufd xmm7,xmm6,232
  6351. lea edx,DWORD PTR [ecx*1+edx]
  6352. rorx ecx,ebx,22
  6353. xor esi,edi
  6354. vpslldq xmm7,xmm7,8
  6355. mov edi,DWORD PTR 8[esp]
  6356. xor ecx,esi
  6357. xor ebx,edi
  6358. vpaddd xmm3,xmm3,xmm7
  6359. add edx,DWORD PTR [esp]
  6360. and eax,ebx
  6361. add edx,DWORD PTR 92[esp]
  6362. vpaddd xmm6,xmm3,XMMWORD PTR 48[ebp]
  6363. xor eax,edi
  6364. add ecx,edx
  6365. add edx,DWORD PTR 16[esp]
  6366. lea eax,DWORD PTR [ecx*1+eax]
  6367. vmovdqa XMMWORD PTR 80[esp],xmm6
  6368. cmp DWORD PTR 64[ebp],66051
  6369. jne $L018avx_bmi_00_47
  6370. rorx ecx,edx,6
  6371. rorx esi,edx,11
  6372. mov DWORD PTR 16[esp],edx
  6373. rorx edi,edx,25
  6374. xor ecx,esi
  6375. andn esi,edx,DWORD PTR 24[esp]
  6376. xor ecx,edi
  6377. and edx,DWORD PTR 20[esp]
  6378. mov DWORD PTR [esp],eax
  6379. or edx,esi
  6380. rorx edi,eax,2
  6381. rorx esi,eax,13
  6382. lea edx,DWORD PTR [ecx*1+edx]
  6383. rorx ecx,eax,22
  6384. xor esi,edi
  6385. mov edi,DWORD PTR 4[esp]
  6386. xor ecx,esi
  6387. xor eax,edi
  6388. add edx,DWORD PTR 28[esp]
  6389. and ebx,eax
  6390. add edx,DWORD PTR 32[esp]
  6391. xor ebx,edi
  6392. add ecx,edx
  6393. add edx,DWORD PTR 12[esp]
  6394. lea ebx,DWORD PTR [ecx*1+ebx]
  6395. rorx ecx,edx,6
  6396. rorx esi,edx,11
  6397. mov DWORD PTR 12[esp],edx
  6398. rorx edi,edx,25
  6399. xor ecx,esi
  6400. andn esi,edx,DWORD PTR 20[esp]
  6401. xor ecx,edi
  6402. and edx,DWORD PTR 16[esp]
  6403. mov DWORD PTR 28[esp],ebx
  6404. or edx,esi
  6405. rorx edi,ebx,2
  6406. rorx esi,ebx,13
  6407. lea edx,DWORD PTR [ecx*1+edx]
  6408. rorx ecx,ebx,22
  6409. xor esi,edi
  6410. mov edi,DWORD PTR [esp]
  6411. xor ecx,esi
  6412. xor ebx,edi
  6413. add edx,DWORD PTR 24[esp]
  6414. and eax,ebx
  6415. add edx,DWORD PTR 36[esp]
  6416. xor eax,edi
  6417. add ecx,edx
  6418. add edx,DWORD PTR 8[esp]
  6419. lea eax,DWORD PTR [ecx*1+eax]
  6420. rorx ecx,edx,6
  6421. rorx esi,edx,11
  6422. mov DWORD PTR 8[esp],edx
  6423. rorx edi,edx,25
  6424. xor ecx,esi
  6425. andn esi,edx,DWORD PTR 16[esp]
  6426. xor ecx,edi
  6427. and edx,DWORD PTR 12[esp]
  6428. mov DWORD PTR 24[esp],eax
  6429. or edx,esi
  6430. rorx edi,eax,2
  6431. rorx esi,eax,13
  6432. lea edx,DWORD PTR [ecx*1+edx]
  6433. rorx ecx,eax,22
  6434. xor esi,edi
  6435. mov edi,DWORD PTR 28[esp]
  6436. xor ecx,esi
  6437. xor eax,edi
  6438. add edx,DWORD PTR 20[esp]
  6439. and ebx,eax
  6440. add edx,DWORD PTR 40[esp]
  6441. xor ebx,edi
  6442. add ecx,edx
  6443. add edx,DWORD PTR 4[esp]
  6444. lea ebx,DWORD PTR [ecx*1+ebx]
  6445. rorx ecx,edx,6
  6446. rorx esi,edx,11
  6447. mov DWORD PTR 4[esp],edx
  6448. rorx edi,edx,25
  6449. xor ecx,esi
  6450. andn esi,edx,DWORD PTR 12[esp]
  6451. xor ecx,edi
  6452. and edx,DWORD PTR 8[esp]
  6453. mov DWORD PTR 20[esp],ebx
  6454. or edx,esi
  6455. rorx edi,ebx,2
  6456. rorx esi,ebx,13
  6457. lea edx,DWORD PTR [ecx*1+edx]
  6458. rorx ecx,ebx,22
  6459. xor esi,edi
  6460. mov edi,DWORD PTR 24[esp]
  6461. xor ecx,esi
  6462. xor ebx,edi
  6463. add edx,DWORD PTR 16[esp]
  6464. and eax,ebx
  6465. add edx,DWORD PTR 44[esp]
  6466. xor eax,edi
  6467. add ecx,edx
  6468. add edx,DWORD PTR [esp]
  6469. lea eax,DWORD PTR [ecx*1+eax]
  6470. rorx ecx,edx,6
  6471. rorx esi,edx,11
  6472. mov DWORD PTR [esp],edx
  6473. rorx edi,edx,25
  6474. xor ecx,esi
  6475. andn esi,edx,DWORD PTR 8[esp]
  6476. xor ecx,edi
  6477. and edx,DWORD PTR 4[esp]
  6478. mov DWORD PTR 16[esp],eax
  6479. or edx,esi
  6480. rorx edi,eax,2
  6481. rorx esi,eax,13
  6482. lea edx,DWORD PTR [ecx*1+edx]
  6483. rorx ecx,eax,22
  6484. xor esi,edi
  6485. mov edi,DWORD PTR 20[esp]
  6486. xor ecx,esi
  6487. xor eax,edi
  6488. add edx,DWORD PTR 12[esp]
  6489. and ebx,eax
  6490. add edx,DWORD PTR 48[esp]
  6491. xor ebx,edi
  6492. add ecx,edx
  6493. add edx,DWORD PTR 28[esp]
  6494. lea ebx,DWORD PTR [ecx*1+ebx]
  6495. rorx ecx,edx,6
  6496. rorx esi,edx,11
  6497. mov DWORD PTR 28[esp],edx
  6498. rorx edi,edx,25
  6499. xor ecx,esi
  6500. andn esi,edx,DWORD PTR 4[esp]
  6501. xor ecx,edi
  6502. and edx,DWORD PTR [esp]
  6503. mov DWORD PTR 12[esp],ebx
  6504. or edx,esi
  6505. rorx edi,ebx,2
  6506. rorx esi,ebx,13
  6507. lea edx,DWORD PTR [ecx*1+edx]
  6508. rorx ecx,ebx,22
  6509. xor esi,edi
  6510. mov edi,DWORD PTR 16[esp]
  6511. xor ecx,esi
  6512. xor ebx,edi
  6513. add edx,DWORD PTR 8[esp]
  6514. and eax,ebx
  6515. add edx,DWORD PTR 52[esp]
  6516. xor eax,edi
  6517. add ecx,edx
  6518. add edx,DWORD PTR 24[esp]
  6519. lea eax,DWORD PTR [ecx*1+eax]
  6520. rorx ecx,edx,6
  6521. rorx esi,edx,11
  6522. mov DWORD PTR 24[esp],edx
  6523. rorx edi,edx,25
  6524. xor ecx,esi
  6525. andn esi,edx,DWORD PTR [esp]
  6526. xor ecx,edi
  6527. and edx,DWORD PTR 28[esp]
  6528. mov DWORD PTR 8[esp],eax
  6529. or edx,esi
  6530. rorx edi,eax,2
  6531. rorx esi,eax,13
  6532. lea edx,DWORD PTR [ecx*1+edx]
  6533. rorx ecx,eax,22
  6534. xor esi,edi
  6535. mov edi,DWORD PTR 12[esp]
  6536. xor ecx,esi
  6537. xor eax,edi
  6538. add edx,DWORD PTR 4[esp]
  6539. and ebx,eax
  6540. add edx,DWORD PTR 56[esp]
  6541. xor ebx,edi
  6542. add ecx,edx
  6543. add edx,DWORD PTR 20[esp]
  6544. lea ebx,DWORD PTR [ecx*1+ebx]
  6545. rorx ecx,edx,6
  6546. rorx esi,edx,11
  6547. mov DWORD PTR 20[esp],edx
  6548. rorx edi,edx,25
  6549. xor ecx,esi
  6550. andn esi,edx,DWORD PTR 28[esp]
  6551. xor ecx,edi
  6552. and edx,DWORD PTR 24[esp]
  6553. mov DWORD PTR 4[esp],ebx
  6554. or edx,esi
  6555. rorx edi,ebx,2
  6556. rorx esi,ebx,13
  6557. lea edx,DWORD PTR [ecx*1+edx]
  6558. rorx ecx,ebx,22
  6559. xor esi,edi
  6560. mov edi,DWORD PTR 8[esp]
  6561. xor ecx,esi
  6562. xor ebx,edi
  6563. add edx,DWORD PTR [esp]
  6564. and eax,ebx
  6565. add edx,DWORD PTR 60[esp]
  6566. xor eax,edi
  6567. add ecx,edx
  6568. add edx,DWORD PTR 16[esp]
  6569. lea eax,DWORD PTR [ecx*1+eax]
  6570. rorx ecx,edx,6
  6571. rorx esi,edx,11
  6572. mov DWORD PTR 16[esp],edx
  6573. rorx edi,edx,25
  6574. xor ecx,esi
  6575. andn esi,edx,DWORD PTR 24[esp]
  6576. xor ecx,edi
  6577. and edx,DWORD PTR 20[esp]
  6578. mov DWORD PTR [esp],eax
  6579. or edx,esi
  6580. rorx edi,eax,2
  6581. rorx esi,eax,13
  6582. lea edx,DWORD PTR [ecx*1+edx]
  6583. rorx ecx,eax,22
  6584. xor esi,edi
  6585. mov edi,DWORD PTR 4[esp]
  6586. xor ecx,esi
  6587. xor eax,edi
  6588. add edx,DWORD PTR 28[esp]
  6589. and ebx,eax
  6590. add edx,DWORD PTR 64[esp]
  6591. xor ebx,edi
  6592. add ecx,edx
  6593. add edx,DWORD PTR 12[esp]
  6594. lea ebx,DWORD PTR [ecx*1+ebx]
  6595. rorx ecx,edx,6
  6596. rorx esi,edx,11
  6597. mov DWORD PTR 12[esp],edx
  6598. rorx edi,edx,25
  6599. xor ecx,esi
  6600. andn esi,edx,DWORD PTR 20[esp]
  6601. xor ecx,edi
  6602. and edx,DWORD PTR 16[esp]
  6603. mov DWORD PTR 28[esp],ebx
  6604. or edx,esi
  6605. rorx edi,ebx,2
  6606. rorx esi,ebx,13
  6607. lea edx,DWORD PTR [ecx*1+edx]
  6608. rorx ecx,ebx,22
  6609. xor esi,edi
  6610. mov edi,DWORD PTR [esp]
  6611. xor ecx,esi
  6612. xor ebx,edi
  6613. add edx,DWORD PTR 24[esp]
  6614. and eax,ebx
  6615. add edx,DWORD PTR 68[esp]
  6616. xor eax,edi
  6617. add ecx,edx
  6618. add edx,DWORD PTR 8[esp]
  6619. lea eax,DWORD PTR [ecx*1+eax]
  6620. rorx ecx,edx,6
  6621. rorx esi,edx,11
  6622. mov DWORD PTR 8[esp],edx
  6623. rorx edi,edx,25
  6624. xor ecx,esi
  6625. andn esi,edx,DWORD PTR 16[esp]
  6626. xor ecx,edi
  6627. and edx,DWORD PTR 12[esp]
  6628. mov DWORD PTR 24[esp],eax
  6629. or edx,esi
  6630. rorx edi,eax,2
  6631. rorx esi,eax,13
  6632. lea edx,DWORD PTR [ecx*1+edx]
  6633. rorx ecx,eax,22
  6634. xor esi,edi
  6635. mov edi,DWORD PTR 28[esp]
  6636. xor ecx,esi
  6637. xor eax,edi
  6638. add edx,DWORD PTR 20[esp]
  6639. and ebx,eax
  6640. add edx,DWORD PTR 72[esp]
  6641. xor ebx,edi
  6642. add ecx,edx
  6643. add edx,DWORD PTR 4[esp]
  6644. lea ebx,DWORD PTR [ecx*1+ebx]
  6645. rorx ecx,edx,6
  6646. rorx esi,edx,11
  6647. mov DWORD PTR 4[esp],edx
  6648. rorx edi,edx,25
  6649. xor ecx,esi
  6650. andn esi,edx,DWORD PTR 12[esp]
  6651. xor ecx,edi
  6652. and edx,DWORD PTR 8[esp]
  6653. mov DWORD PTR 20[esp],ebx
  6654. or edx,esi
  6655. rorx edi,ebx,2
  6656. rorx esi,ebx,13
  6657. lea edx,DWORD PTR [ecx*1+edx]
  6658. rorx ecx,ebx,22
  6659. xor esi,edi
  6660. mov edi,DWORD PTR 24[esp]
  6661. xor ecx,esi
  6662. xor ebx,edi
  6663. add edx,DWORD PTR 16[esp]
  6664. and eax,ebx
  6665. add edx,DWORD PTR 76[esp]
  6666. xor eax,edi
  6667. add ecx,edx
  6668. add edx,DWORD PTR [esp]
  6669. lea eax,DWORD PTR [ecx*1+eax]
  6670. rorx ecx,edx,6
  6671. rorx esi,edx,11
  6672. mov DWORD PTR [esp],edx
  6673. rorx edi,edx,25
  6674. xor ecx,esi
  6675. andn esi,edx,DWORD PTR 8[esp]
  6676. xor ecx,edi
  6677. and edx,DWORD PTR 4[esp]
  6678. mov DWORD PTR 16[esp],eax
  6679. or edx,esi
  6680. rorx edi,eax,2
  6681. rorx esi,eax,13
  6682. lea edx,DWORD PTR [ecx*1+edx]
  6683. rorx ecx,eax,22
  6684. xor esi,edi
  6685. mov edi,DWORD PTR 20[esp]
  6686. xor ecx,esi
  6687. xor eax,edi
  6688. add edx,DWORD PTR 12[esp]
  6689. and ebx,eax
  6690. add edx,DWORD PTR 80[esp]
  6691. xor ebx,edi
  6692. add ecx,edx
  6693. add edx,DWORD PTR 28[esp]
  6694. lea ebx,DWORD PTR [ecx*1+ebx]
  6695. rorx ecx,edx,6
  6696. rorx esi,edx,11
  6697. mov DWORD PTR 28[esp],edx
  6698. rorx edi,edx,25
  6699. xor ecx,esi
  6700. andn esi,edx,DWORD PTR 4[esp]
  6701. xor ecx,edi
  6702. and edx,DWORD PTR [esp]
  6703. mov DWORD PTR 12[esp],ebx
  6704. or edx,esi
  6705. rorx edi,ebx,2
  6706. rorx esi,ebx,13
  6707. lea edx,DWORD PTR [ecx*1+edx]
  6708. rorx ecx,ebx,22
  6709. xor esi,edi
  6710. mov edi,DWORD PTR 16[esp]
  6711. xor ecx,esi
  6712. xor ebx,edi
  6713. add edx,DWORD PTR 8[esp]
  6714. and eax,ebx
  6715. add edx,DWORD PTR 84[esp]
  6716. xor eax,edi
  6717. add ecx,edx
  6718. add edx,DWORD PTR 24[esp]
  6719. lea eax,DWORD PTR [ecx*1+eax]
  6720. rorx ecx,edx,6
  6721. rorx esi,edx,11
  6722. mov DWORD PTR 24[esp],edx
  6723. rorx edi,edx,25
  6724. xor ecx,esi
  6725. andn esi,edx,DWORD PTR [esp]
  6726. xor ecx,edi
  6727. and edx,DWORD PTR 28[esp]
  6728. mov DWORD PTR 8[esp],eax
  6729. or edx,esi
  6730. rorx edi,eax,2
  6731. rorx esi,eax,13
  6732. lea edx,DWORD PTR [ecx*1+edx]
  6733. rorx ecx,eax,22
  6734. xor esi,edi
  6735. mov edi,DWORD PTR 12[esp]
  6736. xor ecx,esi
  6737. xor eax,edi
  6738. add edx,DWORD PTR 4[esp]
  6739. and ebx,eax
  6740. add edx,DWORD PTR 88[esp]
  6741. xor ebx,edi
  6742. add ecx,edx
  6743. add edx,DWORD PTR 20[esp]
  6744. lea ebx,DWORD PTR [ecx*1+ebx]
  6745. rorx ecx,edx,6
  6746. rorx esi,edx,11
  6747. mov DWORD PTR 20[esp],edx
  6748. rorx edi,edx,25
  6749. xor ecx,esi
  6750. andn esi,edx,DWORD PTR 28[esp]
  6751. xor ecx,edi
  6752. and edx,DWORD PTR 24[esp]
  6753. mov DWORD PTR 4[esp],ebx
  6754. or edx,esi
  6755. rorx edi,ebx,2
  6756. rorx esi,ebx,13
  6757. lea edx,DWORD PTR [ecx*1+edx]
  6758. rorx ecx,ebx,22
  6759. xor esi,edi
  6760. mov edi,DWORD PTR 8[esp]
  6761. xor ecx,esi
  6762. xor ebx,edi
  6763. add edx,DWORD PTR [esp]
  6764. and eax,ebx
  6765. add edx,DWORD PTR 92[esp]
  6766. xor eax,edi
  6767. add ecx,edx
  6768. add edx,DWORD PTR 16[esp]
  6769. lea eax,DWORD PTR [ecx*1+eax]
  6770. mov esi,DWORD PTR 96[esp]
  6771. xor ebx,edi
  6772. mov ecx,DWORD PTR 12[esp]
  6773. add eax,DWORD PTR [esi]
  6774. add ebx,DWORD PTR 4[esi]
  6775. add edi,DWORD PTR 8[esi]
  6776. add ecx,DWORD PTR 12[esi]
  6777. mov DWORD PTR [esi],eax
  6778. mov DWORD PTR 4[esi],ebx
  6779. mov DWORD PTR 8[esi],edi
  6780. mov DWORD PTR 12[esi],ecx
  6781. mov DWORD PTR 4[esp],ebx
  6782. xor ebx,edi
  6783. mov DWORD PTR 8[esp],edi
  6784. mov DWORD PTR 12[esp],ecx
  6785. mov edi,DWORD PTR 20[esp]
  6786. mov ecx,DWORD PTR 24[esp]
  6787. add edx,DWORD PTR 16[esi]
  6788. add edi,DWORD PTR 20[esi]
  6789. add ecx,DWORD PTR 24[esi]
  6790. mov DWORD PTR 16[esi],edx
  6791. mov DWORD PTR 20[esi],edi
  6792. mov DWORD PTR 20[esp],edi
  6793. mov edi,DWORD PTR 28[esp]
  6794. mov DWORD PTR 24[esi],ecx
  6795. add edi,DWORD PTR 28[esi]
  6796. mov DWORD PTR 24[esp],ecx
  6797. mov DWORD PTR 28[esi],edi
  6798. mov DWORD PTR 28[esp],edi
  6799. mov edi,DWORD PTR 100[esp]
  6800. vmovdqa xmm7,XMMWORD PTR 64[ebp]
  6801. sub ebp,192
  6802. cmp edi,DWORD PTR 104[esp]
  6803. jb $L017grand_avx_bmi
  6804. mov esp,DWORD PTR 108[esp]
  6805. vzeroall
  6806. pop edi
  6807. pop esi
  6808. pop ebx
  6809. pop ebp
  6810. ret
  6811. _sha256_block_data_order ENDP
  6812. .text$ ENDS
  6813. .bss SEGMENT 'BSS'
  6814. COMM _OPENSSL_ia32cap_P:DWORD:4
  6815. .bss ENDS
  6816. END