sha1-586.masm 72 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272327332743275327632773278327932803281328232833284328532863287328832893290329132923293329432953296329732983299330033013302330333043305330633073308330933103311331233133314331533163317331833193320332133223323332433253326332733283329333033313332333333343335333633373338333933403341334233433344334533463347334833493350335133523353335433553356335733583359336033613362336333643365336633673368336933703371337233733374337533763377337833793380338133823383338433853386338733883389339033913392339333943395339633973398339934003401340234033404340534063407340834093410341134123413341434153416341734183419342034213422342334243425342634273428342934303431343234333434343534363437343834393440344134423443344434453446344734483449345034513452345334543455345634573458345934603461346234633464346534663467346834693470347134723473347434753476347734783479348034813482348334843485348634873488348934903491349234933494349534963497349834993500350135023503350435053506350735083509351035113512351335143515351635173518351935203521352235233524352535263527352835293530353135323533353435353536353735383539354035413542354335443545354635473548354935503551355235533554355535563557355835593560356135623563356435653566356735683569357035713572357335743575357635773578357935803581358235833584358535863587358835893590359135923593359435953596359735983599360036013602360336043605360636073608360936103611361236133614361536163617361836193620362136223623362436253626362736283629363036313632363336343635363636373638363936403641364236433644364536463647364836493650365136523653365436553656365736583659366036613662366336643665366636673668366936703671367236733674367536763677367836793680368136823683368436853686368736883689369036913692369336943695369636973698369937003701370237033704370537063707370837093710371137123713371437153716371737183719372037213722372337243725372637273728372937303731373237333734373537363737373837393740374137423743374437453746374737483749375037513752375337543755375637573758375937603761376237633764376537663767376837693770377137723773377437753776377737783779378037813782378337843785378637873788378937903791379237933794379537963797379837993800380138023803380438053806380738083809381038113812381338143815381638173818381938203821382238233824382538263827382838293830383138323833383438353836383738383839384038413842384338443845384638473848384938503851385238533854385538563857385838593860386138623863386438653866386738683869387038713872387338743875387638773878387938803881388238833884388538863887388838893890389138923893389438953896389738983899390039013902390339043905390639073908390939103911391239133914391539163917391839193920392139223923392439253926392739283929393039313932393339343935393639373938393939403941394239433944394539463947394839493950395139523953395439553956395739583959396039613962396339643965396639673968396939703971397239733974397539763977397839793980398139823983398439853986
  1. IF @Version LT 800
  2. ECHO MASM version 8.00 or later is strongly recommended.
  3. ENDIF
  4. .686
  5. .XMM
  6. IF @Version LT 800
  7. XMMWORD STRUCT 16
  8. DQ 2 dup (?)
  9. XMMWORD ENDS
  10. ENDIF
  11. .MODEL FLAT
  12. OPTION DOTNAME
  13. IF @Version LT 800
  14. .text$ SEGMENT PAGE 'CODE'
  15. ELSE
  16. .text$ SEGMENT ALIGN(64) 'CODE'
  17. ENDIF
  18. ;EXTERN _OPENSSL_ia32cap_P:NEAR
  19. ALIGN 16
  20. _sha1_block_data_order PROC PUBLIC
  21. $L_sha1_block_data_order_begin::
  22. push ebp
  23. push ebx
  24. push esi
  25. push edi
  26. call $L000pic_point
  27. $L000pic_point:
  28. pop ebp
  29. lea esi,DWORD PTR _OPENSSL_ia32cap_P
  30. lea ebp,DWORD PTR ($LK_XX_XX-$L000pic_point)[ebp]
  31. mov eax,DWORD PTR [esi]
  32. mov edx,DWORD PTR 4[esi]
  33. test edx,512
  34. jz $L001x86
  35. mov ecx,DWORD PTR 8[esi]
  36. test eax,16777216
  37. jz $L001x86
  38. test ecx,536870912
  39. jnz $Lshaext_shortcut
  40. and edx,268435456
  41. and eax,1073741824
  42. or eax,edx
  43. cmp eax,1342177280
  44. je $Lavx_shortcut
  45. jmp $Lssse3_shortcut
  46. ALIGN 16
  47. $L001x86:
  48. mov ebp,DWORD PTR 20[esp]
  49. mov esi,DWORD PTR 24[esp]
  50. mov eax,DWORD PTR 28[esp]
  51. sub esp,76
  52. shl eax,6
  53. add eax,esi
  54. mov DWORD PTR 104[esp],eax
  55. mov edi,DWORD PTR 16[ebp]
  56. jmp $L002loop
  57. ALIGN 16
  58. $L002loop:
  59. mov eax,DWORD PTR [esi]
  60. mov ebx,DWORD PTR 4[esi]
  61. mov ecx,DWORD PTR 8[esi]
  62. mov edx,DWORD PTR 12[esi]
  63. bswap eax
  64. bswap ebx
  65. bswap ecx
  66. bswap edx
  67. mov DWORD PTR [esp],eax
  68. mov DWORD PTR 4[esp],ebx
  69. mov DWORD PTR 8[esp],ecx
  70. mov DWORD PTR 12[esp],edx
  71. mov eax,DWORD PTR 16[esi]
  72. mov ebx,DWORD PTR 20[esi]
  73. mov ecx,DWORD PTR 24[esi]
  74. mov edx,DWORD PTR 28[esi]
  75. bswap eax
  76. bswap ebx
  77. bswap ecx
  78. bswap edx
  79. mov DWORD PTR 16[esp],eax
  80. mov DWORD PTR 20[esp],ebx
  81. mov DWORD PTR 24[esp],ecx
  82. mov DWORD PTR 28[esp],edx
  83. mov eax,DWORD PTR 32[esi]
  84. mov ebx,DWORD PTR 36[esi]
  85. mov ecx,DWORD PTR 40[esi]
  86. mov edx,DWORD PTR 44[esi]
  87. bswap eax
  88. bswap ebx
  89. bswap ecx
  90. bswap edx
  91. mov DWORD PTR 32[esp],eax
  92. mov DWORD PTR 36[esp],ebx
  93. mov DWORD PTR 40[esp],ecx
  94. mov DWORD PTR 44[esp],edx
  95. mov eax,DWORD PTR 48[esi]
  96. mov ebx,DWORD PTR 52[esi]
  97. mov ecx,DWORD PTR 56[esi]
  98. mov edx,DWORD PTR 60[esi]
  99. bswap eax
  100. bswap ebx
  101. bswap ecx
  102. bswap edx
  103. mov DWORD PTR 48[esp],eax
  104. mov DWORD PTR 52[esp],ebx
  105. mov DWORD PTR 56[esp],ecx
  106. mov DWORD PTR 60[esp],edx
  107. mov DWORD PTR 100[esp],esi
  108. mov eax,DWORD PTR [ebp]
  109. mov ebx,DWORD PTR 4[ebp]
  110. mov ecx,DWORD PTR 8[ebp]
  111. mov edx,DWORD PTR 12[ebp]
  112. ; 00_15 0
  113. mov esi,ecx
  114. mov ebp,eax
  115. rol ebp,5
  116. xor esi,edx
  117. add ebp,edi
  118. mov edi,DWORD PTR [esp]
  119. and esi,ebx
  120. ror ebx,2
  121. xor esi,edx
  122. lea ebp,DWORD PTR 1518500249[edi*1+ebp]
  123. add ebp,esi
  124. ; 00_15 1
  125. mov edi,ebx
  126. mov esi,ebp
  127. rol ebp,5
  128. xor edi,ecx
  129. add ebp,edx
  130. mov edx,DWORD PTR 4[esp]
  131. and edi,eax
  132. ror eax,2
  133. xor edi,ecx
  134. lea ebp,DWORD PTR 1518500249[edx*1+ebp]
  135. add ebp,edi
  136. ; 00_15 2
  137. mov edx,eax
  138. mov edi,ebp
  139. rol ebp,5
  140. xor edx,ebx
  141. add ebp,ecx
  142. mov ecx,DWORD PTR 8[esp]
  143. and edx,esi
  144. ror esi,2
  145. xor edx,ebx
  146. lea ebp,DWORD PTR 1518500249[ecx*1+ebp]
  147. add ebp,edx
  148. ; 00_15 3
  149. mov ecx,esi
  150. mov edx,ebp
  151. rol ebp,5
  152. xor ecx,eax
  153. add ebp,ebx
  154. mov ebx,DWORD PTR 12[esp]
  155. and ecx,edi
  156. ror edi,2
  157. xor ecx,eax
  158. lea ebp,DWORD PTR 1518500249[ebx*1+ebp]
  159. add ebp,ecx
  160. ; 00_15 4
  161. mov ebx,edi
  162. mov ecx,ebp
  163. rol ebp,5
  164. xor ebx,esi
  165. add ebp,eax
  166. mov eax,DWORD PTR 16[esp]
  167. and ebx,edx
  168. ror edx,2
  169. xor ebx,esi
  170. lea ebp,DWORD PTR 1518500249[eax*1+ebp]
  171. add ebp,ebx
  172. ; 00_15 5
  173. mov eax,edx
  174. mov ebx,ebp
  175. rol ebp,5
  176. xor eax,edi
  177. add ebp,esi
  178. mov esi,DWORD PTR 20[esp]
  179. and eax,ecx
  180. ror ecx,2
  181. xor eax,edi
  182. lea ebp,DWORD PTR 1518500249[esi*1+ebp]
  183. add ebp,eax
  184. ; 00_15 6
  185. mov esi,ecx
  186. mov eax,ebp
  187. rol ebp,5
  188. xor esi,edx
  189. add ebp,edi
  190. mov edi,DWORD PTR 24[esp]
  191. and esi,ebx
  192. ror ebx,2
  193. xor esi,edx
  194. lea ebp,DWORD PTR 1518500249[edi*1+ebp]
  195. add ebp,esi
  196. ; 00_15 7
  197. mov edi,ebx
  198. mov esi,ebp
  199. rol ebp,5
  200. xor edi,ecx
  201. add ebp,edx
  202. mov edx,DWORD PTR 28[esp]
  203. and edi,eax
  204. ror eax,2
  205. xor edi,ecx
  206. lea ebp,DWORD PTR 1518500249[edx*1+ebp]
  207. add ebp,edi
  208. ; 00_15 8
  209. mov edx,eax
  210. mov edi,ebp
  211. rol ebp,5
  212. xor edx,ebx
  213. add ebp,ecx
  214. mov ecx,DWORD PTR 32[esp]
  215. and edx,esi
  216. ror esi,2
  217. xor edx,ebx
  218. lea ebp,DWORD PTR 1518500249[ecx*1+ebp]
  219. add ebp,edx
  220. ; 00_15 9
  221. mov ecx,esi
  222. mov edx,ebp
  223. rol ebp,5
  224. xor ecx,eax
  225. add ebp,ebx
  226. mov ebx,DWORD PTR 36[esp]
  227. and ecx,edi
  228. ror edi,2
  229. xor ecx,eax
  230. lea ebp,DWORD PTR 1518500249[ebx*1+ebp]
  231. add ebp,ecx
  232. ; 00_15 10
  233. mov ebx,edi
  234. mov ecx,ebp
  235. rol ebp,5
  236. xor ebx,esi
  237. add ebp,eax
  238. mov eax,DWORD PTR 40[esp]
  239. and ebx,edx
  240. ror edx,2
  241. xor ebx,esi
  242. lea ebp,DWORD PTR 1518500249[eax*1+ebp]
  243. add ebp,ebx
  244. ; 00_15 11
  245. mov eax,edx
  246. mov ebx,ebp
  247. rol ebp,5
  248. xor eax,edi
  249. add ebp,esi
  250. mov esi,DWORD PTR 44[esp]
  251. and eax,ecx
  252. ror ecx,2
  253. xor eax,edi
  254. lea ebp,DWORD PTR 1518500249[esi*1+ebp]
  255. add ebp,eax
  256. ; 00_15 12
  257. mov esi,ecx
  258. mov eax,ebp
  259. rol ebp,5
  260. xor esi,edx
  261. add ebp,edi
  262. mov edi,DWORD PTR 48[esp]
  263. and esi,ebx
  264. ror ebx,2
  265. xor esi,edx
  266. lea ebp,DWORD PTR 1518500249[edi*1+ebp]
  267. add ebp,esi
  268. ; 00_15 13
  269. mov edi,ebx
  270. mov esi,ebp
  271. rol ebp,5
  272. xor edi,ecx
  273. add ebp,edx
  274. mov edx,DWORD PTR 52[esp]
  275. and edi,eax
  276. ror eax,2
  277. xor edi,ecx
  278. lea ebp,DWORD PTR 1518500249[edx*1+ebp]
  279. add ebp,edi
  280. ; 00_15 14
  281. mov edx,eax
  282. mov edi,ebp
  283. rol ebp,5
  284. xor edx,ebx
  285. add ebp,ecx
  286. mov ecx,DWORD PTR 56[esp]
  287. and edx,esi
  288. ror esi,2
  289. xor edx,ebx
  290. lea ebp,DWORD PTR 1518500249[ecx*1+ebp]
  291. add ebp,edx
  292. ; 00_15 15
  293. mov ecx,esi
  294. mov edx,ebp
  295. rol ebp,5
  296. xor ecx,eax
  297. add ebp,ebx
  298. mov ebx,DWORD PTR 60[esp]
  299. and ecx,edi
  300. ror edi,2
  301. xor ecx,eax
  302. lea ebp,DWORD PTR 1518500249[ebx*1+ebp]
  303. mov ebx,DWORD PTR [esp]
  304. add ecx,ebp
  305. ; 16_19 16
  306. mov ebp,edi
  307. xor ebx,DWORD PTR 8[esp]
  308. xor ebp,esi
  309. xor ebx,DWORD PTR 32[esp]
  310. and ebp,edx
  311. xor ebx,DWORD PTR 52[esp]
  312. rol ebx,1
  313. xor ebp,esi
  314. add eax,ebp
  315. mov ebp,ecx
  316. ror edx,2
  317. mov DWORD PTR [esp],ebx
  318. rol ebp,5
  319. lea ebx,DWORD PTR 1518500249[eax*1+ebx]
  320. mov eax,DWORD PTR 4[esp]
  321. add ebx,ebp
  322. ; 16_19 17
  323. mov ebp,edx
  324. xor eax,DWORD PTR 12[esp]
  325. xor ebp,edi
  326. xor eax,DWORD PTR 36[esp]
  327. and ebp,ecx
  328. xor eax,DWORD PTR 56[esp]
  329. rol eax,1
  330. xor ebp,edi
  331. add esi,ebp
  332. mov ebp,ebx
  333. ror ecx,2
  334. mov DWORD PTR 4[esp],eax
  335. rol ebp,5
  336. lea eax,DWORD PTR 1518500249[esi*1+eax]
  337. mov esi,DWORD PTR 8[esp]
  338. add eax,ebp
  339. ; 16_19 18
  340. mov ebp,ecx
  341. xor esi,DWORD PTR 16[esp]
  342. xor ebp,edx
  343. xor esi,DWORD PTR 40[esp]
  344. and ebp,ebx
  345. xor esi,DWORD PTR 60[esp]
  346. rol esi,1
  347. xor ebp,edx
  348. add edi,ebp
  349. mov ebp,eax
  350. ror ebx,2
  351. mov DWORD PTR 8[esp],esi
  352. rol ebp,5
  353. lea esi,DWORD PTR 1518500249[edi*1+esi]
  354. mov edi,DWORD PTR 12[esp]
  355. add esi,ebp
  356. ; 16_19 19
  357. mov ebp,ebx
  358. xor edi,DWORD PTR 20[esp]
  359. xor ebp,ecx
  360. xor edi,DWORD PTR 44[esp]
  361. and ebp,eax
  362. xor edi,DWORD PTR [esp]
  363. rol edi,1
  364. xor ebp,ecx
  365. add edx,ebp
  366. mov ebp,esi
  367. ror eax,2
  368. mov DWORD PTR 12[esp],edi
  369. rol ebp,5
  370. lea edi,DWORD PTR 1518500249[edx*1+edi]
  371. mov edx,DWORD PTR 16[esp]
  372. add edi,ebp
  373. ; 20_39 20
  374. mov ebp,esi
  375. xor edx,DWORD PTR 24[esp]
  376. xor ebp,eax
  377. xor edx,DWORD PTR 48[esp]
  378. xor ebp,ebx
  379. xor edx,DWORD PTR 4[esp]
  380. rol edx,1
  381. add ecx,ebp
  382. ror esi,2
  383. mov ebp,edi
  384. rol ebp,5
  385. mov DWORD PTR 16[esp],edx
  386. lea edx,DWORD PTR 1859775393[ecx*1+edx]
  387. mov ecx,DWORD PTR 20[esp]
  388. add edx,ebp
  389. ; 20_39 21
  390. mov ebp,edi
  391. xor ecx,DWORD PTR 28[esp]
  392. xor ebp,esi
  393. xor ecx,DWORD PTR 52[esp]
  394. xor ebp,eax
  395. xor ecx,DWORD PTR 8[esp]
  396. rol ecx,1
  397. add ebx,ebp
  398. ror edi,2
  399. mov ebp,edx
  400. rol ebp,5
  401. mov DWORD PTR 20[esp],ecx
  402. lea ecx,DWORD PTR 1859775393[ebx*1+ecx]
  403. mov ebx,DWORD PTR 24[esp]
  404. add ecx,ebp
  405. ; 20_39 22
  406. mov ebp,edx
  407. xor ebx,DWORD PTR 32[esp]
  408. xor ebp,edi
  409. xor ebx,DWORD PTR 56[esp]
  410. xor ebp,esi
  411. xor ebx,DWORD PTR 12[esp]
  412. rol ebx,1
  413. add eax,ebp
  414. ror edx,2
  415. mov ebp,ecx
  416. rol ebp,5
  417. mov DWORD PTR 24[esp],ebx
  418. lea ebx,DWORD PTR 1859775393[eax*1+ebx]
  419. mov eax,DWORD PTR 28[esp]
  420. add ebx,ebp
  421. ; 20_39 23
  422. mov ebp,ecx
  423. xor eax,DWORD PTR 36[esp]
  424. xor ebp,edx
  425. xor eax,DWORD PTR 60[esp]
  426. xor ebp,edi
  427. xor eax,DWORD PTR 16[esp]
  428. rol eax,1
  429. add esi,ebp
  430. ror ecx,2
  431. mov ebp,ebx
  432. rol ebp,5
  433. mov DWORD PTR 28[esp],eax
  434. lea eax,DWORD PTR 1859775393[esi*1+eax]
  435. mov esi,DWORD PTR 32[esp]
  436. add eax,ebp
  437. ; 20_39 24
  438. mov ebp,ebx
  439. xor esi,DWORD PTR 40[esp]
  440. xor ebp,ecx
  441. xor esi,DWORD PTR [esp]
  442. xor ebp,edx
  443. xor esi,DWORD PTR 20[esp]
  444. rol esi,1
  445. add edi,ebp
  446. ror ebx,2
  447. mov ebp,eax
  448. rol ebp,5
  449. mov DWORD PTR 32[esp],esi
  450. lea esi,DWORD PTR 1859775393[edi*1+esi]
  451. mov edi,DWORD PTR 36[esp]
  452. add esi,ebp
  453. ; 20_39 25
  454. mov ebp,eax
  455. xor edi,DWORD PTR 44[esp]
  456. xor ebp,ebx
  457. xor edi,DWORD PTR 4[esp]
  458. xor ebp,ecx
  459. xor edi,DWORD PTR 24[esp]
  460. rol edi,1
  461. add edx,ebp
  462. ror eax,2
  463. mov ebp,esi
  464. rol ebp,5
  465. mov DWORD PTR 36[esp],edi
  466. lea edi,DWORD PTR 1859775393[edx*1+edi]
  467. mov edx,DWORD PTR 40[esp]
  468. add edi,ebp
  469. ; 20_39 26
  470. mov ebp,esi
  471. xor edx,DWORD PTR 48[esp]
  472. xor ebp,eax
  473. xor edx,DWORD PTR 8[esp]
  474. xor ebp,ebx
  475. xor edx,DWORD PTR 28[esp]
  476. rol edx,1
  477. add ecx,ebp
  478. ror esi,2
  479. mov ebp,edi
  480. rol ebp,5
  481. mov DWORD PTR 40[esp],edx
  482. lea edx,DWORD PTR 1859775393[ecx*1+edx]
  483. mov ecx,DWORD PTR 44[esp]
  484. add edx,ebp
  485. ; 20_39 27
  486. mov ebp,edi
  487. xor ecx,DWORD PTR 52[esp]
  488. xor ebp,esi
  489. xor ecx,DWORD PTR 12[esp]
  490. xor ebp,eax
  491. xor ecx,DWORD PTR 32[esp]
  492. rol ecx,1
  493. add ebx,ebp
  494. ror edi,2
  495. mov ebp,edx
  496. rol ebp,5
  497. mov DWORD PTR 44[esp],ecx
  498. lea ecx,DWORD PTR 1859775393[ebx*1+ecx]
  499. mov ebx,DWORD PTR 48[esp]
  500. add ecx,ebp
  501. ; 20_39 28
  502. mov ebp,edx
  503. xor ebx,DWORD PTR 56[esp]
  504. xor ebp,edi
  505. xor ebx,DWORD PTR 16[esp]
  506. xor ebp,esi
  507. xor ebx,DWORD PTR 36[esp]
  508. rol ebx,1
  509. add eax,ebp
  510. ror edx,2
  511. mov ebp,ecx
  512. rol ebp,5
  513. mov DWORD PTR 48[esp],ebx
  514. lea ebx,DWORD PTR 1859775393[eax*1+ebx]
  515. mov eax,DWORD PTR 52[esp]
  516. add ebx,ebp
  517. ; 20_39 29
  518. mov ebp,ecx
  519. xor eax,DWORD PTR 60[esp]
  520. xor ebp,edx
  521. xor eax,DWORD PTR 20[esp]
  522. xor ebp,edi
  523. xor eax,DWORD PTR 40[esp]
  524. rol eax,1
  525. add esi,ebp
  526. ror ecx,2
  527. mov ebp,ebx
  528. rol ebp,5
  529. mov DWORD PTR 52[esp],eax
  530. lea eax,DWORD PTR 1859775393[esi*1+eax]
  531. mov esi,DWORD PTR 56[esp]
  532. add eax,ebp
  533. ; 20_39 30
  534. mov ebp,ebx
  535. xor esi,DWORD PTR [esp]
  536. xor ebp,ecx
  537. xor esi,DWORD PTR 24[esp]
  538. xor ebp,edx
  539. xor esi,DWORD PTR 44[esp]
  540. rol esi,1
  541. add edi,ebp
  542. ror ebx,2
  543. mov ebp,eax
  544. rol ebp,5
  545. mov DWORD PTR 56[esp],esi
  546. lea esi,DWORD PTR 1859775393[edi*1+esi]
  547. mov edi,DWORD PTR 60[esp]
  548. add esi,ebp
  549. ; 20_39 31
  550. mov ebp,eax
  551. xor edi,DWORD PTR 4[esp]
  552. xor ebp,ebx
  553. xor edi,DWORD PTR 28[esp]
  554. xor ebp,ecx
  555. xor edi,DWORD PTR 48[esp]
  556. rol edi,1
  557. add edx,ebp
  558. ror eax,2
  559. mov ebp,esi
  560. rol ebp,5
  561. mov DWORD PTR 60[esp],edi
  562. lea edi,DWORD PTR 1859775393[edx*1+edi]
  563. mov edx,DWORD PTR [esp]
  564. add edi,ebp
  565. ; 20_39 32
  566. mov ebp,esi
  567. xor edx,DWORD PTR 8[esp]
  568. xor ebp,eax
  569. xor edx,DWORD PTR 32[esp]
  570. xor ebp,ebx
  571. xor edx,DWORD PTR 52[esp]
  572. rol edx,1
  573. add ecx,ebp
  574. ror esi,2
  575. mov ebp,edi
  576. rol ebp,5
  577. mov DWORD PTR [esp],edx
  578. lea edx,DWORD PTR 1859775393[ecx*1+edx]
  579. mov ecx,DWORD PTR 4[esp]
  580. add edx,ebp
  581. ; 20_39 33
  582. mov ebp,edi
  583. xor ecx,DWORD PTR 12[esp]
  584. xor ebp,esi
  585. xor ecx,DWORD PTR 36[esp]
  586. xor ebp,eax
  587. xor ecx,DWORD PTR 56[esp]
  588. rol ecx,1
  589. add ebx,ebp
  590. ror edi,2
  591. mov ebp,edx
  592. rol ebp,5
  593. mov DWORD PTR 4[esp],ecx
  594. lea ecx,DWORD PTR 1859775393[ebx*1+ecx]
  595. mov ebx,DWORD PTR 8[esp]
  596. add ecx,ebp
  597. ; 20_39 34
  598. mov ebp,edx
  599. xor ebx,DWORD PTR 16[esp]
  600. xor ebp,edi
  601. xor ebx,DWORD PTR 40[esp]
  602. xor ebp,esi
  603. xor ebx,DWORD PTR 60[esp]
  604. rol ebx,1
  605. add eax,ebp
  606. ror edx,2
  607. mov ebp,ecx
  608. rol ebp,5
  609. mov DWORD PTR 8[esp],ebx
  610. lea ebx,DWORD PTR 1859775393[eax*1+ebx]
  611. mov eax,DWORD PTR 12[esp]
  612. add ebx,ebp
  613. ; 20_39 35
  614. mov ebp,ecx
  615. xor eax,DWORD PTR 20[esp]
  616. xor ebp,edx
  617. xor eax,DWORD PTR 44[esp]
  618. xor ebp,edi
  619. xor eax,DWORD PTR [esp]
  620. rol eax,1
  621. add esi,ebp
  622. ror ecx,2
  623. mov ebp,ebx
  624. rol ebp,5
  625. mov DWORD PTR 12[esp],eax
  626. lea eax,DWORD PTR 1859775393[esi*1+eax]
  627. mov esi,DWORD PTR 16[esp]
  628. add eax,ebp
  629. ; 20_39 36
  630. mov ebp,ebx
  631. xor esi,DWORD PTR 24[esp]
  632. xor ebp,ecx
  633. xor esi,DWORD PTR 48[esp]
  634. xor ebp,edx
  635. xor esi,DWORD PTR 4[esp]
  636. rol esi,1
  637. add edi,ebp
  638. ror ebx,2
  639. mov ebp,eax
  640. rol ebp,5
  641. mov DWORD PTR 16[esp],esi
  642. lea esi,DWORD PTR 1859775393[edi*1+esi]
  643. mov edi,DWORD PTR 20[esp]
  644. add esi,ebp
  645. ; 20_39 37
  646. mov ebp,eax
  647. xor edi,DWORD PTR 28[esp]
  648. xor ebp,ebx
  649. xor edi,DWORD PTR 52[esp]
  650. xor ebp,ecx
  651. xor edi,DWORD PTR 8[esp]
  652. rol edi,1
  653. add edx,ebp
  654. ror eax,2
  655. mov ebp,esi
  656. rol ebp,5
  657. mov DWORD PTR 20[esp],edi
  658. lea edi,DWORD PTR 1859775393[edx*1+edi]
  659. mov edx,DWORD PTR 24[esp]
  660. add edi,ebp
  661. ; 20_39 38
  662. mov ebp,esi
  663. xor edx,DWORD PTR 32[esp]
  664. xor ebp,eax
  665. xor edx,DWORD PTR 56[esp]
  666. xor ebp,ebx
  667. xor edx,DWORD PTR 12[esp]
  668. rol edx,1
  669. add ecx,ebp
  670. ror esi,2
  671. mov ebp,edi
  672. rol ebp,5
  673. mov DWORD PTR 24[esp],edx
  674. lea edx,DWORD PTR 1859775393[ecx*1+edx]
  675. mov ecx,DWORD PTR 28[esp]
  676. add edx,ebp
  677. ; 20_39 39
  678. mov ebp,edi
  679. xor ecx,DWORD PTR 36[esp]
  680. xor ebp,esi
  681. xor ecx,DWORD PTR 60[esp]
  682. xor ebp,eax
  683. xor ecx,DWORD PTR 16[esp]
  684. rol ecx,1
  685. add ebx,ebp
  686. ror edi,2
  687. mov ebp,edx
  688. rol ebp,5
  689. mov DWORD PTR 28[esp],ecx
  690. lea ecx,DWORD PTR 1859775393[ebx*1+ecx]
  691. mov ebx,DWORD PTR 32[esp]
  692. add ecx,ebp
  693. ; 40_59 40
  694. mov ebp,edi
  695. xor ebx,DWORD PTR 40[esp]
  696. xor ebp,esi
  697. xor ebx,DWORD PTR [esp]
  698. and ebp,edx
  699. xor ebx,DWORD PTR 20[esp]
  700. rol ebx,1
  701. add ebp,eax
  702. ror edx,2
  703. mov eax,ecx
  704. rol eax,5
  705. mov DWORD PTR 32[esp],ebx
  706. lea ebx,DWORD PTR 2400959708[ebp*1+ebx]
  707. mov ebp,edi
  708. add ebx,eax
  709. and ebp,esi
  710. mov eax,DWORD PTR 36[esp]
  711. add ebx,ebp
  712. ; 40_59 41
  713. mov ebp,edx
  714. xor eax,DWORD PTR 44[esp]
  715. xor ebp,edi
  716. xor eax,DWORD PTR 4[esp]
  717. and ebp,ecx
  718. xor eax,DWORD PTR 24[esp]
  719. rol eax,1
  720. add ebp,esi
  721. ror ecx,2
  722. mov esi,ebx
  723. rol esi,5
  724. mov DWORD PTR 36[esp],eax
  725. lea eax,DWORD PTR 2400959708[ebp*1+eax]
  726. mov ebp,edx
  727. add eax,esi
  728. and ebp,edi
  729. mov esi,DWORD PTR 40[esp]
  730. add eax,ebp
  731. ; 40_59 42
  732. mov ebp,ecx
  733. xor esi,DWORD PTR 48[esp]
  734. xor ebp,edx
  735. xor esi,DWORD PTR 8[esp]
  736. and ebp,ebx
  737. xor esi,DWORD PTR 28[esp]
  738. rol esi,1
  739. add ebp,edi
  740. ror ebx,2
  741. mov edi,eax
  742. rol edi,5
  743. mov DWORD PTR 40[esp],esi
  744. lea esi,DWORD PTR 2400959708[ebp*1+esi]
  745. mov ebp,ecx
  746. add esi,edi
  747. and ebp,edx
  748. mov edi,DWORD PTR 44[esp]
  749. add esi,ebp
  750. ; 40_59 43
  751. mov ebp,ebx
  752. xor edi,DWORD PTR 52[esp]
  753. xor ebp,ecx
  754. xor edi,DWORD PTR 12[esp]
  755. and ebp,eax
  756. xor edi,DWORD PTR 32[esp]
  757. rol edi,1
  758. add ebp,edx
  759. ror eax,2
  760. mov edx,esi
  761. rol edx,5
  762. mov DWORD PTR 44[esp],edi
  763. lea edi,DWORD PTR 2400959708[ebp*1+edi]
  764. mov ebp,ebx
  765. add edi,edx
  766. and ebp,ecx
  767. mov edx,DWORD PTR 48[esp]
  768. add edi,ebp
  769. ; 40_59 44
  770. mov ebp,eax
  771. xor edx,DWORD PTR 56[esp]
  772. xor ebp,ebx
  773. xor edx,DWORD PTR 16[esp]
  774. and ebp,esi
  775. xor edx,DWORD PTR 36[esp]
  776. rol edx,1
  777. add ebp,ecx
  778. ror esi,2
  779. mov ecx,edi
  780. rol ecx,5
  781. mov DWORD PTR 48[esp],edx
  782. lea edx,DWORD PTR 2400959708[ebp*1+edx]
  783. mov ebp,eax
  784. add edx,ecx
  785. and ebp,ebx
  786. mov ecx,DWORD PTR 52[esp]
  787. add edx,ebp
  788. ; 40_59 45
  789. mov ebp,esi
  790. xor ecx,DWORD PTR 60[esp]
  791. xor ebp,eax
  792. xor ecx,DWORD PTR 20[esp]
  793. and ebp,edi
  794. xor ecx,DWORD PTR 40[esp]
  795. rol ecx,1
  796. add ebp,ebx
  797. ror edi,2
  798. mov ebx,edx
  799. rol ebx,5
  800. mov DWORD PTR 52[esp],ecx
  801. lea ecx,DWORD PTR 2400959708[ebp*1+ecx]
  802. mov ebp,esi
  803. add ecx,ebx
  804. and ebp,eax
  805. mov ebx,DWORD PTR 56[esp]
  806. add ecx,ebp
  807. ; 40_59 46
  808. mov ebp,edi
  809. xor ebx,DWORD PTR [esp]
  810. xor ebp,esi
  811. xor ebx,DWORD PTR 24[esp]
  812. and ebp,edx
  813. xor ebx,DWORD PTR 44[esp]
  814. rol ebx,1
  815. add ebp,eax
  816. ror edx,2
  817. mov eax,ecx
  818. rol eax,5
  819. mov DWORD PTR 56[esp],ebx
  820. lea ebx,DWORD PTR 2400959708[ebp*1+ebx]
  821. mov ebp,edi
  822. add ebx,eax
  823. and ebp,esi
  824. mov eax,DWORD PTR 60[esp]
  825. add ebx,ebp
  826. ; 40_59 47
  827. mov ebp,edx
  828. xor eax,DWORD PTR 4[esp]
  829. xor ebp,edi
  830. xor eax,DWORD PTR 28[esp]
  831. and ebp,ecx
  832. xor eax,DWORD PTR 48[esp]
  833. rol eax,1
  834. add ebp,esi
  835. ror ecx,2
  836. mov esi,ebx
  837. rol esi,5
  838. mov DWORD PTR 60[esp],eax
  839. lea eax,DWORD PTR 2400959708[ebp*1+eax]
  840. mov ebp,edx
  841. add eax,esi
  842. and ebp,edi
  843. mov esi,DWORD PTR [esp]
  844. add eax,ebp
  845. ; 40_59 48
  846. mov ebp,ecx
  847. xor esi,DWORD PTR 8[esp]
  848. xor ebp,edx
  849. xor esi,DWORD PTR 32[esp]
  850. and ebp,ebx
  851. xor esi,DWORD PTR 52[esp]
  852. rol esi,1
  853. add ebp,edi
  854. ror ebx,2
  855. mov edi,eax
  856. rol edi,5
  857. mov DWORD PTR [esp],esi
  858. lea esi,DWORD PTR 2400959708[ebp*1+esi]
  859. mov ebp,ecx
  860. add esi,edi
  861. and ebp,edx
  862. mov edi,DWORD PTR 4[esp]
  863. add esi,ebp
  864. ; 40_59 49
  865. mov ebp,ebx
  866. xor edi,DWORD PTR 12[esp]
  867. xor ebp,ecx
  868. xor edi,DWORD PTR 36[esp]
  869. and ebp,eax
  870. xor edi,DWORD PTR 56[esp]
  871. rol edi,1
  872. add ebp,edx
  873. ror eax,2
  874. mov edx,esi
  875. rol edx,5
  876. mov DWORD PTR 4[esp],edi
  877. lea edi,DWORD PTR 2400959708[ebp*1+edi]
  878. mov ebp,ebx
  879. add edi,edx
  880. and ebp,ecx
  881. mov edx,DWORD PTR 8[esp]
  882. add edi,ebp
  883. ; 40_59 50
  884. mov ebp,eax
  885. xor edx,DWORD PTR 16[esp]
  886. xor ebp,ebx
  887. xor edx,DWORD PTR 40[esp]
  888. and ebp,esi
  889. xor edx,DWORD PTR 60[esp]
  890. rol edx,1
  891. add ebp,ecx
  892. ror esi,2
  893. mov ecx,edi
  894. rol ecx,5
  895. mov DWORD PTR 8[esp],edx
  896. lea edx,DWORD PTR 2400959708[ebp*1+edx]
  897. mov ebp,eax
  898. add edx,ecx
  899. and ebp,ebx
  900. mov ecx,DWORD PTR 12[esp]
  901. add edx,ebp
  902. ; 40_59 51
  903. mov ebp,esi
  904. xor ecx,DWORD PTR 20[esp]
  905. xor ebp,eax
  906. xor ecx,DWORD PTR 44[esp]
  907. and ebp,edi
  908. xor ecx,DWORD PTR [esp]
  909. rol ecx,1
  910. add ebp,ebx
  911. ror edi,2
  912. mov ebx,edx
  913. rol ebx,5
  914. mov DWORD PTR 12[esp],ecx
  915. lea ecx,DWORD PTR 2400959708[ebp*1+ecx]
  916. mov ebp,esi
  917. add ecx,ebx
  918. and ebp,eax
  919. mov ebx,DWORD PTR 16[esp]
  920. add ecx,ebp
  921. ; 40_59 52
  922. mov ebp,edi
  923. xor ebx,DWORD PTR 24[esp]
  924. xor ebp,esi
  925. xor ebx,DWORD PTR 48[esp]
  926. and ebp,edx
  927. xor ebx,DWORD PTR 4[esp]
  928. rol ebx,1
  929. add ebp,eax
  930. ror edx,2
  931. mov eax,ecx
  932. rol eax,5
  933. mov DWORD PTR 16[esp],ebx
  934. lea ebx,DWORD PTR 2400959708[ebp*1+ebx]
  935. mov ebp,edi
  936. add ebx,eax
  937. and ebp,esi
  938. mov eax,DWORD PTR 20[esp]
  939. add ebx,ebp
  940. ; 40_59 53
  941. mov ebp,edx
  942. xor eax,DWORD PTR 28[esp]
  943. xor ebp,edi
  944. xor eax,DWORD PTR 52[esp]
  945. and ebp,ecx
  946. xor eax,DWORD PTR 8[esp]
  947. rol eax,1
  948. add ebp,esi
  949. ror ecx,2
  950. mov esi,ebx
  951. rol esi,5
  952. mov DWORD PTR 20[esp],eax
  953. lea eax,DWORD PTR 2400959708[ebp*1+eax]
  954. mov ebp,edx
  955. add eax,esi
  956. and ebp,edi
  957. mov esi,DWORD PTR 24[esp]
  958. add eax,ebp
  959. ; 40_59 54
  960. mov ebp,ecx
  961. xor esi,DWORD PTR 32[esp]
  962. xor ebp,edx
  963. xor esi,DWORD PTR 56[esp]
  964. and ebp,ebx
  965. xor esi,DWORD PTR 12[esp]
  966. rol esi,1
  967. add ebp,edi
  968. ror ebx,2
  969. mov edi,eax
  970. rol edi,5
  971. mov DWORD PTR 24[esp],esi
  972. lea esi,DWORD PTR 2400959708[ebp*1+esi]
  973. mov ebp,ecx
  974. add esi,edi
  975. and ebp,edx
  976. mov edi,DWORD PTR 28[esp]
  977. add esi,ebp
  978. ; 40_59 55
  979. mov ebp,ebx
  980. xor edi,DWORD PTR 36[esp]
  981. xor ebp,ecx
  982. xor edi,DWORD PTR 60[esp]
  983. and ebp,eax
  984. xor edi,DWORD PTR 16[esp]
  985. rol edi,1
  986. add ebp,edx
  987. ror eax,2
  988. mov edx,esi
  989. rol edx,5
  990. mov DWORD PTR 28[esp],edi
  991. lea edi,DWORD PTR 2400959708[ebp*1+edi]
  992. mov ebp,ebx
  993. add edi,edx
  994. and ebp,ecx
  995. mov edx,DWORD PTR 32[esp]
  996. add edi,ebp
  997. ; 40_59 56
  998. mov ebp,eax
  999. xor edx,DWORD PTR 40[esp]
  1000. xor ebp,ebx
  1001. xor edx,DWORD PTR [esp]
  1002. and ebp,esi
  1003. xor edx,DWORD PTR 20[esp]
  1004. rol edx,1
  1005. add ebp,ecx
  1006. ror esi,2
  1007. mov ecx,edi
  1008. rol ecx,5
  1009. mov DWORD PTR 32[esp],edx
  1010. lea edx,DWORD PTR 2400959708[ebp*1+edx]
  1011. mov ebp,eax
  1012. add edx,ecx
  1013. and ebp,ebx
  1014. mov ecx,DWORD PTR 36[esp]
  1015. add edx,ebp
  1016. ; 40_59 57
  1017. mov ebp,esi
  1018. xor ecx,DWORD PTR 44[esp]
  1019. xor ebp,eax
  1020. xor ecx,DWORD PTR 4[esp]
  1021. and ebp,edi
  1022. xor ecx,DWORD PTR 24[esp]
  1023. rol ecx,1
  1024. add ebp,ebx
  1025. ror edi,2
  1026. mov ebx,edx
  1027. rol ebx,5
  1028. mov DWORD PTR 36[esp],ecx
  1029. lea ecx,DWORD PTR 2400959708[ebp*1+ecx]
  1030. mov ebp,esi
  1031. add ecx,ebx
  1032. and ebp,eax
  1033. mov ebx,DWORD PTR 40[esp]
  1034. add ecx,ebp
  1035. ; 40_59 58
  1036. mov ebp,edi
  1037. xor ebx,DWORD PTR 48[esp]
  1038. xor ebp,esi
  1039. xor ebx,DWORD PTR 8[esp]
  1040. and ebp,edx
  1041. xor ebx,DWORD PTR 28[esp]
  1042. rol ebx,1
  1043. add ebp,eax
  1044. ror edx,2
  1045. mov eax,ecx
  1046. rol eax,5
  1047. mov DWORD PTR 40[esp],ebx
  1048. lea ebx,DWORD PTR 2400959708[ebp*1+ebx]
  1049. mov ebp,edi
  1050. add ebx,eax
  1051. and ebp,esi
  1052. mov eax,DWORD PTR 44[esp]
  1053. add ebx,ebp
  1054. ; 40_59 59
  1055. mov ebp,edx
  1056. xor eax,DWORD PTR 52[esp]
  1057. xor ebp,edi
  1058. xor eax,DWORD PTR 12[esp]
  1059. and ebp,ecx
  1060. xor eax,DWORD PTR 32[esp]
  1061. rol eax,1
  1062. add ebp,esi
  1063. ror ecx,2
  1064. mov esi,ebx
  1065. rol esi,5
  1066. mov DWORD PTR 44[esp],eax
  1067. lea eax,DWORD PTR 2400959708[ebp*1+eax]
  1068. mov ebp,edx
  1069. add eax,esi
  1070. and ebp,edi
  1071. mov esi,DWORD PTR 48[esp]
  1072. add eax,ebp
  1073. ; 20_39 60
  1074. mov ebp,ebx
  1075. xor esi,DWORD PTR 56[esp]
  1076. xor ebp,ecx
  1077. xor esi,DWORD PTR 16[esp]
  1078. xor ebp,edx
  1079. xor esi,DWORD PTR 36[esp]
  1080. rol esi,1
  1081. add edi,ebp
  1082. ror ebx,2
  1083. mov ebp,eax
  1084. rol ebp,5
  1085. mov DWORD PTR 48[esp],esi
  1086. lea esi,DWORD PTR 3395469782[edi*1+esi]
  1087. mov edi,DWORD PTR 52[esp]
  1088. add esi,ebp
  1089. ; 20_39 61
  1090. mov ebp,eax
  1091. xor edi,DWORD PTR 60[esp]
  1092. xor ebp,ebx
  1093. xor edi,DWORD PTR 20[esp]
  1094. xor ebp,ecx
  1095. xor edi,DWORD PTR 40[esp]
  1096. rol edi,1
  1097. add edx,ebp
  1098. ror eax,2
  1099. mov ebp,esi
  1100. rol ebp,5
  1101. mov DWORD PTR 52[esp],edi
  1102. lea edi,DWORD PTR 3395469782[edx*1+edi]
  1103. mov edx,DWORD PTR 56[esp]
  1104. add edi,ebp
  1105. ; 20_39 62
  1106. mov ebp,esi
  1107. xor edx,DWORD PTR [esp]
  1108. xor ebp,eax
  1109. xor edx,DWORD PTR 24[esp]
  1110. xor ebp,ebx
  1111. xor edx,DWORD PTR 44[esp]
  1112. rol edx,1
  1113. add ecx,ebp
  1114. ror esi,2
  1115. mov ebp,edi
  1116. rol ebp,5
  1117. mov DWORD PTR 56[esp],edx
  1118. lea edx,DWORD PTR 3395469782[ecx*1+edx]
  1119. mov ecx,DWORD PTR 60[esp]
  1120. add edx,ebp
  1121. ; 20_39 63
  1122. mov ebp,edi
  1123. xor ecx,DWORD PTR 4[esp]
  1124. xor ebp,esi
  1125. xor ecx,DWORD PTR 28[esp]
  1126. xor ebp,eax
  1127. xor ecx,DWORD PTR 48[esp]
  1128. rol ecx,1
  1129. add ebx,ebp
  1130. ror edi,2
  1131. mov ebp,edx
  1132. rol ebp,5
  1133. mov DWORD PTR 60[esp],ecx
  1134. lea ecx,DWORD PTR 3395469782[ebx*1+ecx]
  1135. mov ebx,DWORD PTR [esp]
  1136. add ecx,ebp
  1137. ; 20_39 64
  1138. mov ebp,edx
  1139. xor ebx,DWORD PTR 8[esp]
  1140. xor ebp,edi
  1141. xor ebx,DWORD PTR 32[esp]
  1142. xor ebp,esi
  1143. xor ebx,DWORD PTR 52[esp]
  1144. rol ebx,1
  1145. add eax,ebp
  1146. ror edx,2
  1147. mov ebp,ecx
  1148. rol ebp,5
  1149. mov DWORD PTR [esp],ebx
  1150. lea ebx,DWORD PTR 3395469782[eax*1+ebx]
  1151. mov eax,DWORD PTR 4[esp]
  1152. add ebx,ebp
  1153. ; 20_39 65
  1154. mov ebp,ecx
  1155. xor eax,DWORD PTR 12[esp]
  1156. xor ebp,edx
  1157. xor eax,DWORD PTR 36[esp]
  1158. xor ebp,edi
  1159. xor eax,DWORD PTR 56[esp]
  1160. rol eax,1
  1161. add esi,ebp
  1162. ror ecx,2
  1163. mov ebp,ebx
  1164. rol ebp,5
  1165. mov DWORD PTR 4[esp],eax
  1166. lea eax,DWORD PTR 3395469782[esi*1+eax]
  1167. mov esi,DWORD PTR 8[esp]
  1168. add eax,ebp
  1169. ; 20_39 66
  1170. mov ebp,ebx
  1171. xor esi,DWORD PTR 16[esp]
  1172. xor ebp,ecx
  1173. xor esi,DWORD PTR 40[esp]
  1174. xor ebp,edx
  1175. xor esi,DWORD PTR 60[esp]
  1176. rol esi,1
  1177. add edi,ebp
  1178. ror ebx,2
  1179. mov ebp,eax
  1180. rol ebp,5
  1181. mov DWORD PTR 8[esp],esi
  1182. lea esi,DWORD PTR 3395469782[edi*1+esi]
  1183. mov edi,DWORD PTR 12[esp]
  1184. add esi,ebp
  1185. ; 20_39 67
  1186. mov ebp,eax
  1187. xor edi,DWORD PTR 20[esp]
  1188. xor ebp,ebx
  1189. xor edi,DWORD PTR 44[esp]
  1190. xor ebp,ecx
  1191. xor edi,DWORD PTR [esp]
  1192. rol edi,1
  1193. add edx,ebp
  1194. ror eax,2
  1195. mov ebp,esi
  1196. rol ebp,5
  1197. mov DWORD PTR 12[esp],edi
  1198. lea edi,DWORD PTR 3395469782[edx*1+edi]
  1199. mov edx,DWORD PTR 16[esp]
  1200. add edi,ebp
  1201. ; 20_39 68
  1202. mov ebp,esi
  1203. xor edx,DWORD PTR 24[esp]
  1204. xor ebp,eax
  1205. xor edx,DWORD PTR 48[esp]
  1206. xor ebp,ebx
  1207. xor edx,DWORD PTR 4[esp]
  1208. rol edx,1
  1209. add ecx,ebp
  1210. ror esi,2
  1211. mov ebp,edi
  1212. rol ebp,5
  1213. mov DWORD PTR 16[esp],edx
  1214. lea edx,DWORD PTR 3395469782[ecx*1+edx]
  1215. mov ecx,DWORD PTR 20[esp]
  1216. add edx,ebp
  1217. ; 20_39 69
  1218. mov ebp,edi
  1219. xor ecx,DWORD PTR 28[esp]
  1220. xor ebp,esi
  1221. xor ecx,DWORD PTR 52[esp]
  1222. xor ebp,eax
  1223. xor ecx,DWORD PTR 8[esp]
  1224. rol ecx,1
  1225. add ebx,ebp
  1226. ror edi,2
  1227. mov ebp,edx
  1228. rol ebp,5
  1229. mov DWORD PTR 20[esp],ecx
  1230. lea ecx,DWORD PTR 3395469782[ebx*1+ecx]
  1231. mov ebx,DWORD PTR 24[esp]
  1232. add ecx,ebp
  1233. ; 20_39 70
  1234. mov ebp,edx
  1235. xor ebx,DWORD PTR 32[esp]
  1236. xor ebp,edi
  1237. xor ebx,DWORD PTR 56[esp]
  1238. xor ebp,esi
  1239. xor ebx,DWORD PTR 12[esp]
  1240. rol ebx,1
  1241. add eax,ebp
  1242. ror edx,2
  1243. mov ebp,ecx
  1244. rol ebp,5
  1245. mov DWORD PTR 24[esp],ebx
  1246. lea ebx,DWORD PTR 3395469782[eax*1+ebx]
  1247. mov eax,DWORD PTR 28[esp]
  1248. add ebx,ebp
  1249. ; 20_39 71
  1250. mov ebp,ecx
  1251. xor eax,DWORD PTR 36[esp]
  1252. xor ebp,edx
  1253. xor eax,DWORD PTR 60[esp]
  1254. xor ebp,edi
  1255. xor eax,DWORD PTR 16[esp]
  1256. rol eax,1
  1257. add esi,ebp
  1258. ror ecx,2
  1259. mov ebp,ebx
  1260. rol ebp,5
  1261. mov DWORD PTR 28[esp],eax
  1262. lea eax,DWORD PTR 3395469782[esi*1+eax]
  1263. mov esi,DWORD PTR 32[esp]
  1264. add eax,ebp
  1265. ; 20_39 72
  1266. mov ebp,ebx
  1267. xor esi,DWORD PTR 40[esp]
  1268. xor ebp,ecx
  1269. xor esi,DWORD PTR [esp]
  1270. xor ebp,edx
  1271. xor esi,DWORD PTR 20[esp]
  1272. rol esi,1
  1273. add edi,ebp
  1274. ror ebx,2
  1275. mov ebp,eax
  1276. rol ebp,5
  1277. mov DWORD PTR 32[esp],esi
  1278. lea esi,DWORD PTR 3395469782[edi*1+esi]
  1279. mov edi,DWORD PTR 36[esp]
  1280. add esi,ebp
  1281. ; 20_39 73
  1282. mov ebp,eax
  1283. xor edi,DWORD PTR 44[esp]
  1284. xor ebp,ebx
  1285. xor edi,DWORD PTR 4[esp]
  1286. xor ebp,ecx
  1287. xor edi,DWORD PTR 24[esp]
  1288. rol edi,1
  1289. add edx,ebp
  1290. ror eax,2
  1291. mov ebp,esi
  1292. rol ebp,5
  1293. mov DWORD PTR 36[esp],edi
  1294. lea edi,DWORD PTR 3395469782[edx*1+edi]
  1295. mov edx,DWORD PTR 40[esp]
  1296. add edi,ebp
  1297. ; 20_39 74
  1298. mov ebp,esi
  1299. xor edx,DWORD PTR 48[esp]
  1300. xor ebp,eax
  1301. xor edx,DWORD PTR 8[esp]
  1302. xor ebp,ebx
  1303. xor edx,DWORD PTR 28[esp]
  1304. rol edx,1
  1305. add ecx,ebp
  1306. ror esi,2
  1307. mov ebp,edi
  1308. rol ebp,5
  1309. mov DWORD PTR 40[esp],edx
  1310. lea edx,DWORD PTR 3395469782[ecx*1+edx]
  1311. mov ecx,DWORD PTR 44[esp]
  1312. add edx,ebp
  1313. ; 20_39 75
  1314. mov ebp,edi
  1315. xor ecx,DWORD PTR 52[esp]
  1316. xor ebp,esi
  1317. xor ecx,DWORD PTR 12[esp]
  1318. xor ebp,eax
  1319. xor ecx,DWORD PTR 32[esp]
  1320. rol ecx,1
  1321. add ebx,ebp
  1322. ror edi,2
  1323. mov ebp,edx
  1324. rol ebp,5
  1325. mov DWORD PTR 44[esp],ecx
  1326. lea ecx,DWORD PTR 3395469782[ebx*1+ecx]
  1327. mov ebx,DWORD PTR 48[esp]
  1328. add ecx,ebp
  1329. ; 20_39 76
  1330. mov ebp,edx
  1331. xor ebx,DWORD PTR 56[esp]
  1332. xor ebp,edi
  1333. xor ebx,DWORD PTR 16[esp]
  1334. xor ebp,esi
  1335. xor ebx,DWORD PTR 36[esp]
  1336. rol ebx,1
  1337. add eax,ebp
  1338. ror edx,2
  1339. mov ebp,ecx
  1340. rol ebp,5
  1341. mov DWORD PTR 48[esp],ebx
  1342. lea ebx,DWORD PTR 3395469782[eax*1+ebx]
  1343. mov eax,DWORD PTR 52[esp]
  1344. add ebx,ebp
  1345. ; 20_39 77
  1346. mov ebp,ecx
  1347. xor eax,DWORD PTR 60[esp]
  1348. xor ebp,edx
  1349. xor eax,DWORD PTR 20[esp]
  1350. xor ebp,edi
  1351. xor eax,DWORD PTR 40[esp]
  1352. rol eax,1
  1353. add esi,ebp
  1354. ror ecx,2
  1355. mov ebp,ebx
  1356. rol ebp,5
  1357. lea eax,DWORD PTR 3395469782[esi*1+eax]
  1358. mov esi,DWORD PTR 56[esp]
  1359. add eax,ebp
  1360. ; 20_39 78
  1361. mov ebp,ebx
  1362. xor esi,DWORD PTR [esp]
  1363. xor ebp,ecx
  1364. xor esi,DWORD PTR 24[esp]
  1365. xor ebp,edx
  1366. xor esi,DWORD PTR 44[esp]
  1367. rol esi,1
  1368. add edi,ebp
  1369. ror ebx,2
  1370. mov ebp,eax
  1371. rol ebp,5
  1372. lea esi,DWORD PTR 3395469782[edi*1+esi]
  1373. mov edi,DWORD PTR 60[esp]
  1374. add esi,ebp
  1375. ; 20_39 79
  1376. mov ebp,eax
  1377. xor edi,DWORD PTR 4[esp]
  1378. xor ebp,ebx
  1379. xor edi,DWORD PTR 28[esp]
  1380. xor ebp,ecx
  1381. xor edi,DWORD PTR 48[esp]
  1382. rol edi,1
  1383. add edx,ebp
  1384. ror eax,2
  1385. mov ebp,esi
  1386. rol ebp,5
  1387. lea edi,DWORD PTR 3395469782[edx*1+edi]
  1388. add edi,ebp
  1389. mov ebp,DWORD PTR 96[esp]
  1390. mov edx,DWORD PTR 100[esp]
  1391. add edi,DWORD PTR [ebp]
  1392. add esi,DWORD PTR 4[ebp]
  1393. add eax,DWORD PTR 8[ebp]
  1394. add ebx,DWORD PTR 12[ebp]
  1395. add ecx,DWORD PTR 16[ebp]
  1396. mov DWORD PTR [ebp],edi
  1397. add edx,64
  1398. mov DWORD PTR 4[ebp],esi
  1399. cmp edx,DWORD PTR 104[esp]
  1400. mov DWORD PTR 8[ebp],eax
  1401. mov edi,ecx
  1402. mov DWORD PTR 12[ebp],ebx
  1403. mov esi,edx
  1404. mov DWORD PTR 16[ebp],ecx
  1405. jb $L002loop
  1406. add esp,76
  1407. pop edi
  1408. pop esi
  1409. pop ebx
  1410. pop ebp
  1411. ret
  1412. _sha1_block_data_order ENDP
  1413. ALIGN 16
  1414. __sha1_block_data_order_shaext PROC PRIVATE
  1415. push ebp
  1416. push ebx
  1417. push esi
  1418. push edi
  1419. call $L003pic_point
  1420. $L003pic_point:
  1421. pop ebp
  1422. lea ebp,DWORD PTR ($LK_XX_XX-$L003pic_point)[ebp]
  1423. $Lshaext_shortcut::
  1424. mov edi,DWORD PTR 20[esp]
  1425. mov ebx,esp
  1426. mov esi,DWORD PTR 24[esp]
  1427. mov ecx,DWORD PTR 28[esp]
  1428. sub esp,32
  1429. movdqu xmm0,XMMWORD PTR [edi]
  1430. movd xmm1,DWORD PTR 16[edi]
  1431. and esp,-32
  1432. movdqa xmm3,XMMWORD PTR 80[ebp]
  1433. movdqu xmm4,XMMWORD PTR [esi]
  1434. pshufd xmm0,xmm0,27
  1435. movdqu xmm5,XMMWORD PTR 16[esi]
  1436. pshufd xmm1,xmm1,27
  1437. movdqu xmm6,XMMWORD PTR 32[esi]
  1438. DB 102,15,56,0,227
  1439. movdqu xmm7,XMMWORD PTR 48[esi]
  1440. DB 102,15,56,0,235
  1441. DB 102,15,56,0,243
  1442. DB 102,15,56,0,251
  1443. jmp $L004loop_shaext
  1444. ALIGN 16
  1445. $L004loop_shaext:
  1446. dec ecx
  1447. lea eax,DWORD PTR 64[esi]
  1448. movdqa XMMWORD PTR [esp],xmm1
  1449. paddd xmm1,xmm4
  1450. cmovne esi,eax
  1451. movdqa XMMWORD PTR 16[esp],xmm0
  1452. DB 15,56,201,229
  1453. movdqa xmm2,xmm0
  1454. DB 15,58,204,193,0
  1455. DB 15,56,200,213
  1456. pxor xmm4,xmm6
  1457. DB 15,56,201,238
  1458. DB 15,56,202,231
  1459. movdqa xmm1,xmm0
  1460. DB 15,58,204,194,0
  1461. DB 15,56,200,206
  1462. pxor xmm5,xmm7
  1463. DB 15,56,202,236
  1464. DB 15,56,201,247
  1465. movdqa xmm2,xmm0
  1466. DB 15,58,204,193,0
  1467. DB 15,56,200,215
  1468. pxor xmm6,xmm4
  1469. DB 15,56,201,252
  1470. DB 15,56,202,245
  1471. movdqa xmm1,xmm0
  1472. DB 15,58,204,194,0
  1473. DB 15,56,200,204
  1474. pxor xmm7,xmm5
  1475. DB 15,56,202,254
  1476. DB 15,56,201,229
  1477. movdqa xmm2,xmm0
  1478. DB 15,58,204,193,0
  1479. DB 15,56,200,213
  1480. pxor xmm4,xmm6
  1481. DB 15,56,201,238
  1482. DB 15,56,202,231
  1483. movdqa xmm1,xmm0
  1484. DB 15,58,204,194,1
  1485. DB 15,56,200,206
  1486. pxor xmm5,xmm7
  1487. DB 15,56,202,236
  1488. DB 15,56,201,247
  1489. movdqa xmm2,xmm0
  1490. DB 15,58,204,193,1
  1491. DB 15,56,200,215
  1492. pxor xmm6,xmm4
  1493. DB 15,56,201,252
  1494. DB 15,56,202,245
  1495. movdqa xmm1,xmm0
  1496. DB 15,58,204,194,1
  1497. DB 15,56,200,204
  1498. pxor xmm7,xmm5
  1499. DB 15,56,202,254
  1500. DB 15,56,201,229
  1501. movdqa xmm2,xmm0
  1502. DB 15,58,204,193,1
  1503. DB 15,56,200,213
  1504. pxor xmm4,xmm6
  1505. DB 15,56,201,238
  1506. DB 15,56,202,231
  1507. movdqa xmm1,xmm0
  1508. DB 15,58,204,194,1
  1509. DB 15,56,200,206
  1510. pxor xmm5,xmm7
  1511. DB 15,56,202,236
  1512. DB 15,56,201,247
  1513. movdqa xmm2,xmm0
  1514. DB 15,58,204,193,2
  1515. DB 15,56,200,215
  1516. pxor xmm6,xmm4
  1517. DB 15,56,201,252
  1518. DB 15,56,202,245
  1519. movdqa xmm1,xmm0
  1520. DB 15,58,204,194,2
  1521. DB 15,56,200,204
  1522. pxor xmm7,xmm5
  1523. DB 15,56,202,254
  1524. DB 15,56,201,229
  1525. movdqa xmm2,xmm0
  1526. DB 15,58,204,193,2
  1527. DB 15,56,200,213
  1528. pxor xmm4,xmm6
  1529. DB 15,56,201,238
  1530. DB 15,56,202,231
  1531. movdqa xmm1,xmm0
  1532. DB 15,58,204,194,2
  1533. DB 15,56,200,206
  1534. pxor xmm5,xmm7
  1535. DB 15,56,202,236
  1536. DB 15,56,201,247
  1537. movdqa xmm2,xmm0
  1538. DB 15,58,204,193,2
  1539. DB 15,56,200,215
  1540. pxor xmm6,xmm4
  1541. DB 15,56,201,252
  1542. DB 15,56,202,245
  1543. movdqa xmm1,xmm0
  1544. DB 15,58,204,194,3
  1545. DB 15,56,200,204
  1546. pxor xmm7,xmm5
  1547. DB 15,56,202,254
  1548. movdqu xmm4,XMMWORD PTR [esi]
  1549. movdqa xmm2,xmm0
  1550. DB 15,58,204,193,3
  1551. DB 15,56,200,213
  1552. movdqu xmm5,XMMWORD PTR 16[esi]
  1553. DB 102,15,56,0,227
  1554. movdqa xmm1,xmm0
  1555. DB 15,58,204,194,3
  1556. DB 15,56,200,206
  1557. movdqu xmm6,XMMWORD PTR 32[esi]
  1558. DB 102,15,56,0,235
  1559. movdqa xmm2,xmm0
  1560. DB 15,58,204,193,3
  1561. DB 15,56,200,215
  1562. movdqu xmm7,XMMWORD PTR 48[esi]
  1563. DB 102,15,56,0,243
  1564. movdqa xmm1,xmm0
  1565. DB 15,58,204,194,3
  1566. movdqa xmm2,XMMWORD PTR [esp]
  1567. DB 102,15,56,0,251
  1568. DB 15,56,200,202
  1569. paddd xmm0,XMMWORD PTR 16[esp]
  1570. jnz $L004loop_shaext
  1571. pshufd xmm0,xmm0,27
  1572. pshufd xmm1,xmm1,27
  1573. movdqu XMMWORD PTR [edi],xmm0
  1574. movd DWORD PTR 16[edi],xmm1
  1575. mov esp,ebx
  1576. pop edi
  1577. pop esi
  1578. pop ebx
  1579. pop ebp
  1580. ret
  1581. __sha1_block_data_order_shaext ENDP
  1582. ALIGN 16
  1583. __sha1_block_data_order_ssse3 PROC PRIVATE
  1584. push ebp
  1585. push ebx
  1586. push esi
  1587. push edi
  1588. call $L005pic_point
  1589. $L005pic_point:
  1590. pop ebp
  1591. lea ebp,DWORD PTR ($LK_XX_XX-$L005pic_point)[ebp]
  1592. $Lssse3_shortcut::
  1593. movdqa xmm7,XMMWORD PTR [ebp]
  1594. movdqa xmm0,XMMWORD PTR 16[ebp]
  1595. movdqa xmm1,XMMWORD PTR 32[ebp]
  1596. movdqa xmm2,XMMWORD PTR 48[ebp]
  1597. movdqa xmm6,XMMWORD PTR 64[ebp]
  1598. mov edi,DWORD PTR 20[esp]
  1599. mov ebp,DWORD PTR 24[esp]
  1600. mov edx,DWORD PTR 28[esp]
  1601. mov esi,esp
  1602. sub esp,208
  1603. and esp,-64
  1604. movdqa XMMWORD PTR 112[esp],xmm0
  1605. movdqa XMMWORD PTR 128[esp],xmm1
  1606. movdqa XMMWORD PTR 144[esp],xmm2
  1607. shl edx,6
  1608. movdqa XMMWORD PTR 160[esp],xmm7
  1609. add edx,ebp
  1610. movdqa XMMWORD PTR 176[esp],xmm6
  1611. add ebp,64
  1612. mov DWORD PTR 192[esp],edi
  1613. mov DWORD PTR 196[esp],ebp
  1614. mov DWORD PTR 200[esp],edx
  1615. mov DWORD PTR 204[esp],esi
  1616. mov eax,DWORD PTR [edi]
  1617. mov ebx,DWORD PTR 4[edi]
  1618. mov ecx,DWORD PTR 8[edi]
  1619. mov edx,DWORD PTR 12[edi]
  1620. mov edi,DWORD PTR 16[edi]
  1621. mov esi,ebx
  1622. movdqu xmm0,XMMWORD PTR [ebp-64]
  1623. movdqu xmm1,XMMWORD PTR [ebp-48]
  1624. movdqu xmm2,XMMWORD PTR [ebp-32]
  1625. movdqu xmm3,XMMWORD PTR [ebp-16]
  1626. DB 102,15,56,0,198
  1627. DB 102,15,56,0,206
  1628. DB 102,15,56,0,214
  1629. movdqa XMMWORD PTR 96[esp],xmm7
  1630. DB 102,15,56,0,222
  1631. paddd xmm0,xmm7
  1632. paddd xmm1,xmm7
  1633. paddd xmm2,xmm7
  1634. movdqa XMMWORD PTR [esp],xmm0
  1635. psubd xmm0,xmm7
  1636. movdqa XMMWORD PTR 16[esp],xmm1
  1637. psubd xmm1,xmm7
  1638. movdqa XMMWORD PTR 32[esp],xmm2
  1639. mov ebp,ecx
  1640. psubd xmm2,xmm7
  1641. xor ebp,edx
  1642. pshufd xmm4,xmm0,238
  1643. and esi,ebp
  1644. jmp $L006loop
  1645. ALIGN 16
  1646. $L006loop:
  1647. ror ebx,2
  1648. xor esi,edx
  1649. mov ebp,eax
  1650. punpcklqdq xmm4,xmm1
  1651. movdqa xmm6,xmm3
  1652. add edi,DWORD PTR [esp]
  1653. xor ebx,ecx
  1654. paddd xmm7,xmm3
  1655. movdqa XMMWORD PTR 64[esp],xmm0
  1656. rol eax,5
  1657. add edi,esi
  1658. psrldq xmm6,4
  1659. and ebp,ebx
  1660. xor ebx,ecx
  1661. pxor xmm4,xmm0
  1662. add edi,eax
  1663. ror eax,7
  1664. pxor xmm6,xmm2
  1665. xor ebp,ecx
  1666. mov esi,edi
  1667. add edx,DWORD PTR 4[esp]
  1668. pxor xmm4,xmm6
  1669. xor eax,ebx
  1670. rol edi,5
  1671. movdqa XMMWORD PTR 48[esp],xmm7
  1672. add edx,ebp
  1673. and esi,eax
  1674. movdqa xmm0,xmm4
  1675. xor eax,ebx
  1676. add edx,edi
  1677. ror edi,7
  1678. movdqa xmm6,xmm4
  1679. xor esi,ebx
  1680. pslldq xmm0,12
  1681. paddd xmm4,xmm4
  1682. mov ebp,edx
  1683. add ecx,DWORD PTR 8[esp]
  1684. psrld xmm6,31
  1685. xor edi,eax
  1686. rol edx,5
  1687. movdqa xmm7,xmm0
  1688. add ecx,esi
  1689. and ebp,edi
  1690. xor edi,eax
  1691. psrld xmm0,30
  1692. add ecx,edx
  1693. ror edx,7
  1694. por xmm4,xmm6
  1695. xor ebp,eax
  1696. mov esi,ecx
  1697. add ebx,DWORD PTR 12[esp]
  1698. pslld xmm7,2
  1699. xor edx,edi
  1700. rol ecx,5
  1701. pxor xmm4,xmm0
  1702. movdqa xmm0,XMMWORD PTR 96[esp]
  1703. add ebx,ebp
  1704. and esi,edx
  1705. pxor xmm4,xmm7
  1706. pshufd xmm5,xmm1,238
  1707. xor edx,edi
  1708. add ebx,ecx
  1709. ror ecx,7
  1710. xor esi,edi
  1711. mov ebp,ebx
  1712. punpcklqdq xmm5,xmm2
  1713. movdqa xmm7,xmm4
  1714. add eax,DWORD PTR 16[esp]
  1715. xor ecx,edx
  1716. paddd xmm0,xmm4
  1717. movdqa XMMWORD PTR 80[esp],xmm1
  1718. rol ebx,5
  1719. add eax,esi
  1720. psrldq xmm7,4
  1721. and ebp,ecx
  1722. xor ecx,edx
  1723. pxor xmm5,xmm1
  1724. add eax,ebx
  1725. ror ebx,7
  1726. pxor xmm7,xmm3
  1727. xor ebp,edx
  1728. mov esi,eax
  1729. add edi,DWORD PTR 20[esp]
  1730. pxor xmm5,xmm7
  1731. xor ebx,ecx
  1732. rol eax,5
  1733. movdqa XMMWORD PTR [esp],xmm0
  1734. add edi,ebp
  1735. and esi,ebx
  1736. movdqa xmm1,xmm5
  1737. xor ebx,ecx
  1738. add edi,eax
  1739. ror eax,7
  1740. movdqa xmm7,xmm5
  1741. xor esi,ecx
  1742. pslldq xmm1,12
  1743. paddd xmm5,xmm5
  1744. mov ebp,edi
  1745. add edx,DWORD PTR 24[esp]
  1746. psrld xmm7,31
  1747. xor eax,ebx
  1748. rol edi,5
  1749. movdqa xmm0,xmm1
  1750. add edx,esi
  1751. and ebp,eax
  1752. xor eax,ebx
  1753. psrld xmm1,30
  1754. add edx,edi
  1755. ror edi,7
  1756. por xmm5,xmm7
  1757. xor ebp,ebx
  1758. mov esi,edx
  1759. add ecx,DWORD PTR 28[esp]
  1760. pslld xmm0,2
  1761. xor edi,eax
  1762. rol edx,5
  1763. pxor xmm5,xmm1
  1764. movdqa xmm1,XMMWORD PTR 112[esp]
  1765. add ecx,ebp
  1766. and esi,edi
  1767. pxor xmm5,xmm0
  1768. pshufd xmm6,xmm2,238
  1769. xor edi,eax
  1770. add ecx,edx
  1771. ror edx,7
  1772. xor esi,eax
  1773. mov ebp,ecx
  1774. punpcklqdq xmm6,xmm3
  1775. movdqa xmm0,xmm5
  1776. add ebx,DWORD PTR 32[esp]
  1777. xor edx,edi
  1778. paddd xmm1,xmm5
  1779. movdqa XMMWORD PTR 96[esp],xmm2
  1780. rol ecx,5
  1781. add ebx,esi
  1782. psrldq xmm0,4
  1783. and ebp,edx
  1784. xor edx,edi
  1785. pxor xmm6,xmm2
  1786. add ebx,ecx
  1787. ror ecx,7
  1788. pxor xmm0,xmm4
  1789. xor ebp,edi
  1790. mov esi,ebx
  1791. add eax,DWORD PTR 36[esp]
  1792. pxor xmm6,xmm0
  1793. xor ecx,edx
  1794. rol ebx,5
  1795. movdqa XMMWORD PTR 16[esp],xmm1
  1796. add eax,ebp
  1797. and esi,ecx
  1798. movdqa xmm2,xmm6
  1799. xor ecx,edx
  1800. add eax,ebx
  1801. ror ebx,7
  1802. movdqa xmm0,xmm6
  1803. xor esi,edx
  1804. pslldq xmm2,12
  1805. paddd xmm6,xmm6
  1806. mov ebp,eax
  1807. add edi,DWORD PTR 40[esp]
  1808. psrld xmm0,31
  1809. xor ebx,ecx
  1810. rol eax,5
  1811. movdqa xmm1,xmm2
  1812. add edi,esi
  1813. and ebp,ebx
  1814. xor ebx,ecx
  1815. psrld xmm2,30
  1816. add edi,eax
  1817. ror eax,7
  1818. por xmm6,xmm0
  1819. xor ebp,ecx
  1820. movdqa xmm0,XMMWORD PTR 64[esp]
  1821. mov esi,edi
  1822. add edx,DWORD PTR 44[esp]
  1823. pslld xmm1,2
  1824. xor eax,ebx
  1825. rol edi,5
  1826. pxor xmm6,xmm2
  1827. movdqa xmm2,XMMWORD PTR 112[esp]
  1828. add edx,ebp
  1829. and esi,eax
  1830. pxor xmm6,xmm1
  1831. pshufd xmm7,xmm3,238
  1832. xor eax,ebx
  1833. add edx,edi
  1834. ror edi,7
  1835. xor esi,ebx
  1836. mov ebp,edx
  1837. punpcklqdq xmm7,xmm4
  1838. movdqa xmm1,xmm6
  1839. add ecx,DWORD PTR 48[esp]
  1840. xor edi,eax
  1841. paddd xmm2,xmm6
  1842. movdqa XMMWORD PTR 64[esp],xmm3
  1843. rol edx,5
  1844. add ecx,esi
  1845. psrldq xmm1,4
  1846. and ebp,edi
  1847. xor edi,eax
  1848. pxor xmm7,xmm3
  1849. add ecx,edx
  1850. ror edx,7
  1851. pxor xmm1,xmm5
  1852. xor ebp,eax
  1853. mov esi,ecx
  1854. add ebx,DWORD PTR 52[esp]
  1855. pxor xmm7,xmm1
  1856. xor edx,edi
  1857. rol ecx,5
  1858. movdqa XMMWORD PTR 32[esp],xmm2
  1859. add ebx,ebp
  1860. and esi,edx
  1861. movdqa xmm3,xmm7
  1862. xor edx,edi
  1863. add ebx,ecx
  1864. ror ecx,7
  1865. movdqa xmm1,xmm7
  1866. xor esi,edi
  1867. pslldq xmm3,12
  1868. paddd xmm7,xmm7
  1869. mov ebp,ebx
  1870. add eax,DWORD PTR 56[esp]
  1871. psrld xmm1,31
  1872. xor ecx,edx
  1873. rol ebx,5
  1874. movdqa xmm2,xmm3
  1875. add eax,esi
  1876. and ebp,ecx
  1877. xor ecx,edx
  1878. psrld xmm3,30
  1879. add eax,ebx
  1880. ror ebx,7
  1881. por xmm7,xmm1
  1882. xor ebp,edx
  1883. movdqa xmm1,XMMWORD PTR 80[esp]
  1884. mov esi,eax
  1885. add edi,DWORD PTR 60[esp]
  1886. pslld xmm2,2
  1887. xor ebx,ecx
  1888. rol eax,5
  1889. pxor xmm7,xmm3
  1890. movdqa xmm3,XMMWORD PTR 112[esp]
  1891. add edi,ebp
  1892. and esi,ebx
  1893. pxor xmm7,xmm2
  1894. pshufd xmm2,xmm6,238
  1895. xor ebx,ecx
  1896. add edi,eax
  1897. ror eax,7
  1898. pxor xmm0,xmm4
  1899. punpcklqdq xmm2,xmm7
  1900. xor esi,ecx
  1901. mov ebp,edi
  1902. add edx,DWORD PTR [esp]
  1903. pxor xmm0,xmm1
  1904. movdqa XMMWORD PTR 80[esp],xmm4
  1905. xor eax,ebx
  1906. rol edi,5
  1907. movdqa xmm4,xmm3
  1908. add edx,esi
  1909. paddd xmm3,xmm7
  1910. and ebp,eax
  1911. pxor xmm0,xmm2
  1912. xor eax,ebx
  1913. add edx,edi
  1914. ror edi,7
  1915. xor ebp,ebx
  1916. movdqa xmm2,xmm0
  1917. movdqa XMMWORD PTR 48[esp],xmm3
  1918. mov esi,edx
  1919. add ecx,DWORD PTR 4[esp]
  1920. xor edi,eax
  1921. rol edx,5
  1922. pslld xmm0,2
  1923. add ecx,ebp
  1924. and esi,edi
  1925. psrld xmm2,30
  1926. xor edi,eax
  1927. add ecx,edx
  1928. ror edx,7
  1929. xor esi,eax
  1930. mov ebp,ecx
  1931. add ebx,DWORD PTR 8[esp]
  1932. xor edx,edi
  1933. rol ecx,5
  1934. por xmm0,xmm2
  1935. add ebx,esi
  1936. and ebp,edx
  1937. movdqa xmm2,XMMWORD PTR 96[esp]
  1938. xor edx,edi
  1939. add ebx,ecx
  1940. add eax,DWORD PTR 12[esp]
  1941. xor ebp,edi
  1942. mov esi,ebx
  1943. pshufd xmm3,xmm7,238
  1944. rol ebx,5
  1945. add eax,ebp
  1946. xor esi,edx
  1947. ror ecx,7
  1948. add eax,ebx
  1949. add edi,DWORD PTR 16[esp]
  1950. pxor xmm1,xmm5
  1951. punpcklqdq xmm3,xmm0
  1952. xor esi,ecx
  1953. mov ebp,eax
  1954. rol eax,5
  1955. pxor xmm1,xmm2
  1956. movdqa XMMWORD PTR 96[esp],xmm5
  1957. add edi,esi
  1958. xor ebp,ecx
  1959. movdqa xmm5,xmm4
  1960. ror ebx,7
  1961. paddd xmm4,xmm0
  1962. add edi,eax
  1963. pxor xmm1,xmm3
  1964. add edx,DWORD PTR 20[esp]
  1965. xor ebp,ebx
  1966. mov esi,edi
  1967. rol edi,5
  1968. movdqa xmm3,xmm1
  1969. movdqa XMMWORD PTR [esp],xmm4
  1970. add edx,ebp
  1971. xor esi,ebx
  1972. ror eax,7
  1973. add edx,edi
  1974. pslld xmm1,2
  1975. add ecx,DWORD PTR 24[esp]
  1976. xor esi,eax
  1977. psrld xmm3,30
  1978. mov ebp,edx
  1979. rol edx,5
  1980. add ecx,esi
  1981. xor ebp,eax
  1982. ror edi,7
  1983. add ecx,edx
  1984. por xmm1,xmm3
  1985. add ebx,DWORD PTR 28[esp]
  1986. xor ebp,edi
  1987. movdqa xmm3,XMMWORD PTR 64[esp]
  1988. mov esi,ecx
  1989. rol ecx,5
  1990. add ebx,ebp
  1991. xor esi,edi
  1992. ror edx,7
  1993. pshufd xmm4,xmm0,238
  1994. add ebx,ecx
  1995. add eax,DWORD PTR 32[esp]
  1996. pxor xmm2,xmm6
  1997. punpcklqdq xmm4,xmm1
  1998. xor esi,edx
  1999. mov ebp,ebx
  2000. rol ebx,5
  2001. pxor xmm2,xmm3
  2002. movdqa XMMWORD PTR 64[esp],xmm6
  2003. add eax,esi
  2004. xor ebp,edx
  2005. movdqa xmm6,XMMWORD PTR 128[esp]
  2006. ror ecx,7
  2007. paddd xmm5,xmm1
  2008. add eax,ebx
  2009. pxor xmm2,xmm4
  2010. add edi,DWORD PTR 36[esp]
  2011. xor ebp,ecx
  2012. mov esi,eax
  2013. rol eax,5
  2014. movdqa xmm4,xmm2
  2015. movdqa XMMWORD PTR 16[esp],xmm5
  2016. add edi,ebp
  2017. xor esi,ecx
  2018. ror ebx,7
  2019. add edi,eax
  2020. pslld xmm2,2
  2021. add edx,DWORD PTR 40[esp]
  2022. xor esi,ebx
  2023. psrld xmm4,30
  2024. mov ebp,edi
  2025. rol edi,5
  2026. add edx,esi
  2027. xor ebp,ebx
  2028. ror eax,7
  2029. add edx,edi
  2030. por xmm2,xmm4
  2031. add ecx,DWORD PTR 44[esp]
  2032. xor ebp,eax
  2033. movdqa xmm4,XMMWORD PTR 80[esp]
  2034. mov esi,edx
  2035. rol edx,5
  2036. add ecx,ebp
  2037. xor esi,eax
  2038. ror edi,7
  2039. pshufd xmm5,xmm1,238
  2040. add ecx,edx
  2041. add ebx,DWORD PTR 48[esp]
  2042. pxor xmm3,xmm7
  2043. punpcklqdq xmm5,xmm2
  2044. xor esi,edi
  2045. mov ebp,ecx
  2046. rol ecx,5
  2047. pxor xmm3,xmm4
  2048. movdqa XMMWORD PTR 80[esp],xmm7
  2049. add ebx,esi
  2050. xor ebp,edi
  2051. movdqa xmm7,xmm6
  2052. ror edx,7
  2053. paddd xmm6,xmm2
  2054. add ebx,ecx
  2055. pxor xmm3,xmm5
  2056. add eax,DWORD PTR 52[esp]
  2057. xor ebp,edx
  2058. mov esi,ebx
  2059. rol ebx,5
  2060. movdqa xmm5,xmm3
  2061. movdqa XMMWORD PTR 32[esp],xmm6
  2062. add eax,ebp
  2063. xor esi,edx
  2064. ror ecx,7
  2065. add eax,ebx
  2066. pslld xmm3,2
  2067. add edi,DWORD PTR 56[esp]
  2068. xor esi,ecx
  2069. psrld xmm5,30
  2070. mov ebp,eax
  2071. rol eax,5
  2072. add edi,esi
  2073. xor ebp,ecx
  2074. ror ebx,7
  2075. add edi,eax
  2076. por xmm3,xmm5
  2077. add edx,DWORD PTR 60[esp]
  2078. xor ebp,ebx
  2079. movdqa xmm5,XMMWORD PTR 96[esp]
  2080. mov esi,edi
  2081. rol edi,5
  2082. add edx,ebp
  2083. xor esi,ebx
  2084. ror eax,7
  2085. pshufd xmm6,xmm2,238
  2086. add edx,edi
  2087. add ecx,DWORD PTR [esp]
  2088. pxor xmm4,xmm0
  2089. punpcklqdq xmm6,xmm3
  2090. xor esi,eax
  2091. mov ebp,edx
  2092. rol edx,5
  2093. pxor xmm4,xmm5
  2094. movdqa XMMWORD PTR 96[esp],xmm0
  2095. add ecx,esi
  2096. xor ebp,eax
  2097. movdqa xmm0,xmm7
  2098. ror edi,7
  2099. paddd xmm7,xmm3
  2100. add ecx,edx
  2101. pxor xmm4,xmm6
  2102. add ebx,DWORD PTR 4[esp]
  2103. xor ebp,edi
  2104. mov esi,ecx
  2105. rol ecx,5
  2106. movdqa xmm6,xmm4
  2107. movdqa XMMWORD PTR 48[esp],xmm7
  2108. add ebx,ebp
  2109. xor esi,edi
  2110. ror edx,7
  2111. add ebx,ecx
  2112. pslld xmm4,2
  2113. add eax,DWORD PTR 8[esp]
  2114. xor esi,edx
  2115. psrld xmm6,30
  2116. mov ebp,ebx
  2117. rol ebx,5
  2118. add eax,esi
  2119. xor ebp,edx
  2120. ror ecx,7
  2121. add eax,ebx
  2122. por xmm4,xmm6
  2123. add edi,DWORD PTR 12[esp]
  2124. xor ebp,ecx
  2125. movdqa xmm6,XMMWORD PTR 64[esp]
  2126. mov esi,eax
  2127. rol eax,5
  2128. add edi,ebp
  2129. xor esi,ecx
  2130. ror ebx,7
  2131. pshufd xmm7,xmm3,238
  2132. add edi,eax
  2133. add edx,DWORD PTR 16[esp]
  2134. pxor xmm5,xmm1
  2135. punpcklqdq xmm7,xmm4
  2136. xor esi,ebx
  2137. mov ebp,edi
  2138. rol edi,5
  2139. pxor xmm5,xmm6
  2140. movdqa XMMWORD PTR 64[esp],xmm1
  2141. add edx,esi
  2142. xor ebp,ebx
  2143. movdqa xmm1,xmm0
  2144. ror eax,7
  2145. paddd xmm0,xmm4
  2146. add edx,edi
  2147. pxor xmm5,xmm7
  2148. add ecx,DWORD PTR 20[esp]
  2149. xor ebp,eax
  2150. mov esi,edx
  2151. rol edx,5
  2152. movdqa xmm7,xmm5
  2153. movdqa XMMWORD PTR [esp],xmm0
  2154. add ecx,ebp
  2155. xor esi,eax
  2156. ror edi,7
  2157. add ecx,edx
  2158. pslld xmm5,2
  2159. add ebx,DWORD PTR 24[esp]
  2160. xor esi,edi
  2161. psrld xmm7,30
  2162. mov ebp,ecx
  2163. rol ecx,5
  2164. add ebx,esi
  2165. xor ebp,edi
  2166. ror edx,7
  2167. add ebx,ecx
  2168. por xmm5,xmm7
  2169. add eax,DWORD PTR 28[esp]
  2170. movdqa xmm7,XMMWORD PTR 80[esp]
  2171. ror ecx,7
  2172. mov esi,ebx
  2173. xor ebp,edx
  2174. rol ebx,5
  2175. pshufd xmm0,xmm4,238
  2176. add eax,ebp
  2177. xor esi,ecx
  2178. xor ecx,edx
  2179. add eax,ebx
  2180. add edi,DWORD PTR 32[esp]
  2181. pxor xmm6,xmm2
  2182. punpcklqdq xmm0,xmm5
  2183. and esi,ecx
  2184. xor ecx,edx
  2185. ror ebx,7
  2186. pxor xmm6,xmm7
  2187. movdqa XMMWORD PTR 80[esp],xmm2
  2188. mov ebp,eax
  2189. xor esi,ecx
  2190. rol eax,5
  2191. movdqa xmm2,xmm1
  2192. add edi,esi
  2193. paddd xmm1,xmm5
  2194. xor ebp,ebx
  2195. pxor xmm6,xmm0
  2196. xor ebx,ecx
  2197. add edi,eax
  2198. add edx,DWORD PTR 36[esp]
  2199. and ebp,ebx
  2200. movdqa xmm0,xmm6
  2201. movdqa XMMWORD PTR 16[esp],xmm1
  2202. xor ebx,ecx
  2203. ror eax,7
  2204. mov esi,edi
  2205. xor ebp,ebx
  2206. rol edi,5
  2207. pslld xmm6,2
  2208. add edx,ebp
  2209. xor esi,eax
  2210. psrld xmm0,30
  2211. xor eax,ebx
  2212. add edx,edi
  2213. add ecx,DWORD PTR 40[esp]
  2214. and esi,eax
  2215. xor eax,ebx
  2216. ror edi,7
  2217. por xmm6,xmm0
  2218. mov ebp,edx
  2219. xor esi,eax
  2220. movdqa xmm0,XMMWORD PTR 96[esp]
  2221. rol edx,5
  2222. add ecx,esi
  2223. xor ebp,edi
  2224. xor edi,eax
  2225. add ecx,edx
  2226. pshufd xmm1,xmm5,238
  2227. add ebx,DWORD PTR 44[esp]
  2228. and ebp,edi
  2229. xor edi,eax
  2230. ror edx,7
  2231. mov esi,ecx
  2232. xor ebp,edi
  2233. rol ecx,5
  2234. add ebx,ebp
  2235. xor esi,edx
  2236. xor edx,edi
  2237. add ebx,ecx
  2238. add eax,DWORD PTR 48[esp]
  2239. pxor xmm7,xmm3
  2240. punpcklqdq xmm1,xmm6
  2241. and esi,edx
  2242. xor edx,edi
  2243. ror ecx,7
  2244. pxor xmm7,xmm0
  2245. movdqa XMMWORD PTR 96[esp],xmm3
  2246. mov ebp,ebx
  2247. xor esi,edx
  2248. rol ebx,5
  2249. movdqa xmm3,XMMWORD PTR 144[esp]
  2250. add eax,esi
  2251. paddd xmm2,xmm6
  2252. xor ebp,ecx
  2253. pxor xmm7,xmm1
  2254. xor ecx,edx
  2255. add eax,ebx
  2256. add edi,DWORD PTR 52[esp]
  2257. and ebp,ecx
  2258. movdqa xmm1,xmm7
  2259. movdqa XMMWORD PTR 32[esp],xmm2
  2260. xor ecx,edx
  2261. ror ebx,7
  2262. mov esi,eax
  2263. xor ebp,ecx
  2264. rol eax,5
  2265. pslld xmm7,2
  2266. add edi,ebp
  2267. xor esi,ebx
  2268. psrld xmm1,30
  2269. xor ebx,ecx
  2270. add edi,eax
  2271. add edx,DWORD PTR 56[esp]
  2272. and esi,ebx
  2273. xor ebx,ecx
  2274. ror eax,7
  2275. por xmm7,xmm1
  2276. mov ebp,edi
  2277. xor esi,ebx
  2278. movdqa xmm1,XMMWORD PTR 64[esp]
  2279. rol edi,5
  2280. add edx,esi
  2281. xor ebp,eax
  2282. xor eax,ebx
  2283. add edx,edi
  2284. pshufd xmm2,xmm6,238
  2285. add ecx,DWORD PTR 60[esp]
  2286. and ebp,eax
  2287. xor eax,ebx
  2288. ror edi,7
  2289. mov esi,edx
  2290. xor ebp,eax
  2291. rol edx,5
  2292. add ecx,ebp
  2293. xor esi,edi
  2294. xor edi,eax
  2295. add ecx,edx
  2296. add ebx,DWORD PTR [esp]
  2297. pxor xmm0,xmm4
  2298. punpcklqdq xmm2,xmm7
  2299. and esi,edi
  2300. xor edi,eax
  2301. ror edx,7
  2302. pxor xmm0,xmm1
  2303. movdqa XMMWORD PTR 64[esp],xmm4
  2304. mov ebp,ecx
  2305. xor esi,edi
  2306. rol ecx,5
  2307. movdqa xmm4,xmm3
  2308. add ebx,esi
  2309. paddd xmm3,xmm7
  2310. xor ebp,edx
  2311. pxor xmm0,xmm2
  2312. xor edx,edi
  2313. add ebx,ecx
  2314. add eax,DWORD PTR 4[esp]
  2315. and ebp,edx
  2316. movdqa xmm2,xmm0
  2317. movdqa XMMWORD PTR 48[esp],xmm3
  2318. xor edx,edi
  2319. ror ecx,7
  2320. mov esi,ebx
  2321. xor ebp,edx
  2322. rol ebx,5
  2323. pslld xmm0,2
  2324. add eax,ebp
  2325. xor esi,ecx
  2326. psrld xmm2,30
  2327. xor ecx,edx
  2328. add eax,ebx
  2329. add edi,DWORD PTR 8[esp]
  2330. and esi,ecx
  2331. xor ecx,edx
  2332. ror ebx,7
  2333. por xmm0,xmm2
  2334. mov ebp,eax
  2335. xor esi,ecx
  2336. movdqa xmm2,XMMWORD PTR 80[esp]
  2337. rol eax,5
  2338. add edi,esi
  2339. xor ebp,ebx
  2340. xor ebx,ecx
  2341. add edi,eax
  2342. pshufd xmm3,xmm7,238
  2343. add edx,DWORD PTR 12[esp]
  2344. and ebp,ebx
  2345. xor ebx,ecx
  2346. ror eax,7
  2347. mov esi,edi
  2348. xor ebp,ebx
  2349. rol edi,5
  2350. add edx,ebp
  2351. xor esi,eax
  2352. xor eax,ebx
  2353. add edx,edi
  2354. add ecx,DWORD PTR 16[esp]
  2355. pxor xmm1,xmm5
  2356. punpcklqdq xmm3,xmm0
  2357. and esi,eax
  2358. xor eax,ebx
  2359. ror edi,7
  2360. pxor xmm1,xmm2
  2361. movdqa XMMWORD PTR 80[esp],xmm5
  2362. mov ebp,edx
  2363. xor esi,eax
  2364. rol edx,5
  2365. movdqa xmm5,xmm4
  2366. add ecx,esi
  2367. paddd xmm4,xmm0
  2368. xor ebp,edi
  2369. pxor xmm1,xmm3
  2370. xor edi,eax
  2371. add ecx,edx
  2372. add ebx,DWORD PTR 20[esp]
  2373. and ebp,edi
  2374. movdqa xmm3,xmm1
  2375. movdqa XMMWORD PTR [esp],xmm4
  2376. xor edi,eax
  2377. ror edx,7
  2378. mov esi,ecx
  2379. xor ebp,edi
  2380. rol ecx,5
  2381. pslld xmm1,2
  2382. add ebx,ebp
  2383. xor esi,edx
  2384. psrld xmm3,30
  2385. xor edx,edi
  2386. add ebx,ecx
  2387. add eax,DWORD PTR 24[esp]
  2388. and esi,edx
  2389. xor edx,edi
  2390. ror ecx,7
  2391. por xmm1,xmm3
  2392. mov ebp,ebx
  2393. xor esi,edx
  2394. movdqa xmm3,XMMWORD PTR 96[esp]
  2395. rol ebx,5
  2396. add eax,esi
  2397. xor ebp,ecx
  2398. xor ecx,edx
  2399. add eax,ebx
  2400. pshufd xmm4,xmm0,238
  2401. add edi,DWORD PTR 28[esp]
  2402. and ebp,ecx
  2403. xor ecx,edx
  2404. ror ebx,7
  2405. mov esi,eax
  2406. xor ebp,ecx
  2407. rol eax,5
  2408. add edi,ebp
  2409. xor esi,ebx
  2410. xor ebx,ecx
  2411. add edi,eax
  2412. add edx,DWORD PTR 32[esp]
  2413. pxor xmm2,xmm6
  2414. punpcklqdq xmm4,xmm1
  2415. and esi,ebx
  2416. xor ebx,ecx
  2417. ror eax,7
  2418. pxor xmm2,xmm3
  2419. movdqa XMMWORD PTR 96[esp],xmm6
  2420. mov ebp,edi
  2421. xor esi,ebx
  2422. rol edi,5
  2423. movdqa xmm6,xmm5
  2424. add edx,esi
  2425. paddd xmm5,xmm1
  2426. xor ebp,eax
  2427. pxor xmm2,xmm4
  2428. xor eax,ebx
  2429. add edx,edi
  2430. add ecx,DWORD PTR 36[esp]
  2431. and ebp,eax
  2432. movdqa xmm4,xmm2
  2433. movdqa XMMWORD PTR 16[esp],xmm5
  2434. xor eax,ebx
  2435. ror edi,7
  2436. mov esi,edx
  2437. xor ebp,eax
  2438. rol edx,5
  2439. pslld xmm2,2
  2440. add ecx,ebp
  2441. xor esi,edi
  2442. psrld xmm4,30
  2443. xor edi,eax
  2444. add ecx,edx
  2445. add ebx,DWORD PTR 40[esp]
  2446. and esi,edi
  2447. xor edi,eax
  2448. ror edx,7
  2449. por xmm2,xmm4
  2450. mov ebp,ecx
  2451. xor esi,edi
  2452. movdqa xmm4,XMMWORD PTR 64[esp]
  2453. rol ecx,5
  2454. add ebx,esi
  2455. xor ebp,edx
  2456. xor edx,edi
  2457. add ebx,ecx
  2458. pshufd xmm5,xmm1,238
  2459. add eax,DWORD PTR 44[esp]
  2460. and ebp,edx
  2461. xor edx,edi
  2462. ror ecx,7
  2463. mov esi,ebx
  2464. xor ebp,edx
  2465. rol ebx,5
  2466. add eax,ebp
  2467. xor esi,edx
  2468. add eax,ebx
  2469. add edi,DWORD PTR 48[esp]
  2470. pxor xmm3,xmm7
  2471. punpcklqdq xmm5,xmm2
  2472. xor esi,ecx
  2473. mov ebp,eax
  2474. rol eax,5
  2475. pxor xmm3,xmm4
  2476. movdqa XMMWORD PTR 64[esp],xmm7
  2477. add edi,esi
  2478. xor ebp,ecx
  2479. movdqa xmm7,xmm6
  2480. ror ebx,7
  2481. paddd xmm6,xmm2
  2482. add edi,eax
  2483. pxor xmm3,xmm5
  2484. add edx,DWORD PTR 52[esp]
  2485. xor ebp,ebx
  2486. mov esi,edi
  2487. rol edi,5
  2488. movdqa xmm5,xmm3
  2489. movdqa XMMWORD PTR 32[esp],xmm6
  2490. add edx,ebp
  2491. xor esi,ebx
  2492. ror eax,7
  2493. add edx,edi
  2494. pslld xmm3,2
  2495. add ecx,DWORD PTR 56[esp]
  2496. xor esi,eax
  2497. psrld xmm5,30
  2498. mov ebp,edx
  2499. rol edx,5
  2500. add ecx,esi
  2501. xor ebp,eax
  2502. ror edi,7
  2503. add ecx,edx
  2504. por xmm3,xmm5
  2505. add ebx,DWORD PTR 60[esp]
  2506. xor ebp,edi
  2507. mov esi,ecx
  2508. rol ecx,5
  2509. add ebx,ebp
  2510. xor esi,edi
  2511. ror edx,7
  2512. add ebx,ecx
  2513. add eax,DWORD PTR [esp]
  2514. xor esi,edx
  2515. mov ebp,ebx
  2516. rol ebx,5
  2517. add eax,esi
  2518. xor ebp,edx
  2519. ror ecx,7
  2520. paddd xmm7,xmm3
  2521. add eax,ebx
  2522. add edi,DWORD PTR 4[esp]
  2523. xor ebp,ecx
  2524. mov esi,eax
  2525. movdqa XMMWORD PTR 48[esp],xmm7
  2526. rol eax,5
  2527. add edi,ebp
  2528. xor esi,ecx
  2529. ror ebx,7
  2530. add edi,eax
  2531. add edx,DWORD PTR 8[esp]
  2532. xor esi,ebx
  2533. mov ebp,edi
  2534. rol edi,5
  2535. add edx,esi
  2536. xor ebp,ebx
  2537. ror eax,7
  2538. add edx,edi
  2539. add ecx,DWORD PTR 12[esp]
  2540. xor ebp,eax
  2541. mov esi,edx
  2542. rol edx,5
  2543. add ecx,ebp
  2544. xor esi,eax
  2545. ror edi,7
  2546. add ecx,edx
  2547. mov ebp,DWORD PTR 196[esp]
  2548. cmp ebp,DWORD PTR 200[esp]
  2549. je $L007done
  2550. movdqa xmm7,XMMWORD PTR 160[esp]
  2551. movdqa xmm6,XMMWORD PTR 176[esp]
  2552. movdqu xmm0,XMMWORD PTR [ebp]
  2553. movdqu xmm1,XMMWORD PTR 16[ebp]
  2554. movdqu xmm2,XMMWORD PTR 32[ebp]
  2555. movdqu xmm3,XMMWORD PTR 48[ebp]
  2556. add ebp,64
  2557. DB 102,15,56,0,198
  2558. mov DWORD PTR 196[esp],ebp
  2559. movdqa XMMWORD PTR 96[esp],xmm7
  2560. add ebx,DWORD PTR 16[esp]
  2561. xor esi,edi
  2562. mov ebp,ecx
  2563. rol ecx,5
  2564. add ebx,esi
  2565. xor ebp,edi
  2566. ror edx,7
  2567. DB 102,15,56,0,206
  2568. add ebx,ecx
  2569. add eax,DWORD PTR 20[esp]
  2570. xor ebp,edx
  2571. mov esi,ebx
  2572. paddd xmm0,xmm7
  2573. rol ebx,5
  2574. add eax,ebp
  2575. xor esi,edx
  2576. ror ecx,7
  2577. movdqa XMMWORD PTR [esp],xmm0
  2578. add eax,ebx
  2579. add edi,DWORD PTR 24[esp]
  2580. xor esi,ecx
  2581. mov ebp,eax
  2582. psubd xmm0,xmm7
  2583. rol eax,5
  2584. add edi,esi
  2585. xor ebp,ecx
  2586. ror ebx,7
  2587. add edi,eax
  2588. add edx,DWORD PTR 28[esp]
  2589. xor ebp,ebx
  2590. mov esi,edi
  2591. rol edi,5
  2592. add edx,ebp
  2593. xor esi,ebx
  2594. ror eax,7
  2595. add edx,edi
  2596. add ecx,DWORD PTR 32[esp]
  2597. xor esi,eax
  2598. mov ebp,edx
  2599. rol edx,5
  2600. add ecx,esi
  2601. xor ebp,eax
  2602. ror edi,7
  2603. DB 102,15,56,0,214
  2604. add ecx,edx
  2605. add ebx,DWORD PTR 36[esp]
  2606. xor ebp,edi
  2607. mov esi,ecx
  2608. paddd xmm1,xmm7
  2609. rol ecx,5
  2610. add ebx,ebp
  2611. xor esi,edi
  2612. ror edx,7
  2613. movdqa XMMWORD PTR 16[esp],xmm1
  2614. add ebx,ecx
  2615. add eax,DWORD PTR 40[esp]
  2616. xor esi,edx
  2617. mov ebp,ebx
  2618. psubd xmm1,xmm7
  2619. rol ebx,5
  2620. add eax,esi
  2621. xor ebp,edx
  2622. ror ecx,7
  2623. add eax,ebx
  2624. add edi,DWORD PTR 44[esp]
  2625. xor ebp,ecx
  2626. mov esi,eax
  2627. rol eax,5
  2628. add edi,ebp
  2629. xor esi,ecx
  2630. ror ebx,7
  2631. add edi,eax
  2632. add edx,DWORD PTR 48[esp]
  2633. xor esi,ebx
  2634. mov ebp,edi
  2635. rol edi,5
  2636. add edx,esi
  2637. xor ebp,ebx
  2638. ror eax,7
  2639. DB 102,15,56,0,222
  2640. add edx,edi
  2641. add ecx,DWORD PTR 52[esp]
  2642. xor ebp,eax
  2643. mov esi,edx
  2644. paddd xmm2,xmm7
  2645. rol edx,5
  2646. add ecx,ebp
  2647. xor esi,eax
  2648. ror edi,7
  2649. movdqa XMMWORD PTR 32[esp],xmm2
  2650. add ecx,edx
  2651. add ebx,DWORD PTR 56[esp]
  2652. xor esi,edi
  2653. mov ebp,ecx
  2654. psubd xmm2,xmm7
  2655. rol ecx,5
  2656. add ebx,esi
  2657. xor ebp,edi
  2658. ror edx,7
  2659. add ebx,ecx
  2660. add eax,DWORD PTR 60[esp]
  2661. xor ebp,edx
  2662. mov esi,ebx
  2663. rol ebx,5
  2664. add eax,ebp
  2665. ror ecx,7
  2666. add eax,ebx
  2667. mov ebp,DWORD PTR 192[esp]
  2668. add eax,DWORD PTR [ebp]
  2669. add esi,DWORD PTR 4[ebp]
  2670. add ecx,DWORD PTR 8[ebp]
  2671. mov DWORD PTR [ebp],eax
  2672. add edx,DWORD PTR 12[ebp]
  2673. mov DWORD PTR 4[ebp],esi
  2674. add edi,DWORD PTR 16[ebp]
  2675. mov DWORD PTR 8[ebp],ecx
  2676. mov ebx,ecx
  2677. mov DWORD PTR 12[ebp],edx
  2678. xor ebx,edx
  2679. mov DWORD PTR 16[ebp],edi
  2680. mov ebp,esi
  2681. pshufd xmm4,xmm0,238
  2682. and esi,ebx
  2683. mov ebx,ebp
  2684. jmp $L006loop
  2685. ALIGN 16
  2686. $L007done:
  2687. add ebx,DWORD PTR 16[esp]
  2688. xor esi,edi
  2689. mov ebp,ecx
  2690. rol ecx,5
  2691. add ebx,esi
  2692. xor ebp,edi
  2693. ror edx,7
  2694. add ebx,ecx
  2695. add eax,DWORD PTR 20[esp]
  2696. xor ebp,edx
  2697. mov esi,ebx
  2698. rol ebx,5
  2699. add eax,ebp
  2700. xor esi,edx
  2701. ror ecx,7
  2702. add eax,ebx
  2703. add edi,DWORD PTR 24[esp]
  2704. xor esi,ecx
  2705. mov ebp,eax
  2706. rol eax,5
  2707. add edi,esi
  2708. xor ebp,ecx
  2709. ror ebx,7
  2710. add edi,eax
  2711. add edx,DWORD PTR 28[esp]
  2712. xor ebp,ebx
  2713. mov esi,edi
  2714. rol edi,5
  2715. add edx,ebp
  2716. xor esi,ebx
  2717. ror eax,7
  2718. add edx,edi
  2719. add ecx,DWORD PTR 32[esp]
  2720. xor esi,eax
  2721. mov ebp,edx
  2722. rol edx,5
  2723. add ecx,esi
  2724. xor ebp,eax
  2725. ror edi,7
  2726. add ecx,edx
  2727. add ebx,DWORD PTR 36[esp]
  2728. xor ebp,edi
  2729. mov esi,ecx
  2730. rol ecx,5
  2731. add ebx,ebp
  2732. xor esi,edi
  2733. ror edx,7
  2734. add ebx,ecx
  2735. add eax,DWORD PTR 40[esp]
  2736. xor esi,edx
  2737. mov ebp,ebx
  2738. rol ebx,5
  2739. add eax,esi
  2740. xor ebp,edx
  2741. ror ecx,7
  2742. add eax,ebx
  2743. add edi,DWORD PTR 44[esp]
  2744. xor ebp,ecx
  2745. mov esi,eax
  2746. rol eax,5
  2747. add edi,ebp
  2748. xor esi,ecx
  2749. ror ebx,7
  2750. add edi,eax
  2751. add edx,DWORD PTR 48[esp]
  2752. xor esi,ebx
  2753. mov ebp,edi
  2754. rol edi,5
  2755. add edx,esi
  2756. xor ebp,ebx
  2757. ror eax,7
  2758. add edx,edi
  2759. add ecx,DWORD PTR 52[esp]
  2760. xor ebp,eax
  2761. mov esi,edx
  2762. rol edx,5
  2763. add ecx,ebp
  2764. xor esi,eax
  2765. ror edi,7
  2766. add ecx,edx
  2767. add ebx,DWORD PTR 56[esp]
  2768. xor esi,edi
  2769. mov ebp,ecx
  2770. rol ecx,5
  2771. add ebx,esi
  2772. xor ebp,edi
  2773. ror edx,7
  2774. add ebx,ecx
  2775. add eax,DWORD PTR 60[esp]
  2776. xor ebp,edx
  2777. mov esi,ebx
  2778. rol ebx,5
  2779. add eax,ebp
  2780. ror ecx,7
  2781. add eax,ebx
  2782. mov ebp,DWORD PTR 192[esp]
  2783. add eax,DWORD PTR [ebp]
  2784. mov esp,DWORD PTR 204[esp]
  2785. add esi,DWORD PTR 4[ebp]
  2786. add ecx,DWORD PTR 8[ebp]
  2787. mov DWORD PTR [ebp],eax
  2788. add edx,DWORD PTR 12[ebp]
  2789. mov DWORD PTR 4[ebp],esi
  2790. add edi,DWORD PTR 16[ebp]
  2791. mov DWORD PTR 8[ebp],ecx
  2792. mov DWORD PTR 12[ebp],edx
  2793. mov DWORD PTR 16[ebp],edi
  2794. pop edi
  2795. pop esi
  2796. pop ebx
  2797. pop ebp
  2798. ret
  2799. __sha1_block_data_order_ssse3 ENDP
  2800. ALIGN 16
  2801. __sha1_block_data_order_avx PROC PRIVATE
  2802. push ebp
  2803. push ebx
  2804. push esi
  2805. push edi
  2806. call $L008pic_point
  2807. $L008pic_point:
  2808. pop ebp
  2809. lea ebp,DWORD PTR ($LK_XX_XX-$L008pic_point)[ebp]
  2810. $Lavx_shortcut::
  2811. vzeroall
  2812. vmovdqa xmm7,XMMWORD PTR [ebp]
  2813. vmovdqa xmm0,XMMWORD PTR 16[ebp]
  2814. vmovdqa xmm1,XMMWORD PTR 32[ebp]
  2815. vmovdqa xmm2,XMMWORD PTR 48[ebp]
  2816. vmovdqa xmm6,XMMWORD PTR 64[ebp]
  2817. mov edi,DWORD PTR 20[esp]
  2818. mov ebp,DWORD PTR 24[esp]
  2819. mov edx,DWORD PTR 28[esp]
  2820. mov esi,esp
  2821. sub esp,208
  2822. and esp,-64
  2823. vmovdqa XMMWORD PTR 112[esp],xmm0
  2824. vmovdqa XMMWORD PTR 128[esp],xmm1
  2825. vmovdqa XMMWORD PTR 144[esp],xmm2
  2826. shl edx,6
  2827. vmovdqa XMMWORD PTR 160[esp],xmm7
  2828. add edx,ebp
  2829. vmovdqa XMMWORD PTR 176[esp],xmm6
  2830. add ebp,64
  2831. mov DWORD PTR 192[esp],edi
  2832. mov DWORD PTR 196[esp],ebp
  2833. mov DWORD PTR 200[esp],edx
  2834. mov DWORD PTR 204[esp],esi
  2835. mov eax,DWORD PTR [edi]
  2836. mov ebx,DWORD PTR 4[edi]
  2837. mov ecx,DWORD PTR 8[edi]
  2838. mov edx,DWORD PTR 12[edi]
  2839. mov edi,DWORD PTR 16[edi]
  2840. mov esi,ebx
  2841. vmovdqu xmm0,XMMWORD PTR [ebp-64]
  2842. vmovdqu xmm1,XMMWORD PTR [ebp-48]
  2843. vmovdqu xmm2,XMMWORD PTR [ebp-32]
  2844. vmovdqu xmm3,XMMWORD PTR [ebp-16]
  2845. vpshufb xmm0,xmm0,xmm6
  2846. vpshufb xmm1,xmm1,xmm6
  2847. vpshufb xmm2,xmm2,xmm6
  2848. vmovdqa XMMWORD PTR 96[esp],xmm7
  2849. vpshufb xmm3,xmm3,xmm6
  2850. vpaddd xmm4,xmm0,xmm7
  2851. vpaddd xmm5,xmm1,xmm7
  2852. vpaddd xmm6,xmm2,xmm7
  2853. vmovdqa XMMWORD PTR [esp],xmm4
  2854. mov ebp,ecx
  2855. vmovdqa XMMWORD PTR 16[esp],xmm5
  2856. xor ebp,edx
  2857. vmovdqa XMMWORD PTR 32[esp],xmm6
  2858. and esi,ebp
  2859. jmp $L009loop
  2860. ALIGN 16
  2861. $L009loop:
  2862. shrd ebx,ebx,2
  2863. xor esi,edx
  2864. vpalignr xmm4,xmm1,xmm0,8
  2865. mov ebp,eax
  2866. add edi,DWORD PTR [esp]
  2867. vpaddd xmm7,xmm7,xmm3
  2868. vmovdqa XMMWORD PTR 64[esp],xmm0
  2869. xor ebx,ecx
  2870. shld eax,eax,5
  2871. vpsrldq xmm6,xmm3,4
  2872. add edi,esi
  2873. and ebp,ebx
  2874. vpxor xmm4,xmm4,xmm0
  2875. xor ebx,ecx
  2876. add edi,eax
  2877. vpxor xmm6,xmm6,xmm2
  2878. shrd eax,eax,7
  2879. xor ebp,ecx
  2880. vmovdqa XMMWORD PTR 48[esp],xmm7
  2881. mov esi,edi
  2882. add edx,DWORD PTR 4[esp]
  2883. vpxor xmm4,xmm4,xmm6
  2884. xor eax,ebx
  2885. shld edi,edi,5
  2886. add edx,ebp
  2887. and esi,eax
  2888. vpsrld xmm6,xmm4,31
  2889. xor eax,ebx
  2890. add edx,edi
  2891. shrd edi,edi,7
  2892. xor esi,ebx
  2893. vpslldq xmm0,xmm4,12
  2894. vpaddd xmm4,xmm4,xmm4
  2895. mov ebp,edx
  2896. add ecx,DWORD PTR 8[esp]
  2897. xor edi,eax
  2898. shld edx,edx,5
  2899. vpsrld xmm7,xmm0,30
  2900. vpor xmm4,xmm4,xmm6
  2901. add ecx,esi
  2902. and ebp,edi
  2903. xor edi,eax
  2904. add ecx,edx
  2905. vpslld xmm0,xmm0,2
  2906. shrd edx,edx,7
  2907. xor ebp,eax
  2908. vpxor xmm4,xmm4,xmm7
  2909. mov esi,ecx
  2910. add ebx,DWORD PTR 12[esp]
  2911. xor edx,edi
  2912. shld ecx,ecx,5
  2913. vpxor xmm4,xmm4,xmm0
  2914. add ebx,ebp
  2915. and esi,edx
  2916. vmovdqa xmm0,XMMWORD PTR 96[esp]
  2917. xor edx,edi
  2918. add ebx,ecx
  2919. shrd ecx,ecx,7
  2920. xor esi,edi
  2921. vpalignr xmm5,xmm2,xmm1,8
  2922. mov ebp,ebx
  2923. add eax,DWORD PTR 16[esp]
  2924. vpaddd xmm0,xmm0,xmm4
  2925. vmovdqa XMMWORD PTR 80[esp],xmm1
  2926. xor ecx,edx
  2927. shld ebx,ebx,5
  2928. vpsrldq xmm7,xmm4,4
  2929. add eax,esi
  2930. and ebp,ecx
  2931. vpxor xmm5,xmm5,xmm1
  2932. xor ecx,edx
  2933. add eax,ebx
  2934. vpxor xmm7,xmm7,xmm3
  2935. shrd ebx,ebx,7
  2936. xor ebp,edx
  2937. vmovdqa XMMWORD PTR [esp],xmm0
  2938. mov esi,eax
  2939. add edi,DWORD PTR 20[esp]
  2940. vpxor xmm5,xmm5,xmm7
  2941. xor ebx,ecx
  2942. shld eax,eax,5
  2943. add edi,ebp
  2944. and esi,ebx
  2945. vpsrld xmm7,xmm5,31
  2946. xor ebx,ecx
  2947. add edi,eax
  2948. shrd eax,eax,7
  2949. xor esi,ecx
  2950. vpslldq xmm1,xmm5,12
  2951. vpaddd xmm5,xmm5,xmm5
  2952. mov ebp,edi
  2953. add edx,DWORD PTR 24[esp]
  2954. xor eax,ebx
  2955. shld edi,edi,5
  2956. vpsrld xmm0,xmm1,30
  2957. vpor xmm5,xmm5,xmm7
  2958. add edx,esi
  2959. and ebp,eax
  2960. xor eax,ebx
  2961. add edx,edi
  2962. vpslld xmm1,xmm1,2
  2963. shrd edi,edi,7
  2964. xor ebp,ebx
  2965. vpxor xmm5,xmm5,xmm0
  2966. mov esi,edx
  2967. add ecx,DWORD PTR 28[esp]
  2968. xor edi,eax
  2969. shld edx,edx,5
  2970. vpxor xmm5,xmm5,xmm1
  2971. add ecx,ebp
  2972. and esi,edi
  2973. vmovdqa xmm1,XMMWORD PTR 112[esp]
  2974. xor edi,eax
  2975. add ecx,edx
  2976. shrd edx,edx,7
  2977. xor esi,eax
  2978. vpalignr xmm6,xmm3,xmm2,8
  2979. mov ebp,ecx
  2980. add ebx,DWORD PTR 32[esp]
  2981. vpaddd xmm1,xmm1,xmm5
  2982. vmovdqa XMMWORD PTR 96[esp],xmm2
  2983. xor edx,edi
  2984. shld ecx,ecx,5
  2985. vpsrldq xmm0,xmm5,4
  2986. add ebx,esi
  2987. and ebp,edx
  2988. vpxor xmm6,xmm6,xmm2
  2989. xor edx,edi
  2990. add ebx,ecx
  2991. vpxor xmm0,xmm0,xmm4
  2992. shrd ecx,ecx,7
  2993. xor ebp,edi
  2994. vmovdqa XMMWORD PTR 16[esp],xmm1
  2995. mov esi,ebx
  2996. add eax,DWORD PTR 36[esp]
  2997. vpxor xmm6,xmm6,xmm0
  2998. xor ecx,edx
  2999. shld ebx,ebx,5
  3000. add eax,ebp
  3001. and esi,ecx
  3002. vpsrld xmm0,xmm6,31
  3003. xor ecx,edx
  3004. add eax,ebx
  3005. shrd ebx,ebx,7
  3006. xor esi,edx
  3007. vpslldq xmm2,xmm6,12
  3008. vpaddd xmm6,xmm6,xmm6
  3009. mov ebp,eax
  3010. add edi,DWORD PTR 40[esp]
  3011. xor ebx,ecx
  3012. shld eax,eax,5
  3013. vpsrld xmm1,xmm2,30
  3014. vpor xmm6,xmm6,xmm0
  3015. add edi,esi
  3016. and ebp,ebx
  3017. xor ebx,ecx
  3018. add edi,eax
  3019. vpslld xmm2,xmm2,2
  3020. vmovdqa xmm0,XMMWORD PTR 64[esp]
  3021. shrd eax,eax,7
  3022. xor ebp,ecx
  3023. vpxor xmm6,xmm6,xmm1
  3024. mov esi,edi
  3025. add edx,DWORD PTR 44[esp]
  3026. xor eax,ebx
  3027. shld edi,edi,5
  3028. vpxor xmm6,xmm6,xmm2
  3029. add edx,ebp
  3030. and esi,eax
  3031. vmovdqa xmm2,XMMWORD PTR 112[esp]
  3032. xor eax,ebx
  3033. add edx,edi
  3034. shrd edi,edi,7
  3035. xor esi,ebx
  3036. vpalignr xmm7,xmm4,xmm3,8
  3037. mov ebp,edx
  3038. add ecx,DWORD PTR 48[esp]
  3039. vpaddd xmm2,xmm2,xmm6
  3040. vmovdqa XMMWORD PTR 64[esp],xmm3
  3041. xor edi,eax
  3042. shld edx,edx,5
  3043. vpsrldq xmm1,xmm6,4
  3044. add ecx,esi
  3045. and ebp,edi
  3046. vpxor xmm7,xmm7,xmm3
  3047. xor edi,eax
  3048. add ecx,edx
  3049. vpxor xmm1,xmm1,xmm5
  3050. shrd edx,edx,7
  3051. xor ebp,eax
  3052. vmovdqa XMMWORD PTR 32[esp],xmm2
  3053. mov esi,ecx
  3054. add ebx,DWORD PTR 52[esp]
  3055. vpxor xmm7,xmm7,xmm1
  3056. xor edx,edi
  3057. shld ecx,ecx,5
  3058. add ebx,ebp
  3059. and esi,edx
  3060. vpsrld xmm1,xmm7,31
  3061. xor edx,edi
  3062. add ebx,ecx
  3063. shrd ecx,ecx,7
  3064. xor esi,edi
  3065. vpslldq xmm3,xmm7,12
  3066. vpaddd xmm7,xmm7,xmm7
  3067. mov ebp,ebx
  3068. add eax,DWORD PTR 56[esp]
  3069. xor ecx,edx
  3070. shld ebx,ebx,5
  3071. vpsrld xmm2,xmm3,30
  3072. vpor xmm7,xmm7,xmm1
  3073. add eax,esi
  3074. and ebp,ecx
  3075. xor ecx,edx
  3076. add eax,ebx
  3077. vpslld xmm3,xmm3,2
  3078. vmovdqa xmm1,XMMWORD PTR 80[esp]
  3079. shrd ebx,ebx,7
  3080. xor ebp,edx
  3081. vpxor xmm7,xmm7,xmm2
  3082. mov esi,eax
  3083. add edi,DWORD PTR 60[esp]
  3084. xor ebx,ecx
  3085. shld eax,eax,5
  3086. vpxor xmm7,xmm7,xmm3
  3087. add edi,ebp
  3088. and esi,ebx
  3089. vmovdqa xmm3,XMMWORD PTR 112[esp]
  3090. xor ebx,ecx
  3091. add edi,eax
  3092. vpalignr xmm2,xmm7,xmm6,8
  3093. vpxor xmm0,xmm0,xmm4
  3094. shrd eax,eax,7
  3095. xor esi,ecx
  3096. mov ebp,edi
  3097. add edx,DWORD PTR [esp]
  3098. vpxor xmm0,xmm0,xmm1
  3099. vmovdqa XMMWORD PTR 80[esp],xmm4
  3100. xor eax,ebx
  3101. shld edi,edi,5
  3102. vmovdqa xmm4,xmm3
  3103. vpaddd xmm3,xmm3,xmm7
  3104. add edx,esi
  3105. and ebp,eax
  3106. vpxor xmm0,xmm0,xmm2
  3107. xor eax,ebx
  3108. add edx,edi
  3109. shrd edi,edi,7
  3110. xor ebp,ebx
  3111. vpsrld xmm2,xmm0,30
  3112. vmovdqa XMMWORD PTR 48[esp],xmm3
  3113. mov esi,edx
  3114. add ecx,DWORD PTR 4[esp]
  3115. xor edi,eax
  3116. shld edx,edx,5
  3117. vpslld xmm0,xmm0,2
  3118. add ecx,ebp
  3119. and esi,edi
  3120. xor edi,eax
  3121. add ecx,edx
  3122. shrd edx,edx,7
  3123. xor esi,eax
  3124. mov ebp,ecx
  3125. add ebx,DWORD PTR 8[esp]
  3126. vpor xmm0,xmm0,xmm2
  3127. xor edx,edi
  3128. shld ecx,ecx,5
  3129. vmovdqa xmm2,XMMWORD PTR 96[esp]
  3130. add ebx,esi
  3131. and ebp,edx
  3132. xor edx,edi
  3133. add ebx,ecx
  3134. add eax,DWORD PTR 12[esp]
  3135. xor ebp,edi
  3136. mov esi,ebx
  3137. shld ebx,ebx,5
  3138. add eax,ebp
  3139. xor esi,edx
  3140. shrd ecx,ecx,7
  3141. add eax,ebx
  3142. vpalignr xmm3,xmm0,xmm7,8
  3143. vpxor xmm1,xmm1,xmm5
  3144. add edi,DWORD PTR 16[esp]
  3145. xor esi,ecx
  3146. mov ebp,eax
  3147. shld eax,eax,5
  3148. vpxor xmm1,xmm1,xmm2
  3149. vmovdqa XMMWORD PTR 96[esp],xmm5
  3150. add edi,esi
  3151. xor ebp,ecx
  3152. vmovdqa xmm5,xmm4
  3153. vpaddd xmm4,xmm4,xmm0
  3154. shrd ebx,ebx,7
  3155. add edi,eax
  3156. vpxor xmm1,xmm1,xmm3
  3157. add edx,DWORD PTR 20[esp]
  3158. xor ebp,ebx
  3159. mov esi,edi
  3160. shld edi,edi,5
  3161. vpsrld xmm3,xmm1,30
  3162. vmovdqa XMMWORD PTR [esp],xmm4
  3163. add edx,ebp
  3164. xor esi,ebx
  3165. shrd eax,eax,7
  3166. add edx,edi
  3167. vpslld xmm1,xmm1,2
  3168. add ecx,DWORD PTR 24[esp]
  3169. xor esi,eax
  3170. mov ebp,edx
  3171. shld edx,edx,5
  3172. add ecx,esi
  3173. xor ebp,eax
  3174. shrd edi,edi,7
  3175. add ecx,edx
  3176. vpor xmm1,xmm1,xmm3
  3177. add ebx,DWORD PTR 28[esp]
  3178. xor ebp,edi
  3179. vmovdqa xmm3,XMMWORD PTR 64[esp]
  3180. mov esi,ecx
  3181. shld ecx,ecx,5
  3182. add ebx,ebp
  3183. xor esi,edi
  3184. shrd edx,edx,7
  3185. add ebx,ecx
  3186. vpalignr xmm4,xmm1,xmm0,8
  3187. vpxor xmm2,xmm2,xmm6
  3188. add eax,DWORD PTR 32[esp]
  3189. xor esi,edx
  3190. mov ebp,ebx
  3191. shld ebx,ebx,5
  3192. vpxor xmm2,xmm2,xmm3
  3193. vmovdqa XMMWORD PTR 64[esp],xmm6
  3194. add eax,esi
  3195. xor ebp,edx
  3196. vmovdqa xmm6,XMMWORD PTR 128[esp]
  3197. vpaddd xmm5,xmm5,xmm1
  3198. shrd ecx,ecx,7
  3199. add eax,ebx
  3200. vpxor xmm2,xmm2,xmm4
  3201. add edi,DWORD PTR 36[esp]
  3202. xor ebp,ecx
  3203. mov esi,eax
  3204. shld eax,eax,5
  3205. vpsrld xmm4,xmm2,30
  3206. vmovdqa XMMWORD PTR 16[esp],xmm5
  3207. add edi,ebp
  3208. xor esi,ecx
  3209. shrd ebx,ebx,7
  3210. add edi,eax
  3211. vpslld xmm2,xmm2,2
  3212. add edx,DWORD PTR 40[esp]
  3213. xor esi,ebx
  3214. mov ebp,edi
  3215. shld edi,edi,5
  3216. add edx,esi
  3217. xor ebp,ebx
  3218. shrd eax,eax,7
  3219. add edx,edi
  3220. vpor xmm2,xmm2,xmm4
  3221. add ecx,DWORD PTR 44[esp]
  3222. xor ebp,eax
  3223. vmovdqa xmm4,XMMWORD PTR 80[esp]
  3224. mov esi,edx
  3225. shld edx,edx,5
  3226. add ecx,ebp
  3227. xor esi,eax
  3228. shrd edi,edi,7
  3229. add ecx,edx
  3230. vpalignr xmm5,xmm2,xmm1,8
  3231. vpxor xmm3,xmm3,xmm7
  3232. add ebx,DWORD PTR 48[esp]
  3233. xor esi,edi
  3234. mov ebp,ecx
  3235. shld ecx,ecx,5
  3236. vpxor xmm3,xmm3,xmm4
  3237. vmovdqa XMMWORD PTR 80[esp],xmm7
  3238. add ebx,esi
  3239. xor ebp,edi
  3240. vmovdqa xmm7,xmm6
  3241. vpaddd xmm6,xmm6,xmm2
  3242. shrd edx,edx,7
  3243. add ebx,ecx
  3244. vpxor xmm3,xmm3,xmm5
  3245. add eax,DWORD PTR 52[esp]
  3246. xor ebp,edx
  3247. mov esi,ebx
  3248. shld ebx,ebx,5
  3249. vpsrld xmm5,xmm3,30
  3250. vmovdqa XMMWORD PTR 32[esp],xmm6
  3251. add eax,ebp
  3252. xor esi,edx
  3253. shrd ecx,ecx,7
  3254. add eax,ebx
  3255. vpslld xmm3,xmm3,2
  3256. add edi,DWORD PTR 56[esp]
  3257. xor esi,ecx
  3258. mov ebp,eax
  3259. shld eax,eax,5
  3260. add edi,esi
  3261. xor ebp,ecx
  3262. shrd ebx,ebx,7
  3263. add edi,eax
  3264. vpor xmm3,xmm3,xmm5
  3265. add edx,DWORD PTR 60[esp]
  3266. xor ebp,ebx
  3267. vmovdqa xmm5,XMMWORD PTR 96[esp]
  3268. mov esi,edi
  3269. shld edi,edi,5
  3270. add edx,ebp
  3271. xor esi,ebx
  3272. shrd eax,eax,7
  3273. add edx,edi
  3274. vpalignr xmm6,xmm3,xmm2,8
  3275. vpxor xmm4,xmm4,xmm0
  3276. add ecx,DWORD PTR [esp]
  3277. xor esi,eax
  3278. mov ebp,edx
  3279. shld edx,edx,5
  3280. vpxor xmm4,xmm4,xmm5
  3281. vmovdqa XMMWORD PTR 96[esp],xmm0
  3282. add ecx,esi
  3283. xor ebp,eax
  3284. vmovdqa xmm0,xmm7
  3285. vpaddd xmm7,xmm7,xmm3
  3286. shrd edi,edi,7
  3287. add ecx,edx
  3288. vpxor xmm4,xmm4,xmm6
  3289. add ebx,DWORD PTR 4[esp]
  3290. xor ebp,edi
  3291. mov esi,ecx
  3292. shld ecx,ecx,5
  3293. vpsrld xmm6,xmm4,30
  3294. vmovdqa XMMWORD PTR 48[esp],xmm7
  3295. add ebx,ebp
  3296. xor esi,edi
  3297. shrd edx,edx,7
  3298. add ebx,ecx
  3299. vpslld xmm4,xmm4,2
  3300. add eax,DWORD PTR 8[esp]
  3301. xor esi,edx
  3302. mov ebp,ebx
  3303. shld ebx,ebx,5
  3304. add eax,esi
  3305. xor ebp,edx
  3306. shrd ecx,ecx,7
  3307. add eax,ebx
  3308. vpor xmm4,xmm4,xmm6
  3309. add edi,DWORD PTR 12[esp]
  3310. xor ebp,ecx
  3311. vmovdqa xmm6,XMMWORD PTR 64[esp]
  3312. mov esi,eax
  3313. shld eax,eax,5
  3314. add edi,ebp
  3315. xor esi,ecx
  3316. shrd ebx,ebx,7
  3317. add edi,eax
  3318. vpalignr xmm7,xmm4,xmm3,8
  3319. vpxor xmm5,xmm5,xmm1
  3320. add edx,DWORD PTR 16[esp]
  3321. xor esi,ebx
  3322. mov ebp,edi
  3323. shld edi,edi,5
  3324. vpxor xmm5,xmm5,xmm6
  3325. vmovdqa XMMWORD PTR 64[esp],xmm1
  3326. add edx,esi
  3327. xor ebp,ebx
  3328. vmovdqa xmm1,xmm0
  3329. vpaddd xmm0,xmm0,xmm4
  3330. shrd eax,eax,7
  3331. add edx,edi
  3332. vpxor xmm5,xmm5,xmm7
  3333. add ecx,DWORD PTR 20[esp]
  3334. xor ebp,eax
  3335. mov esi,edx
  3336. shld edx,edx,5
  3337. vpsrld xmm7,xmm5,30
  3338. vmovdqa XMMWORD PTR [esp],xmm0
  3339. add ecx,ebp
  3340. xor esi,eax
  3341. shrd edi,edi,7
  3342. add ecx,edx
  3343. vpslld xmm5,xmm5,2
  3344. add ebx,DWORD PTR 24[esp]
  3345. xor esi,edi
  3346. mov ebp,ecx
  3347. shld ecx,ecx,5
  3348. add ebx,esi
  3349. xor ebp,edi
  3350. shrd edx,edx,7
  3351. add ebx,ecx
  3352. vpor xmm5,xmm5,xmm7
  3353. add eax,DWORD PTR 28[esp]
  3354. vmovdqa xmm7,XMMWORD PTR 80[esp]
  3355. shrd ecx,ecx,7
  3356. mov esi,ebx
  3357. xor ebp,edx
  3358. shld ebx,ebx,5
  3359. add eax,ebp
  3360. xor esi,ecx
  3361. xor ecx,edx
  3362. add eax,ebx
  3363. vpalignr xmm0,xmm5,xmm4,8
  3364. vpxor xmm6,xmm6,xmm2
  3365. add edi,DWORD PTR 32[esp]
  3366. and esi,ecx
  3367. xor ecx,edx
  3368. shrd ebx,ebx,7
  3369. vpxor xmm6,xmm6,xmm7
  3370. vmovdqa XMMWORD PTR 80[esp],xmm2
  3371. mov ebp,eax
  3372. xor esi,ecx
  3373. vmovdqa xmm2,xmm1
  3374. vpaddd xmm1,xmm1,xmm5
  3375. shld eax,eax,5
  3376. add edi,esi
  3377. vpxor xmm6,xmm6,xmm0
  3378. xor ebp,ebx
  3379. xor ebx,ecx
  3380. add edi,eax
  3381. add edx,DWORD PTR 36[esp]
  3382. vpsrld xmm0,xmm6,30
  3383. vmovdqa XMMWORD PTR 16[esp],xmm1
  3384. and ebp,ebx
  3385. xor ebx,ecx
  3386. shrd eax,eax,7
  3387. mov esi,edi
  3388. vpslld xmm6,xmm6,2
  3389. xor ebp,ebx
  3390. shld edi,edi,5
  3391. add edx,ebp
  3392. xor esi,eax
  3393. xor eax,ebx
  3394. add edx,edi
  3395. add ecx,DWORD PTR 40[esp]
  3396. and esi,eax
  3397. vpor xmm6,xmm6,xmm0
  3398. xor eax,ebx
  3399. shrd edi,edi,7
  3400. vmovdqa xmm0,XMMWORD PTR 96[esp]
  3401. mov ebp,edx
  3402. xor esi,eax
  3403. shld edx,edx,5
  3404. add ecx,esi
  3405. xor ebp,edi
  3406. xor edi,eax
  3407. add ecx,edx
  3408. add ebx,DWORD PTR 44[esp]
  3409. and ebp,edi
  3410. xor edi,eax
  3411. shrd edx,edx,7
  3412. mov esi,ecx
  3413. xor ebp,edi
  3414. shld ecx,ecx,5
  3415. add ebx,ebp
  3416. xor esi,edx
  3417. xor edx,edi
  3418. add ebx,ecx
  3419. vpalignr xmm1,xmm6,xmm5,8
  3420. vpxor xmm7,xmm7,xmm3
  3421. add eax,DWORD PTR 48[esp]
  3422. and esi,edx
  3423. xor edx,edi
  3424. shrd ecx,ecx,7
  3425. vpxor xmm7,xmm7,xmm0
  3426. vmovdqa XMMWORD PTR 96[esp],xmm3
  3427. mov ebp,ebx
  3428. xor esi,edx
  3429. vmovdqa xmm3,XMMWORD PTR 144[esp]
  3430. vpaddd xmm2,xmm2,xmm6
  3431. shld ebx,ebx,5
  3432. add eax,esi
  3433. vpxor xmm7,xmm7,xmm1
  3434. xor ebp,ecx
  3435. xor ecx,edx
  3436. add eax,ebx
  3437. add edi,DWORD PTR 52[esp]
  3438. vpsrld xmm1,xmm7,30
  3439. vmovdqa XMMWORD PTR 32[esp],xmm2
  3440. and ebp,ecx
  3441. xor ecx,edx
  3442. shrd ebx,ebx,7
  3443. mov esi,eax
  3444. vpslld xmm7,xmm7,2
  3445. xor ebp,ecx
  3446. shld eax,eax,5
  3447. add edi,ebp
  3448. xor esi,ebx
  3449. xor ebx,ecx
  3450. add edi,eax
  3451. add edx,DWORD PTR 56[esp]
  3452. and esi,ebx
  3453. vpor xmm7,xmm7,xmm1
  3454. xor ebx,ecx
  3455. shrd eax,eax,7
  3456. vmovdqa xmm1,XMMWORD PTR 64[esp]
  3457. mov ebp,edi
  3458. xor esi,ebx
  3459. shld edi,edi,5
  3460. add edx,esi
  3461. xor ebp,eax
  3462. xor eax,ebx
  3463. add edx,edi
  3464. add ecx,DWORD PTR 60[esp]
  3465. and ebp,eax
  3466. xor eax,ebx
  3467. shrd edi,edi,7
  3468. mov esi,edx
  3469. xor ebp,eax
  3470. shld edx,edx,5
  3471. add ecx,ebp
  3472. xor esi,edi
  3473. xor edi,eax
  3474. add ecx,edx
  3475. vpalignr xmm2,xmm7,xmm6,8
  3476. vpxor xmm0,xmm0,xmm4
  3477. add ebx,DWORD PTR [esp]
  3478. and esi,edi
  3479. xor edi,eax
  3480. shrd edx,edx,7
  3481. vpxor xmm0,xmm0,xmm1
  3482. vmovdqa XMMWORD PTR 64[esp],xmm4
  3483. mov ebp,ecx
  3484. xor esi,edi
  3485. vmovdqa xmm4,xmm3
  3486. vpaddd xmm3,xmm3,xmm7
  3487. shld ecx,ecx,5
  3488. add ebx,esi
  3489. vpxor xmm0,xmm0,xmm2
  3490. xor ebp,edx
  3491. xor edx,edi
  3492. add ebx,ecx
  3493. add eax,DWORD PTR 4[esp]
  3494. vpsrld xmm2,xmm0,30
  3495. vmovdqa XMMWORD PTR 48[esp],xmm3
  3496. and ebp,edx
  3497. xor edx,edi
  3498. shrd ecx,ecx,7
  3499. mov esi,ebx
  3500. vpslld xmm0,xmm0,2
  3501. xor ebp,edx
  3502. shld ebx,ebx,5
  3503. add eax,ebp
  3504. xor esi,ecx
  3505. xor ecx,edx
  3506. add eax,ebx
  3507. add edi,DWORD PTR 8[esp]
  3508. and esi,ecx
  3509. vpor xmm0,xmm0,xmm2
  3510. xor ecx,edx
  3511. shrd ebx,ebx,7
  3512. vmovdqa xmm2,XMMWORD PTR 80[esp]
  3513. mov ebp,eax
  3514. xor esi,ecx
  3515. shld eax,eax,5
  3516. add edi,esi
  3517. xor ebp,ebx
  3518. xor ebx,ecx
  3519. add edi,eax
  3520. add edx,DWORD PTR 12[esp]
  3521. and ebp,ebx
  3522. xor ebx,ecx
  3523. shrd eax,eax,7
  3524. mov esi,edi
  3525. xor ebp,ebx
  3526. shld edi,edi,5
  3527. add edx,ebp
  3528. xor esi,eax
  3529. xor eax,ebx
  3530. add edx,edi
  3531. vpalignr xmm3,xmm0,xmm7,8
  3532. vpxor xmm1,xmm1,xmm5
  3533. add ecx,DWORD PTR 16[esp]
  3534. and esi,eax
  3535. xor eax,ebx
  3536. shrd edi,edi,7
  3537. vpxor xmm1,xmm1,xmm2
  3538. vmovdqa XMMWORD PTR 80[esp],xmm5
  3539. mov ebp,edx
  3540. xor esi,eax
  3541. vmovdqa xmm5,xmm4
  3542. vpaddd xmm4,xmm4,xmm0
  3543. shld edx,edx,5
  3544. add ecx,esi
  3545. vpxor xmm1,xmm1,xmm3
  3546. xor ebp,edi
  3547. xor edi,eax
  3548. add ecx,edx
  3549. add ebx,DWORD PTR 20[esp]
  3550. vpsrld xmm3,xmm1,30
  3551. vmovdqa XMMWORD PTR [esp],xmm4
  3552. and ebp,edi
  3553. xor edi,eax
  3554. shrd edx,edx,7
  3555. mov esi,ecx
  3556. vpslld xmm1,xmm1,2
  3557. xor ebp,edi
  3558. shld ecx,ecx,5
  3559. add ebx,ebp
  3560. xor esi,edx
  3561. xor edx,edi
  3562. add ebx,ecx
  3563. add eax,DWORD PTR 24[esp]
  3564. and esi,edx
  3565. vpor xmm1,xmm1,xmm3
  3566. xor edx,edi
  3567. shrd ecx,ecx,7
  3568. vmovdqa xmm3,XMMWORD PTR 96[esp]
  3569. mov ebp,ebx
  3570. xor esi,edx
  3571. shld ebx,ebx,5
  3572. add eax,esi
  3573. xor ebp,ecx
  3574. xor ecx,edx
  3575. add eax,ebx
  3576. add edi,DWORD PTR 28[esp]
  3577. and ebp,ecx
  3578. xor ecx,edx
  3579. shrd ebx,ebx,7
  3580. mov esi,eax
  3581. xor ebp,ecx
  3582. shld eax,eax,5
  3583. add edi,ebp
  3584. xor esi,ebx
  3585. xor ebx,ecx
  3586. add edi,eax
  3587. vpalignr xmm4,xmm1,xmm0,8
  3588. vpxor xmm2,xmm2,xmm6
  3589. add edx,DWORD PTR 32[esp]
  3590. and esi,ebx
  3591. xor ebx,ecx
  3592. shrd eax,eax,7
  3593. vpxor xmm2,xmm2,xmm3
  3594. vmovdqa XMMWORD PTR 96[esp],xmm6
  3595. mov ebp,edi
  3596. xor esi,ebx
  3597. vmovdqa xmm6,xmm5
  3598. vpaddd xmm5,xmm5,xmm1
  3599. shld edi,edi,5
  3600. add edx,esi
  3601. vpxor xmm2,xmm2,xmm4
  3602. xor ebp,eax
  3603. xor eax,ebx
  3604. add edx,edi
  3605. add ecx,DWORD PTR 36[esp]
  3606. vpsrld xmm4,xmm2,30
  3607. vmovdqa XMMWORD PTR 16[esp],xmm5
  3608. and ebp,eax
  3609. xor eax,ebx
  3610. shrd edi,edi,7
  3611. mov esi,edx
  3612. vpslld xmm2,xmm2,2
  3613. xor ebp,eax
  3614. shld edx,edx,5
  3615. add ecx,ebp
  3616. xor esi,edi
  3617. xor edi,eax
  3618. add ecx,edx
  3619. add ebx,DWORD PTR 40[esp]
  3620. and esi,edi
  3621. vpor xmm2,xmm2,xmm4
  3622. xor edi,eax
  3623. shrd edx,edx,7
  3624. vmovdqa xmm4,XMMWORD PTR 64[esp]
  3625. mov ebp,ecx
  3626. xor esi,edi
  3627. shld ecx,ecx,5
  3628. add ebx,esi
  3629. xor ebp,edx
  3630. xor edx,edi
  3631. add ebx,ecx
  3632. add eax,DWORD PTR 44[esp]
  3633. and ebp,edx
  3634. xor edx,edi
  3635. shrd ecx,ecx,7
  3636. mov esi,ebx
  3637. xor ebp,edx
  3638. shld ebx,ebx,5
  3639. add eax,ebp
  3640. xor esi,edx
  3641. add eax,ebx
  3642. vpalignr xmm5,xmm2,xmm1,8
  3643. vpxor xmm3,xmm3,xmm7
  3644. add edi,DWORD PTR 48[esp]
  3645. xor esi,ecx
  3646. mov ebp,eax
  3647. shld eax,eax,5
  3648. vpxor xmm3,xmm3,xmm4
  3649. vmovdqa XMMWORD PTR 64[esp],xmm7
  3650. add edi,esi
  3651. xor ebp,ecx
  3652. vmovdqa xmm7,xmm6
  3653. vpaddd xmm6,xmm6,xmm2
  3654. shrd ebx,ebx,7
  3655. add edi,eax
  3656. vpxor xmm3,xmm3,xmm5
  3657. add edx,DWORD PTR 52[esp]
  3658. xor ebp,ebx
  3659. mov esi,edi
  3660. shld edi,edi,5
  3661. vpsrld xmm5,xmm3,30
  3662. vmovdqa XMMWORD PTR 32[esp],xmm6
  3663. add edx,ebp
  3664. xor esi,ebx
  3665. shrd eax,eax,7
  3666. add edx,edi
  3667. vpslld xmm3,xmm3,2
  3668. add ecx,DWORD PTR 56[esp]
  3669. xor esi,eax
  3670. mov ebp,edx
  3671. shld edx,edx,5
  3672. add ecx,esi
  3673. xor ebp,eax
  3674. shrd edi,edi,7
  3675. add ecx,edx
  3676. vpor xmm3,xmm3,xmm5
  3677. add ebx,DWORD PTR 60[esp]
  3678. xor ebp,edi
  3679. mov esi,ecx
  3680. shld ecx,ecx,5
  3681. add ebx,ebp
  3682. xor esi,edi
  3683. shrd edx,edx,7
  3684. add ebx,ecx
  3685. add eax,DWORD PTR [esp]
  3686. vpaddd xmm7,xmm7,xmm3
  3687. xor esi,edx
  3688. mov ebp,ebx
  3689. shld ebx,ebx,5
  3690. add eax,esi
  3691. vmovdqa XMMWORD PTR 48[esp],xmm7
  3692. xor ebp,edx
  3693. shrd ecx,ecx,7
  3694. add eax,ebx
  3695. add edi,DWORD PTR 4[esp]
  3696. xor ebp,ecx
  3697. mov esi,eax
  3698. shld eax,eax,5
  3699. add edi,ebp
  3700. xor esi,ecx
  3701. shrd ebx,ebx,7
  3702. add edi,eax
  3703. add edx,DWORD PTR 8[esp]
  3704. xor esi,ebx
  3705. mov ebp,edi
  3706. shld edi,edi,5
  3707. add edx,esi
  3708. xor ebp,ebx
  3709. shrd eax,eax,7
  3710. add edx,edi
  3711. add ecx,DWORD PTR 12[esp]
  3712. xor ebp,eax
  3713. mov esi,edx
  3714. shld edx,edx,5
  3715. add ecx,ebp
  3716. xor esi,eax
  3717. shrd edi,edi,7
  3718. add ecx,edx
  3719. mov ebp,DWORD PTR 196[esp]
  3720. cmp ebp,DWORD PTR 200[esp]
  3721. je $L010done
  3722. vmovdqa xmm7,XMMWORD PTR 160[esp]
  3723. vmovdqa xmm6,XMMWORD PTR 176[esp]
  3724. vmovdqu xmm0,XMMWORD PTR [ebp]
  3725. vmovdqu xmm1,XMMWORD PTR 16[ebp]
  3726. vmovdqu xmm2,XMMWORD PTR 32[ebp]
  3727. vmovdqu xmm3,XMMWORD PTR 48[ebp]
  3728. add ebp,64
  3729. vpshufb xmm0,xmm0,xmm6
  3730. mov DWORD PTR 196[esp],ebp
  3731. vmovdqa XMMWORD PTR 96[esp],xmm7
  3732. add ebx,DWORD PTR 16[esp]
  3733. xor esi,edi
  3734. vpshufb xmm1,xmm1,xmm6
  3735. mov ebp,ecx
  3736. shld ecx,ecx,5
  3737. vpaddd xmm4,xmm0,xmm7
  3738. add ebx,esi
  3739. xor ebp,edi
  3740. shrd edx,edx,7
  3741. add ebx,ecx
  3742. vmovdqa XMMWORD PTR [esp],xmm4
  3743. add eax,DWORD PTR 20[esp]
  3744. xor ebp,edx
  3745. mov esi,ebx
  3746. shld ebx,ebx,5
  3747. add eax,ebp
  3748. xor esi,edx
  3749. shrd ecx,ecx,7
  3750. add eax,ebx
  3751. add edi,DWORD PTR 24[esp]
  3752. xor esi,ecx
  3753. mov ebp,eax
  3754. shld eax,eax,5
  3755. add edi,esi
  3756. xor ebp,ecx
  3757. shrd ebx,ebx,7
  3758. add edi,eax
  3759. add edx,DWORD PTR 28[esp]
  3760. xor ebp,ebx
  3761. mov esi,edi
  3762. shld edi,edi,5
  3763. add edx,ebp
  3764. xor esi,ebx
  3765. shrd eax,eax,7
  3766. add edx,edi
  3767. add ecx,DWORD PTR 32[esp]
  3768. xor esi,eax
  3769. vpshufb xmm2,xmm2,xmm6
  3770. mov ebp,edx
  3771. shld edx,edx,5
  3772. vpaddd xmm5,xmm1,xmm7
  3773. add ecx,esi
  3774. xor ebp,eax
  3775. shrd edi,edi,7
  3776. add ecx,edx
  3777. vmovdqa XMMWORD PTR 16[esp],xmm5
  3778. add ebx,DWORD PTR 36[esp]
  3779. xor ebp,edi
  3780. mov esi,ecx
  3781. shld ecx,ecx,5
  3782. add ebx,ebp
  3783. xor esi,edi
  3784. shrd edx,edx,7
  3785. add ebx,ecx
  3786. add eax,DWORD PTR 40[esp]
  3787. xor esi,edx
  3788. mov ebp,ebx
  3789. shld ebx,ebx,5
  3790. add eax,esi
  3791. xor ebp,edx
  3792. shrd ecx,ecx,7
  3793. add eax,ebx
  3794. add edi,DWORD PTR 44[esp]
  3795. xor ebp,ecx
  3796. mov esi,eax
  3797. shld eax,eax,5
  3798. add edi,ebp
  3799. xor esi,ecx
  3800. shrd ebx,ebx,7
  3801. add edi,eax
  3802. add edx,DWORD PTR 48[esp]
  3803. xor esi,ebx
  3804. vpshufb xmm3,xmm3,xmm6
  3805. mov ebp,edi
  3806. shld edi,edi,5
  3807. vpaddd xmm6,xmm2,xmm7
  3808. add edx,esi
  3809. xor ebp,ebx
  3810. shrd eax,eax,7
  3811. add edx,edi
  3812. vmovdqa XMMWORD PTR 32[esp],xmm6
  3813. add ecx,DWORD PTR 52[esp]
  3814. xor ebp,eax
  3815. mov esi,edx
  3816. shld edx,edx,5
  3817. add ecx,ebp
  3818. xor esi,eax
  3819. shrd edi,edi,7
  3820. add ecx,edx
  3821. add ebx,DWORD PTR 56[esp]
  3822. xor esi,edi
  3823. mov ebp,ecx
  3824. shld ecx,ecx,5
  3825. add ebx,esi
  3826. xor ebp,edi
  3827. shrd edx,edx,7
  3828. add ebx,ecx
  3829. add eax,DWORD PTR 60[esp]
  3830. xor ebp,edx
  3831. mov esi,ebx
  3832. shld ebx,ebx,5
  3833. add eax,ebp
  3834. shrd ecx,ecx,7
  3835. add eax,ebx
  3836. mov ebp,DWORD PTR 192[esp]
  3837. add eax,DWORD PTR [ebp]
  3838. add esi,DWORD PTR 4[ebp]
  3839. add ecx,DWORD PTR 8[ebp]
  3840. mov DWORD PTR [ebp],eax
  3841. add edx,DWORD PTR 12[ebp]
  3842. mov DWORD PTR 4[ebp],esi
  3843. add edi,DWORD PTR 16[ebp]
  3844. mov ebx,ecx
  3845. mov DWORD PTR 8[ebp],ecx
  3846. xor ebx,edx
  3847. mov DWORD PTR 12[ebp],edx
  3848. mov DWORD PTR 16[ebp],edi
  3849. mov ebp,esi
  3850. and esi,ebx
  3851. mov ebx,ebp
  3852. jmp $L009loop
  3853. ALIGN 16
  3854. $L010done:
  3855. add ebx,DWORD PTR 16[esp]
  3856. xor esi,edi
  3857. mov ebp,ecx
  3858. shld ecx,ecx,5
  3859. add ebx,esi
  3860. xor ebp,edi
  3861. shrd edx,edx,7
  3862. add ebx,ecx
  3863. add eax,DWORD PTR 20[esp]
  3864. xor ebp,edx
  3865. mov esi,ebx
  3866. shld ebx,ebx,5
  3867. add eax,ebp
  3868. xor esi,edx
  3869. shrd ecx,ecx,7
  3870. add eax,ebx
  3871. add edi,DWORD PTR 24[esp]
  3872. xor esi,ecx
  3873. mov ebp,eax
  3874. shld eax,eax,5
  3875. add edi,esi
  3876. xor ebp,ecx
  3877. shrd ebx,ebx,7
  3878. add edi,eax
  3879. add edx,DWORD PTR 28[esp]
  3880. xor ebp,ebx
  3881. mov esi,edi
  3882. shld edi,edi,5
  3883. add edx,ebp
  3884. xor esi,ebx
  3885. shrd eax,eax,7
  3886. add edx,edi
  3887. add ecx,DWORD PTR 32[esp]
  3888. xor esi,eax
  3889. mov ebp,edx
  3890. shld edx,edx,5
  3891. add ecx,esi
  3892. xor ebp,eax
  3893. shrd edi,edi,7
  3894. add ecx,edx
  3895. add ebx,DWORD PTR 36[esp]
  3896. xor ebp,edi
  3897. mov esi,ecx
  3898. shld ecx,ecx,5
  3899. add ebx,ebp
  3900. xor esi,edi
  3901. shrd edx,edx,7
  3902. add ebx,ecx
  3903. add eax,DWORD PTR 40[esp]
  3904. xor esi,edx
  3905. mov ebp,ebx
  3906. shld ebx,ebx,5
  3907. add eax,esi
  3908. xor ebp,edx
  3909. shrd ecx,ecx,7
  3910. add eax,ebx
  3911. add edi,DWORD PTR 44[esp]
  3912. xor ebp,ecx
  3913. mov esi,eax
  3914. shld eax,eax,5
  3915. add edi,ebp
  3916. xor esi,ecx
  3917. shrd ebx,ebx,7
  3918. add edi,eax
  3919. add edx,DWORD PTR 48[esp]
  3920. xor esi,ebx
  3921. mov ebp,edi
  3922. shld edi,edi,5
  3923. add edx,esi
  3924. xor ebp,ebx
  3925. shrd eax,eax,7
  3926. add edx,edi
  3927. add ecx,DWORD PTR 52[esp]
  3928. xor ebp,eax
  3929. mov esi,edx
  3930. shld edx,edx,5
  3931. add ecx,ebp
  3932. xor esi,eax
  3933. shrd edi,edi,7
  3934. add ecx,edx
  3935. add ebx,DWORD PTR 56[esp]
  3936. xor esi,edi
  3937. mov ebp,ecx
  3938. shld ecx,ecx,5
  3939. add ebx,esi
  3940. xor ebp,edi
  3941. shrd edx,edx,7
  3942. add ebx,ecx
  3943. add eax,DWORD PTR 60[esp]
  3944. xor ebp,edx
  3945. mov esi,ebx
  3946. shld ebx,ebx,5
  3947. add eax,ebp
  3948. shrd ecx,ecx,7
  3949. add eax,ebx
  3950. vzeroall
  3951. mov ebp,DWORD PTR 192[esp]
  3952. add eax,DWORD PTR [ebp]
  3953. mov esp,DWORD PTR 204[esp]
  3954. add esi,DWORD PTR 4[ebp]
  3955. add ecx,DWORD PTR 8[ebp]
  3956. mov DWORD PTR [ebp],eax
  3957. add edx,DWORD PTR 12[ebp]
  3958. mov DWORD PTR 4[ebp],esi
  3959. add edi,DWORD PTR 16[ebp]
  3960. mov DWORD PTR 8[ebp],ecx
  3961. mov DWORD PTR 12[ebp],edx
  3962. mov DWORD PTR 16[ebp],edi
  3963. pop edi
  3964. pop esi
  3965. pop ebx
  3966. pop ebp
  3967. ret
  3968. __sha1_block_data_order_avx ENDP
  3969. ALIGN 64
  3970. $LK_XX_XX::
  3971. DD 1518500249,1518500249,1518500249,1518500249
  3972. DD 1859775393,1859775393,1859775393,1859775393
  3973. DD 2400959708,2400959708,2400959708,2400959708
  3974. DD 3395469782,3395469782,3395469782,3395469782
  3975. DD 66051,67438087,134810123,202182159
  3976. DB 15,14,13,12,11,10,9,8,7,6,5,4,3,2,1,0
  3977. DB 83,72,65,49,32,98,108,111,99,107,32,116,114,97,110,115
  3978. DB 102,111,114,109,32,102,111,114,32,120,56,54,44,32,67,82
  3979. DB 89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112
  3980. DB 114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
  3981. .text$ ENDS
  3982. .bss SEGMENT 'BSS'
  3983. COMM _OPENSSL_ia32cap_P:DWORD:4
  3984. .bss ENDS
  3985. END