sha1-586.asm 61 KB

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