sha256-586.asm 90 KB

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