aesni-sha1-x86_64.masm 64 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655165616571658165916601661166216631664166516661667166816691670167116721673167416751676167716781679168016811682168316841685168616871688168916901691169216931694169516961697169816991700170117021703170417051706170717081709171017111712171317141715171617171718171917201721172217231724172517261727172817291730173117321733173417351736173717381739174017411742174317441745174617471748174917501751175217531754175517561757175817591760176117621763176417651766176717681769177017711772177317741775177617771778177917801781178217831784178517861787178817891790179117921793179417951796179717981799180018011802180318041805180618071808180918101811181218131814181518161817181818191820182118221823182418251826182718281829183018311832183318341835183618371838183918401841184218431844184518461847184818491850185118521853185418551856185718581859186018611862186318641865186618671868186918701871187218731874187518761877187818791880188118821883188418851886188718881889189018911892189318941895189618971898189919001901190219031904190519061907190819091910191119121913191419151916191719181919192019211922192319241925192619271928192919301931193219331934193519361937193819391940194119421943194419451946194719481949195019511952195319541955195619571958195919601961196219631964196519661967196819691970197119721973197419751976197719781979198019811982198319841985198619871988198919901991199219931994199519961997199819992000200120022003200420052006200720082009201020112012201320142015201620172018201920202021202220232024202520262027202820292030203120322033203420352036203720382039204020412042204320442045204620472048204920502051205220532054205520562057205820592060206120622063206420652066206720682069207020712072207320742075207620772078207920802081208220832084208520862087208820892090209120922093209420952096209720982099210021012102210321042105210621072108210921102111211221132114211521162117211821192120212121222123212421252126212721282129213021312132213321342135213621372138213921402141214221432144214521462147214821492150215121522153215421552156215721582159216021612162216321642165216621672168216921702171217221732174217521762177217821792180218121822183218421852186218721882189219021912192219321942195219621972198219922002201220222032204220522062207220822092210221122122213221422152216221722182219222022212222222322242225222622272228222922302231223222332234223522362237223822392240224122422243224422452246224722482249225022512252225322542255225622572258225922602261226222632264226522662267226822692270227122722273227422752276227722782279228022812282228322842285228622872288228922902291229222932294229522962297229822992300230123022303230423052306230723082309231023112312231323142315231623172318231923202321232223232324232523262327232823292330233123322333233423352336233723382339234023412342234323442345234623472348234923502351235223532354235523562357235823592360236123622363236423652366236723682369237023712372237323742375237623772378237923802381238223832384238523862387238823892390239123922393239423952396239723982399240024012402240324042405240624072408240924102411241224132414241524162417241824192420242124222423242424252426242724282429243024312432243324342435243624372438243924402441244224432444244524462447244824492450245124522453245424552456245724582459246024612462246324642465246624672468246924702471247224732474247524762477247824792480248124822483248424852486248724882489249024912492249324942495249624972498249925002501250225032504250525062507250825092510251125122513251425152516251725182519252025212522252325242525252625272528252925302531253225332534253525362537253825392540254125422543254425452546254725482549255025512552255325542555255625572558255925602561256225632564256525662567256825692570257125722573257425752576257725782579258025812582258325842585258625872588258925902591259225932594259525962597259825992600260126022603260426052606260726082609261026112612261326142615261626172618261926202621262226232624262526262627262826292630263126322633263426352636263726382639264026412642264326442645264626472648264926502651265226532654265526562657265826592660266126622663266426652666266726682669267026712672267326742675267626772678267926802681268226832684268526862687268826892690269126922693269426952696269726982699270027012702270327042705270627072708270927102711271227132714271527162717271827192720272127222723272427252726272727282729273027312732273327342735273627372738273927402741274227432744274527462747274827492750275127522753275427552756275727582759276027612762276327642765276627672768276927702771277227732774277527762777277827792780278127822783278427852786278727882789279027912792279327942795279627972798279928002801280228032804280528062807280828092810281128122813281428152816281728182819282028212822282328242825282628272828282928302831283228332834283528362837283828392840284128422843284428452846284728482849285028512852285328542855285628572858285928602861286228632864286528662867286828692870287128722873287428752876287728782879288028812882288328842885288628872888288928902891289228932894289528962897289828992900290129022903290429052906290729082909291029112912291329142915291629172918291929202921292229232924292529262927292829292930293129322933293429352936293729382939294029412942294329442945294629472948294929502951295229532954295529562957295829592960296129622963296429652966296729682969297029712972297329742975297629772978297929802981298229832984298529862987298829892990299129922993299429952996299729982999300030013002300330043005300630073008300930103011301230133014301530163017301830193020302130223023302430253026302730283029303030313032303330343035303630373038303930403041304230433044304530463047304830493050305130523053305430553056305730583059306030613062306330643065306630673068306930703071307230733074307530763077307830793080308130823083308430853086308730883089309030913092309330943095309630973098309931003101310231033104310531063107310831093110311131123113311431153116311731183119312031213122312331243125312631273128312931303131313231333134313531363137313831393140314131423143314431453146314731483149315031513152315331543155315631573158315931603161316231633164316531663167316831693170317131723173317431753176317731783179318031813182318331843185318631873188318931903191319231933194319531963197319831993200320132023203320432053206320732083209321032113212321332143215321632173218321932203221322232233224322532263227322832293230323132323233323432353236323732383239324032413242324332443245324632473248324932503251325232533254325532563257325832593260326132623263326432653266326732683269327032713272
  1. OPTION DOTNAME
  2. .text$ SEGMENT ALIGN(256) 'CODE'
  3. EXTERN OPENSSL_ia32cap_P:NEAR
  4. PUBLIC aesni_cbc_sha1_enc
  5. ALIGN 32
  6. aesni_cbc_sha1_enc PROC PUBLIC
  7. mov r10d,DWORD PTR[((OPENSSL_ia32cap_P+0))]
  8. mov r11,QWORD PTR[((OPENSSL_ia32cap_P+4))]
  9. bt r11,61
  10. jc aesni_cbc_sha1_enc_shaext
  11. and r11d,268435456
  12. and r10d,1073741824
  13. or r10d,r11d
  14. cmp r10d,1342177280
  15. je aesni_cbc_sha1_enc_avx
  16. jmp aesni_cbc_sha1_enc_ssse3
  17. DB 0F3h,0C3h ;repret
  18. aesni_cbc_sha1_enc ENDP
  19. ALIGN 32
  20. aesni_cbc_sha1_enc_ssse3 PROC PRIVATE
  21. mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
  22. mov QWORD PTR[16+rsp],rsi
  23. mov rax,rsp
  24. $L$SEH_begin_aesni_cbc_sha1_enc_ssse3::
  25. mov rdi,rcx
  26. mov rsi,rdx
  27. mov rdx,r8
  28. mov rcx,r9
  29. mov r8,QWORD PTR[40+rsp]
  30. mov r9,QWORD PTR[48+rsp]
  31. mov r10,QWORD PTR[56+rsp]
  32. push rbx
  33. push rbp
  34. push r12
  35. push r13
  36. push r14
  37. push r15
  38. lea rsp,QWORD PTR[((-264))+rsp]
  39. movaps XMMWORD PTR[(96+0)+rsp],xmm6
  40. movaps XMMWORD PTR[(96+16)+rsp],xmm7
  41. movaps XMMWORD PTR[(96+32)+rsp],xmm8
  42. movaps XMMWORD PTR[(96+48)+rsp],xmm9
  43. movaps XMMWORD PTR[(96+64)+rsp],xmm10
  44. movaps XMMWORD PTR[(96+80)+rsp],xmm11
  45. movaps XMMWORD PTR[(96+96)+rsp],xmm12
  46. movaps XMMWORD PTR[(96+112)+rsp],xmm13
  47. movaps XMMWORD PTR[(96+128)+rsp],xmm14
  48. movaps XMMWORD PTR[(96+144)+rsp],xmm15
  49. $L$prologue_ssse3::
  50. mov r12,rdi
  51. mov r13,rsi
  52. mov r14,rdx
  53. lea r15,QWORD PTR[112+rcx]
  54. movdqu xmm2,XMMWORD PTR[r8]
  55. mov QWORD PTR[88+rsp],r8
  56. shl r14,6
  57. sub r13,r12
  58. mov r8d,DWORD PTR[((240-112))+r15]
  59. add r14,r10
  60. lea r11,QWORD PTR[K_XX_XX]
  61. mov eax,DWORD PTR[r9]
  62. mov ebx,DWORD PTR[4+r9]
  63. mov ecx,DWORD PTR[8+r9]
  64. mov edx,DWORD PTR[12+r9]
  65. mov esi,ebx
  66. mov ebp,DWORD PTR[16+r9]
  67. mov edi,ecx
  68. xor edi,edx
  69. and esi,edi
  70. movdqa xmm3,XMMWORD PTR[64+r11]
  71. movdqa xmm13,XMMWORD PTR[r11]
  72. movdqu xmm4,XMMWORD PTR[r10]
  73. movdqu xmm5,XMMWORD PTR[16+r10]
  74. movdqu xmm6,XMMWORD PTR[32+r10]
  75. movdqu xmm7,XMMWORD PTR[48+r10]
  76. DB 102,15,56,0,227
  77. DB 102,15,56,0,235
  78. DB 102,15,56,0,243
  79. add r10,64
  80. paddd xmm4,xmm13
  81. DB 102,15,56,0,251
  82. paddd xmm5,xmm13
  83. paddd xmm6,xmm13
  84. movdqa XMMWORD PTR[rsp],xmm4
  85. psubd xmm4,xmm13
  86. movdqa XMMWORD PTR[16+rsp],xmm5
  87. psubd xmm5,xmm13
  88. movdqa XMMWORD PTR[32+rsp],xmm6
  89. psubd xmm6,xmm13
  90. movups xmm15,XMMWORD PTR[((-112))+r15]
  91. movups xmm0,XMMWORD PTR[((16-112))+r15]
  92. jmp $L$oop_ssse3
  93. ALIGN 32
  94. $L$oop_ssse3::
  95. ror ebx,2
  96. movups xmm14,XMMWORD PTR[r12]
  97. xorps xmm14,xmm15
  98. xorps xmm2,xmm14
  99. movups xmm1,XMMWORD PTR[((-80))+r15]
  100. DB 102,15,56,220,208
  101. pshufd xmm8,xmm4,238
  102. xor esi,edx
  103. movdqa xmm12,xmm7
  104. paddd xmm13,xmm7
  105. mov edi,eax
  106. add ebp,DWORD PTR[rsp]
  107. punpcklqdq xmm8,xmm5
  108. xor ebx,ecx
  109. rol eax,5
  110. add ebp,esi
  111. psrldq xmm12,4
  112. and edi,ebx
  113. xor ebx,ecx
  114. pxor xmm8,xmm4
  115. add ebp,eax
  116. ror eax,7
  117. pxor xmm12,xmm6
  118. xor edi,ecx
  119. mov esi,ebp
  120. add edx,DWORD PTR[4+rsp]
  121. pxor xmm8,xmm12
  122. xor eax,ebx
  123. rol ebp,5
  124. movdqa XMMWORD PTR[48+rsp],xmm13
  125. add edx,edi
  126. movups xmm0,XMMWORD PTR[((-64))+r15]
  127. DB 102,15,56,220,209
  128. and esi,eax
  129. movdqa xmm3,xmm8
  130. xor eax,ebx
  131. add edx,ebp
  132. ror ebp,7
  133. movdqa xmm12,xmm8
  134. xor esi,ebx
  135. pslldq xmm3,12
  136. paddd xmm8,xmm8
  137. mov edi,edx
  138. add ecx,DWORD PTR[8+rsp]
  139. psrld xmm12,31
  140. xor ebp,eax
  141. rol edx,5
  142. add ecx,esi
  143. movdqa xmm13,xmm3
  144. and edi,ebp
  145. xor ebp,eax
  146. psrld xmm3,30
  147. add ecx,edx
  148. ror edx,7
  149. por xmm8,xmm12
  150. xor edi,eax
  151. mov esi,ecx
  152. add ebx,DWORD PTR[12+rsp]
  153. movups xmm1,XMMWORD PTR[((-48))+r15]
  154. DB 102,15,56,220,208
  155. pslld xmm13,2
  156. pxor xmm8,xmm3
  157. xor edx,ebp
  158. movdqa xmm3,XMMWORD PTR[r11]
  159. rol ecx,5
  160. add ebx,edi
  161. and esi,edx
  162. pxor xmm8,xmm13
  163. xor edx,ebp
  164. add ebx,ecx
  165. ror ecx,7
  166. pshufd xmm9,xmm5,238
  167. xor esi,ebp
  168. movdqa xmm13,xmm8
  169. paddd xmm3,xmm8
  170. mov edi,ebx
  171. add eax,DWORD PTR[16+rsp]
  172. punpcklqdq xmm9,xmm6
  173. xor ecx,edx
  174. rol ebx,5
  175. add eax,esi
  176. psrldq xmm13,4
  177. and edi,ecx
  178. xor ecx,edx
  179. pxor xmm9,xmm5
  180. add eax,ebx
  181. ror ebx,7
  182. movups xmm0,XMMWORD PTR[((-32))+r15]
  183. DB 102,15,56,220,209
  184. pxor xmm13,xmm7
  185. xor edi,edx
  186. mov esi,eax
  187. add ebp,DWORD PTR[20+rsp]
  188. pxor xmm9,xmm13
  189. xor ebx,ecx
  190. rol eax,5
  191. movdqa XMMWORD PTR[rsp],xmm3
  192. add ebp,edi
  193. and esi,ebx
  194. movdqa xmm12,xmm9
  195. xor ebx,ecx
  196. add ebp,eax
  197. ror eax,7
  198. movdqa xmm13,xmm9
  199. xor esi,ecx
  200. pslldq xmm12,12
  201. paddd xmm9,xmm9
  202. mov edi,ebp
  203. add edx,DWORD PTR[24+rsp]
  204. psrld xmm13,31
  205. xor eax,ebx
  206. rol ebp,5
  207. add edx,esi
  208. movups xmm1,XMMWORD PTR[((-16))+r15]
  209. DB 102,15,56,220,208
  210. movdqa xmm3,xmm12
  211. and edi,eax
  212. xor eax,ebx
  213. psrld xmm12,30
  214. add edx,ebp
  215. ror ebp,7
  216. por xmm9,xmm13
  217. xor edi,ebx
  218. mov esi,edx
  219. add ecx,DWORD PTR[28+rsp]
  220. pslld xmm3,2
  221. pxor xmm9,xmm12
  222. xor ebp,eax
  223. movdqa xmm12,XMMWORD PTR[16+r11]
  224. rol edx,5
  225. add ecx,edi
  226. and esi,ebp
  227. pxor xmm9,xmm3
  228. xor ebp,eax
  229. add ecx,edx
  230. ror edx,7
  231. pshufd xmm10,xmm6,238
  232. xor esi,eax
  233. movdqa xmm3,xmm9
  234. paddd xmm12,xmm9
  235. mov edi,ecx
  236. add ebx,DWORD PTR[32+rsp]
  237. movups xmm0,XMMWORD PTR[r15]
  238. DB 102,15,56,220,209
  239. punpcklqdq xmm10,xmm7
  240. xor edx,ebp
  241. rol ecx,5
  242. add ebx,esi
  243. psrldq xmm3,4
  244. and edi,edx
  245. xor edx,ebp
  246. pxor xmm10,xmm6
  247. add ebx,ecx
  248. ror ecx,7
  249. pxor xmm3,xmm8
  250. xor edi,ebp
  251. mov esi,ebx
  252. add eax,DWORD PTR[36+rsp]
  253. pxor xmm10,xmm3
  254. xor ecx,edx
  255. rol ebx,5
  256. movdqa XMMWORD PTR[16+rsp],xmm12
  257. add eax,edi
  258. and esi,ecx
  259. movdqa xmm13,xmm10
  260. xor ecx,edx
  261. add eax,ebx
  262. ror ebx,7
  263. movups xmm1,XMMWORD PTR[16+r15]
  264. DB 102,15,56,220,208
  265. movdqa xmm3,xmm10
  266. xor esi,edx
  267. pslldq xmm13,12
  268. paddd xmm10,xmm10
  269. mov edi,eax
  270. add ebp,DWORD PTR[40+rsp]
  271. psrld xmm3,31
  272. xor ebx,ecx
  273. rol eax,5
  274. add ebp,esi
  275. movdqa xmm12,xmm13
  276. and edi,ebx
  277. xor ebx,ecx
  278. psrld xmm13,30
  279. add ebp,eax
  280. ror eax,7
  281. por xmm10,xmm3
  282. xor edi,ecx
  283. mov esi,ebp
  284. add edx,DWORD PTR[44+rsp]
  285. pslld xmm12,2
  286. pxor xmm10,xmm13
  287. xor eax,ebx
  288. movdqa xmm13,XMMWORD PTR[16+r11]
  289. rol ebp,5
  290. add edx,edi
  291. movups xmm0,XMMWORD PTR[32+r15]
  292. DB 102,15,56,220,209
  293. and esi,eax
  294. pxor xmm10,xmm12
  295. xor eax,ebx
  296. add edx,ebp
  297. ror ebp,7
  298. pshufd xmm11,xmm7,238
  299. xor esi,ebx
  300. movdqa xmm12,xmm10
  301. paddd xmm13,xmm10
  302. mov edi,edx
  303. add ecx,DWORD PTR[48+rsp]
  304. punpcklqdq xmm11,xmm8
  305. xor ebp,eax
  306. rol edx,5
  307. add ecx,esi
  308. psrldq xmm12,4
  309. and edi,ebp
  310. xor ebp,eax
  311. pxor xmm11,xmm7
  312. add ecx,edx
  313. ror edx,7
  314. pxor xmm12,xmm9
  315. xor edi,eax
  316. mov esi,ecx
  317. add ebx,DWORD PTR[52+rsp]
  318. movups xmm1,XMMWORD PTR[48+r15]
  319. DB 102,15,56,220,208
  320. pxor xmm11,xmm12
  321. xor edx,ebp
  322. rol ecx,5
  323. movdqa XMMWORD PTR[32+rsp],xmm13
  324. add ebx,edi
  325. and esi,edx
  326. movdqa xmm3,xmm11
  327. xor edx,ebp
  328. add ebx,ecx
  329. ror ecx,7
  330. movdqa xmm12,xmm11
  331. xor esi,ebp
  332. pslldq xmm3,12
  333. paddd xmm11,xmm11
  334. mov edi,ebx
  335. add eax,DWORD PTR[56+rsp]
  336. psrld xmm12,31
  337. xor ecx,edx
  338. rol ebx,5
  339. add eax,esi
  340. movdqa xmm13,xmm3
  341. and edi,ecx
  342. xor ecx,edx
  343. psrld xmm3,30
  344. add eax,ebx
  345. ror ebx,7
  346. cmp r8d,11
  347. jb $L$aesenclast1
  348. movups xmm0,XMMWORD PTR[64+r15]
  349. DB 102,15,56,220,209
  350. movups xmm1,XMMWORD PTR[80+r15]
  351. DB 102,15,56,220,208
  352. je $L$aesenclast1
  353. movups xmm0,XMMWORD PTR[96+r15]
  354. DB 102,15,56,220,209
  355. movups xmm1,XMMWORD PTR[112+r15]
  356. DB 102,15,56,220,208
  357. $L$aesenclast1::
  358. DB 102,15,56,221,209
  359. movups xmm0,XMMWORD PTR[((16-112))+r15]
  360. por xmm11,xmm12
  361. xor edi,edx
  362. mov esi,eax
  363. add ebp,DWORD PTR[60+rsp]
  364. pslld xmm13,2
  365. pxor xmm11,xmm3
  366. xor ebx,ecx
  367. movdqa xmm3,XMMWORD PTR[16+r11]
  368. rol eax,5
  369. add ebp,edi
  370. and esi,ebx
  371. pxor xmm11,xmm13
  372. pshufd xmm13,xmm10,238
  373. xor ebx,ecx
  374. add ebp,eax
  375. ror eax,7
  376. pxor xmm4,xmm8
  377. xor esi,ecx
  378. mov edi,ebp
  379. add edx,DWORD PTR[rsp]
  380. punpcklqdq xmm13,xmm11
  381. xor eax,ebx
  382. rol ebp,5
  383. pxor xmm4,xmm5
  384. add edx,esi
  385. movups xmm14,XMMWORD PTR[16+r12]
  386. xorps xmm14,xmm15
  387. movups XMMWORD PTR[r13*1+r12],xmm2
  388. xorps xmm2,xmm14
  389. movups xmm1,XMMWORD PTR[((-80))+r15]
  390. DB 102,15,56,220,208
  391. and edi,eax
  392. movdqa xmm12,xmm3
  393. xor eax,ebx
  394. paddd xmm3,xmm11
  395. add edx,ebp
  396. pxor xmm4,xmm13
  397. ror ebp,7
  398. xor edi,ebx
  399. mov esi,edx
  400. add ecx,DWORD PTR[4+rsp]
  401. movdqa xmm13,xmm4
  402. xor ebp,eax
  403. rol edx,5
  404. movdqa XMMWORD PTR[48+rsp],xmm3
  405. add ecx,edi
  406. and esi,ebp
  407. xor ebp,eax
  408. pslld xmm4,2
  409. add ecx,edx
  410. ror edx,7
  411. psrld xmm13,30
  412. xor esi,eax
  413. mov edi,ecx
  414. add ebx,DWORD PTR[8+rsp]
  415. movups xmm0,XMMWORD PTR[((-64))+r15]
  416. DB 102,15,56,220,209
  417. por xmm4,xmm13
  418. xor edx,ebp
  419. rol ecx,5
  420. pshufd xmm3,xmm11,238
  421. add ebx,esi
  422. and edi,edx
  423. xor edx,ebp
  424. add ebx,ecx
  425. add eax,DWORD PTR[12+rsp]
  426. xor edi,ebp
  427. mov esi,ebx
  428. rol ebx,5
  429. add eax,edi
  430. xor esi,edx
  431. ror ecx,7
  432. add eax,ebx
  433. pxor xmm5,xmm9
  434. add ebp,DWORD PTR[16+rsp]
  435. movups xmm1,XMMWORD PTR[((-48))+r15]
  436. DB 102,15,56,220,208
  437. xor esi,ecx
  438. punpcklqdq xmm3,xmm4
  439. mov edi,eax
  440. rol eax,5
  441. pxor xmm5,xmm6
  442. add ebp,esi
  443. xor edi,ecx
  444. movdqa xmm13,xmm12
  445. ror ebx,7
  446. paddd xmm12,xmm4
  447. add ebp,eax
  448. pxor xmm5,xmm3
  449. add edx,DWORD PTR[20+rsp]
  450. xor edi,ebx
  451. mov esi,ebp
  452. rol ebp,5
  453. movdqa xmm3,xmm5
  454. add edx,edi
  455. xor esi,ebx
  456. movdqa XMMWORD PTR[rsp],xmm12
  457. ror eax,7
  458. add edx,ebp
  459. add ecx,DWORD PTR[24+rsp]
  460. pslld xmm5,2
  461. xor esi,eax
  462. mov edi,edx
  463. psrld xmm3,30
  464. rol edx,5
  465. add ecx,esi
  466. movups xmm0,XMMWORD PTR[((-32))+r15]
  467. DB 102,15,56,220,209
  468. xor edi,eax
  469. ror ebp,7
  470. por xmm5,xmm3
  471. add ecx,edx
  472. add ebx,DWORD PTR[28+rsp]
  473. pshufd xmm12,xmm4,238
  474. xor edi,ebp
  475. mov esi,ecx
  476. rol ecx,5
  477. add ebx,edi
  478. xor esi,ebp
  479. ror edx,7
  480. add ebx,ecx
  481. pxor xmm6,xmm10
  482. add eax,DWORD PTR[32+rsp]
  483. xor esi,edx
  484. punpcklqdq xmm12,xmm5
  485. mov edi,ebx
  486. rol ebx,5
  487. pxor xmm6,xmm7
  488. add eax,esi
  489. xor edi,edx
  490. movdqa xmm3,XMMWORD PTR[32+r11]
  491. ror ecx,7
  492. paddd xmm13,xmm5
  493. add eax,ebx
  494. pxor xmm6,xmm12
  495. add ebp,DWORD PTR[36+rsp]
  496. movups xmm1,XMMWORD PTR[((-16))+r15]
  497. DB 102,15,56,220,208
  498. xor edi,ecx
  499. mov esi,eax
  500. rol eax,5
  501. movdqa xmm12,xmm6
  502. add ebp,edi
  503. xor esi,ecx
  504. movdqa XMMWORD PTR[16+rsp],xmm13
  505. ror ebx,7
  506. add ebp,eax
  507. add edx,DWORD PTR[40+rsp]
  508. pslld xmm6,2
  509. xor esi,ebx
  510. mov edi,ebp
  511. psrld xmm12,30
  512. rol ebp,5
  513. add edx,esi
  514. xor edi,ebx
  515. ror eax,7
  516. por xmm6,xmm12
  517. add edx,ebp
  518. add ecx,DWORD PTR[44+rsp]
  519. pshufd xmm13,xmm5,238
  520. xor edi,eax
  521. mov esi,edx
  522. rol edx,5
  523. add ecx,edi
  524. movups xmm0,XMMWORD PTR[r15]
  525. DB 102,15,56,220,209
  526. xor esi,eax
  527. ror ebp,7
  528. add ecx,edx
  529. pxor xmm7,xmm11
  530. add ebx,DWORD PTR[48+rsp]
  531. xor esi,ebp
  532. punpcklqdq xmm13,xmm6
  533. mov edi,ecx
  534. rol ecx,5
  535. pxor xmm7,xmm8
  536. add ebx,esi
  537. xor edi,ebp
  538. movdqa xmm12,xmm3
  539. ror edx,7
  540. paddd xmm3,xmm6
  541. add ebx,ecx
  542. pxor xmm7,xmm13
  543. add eax,DWORD PTR[52+rsp]
  544. xor edi,edx
  545. mov esi,ebx
  546. rol ebx,5
  547. movdqa xmm13,xmm7
  548. add eax,edi
  549. xor esi,edx
  550. movdqa XMMWORD PTR[32+rsp],xmm3
  551. ror ecx,7
  552. add eax,ebx
  553. add ebp,DWORD PTR[56+rsp]
  554. movups xmm1,XMMWORD PTR[16+r15]
  555. DB 102,15,56,220,208
  556. pslld xmm7,2
  557. xor esi,ecx
  558. mov edi,eax
  559. psrld xmm13,30
  560. rol eax,5
  561. add ebp,esi
  562. xor edi,ecx
  563. ror ebx,7
  564. por xmm7,xmm13
  565. add ebp,eax
  566. add edx,DWORD PTR[60+rsp]
  567. pshufd xmm3,xmm6,238
  568. xor edi,ebx
  569. mov esi,ebp
  570. rol ebp,5
  571. add edx,edi
  572. xor esi,ebx
  573. ror eax,7
  574. add edx,ebp
  575. pxor xmm8,xmm4
  576. add ecx,DWORD PTR[rsp]
  577. xor esi,eax
  578. punpcklqdq xmm3,xmm7
  579. mov edi,edx
  580. rol edx,5
  581. pxor xmm8,xmm9
  582. add ecx,esi
  583. movups xmm0,XMMWORD PTR[32+r15]
  584. DB 102,15,56,220,209
  585. xor edi,eax
  586. movdqa xmm13,xmm12
  587. ror ebp,7
  588. paddd xmm12,xmm7
  589. add ecx,edx
  590. pxor xmm8,xmm3
  591. add ebx,DWORD PTR[4+rsp]
  592. xor edi,ebp
  593. mov esi,ecx
  594. rol ecx,5
  595. movdqa xmm3,xmm8
  596. add ebx,edi
  597. xor esi,ebp
  598. movdqa XMMWORD PTR[48+rsp],xmm12
  599. ror edx,7
  600. add ebx,ecx
  601. add eax,DWORD PTR[8+rsp]
  602. pslld xmm8,2
  603. xor esi,edx
  604. mov edi,ebx
  605. psrld xmm3,30
  606. rol ebx,5
  607. add eax,esi
  608. xor edi,edx
  609. ror ecx,7
  610. por xmm8,xmm3
  611. add eax,ebx
  612. add ebp,DWORD PTR[12+rsp]
  613. movups xmm1,XMMWORD PTR[48+r15]
  614. DB 102,15,56,220,208
  615. pshufd xmm12,xmm7,238
  616. xor edi,ecx
  617. mov esi,eax
  618. rol eax,5
  619. add ebp,edi
  620. xor esi,ecx
  621. ror ebx,7
  622. add ebp,eax
  623. pxor xmm9,xmm5
  624. add edx,DWORD PTR[16+rsp]
  625. xor esi,ebx
  626. punpcklqdq xmm12,xmm8
  627. mov edi,ebp
  628. rol ebp,5
  629. pxor xmm9,xmm10
  630. add edx,esi
  631. xor edi,ebx
  632. movdqa xmm3,xmm13
  633. ror eax,7
  634. paddd xmm13,xmm8
  635. add edx,ebp
  636. pxor xmm9,xmm12
  637. add ecx,DWORD PTR[20+rsp]
  638. xor edi,eax
  639. mov esi,edx
  640. rol edx,5
  641. movdqa xmm12,xmm9
  642. add ecx,edi
  643. cmp r8d,11
  644. jb $L$aesenclast2
  645. movups xmm0,XMMWORD PTR[64+r15]
  646. DB 102,15,56,220,209
  647. movups xmm1,XMMWORD PTR[80+r15]
  648. DB 102,15,56,220,208
  649. je $L$aesenclast2
  650. movups xmm0,XMMWORD PTR[96+r15]
  651. DB 102,15,56,220,209
  652. movups xmm1,XMMWORD PTR[112+r15]
  653. DB 102,15,56,220,208
  654. $L$aesenclast2::
  655. DB 102,15,56,221,209
  656. movups xmm0,XMMWORD PTR[((16-112))+r15]
  657. xor esi,eax
  658. movdqa XMMWORD PTR[rsp],xmm13
  659. ror ebp,7
  660. add ecx,edx
  661. add ebx,DWORD PTR[24+rsp]
  662. pslld xmm9,2
  663. xor esi,ebp
  664. mov edi,ecx
  665. psrld xmm12,30
  666. rol ecx,5
  667. add ebx,esi
  668. xor edi,ebp
  669. ror edx,7
  670. por xmm9,xmm12
  671. add ebx,ecx
  672. add eax,DWORD PTR[28+rsp]
  673. pshufd xmm13,xmm8,238
  674. ror ecx,7
  675. mov esi,ebx
  676. xor edi,edx
  677. rol ebx,5
  678. add eax,edi
  679. xor esi,ecx
  680. xor ecx,edx
  681. add eax,ebx
  682. pxor xmm10,xmm6
  683. add ebp,DWORD PTR[32+rsp]
  684. movups xmm14,XMMWORD PTR[32+r12]
  685. xorps xmm14,xmm15
  686. movups XMMWORD PTR[16+r12*1+r13],xmm2
  687. xorps xmm2,xmm14
  688. movups xmm1,XMMWORD PTR[((-80))+r15]
  689. DB 102,15,56,220,208
  690. and esi,ecx
  691. xor ecx,edx
  692. ror ebx,7
  693. punpcklqdq xmm13,xmm9
  694. mov edi,eax
  695. xor esi,ecx
  696. pxor xmm10,xmm11
  697. rol eax,5
  698. add ebp,esi
  699. movdqa xmm12,xmm3
  700. xor edi,ebx
  701. paddd xmm3,xmm9
  702. xor ebx,ecx
  703. pxor xmm10,xmm13
  704. add ebp,eax
  705. add edx,DWORD PTR[36+rsp]
  706. and edi,ebx
  707. xor ebx,ecx
  708. ror eax,7
  709. movdqa xmm13,xmm10
  710. mov esi,ebp
  711. xor edi,ebx
  712. movdqa XMMWORD PTR[16+rsp],xmm3
  713. rol ebp,5
  714. add edx,edi
  715. movups xmm0,XMMWORD PTR[((-64))+r15]
  716. DB 102,15,56,220,209
  717. xor esi,eax
  718. pslld xmm10,2
  719. xor eax,ebx
  720. add edx,ebp
  721. psrld xmm13,30
  722. add ecx,DWORD PTR[40+rsp]
  723. and esi,eax
  724. xor eax,ebx
  725. por xmm10,xmm13
  726. ror ebp,7
  727. mov edi,edx
  728. xor esi,eax
  729. rol edx,5
  730. pshufd xmm3,xmm9,238
  731. add ecx,esi
  732. xor edi,ebp
  733. xor ebp,eax
  734. add ecx,edx
  735. add ebx,DWORD PTR[44+rsp]
  736. and edi,ebp
  737. xor ebp,eax
  738. ror edx,7
  739. movups xmm1,XMMWORD PTR[((-48))+r15]
  740. DB 102,15,56,220,208
  741. mov esi,ecx
  742. xor edi,ebp
  743. rol ecx,5
  744. add ebx,edi
  745. xor esi,edx
  746. xor edx,ebp
  747. add ebx,ecx
  748. pxor xmm11,xmm7
  749. add eax,DWORD PTR[48+rsp]
  750. and esi,edx
  751. xor edx,ebp
  752. ror ecx,7
  753. punpcklqdq xmm3,xmm10
  754. mov edi,ebx
  755. xor esi,edx
  756. pxor xmm11,xmm4
  757. rol ebx,5
  758. add eax,esi
  759. movdqa xmm13,XMMWORD PTR[48+r11]
  760. xor edi,ecx
  761. paddd xmm12,xmm10
  762. xor ecx,edx
  763. pxor xmm11,xmm3
  764. add eax,ebx
  765. add ebp,DWORD PTR[52+rsp]
  766. movups xmm0,XMMWORD PTR[((-32))+r15]
  767. DB 102,15,56,220,209
  768. and edi,ecx
  769. xor ecx,edx
  770. ror ebx,7
  771. movdqa xmm3,xmm11
  772. mov esi,eax
  773. xor edi,ecx
  774. movdqa XMMWORD PTR[32+rsp],xmm12
  775. rol eax,5
  776. add ebp,edi
  777. xor esi,ebx
  778. pslld xmm11,2
  779. xor ebx,ecx
  780. add ebp,eax
  781. psrld xmm3,30
  782. add edx,DWORD PTR[56+rsp]
  783. and esi,ebx
  784. xor ebx,ecx
  785. por xmm11,xmm3
  786. ror eax,7
  787. mov edi,ebp
  788. xor esi,ebx
  789. rol ebp,5
  790. pshufd xmm12,xmm10,238
  791. add edx,esi
  792. movups xmm1,XMMWORD PTR[((-16))+r15]
  793. DB 102,15,56,220,208
  794. xor edi,eax
  795. xor eax,ebx
  796. add edx,ebp
  797. add ecx,DWORD PTR[60+rsp]
  798. and edi,eax
  799. xor eax,ebx
  800. ror ebp,7
  801. mov esi,edx
  802. xor edi,eax
  803. rol edx,5
  804. add ecx,edi
  805. xor esi,ebp
  806. xor ebp,eax
  807. add ecx,edx
  808. pxor xmm4,xmm8
  809. add ebx,DWORD PTR[rsp]
  810. and esi,ebp
  811. xor ebp,eax
  812. ror edx,7
  813. movups xmm0,XMMWORD PTR[r15]
  814. DB 102,15,56,220,209
  815. punpcklqdq xmm12,xmm11
  816. mov edi,ecx
  817. xor esi,ebp
  818. pxor xmm4,xmm5
  819. rol ecx,5
  820. add ebx,esi
  821. movdqa xmm3,xmm13
  822. xor edi,edx
  823. paddd xmm13,xmm11
  824. xor edx,ebp
  825. pxor xmm4,xmm12
  826. add ebx,ecx
  827. add eax,DWORD PTR[4+rsp]
  828. and edi,edx
  829. xor edx,ebp
  830. ror ecx,7
  831. movdqa xmm12,xmm4
  832. mov esi,ebx
  833. xor edi,edx
  834. movdqa XMMWORD PTR[48+rsp],xmm13
  835. rol ebx,5
  836. add eax,edi
  837. xor esi,ecx
  838. pslld xmm4,2
  839. xor ecx,edx
  840. add eax,ebx
  841. psrld xmm12,30
  842. add ebp,DWORD PTR[8+rsp]
  843. movups xmm1,XMMWORD PTR[16+r15]
  844. DB 102,15,56,220,208
  845. and esi,ecx
  846. xor ecx,edx
  847. por xmm4,xmm12
  848. ror ebx,7
  849. mov edi,eax
  850. xor esi,ecx
  851. rol eax,5
  852. pshufd xmm13,xmm11,238
  853. add ebp,esi
  854. xor edi,ebx
  855. xor ebx,ecx
  856. add ebp,eax
  857. add edx,DWORD PTR[12+rsp]
  858. and edi,ebx
  859. xor ebx,ecx
  860. ror eax,7
  861. mov esi,ebp
  862. xor edi,ebx
  863. rol ebp,5
  864. add edx,edi
  865. movups xmm0,XMMWORD PTR[32+r15]
  866. DB 102,15,56,220,209
  867. xor esi,eax
  868. xor eax,ebx
  869. add edx,ebp
  870. pxor xmm5,xmm9
  871. add ecx,DWORD PTR[16+rsp]
  872. and esi,eax
  873. xor eax,ebx
  874. ror ebp,7
  875. punpcklqdq xmm13,xmm4
  876. mov edi,edx
  877. xor esi,eax
  878. pxor xmm5,xmm6
  879. rol edx,5
  880. add ecx,esi
  881. movdqa xmm12,xmm3
  882. xor edi,ebp
  883. paddd xmm3,xmm4
  884. xor ebp,eax
  885. pxor xmm5,xmm13
  886. add ecx,edx
  887. add ebx,DWORD PTR[20+rsp]
  888. and edi,ebp
  889. xor ebp,eax
  890. ror edx,7
  891. movups xmm1,XMMWORD PTR[48+r15]
  892. DB 102,15,56,220,208
  893. movdqa xmm13,xmm5
  894. mov esi,ecx
  895. xor edi,ebp
  896. movdqa XMMWORD PTR[rsp],xmm3
  897. rol ecx,5
  898. add ebx,edi
  899. xor esi,edx
  900. pslld xmm5,2
  901. xor edx,ebp
  902. add ebx,ecx
  903. psrld xmm13,30
  904. add eax,DWORD PTR[24+rsp]
  905. and esi,edx
  906. xor edx,ebp
  907. por xmm5,xmm13
  908. ror ecx,7
  909. mov edi,ebx
  910. xor esi,edx
  911. rol ebx,5
  912. pshufd xmm3,xmm4,238
  913. add eax,esi
  914. xor edi,ecx
  915. xor ecx,edx
  916. add eax,ebx
  917. add ebp,DWORD PTR[28+rsp]
  918. cmp r8d,11
  919. jb $L$aesenclast3
  920. movups xmm0,XMMWORD PTR[64+r15]
  921. DB 102,15,56,220,209
  922. movups xmm1,XMMWORD PTR[80+r15]
  923. DB 102,15,56,220,208
  924. je $L$aesenclast3
  925. movups xmm0,XMMWORD PTR[96+r15]
  926. DB 102,15,56,220,209
  927. movups xmm1,XMMWORD PTR[112+r15]
  928. DB 102,15,56,220,208
  929. $L$aesenclast3::
  930. DB 102,15,56,221,209
  931. movups xmm0,XMMWORD PTR[((16-112))+r15]
  932. and edi,ecx
  933. xor ecx,edx
  934. ror ebx,7
  935. mov esi,eax
  936. xor edi,ecx
  937. rol eax,5
  938. add ebp,edi
  939. xor esi,ebx
  940. xor ebx,ecx
  941. add ebp,eax
  942. pxor xmm6,xmm10
  943. add edx,DWORD PTR[32+rsp]
  944. and esi,ebx
  945. xor ebx,ecx
  946. ror eax,7
  947. punpcklqdq xmm3,xmm5
  948. mov edi,ebp
  949. xor esi,ebx
  950. pxor xmm6,xmm7
  951. rol ebp,5
  952. add edx,esi
  953. movups xmm14,XMMWORD PTR[48+r12]
  954. xorps xmm14,xmm15
  955. movups XMMWORD PTR[32+r12*1+r13],xmm2
  956. xorps xmm2,xmm14
  957. movups xmm1,XMMWORD PTR[((-80))+r15]
  958. DB 102,15,56,220,208
  959. movdqa xmm13,xmm12
  960. xor edi,eax
  961. paddd xmm12,xmm5
  962. xor eax,ebx
  963. pxor xmm6,xmm3
  964. add edx,ebp
  965. add ecx,DWORD PTR[36+rsp]
  966. and edi,eax
  967. xor eax,ebx
  968. ror ebp,7
  969. movdqa xmm3,xmm6
  970. mov esi,edx
  971. xor edi,eax
  972. movdqa XMMWORD PTR[16+rsp],xmm12
  973. rol edx,5
  974. add ecx,edi
  975. xor esi,ebp
  976. pslld xmm6,2
  977. xor ebp,eax
  978. add ecx,edx
  979. psrld xmm3,30
  980. add ebx,DWORD PTR[40+rsp]
  981. and esi,ebp
  982. xor ebp,eax
  983. por xmm6,xmm3
  984. ror edx,7
  985. movups xmm0,XMMWORD PTR[((-64))+r15]
  986. DB 102,15,56,220,209
  987. mov edi,ecx
  988. xor esi,ebp
  989. rol ecx,5
  990. pshufd xmm12,xmm5,238
  991. add ebx,esi
  992. xor edi,edx
  993. xor edx,ebp
  994. add ebx,ecx
  995. add eax,DWORD PTR[44+rsp]
  996. and edi,edx
  997. xor edx,ebp
  998. ror ecx,7
  999. mov esi,ebx
  1000. xor edi,edx
  1001. rol ebx,5
  1002. add eax,edi
  1003. xor esi,edx
  1004. add eax,ebx
  1005. pxor xmm7,xmm11
  1006. add ebp,DWORD PTR[48+rsp]
  1007. movups xmm1,XMMWORD PTR[((-48))+r15]
  1008. DB 102,15,56,220,208
  1009. xor esi,ecx
  1010. punpcklqdq xmm12,xmm6
  1011. mov edi,eax
  1012. rol eax,5
  1013. pxor xmm7,xmm8
  1014. add ebp,esi
  1015. xor edi,ecx
  1016. movdqa xmm3,xmm13
  1017. ror ebx,7
  1018. paddd xmm13,xmm6
  1019. add ebp,eax
  1020. pxor xmm7,xmm12
  1021. add edx,DWORD PTR[52+rsp]
  1022. xor edi,ebx
  1023. mov esi,ebp
  1024. rol ebp,5
  1025. movdqa xmm12,xmm7
  1026. add edx,edi
  1027. xor esi,ebx
  1028. movdqa XMMWORD PTR[32+rsp],xmm13
  1029. ror eax,7
  1030. add edx,ebp
  1031. add ecx,DWORD PTR[56+rsp]
  1032. pslld xmm7,2
  1033. xor esi,eax
  1034. mov edi,edx
  1035. psrld xmm12,30
  1036. rol edx,5
  1037. add ecx,esi
  1038. movups xmm0,XMMWORD PTR[((-32))+r15]
  1039. DB 102,15,56,220,209
  1040. xor edi,eax
  1041. ror ebp,7
  1042. por xmm7,xmm12
  1043. add ecx,edx
  1044. add ebx,DWORD PTR[60+rsp]
  1045. xor edi,ebp
  1046. mov esi,ecx
  1047. rol ecx,5
  1048. add ebx,edi
  1049. xor esi,ebp
  1050. ror edx,7
  1051. add ebx,ecx
  1052. add eax,DWORD PTR[rsp]
  1053. xor esi,edx
  1054. mov edi,ebx
  1055. rol ebx,5
  1056. paddd xmm3,xmm7
  1057. add eax,esi
  1058. xor edi,edx
  1059. movdqa XMMWORD PTR[48+rsp],xmm3
  1060. ror ecx,7
  1061. add eax,ebx
  1062. add ebp,DWORD PTR[4+rsp]
  1063. movups xmm1,XMMWORD PTR[((-16))+r15]
  1064. DB 102,15,56,220,208
  1065. xor edi,ecx
  1066. mov esi,eax
  1067. rol eax,5
  1068. add ebp,edi
  1069. xor esi,ecx
  1070. ror ebx,7
  1071. add ebp,eax
  1072. add edx,DWORD PTR[8+rsp]
  1073. xor esi,ebx
  1074. mov edi,ebp
  1075. rol ebp,5
  1076. add edx,esi
  1077. xor edi,ebx
  1078. ror eax,7
  1079. add edx,ebp
  1080. add ecx,DWORD PTR[12+rsp]
  1081. xor edi,eax
  1082. mov esi,edx
  1083. rol edx,5
  1084. add ecx,edi
  1085. movups xmm0,XMMWORD PTR[r15]
  1086. DB 102,15,56,220,209
  1087. xor esi,eax
  1088. ror ebp,7
  1089. add ecx,edx
  1090. cmp r10,r14
  1091. je $L$done_ssse3
  1092. movdqa xmm3,XMMWORD PTR[64+r11]
  1093. movdqa xmm13,XMMWORD PTR[r11]
  1094. movdqu xmm4,XMMWORD PTR[r10]
  1095. movdqu xmm5,XMMWORD PTR[16+r10]
  1096. movdqu xmm6,XMMWORD PTR[32+r10]
  1097. movdqu xmm7,XMMWORD PTR[48+r10]
  1098. DB 102,15,56,0,227
  1099. add r10,64
  1100. add ebx,DWORD PTR[16+rsp]
  1101. xor esi,ebp
  1102. mov edi,ecx
  1103. DB 102,15,56,0,235
  1104. rol ecx,5
  1105. add ebx,esi
  1106. xor edi,ebp
  1107. ror edx,7
  1108. paddd xmm4,xmm13
  1109. add ebx,ecx
  1110. add eax,DWORD PTR[20+rsp]
  1111. xor edi,edx
  1112. mov esi,ebx
  1113. movdqa XMMWORD PTR[rsp],xmm4
  1114. rol ebx,5
  1115. add eax,edi
  1116. xor esi,edx
  1117. ror ecx,7
  1118. psubd xmm4,xmm13
  1119. add eax,ebx
  1120. add ebp,DWORD PTR[24+rsp]
  1121. movups xmm1,XMMWORD PTR[16+r15]
  1122. DB 102,15,56,220,208
  1123. xor esi,ecx
  1124. mov edi,eax
  1125. rol eax,5
  1126. add ebp,esi
  1127. xor edi,ecx
  1128. ror ebx,7
  1129. add ebp,eax
  1130. add edx,DWORD PTR[28+rsp]
  1131. xor edi,ebx
  1132. mov esi,ebp
  1133. rol ebp,5
  1134. add edx,edi
  1135. xor esi,ebx
  1136. ror eax,7
  1137. add edx,ebp
  1138. add ecx,DWORD PTR[32+rsp]
  1139. xor esi,eax
  1140. mov edi,edx
  1141. DB 102,15,56,0,243
  1142. rol edx,5
  1143. add ecx,esi
  1144. movups xmm0,XMMWORD PTR[32+r15]
  1145. DB 102,15,56,220,209
  1146. xor edi,eax
  1147. ror ebp,7
  1148. paddd xmm5,xmm13
  1149. add ecx,edx
  1150. add ebx,DWORD PTR[36+rsp]
  1151. xor edi,ebp
  1152. mov esi,ecx
  1153. movdqa XMMWORD PTR[16+rsp],xmm5
  1154. rol ecx,5
  1155. add ebx,edi
  1156. xor esi,ebp
  1157. ror edx,7
  1158. psubd xmm5,xmm13
  1159. add ebx,ecx
  1160. add eax,DWORD PTR[40+rsp]
  1161. xor esi,edx
  1162. mov edi,ebx
  1163. rol ebx,5
  1164. add eax,esi
  1165. xor edi,edx
  1166. ror ecx,7
  1167. add eax,ebx
  1168. add ebp,DWORD PTR[44+rsp]
  1169. movups xmm1,XMMWORD PTR[48+r15]
  1170. DB 102,15,56,220,208
  1171. xor edi,ecx
  1172. mov esi,eax
  1173. rol eax,5
  1174. add ebp,edi
  1175. xor esi,ecx
  1176. ror ebx,7
  1177. add ebp,eax
  1178. add edx,DWORD PTR[48+rsp]
  1179. xor esi,ebx
  1180. mov edi,ebp
  1181. DB 102,15,56,0,251
  1182. rol ebp,5
  1183. add edx,esi
  1184. xor edi,ebx
  1185. ror eax,7
  1186. paddd xmm6,xmm13
  1187. add edx,ebp
  1188. add ecx,DWORD PTR[52+rsp]
  1189. xor edi,eax
  1190. mov esi,edx
  1191. movdqa XMMWORD PTR[32+rsp],xmm6
  1192. rol edx,5
  1193. add ecx,edi
  1194. cmp r8d,11
  1195. jb $L$aesenclast4
  1196. movups xmm0,XMMWORD PTR[64+r15]
  1197. DB 102,15,56,220,209
  1198. movups xmm1,XMMWORD PTR[80+r15]
  1199. DB 102,15,56,220,208
  1200. je $L$aesenclast4
  1201. movups xmm0,XMMWORD PTR[96+r15]
  1202. DB 102,15,56,220,209
  1203. movups xmm1,XMMWORD PTR[112+r15]
  1204. DB 102,15,56,220,208
  1205. $L$aesenclast4::
  1206. DB 102,15,56,221,209
  1207. movups xmm0,XMMWORD PTR[((16-112))+r15]
  1208. xor esi,eax
  1209. ror ebp,7
  1210. psubd xmm6,xmm13
  1211. add ecx,edx
  1212. add ebx,DWORD PTR[56+rsp]
  1213. xor esi,ebp
  1214. mov edi,ecx
  1215. rol ecx,5
  1216. add ebx,esi
  1217. xor edi,ebp
  1218. ror edx,7
  1219. add ebx,ecx
  1220. add eax,DWORD PTR[60+rsp]
  1221. xor edi,edx
  1222. mov esi,ebx
  1223. rol ebx,5
  1224. add eax,edi
  1225. ror ecx,7
  1226. add eax,ebx
  1227. movups XMMWORD PTR[48+r12*1+r13],xmm2
  1228. lea r12,QWORD PTR[64+r12]
  1229. add eax,DWORD PTR[r9]
  1230. add esi,DWORD PTR[4+r9]
  1231. add ecx,DWORD PTR[8+r9]
  1232. add edx,DWORD PTR[12+r9]
  1233. mov DWORD PTR[r9],eax
  1234. add ebp,DWORD PTR[16+r9]
  1235. mov DWORD PTR[4+r9],esi
  1236. mov ebx,esi
  1237. mov DWORD PTR[8+r9],ecx
  1238. mov edi,ecx
  1239. mov DWORD PTR[12+r9],edx
  1240. xor edi,edx
  1241. mov DWORD PTR[16+r9],ebp
  1242. and esi,edi
  1243. jmp $L$oop_ssse3
  1244. $L$done_ssse3::
  1245. add ebx,DWORD PTR[16+rsp]
  1246. xor esi,ebp
  1247. mov edi,ecx
  1248. rol ecx,5
  1249. add ebx,esi
  1250. xor edi,ebp
  1251. ror edx,7
  1252. add ebx,ecx
  1253. add eax,DWORD PTR[20+rsp]
  1254. xor edi,edx
  1255. mov esi,ebx
  1256. rol ebx,5
  1257. add eax,edi
  1258. xor esi,edx
  1259. ror ecx,7
  1260. add eax,ebx
  1261. add ebp,DWORD PTR[24+rsp]
  1262. movups xmm1,XMMWORD PTR[16+r15]
  1263. DB 102,15,56,220,208
  1264. xor esi,ecx
  1265. mov edi,eax
  1266. rol eax,5
  1267. add ebp,esi
  1268. xor edi,ecx
  1269. ror ebx,7
  1270. add ebp,eax
  1271. add edx,DWORD PTR[28+rsp]
  1272. xor edi,ebx
  1273. mov esi,ebp
  1274. rol ebp,5
  1275. add edx,edi
  1276. xor esi,ebx
  1277. ror eax,7
  1278. add edx,ebp
  1279. add ecx,DWORD PTR[32+rsp]
  1280. xor esi,eax
  1281. mov edi,edx
  1282. rol edx,5
  1283. add ecx,esi
  1284. movups xmm0,XMMWORD PTR[32+r15]
  1285. DB 102,15,56,220,209
  1286. xor edi,eax
  1287. ror ebp,7
  1288. add ecx,edx
  1289. add ebx,DWORD PTR[36+rsp]
  1290. xor edi,ebp
  1291. mov esi,ecx
  1292. rol ecx,5
  1293. add ebx,edi
  1294. xor esi,ebp
  1295. ror edx,7
  1296. add ebx,ecx
  1297. add eax,DWORD PTR[40+rsp]
  1298. xor esi,edx
  1299. mov edi,ebx
  1300. rol ebx,5
  1301. add eax,esi
  1302. xor edi,edx
  1303. ror ecx,7
  1304. add eax,ebx
  1305. add ebp,DWORD PTR[44+rsp]
  1306. movups xmm1,XMMWORD PTR[48+r15]
  1307. DB 102,15,56,220,208
  1308. xor edi,ecx
  1309. mov esi,eax
  1310. rol eax,5
  1311. add ebp,edi
  1312. xor esi,ecx
  1313. ror ebx,7
  1314. add ebp,eax
  1315. add edx,DWORD PTR[48+rsp]
  1316. xor esi,ebx
  1317. mov edi,ebp
  1318. rol ebp,5
  1319. add edx,esi
  1320. xor edi,ebx
  1321. ror eax,7
  1322. add edx,ebp
  1323. add ecx,DWORD PTR[52+rsp]
  1324. xor edi,eax
  1325. mov esi,edx
  1326. rol edx,5
  1327. add ecx,edi
  1328. cmp r8d,11
  1329. jb $L$aesenclast5
  1330. movups xmm0,XMMWORD PTR[64+r15]
  1331. DB 102,15,56,220,209
  1332. movups xmm1,XMMWORD PTR[80+r15]
  1333. DB 102,15,56,220,208
  1334. je $L$aesenclast5
  1335. movups xmm0,XMMWORD PTR[96+r15]
  1336. DB 102,15,56,220,209
  1337. movups xmm1,XMMWORD PTR[112+r15]
  1338. DB 102,15,56,220,208
  1339. $L$aesenclast5::
  1340. DB 102,15,56,221,209
  1341. movups xmm0,XMMWORD PTR[((16-112))+r15]
  1342. xor esi,eax
  1343. ror ebp,7
  1344. add ecx,edx
  1345. add ebx,DWORD PTR[56+rsp]
  1346. xor esi,ebp
  1347. mov edi,ecx
  1348. rol ecx,5
  1349. add ebx,esi
  1350. xor edi,ebp
  1351. ror edx,7
  1352. add ebx,ecx
  1353. add eax,DWORD PTR[60+rsp]
  1354. xor edi,edx
  1355. mov esi,ebx
  1356. rol ebx,5
  1357. add eax,edi
  1358. ror ecx,7
  1359. add eax,ebx
  1360. movups XMMWORD PTR[48+r12*1+r13],xmm2
  1361. mov r8,QWORD PTR[88+rsp]
  1362. add eax,DWORD PTR[r9]
  1363. add esi,DWORD PTR[4+r9]
  1364. add ecx,DWORD PTR[8+r9]
  1365. mov DWORD PTR[r9],eax
  1366. add edx,DWORD PTR[12+r9]
  1367. mov DWORD PTR[4+r9],esi
  1368. add ebp,DWORD PTR[16+r9]
  1369. mov DWORD PTR[8+r9],ecx
  1370. mov DWORD PTR[12+r9],edx
  1371. mov DWORD PTR[16+r9],ebp
  1372. movups XMMWORD PTR[r8],xmm2
  1373. movaps xmm6,XMMWORD PTR[((96+0))+rsp]
  1374. movaps xmm7,XMMWORD PTR[((96+16))+rsp]
  1375. movaps xmm8,XMMWORD PTR[((96+32))+rsp]
  1376. movaps xmm9,XMMWORD PTR[((96+48))+rsp]
  1377. movaps xmm10,XMMWORD PTR[((96+64))+rsp]
  1378. movaps xmm11,XMMWORD PTR[((96+80))+rsp]
  1379. movaps xmm12,XMMWORD PTR[((96+96))+rsp]
  1380. movaps xmm13,XMMWORD PTR[((96+112))+rsp]
  1381. movaps xmm14,XMMWORD PTR[((96+128))+rsp]
  1382. movaps xmm15,XMMWORD PTR[((96+144))+rsp]
  1383. lea rsi,QWORD PTR[264+rsp]
  1384. mov r15,QWORD PTR[rsi]
  1385. mov r14,QWORD PTR[8+rsi]
  1386. mov r13,QWORD PTR[16+rsi]
  1387. mov r12,QWORD PTR[24+rsi]
  1388. mov rbp,QWORD PTR[32+rsi]
  1389. mov rbx,QWORD PTR[40+rsi]
  1390. lea rsp,QWORD PTR[48+rsi]
  1391. $L$epilogue_ssse3::
  1392. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  1393. mov rsi,QWORD PTR[16+rsp]
  1394. DB 0F3h,0C3h ;repret
  1395. $L$SEH_end_aesni_cbc_sha1_enc_ssse3::
  1396. aesni_cbc_sha1_enc_ssse3 ENDP
  1397. ALIGN 32
  1398. aesni_cbc_sha1_enc_avx PROC PRIVATE
  1399. mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
  1400. mov QWORD PTR[16+rsp],rsi
  1401. mov rax,rsp
  1402. $L$SEH_begin_aesni_cbc_sha1_enc_avx::
  1403. mov rdi,rcx
  1404. mov rsi,rdx
  1405. mov rdx,r8
  1406. mov rcx,r9
  1407. mov r8,QWORD PTR[40+rsp]
  1408. mov r9,QWORD PTR[48+rsp]
  1409. mov r10,QWORD PTR[56+rsp]
  1410. push rbx
  1411. push rbp
  1412. push r12
  1413. push r13
  1414. push r14
  1415. push r15
  1416. lea rsp,QWORD PTR[((-264))+rsp]
  1417. movaps XMMWORD PTR[(96+0)+rsp],xmm6
  1418. movaps XMMWORD PTR[(96+16)+rsp],xmm7
  1419. movaps XMMWORD PTR[(96+32)+rsp],xmm8
  1420. movaps XMMWORD PTR[(96+48)+rsp],xmm9
  1421. movaps XMMWORD PTR[(96+64)+rsp],xmm10
  1422. movaps XMMWORD PTR[(96+80)+rsp],xmm11
  1423. movaps XMMWORD PTR[(96+96)+rsp],xmm12
  1424. movaps XMMWORD PTR[(96+112)+rsp],xmm13
  1425. movaps XMMWORD PTR[(96+128)+rsp],xmm14
  1426. movaps XMMWORD PTR[(96+144)+rsp],xmm15
  1427. $L$prologue_avx::
  1428. vzeroall
  1429. mov r12,rdi
  1430. mov r13,rsi
  1431. mov r14,rdx
  1432. lea r15,QWORD PTR[112+rcx]
  1433. vmovdqu xmm12,XMMWORD PTR[r8]
  1434. mov QWORD PTR[88+rsp],r8
  1435. shl r14,6
  1436. sub r13,r12
  1437. mov r8d,DWORD PTR[((240-112))+r15]
  1438. add r14,r10
  1439. lea r11,QWORD PTR[K_XX_XX]
  1440. mov eax,DWORD PTR[r9]
  1441. mov ebx,DWORD PTR[4+r9]
  1442. mov ecx,DWORD PTR[8+r9]
  1443. mov edx,DWORD PTR[12+r9]
  1444. mov esi,ebx
  1445. mov ebp,DWORD PTR[16+r9]
  1446. mov edi,ecx
  1447. xor edi,edx
  1448. and esi,edi
  1449. vmovdqa xmm6,XMMWORD PTR[64+r11]
  1450. vmovdqa xmm10,XMMWORD PTR[r11]
  1451. vmovdqu xmm0,XMMWORD PTR[r10]
  1452. vmovdqu xmm1,XMMWORD PTR[16+r10]
  1453. vmovdqu xmm2,XMMWORD PTR[32+r10]
  1454. vmovdqu xmm3,XMMWORD PTR[48+r10]
  1455. vpshufb xmm0,xmm0,xmm6
  1456. add r10,64
  1457. vpshufb xmm1,xmm1,xmm6
  1458. vpshufb xmm2,xmm2,xmm6
  1459. vpshufb xmm3,xmm3,xmm6
  1460. vpaddd xmm4,xmm0,xmm10
  1461. vpaddd xmm5,xmm1,xmm10
  1462. vpaddd xmm6,xmm2,xmm10
  1463. vmovdqa XMMWORD PTR[rsp],xmm4
  1464. vmovdqa XMMWORD PTR[16+rsp],xmm5
  1465. vmovdqa XMMWORD PTR[32+rsp],xmm6
  1466. vmovups xmm15,XMMWORD PTR[((-112))+r15]
  1467. vmovups xmm14,XMMWORD PTR[((16-112))+r15]
  1468. jmp $L$oop_avx
  1469. ALIGN 32
  1470. $L$oop_avx::
  1471. shrd ebx,ebx,2
  1472. vmovdqu xmm13,XMMWORD PTR[r12]
  1473. vpxor xmm13,xmm13,xmm15
  1474. vpxor xmm12,xmm12,xmm13
  1475. vaesenc xmm12,xmm12,xmm14
  1476. vmovups xmm15,XMMWORD PTR[((-80))+r15]
  1477. xor esi,edx
  1478. vpalignr xmm4,xmm1,xmm0,8
  1479. mov edi,eax
  1480. add ebp,DWORD PTR[rsp]
  1481. vpaddd xmm9,xmm10,xmm3
  1482. xor ebx,ecx
  1483. shld eax,eax,5
  1484. vpsrldq xmm8,xmm3,4
  1485. add ebp,esi
  1486. and edi,ebx
  1487. vpxor xmm4,xmm4,xmm0
  1488. xor ebx,ecx
  1489. add ebp,eax
  1490. vpxor xmm8,xmm8,xmm2
  1491. shrd eax,eax,7
  1492. xor edi,ecx
  1493. mov esi,ebp
  1494. add edx,DWORD PTR[4+rsp]
  1495. vpxor xmm4,xmm4,xmm8
  1496. xor eax,ebx
  1497. shld ebp,ebp,5
  1498. vmovdqa XMMWORD PTR[48+rsp],xmm9
  1499. add edx,edi
  1500. vaesenc xmm12,xmm12,xmm15
  1501. vmovups xmm14,XMMWORD PTR[((-64))+r15]
  1502. and esi,eax
  1503. vpsrld xmm8,xmm4,31
  1504. xor eax,ebx
  1505. add edx,ebp
  1506. shrd ebp,ebp,7
  1507. xor esi,ebx
  1508. vpslldq xmm9,xmm4,12
  1509. vpaddd xmm4,xmm4,xmm4
  1510. mov edi,edx
  1511. add ecx,DWORD PTR[8+rsp]
  1512. xor ebp,eax
  1513. shld edx,edx,5
  1514. vpor xmm4,xmm4,xmm8
  1515. vpsrld xmm8,xmm9,30
  1516. add ecx,esi
  1517. and edi,ebp
  1518. xor ebp,eax
  1519. add ecx,edx
  1520. vpslld xmm9,xmm9,2
  1521. vpxor xmm4,xmm4,xmm8
  1522. shrd edx,edx,7
  1523. xor edi,eax
  1524. mov esi,ecx
  1525. add ebx,DWORD PTR[12+rsp]
  1526. vaesenc xmm12,xmm12,xmm14
  1527. vmovups xmm15,XMMWORD PTR[((-48))+r15]
  1528. vpxor xmm4,xmm4,xmm9
  1529. xor edx,ebp
  1530. shld ecx,ecx,5
  1531. add ebx,edi
  1532. and esi,edx
  1533. xor edx,ebp
  1534. add ebx,ecx
  1535. shrd ecx,ecx,7
  1536. xor esi,ebp
  1537. vpalignr xmm5,xmm2,xmm1,8
  1538. mov edi,ebx
  1539. add eax,DWORD PTR[16+rsp]
  1540. vpaddd xmm9,xmm10,xmm4
  1541. xor ecx,edx
  1542. shld ebx,ebx,5
  1543. vpsrldq xmm8,xmm4,4
  1544. add eax,esi
  1545. and edi,ecx
  1546. vpxor xmm5,xmm5,xmm1
  1547. xor ecx,edx
  1548. add eax,ebx
  1549. vpxor xmm8,xmm8,xmm3
  1550. shrd ebx,ebx,7
  1551. vaesenc xmm12,xmm12,xmm15
  1552. vmovups xmm14,XMMWORD PTR[((-32))+r15]
  1553. xor edi,edx
  1554. mov esi,eax
  1555. add ebp,DWORD PTR[20+rsp]
  1556. vpxor xmm5,xmm5,xmm8
  1557. xor ebx,ecx
  1558. shld eax,eax,5
  1559. vmovdqa XMMWORD PTR[rsp],xmm9
  1560. add ebp,edi
  1561. and esi,ebx
  1562. vpsrld xmm8,xmm5,31
  1563. xor ebx,ecx
  1564. add ebp,eax
  1565. shrd eax,eax,7
  1566. xor esi,ecx
  1567. vpslldq xmm9,xmm5,12
  1568. vpaddd xmm5,xmm5,xmm5
  1569. mov edi,ebp
  1570. add edx,DWORD PTR[24+rsp]
  1571. xor eax,ebx
  1572. shld ebp,ebp,5
  1573. vpor xmm5,xmm5,xmm8
  1574. vpsrld xmm8,xmm9,30
  1575. add edx,esi
  1576. vaesenc xmm12,xmm12,xmm14
  1577. vmovups xmm15,XMMWORD PTR[((-16))+r15]
  1578. and edi,eax
  1579. xor eax,ebx
  1580. add edx,ebp
  1581. vpslld xmm9,xmm9,2
  1582. vpxor xmm5,xmm5,xmm8
  1583. shrd ebp,ebp,7
  1584. xor edi,ebx
  1585. mov esi,edx
  1586. add ecx,DWORD PTR[28+rsp]
  1587. vpxor xmm5,xmm5,xmm9
  1588. xor ebp,eax
  1589. shld edx,edx,5
  1590. vmovdqa xmm10,XMMWORD PTR[16+r11]
  1591. add ecx,edi
  1592. and esi,ebp
  1593. xor ebp,eax
  1594. add ecx,edx
  1595. shrd edx,edx,7
  1596. xor esi,eax
  1597. vpalignr xmm6,xmm3,xmm2,8
  1598. mov edi,ecx
  1599. add ebx,DWORD PTR[32+rsp]
  1600. vaesenc xmm12,xmm12,xmm15
  1601. vmovups xmm14,XMMWORD PTR[r15]
  1602. vpaddd xmm9,xmm10,xmm5
  1603. xor edx,ebp
  1604. shld ecx,ecx,5
  1605. vpsrldq xmm8,xmm5,4
  1606. add ebx,esi
  1607. and edi,edx
  1608. vpxor xmm6,xmm6,xmm2
  1609. xor edx,ebp
  1610. add ebx,ecx
  1611. vpxor xmm8,xmm8,xmm4
  1612. shrd ecx,ecx,7
  1613. xor edi,ebp
  1614. mov esi,ebx
  1615. add eax,DWORD PTR[36+rsp]
  1616. vpxor xmm6,xmm6,xmm8
  1617. xor ecx,edx
  1618. shld ebx,ebx,5
  1619. vmovdqa XMMWORD PTR[16+rsp],xmm9
  1620. add eax,edi
  1621. and esi,ecx
  1622. vpsrld xmm8,xmm6,31
  1623. xor ecx,edx
  1624. add eax,ebx
  1625. shrd ebx,ebx,7
  1626. vaesenc xmm12,xmm12,xmm14
  1627. vmovups xmm15,XMMWORD PTR[16+r15]
  1628. xor esi,edx
  1629. vpslldq xmm9,xmm6,12
  1630. vpaddd xmm6,xmm6,xmm6
  1631. mov edi,eax
  1632. add ebp,DWORD PTR[40+rsp]
  1633. xor ebx,ecx
  1634. shld eax,eax,5
  1635. vpor xmm6,xmm6,xmm8
  1636. vpsrld xmm8,xmm9,30
  1637. add ebp,esi
  1638. and edi,ebx
  1639. xor ebx,ecx
  1640. add ebp,eax
  1641. vpslld xmm9,xmm9,2
  1642. vpxor xmm6,xmm6,xmm8
  1643. shrd eax,eax,7
  1644. xor edi,ecx
  1645. mov esi,ebp
  1646. add edx,DWORD PTR[44+rsp]
  1647. vpxor xmm6,xmm6,xmm9
  1648. xor eax,ebx
  1649. shld ebp,ebp,5
  1650. add edx,edi
  1651. vaesenc xmm12,xmm12,xmm15
  1652. vmovups xmm14,XMMWORD PTR[32+r15]
  1653. and esi,eax
  1654. xor eax,ebx
  1655. add edx,ebp
  1656. shrd ebp,ebp,7
  1657. xor esi,ebx
  1658. vpalignr xmm7,xmm4,xmm3,8
  1659. mov edi,edx
  1660. add ecx,DWORD PTR[48+rsp]
  1661. vpaddd xmm9,xmm10,xmm6
  1662. xor ebp,eax
  1663. shld edx,edx,5
  1664. vpsrldq xmm8,xmm6,4
  1665. add ecx,esi
  1666. and edi,ebp
  1667. vpxor xmm7,xmm7,xmm3
  1668. xor ebp,eax
  1669. add ecx,edx
  1670. vpxor xmm8,xmm8,xmm5
  1671. shrd edx,edx,7
  1672. xor edi,eax
  1673. mov esi,ecx
  1674. add ebx,DWORD PTR[52+rsp]
  1675. vaesenc xmm12,xmm12,xmm14
  1676. vmovups xmm15,XMMWORD PTR[48+r15]
  1677. vpxor xmm7,xmm7,xmm8
  1678. xor edx,ebp
  1679. shld ecx,ecx,5
  1680. vmovdqa XMMWORD PTR[32+rsp],xmm9
  1681. add ebx,edi
  1682. and esi,edx
  1683. vpsrld xmm8,xmm7,31
  1684. xor edx,ebp
  1685. add ebx,ecx
  1686. shrd ecx,ecx,7
  1687. xor esi,ebp
  1688. vpslldq xmm9,xmm7,12
  1689. vpaddd xmm7,xmm7,xmm7
  1690. mov edi,ebx
  1691. add eax,DWORD PTR[56+rsp]
  1692. xor ecx,edx
  1693. shld ebx,ebx,5
  1694. vpor xmm7,xmm7,xmm8
  1695. vpsrld xmm8,xmm9,30
  1696. add eax,esi
  1697. and edi,ecx
  1698. xor ecx,edx
  1699. add eax,ebx
  1700. vpslld xmm9,xmm9,2
  1701. vpxor xmm7,xmm7,xmm8
  1702. shrd ebx,ebx,7
  1703. cmp r8d,11
  1704. jb $L$vaesenclast6
  1705. vaesenc xmm12,xmm12,xmm15
  1706. vmovups xmm14,XMMWORD PTR[64+r15]
  1707. vaesenc xmm12,xmm12,xmm14
  1708. vmovups xmm15,XMMWORD PTR[80+r15]
  1709. je $L$vaesenclast6
  1710. vaesenc xmm12,xmm12,xmm15
  1711. vmovups xmm14,XMMWORD PTR[96+r15]
  1712. vaesenc xmm12,xmm12,xmm14
  1713. vmovups xmm15,XMMWORD PTR[112+r15]
  1714. $L$vaesenclast6::
  1715. vaesenclast xmm12,xmm12,xmm15
  1716. vmovups xmm15,XMMWORD PTR[((-112))+r15]
  1717. vmovups xmm14,XMMWORD PTR[((16-112))+r15]
  1718. xor edi,edx
  1719. mov esi,eax
  1720. add ebp,DWORD PTR[60+rsp]
  1721. vpxor xmm7,xmm7,xmm9
  1722. xor ebx,ecx
  1723. shld eax,eax,5
  1724. add ebp,edi
  1725. and esi,ebx
  1726. xor ebx,ecx
  1727. add ebp,eax
  1728. vpalignr xmm8,xmm7,xmm6,8
  1729. vpxor xmm0,xmm0,xmm4
  1730. shrd eax,eax,7
  1731. xor esi,ecx
  1732. mov edi,ebp
  1733. add edx,DWORD PTR[rsp]
  1734. vpxor xmm0,xmm0,xmm1
  1735. xor eax,ebx
  1736. shld ebp,ebp,5
  1737. vpaddd xmm9,xmm10,xmm7
  1738. add edx,esi
  1739. vmovdqu xmm13,XMMWORD PTR[16+r12]
  1740. vpxor xmm13,xmm13,xmm15
  1741. vmovups XMMWORD PTR[r13*1+r12],xmm12
  1742. vpxor xmm12,xmm12,xmm13
  1743. vaesenc xmm12,xmm12,xmm14
  1744. vmovups xmm15,XMMWORD PTR[((-80))+r15]
  1745. and edi,eax
  1746. vpxor xmm0,xmm0,xmm8
  1747. xor eax,ebx
  1748. add edx,ebp
  1749. shrd ebp,ebp,7
  1750. xor edi,ebx
  1751. vpsrld xmm8,xmm0,30
  1752. vmovdqa XMMWORD PTR[48+rsp],xmm9
  1753. mov esi,edx
  1754. add ecx,DWORD PTR[4+rsp]
  1755. xor ebp,eax
  1756. shld edx,edx,5
  1757. vpslld xmm0,xmm0,2
  1758. add ecx,edi
  1759. and esi,ebp
  1760. xor ebp,eax
  1761. add ecx,edx
  1762. shrd edx,edx,7
  1763. xor esi,eax
  1764. mov edi,ecx
  1765. add ebx,DWORD PTR[8+rsp]
  1766. vaesenc xmm12,xmm12,xmm15
  1767. vmovups xmm14,XMMWORD PTR[((-64))+r15]
  1768. vpor xmm0,xmm0,xmm8
  1769. xor edx,ebp
  1770. shld ecx,ecx,5
  1771. add ebx,esi
  1772. and edi,edx
  1773. xor edx,ebp
  1774. add ebx,ecx
  1775. add eax,DWORD PTR[12+rsp]
  1776. xor edi,ebp
  1777. mov esi,ebx
  1778. shld ebx,ebx,5
  1779. add eax,edi
  1780. xor esi,edx
  1781. shrd ecx,ecx,7
  1782. add eax,ebx
  1783. vpalignr xmm8,xmm0,xmm7,8
  1784. vpxor xmm1,xmm1,xmm5
  1785. add ebp,DWORD PTR[16+rsp]
  1786. vaesenc xmm12,xmm12,xmm14
  1787. vmovups xmm15,XMMWORD PTR[((-48))+r15]
  1788. xor esi,ecx
  1789. mov edi,eax
  1790. shld eax,eax,5
  1791. vpxor xmm1,xmm1,xmm2
  1792. add ebp,esi
  1793. xor edi,ecx
  1794. vpaddd xmm9,xmm10,xmm0
  1795. shrd ebx,ebx,7
  1796. add ebp,eax
  1797. vpxor xmm1,xmm1,xmm8
  1798. add edx,DWORD PTR[20+rsp]
  1799. xor edi,ebx
  1800. mov esi,ebp
  1801. shld ebp,ebp,5
  1802. vpsrld xmm8,xmm1,30
  1803. vmovdqa XMMWORD PTR[rsp],xmm9
  1804. add edx,edi
  1805. xor esi,ebx
  1806. shrd eax,eax,7
  1807. add edx,ebp
  1808. vpslld xmm1,xmm1,2
  1809. add ecx,DWORD PTR[24+rsp]
  1810. xor esi,eax
  1811. mov edi,edx
  1812. shld edx,edx,5
  1813. add ecx,esi
  1814. vaesenc xmm12,xmm12,xmm15
  1815. vmovups xmm14,XMMWORD PTR[((-32))+r15]
  1816. xor edi,eax
  1817. shrd ebp,ebp,7
  1818. add ecx,edx
  1819. vpor xmm1,xmm1,xmm8
  1820. add ebx,DWORD PTR[28+rsp]
  1821. xor edi,ebp
  1822. mov esi,ecx
  1823. shld ecx,ecx,5
  1824. add ebx,edi
  1825. xor esi,ebp
  1826. shrd edx,edx,7
  1827. add ebx,ecx
  1828. vpalignr xmm8,xmm1,xmm0,8
  1829. vpxor xmm2,xmm2,xmm6
  1830. add eax,DWORD PTR[32+rsp]
  1831. xor esi,edx
  1832. mov edi,ebx
  1833. shld ebx,ebx,5
  1834. vpxor xmm2,xmm2,xmm3
  1835. add eax,esi
  1836. xor edi,edx
  1837. vpaddd xmm9,xmm10,xmm1
  1838. vmovdqa xmm10,XMMWORD PTR[32+r11]
  1839. shrd ecx,ecx,7
  1840. add eax,ebx
  1841. vpxor xmm2,xmm2,xmm8
  1842. add ebp,DWORD PTR[36+rsp]
  1843. vaesenc xmm12,xmm12,xmm14
  1844. vmovups xmm15,XMMWORD PTR[((-16))+r15]
  1845. xor edi,ecx
  1846. mov esi,eax
  1847. shld eax,eax,5
  1848. vpsrld xmm8,xmm2,30
  1849. vmovdqa XMMWORD PTR[16+rsp],xmm9
  1850. add ebp,edi
  1851. xor esi,ecx
  1852. shrd ebx,ebx,7
  1853. add ebp,eax
  1854. vpslld xmm2,xmm2,2
  1855. add edx,DWORD PTR[40+rsp]
  1856. xor esi,ebx
  1857. mov edi,ebp
  1858. shld ebp,ebp,5
  1859. add edx,esi
  1860. xor edi,ebx
  1861. shrd eax,eax,7
  1862. add edx,ebp
  1863. vpor xmm2,xmm2,xmm8
  1864. add ecx,DWORD PTR[44+rsp]
  1865. xor edi,eax
  1866. mov esi,edx
  1867. shld edx,edx,5
  1868. add ecx,edi
  1869. vaesenc xmm12,xmm12,xmm15
  1870. vmovups xmm14,XMMWORD PTR[r15]
  1871. xor esi,eax
  1872. shrd ebp,ebp,7
  1873. add ecx,edx
  1874. vpalignr xmm8,xmm2,xmm1,8
  1875. vpxor xmm3,xmm3,xmm7
  1876. add ebx,DWORD PTR[48+rsp]
  1877. xor esi,ebp
  1878. mov edi,ecx
  1879. shld ecx,ecx,5
  1880. vpxor xmm3,xmm3,xmm4
  1881. add ebx,esi
  1882. xor edi,ebp
  1883. vpaddd xmm9,xmm10,xmm2
  1884. shrd edx,edx,7
  1885. add ebx,ecx
  1886. vpxor xmm3,xmm3,xmm8
  1887. add eax,DWORD PTR[52+rsp]
  1888. xor edi,edx
  1889. mov esi,ebx
  1890. shld ebx,ebx,5
  1891. vpsrld xmm8,xmm3,30
  1892. vmovdqa XMMWORD PTR[32+rsp],xmm9
  1893. add eax,edi
  1894. xor esi,edx
  1895. shrd ecx,ecx,7
  1896. add eax,ebx
  1897. vpslld xmm3,xmm3,2
  1898. add ebp,DWORD PTR[56+rsp]
  1899. vaesenc xmm12,xmm12,xmm14
  1900. vmovups xmm15,XMMWORD PTR[16+r15]
  1901. xor esi,ecx
  1902. mov edi,eax
  1903. shld eax,eax,5
  1904. add ebp,esi
  1905. xor edi,ecx
  1906. shrd ebx,ebx,7
  1907. add ebp,eax
  1908. vpor xmm3,xmm3,xmm8
  1909. add edx,DWORD PTR[60+rsp]
  1910. xor edi,ebx
  1911. mov esi,ebp
  1912. shld ebp,ebp,5
  1913. add edx,edi
  1914. xor esi,ebx
  1915. shrd eax,eax,7
  1916. add edx,ebp
  1917. vpalignr xmm8,xmm3,xmm2,8
  1918. vpxor xmm4,xmm4,xmm0
  1919. add ecx,DWORD PTR[rsp]
  1920. xor esi,eax
  1921. mov edi,edx
  1922. shld edx,edx,5
  1923. vpxor xmm4,xmm4,xmm5
  1924. add ecx,esi
  1925. vaesenc xmm12,xmm12,xmm15
  1926. vmovups xmm14,XMMWORD PTR[32+r15]
  1927. xor edi,eax
  1928. vpaddd xmm9,xmm10,xmm3
  1929. shrd ebp,ebp,7
  1930. add ecx,edx
  1931. vpxor xmm4,xmm4,xmm8
  1932. add ebx,DWORD PTR[4+rsp]
  1933. xor edi,ebp
  1934. mov esi,ecx
  1935. shld ecx,ecx,5
  1936. vpsrld xmm8,xmm4,30
  1937. vmovdqa XMMWORD PTR[48+rsp],xmm9
  1938. add ebx,edi
  1939. xor esi,ebp
  1940. shrd edx,edx,7
  1941. add ebx,ecx
  1942. vpslld xmm4,xmm4,2
  1943. add eax,DWORD PTR[8+rsp]
  1944. xor esi,edx
  1945. mov edi,ebx
  1946. shld ebx,ebx,5
  1947. add eax,esi
  1948. xor edi,edx
  1949. shrd ecx,ecx,7
  1950. add eax,ebx
  1951. vpor xmm4,xmm4,xmm8
  1952. add ebp,DWORD PTR[12+rsp]
  1953. vaesenc xmm12,xmm12,xmm14
  1954. vmovups xmm15,XMMWORD PTR[48+r15]
  1955. xor edi,ecx
  1956. mov esi,eax
  1957. shld eax,eax,5
  1958. add ebp,edi
  1959. xor esi,ecx
  1960. shrd ebx,ebx,7
  1961. add ebp,eax
  1962. vpalignr xmm8,xmm4,xmm3,8
  1963. vpxor xmm5,xmm5,xmm1
  1964. add edx,DWORD PTR[16+rsp]
  1965. xor esi,ebx
  1966. mov edi,ebp
  1967. shld ebp,ebp,5
  1968. vpxor xmm5,xmm5,xmm6
  1969. add edx,esi
  1970. xor edi,ebx
  1971. vpaddd xmm9,xmm10,xmm4
  1972. shrd eax,eax,7
  1973. add edx,ebp
  1974. vpxor xmm5,xmm5,xmm8
  1975. add ecx,DWORD PTR[20+rsp]
  1976. xor edi,eax
  1977. mov esi,edx
  1978. shld edx,edx,5
  1979. vpsrld xmm8,xmm5,30
  1980. vmovdqa XMMWORD PTR[rsp],xmm9
  1981. add ecx,edi
  1982. cmp r8d,11
  1983. jb $L$vaesenclast7
  1984. vaesenc xmm12,xmm12,xmm15
  1985. vmovups xmm14,XMMWORD PTR[64+r15]
  1986. vaesenc xmm12,xmm12,xmm14
  1987. vmovups xmm15,XMMWORD PTR[80+r15]
  1988. je $L$vaesenclast7
  1989. vaesenc xmm12,xmm12,xmm15
  1990. vmovups xmm14,XMMWORD PTR[96+r15]
  1991. vaesenc xmm12,xmm12,xmm14
  1992. vmovups xmm15,XMMWORD PTR[112+r15]
  1993. $L$vaesenclast7::
  1994. vaesenclast xmm12,xmm12,xmm15
  1995. vmovups xmm15,XMMWORD PTR[((-112))+r15]
  1996. vmovups xmm14,XMMWORD PTR[((16-112))+r15]
  1997. xor esi,eax
  1998. shrd ebp,ebp,7
  1999. add ecx,edx
  2000. vpslld xmm5,xmm5,2
  2001. add ebx,DWORD PTR[24+rsp]
  2002. xor esi,ebp
  2003. mov edi,ecx
  2004. shld ecx,ecx,5
  2005. add ebx,esi
  2006. xor edi,ebp
  2007. shrd edx,edx,7
  2008. add ebx,ecx
  2009. vpor xmm5,xmm5,xmm8
  2010. add eax,DWORD PTR[28+rsp]
  2011. shrd ecx,ecx,7
  2012. mov esi,ebx
  2013. xor edi,edx
  2014. shld ebx,ebx,5
  2015. add eax,edi
  2016. xor esi,ecx
  2017. xor ecx,edx
  2018. add eax,ebx
  2019. vpalignr xmm8,xmm5,xmm4,8
  2020. vpxor xmm6,xmm6,xmm2
  2021. add ebp,DWORD PTR[32+rsp]
  2022. vmovdqu xmm13,XMMWORD PTR[32+r12]
  2023. vpxor xmm13,xmm13,xmm15
  2024. vmovups XMMWORD PTR[16+r12*1+r13],xmm12
  2025. vpxor xmm12,xmm12,xmm13
  2026. vaesenc xmm12,xmm12,xmm14
  2027. vmovups xmm15,XMMWORD PTR[((-80))+r15]
  2028. and esi,ecx
  2029. xor ecx,edx
  2030. shrd ebx,ebx,7
  2031. vpxor xmm6,xmm6,xmm7
  2032. mov edi,eax
  2033. xor esi,ecx
  2034. vpaddd xmm9,xmm10,xmm5
  2035. shld eax,eax,5
  2036. add ebp,esi
  2037. vpxor xmm6,xmm6,xmm8
  2038. xor edi,ebx
  2039. xor ebx,ecx
  2040. add ebp,eax
  2041. add edx,DWORD PTR[36+rsp]
  2042. vpsrld xmm8,xmm6,30
  2043. vmovdqa XMMWORD PTR[16+rsp],xmm9
  2044. and edi,ebx
  2045. xor ebx,ecx
  2046. shrd eax,eax,7
  2047. mov esi,ebp
  2048. vpslld xmm6,xmm6,2
  2049. xor edi,ebx
  2050. shld ebp,ebp,5
  2051. add edx,edi
  2052. vaesenc xmm12,xmm12,xmm15
  2053. vmovups xmm14,XMMWORD PTR[((-64))+r15]
  2054. xor esi,eax
  2055. xor eax,ebx
  2056. add edx,ebp
  2057. add ecx,DWORD PTR[40+rsp]
  2058. and esi,eax
  2059. vpor xmm6,xmm6,xmm8
  2060. xor eax,ebx
  2061. shrd ebp,ebp,7
  2062. mov edi,edx
  2063. xor esi,eax
  2064. shld edx,edx,5
  2065. add ecx,esi
  2066. xor edi,ebp
  2067. xor ebp,eax
  2068. add ecx,edx
  2069. add ebx,DWORD PTR[44+rsp]
  2070. and edi,ebp
  2071. xor ebp,eax
  2072. shrd edx,edx,7
  2073. vaesenc xmm12,xmm12,xmm14
  2074. vmovups xmm15,XMMWORD PTR[((-48))+r15]
  2075. mov esi,ecx
  2076. xor edi,ebp
  2077. shld ecx,ecx,5
  2078. add ebx,edi
  2079. xor esi,edx
  2080. xor edx,ebp
  2081. add ebx,ecx
  2082. vpalignr xmm8,xmm6,xmm5,8
  2083. vpxor xmm7,xmm7,xmm3
  2084. add eax,DWORD PTR[48+rsp]
  2085. and esi,edx
  2086. xor edx,ebp
  2087. shrd ecx,ecx,7
  2088. vpxor xmm7,xmm7,xmm0
  2089. mov edi,ebx
  2090. xor esi,edx
  2091. vpaddd xmm9,xmm10,xmm6
  2092. vmovdqa xmm10,XMMWORD PTR[48+r11]
  2093. shld ebx,ebx,5
  2094. add eax,esi
  2095. vpxor xmm7,xmm7,xmm8
  2096. xor edi,ecx
  2097. xor ecx,edx
  2098. add eax,ebx
  2099. add ebp,DWORD PTR[52+rsp]
  2100. vaesenc xmm12,xmm12,xmm15
  2101. vmovups xmm14,XMMWORD PTR[((-32))+r15]
  2102. vpsrld xmm8,xmm7,30
  2103. vmovdqa XMMWORD PTR[32+rsp],xmm9
  2104. and edi,ecx
  2105. xor ecx,edx
  2106. shrd ebx,ebx,7
  2107. mov esi,eax
  2108. vpslld xmm7,xmm7,2
  2109. xor edi,ecx
  2110. shld eax,eax,5
  2111. add ebp,edi
  2112. xor esi,ebx
  2113. xor ebx,ecx
  2114. add ebp,eax
  2115. add edx,DWORD PTR[56+rsp]
  2116. and esi,ebx
  2117. vpor xmm7,xmm7,xmm8
  2118. xor ebx,ecx
  2119. shrd eax,eax,7
  2120. mov edi,ebp
  2121. xor esi,ebx
  2122. shld ebp,ebp,5
  2123. add edx,esi
  2124. vaesenc xmm12,xmm12,xmm14
  2125. vmovups xmm15,XMMWORD PTR[((-16))+r15]
  2126. xor edi,eax
  2127. xor eax,ebx
  2128. add edx,ebp
  2129. add ecx,DWORD PTR[60+rsp]
  2130. and edi,eax
  2131. xor eax,ebx
  2132. shrd ebp,ebp,7
  2133. mov esi,edx
  2134. xor edi,eax
  2135. shld edx,edx,5
  2136. add ecx,edi
  2137. xor esi,ebp
  2138. xor ebp,eax
  2139. add ecx,edx
  2140. vpalignr xmm8,xmm7,xmm6,8
  2141. vpxor xmm0,xmm0,xmm4
  2142. add ebx,DWORD PTR[rsp]
  2143. and esi,ebp
  2144. xor ebp,eax
  2145. shrd edx,edx,7
  2146. vaesenc xmm12,xmm12,xmm15
  2147. vmovups xmm14,XMMWORD PTR[r15]
  2148. vpxor xmm0,xmm0,xmm1
  2149. mov edi,ecx
  2150. xor esi,ebp
  2151. vpaddd xmm9,xmm10,xmm7
  2152. shld ecx,ecx,5
  2153. add ebx,esi
  2154. vpxor xmm0,xmm0,xmm8
  2155. xor edi,edx
  2156. xor edx,ebp
  2157. add ebx,ecx
  2158. add eax,DWORD PTR[4+rsp]
  2159. vpsrld xmm8,xmm0,30
  2160. vmovdqa XMMWORD PTR[48+rsp],xmm9
  2161. and edi,edx
  2162. xor edx,ebp
  2163. shrd ecx,ecx,7
  2164. mov esi,ebx
  2165. vpslld xmm0,xmm0,2
  2166. xor edi,edx
  2167. shld ebx,ebx,5
  2168. add eax,edi
  2169. xor esi,ecx
  2170. xor ecx,edx
  2171. add eax,ebx
  2172. add ebp,DWORD PTR[8+rsp]
  2173. vaesenc xmm12,xmm12,xmm14
  2174. vmovups xmm15,XMMWORD PTR[16+r15]
  2175. and esi,ecx
  2176. vpor xmm0,xmm0,xmm8
  2177. xor ecx,edx
  2178. shrd ebx,ebx,7
  2179. mov edi,eax
  2180. xor esi,ecx
  2181. shld eax,eax,5
  2182. add ebp,esi
  2183. xor edi,ebx
  2184. xor ebx,ecx
  2185. add ebp,eax
  2186. add edx,DWORD PTR[12+rsp]
  2187. and edi,ebx
  2188. xor ebx,ecx
  2189. shrd eax,eax,7
  2190. mov esi,ebp
  2191. xor edi,ebx
  2192. shld ebp,ebp,5
  2193. add edx,edi
  2194. vaesenc xmm12,xmm12,xmm15
  2195. vmovups xmm14,XMMWORD PTR[32+r15]
  2196. xor esi,eax
  2197. xor eax,ebx
  2198. add edx,ebp
  2199. vpalignr xmm8,xmm0,xmm7,8
  2200. vpxor xmm1,xmm1,xmm5
  2201. add ecx,DWORD PTR[16+rsp]
  2202. and esi,eax
  2203. xor eax,ebx
  2204. shrd ebp,ebp,7
  2205. vpxor xmm1,xmm1,xmm2
  2206. mov edi,edx
  2207. xor esi,eax
  2208. vpaddd xmm9,xmm10,xmm0
  2209. shld edx,edx,5
  2210. add ecx,esi
  2211. vpxor xmm1,xmm1,xmm8
  2212. xor edi,ebp
  2213. xor ebp,eax
  2214. add ecx,edx
  2215. add ebx,DWORD PTR[20+rsp]
  2216. vpsrld xmm8,xmm1,30
  2217. vmovdqa XMMWORD PTR[rsp],xmm9
  2218. and edi,ebp
  2219. xor ebp,eax
  2220. shrd edx,edx,7
  2221. vaesenc xmm12,xmm12,xmm14
  2222. vmovups xmm15,XMMWORD PTR[48+r15]
  2223. mov esi,ecx
  2224. vpslld xmm1,xmm1,2
  2225. xor edi,ebp
  2226. shld ecx,ecx,5
  2227. add ebx,edi
  2228. xor esi,edx
  2229. xor edx,ebp
  2230. add ebx,ecx
  2231. add eax,DWORD PTR[24+rsp]
  2232. and esi,edx
  2233. vpor xmm1,xmm1,xmm8
  2234. xor edx,ebp
  2235. shrd ecx,ecx,7
  2236. mov edi,ebx
  2237. xor esi,edx
  2238. shld ebx,ebx,5
  2239. add eax,esi
  2240. xor edi,ecx
  2241. xor ecx,edx
  2242. add eax,ebx
  2243. add ebp,DWORD PTR[28+rsp]
  2244. cmp r8d,11
  2245. jb $L$vaesenclast8
  2246. vaesenc xmm12,xmm12,xmm15
  2247. vmovups xmm14,XMMWORD PTR[64+r15]
  2248. vaesenc xmm12,xmm12,xmm14
  2249. vmovups xmm15,XMMWORD PTR[80+r15]
  2250. je $L$vaesenclast8
  2251. vaesenc xmm12,xmm12,xmm15
  2252. vmovups xmm14,XMMWORD PTR[96+r15]
  2253. vaesenc xmm12,xmm12,xmm14
  2254. vmovups xmm15,XMMWORD PTR[112+r15]
  2255. $L$vaesenclast8::
  2256. vaesenclast xmm12,xmm12,xmm15
  2257. vmovups xmm15,XMMWORD PTR[((-112))+r15]
  2258. vmovups xmm14,XMMWORD PTR[((16-112))+r15]
  2259. and edi,ecx
  2260. xor ecx,edx
  2261. shrd ebx,ebx,7
  2262. mov esi,eax
  2263. xor edi,ecx
  2264. shld eax,eax,5
  2265. add ebp,edi
  2266. xor esi,ebx
  2267. xor ebx,ecx
  2268. add ebp,eax
  2269. vpalignr xmm8,xmm1,xmm0,8
  2270. vpxor xmm2,xmm2,xmm6
  2271. add edx,DWORD PTR[32+rsp]
  2272. and esi,ebx
  2273. xor ebx,ecx
  2274. shrd eax,eax,7
  2275. vpxor xmm2,xmm2,xmm3
  2276. mov edi,ebp
  2277. xor esi,ebx
  2278. vpaddd xmm9,xmm10,xmm1
  2279. shld ebp,ebp,5
  2280. add edx,esi
  2281. vmovdqu xmm13,XMMWORD PTR[48+r12]
  2282. vpxor xmm13,xmm13,xmm15
  2283. vmovups XMMWORD PTR[32+r12*1+r13],xmm12
  2284. vpxor xmm12,xmm12,xmm13
  2285. vaesenc xmm12,xmm12,xmm14
  2286. vmovups xmm15,XMMWORD PTR[((-80))+r15]
  2287. vpxor xmm2,xmm2,xmm8
  2288. xor edi,eax
  2289. xor eax,ebx
  2290. add edx,ebp
  2291. add ecx,DWORD PTR[36+rsp]
  2292. vpsrld xmm8,xmm2,30
  2293. vmovdqa XMMWORD PTR[16+rsp],xmm9
  2294. and edi,eax
  2295. xor eax,ebx
  2296. shrd ebp,ebp,7
  2297. mov esi,edx
  2298. vpslld xmm2,xmm2,2
  2299. xor edi,eax
  2300. shld edx,edx,5
  2301. add ecx,edi
  2302. xor esi,ebp
  2303. xor ebp,eax
  2304. add ecx,edx
  2305. add ebx,DWORD PTR[40+rsp]
  2306. and esi,ebp
  2307. vpor xmm2,xmm2,xmm8
  2308. xor ebp,eax
  2309. shrd edx,edx,7
  2310. vaesenc xmm12,xmm12,xmm15
  2311. vmovups xmm14,XMMWORD PTR[((-64))+r15]
  2312. mov edi,ecx
  2313. xor esi,ebp
  2314. shld ecx,ecx,5
  2315. add ebx,esi
  2316. xor edi,edx
  2317. xor edx,ebp
  2318. add ebx,ecx
  2319. add eax,DWORD PTR[44+rsp]
  2320. and edi,edx
  2321. xor edx,ebp
  2322. shrd ecx,ecx,7
  2323. mov esi,ebx
  2324. xor edi,edx
  2325. shld ebx,ebx,5
  2326. add eax,edi
  2327. xor esi,edx
  2328. add eax,ebx
  2329. vpalignr xmm8,xmm2,xmm1,8
  2330. vpxor xmm3,xmm3,xmm7
  2331. add ebp,DWORD PTR[48+rsp]
  2332. vaesenc xmm12,xmm12,xmm14
  2333. vmovups xmm15,XMMWORD PTR[((-48))+r15]
  2334. xor esi,ecx
  2335. mov edi,eax
  2336. shld eax,eax,5
  2337. vpxor xmm3,xmm3,xmm4
  2338. add ebp,esi
  2339. xor edi,ecx
  2340. vpaddd xmm9,xmm10,xmm2
  2341. shrd ebx,ebx,7
  2342. add ebp,eax
  2343. vpxor xmm3,xmm3,xmm8
  2344. add edx,DWORD PTR[52+rsp]
  2345. xor edi,ebx
  2346. mov esi,ebp
  2347. shld ebp,ebp,5
  2348. vpsrld xmm8,xmm3,30
  2349. vmovdqa XMMWORD PTR[32+rsp],xmm9
  2350. add edx,edi
  2351. xor esi,ebx
  2352. shrd eax,eax,7
  2353. add edx,ebp
  2354. vpslld xmm3,xmm3,2
  2355. add ecx,DWORD PTR[56+rsp]
  2356. xor esi,eax
  2357. mov edi,edx
  2358. shld edx,edx,5
  2359. add ecx,esi
  2360. vaesenc xmm12,xmm12,xmm15
  2361. vmovups xmm14,XMMWORD PTR[((-32))+r15]
  2362. xor edi,eax
  2363. shrd ebp,ebp,7
  2364. add ecx,edx
  2365. vpor xmm3,xmm3,xmm8
  2366. add ebx,DWORD PTR[60+rsp]
  2367. xor edi,ebp
  2368. mov esi,ecx
  2369. shld ecx,ecx,5
  2370. add ebx,edi
  2371. xor esi,ebp
  2372. shrd edx,edx,7
  2373. add ebx,ecx
  2374. add eax,DWORD PTR[rsp]
  2375. vpaddd xmm9,xmm10,xmm3
  2376. xor esi,edx
  2377. mov edi,ebx
  2378. shld ebx,ebx,5
  2379. add eax,esi
  2380. vmovdqa XMMWORD PTR[48+rsp],xmm9
  2381. xor edi,edx
  2382. shrd ecx,ecx,7
  2383. add eax,ebx
  2384. add ebp,DWORD PTR[4+rsp]
  2385. vaesenc xmm12,xmm12,xmm14
  2386. vmovups xmm15,XMMWORD PTR[((-16))+r15]
  2387. xor edi,ecx
  2388. mov esi,eax
  2389. shld eax,eax,5
  2390. add ebp,edi
  2391. xor esi,ecx
  2392. shrd ebx,ebx,7
  2393. add ebp,eax
  2394. add edx,DWORD PTR[8+rsp]
  2395. xor esi,ebx
  2396. mov edi,ebp
  2397. shld ebp,ebp,5
  2398. add edx,esi
  2399. xor edi,ebx
  2400. shrd eax,eax,7
  2401. add edx,ebp
  2402. add ecx,DWORD PTR[12+rsp]
  2403. xor edi,eax
  2404. mov esi,edx
  2405. shld edx,edx,5
  2406. add ecx,edi
  2407. vaesenc xmm12,xmm12,xmm15
  2408. vmovups xmm14,XMMWORD PTR[r15]
  2409. xor esi,eax
  2410. shrd ebp,ebp,7
  2411. add ecx,edx
  2412. cmp r10,r14
  2413. je $L$done_avx
  2414. vmovdqa xmm9,XMMWORD PTR[64+r11]
  2415. vmovdqa xmm10,XMMWORD PTR[r11]
  2416. vmovdqu xmm0,XMMWORD PTR[r10]
  2417. vmovdqu xmm1,XMMWORD PTR[16+r10]
  2418. vmovdqu xmm2,XMMWORD PTR[32+r10]
  2419. vmovdqu xmm3,XMMWORD PTR[48+r10]
  2420. vpshufb xmm0,xmm0,xmm9
  2421. add r10,64
  2422. add ebx,DWORD PTR[16+rsp]
  2423. xor esi,ebp
  2424. vpshufb xmm1,xmm1,xmm9
  2425. mov edi,ecx
  2426. shld ecx,ecx,5
  2427. vpaddd xmm8,xmm0,xmm10
  2428. add ebx,esi
  2429. xor edi,ebp
  2430. shrd edx,edx,7
  2431. add ebx,ecx
  2432. vmovdqa XMMWORD PTR[rsp],xmm8
  2433. add eax,DWORD PTR[20+rsp]
  2434. xor edi,edx
  2435. mov esi,ebx
  2436. shld ebx,ebx,5
  2437. add eax,edi
  2438. xor esi,edx
  2439. shrd ecx,ecx,7
  2440. add eax,ebx
  2441. add ebp,DWORD PTR[24+rsp]
  2442. vaesenc xmm12,xmm12,xmm14
  2443. vmovups xmm15,XMMWORD PTR[16+r15]
  2444. xor esi,ecx
  2445. mov edi,eax
  2446. shld eax,eax,5
  2447. add ebp,esi
  2448. xor edi,ecx
  2449. shrd ebx,ebx,7
  2450. add ebp,eax
  2451. add edx,DWORD PTR[28+rsp]
  2452. xor edi,ebx
  2453. mov esi,ebp
  2454. shld ebp,ebp,5
  2455. add edx,edi
  2456. xor esi,ebx
  2457. shrd eax,eax,7
  2458. add edx,ebp
  2459. add ecx,DWORD PTR[32+rsp]
  2460. xor esi,eax
  2461. vpshufb xmm2,xmm2,xmm9
  2462. mov edi,edx
  2463. shld edx,edx,5
  2464. vpaddd xmm8,xmm1,xmm10
  2465. add ecx,esi
  2466. vaesenc xmm12,xmm12,xmm15
  2467. vmovups xmm14,XMMWORD PTR[32+r15]
  2468. xor edi,eax
  2469. shrd ebp,ebp,7
  2470. add ecx,edx
  2471. vmovdqa XMMWORD PTR[16+rsp],xmm8
  2472. add ebx,DWORD PTR[36+rsp]
  2473. xor edi,ebp
  2474. mov esi,ecx
  2475. shld ecx,ecx,5
  2476. add ebx,edi
  2477. xor esi,ebp
  2478. shrd edx,edx,7
  2479. add ebx,ecx
  2480. add eax,DWORD PTR[40+rsp]
  2481. xor esi,edx
  2482. mov edi,ebx
  2483. shld ebx,ebx,5
  2484. add eax,esi
  2485. xor edi,edx
  2486. shrd ecx,ecx,7
  2487. add eax,ebx
  2488. add ebp,DWORD PTR[44+rsp]
  2489. vaesenc xmm12,xmm12,xmm14
  2490. vmovups xmm15,XMMWORD PTR[48+r15]
  2491. xor edi,ecx
  2492. mov esi,eax
  2493. shld eax,eax,5
  2494. add ebp,edi
  2495. xor esi,ecx
  2496. shrd ebx,ebx,7
  2497. add ebp,eax
  2498. add edx,DWORD PTR[48+rsp]
  2499. xor esi,ebx
  2500. vpshufb xmm3,xmm3,xmm9
  2501. mov edi,ebp
  2502. shld ebp,ebp,5
  2503. vpaddd xmm8,xmm2,xmm10
  2504. add edx,esi
  2505. xor edi,ebx
  2506. shrd eax,eax,7
  2507. add edx,ebp
  2508. vmovdqa XMMWORD PTR[32+rsp],xmm8
  2509. add ecx,DWORD PTR[52+rsp]
  2510. xor edi,eax
  2511. mov esi,edx
  2512. shld edx,edx,5
  2513. add ecx,edi
  2514. cmp r8d,11
  2515. jb $L$vaesenclast9
  2516. vaesenc xmm12,xmm12,xmm15
  2517. vmovups xmm14,XMMWORD PTR[64+r15]
  2518. vaesenc xmm12,xmm12,xmm14
  2519. vmovups xmm15,XMMWORD PTR[80+r15]
  2520. je $L$vaesenclast9
  2521. vaesenc xmm12,xmm12,xmm15
  2522. vmovups xmm14,XMMWORD PTR[96+r15]
  2523. vaesenc xmm12,xmm12,xmm14
  2524. vmovups xmm15,XMMWORD PTR[112+r15]
  2525. $L$vaesenclast9::
  2526. vaesenclast xmm12,xmm12,xmm15
  2527. vmovups xmm15,XMMWORD PTR[((-112))+r15]
  2528. vmovups xmm14,XMMWORD PTR[((16-112))+r15]
  2529. xor esi,eax
  2530. shrd ebp,ebp,7
  2531. add ecx,edx
  2532. add ebx,DWORD PTR[56+rsp]
  2533. xor esi,ebp
  2534. mov edi,ecx
  2535. shld ecx,ecx,5
  2536. add ebx,esi
  2537. xor edi,ebp
  2538. shrd edx,edx,7
  2539. add ebx,ecx
  2540. add eax,DWORD PTR[60+rsp]
  2541. xor edi,edx
  2542. mov esi,ebx
  2543. shld ebx,ebx,5
  2544. add eax,edi
  2545. shrd ecx,ecx,7
  2546. add eax,ebx
  2547. vmovups XMMWORD PTR[48+r12*1+r13],xmm12
  2548. lea r12,QWORD PTR[64+r12]
  2549. add eax,DWORD PTR[r9]
  2550. add esi,DWORD PTR[4+r9]
  2551. add ecx,DWORD PTR[8+r9]
  2552. add edx,DWORD PTR[12+r9]
  2553. mov DWORD PTR[r9],eax
  2554. add ebp,DWORD PTR[16+r9]
  2555. mov DWORD PTR[4+r9],esi
  2556. mov ebx,esi
  2557. mov DWORD PTR[8+r9],ecx
  2558. mov edi,ecx
  2559. mov DWORD PTR[12+r9],edx
  2560. xor edi,edx
  2561. mov DWORD PTR[16+r9],ebp
  2562. and esi,edi
  2563. jmp $L$oop_avx
  2564. $L$done_avx::
  2565. add ebx,DWORD PTR[16+rsp]
  2566. xor esi,ebp
  2567. mov edi,ecx
  2568. shld ecx,ecx,5
  2569. add ebx,esi
  2570. xor edi,ebp
  2571. shrd edx,edx,7
  2572. add ebx,ecx
  2573. add eax,DWORD PTR[20+rsp]
  2574. xor edi,edx
  2575. mov esi,ebx
  2576. shld ebx,ebx,5
  2577. add eax,edi
  2578. xor esi,edx
  2579. shrd ecx,ecx,7
  2580. add eax,ebx
  2581. add ebp,DWORD PTR[24+rsp]
  2582. vaesenc xmm12,xmm12,xmm14
  2583. vmovups xmm15,XMMWORD PTR[16+r15]
  2584. xor esi,ecx
  2585. mov edi,eax
  2586. shld eax,eax,5
  2587. add ebp,esi
  2588. xor edi,ecx
  2589. shrd ebx,ebx,7
  2590. add ebp,eax
  2591. add edx,DWORD PTR[28+rsp]
  2592. xor edi,ebx
  2593. mov esi,ebp
  2594. shld ebp,ebp,5
  2595. add edx,edi
  2596. xor esi,ebx
  2597. shrd eax,eax,7
  2598. add edx,ebp
  2599. add ecx,DWORD PTR[32+rsp]
  2600. xor esi,eax
  2601. mov edi,edx
  2602. shld edx,edx,5
  2603. add ecx,esi
  2604. vaesenc xmm12,xmm12,xmm15
  2605. vmovups xmm14,XMMWORD PTR[32+r15]
  2606. xor edi,eax
  2607. shrd ebp,ebp,7
  2608. add ecx,edx
  2609. add ebx,DWORD PTR[36+rsp]
  2610. xor edi,ebp
  2611. mov esi,ecx
  2612. shld ecx,ecx,5
  2613. add ebx,edi
  2614. xor esi,ebp
  2615. shrd edx,edx,7
  2616. add ebx,ecx
  2617. add eax,DWORD PTR[40+rsp]
  2618. xor esi,edx
  2619. mov edi,ebx
  2620. shld ebx,ebx,5
  2621. add eax,esi
  2622. xor edi,edx
  2623. shrd ecx,ecx,7
  2624. add eax,ebx
  2625. add ebp,DWORD PTR[44+rsp]
  2626. vaesenc xmm12,xmm12,xmm14
  2627. vmovups xmm15,XMMWORD PTR[48+r15]
  2628. xor edi,ecx
  2629. mov esi,eax
  2630. shld eax,eax,5
  2631. add ebp,edi
  2632. xor esi,ecx
  2633. shrd ebx,ebx,7
  2634. add ebp,eax
  2635. add edx,DWORD PTR[48+rsp]
  2636. xor esi,ebx
  2637. mov edi,ebp
  2638. shld ebp,ebp,5
  2639. add edx,esi
  2640. xor edi,ebx
  2641. shrd eax,eax,7
  2642. add edx,ebp
  2643. add ecx,DWORD PTR[52+rsp]
  2644. xor edi,eax
  2645. mov esi,edx
  2646. shld edx,edx,5
  2647. add ecx,edi
  2648. cmp r8d,11
  2649. jb $L$vaesenclast10
  2650. vaesenc xmm12,xmm12,xmm15
  2651. vmovups xmm14,XMMWORD PTR[64+r15]
  2652. vaesenc xmm12,xmm12,xmm14
  2653. vmovups xmm15,XMMWORD PTR[80+r15]
  2654. je $L$vaesenclast10
  2655. vaesenc xmm12,xmm12,xmm15
  2656. vmovups xmm14,XMMWORD PTR[96+r15]
  2657. vaesenc xmm12,xmm12,xmm14
  2658. vmovups xmm15,XMMWORD PTR[112+r15]
  2659. $L$vaesenclast10::
  2660. vaesenclast xmm12,xmm12,xmm15
  2661. vmovups xmm15,XMMWORD PTR[((-112))+r15]
  2662. vmovups xmm14,XMMWORD PTR[((16-112))+r15]
  2663. xor esi,eax
  2664. shrd ebp,ebp,7
  2665. add ecx,edx
  2666. add ebx,DWORD PTR[56+rsp]
  2667. xor esi,ebp
  2668. mov edi,ecx
  2669. shld ecx,ecx,5
  2670. add ebx,esi
  2671. xor edi,ebp
  2672. shrd edx,edx,7
  2673. add ebx,ecx
  2674. add eax,DWORD PTR[60+rsp]
  2675. xor edi,edx
  2676. mov esi,ebx
  2677. shld ebx,ebx,5
  2678. add eax,edi
  2679. shrd ecx,ecx,7
  2680. add eax,ebx
  2681. vmovups XMMWORD PTR[48+r12*1+r13],xmm12
  2682. mov r8,QWORD PTR[88+rsp]
  2683. add eax,DWORD PTR[r9]
  2684. add esi,DWORD PTR[4+r9]
  2685. add ecx,DWORD PTR[8+r9]
  2686. mov DWORD PTR[r9],eax
  2687. add edx,DWORD PTR[12+r9]
  2688. mov DWORD PTR[4+r9],esi
  2689. add ebp,DWORD PTR[16+r9]
  2690. mov DWORD PTR[8+r9],ecx
  2691. mov DWORD PTR[12+r9],edx
  2692. mov DWORD PTR[16+r9],ebp
  2693. vmovups XMMWORD PTR[r8],xmm12
  2694. vzeroall
  2695. movaps xmm6,XMMWORD PTR[((96+0))+rsp]
  2696. movaps xmm7,XMMWORD PTR[((96+16))+rsp]
  2697. movaps xmm8,XMMWORD PTR[((96+32))+rsp]
  2698. movaps xmm9,XMMWORD PTR[((96+48))+rsp]
  2699. movaps xmm10,XMMWORD PTR[((96+64))+rsp]
  2700. movaps xmm11,XMMWORD PTR[((96+80))+rsp]
  2701. movaps xmm12,XMMWORD PTR[((96+96))+rsp]
  2702. movaps xmm13,XMMWORD PTR[((96+112))+rsp]
  2703. movaps xmm14,XMMWORD PTR[((96+128))+rsp]
  2704. movaps xmm15,XMMWORD PTR[((96+144))+rsp]
  2705. lea rsi,QWORD PTR[264+rsp]
  2706. mov r15,QWORD PTR[rsi]
  2707. mov r14,QWORD PTR[8+rsi]
  2708. mov r13,QWORD PTR[16+rsi]
  2709. mov r12,QWORD PTR[24+rsi]
  2710. mov rbp,QWORD PTR[32+rsi]
  2711. mov rbx,QWORD PTR[40+rsi]
  2712. lea rsp,QWORD PTR[48+rsi]
  2713. $L$epilogue_avx::
  2714. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  2715. mov rsi,QWORD PTR[16+rsp]
  2716. DB 0F3h,0C3h ;repret
  2717. $L$SEH_end_aesni_cbc_sha1_enc_avx::
  2718. aesni_cbc_sha1_enc_avx ENDP
  2719. ALIGN 64
  2720. K_XX_XX::
  2721. DD 05a827999h,05a827999h,05a827999h,05a827999h
  2722. DD 06ed9eba1h,06ed9eba1h,06ed9eba1h,06ed9eba1h
  2723. DD 08f1bbcdch,08f1bbcdch,08f1bbcdch,08f1bbcdch
  2724. DD 0ca62c1d6h,0ca62c1d6h,0ca62c1d6h,0ca62c1d6h
  2725. DD 000010203h,004050607h,008090a0bh,00c0d0e0fh
  2726. DB 0fh,0eh,0dh,0ch,0bh,0ah,09h,08h,07h,06h,05h,04h,03h,02h,01h,00h
  2727. DB 65,69,83,78,73,45,67,66,67,43,83,72,65,49,32,115
  2728. DB 116,105,116,99,104,32,102,111,114,32,120,56,54,95,54,52
  2729. DB 44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32
  2730. DB 60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111
  2731. DB 114,103,62,0
  2732. ALIGN 64
  2733. ALIGN 32
  2734. aesni_cbc_sha1_enc_shaext PROC PRIVATE
  2735. mov QWORD PTR[8+rsp],rdi ;WIN64 prologue
  2736. mov QWORD PTR[16+rsp],rsi
  2737. mov rax,rsp
  2738. $L$SEH_begin_aesni_cbc_sha1_enc_shaext::
  2739. mov rdi,rcx
  2740. mov rsi,rdx
  2741. mov rdx,r8
  2742. mov rcx,r9
  2743. mov r8,QWORD PTR[40+rsp]
  2744. mov r9,QWORD PTR[48+rsp]
  2745. mov r10,QWORD PTR[56+rsp]
  2746. lea rsp,QWORD PTR[((-168))+rsp]
  2747. movaps XMMWORD PTR[(-8-160)+rax],xmm6
  2748. movaps XMMWORD PTR[(-8-144)+rax],xmm7
  2749. movaps XMMWORD PTR[(-8-128)+rax],xmm8
  2750. movaps XMMWORD PTR[(-8-112)+rax],xmm9
  2751. movaps XMMWORD PTR[(-8-96)+rax],xmm10
  2752. movaps XMMWORD PTR[(-8-80)+rax],xmm11
  2753. movaps XMMWORD PTR[(-8-64)+rax],xmm12
  2754. movaps XMMWORD PTR[(-8-48)+rax],xmm13
  2755. movaps XMMWORD PTR[(-8-32)+rax],xmm14
  2756. movaps XMMWORD PTR[(-8-16)+rax],xmm15
  2757. $L$prologue_shaext::
  2758. movdqu xmm8,XMMWORD PTR[r9]
  2759. movd xmm9,DWORD PTR[16+r9]
  2760. movdqa xmm7,XMMWORD PTR[((K_XX_XX+80))]
  2761. mov r11d,DWORD PTR[240+rcx]
  2762. sub rsi,rdi
  2763. movups xmm15,XMMWORD PTR[rcx]
  2764. movups xmm2,XMMWORD PTR[r8]
  2765. movups xmm0,XMMWORD PTR[16+rcx]
  2766. lea rcx,QWORD PTR[112+rcx]
  2767. pshufd xmm8,xmm8,27
  2768. pshufd xmm9,xmm9,27
  2769. jmp $L$oop_shaext
  2770. ALIGN 16
  2771. $L$oop_shaext::
  2772. movups xmm14,XMMWORD PTR[rdi]
  2773. xorps xmm14,xmm15
  2774. xorps xmm2,xmm14
  2775. movups xmm1,XMMWORD PTR[((-80))+rcx]
  2776. DB 102,15,56,220,208
  2777. movdqu xmm3,XMMWORD PTR[r10]
  2778. movdqa xmm12,xmm9
  2779. DB 102,15,56,0,223
  2780. movdqu xmm4,XMMWORD PTR[16+r10]
  2781. movdqa xmm11,xmm8
  2782. movups xmm0,XMMWORD PTR[((-64))+rcx]
  2783. DB 102,15,56,220,209
  2784. DB 102,15,56,0,231
  2785. paddd xmm9,xmm3
  2786. movdqu xmm5,XMMWORD PTR[32+r10]
  2787. lea r10,QWORD PTR[64+r10]
  2788. pxor xmm3,xmm12
  2789. movups xmm1,XMMWORD PTR[((-48))+rcx]
  2790. DB 102,15,56,220,208
  2791. pxor xmm3,xmm12
  2792. movdqa xmm10,xmm8
  2793. DB 102,15,56,0,239
  2794. DB 69,15,58,204,193,0
  2795. DB 68,15,56,200,212
  2796. movups xmm0,XMMWORD PTR[((-32))+rcx]
  2797. DB 102,15,56,220,209
  2798. DB 15,56,201,220
  2799. movdqu xmm6,XMMWORD PTR[((-16))+r10]
  2800. movdqa xmm9,xmm8
  2801. DB 102,15,56,0,247
  2802. movups xmm1,XMMWORD PTR[((-16))+rcx]
  2803. DB 102,15,56,220,208
  2804. DB 69,15,58,204,194,0
  2805. DB 68,15,56,200,205
  2806. pxor xmm3,xmm5
  2807. DB 15,56,201,229
  2808. movups xmm0,XMMWORD PTR[rcx]
  2809. DB 102,15,56,220,209
  2810. movdqa xmm10,xmm8
  2811. DB 69,15,58,204,193,0
  2812. DB 68,15,56,200,214
  2813. movups xmm1,XMMWORD PTR[16+rcx]
  2814. DB 102,15,56,220,208
  2815. DB 15,56,202,222
  2816. pxor xmm4,xmm6
  2817. DB 15,56,201,238
  2818. movups xmm0,XMMWORD PTR[32+rcx]
  2819. DB 102,15,56,220,209
  2820. movdqa xmm9,xmm8
  2821. DB 69,15,58,204,194,0
  2822. DB 68,15,56,200,203
  2823. movups xmm1,XMMWORD PTR[48+rcx]
  2824. DB 102,15,56,220,208
  2825. DB 15,56,202,227
  2826. pxor xmm5,xmm3
  2827. DB 15,56,201,243
  2828. cmp r11d,11
  2829. jb $L$aesenclast11
  2830. movups xmm0,XMMWORD PTR[64+rcx]
  2831. DB 102,15,56,220,209
  2832. movups xmm1,XMMWORD PTR[80+rcx]
  2833. DB 102,15,56,220,208
  2834. je $L$aesenclast11
  2835. movups xmm0,XMMWORD PTR[96+rcx]
  2836. DB 102,15,56,220,209
  2837. movups xmm1,XMMWORD PTR[112+rcx]
  2838. DB 102,15,56,220,208
  2839. $L$aesenclast11::
  2840. DB 102,15,56,221,209
  2841. movups xmm0,XMMWORD PTR[((16-112))+rcx]
  2842. movdqa xmm10,xmm8
  2843. DB 69,15,58,204,193,0
  2844. DB 68,15,56,200,212
  2845. movups xmm14,XMMWORD PTR[16+rdi]
  2846. xorps xmm14,xmm15
  2847. movups XMMWORD PTR[rdi*1+rsi],xmm2
  2848. xorps xmm2,xmm14
  2849. movups xmm1,XMMWORD PTR[((-80))+rcx]
  2850. DB 102,15,56,220,208
  2851. DB 15,56,202,236
  2852. pxor xmm6,xmm4
  2853. DB 15,56,201,220
  2854. movups xmm0,XMMWORD PTR[((-64))+rcx]
  2855. DB 102,15,56,220,209
  2856. movdqa xmm9,xmm8
  2857. DB 69,15,58,204,194,1
  2858. DB 68,15,56,200,205
  2859. movups xmm1,XMMWORD PTR[((-48))+rcx]
  2860. DB 102,15,56,220,208
  2861. DB 15,56,202,245
  2862. pxor xmm3,xmm5
  2863. DB 15,56,201,229
  2864. movups xmm0,XMMWORD PTR[((-32))+rcx]
  2865. DB 102,15,56,220,209
  2866. movdqa xmm10,xmm8
  2867. DB 69,15,58,204,193,1
  2868. DB 68,15,56,200,214
  2869. movups xmm1,XMMWORD PTR[((-16))+rcx]
  2870. DB 102,15,56,220,208
  2871. DB 15,56,202,222
  2872. pxor xmm4,xmm6
  2873. DB 15,56,201,238
  2874. movups xmm0,XMMWORD PTR[rcx]
  2875. DB 102,15,56,220,209
  2876. movdqa xmm9,xmm8
  2877. DB 69,15,58,204,194,1
  2878. DB 68,15,56,200,203
  2879. movups xmm1,XMMWORD PTR[16+rcx]
  2880. DB 102,15,56,220,208
  2881. DB 15,56,202,227
  2882. pxor xmm5,xmm3
  2883. DB 15,56,201,243
  2884. movups xmm0,XMMWORD PTR[32+rcx]
  2885. DB 102,15,56,220,209
  2886. movdqa xmm10,xmm8
  2887. DB 69,15,58,204,193,1
  2888. DB 68,15,56,200,212
  2889. movups xmm1,XMMWORD PTR[48+rcx]
  2890. DB 102,15,56,220,208
  2891. DB 15,56,202,236
  2892. pxor xmm6,xmm4
  2893. DB 15,56,201,220
  2894. cmp r11d,11
  2895. jb $L$aesenclast12
  2896. movups xmm0,XMMWORD PTR[64+rcx]
  2897. DB 102,15,56,220,209
  2898. movups xmm1,XMMWORD PTR[80+rcx]
  2899. DB 102,15,56,220,208
  2900. je $L$aesenclast12
  2901. movups xmm0,XMMWORD PTR[96+rcx]
  2902. DB 102,15,56,220,209
  2903. movups xmm1,XMMWORD PTR[112+rcx]
  2904. DB 102,15,56,220,208
  2905. $L$aesenclast12::
  2906. DB 102,15,56,221,209
  2907. movups xmm0,XMMWORD PTR[((16-112))+rcx]
  2908. movdqa xmm9,xmm8
  2909. DB 69,15,58,204,194,1
  2910. DB 68,15,56,200,205
  2911. movups xmm14,XMMWORD PTR[32+rdi]
  2912. xorps xmm14,xmm15
  2913. movups XMMWORD PTR[16+rdi*1+rsi],xmm2
  2914. xorps xmm2,xmm14
  2915. movups xmm1,XMMWORD PTR[((-80))+rcx]
  2916. DB 102,15,56,220,208
  2917. DB 15,56,202,245
  2918. pxor xmm3,xmm5
  2919. DB 15,56,201,229
  2920. movups xmm0,XMMWORD PTR[((-64))+rcx]
  2921. DB 102,15,56,220,209
  2922. movdqa xmm10,xmm8
  2923. DB 69,15,58,204,193,2
  2924. DB 68,15,56,200,214
  2925. movups xmm1,XMMWORD PTR[((-48))+rcx]
  2926. DB 102,15,56,220,208
  2927. DB 15,56,202,222
  2928. pxor xmm4,xmm6
  2929. DB 15,56,201,238
  2930. movups xmm0,XMMWORD PTR[((-32))+rcx]
  2931. DB 102,15,56,220,209
  2932. movdqa xmm9,xmm8
  2933. DB 69,15,58,204,194,2
  2934. DB 68,15,56,200,203
  2935. movups xmm1,XMMWORD PTR[((-16))+rcx]
  2936. DB 102,15,56,220,208
  2937. DB 15,56,202,227
  2938. pxor xmm5,xmm3
  2939. DB 15,56,201,243
  2940. movups xmm0,XMMWORD PTR[rcx]
  2941. DB 102,15,56,220,209
  2942. movdqa xmm10,xmm8
  2943. DB 69,15,58,204,193,2
  2944. DB 68,15,56,200,212
  2945. movups xmm1,XMMWORD PTR[16+rcx]
  2946. DB 102,15,56,220,208
  2947. DB 15,56,202,236
  2948. pxor xmm6,xmm4
  2949. DB 15,56,201,220
  2950. movups xmm0,XMMWORD PTR[32+rcx]
  2951. DB 102,15,56,220,209
  2952. movdqa xmm9,xmm8
  2953. DB 69,15,58,204,194,2
  2954. DB 68,15,56,200,205
  2955. movups xmm1,XMMWORD PTR[48+rcx]
  2956. DB 102,15,56,220,208
  2957. DB 15,56,202,245
  2958. pxor xmm3,xmm5
  2959. DB 15,56,201,229
  2960. cmp r11d,11
  2961. jb $L$aesenclast13
  2962. movups xmm0,XMMWORD PTR[64+rcx]
  2963. DB 102,15,56,220,209
  2964. movups xmm1,XMMWORD PTR[80+rcx]
  2965. DB 102,15,56,220,208
  2966. je $L$aesenclast13
  2967. movups xmm0,XMMWORD PTR[96+rcx]
  2968. DB 102,15,56,220,209
  2969. movups xmm1,XMMWORD PTR[112+rcx]
  2970. DB 102,15,56,220,208
  2971. $L$aesenclast13::
  2972. DB 102,15,56,221,209
  2973. movups xmm0,XMMWORD PTR[((16-112))+rcx]
  2974. movdqa xmm10,xmm8
  2975. DB 69,15,58,204,193,2
  2976. DB 68,15,56,200,214
  2977. movups xmm14,XMMWORD PTR[48+rdi]
  2978. xorps xmm14,xmm15
  2979. movups XMMWORD PTR[32+rdi*1+rsi],xmm2
  2980. xorps xmm2,xmm14
  2981. movups xmm1,XMMWORD PTR[((-80))+rcx]
  2982. DB 102,15,56,220,208
  2983. DB 15,56,202,222
  2984. pxor xmm4,xmm6
  2985. DB 15,56,201,238
  2986. movups xmm0,XMMWORD PTR[((-64))+rcx]
  2987. DB 102,15,56,220,209
  2988. movdqa xmm9,xmm8
  2989. DB 69,15,58,204,194,3
  2990. DB 68,15,56,200,203
  2991. movups xmm1,XMMWORD PTR[((-48))+rcx]
  2992. DB 102,15,56,220,208
  2993. DB 15,56,202,227
  2994. pxor xmm5,xmm3
  2995. DB 15,56,201,243
  2996. movups xmm0,XMMWORD PTR[((-32))+rcx]
  2997. DB 102,15,56,220,209
  2998. movdqa xmm10,xmm8
  2999. DB 69,15,58,204,193,3
  3000. DB 68,15,56,200,212
  3001. DB 15,56,202,236
  3002. pxor xmm6,xmm4
  3003. movups xmm1,XMMWORD PTR[((-16))+rcx]
  3004. DB 102,15,56,220,208
  3005. movdqa xmm9,xmm8
  3006. DB 69,15,58,204,194,3
  3007. DB 68,15,56,200,205
  3008. DB 15,56,202,245
  3009. movups xmm0,XMMWORD PTR[rcx]
  3010. DB 102,15,56,220,209
  3011. movdqa xmm5,xmm12
  3012. movdqa xmm10,xmm8
  3013. DB 69,15,58,204,193,3
  3014. DB 68,15,56,200,214
  3015. movups xmm1,XMMWORD PTR[16+rcx]
  3016. DB 102,15,56,220,208
  3017. movdqa xmm9,xmm8
  3018. DB 69,15,58,204,194,3
  3019. DB 68,15,56,200,205
  3020. movups xmm0,XMMWORD PTR[32+rcx]
  3021. DB 102,15,56,220,209
  3022. movups xmm1,XMMWORD PTR[48+rcx]
  3023. DB 102,15,56,220,208
  3024. cmp r11d,11
  3025. jb $L$aesenclast14
  3026. movups xmm0,XMMWORD PTR[64+rcx]
  3027. DB 102,15,56,220,209
  3028. movups xmm1,XMMWORD PTR[80+rcx]
  3029. DB 102,15,56,220,208
  3030. je $L$aesenclast14
  3031. movups xmm0,XMMWORD PTR[96+rcx]
  3032. DB 102,15,56,220,209
  3033. movups xmm1,XMMWORD PTR[112+rcx]
  3034. DB 102,15,56,220,208
  3035. $L$aesenclast14::
  3036. DB 102,15,56,221,209
  3037. movups xmm0,XMMWORD PTR[((16-112))+rcx]
  3038. dec rdx
  3039. paddd xmm8,xmm11
  3040. movups XMMWORD PTR[48+rdi*1+rsi],xmm2
  3041. lea rdi,QWORD PTR[64+rdi]
  3042. jnz $L$oop_shaext
  3043. pshufd xmm8,xmm8,27
  3044. pshufd xmm9,xmm9,27
  3045. movups XMMWORD PTR[r8],xmm2
  3046. movdqu XMMWORD PTR[r9],xmm8
  3047. movd DWORD PTR[16+r9],xmm9
  3048. movaps xmm6,XMMWORD PTR[((-8-160))+rax]
  3049. movaps xmm7,XMMWORD PTR[((-8-144))+rax]
  3050. movaps xmm8,XMMWORD PTR[((-8-128))+rax]
  3051. movaps xmm9,XMMWORD PTR[((-8-112))+rax]
  3052. movaps xmm10,XMMWORD PTR[((-8-96))+rax]
  3053. movaps xmm11,XMMWORD PTR[((-8-80))+rax]
  3054. movaps xmm12,XMMWORD PTR[((-8-64))+rax]
  3055. movaps xmm13,XMMWORD PTR[((-8-48))+rax]
  3056. movaps xmm14,XMMWORD PTR[((-8-32))+rax]
  3057. movaps xmm15,XMMWORD PTR[((-8-16))+rax]
  3058. mov rsp,rax
  3059. $L$epilogue_shaext::
  3060. mov rdi,QWORD PTR[8+rsp] ;WIN64 epilogue
  3061. mov rsi,QWORD PTR[16+rsp]
  3062. DB 0F3h,0C3h ;repret
  3063. $L$SEH_end_aesni_cbc_sha1_enc_shaext::
  3064. aesni_cbc_sha1_enc_shaext ENDP
  3065. EXTERN __imp_RtlVirtualUnwind:NEAR
  3066. ALIGN 16
  3067. ssse3_handler PROC PRIVATE
  3068. push rsi
  3069. push rdi
  3070. push rbx
  3071. push rbp
  3072. push r12
  3073. push r13
  3074. push r14
  3075. push r15
  3076. pushfq
  3077. sub rsp,64
  3078. mov rax,QWORD PTR[120+r8]
  3079. mov rbx,QWORD PTR[248+r8]
  3080. mov rsi,QWORD PTR[8+r9]
  3081. mov r11,QWORD PTR[56+r9]
  3082. mov r10d,DWORD PTR[r11]
  3083. lea r10,QWORD PTR[r10*1+rsi]
  3084. cmp rbx,r10
  3085. jb $L$common_seh_tail
  3086. mov rax,QWORD PTR[152+r8]
  3087. mov r10d,DWORD PTR[4+r11]
  3088. lea r10,QWORD PTR[r10*1+rsi]
  3089. cmp rbx,r10
  3090. jae $L$common_seh_tail
  3091. lea r10,QWORD PTR[aesni_cbc_sha1_enc_shaext]
  3092. cmp rbx,r10
  3093. jb $L$seh_no_shaext
  3094. lea rsi,QWORD PTR[rax]
  3095. lea rdi,QWORD PTR[512+r8]
  3096. mov ecx,20
  3097. DD 0a548f3fch
  3098. lea rax,QWORD PTR[168+rax]
  3099. jmp $L$common_seh_tail
  3100. $L$seh_no_shaext::
  3101. lea rsi,QWORD PTR[96+rax]
  3102. lea rdi,QWORD PTR[512+r8]
  3103. mov ecx,20
  3104. DD 0a548f3fch
  3105. lea rax,QWORD PTR[264+rax]
  3106. mov r15,QWORD PTR[rax]
  3107. mov r14,QWORD PTR[8+rax]
  3108. mov r13,QWORD PTR[16+rax]
  3109. mov r12,QWORD PTR[24+rax]
  3110. mov rbp,QWORD PTR[32+rax]
  3111. mov rbx,QWORD PTR[40+rax]
  3112. lea rax,QWORD PTR[48+rax]
  3113. mov QWORD PTR[144+r8],rbx
  3114. mov QWORD PTR[160+r8],rbp
  3115. mov QWORD PTR[216+r8],r12
  3116. mov QWORD PTR[224+r8],r13
  3117. mov QWORD PTR[232+r8],r14
  3118. mov QWORD PTR[240+r8],r15
  3119. $L$common_seh_tail::
  3120. mov rdi,QWORD PTR[8+rax]
  3121. mov rsi,QWORD PTR[16+rax]
  3122. mov QWORD PTR[152+r8],rax
  3123. mov QWORD PTR[168+r8],rsi
  3124. mov QWORD PTR[176+r8],rdi
  3125. mov rdi,QWORD PTR[40+r9]
  3126. mov rsi,r8
  3127. mov ecx,154
  3128. DD 0a548f3fch
  3129. mov rsi,r9
  3130. xor rcx,rcx
  3131. mov rdx,QWORD PTR[8+rsi]
  3132. mov r8,QWORD PTR[rsi]
  3133. mov r9,QWORD PTR[16+rsi]
  3134. mov r10,QWORD PTR[40+rsi]
  3135. lea r11,QWORD PTR[56+rsi]
  3136. lea r12,QWORD PTR[24+rsi]
  3137. mov QWORD PTR[32+rsp],r10
  3138. mov QWORD PTR[40+rsp],r11
  3139. mov QWORD PTR[48+rsp],r12
  3140. mov QWORD PTR[56+rsp],rcx
  3141. call QWORD PTR[__imp_RtlVirtualUnwind]
  3142. mov eax,1
  3143. add rsp,64
  3144. popfq
  3145. pop r15
  3146. pop r14
  3147. pop r13
  3148. pop r12
  3149. pop rbp
  3150. pop rbx
  3151. pop rdi
  3152. pop rsi
  3153. DB 0F3h,0C3h ;repret
  3154. ssse3_handler ENDP
  3155. .text$ ENDS
  3156. .pdata SEGMENT READONLY ALIGN(4)
  3157. ALIGN 4
  3158. DD imagerel $L$SEH_begin_aesni_cbc_sha1_enc_ssse3
  3159. DD imagerel $L$SEH_end_aesni_cbc_sha1_enc_ssse3
  3160. DD imagerel $L$SEH_info_aesni_cbc_sha1_enc_ssse3
  3161. DD imagerel $L$SEH_begin_aesni_cbc_sha1_enc_avx
  3162. DD imagerel $L$SEH_end_aesni_cbc_sha1_enc_avx
  3163. DD imagerel $L$SEH_info_aesni_cbc_sha1_enc_avx
  3164. DD imagerel $L$SEH_begin_aesni_cbc_sha1_enc_shaext
  3165. DD imagerel $L$SEH_end_aesni_cbc_sha1_enc_shaext
  3166. DD imagerel $L$SEH_info_aesni_cbc_sha1_enc_shaext
  3167. .pdata ENDS
  3168. .xdata SEGMENT READONLY ALIGN(8)
  3169. ALIGN 8
  3170. $L$SEH_info_aesni_cbc_sha1_enc_ssse3::
  3171. DB 9,0,0,0
  3172. DD imagerel ssse3_handler
  3173. DD imagerel $L$prologue_ssse3,imagerel $L$epilogue_ssse3
  3174. $L$SEH_info_aesni_cbc_sha1_enc_avx::
  3175. DB 9,0,0,0
  3176. DD imagerel ssse3_handler
  3177. DD imagerel $L$prologue_avx,imagerel $L$epilogue_avx
  3178. $L$SEH_info_aesni_cbc_sha1_enc_shaext::
  3179. DB 9,0,0,0
  3180. DD imagerel ssse3_handler
  3181. DD imagerel $L$prologue_shaext,imagerel $L$epilogue_shaext
  3182. .xdata ENDS
  3183. END