sha512-x86_64.S 48 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155215621572158215921602161216221632164216521662167216821692170217121722173217421752176217721782179218021812182218321842185218621872188218921902191219221932194219521962197219821992200220122022203220422052206220722082209221022112212221322142215221622172218221922202221222222232224222522262227222822292230223122322233223422352236223722382239224022412242224322442245224622472248224922502251225222532254225522562257225822592260226122622263226422652266226722682269227022712272227322742275227622772278227922802281228222832284228522862287228822892290229122922293229422952296229722982299230023012302230323042305230623072308230923102311231223132314231523162317231823192320232123222323232423252326232723282329233023312332233323342335233623372338233923402341234223432344234523462347234823492350235123522353235423552356235723582359236023612362236323642365236623672368236923702371237223732374237523762377237823792380238123822383238423852386238723882389239023912392239323942395239623972398239924002401240224032404240524062407240824092410241124122413241424152416241724182419242024212422242324242425242624272428242924302431243224332434243524362437243824392440244124422443244424452446244724482449245024512452245324542455245624572458245924602461246224632464246524662467246824692470247124722473247424752476247724782479248024812482248324842485248624872488248924902491249224932494249524962497249824992500250125022503250425052506250725082509251025112512251325142515251625172518251925202521252225232524252525262527252825292530253125322533253425352536253725382539254025412542254325442545254625472548254925502551255225532554255525562557255825592560256125622563256425652566256725682569257025712572257325742575257625772578257925802581258225832584258525862587258825892590259125922593259425952596259725982599260026012602260326042605260626072608260926102611261226132614261526162617261826192620262126222623262426252626262726282629263026312632263326342635263626372638263926402641264226432644264526462647264826492650265126522653265426552656265726582659266026612662266326642665266626672668266926702671267226732674267526762677267826792680268126822683268426852686268726882689269026912692269326942695269626972698269927002701270227032704270527062707270827092710271127122713271427152716271727182719272027212722272327242725272627272728272927302731273227332734273527362737273827392740274127422743274427452746274727482749275027512752275327542755275627572758275927602761276227632764276527662767276827692770277127722773277427752776277727782779278027812782278327842785278627872788278927902791279227932794279527962797279827992800280128022803280428052806280728082809281028112812281328142815281628172818281928202821282228232824282528262827282828292830283128322833283428352836283728382839284028412842284328442845284628472848284928502851285228532854285528562857285828592860286128622863286428652866286728682869287028712872287328742875287628772878287928802881288228832884288528862887288828892890289128922893289428952896289728982899290029012902290329042905290629072908290929102911291229132914291529162917291829192920292129222923292429252926292729282929293029312932293329342935293629372938293929402941294229432944294529462947294829492950295129522953295429552956295729582959296029612962296329642965296629672968296929702971297229732974297529762977297829792980298129822983298429852986298729882989299029912992
  1. // This file is generated from a similarly-named Perl script in the BoringSSL
  2. // source tree. Do not edit by hand.
  3. #if defined(__has_feature)
  4. #if __has_feature(memory_sanitizer) && !defined(OPENSSL_NO_ASM)
  5. #define OPENSSL_NO_ASM
  6. #endif
  7. #endif
  8. #if defined(__x86_64__) && !defined(OPENSSL_NO_ASM)
  9. #if defined(BORINGSSL_PREFIX)
  10. #include <boringssl_prefix_symbols_asm.h>
  11. #endif
  12. .text
  13. .extern OPENSSL_ia32cap_P
  14. .hidden OPENSSL_ia32cap_P
  15. .globl sha512_block_data_order
  16. .hidden sha512_block_data_order
  17. .type sha512_block_data_order,@function
  18. .align 16
  19. sha512_block_data_order:
  20. .cfi_startproc
  21. leaq OPENSSL_ia32cap_P(%rip),%r11
  22. movl 0(%r11),%r9d
  23. movl 4(%r11),%r10d
  24. movl 8(%r11),%r11d
  25. andl $1073741824,%r9d
  26. andl $268435968,%r10d
  27. orl %r9d,%r10d
  28. cmpl $1342177792,%r10d
  29. je .Lavx_shortcut
  30. movq %rsp,%rax
  31. .cfi_def_cfa_register %rax
  32. pushq %rbx
  33. .cfi_offset %rbx,-16
  34. pushq %rbp
  35. .cfi_offset %rbp,-24
  36. pushq %r12
  37. .cfi_offset %r12,-32
  38. pushq %r13
  39. .cfi_offset %r13,-40
  40. pushq %r14
  41. .cfi_offset %r14,-48
  42. pushq %r15
  43. .cfi_offset %r15,-56
  44. shlq $4,%rdx
  45. subq $128+32,%rsp
  46. leaq (%rsi,%rdx,8),%rdx
  47. andq $-64,%rsp
  48. movq %rdi,128+0(%rsp)
  49. movq %rsi,128+8(%rsp)
  50. movq %rdx,128+16(%rsp)
  51. movq %rax,152(%rsp)
  52. .cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08
  53. .Lprologue:
  54. movq 0(%rdi),%rax
  55. movq 8(%rdi),%rbx
  56. movq 16(%rdi),%rcx
  57. movq 24(%rdi),%rdx
  58. movq 32(%rdi),%r8
  59. movq 40(%rdi),%r9
  60. movq 48(%rdi),%r10
  61. movq 56(%rdi),%r11
  62. jmp .Lloop
  63. .align 16
  64. .Lloop:
  65. movq %rbx,%rdi
  66. leaq K512(%rip),%rbp
  67. xorq %rcx,%rdi
  68. movq 0(%rsi),%r12
  69. movq %r8,%r13
  70. movq %rax,%r14
  71. bswapq %r12
  72. rorq $23,%r13
  73. movq %r9,%r15
  74. xorq %r8,%r13
  75. rorq $5,%r14
  76. xorq %r10,%r15
  77. movq %r12,0(%rsp)
  78. xorq %rax,%r14
  79. andq %r8,%r15
  80. rorq $4,%r13
  81. addq %r11,%r12
  82. xorq %r10,%r15
  83. rorq $6,%r14
  84. xorq %r8,%r13
  85. addq %r15,%r12
  86. movq %rax,%r15
  87. addq (%rbp),%r12
  88. xorq %rax,%r14
  89. xorq %rbx,%r15
  90. rorq $14,%r13
  91. movq %rbx,%r11
  92. andq %r15,%rdi
  93. rorq $28,%r14
  94. addq %r13,%r12
  95. xorq %rdi,%r11
  96. addq %r12,%rdx
  97. addq %r12,%r11
  98. leaq 8(%rbp),%rbp
  99. addq %r14,%r11
  100. movq 8(%rsi),%r12
  101. movq %rdx,%r13
  102. movq %r11,%r14
  103. bswapq %r12
  104. rorq $23,%r13
  105. movq %r8,%rdi
  106. xorq %rdx,%r13
  107. rorq $5,%r14
  108. xorq %r9,%rdi
  109. movq %r12,8(%rsp)
  110. xorq %r11,%r14
  111. andq %rdx,%rdi
  112. rorq $4,%r13
  113. addq %r10,%r12
  114. xorq %r9,%rdi
  115. rorq $6,%r14
  116. xorq %rdx,%r13
  117. addq %rdi,%r12
  118. movq %r11,%rdi
  119. addq (%rbp),%r12
  120. xorq %r11,%r14
  121. xorq %rax,%rdi
  122. rorq $14,%r13
  123. movq %rax,%r10
  124. andq %rdi,%r15
  125. rorq $28,%r14
  126. addq %r13,%r12
  127. xorq %r15,%r10
  128. addq %r12,%rcx
  129. addq %r12,%r10
  130. leaq 24(%rbp),%rbp
  131. addq %r14,%r10
  132. movq 16(%rsi),%r12
  133. movq %rcx,%r13
  134. movq %r10,%r14
  135. bswapq %r12
  136. rorq $23,%r13
  137. movq %rdx,%r15
  138. xorq %rcx,%r13
  139. rorq $5,%r14
  140. xorq %r8,%r15
  141. movq %r12,16(%rsp)
  142. xorq %r10,%r14
  143. andq %rcx,%r15
  144. rorq $4,%r13
  145. addq %r9,%r12
  146. xorq %r8,%r15
  147. rorq $6,%r14
  148. xorq %rcx,%r13
  149. addq %r15,%r12
  150. movq %r10,%r15
  151. addq (%rbp),%r12
  152. xorq %r10,%r14
  153. xorq %r11,%r15
  154. rorq $14,%r13
  155. movq %r11,%r9
  156. andq %r15,%rdi
  157. rorq $28,%r14
  158. addq %r13,%r12
  159. xorq %rdi,%r9
  160. addq %r12,%rbx
  161. addq %r12,%r9
  162. leaq 8(%rbp),%rbp
  163. addq %r14,%r9
  164. movq 24(%rsi),%r12
  165. movq %rbx,%r13
  166. movq %r9,%r14
  167. bswapq %r12
  168. rorq $23,%r13
  169. movq %rcx,%rdi
  170. xorq %rbx,%r13
  171. rorq $5,%r14
  172. xorq %rdx,%rdi
  173. movq %r12,24(%rsp)
  174. xorq %r9,%r14
  175. andq %rbx,%rdi
  176. rorq $4,%r13
  177. addq %r8,%r12
  178. xorq %rdx,%rdi
  179. rorq $6,%r14
  180. xorq %rbx,%r13
  181. addq %rdi,%r12
  182. movq %r9,%rdi
  183. addq (%rbp),%r12
  184. xorq %r9,%r14
  185. xorq %r10,%rdi
  186. rorq $14,%r13
  187. movq %r10,%r8
  188. andq %rdi,%r15
  189. rorq $28,%r14
  190. addq %r13,%r12
  191. xorq %r15,%r8
  192. addq %r12,%rax
  193. addq %r12,%r8
  194. leaq 24(%rbp),%rbp
  195. addq %r14,%r8
  196. movq 32(%rsi),%r12
  197. movq %rax,%r13
  198. movq %r8,%r14
  199. bswapq %r12
  200. rorq $23,%r13
  201. movq %rbx,%r15
  202. xorq %rax,%r13
  203. rorq $5,%r14
  204. xorq %rcx,%r15
  205. movq %r12,32(%rsp)
  206. xorq %r8,%r14
  207. andq %rax,%r15
  208. rorq $4,%r13
  209. addq %rdx,%r12
  210. xorq %rcx,%r15
  211. rorq $6,%r14
  212. xorq %rax,%r13
  213. addq %r15,%r12
  214. movq %r8,%r15
  215. addq (%rbp),%r12
  216. xorq %r8,%r14
  217. xorq %r9,%r15
  218. rorq $14,%r13
  219. movq %r9,%rdx
  220. andq %r15,%rdi
  221. rorq $28,%r14
  222. addq %r13,%r12
  223. xorq %rdi,%rdx
  224. addq %r12,%r11
  225. addq %r12,%rdx
  226. leaq 8(%rbp),%rbp
  227. addq %r14,%rdx
  228. movq 40(%rsi),%r12
  229. movq %r11,%r13
  230. movq %rdx,%r14
  231. bswapq %r12
  232. rorq $23,%r13
  233. movq %rax,%rdi
  234. xorq %r11,%r13
  235. rorq $5,%r14
  236. xorq %rbx,%rdi
  237. movq %r12,40(%rsp)
  238. xorq %rdx,%r14
  239. andq %r11,%rdi
  240. rorq $4,%r13
  241. addq %rcx,%r12
  242. xorq %rbx,%rdi
  243. rorq $6,%r14
  244. xorq %r11,%r13
  245. addq %rdi,%r12
  246. movq %rdx,%rdi
  247. addq (%rbp),%r12
  248. xorq %rdx,%r14
  249. xorq %r8,%rdi
  250. rorq $14,%r13
  251. movq %r8,%rcx
  252. andq %rdi,%r15
  253. rorq $28,%r14
  254. addq %r13,%r12
  255. xorq %r15,%rcx
  256. addq %r12,%r10
  257. addq %r12,%rcx
  258. leaq 24(%rbp),%rbp
  259. addq %r14,%rcx
  260. movq 48(%rsi),%r12
  261. movq %r10,%r13
  262. movq %rcx,%r14
  263. bswapq %r12
  264. rorq $23,%r13
  265. movq %r11,%r15
  266. xorq %r10,%r13
  267. rorq $5,%r14
  268. xorq %rax,%r15
  269. movq %r12,48(%rsp)
  270. xorq %rcx,%r14
  271. andq %r10,%r15
  272. rorq $4,%r13
  273. addq %rbx,%r12
  274. xorq %rax,%r15
  275. rorq $6,%r14
  276. xorq %r10,%r13
  277. addq %r15,%r12
  278. movq %rcx,%r15
  279. addq (%rbp),%r12
  280. xorq %rcx,%r14
  281. xorq %rdx,%r15
  282. rorq $14,%r13
  283. movq %rdx,%rbx
  284. andq %r15,%rdi
  285. rorq $28,%r14
  286. addq %r13,%r12
  287. xorq %rdi,%rbx
  288. addq %r12,%r9
  289. addq %r12,%rbx
  290. leaq 8(%rbp),%rbp
  291. addq %r14,%rbx
  292. movq 56(%rsi),%r12
  293. movq %r9,%r13
  294. movq %rbx,%r14
  295. bswapq %r12
  296. rorq $23,%r13
  297. movq %r10,%rdi
  298. xorq %r9,%r13
  299. rorq $5,%r14
  300. xorq %r11,%rdi
  301. movq %r12,56(%rsp)
  302. xorq %rbx,%r14
  303. andq %r9,%rdi
  304. rorq $4,%r13
  305. addq %rax,%r12
  306. xorq %r11,%rdi
  307. rorq $6,%r14
  308. xorq %r9,%r13
  309. addq %rdi,%r12
  310. movq %rbx,%rdi
  311. addq (%rbp),%r12
  312. xorq %rbx,%r14
  313. xorq %rcx,%rdi
  314. rorq $14,%r13
  315. movq %rcx,%rax
  316. andq %rdi,%r15
  317. rorq $28,%r14
  318. addq %r13,%r12
  319. xorq %r15,%rax
  320. addq %r12,%r8
  321. addq %r12,%rax
  322. leaq 24(%rbp),%rbp
  323. addq %r14,%rax
  324. movq 64(%rsi),%r12
  325. movq %r8,%r13
  326. movq %rax,%r14
  327. bswapq %r12
  328. rorq $23,%r13
  329. movq %r9,%r15
  330. xorq %r8,%r13
  331. rorq $5,%r14
  332. xorq %r10,%r15
  333. movq %r12,64(%rsp)
  334. xorq %rax,%r14
  335. andq %r8,%r15
  336. rorq $4,%r13
  337. addq %r11,%r12
  338. xorq %r10,%r15
  339. rorq $6,%r14
  340. xorq %r8,%r13
  341. addq %r15,%r12
  342. movq %rax,%r15
  343. addq (%rbp),%r12
  344. xorq %rax,%r14
  345. xorq %rbx,%r15
  346. rorq $14,%r13
  347. movq %rbx,%r11
  348. andq %r15,%rdi
  349. rorq $28,%r14
  350. addq %r13,%r12
  351. xorq %rdi,%r11
  352. addq %r12,%rdx
  353. addq %r12,%r11
  354. leaq 8(%rbp),%rbp
  355. addq %r14,%r11
  356. movq 72(%rsi),%r12
  357. movq %rdx,%r13
  358. movq %r11,%r14
  359. bswapq %r12
  360. rorq $23,%r13
  361. movq %r8,%rdi
  362. xorq %rdx,%r13
  363. rorq $5,%r14
  364. xorq %r9,%rdi
  365. movq %r12,72(%rsp)
  366. xorq %r11,%r14
  367. andq %rdx,%rdi
  368. rorq $4,%r13
  369. addq %r10,%r12
  370. xorq %r9,%rdi
  371. rorq $6,%r14
  372. xorq %rdx,%r13
  373. addq %rdi,%r12
  374. movq %r11,%rdi
  375. addq (%rbp),%r12
  376. xorq %r11,%r14
  377. xorq %rax,%rdi
  378. rorq $14,%r13
  379. movq %rax,%r10
  380. andq %rdi,%r15
  381. rorq $28,%r14
  382. addq %r13,%r12
  383. xorq %r15,%r10
  384. addq %r12,%rcx
  385. addq %r12,%r10
  386. leaq 24(%rbp),%rbp
  387. addq %r14,%r10
  388. movq 80(%rsi),%r12
  389. movq %rcx,%r13
  390. movq %r10,%r14
  391. bswapq %r12
  392. rorq $23,%r13
  393. movq %rdx,%r15
  394. xorq %rcx,%r13
  395. rorq $5,%r14
  396. xorq %r8,%r15
  397. movq %r12,80(%rsp)
  398. xorq %r10,%r14
  399. andq %rcx,%r15
  400. rorq $4,%r13
  401. addq %r9,%r12
  402. xorq %r8,%r15
  403. rorq $6,%r14
  404. xorq %rcx,%r13
  405. addq %r15,%r12
  406. movq %r10,%r15
  407. addq (%rbp),%r12
  408. xorq %r10,%r14
  409. xorq %r11,%r15
  410. rorq $14,%r13
  411. movq %r11,%r9
  412. andq %r15,%rdi
  413. rorq $28,%r14
  414. addq %r13,%r12
  415. xorq %rdi,%r9
  416. addq %r12,%rbx
  417. addq %r12,%r9
  418. leaq 8(%rbp),%rbp
  419. addq %r14,%r9
  420. movq 88(%rsi),%r12
  421. movq %rbx,%r13
  422. movq %r9,%r14
  423. bswapq %r12
  424. rorq $23,%r13
  425. movq %rcx,%rdi
  426. xorq %rbx,%r13
  427. rorq $5,%r14
  428. xorq %rdx,%rdi
  429. movq %r12,88(%rsp)
  430. xorq %r9,%r14
  431. andq %rbx,%rdi
  432. rorq $4,%r13
  433. addq %r8,%r12
  434. xorq %rdx,%rdi
  435. rorq $6,%r14
  436. xorq %rbx,%r13
  437. addq %rdi,%r12
  438. movq %r9,%rdi
  439. addq (%rbp),%r12
  440. xorq %r9,%r14
  441. xorq %r10,%rdi
  442. rorq $14,%r13
  443. movq %r10,%r8
  444. andq %rdi,%r15
  445. rorq $28,%r14
  446. addq %r13,%r12
  447. xorq %r15,%r8
  448. addq %r12,%rax
  449. addq %r12,%r8
  450. leaq 24(%rbp),%rbp
  451. addq %r14,%r8
  452. movq 96(%rsi),%r12
  453. movq %rax,%r13
  454. movq %r8,%r14
  455. bswapq %r12
  456. rorq $23,%r13
  457. movq %rbx,%r15
  458. xorq %rax,%r13
  459. rorq $5,%r14
  460. xorq %rcx,%r15
  461. movq %r12,96(%rsp)
  462. xorq %r8,%r14
  463. andq %rax,%r15
  464. rorq $4,%r13
  465. addq %rdx,%r12
  466. xorq %rcx,%r15
  467. rorq $6,%r14
  468. xorq %rax,%r13
  469. addq %r15,%r12
  470. movq %r8,%r15
  471. addq (%rbp),%r12
  472. xorq %r8,%r14
  473. xorq %r9,%r15
  474. rorq $14,%r13
  475. movq %r9,%rdx
  476. andq %r15,%rdi
  477. rorq $28,%r14
  478. addq %r13,%r12
  479. xorq %rdi,%rdx
  480. addq %r12,%r11
  481. addq %r12,%rdx
  482. leaq 8(%rbp),%rbp
  483. addq %r14,%rdx
  484. movq 104(%rsi),%r12
  485. movq %r11,%r13
  486. movq %rdx,%r14
  487. bswapq %r12
  488. rorq $23,%r13
  489. movq %rax,%rdi
  490. xorq %r11,%r13
  491. rorq $5,%r14
  492. xorq %rbx,%rdi
  493. movq %r12,104(%rsp)
  494. xorq %rdx,%r14
  495. andq %r11,%rdi
  496. rorq $4,%r13
  497. addq %rcx,%r12
  498. xorq %rbx,%rdi
  499. rorq $6,%r14
  500. xorq %r11,%r13
  501. addq %rdi,%r12
  502. movq %rdx,%rdi
  503. addq (%rbp),%r12
  504. xorq %rdx,%r14
  505. xorq %r8,%rdi
  506. rorq $14,%r13
  507. movq %r8,%rcx
  508. andq %rdi,%r15
  509. rorq $28,%r14
  510. addq %r13,%r12
  511. xorq %r15,%rcx
  512. addq %r12,%r10
  513. addq %r12,%rcx
  514. leaq 24(%rbp),%rbp
  515. addq %r14,%rcx
  516. movq 112(%rsi),%r12
  517. movq %r10,%r13
  518. movq %rcx,%r14
  519. bswapq %r12
  520. rorq $23,%r13
  521. movq %r11,%r15
  522. xorq %r10,%r13
  523. rorq $5,%r14
  524. xorq %rax,%r15
  525. movq %r12,112(%rsp)
  526. xorq %rcx,%r14
  527. andq %r10,%r15
  528. rorq $4,%r13
  529. addq %rbx,%r12
  530. xorq %rax,%r15
  531. rorq $6,%r14
  532. xorq %r10,%r13
  533. addq %r15,%r12
  534. movq %rcx,%r15
  535. addq (%rbp),%r12
  536. xorq %rcx,%r14
  537. xorq %rdx,%r15
  538. rorq $14,%r13
  539. movq %rdx,%rbx
  540. andq %r15,%rdi
  541. rorq $28,%r14
  542. addq %r13,%r12
  543. xorq %rdi,%rbx
  544. addq %r12,%r9
  545. addq %r12,%rbx
  546. leaq 8(%rbp),%rbp
  547. addq %r14,%rbx
  548. movq 120(%rsi),%r12
  549. movq %r9,%r13
  550. movq %rbx,%r14
  551. bswapq %r12
  552. rorq $23,%r13
  553. movq %r10,%rdi
  554. xorq %r9,%r13
  555. rorq $5,%r14
  556. xorq %r11,%rdi
  557. movq %r12,120(%rsp)
  558. xorq %rbx,%r14
  559. andq %r9,%rdi
  560. rorq $4,%r13
  561. addq %rax,%r12
  562. xorq %r11,%rdi
  563. rorq $6,%r14
  564. xorq %r9,%r13
  565. addq %rdi,%r12
  566. movq %rbx,%rdi
  567. addq (%rbp),%r12
  568. xorq %rbx,%r14
  569. xorq %rcx,%rdi
  570. rorq $14,%r13
  571. movq %rcx,%rax
  572. andq %rdi,%r15
  573. rorq $28,%r14
  574. addq %r13,%r12
  575. xorq %r15,%rax
  576. addq %r12,%r8
  577. addq %r12,%rax
  578. leaq 24(%rbp),%rbp
  579. jmp .Lrounds_16_xx
  580. .align 16
  581. .Lrounds_16_xx:
  582. movq 8(%rsp),%r13
  583. movq 112(%rsp),%r15
  584. movq %r13,%r12
  585. rorq $7,%r13
  586. addq %r14,%rax
  587. movq %r15,%r14
  588. rorq $42,%r15
  589. xorq %r12,%r13
  590. shrq $7,%r12
  591. rorq $1,%r13
  592. xorq %r14,%r15
  593. shrq $6,%r14
  594. rorq $19,%r15
  595. xorq %r13,%r12
  596. xorq %r14,%r15
  597. addq 72(%rsp),%r12
  598. addq 0(%rsp),%r12
  599. movq %r8,%r13
  600. addq %r15,%r12
  601. movq %rax,%r14
  602. rorq $23,%r13
  603. movq %r9,%r15
  604. xorq %r8,%r13
  605. rorq $5,%r14
  606. xorq %r10,%r15
  607. movq %r12,0(%rsp)
  608. xorq %rax,%r14
  609. andq %r8,%r15
  610. rorq $4,%r13
  611. addq %r11,%r12
  612. xorq %r10,%r15
  613. rorq $6,%r14
  614. xorq %r8,%r13
  615. addq %r15,%r12
  616. movq %rax,%r15
  617. addq (%rbp),%r12
  618. xorq %rax,%r14
  619. xorq %rbx,%r15
  620. rorq $14,%r13
  621. movq %rbx,%r11
  622. andq %r15,%rdi
  623. rorq $28,%r14
  624. addq %r13,%r12
  625. xorq %rdi,%r11
  626. addq %r12,%rdx
  627. addq %r12,%r11
  628. leaq 8(%rbp),%rbp
  629. movq 16(%rsp),%r13
  630. movq 120(%rsp),%rdi
  631. movq %r13,%r12
  632. rorq $7,%r13
  633. addq %r14,%r11
  634. movq %rdi,%r14
  635. rorq $42,%rdi
  636. xorq %r12,%r13
  637. shrq $7,%r12
  638. rorq $1,%r13
  639. xorq %r14,%rdi
  640. shrq $6,%r14
  641. rorq $19,%rdi
  642. xorq %r13,%r12
  643. xorq %r14,%rdi
  644. addq 80(%rsp),%r12
  645. addq 8(%rsp),%r12
  646. movq %rdx,%r13
  647. addq %rdi,%r12
  648. movq %r11,%r14
  649. rorq $23,%r13
  650. movq %r8,%rdi
  651. xorq %rdx,%r13
  652. rorq $5,%r14
  653. xorq %r9,%rdi
  654. movq %r12,8(%rsp)
  655. xorq %r11,%r14
  656. andq %rdx,%rdi
  657. rorq $4,%r13
  658. addq %r10,%r12
  659. xorq %r9,%rdi
  660. rorq $6,%r14
  661. xorq %rdx,%r13
  662. addq %rdi,%r12
  663. movq %r11,%rdi
  664. addq (%rbp),%r12
  665. xorq %r11,%r14
  666. xorq %rax,%rdi
  667. rorq $14,%r13
  668. movq %rax,%r10
  669. andq %rdi,%r15
  670. rorq $28,%r14
  671. addq %r13,%r12
  672. xorq %r15,%r10
  673. addq %r12,%rcx
  674. addq %r12,%r10
  675. leaq 24(%rbp),%rbp
  676. movq 24(%rsp),%r13
  677. movq 0(%rsp),%r15
  678. movq %r13,%r12
  679. rorq $7,%r13
  680. addq %r14,%r10
  681. movq %r15,%r14
  682. rorq $42,%r15
  683. xorq %r12,%r13
  684. shrq $7,%r12
  685. rorq $1,%r13
  686. xorq %r14,%r15
  687. shrq $6,%r14
  688. rorq $19,%r15
  689. xorq %r13,%r12
  690. xorq %r14,%r15
  691. addq 88(%rsp),%r12
  692. addq 16(%rsp),%r12
  693. movq %rcx,%r13
  694. addq %r15,%r12
  695. movq %r10,%r14
  696. rorq $23,%r13
  697. movq %rdx,%r15
  698. xorq %rcx,%r13
  699. rorq $5,%r14
  700. xorq %r8,%r15
  701. movq %r12,16(%rsp)
  702. xorq %r10,%r14
  703. andq %rcx,%r15
  704. rorq $4,%r13
  705. addq %r9,%r12
  706. xorq %r8,%r15
  707. rorq $6,%r14
  708. xorq %rcx,%r13
  709. addq %r15,%r12
  710. movq %r10,%r15
  711. addq (%rbp),%r12
  712. xorq %r10,%r14
  713. xorq %r11,%r15
  714. rorq $14,%r13
  715. movq %r11,%r9
  716. andq %r15,%rdi
  717. rorq $28,%r14
  718. addq %r13,%r12
  719. xorq %rdi,%r9
  720. addq %r12,%rbx
  721. addq %r12,%r9
  722. leaq 8(%rbp),%rbp
  723. movq 32(%rsp),%r13
  724. movq 8(%rsp),%rdi
  725. movq %r13,%r12
  726. rorq $7,%r13
  727. addq %r14,%r9
  728. movq %rdi,%r14
  729. rorq $42,%rdi
  730. xorq %r12,%r13
  731. shrq $7,%r12
  732. rorq $1,%r13
  733. xorq %r14,%rdi
  734. shrq $6,%r14
  735. rorq $19,%rdi
  736. xorq %r13,%r12
  737. xorq %r14,%rdi
  738. addq 96(%rsp),%r12
  739. addq 24(%rsp),%r12
  740. movq %rbx,%r13
  741. addq %rdi,%r12
  742. movq %r9,%r14
  743. rorq $23,%r13
  744. movq %rcx,%rdi
  745. xorq %rbx,%r13
  746. rorq $5,%r14
  747. xorq %rdx,%rdi
  748. movq %r12,24(%rsp)
  749. xorq %r9,%r14
  750. andq %rbx,%rdi
  751. rorq $4,%r13
  752. addq %r8,%r12
  753. xorq %rdx,%rdi
  754. rorq $6,%r14
  755. xorq %rbx,%r13
  756. addq %rdi,%r12
  757. movq %r9,%rdi
  758. addq (%rbp),%r12
  759. xorq %r9,%r14
  760. xorq %r10,%rdi
  761. rorq $14,%r13
  762. movq %r10,%r8
  763. andq %rdi,%r15
  764. rorq $28,%r14
  765. addq %r13,%r12
  766. xorq %r15,%r8
  767. addq %r12,%rax
  768. addq %r12,%r8
  769. leaq 24(%rbp),%rbp
  770. movq 40(%rsp),%r13
  771. movq 16(%rsp),%r15
  772. movq %r13,%r12
  773. rorq $7,%r13
  774. addq %r14,%r8
  775. movq %r15,%r14
  776. rorq $42,%r15
  777. xorq %r12,%r13
  778. shrq $7,%r12
  779. rorq $1,%r13
  780. xorq %r14,%r15
  781. shrq $6,%r14
  782. rorq $19,%r15
  783. xorq %r13,%r12
  784. xorq %r14,%r15
  785. addq 104(%rsp),%r12
  786. addq 32(%rsp),%r12
  787. movq %rax,%r13
  788. addq %r15,%r12
  789. movq %r8,%r14
  790. rorq $23,%r13
  791. movq %rbx,%r15
  792. xorq %rax,%r13
  793. rorq $5,%r14
  794. xorq %rcx,%r15
  795. movq %r12,32(%rsp)
  796. xorq %r8,%r14
  797. andq %rax,%r15
  798. rorq $4,%r13
  799. addq %rdx,%r12
  800. xorq %rcx,%r15
  801. rorq $6,%r14
  802. xorq %rax,%r13
  803. addq %r15,%r12
  804. movq %r8,%r15
  805. addq (%rbp),%r12
  806. xorq %r8,%r14
  807. xorq %r9,%r15
  808. rorq $14,%r13
  809. movq %r9,%rdx
  810. andq %r15,%rdi
  811. rorq $28,%r14
  812. addq %r13,%r12
  813. xorq %rdi,%rdx
  814. addq %r12,%r11
  815. addq %r12,%rdx
  816. leaq 8(%rbp),%rbp
  817. movq 48(%rsp),%r13
  818. movq 24(%rsp),%rdi
  819. movq %r13,%r12
  820. rorq $7,%r13
  821. addq %r14,%rdx
  822. movq %rdi,%r14
  823. rorq $42,%rdi
  824. xorq %r12,%r13
  825. shrq $7,%r12
  826. rorq $1,%r13
  827. xorq %r14,%rdi
  828. shrq $6,%r14
  829. rorq $19,%rdi
  830. xorq %r13,%r12
  831. xorq %r14,%rdi
  832. addq 112(%rsp),%r12
  833. addq 40(%rsp),%r12
  834. movq %r11,%r13
  835. addq %rdi,%r12
  836. movq %rdx,%r14
  837. rorq $23,%r13
  838. movq %rax,%rdi
  839. xorq %r11,%r13
  840. rorq $5,%r14
  841. xorq %rbx,%rdi
  842. movq %r12,40(%rsp)
  843. xorq %rdx,%r14
  844. andq %r11,%rdi
  845. rorq $4,%r13
  846. addq %rcx,%r12
  847. xorq %rbx,%rdi
  848. rorq $6,%r14
  849. xorq %r11,%r13
  850. addq %rdi,%r12
  851. movq %rdx,%rdi
  852. addq (%rbp),%r12
  853. xorq %rdx,%r14
  854. xorq %r8,%rdi
  855. rorq $14,%r13
  856. movq %r8,%rcx
  857. andq %rdi,%r15
  858. rorq $28,%r14
  859. addq %r13,%r12
  860. xorq %r15,%rcx
  861. addq %r12,%r10
  862. addq %r12,%rcx
  863. leaq 24(%rbp),%rbp
  864. movq 56(%rsp),%r13
  865. movq 32(%rsp),%r15
  866. movq %r13,%r12
  867. rorq $7,%r13
  868. addq %r14,%rcx
  869. movq %r15,%r14
  870. rorq $42,%r15
  871. xorq %r12,%r13
  872. shrq $7,%r12
  873. rorq $1,%r13
  874. xorq %r14,%r15
  875. shrq $6,%r14
  876. rorq $19,%r15
  877. xorq %r13,%r12
  878. xorq %r14,%r15
  879. addq 120(%rsp),%r12
  880. addq 48(%rsp),%r12
  881. movq %r10,%r13
  882. addq %r15,%r12
  883. movq %rcx,%r14
  884. rorq $23,%r13
  885. movq %r11,%r15
  886. xorq %r10,%r13
  887. rorq $5,%r14
  888. xorq %rax,%r15
  889. movq %r12,48(%rsp)
  890. xorq %rcx,%r14
  891. andq %r10,%r15
  892. rorq $4,%r13
  893. addq %rbx,%r12
  894. xorq %rax,%r15
  895. rorq $6,%r14
  896. xorq %r10,%r13
  897. addq %r15,%r12
  898. movq %rcx,%r15
  899. addq (%rbp),%r12
  900. xorq %rcx,%r14
  901. xorq %rdx,%r15
  902. rorq $14,%r13
  903. movq %rdx,%rbx
  904. andq %r15,%rdi
  905. rorq $28,%r14
  906. addq %r13,%r12
  907. xorq %rdi,%rbx
  908. addq %r12,%r9
  909. addq %r12,%rbx
  910. leaq 8(%rbp),%rbp
  911. movq 64(%rsp),%r13
  912. movq 40(%rsp),%rdi
  913. movq %r13,%r12
  914. rorq $7,%r13
  915. addq %r14,%rbx
  916. movq %rdi,%r14
  917. rorq $42,%rdi
  918. xorq %r12,%r13
  919. shrq $7,%r12
  920. rorq $1,%r13
  921. xorq %r14,%rdi
  922. shrq $6,%r14
  923. rorq $19,%rdi
  924. xorq %r13,%r12
  925. xorq %r14,%rdi
  926. addq 0(%rsp),%r12
  927. addq 56(%rsp),%r12
  928. movq %r9,%r13
  929. addq %rdi,%r12
  930. movq %rbx,%r14
  931. rorq $23,%r13
  932. movq %r10,%rdi
  933. xorq %r9,%r13
  934. rorq $5,%r14
  935. xorq %r11,%rdi
  936. movq %r12,56(%rsp)
  937. xorq %rbx,%r14
  938. andq %r9,%rdi
  939. rorq $4,%r13
  940. addq %rax,%r12
  941. xorq %r11,%rdi
  942. rorq $6,%r14
  943. xorq %r9,%r13
  944. addq %rdi,%r12
  945. movq %rbx,%rdi
  946. addq (%rbp),%r12
  947. xorq %rbx,%r14
  948. xorq %rcx,%rdi
  949. rorq $14,%r13
  950. movq %rcx,%rax
  951. andq %rdi,%r15
  952. rorq $28,%r14
  953. addq %r13,%r12
  954. xorq %r15,%rax
  955. addq %r12,%r8
  956. addq %r12,%rax
  957. leaq 24(%rbp),%rbp
  958. movq 72(%rsp),%r13
  959. movq 48(%rsp),%r15
  960. movq %r13,%r12
  961. rorq $7,%r13
  962. addq %r14,%rax
  963. movq %r15,%r14
  964. rorq $42,%r15
  965. xorq %r12,%r13
  966. shrq $7,%r12
  967. rorq $1,%r13
  968. xorq %r14,%r15
  969. shrq $6,%r14
  970. rorq $19,%r15
  971. xorq %r13,%r12
  972. xorq %r14,%r15
  973. addq 8(%rsp),%r12
  974. addq 64(%rsp),%r12
  975. movq %r8,%r13
  976. addq %r15,%r12
  977. movq %rax,%r14
  978. rorq $23,%r13
  979. movq %r9,%r15
  980. xorq %r8,%r13
  981. rorq $5,%r14
  982. xorq %r10,%r15
  983. movq %r12,64(%rsp)
  984. xorq %rax,%r14
  985. andq %r8,%r15
  986. rorq $4,%r13
  987. addq %r11,%r12
  988. xorq %r10,%r15
  989. rorq $6,%r14
  990. xorq %r8,%r13
  991. addq %r15,%r12
  992. movq %rax,%r15
  993. addq (%rbp),%r12
  994. xorq %rax,%r14
  995. xorq %rbx,%r15
  996. rorq $14,%r13
  997. movq %rbx,%r11
  998. andq %r15,%rdi
  999. rorq $28,%r14
  1000. addq %r13,%r12
  1001. xorq %rdi,%r11
  1002. addq %r12,%rdx
  1003. addq %r12,%r11
  1004. leaq 8(%rbp),%rbp
  1005. movq 80(%rsp),%r13
  1006. movq 56(%rsp),%rdi
  1007. movq %r13,%r12
  1008. rorq $7,%r13
  1009. addq %r14,%r11
  1010. movq %rdi,%r14
  1011. rorq $42,%rdi
  1012. xorq %r12,%r13
  1013. shrq $7,%r12
  1014. rorq $1,%r13
  1015. xorq %r14,%rdi
  1016. shrq $6,%r14
  1017. rorq $19,%rdi
  1018. xorq %r13,%r12
  1019. xorq %r14,%rdi
  1020. addq 16(%rsp),%r12
  1021. addq 72(%rsp),%r12
  1022. movq %rdx,%r13
  1023. addq %rdi,%r12
  1024. movq %r11,%r14
  1025. rorq $23,%r13
  1026. movq %r8,%rdi
  1027. xorq %rdx,%r13
  1028. rorq $5,%r14
  1029. xorq %r9,%rdi
  1030. movq %r12,72(%rsp)
  1031. xorq %r11,%r14
  1032. andq %rdx,%rdi
  1033. rorq $4,%r13
  1034. addq %r10,%r12
  1035. xorq %r9,%rdi
  1036. rorq $6,%r14
  1037. xorq %rdx,%r13
  1038. addq %rdi,%r12
  1039. movq %r11,%rdi
  1040. addq (%rbp),%r12
  1041. xorq %r11,%r14
  1042. xorq %rax,%rdi
  1043. rorq $14,%r13
  1044. movq %rax,%r10
  1045. andq %rdi,%r15
  1046. rorq $28,%r14
  1047. addq %r13,%r12
  1048. xorq %r15,%r10
  1049. addq %r12,%rcx
  1050. addq %r12,%r10
  1051. leaq 24(%rbp),%rbp
  1052. movq 88(%rsp),%r13
  1053. movq 64(%rsp),%r15
  1054. movq %r13,%r12
  1055. rorq $7,%r13
  1056. addq %r14,%r10
  1057. movq %r15,%r14
  1058. rorq $42,%r15
  1059. xorq %r12,%r13
  1060. shrq $7,%r12
  1061. rorq $1,%r13
  1062. xorq %r14,%r15
  1063. shrq $6,%r14
  1064. rorq $19,%r15
  1065. xorq %r13,%r12
  1066. xorq %r14,%r15
  1067. addq 24(%rsp),%r12
  1068. addq 80(%rsp),%r12
  1069. movq %rcx,%r13
  1070. addq %r15,%r12
  1071. movq %r10,%r14
  1072. rorq $23,%r13
  1073. movq %rdx,%r15
  1074. xorq %rcx,%r13
  1075. rorq $5,%r14
  1076. xorq %r8,%r15
  1077. movq %r12,80(%rsp)
  1078. xorq %r10,%r14
  1079. andq %rcx,%r15
  1080. rorq $4,%r13
  1081. addq %r9,%r12
  1082. xorq %r8,%r15
  1083. rorq $6,%r14
  1084. xorq %rcx,%r13
  1085. addq %r15,%r12
  1086. movq %r10,%r15
  1087. addq (%rbp),%r12
  1088. xorq %r10,%r14
  1089. xorq %r11,%r15
  1090. rorq $14,%r13
  1091. movq %r11,%r9
  1092. andq %r15,%rdi
  1093. rorq $28,%r14
  1094. addq %r13,%r12
  1095. xorq %rdi,%r9
  1096. addq %r12,%rbx
  1097. addq %r12,%r9
  1098. leaq 8(%rbp),%rbp
  1099. movq 96(%rsp),%r13
  1100. movq 72(%rsp),%rdi
  1101. movq %r13,%r12
  1102. rorq $7,%r13
  1103. addq %r14,%r9
  1104. movq %rdi,%r14
  1105. rorq $42,%rdi
  1106. xorq %r12,%r13
  1107. shrq $7,%r12
  1108. rorq $1,%r13
  1109. xorq %r14,%rdi
  1110. shrq $6,%r14
  1111. rorq $19,%rdi
  1112. xorq %r13,%r12
  1113. xorq %r14,%rdi
  1114. addq 32(%rsp),%r12
  1115. addq 88(%rsp),%r12
  1116. movq %rbx,%r13
  1117. addq %rdi,%r12
  1118. movq %r9,%r14
  1119. rorq $23,%r13
  1120. movq %rcx,%rdi
  1121. xorq %rbx,%r13
  1122. rorq $5,%r14
  1123. xorq %rdx,%rdi
  1124. movq %r12,88(%rsp)
  1125. xorq %r9,%r14
  1126. andq %rbx,%rdi
  1127. rorq $4,%r13
  1128. addq %r8,%r12
  1129. xorq %rdx,%rdi
  1130. rorq $6,%r14
  1131. xorq %rbx,%r13
  1132. addq %rdi,%r12
  1133. movq %r9,%rdi
  1134. addq (%rbp),%r12
  1135. xorq %r9,%r14
  1136. xorq %r10,%rdi
  1137. rorq $14,%r13
  1138. movq %r10,%r8
  1139. andq %rdi,%r15
  1140. rorq $28,%r14
  1141. addq %r13,%r12
  1142. xorq %r15,%r8
  1143. addq %r12,%rax
  1144. addq %r12,%r8
  1145. leaq 24(%rbp),%rbp
  1146. movq 104(%rsp),%r13
  1147. movq 80(%rsp),%r15
  1148. movq %r13,%r12
  1149. rorq $7,%r13
  1150. addq %r14,%r8
  1151. movq %r15,%r14
  1152. rorq $42,%r15
  1153. xorq %r12,%r13
  1154. shrq $7,%r12
  1155. rorq $1,%r13
  1156. xorq %r14,%r15
  1157. shrq $6,%r14
  1158. rorq $19,%r15
  1159. xorq %r13,%r12
  1160. xorq %r14,%r15
  1161. addq 40(%rsp),%r12
  1162. addq 96(%rsp),%r12
  1163. movq %rax,%r13
  1164. addq %r15,%r12
  1165. movq %r8,%r14
  1166. rorq $23,%r13
  1167. movq %rbx,%r15
  1168. xorq %rax,%r13
  1169. rorq $5,%r14
  1170. xorq %rcx,%r15
  1171. movq %r12,96(%rsp)
  1172. xorq %r8,%r14
  1173. andq %rax,%r15
  1174. rorq $4,%r13
  1175. addq %rdx,%r12
  1176. xorq %rcx,%r15
  1177. rorq $6,%r14
  1178. xorq %rax,%r13
  1179. addq %r15,%r12
  1180. movq %r8,%r15
  1181. addq (%rbp),%r12
  1182. xorq %r8,%r14
  1183. xorq %r9,%r15
  1184. rorq $14,%r13
  1185. movq %r9,%rdx
  1186. andq %r15,%rdi
  1187. rorq $28,%r14
  1188. addq %r13,%r12
  1189. xorq %rdi,%rdx
  1190. addq %r12,%r11
  1191. addq %r12,%rdx
  1192. leaq 8(%rbp),%rbp
  1193. movq 112(%rsp),%r13
  1194. movq 88(%rsp),%rdi
  1195. movq %r13,%r12
  1196. rorq $7,%r13
  1197. addq %r14,%rdx
  1198. movq %rdi,%r14
  1199. rorq $42,%rdi
  1200. xorq %r12,%r13
  1201. shrq $7,%r12
  1202. rorq $1,%r13
  1203. xorq %r14,%rdi
  1204. shrq $6,%r14
  1205. rorq $19,%rdi
  1206. xorq %r13,%r12
  1207. xorq %r14,%rdi
  1208. addq 48(%rsp),%r12
  1209. addq 104(%rsp),%r12
  1210. movq %r11,%r13
  1211. addq %rdi,%r12
  1212. movq %rdx,%r14
  1213. rorq $23,%r13
  1214. movq %rax,%rdi
  1215. xorq %r11,%r13
  1216. rorq $5,%r14
  1217. xorq %rbx,%rdi
  1218. movq %r12,104(%rsp)
  1219. xorq %rdx,%r14
  1220. andq %r11,%rdi
  1221. rorq $4,%r13
  1222. addq %rcx,%r12
  1223. xorq %rbx,%rdi
  1224. rorq $6,%r14
  1225. xorq %r11,%r13
  1226. addq %rdi,%r12
  1227. movq %rdx,%rdi
  1228. addq (%rbp),%r12
  1229. xorq %rdx,%r14
  1230. xorq %r8,%rdi
  1231. rorq $14,%r13
  1232. movq %r8,%rcx
  1233. andq %rdi,%r15
  1234. rorq $28,%r14
  1235. addq %r13,%r12
  1236. xorq %r15,%rcx
  1237. addq %r12,%r10
  1238. addq %r12,%rcx
  1239. leaq 24(%rbp),%rbp
  1240. movq 120(%rsp),%r13
  1241. movq 96(%rsp),%r15
  1242. movq %r13,%r12
  1243. rorq $7,%r13
  1244. addq %r14,%rcx
  1245. movq %r15,%r14
  1246. rorq $42,%r15
  1247. xorq %r12,%r13
  1248. shrq $7,%r12
  1249. rorq $1,%r13
  1250. xorq %r14,%r15
  1251. shrq $6,%r14
  1252. rorq $19,%r15
  1253. xorq %r13,%r12
  1254. xorq %r14,%r15
  1255. addq 56(%rsp),%r12
  1256. addq 112(%rsp),%r12
  1257. movq %r10,%r13
  1258. addq %r15,%r12
  1259. movq %rcx,%r14
  1260. rorq $23,%r13
  1261. movq %r11,%r15
  1262. xorq %r10,%r13
  1263. rorq $5,%r14
  1264. xorq %rax,%r15
  1265. movq %r12,112(%rsp)
  1266. xorq %rcx,%r14
  1267. andq %r10,%r15
  1268. rorq $4,%r13
  1269. addq %rbx,%r12
  1270. xorq %rax,%r15
  1271. rorq $6,%r14
  1272. xorq %r10,%r13
  1273. addq %r15,%r12
  1274. movq %rcx,%r15
  1275. addq (%rbp),%r12
  1276. xorq %rcx,%r14
  1277. xorq %rdx,%r15
  1278. rorq $14,%r13
  1279. movq %rdx,%rbx
  1280. andq %r15,%rdi
  1281. rorq $28,%r14
  1282. addq %r13,%r12
  1283. xorq %rdi,%rbx
  1284. addq %r12,%r9
  1285. addq %r12,%rbx
  1286. leaq 8(%rbp),%rbp
  1287. movq 0(%rsp),%r13
  1288. movq 104(%rsp),%rdi
  1289. movq %r13,%r12
  1290. rorq $7,%r13
  1291. addq %r14,%rbx
  1292. movq %rdi,%r14
  1293. rorq $42,%rdi
  1294. xorq %r12,%r13
  1295. shrq $7,%r12
  1296. rorq $1,%r13
  1297. xorq %r14,%rdi
  1298. shrq $6,%r14
  1299. rorq $19,%rdi
  1300. xorq %r13,%r12
  1301. xorq %r14,%rdi
  1302. addq 64(%rsp),%r12
  1303. addq 120(%rsp),%r12
  1304. movq %r9,%r13
  1305. addq %rdi,%r12
  1306. movq %rbx,%r14
  1307. rorq $23,%r13
  1308. movq %r10,%rdi
  1309. xorq %r9,%r13
  1310. rorq $5,%r14
  1311. xorq %r11,%rdi
  1312. movq %r12,120(%rsp)
  1313. xorq %rbx,%r14
  1314. andq %r9,%rdi
  1315. rorq $4,%r13
  1316. addq %rax,%r12
  1317. xorq %r11,%rdi
  1318. rorq $6,%r14
  1319. xorq %r9,%r13
  1320. addq %rdi,%r12
  1321. movq %rbx,%rdi
  1322. addq (%rbp),%r12
  1323. xorq %rbx,%r14
  1324. xorq %rcx,%rdi
  1325. rorq $14,%r13
  1326. movq %rcx,%rax
  1327. andq %rdi,%r15
  1328. rorq $28,%r14
  1329. addq %r13,%r12
  1330. xorq %r15,%rax
  1331. addq %r12,%r8
  1332. addq %r12,%rax
  1333. leaq 24(%rbp),%rbp
  1334. cmpb $0,7(%rbp)
  1335. jnz .Lrounds_16_xx
  1336. movq 128+0(%rsp),%rdi
  1337. addq %r14,%rax
  1338. leaq 128(%rsi),%rsi
  1339. addq 0(%rdi),%rax
  1340. addq 8(%rdi),%rbx
  1341. addq 16(%rdi),%rcx
  1342. addq 24(%rdi),%rdx
  1343. addq 32(%rdi),%r8
  1344. addq 40(%rdi),%r9
  1345. addq 48(%rdi),%r10
  1346. addq 56(%rdi),%r11
  1347. cmpq 128+16(%rsp),%rsi
  1348. movq %rax,0(%rdi)
  1349. movq %rbx,8(%rdi)
  1350. movq %rcx,16(%rdi)
  1351. movq %rdx,24(%rdi)
  1352. movq %r8,32(%rdi)
  1353. movq %r9,40(%rdi)
  1354. movq %r10,48(%rdi)
  1355. movq %r11,56(%rdi)
  1356. jb .Lloop
  1357. movq 152(%rsp),%rsi
  1358. .cfi_def_cfa %rsi,8
  1359. movq -48(%rsi),%r15
  1360. .cfi_restore %r15
  1361. movq -40(%rsi),%r14
  1362. .cfi_restore %r14
  1363. movq -32(%rsi),%r13
  1364. .cfi_restore %r13
  1365. movq -24(%rsi),%r12
  1366. .cfi_restore %r12
  1367. movq -16(%rsi),%rbp
  1368. .cfi_restore %rbp
  1369. movq -8(%rsi),%rbx
  1370. .cfi_restore %rbx
  1371. leaq (%rsi),%rsp
  1372. .cfi_def_cfa_register %rsp
  1373. .Lepilogue:
  1374. .byte 0xf3,0xc3
  1375. .cfi_endproc
  1376. .size sha512_block_data_order,.-sha512_block_data_order
  1377. .align 64
  1378. .type K512,@object
  1379. K512:
  1380. .quad 0x428a2f98d728ae22,0x7137449123ef65cd
  1381. .quad 0x428a2f98d728ae22,0x7137449123ef65cd
  1382. .quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
  1383. .quad 0xb5c0fbcfec4d3b2f,0xe9b5dba58189dbbc
  1384. .quad 0x3956c25bf348b538,0x59f111f1b605d019
  1385. .quad 0x3956c25bf348b538,0x59f111f1b605d019
  1386. .quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
  1387. .quad 0x923f82a4af194f9b,0xab1c5ed5da6d8118
  1388. .quad 0xd807aa98a3030242,0x12835b0145706fbe
  1389. .quad 0xd807aa98a3030242,0x12835b0145706fbe
  1390. .quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
  1391. .quad 0x243185be4ee4b28c,0x550c7dc3d5ffb4e2
  1392. .quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
  1393. .quad 0x72be5d74f27b896f,0x80deb1fe3b1696b1
  1394. .quad 0x9bdc06a725c71235,0xc19bf174cf692694
  1395. .quad 0x9bdc06a725c71235,0xc19bf174cf692694
  1396. .quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
  1397. .quad 0xe49b69c19ef14ad2,0xefbe4786384f25e3
  1398. .quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
  1399. .quad 0x0fc19dc68b8cd5b5,0x240ca1cc77ac9c65
  1400. .quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
  1401. .quad 0x2de92c6f592b0275,0x4a7484aa6ea6e483
  1402. .quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
  1403. .quad 0x5cb0a9dcbd41fbd4,0x76f988da831153b5
  1404. .quad 0x983e5152ee66dfab,0xa831c66d2db43210
  1405. .quad 0x983e5152ee66dfab,0xa831c66d2db43210
  1406. .quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
  1407. .quad 0xb00327c898fb213f,0xbf597fc7beef0ee4
  1408. .quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
  1409. .quad 0xc6e00bf33da88fc2,0xd5a79147930aa725
  1410. .quad 0x06ca6351e003826f,0x142929670a0e6e70
  1411. .quad 0x06ca6351e003826f,0x142929670a0e6e70
  1412. .quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
  1413. .quad 0x27b70a8546d22ffc,0x2e1b21385c26c926
  1414. .quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
  1415. .quad 0x4d2c6dfc5ac42aed,0x53380d139d95b3df
  1416. .quad 0x650a73548baf63de,0x766a0abb3c77b2a8
  1417. .quad 0x650a73548baf63de,0x766a0abb3c77b2a8
  1418. .quad 0x81c2c92e47edaee6,0x92722c851482353b
  1419. .quad 0x81c2c92e47edaee6,0x92722c851482353b
  1420. .quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
  1421. .quad 0xa2bfe8a14cf10364,0xa81a664bbc423001
  1422. .quad 0xc24b8b70d0f89791,0xc76c51a30654be30
  1423. .quad 0xc24b8b70d0f89791,0xc76c51a30654be30
  1424. .quad 0xd192e819d6ef5218,0xd69906245565a910
  1425. .quad 0xd192e819d6ef5218,0xd69906245565a910
  1426. .quad 0xf40e35855771202a,0x106aa07032bbd1b8
  1427. .quad 0xf40e35855771202a,0x106aa07032bbd1b8
  1428. .quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
  1429. .quad 0x19a4c116b8d2d0c8,0x1e376c085141ab53
  1430. .quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
  1431. .quad 0x2748774cdf8eeb99,0x34b0bcb5e19b48a8
  1432. .quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
  1433. .quad 0x391c0cb3c5c95a63,0x4ed8aa4ae3418acb
  1434. .quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
  1435. .quad 0x5b9cca4f7763e373,0x682e6ff3d6b2b8a3
  1436. .quad 0x748f82ee5defb2fc,0x78a5636f43172f60
  1437. .quad 0x748f82ee5defb2fc,0x78a5636f43172f60
  1438. .quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
  1439. .quad 0x84c87814a1f0ab72,0x8cc702081a6439ec
  1440. .quad 0x90befffa23631e28,0xa4506cebde82bde9
  1441. .quad 0x90befffa23631e28,0xa4506cebde82bde9
  1442. .quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
  1443. .quad 0xbef9a3f7b2c67915,0xc67178f2e372532b
  1444. .quad 0xca273eceea26619c,0xd186b8c721c0c207
  1445. .quad 0xca273eceea26619c,0xd186b8c721c0c207
  1446. .quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
  1447. .quad 0xeada7dd6cde0eb1e,0xf57d4f7fee6ed178
  1448. .quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
  1449. .quad 0x06f067aa72176fba,0x0a637dc5a2c898a6
  1450. .quad 0x113f9804bef90dae,0x1b710b35131c471b
  1451. .quad 0x113f9804bef90dae,0x1b710b35131c471b
  1452. .quad 0x28db77f523047d84,0x32caab7b40c72493
  1453. .quad 0x28db77f523047d84,0x32caab7b40c72493
  1454. .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
  1455. .quad 0x3c9ebe0a15c9bebc,0x431d67c49c100d4c
  1456. .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
  1457. .quad 0x4cc5d4becb3e42b6,0x597f299cfc657e2a
  1458. .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
  1459. .quad 0x5fcb6fab3ad6faec,0x6c44198c4a475817
  1460. .quad 0x0001020304050607,0x08090a0b0c0d0e0f
  1461. .quad 0x0001020304050607,0x08090a0b0c0d0e0f
  1462. .byte 83,72,65,53,49,50,32,98,108,111,99,107,32,116,114,97,110,115,102,111,114,109,32,102,111,114,32,120,56,54,95,54,52,44,32,67,82,89,80,84,79,71,65,77,83,32,98,121,32,60,97,112,112,114,111,64,111,112,101,110,115,115,108,46,111,114,103,62,0
  1463. .type sha512_block_data_order_avx,@function
  1464. .align 64
  1465. sha512_block_data_order_avx:
  1466. .cfi_startproc
  1467. .Lavx_shortcut:
  1468. movq %rsp,%rax
  1469. .cfi_def_cfa_register %rax
  1470. pushq %rbx
  1471. .cfi_offset %rbx,-16
  1472. pushq %rbp
  1473. .cfi_offset %rbp,-24
  1474. pushq %r12
  1475. .cfi_offset %r12,-32
  1476. pushq %r13
  1477. .cfi_offset %r13,-40
  1478. pushq %r14
  1479. .cfi_offset %r14,-48
  1480. pushq %r15
  1481. .cfi_offset %r15,-56
  1482. shlq $4,%rdx
  1483. subq $160,%rsp
  1484. leaq (%rsi,%rdx,8),%rdx
  1485. andq $-64,%rsp
  1486. movq %rdi,128+0(%rsp)
  1487. movq %rsi,128+8(%rsp)
  1488. movq %rdx,128+16(%rsp)
  1489. movq %rax,152(%rsp)
  1490. .cfi_escape 0x0f,0x06,0x77,0x98,0x01,0x06,0x23,0x08
  1491. .Lprologue_avx:
  1492. vzeroupper
  1493. movq 0(%rdi),%rax
  1494. movq 8(%rdi),%rbx
  1495. movq 16(%rdi),%rcx
  1496. movq 24(%rdi),%rdx
  1497. movq 32(%rdi),%r8
  1498. movq 40(%rdi),%r9
  1499. movq 48(%rdi),%r10
  1500. movq 56(%rdi),%r11
  1501. jmp .Lloop_avx
  1502. .align 16
  1503. .Lloop_avx:
  1504. vmovdqa K512+1280(%rip),%xmm11
  1505. vmovdqu 0(%rsi),%xmm0
  1506. leaq K512+128(%rip),%rbp
  1507. vmovdqu 16(%rsi),%xmm1
  1508. vmovdqu 32(%rsi),%xmm2
  1509. vpshufb %xmm11,%xmm0,%xmm0
  1510. vmovdqu 48(%rsi),%xmm3
  1511. vpshufb %xmm11,%xmm1,%xmm1
  1512. vmovdqu 64(%rsi),%xmm4
  1513. vpshufb %xmm11,%xmm2,%xmm2
  1514. vmovdqu 80(%rsi),%xmm5
  1515. vpshufb %xmm11,%xmm3,%xmm3
  1516. vmovdqu 96(%rsi),%xmm6
  1517. vpshufb %xmm11,%xmm4,%xmm4
  1518. vmovdqu 112(%rsi),%xmm7
  1519. vpshufb %xmm11,%xmm5,%xmm5
  1520. vpaddq -128(%rbp),%xmm0,%xmm8
  1521. vpshufb %xmm11,%xmm6,%xmm6
  1522. vpaddq -96(%rbp),%xmm1,%xmm9
  1523. vpshufb %xmm11,%xmm7,%xmm7
  1524. vpaddq -64(%rbp),%xmm2,%xmm10
  1525. vpaddq -32(%rbp),%xmm3,%xmm11
  1526. vmovdqa %xmm8,0(%rsp)
  1527. vpaddq 0(%rbp),%xmm4,%xmm8
  1528. vmovdqa %xmm9,16(%rsp)
  1529. vpaddq 32(%rbp),%xmm5,%xmm9
  1530. vmovdqa %xmm10,32(%rsp)
  1531. vpaddq 64(%rbp),%xmm6,%xmm10
  1532. vmovdqa %xmm11,48(%rsp)
  1533. vpaddq 96(%rbp),%xmm7,%xmm11
  1534. vmovdqa %xmm8,64(%rsp)
  1535. movq %rax,%r14
  1536. vmovdqa %xmm9,80(%rsp)
  1537. movq %rbx,%rdi
  1538. vmovdqa %xmm10,96(%rsp)
  1539. xorq %rcx,%rdi
  1540. vmovdqa %xmm11,112(%rsp)
  1541. movq %r8,%r13
  1542. jmp .Lavx_00_47
  1543. .align 16
  1544. .Lavx_00_47:
  1545. addq $256,%rbp
  1546. vpalignr $8,%xmm0,%xmm1,%xmm8
  1547. shrdq $23,%r13,%r13
  1548. movq %r14,%rax
  1549. vpalignr $8,%xmm4,%xmm5,%xmm11
  1550. movq %r9,%r12
  1551. shrdq $5,%r14,%r14
  1552. vpsrlq $1,%xmm8,%xmm10
  1553. xorq %r8,%r13
  1554. xorq %r10,%r12
  1555. vpaddq %xmm11,%xmm0,%xmm0
  1556. shrdq $4,%r13,%r13
  1557. xorq %rax,%r14
  1558. vpsrlq $7,%xmm8,%xmm11
  1559. andq %r8,%r12
  1560. xorq %r8,%r13
  1561. vpsllq $56,%xmm8,%xmm9
  1562. addq 0(%rsp),%r11
  1563. movq %rax,%r15
  1564. vpxor %xmm10,%xmm11,%xmm8
  1565. xorq %r10,%r12
  1566. shrdq $6,%r14,%r14
  1567. vpsrlq $7,%xmm10,%xmm10
  1568. xorq %rbx,%r15
  1569. addq %r12,%r11
  1570. vpxor %xmm9,%xmm8,%xmm8
  1571. shrdq $14,%r13,%r13
  1572. andq %r15,%rdi
  1573. vpsllq $7,%xmm9,%xmm9
  1574. xorq %rax,%r14
  1575. addq %r13,%r11
  1576. vpxor %xmm10,%xmm8,%xmm8
  1577. xorq %rbx,%rdi
  1578. shrdq $28,%r14,%r14
  1579. vpsrlq $6,%xmm7,%xmm11
  1580. addq %r11,%rdx
  1581. addq %rdi,%r11
  1582. vpxor %xmm9,%xmm8,%xmm8
  1583. movq %rdx,%r13
  1584. addq %r11,%r14
  1585. vpsllq $3,%xmm7,%xmm10
  1586. shrdq $23,%r13,%r13
  1587. movq %r14,%r11
  1588. vpaddq %xmm8,%xmm0,%xmm0
  1589. movq %r8,%r12
  1590. shrdq $5,%r14,%r14
  1591. vpsrlq $19,%xmm7,%xmm9
  1592. xorq %rdx,%r13
  1593. xorq %r9,%r12
  1594. vpxor %xmm10,%xmm11,%xmm11
  1595. shrdq $4,%r13,%r13
  1596. xorq %r11,%r14
  1597. vpsllq $42,%xmm10,%xmm10
  1598. andq %rdx,%r12
  1599. xorq %rdx,%r13
  1600. vpxor %xmm9,%xmm11,%xmm11
  1601. addq 8(%rsp),%r10
  1602. movq %r11,%rdi
  1603. vpsrlq $42,%xmm9,%xmm9
  1604. xorq %r9,%r12
  1605. shrdq $6,%r14,%r14
  1606. vpxor %xmm10,%xmm11,%xmm11
  1607. xorq %rax,%rdi
  1608. addq %r12,%r10
  1609. vpxor %xmm9,%xmm11,%xmm11
  1610. shrdq $14,%r13,%r13
  1611. andq %rdi,%r15
  1612. vpaddq %xmm11,%xmm0,%xmm0
  1613. xorq %r11,%r14
  1614. addq %r13,%r10
  1615. vpaddq -128(%rbp),%xmm0,%xmm10
  1616. xorq %rax,%r15
  1617. shrdq $28,%r14,%r14
  1618. addq %r10,%rcx
  1619. addq %r15,%r10
  1620. movq %rcx,%r13
  1621. addq %r10,%r14
  1622. vmovdqa %xmm10,0(%rsp)
  1623. vpalignr $8,%xmm1,%xmm2,%xmm8
  1624. shrdq $23,%r13,%r13
  1625. movq %r14,%r10
  1626. vpalignr $8,%xmm5,%xmm6,%xmm11
  1627. movq %rdx,%r12
  1628. shrdq $5,%r14,%r14
  1629. vpsrlq $1,%xmm8,%xmm10
  1630. xorq %rcx,%r13
  1631. xorq %r8,%r12
  1632. vpaddq %xmm11,%xmm1,%xmm1
  1633. shrdq $4,%r13,%r13
  1634. xorq %r10,%r14
  1635. vpsrlq $7,%xmm8,%xmm11
  1636. andq %rcx,%r12
  1637. xorq %rcx,%r13
  1638. vpsllq $56,%xmm8,%xmm9
  1639. addq 16(%rsp),%r9
  1640. movq %r10,%r15
  1641. vpxor %xmm10,%xmm11,%xmm8
  1642. xorq %r8,%r12
  1643. shrdq $6,%r14,%r14
  1644. vpsrlq $7,%xmm10,%xmm10
  1645. xorq %r11,%r15
  1646. addq %r12,%r9
  1647. vpxor %xmm9,%xmm8,%xmm8
  1648. shrdq $14,%r13,%r13
  1649. andq %r15,%rdi
  1650. vpsllq $7,%xmm9,%xmm9
  1651. xorq %r10,%r14
  1652. addq %r13,%r9
  1653. vpxor %xmm10,%xmm8,%xmm8
  1654. xorq %r11,%rdi
  1655. shrdq $28,%r14,%r14
  1656. vpsrlq $6,%xmm0,%xmm11
  1657. addq %r9,%rbx
  1658. addq %rdi,%r9
  1659. vpxor %xmm9,%xmm8,%xmm8
  1660. movq %rbx,%r13
  1661. addq %r9,%r14
  1662. vpsllq $3,%xmm0,%xmm10
  1663. shrdq $23,%r13,%r13
  1664. movq %r14,%r9
  1665. vpaddq %xmm8,%xmm1,%xmm1
  1666. movq %rcx,%r12
  1667. shrdq $5,%r14,%r14
  1668. vpsrlq $19,%xmm0,%xmm9
  1669. xorq %rbx,%r13
  1670. xorq %rdx,%r12
  1671. vpxor %xmm10,%xmm11,%xmm11
  1672. shrdq $4,%r13,%r13
  1673. xorq %r9,%r14
  1674. vpsllq $42,%xmm10,%xmm10
  1675. andq %rbx,%r12
  1676. xorq %rbx,%r13
  1677. vpxor %xmm9,%xmm11,%xmm11
  1678. addq 24(%rsp),%r8
  1679. movq %r9,%rdi
  1680. vpsrlq $42,%xmm9,%xmm9
  1681. xorq %rdx,%r12
  1682. shrdq $6,%r14,%r14
  1683. vpxor %xmm10,%xmm11,%xmm11
  1684. xorq %r10,%rdi
  1685. addq %r12,%r8
  1686. vpxor %xmm9,%xmm11,%xmm11
  1687. shrdq $14,%r13,%r13
  1688. andq %rdi,%r15
  1689. vpaddq %xmm11,%xmm1,%xmm1
  1690. xorq %r9,%r14
  1691. addq %r13,%r8
  1692. vpaddq -96(%rbp),%xmm1,%xmm10
  1693. xorq %r10,%r15
  1694. shrdq $28,%r14,%r14
  1695. addq %r8,%rax
  1696. addq %r15,%r8
  1697. movq %rax,%r13
  1698. addq %r8,%r14
  1699. vmovdqa %xmm10,16(%rsp)
  1700. vpalignr $8,%xmm2,%xmm3,%xmm8
  1701. shrdq $23,%r13,%r13
  1702. movq %r14,%r8
  1703. vpalignr $8,%xmm6,%xmm7,%xmm11
  1704. movq %rbx,%r12
  1705. shrdq $5,%r14,%r14
  1706. vpsrlq $1,%xmm8,%xmm10
  1707. xorq %rax,%r13
  1708. xorq %rcx,%r12
  1709. vpaddq %xmm11,%xmm2,%xmm2
  1710. shrdq $4,%r13,%r13
  1711. xorq %r8,%r14
  1712. vpsrlq $7,%xmm8,%xmm11
  1713. andq %rax,%r12
  1714. xorq %rax,%r13
  1715. vpsllq $56,%xmm8,%xmm9
  1716. addq 32(%rsp),%rdx
  1717. movq %r8,%r15
  1718. vpxor %xmm10,%xmm11,%xmm8
  1719. xorq %rcx,%r12
  1720. shrdq $6,%r14,%r14
  1721. vpsrlq $7,%xmm10,%xmm10
  1722. xorq %r9,%r15
  1723. addq %r12,%rdx
  1724. vpxor %xmm9,%xmm8,%xmm8
  1725. shrdq $14,%r13,%r13
  1726. andq %r15,%rdi
  1727. vpsllq $7,%xmm9,%xmm9
  1728. xorq %r8,%r14
  1729. addq %r13,%rdx
  1730. vpxor %xmm10,%xmm8,%xmm8
  1731. xorq %r9,%rdi
  1732. shrdq $28,%r14,%r14
  1733. vpsrlq $6,%xmm1,%xmm11
  1734. addq %rdx,%r11
  1735. addq %rdi,%rdx
  1736. vpxor %xmm9,%xmm8,%xmm8
  1737. movq %r11,%r13
  1738. addq %rdx,%r14
  1739. vpsllq $3,%xmm1,%xmm10
  1740. shrdq $23,%r13,%r13
  1741. movq %r14,%rdx
  1742. vpaddq %xmm8,%xmm2,%xmm2
  1743. movq %rax,%r12
  1744. shrdq $5,%r14,%r14
  1745. vpsrlq $19,%xmm1,%xmm9
  1746. xorq %r11,%r13
  1747. xorq %rbx,%r12
  1748. vpxor %xmm10,%xmm11,%xmm11
  1749. shrdq $4,%r13,%r13
  1750. xorq %rdx,%r14
  1751. vpsllq $42,%xmm10,%xmm10
  1752. andq %r11,%r12
  1753. xorq %r11,%r13
  1754. vpxor %xmm9,%xmm11,%xmm11
  1755. addq 40(%rsp),%rcx
  1756. movq %rdx,%rdi
  1757. vpsrlq $42,%xmm9,%xmm9
  1758. xorq %rbx,%r12
  1759. shrdq $6,%r14,%r14
  1760. vpxor %xmm10,%xmm11,%xmm11
  1761. xorq %r8,%rdi
  1762. addq %r12,%rcx
  1763. vpxor %xmm9,%xmm11,%xmm11
  1764. shrdq $14,%r13,%r13
  1765. andq %rdi,%r15
  1766. vpaddq %xmm11,%xmm2,%xmm2
  1767. xorq %rdx,%r14
  1768. addq %r13,%rcx
  1769. vpaddq -64(%rbp),%xmm2,%xmm10
  1770. xorq %r8,%r15
  1771. shrdq $28,%r14,%r14
  1772. addq %rcx,%r10
  1773. addq %r15,%rcx
  1774. movq %r10,%r13
  1775. addq %rcx,%r14
  1776. vmovdqa %xmm10,32(%rsp)
  1777. vpalignr $8,%xmm3,%xmm4,%xmm8
  1778. shrdq $23,%r13,%r13
  1779. movq %r14,%rcx
  1780. vpalignr $8,%xmm7,%xmm0,%xmm11
  1781. movq %r11,%r12
  1782. shrdq $5,%r14,%r14
  1783. vpsrlq $1,%xmm8,%xmm10
  1784. xorq %r10,%r13
  1785. xorq %rax,%r12
  1786. vpaddq %xmm11,%xmm3,%xmm3
  1787. shrdq $4,%r13,%r13
  1788. xorq %rcx,%r14
  1789. vpsrlq $7,%xmm8,%xmm11
  1790. andq %r10,%r12
  1791. xorq %r10,%r13
  1792. vpsllq $56,%xmm8,%xmm9
  1793. addq 48(%rsp),%rbx
  1794. movq %rcx,%r15
  1795. vpxor %xmm10,%xmm11,%xmm8
  1796. xorq %rax,%r12
  1797. shrdq $6,%r14,%r14
  1798. vpsrlq $7,%xmm10,%xmm10
  1799. xorq %rdx,%r15
  1800. addq %r12,%rbx
  1801. vpxor %xmm9,%xmm8,%xmm8
  1802. shrdq $14,%r13,%r13
  1803. andq %r15,%rdi
  1804. vpsllq $7,%xmm9,%xmm9
  1805. xorq %rcx,%r14
  1806. addq %r13,%rbx
  1807. vpxor %xmm10,%xmm8,%xmm8
  1808. xorq %rdx,%rdi
  1809. shrdq $28,%r14,%r14
  1810. vpsrlq $6,%xmm2,%xmm11
  1811. addq %rbx,%r9
  1812. addq %rdi,%rbx
  1813. vpxor %xmm9,%xmm8,%xmm8
  1814. movq %r9,%r13
  1815. addq %rbx,%r14
  1816. vpsllq $3,%xmm2,%xmm10
  1817. shrdq $23,%r13,%r13
  1818. movq %r14,%rbx
  1819. vpaddq %xmm8,%xmm3,%xmm3
  1820. movq %r10,%r12
  1821. shrdq $5,%r14,%r14
  1822. vpsrlq $19,%xmm2,%xmm9
  1823. xorq %r9,%r13
  1824. xorq %r11,%r12
  1825. vpxor %xmm10,%xmm11,%xmm11
  1826. shrdq $4,%r13,%r13
  1827. xorq %rbx,%r14
  1828. vpsllq $42,%xmm10,%xmm10
  1829. andq %r9,%r12
  1830. xorq %r9,%r13
  1831. vpxor %xmm9,%xmm11,%xmm11
  1832. addq 56(%rsp),%rax
  1833. movq %rbx,%rdi
  1834. vpsrlq $42,%xmm9,%xmm9
  1835. xorq %r11,%r12
  1836. shrdq $6,%r14,%r14
  1837. vpxor %xmm10,%xmm11,%xmm11
  1838. xorq %rcx,%rdi
  1839. addq %r12,%rax
  1840. vpxor %xmm9,%xmm11,%xmm11
  1841. shrdq $14,%r13,%r13
  1842. andq %rdi,%r15
  1843. vpaddq %xmm11,%xmm3,%xmm3
  1844. xorq %rbx,%r14
  1845. addq %r13,%rax
  1846. vpaddq -32(%rbp),%xmm3,%xmm10
  1847. xorq %rcx,%r15
  1848. shrdq $28,%r14,%r14
  1849. addq %rax,%r8
  1850. addq %r15,%rax
  1851. movq %r8,%r13
  1852. addq %rax,%r14
  1853. vmovdqa %xmm10,48(%rsp)
  1854. vpalignr $8,%xmm4,%xmm5,%xmm8
  1855. shrdq $23,%r13,%r13
  1856. movq %r14,%rax
  1857. vpalignr $8,%xmm0,%xmm1,%xmm11
  1858. movq %r9,%r12
  1859. shrdq $5,%r14,%r14
  1860. vpsrlq $1,%xmm8,%xmm10
  1861. xorq %r8,%r13
  1862. xorq %r10,%r12
  1863. vpaddq %xmm11,%xmm4,%xmm4
  1864. shrdq $4,%r13,%r13
  1865. xorq %rax,%r14
  1866. vpsrlq $7,%xmm8,%xmm11
  1867. andq %r8,%r12
  1868. xorq %r8,%r13
  1869. vpsllq $56,%xmm8,%xmm9
  1870. addq 64(%rsp),%r11
  1871. movq %rax,%r15
  1872. vpxor %xmm10,%xmm11,%xmm8
  1873. xorq %r10,%r12
  1874. shrdq $6,%r14,%r14
  1875. vpsrlq $7,%xmm10,%xmm10
  1876. xorq %rbx,%r15
  1877. addq %r12,%r11
  1878. vpxor %xmm9,%xmm8,%xmm8
  1879. shrdq $14,%r13,%r13
  1880. andq %r15,%rdi
  1881. vpsllq $7,%xmm9,%xmm9
  1882. xorq %rax,%r14
  1883. addq %r13,%r11
  1884. vpxor %xmm10,%xmm8,%xmm8
  1885. xorq %rbx,%rdi
  1886. shrdq $28,%r14,%r14
  1887. vpsrlq $6,%xmm3,%xmm11
  1888. addq %r11,%rdx
  1889. addq %rdi,%r11
  1890. vpxor %xmm9,%xmm8,%xmm8
  1891. movq %rdx,%r13
  1892. addq %r11,%r14
  1893. vpsllq $3,%xmm3,%xmm10
  1894. shrdq $23,%r13,%r13
  1895. movq %r14,%r11
  1896. vpaddq %xmm8,%xmm4,%xmm4
  1897. movq %r8,%r12
  1898. shrdq $5,%r14,%r14
  1899. vpsrlq $19,%xmm3,%xmm9
  1900. xorq %rdx,%r13
  1901. xorq %r9,%r12
  1902. vpxor %xmm10,%xmm11,%xmm11
  1903. shrdq $4,%r13,%r13
  1904. xorq %r11,%r14
  1905. vpsllq $42,%xmm10,%xmm10
  1906. andq %rdx,%r12
  1907. xorq %rdx,%r13
  1908. vpxor %xmm9,%xmm11,%xmm11
  1909. addq 72(%rsp),%r10
  1910. movq %r11,%rdi
  1911. vpsrlq $42,%xmm9,%xmm9
  1912. xorq %r9,%r12
  1913. shrdq $6,%r14,%r14
  1914. vpxor %xmm10,%xmm11,%xmm11
  1915. xorq %rax,%rdi
  1916. addq %r12,%r10
  1917. vpxor %xmm9,%xmm11,%xmm11
  1918. shrdq $14,%r13,%r13
  1919. andq %rdi,%r15
  1920. vpaddq %xmm11,%xmm4,%xmm4
  1921. xorq %r11,%r14
  1922. addq %r13,%r10
  1923. vpaddq 0(%rbp),%xmm4,%xmm10
  1924. xorq %rax,%r15
  1925. shrdq $28,%r14,%r14
  1926. addq %r10,%rcx
  1927. addq %r15,%r10
  1928. movq %rcx,%r13
  1929. addq %r10,%r14
  1930. vmovdqa %xmm10,64(%rsp)
  1931. vpalignr $8,%xmm5,%xmm6,%xmm8
  1932. shrdq $23,%r13,%r13
  1933. movq %r14,%r10
  1934. vpalignr $8,%xmm1,%xmm2,%xmm11
  1935. movq %rdx,%r12
  1936. shrdq $5,%r14,%r14
  1937. vpsrlq $1,%xmm8,%xmm10
  1938. xorq %rcx,%r13
  1939. xorq %r8,%r12
  1940. vpaddq %xmm11,%xmm5,%xmm5
  1941. shrdq $4,%r13,%r13
  1942. xorq %r10,%r14
  1943. vpsrlq $7,%xmm8,%xmm11
  1944. andq %rcx,%r12
  1945. xorq %rcx,%r13
  1946. vpsllq $56,%xmm8,%xmm9
  1947. addq 80(%rsp),%r9
  1948. movq %r10,%r15
  1949. vpxor %xmm10,%xmm11,%xmm8
  1950. xorq %r8,%r12
  1951. shrdq $6,%r14,%r14
  1952. vpsrlq $7,%xmm10,%xmm10
  1953. xorq %r11,%r15
  1954. addq %r12,%r9
  1955. vpxor %xmm9,%xmm8,%xmm8
  1956. shrdq $14,%r13,%r13
  1957. andq %r15,%rdi
  1958. vpsllq $7,%xmm9,%xmm9
  1959. xorq %r10,%r14
  1960. addq %r13,%r9
  1961. vpxor %xmm10,%xmm8,%xmm8
  1962. xorq %r11,%rdi
  1963. shrdq $28,%r14,%r14
  1964. vpsrlq $6,%xmm4,%xmm11
  1965. addq %r9,%rbx
  1966. addq %rdi,%r9
  1967. vpxor %xmm9,%xmm8,%xmm8
  1968. movq %rbx,%r13
  1969. addq %r9,%r14
  1970. vpsllq $3,%xmm4,%xmm10
  1971. shrdq $23,%r13,%r13
  1972. movq %r14,%r9
  1973. vpaddq %xmm8,%xmm5,%xmm5
  1974. movq %rcx,%r12
  1975. shrdq $5,%r14,%r14
  1976. vpsrlq $19,%xmm4,%xmm9
  1977. xorq %rbx,%r13
  1978. xorq %rdx,%r12
  1979. vpxor %xmm10,%xmm11,%xmm11
  1980. shrdq $4,%r13,%r13
  1981. xorq %r9,%r14
  1982. vpsllq $42,%xmm10,%xmm10
  1983. andq %rbx,%r12
  1984. xorq %rbx,%r13
  1985. vpxor %xmm9,%xmm11,%xmm11
  1986. addq 88(%rsp),%r8
  1987. movq %r9,%rdi
  1988. vpsrlq $42,%xmm9,%xmm9
  1989. xorq %rdx,%r12
  1990. shrdq $6,%r14,%r14
  1991. vpxor %xmm10,%xmm11,%xmm11
  1992. xorq %r10,%rdi
  1993. addq %r12,%r8
  1994. vpxor %xmm9,%xmm11,%xmm11
  1995. shrdq $14,%r13,%r13
  1996. andq %rdi,%r15
  1997. vpaddq %xmm11,%xmm5,%xmm5
  1998. xorq %r9,%r14
  1999. addq %r13,%r8
  2000. vpaddq 32(%rbp),%xmm5,%xmm10
  2001. xorq %r10,%r15
  2002. shrdq $28,%r14,%r14
  2003. addq %r8,%rax
  2004. addq %r15,%r8
  2005. movq %rax,%r13
  2006. addq %r8,%r14
  2007. vmovdqa %xmm10,80(%rsp)
  2008. vpalignr $8,%xmm6,%xmm7,%xmm8
  2009. shrdq $23,%r13,%r13
  2010. movq %r14,%r8
  2011. vpalignr $8,%xmm2,%xmm3,%xmm11
  2012. movq %rbx,%r12
  2013. shrdq $5,%r14,%r14
  2014. vpsrlq $1,%xmm8,%xmm10
  2015. xorq %rax,%r13
  2016. xorq %rcx,%r12
  2017. vpaddq %xmm11,%xmm6,%xmm6
  2018. shrdq $4,%r13,%r13
  2019. xorq %r8,%r14
  2020. vpsrlq $7,%xmm8,%xmm11
  2021. andq %rax,%r12
  2022. xorq %rax,%r13
  2023. vpsllq $56,%xmm8,%xmm9
  2024. addq 96(%rsp),%rdx
  2025. movq %r8,%r15
  2026. vpxor %xmm10,%xmm11,%xmm8
  2027. xorq %rcx,%r12
  2028. shrdq $6,%r14,%r14
  2029. vpsrlq $7,%xmm10,%xmm10
  2030. xorq %r9,%r15
  2031. addq %r12,%rdx
  2032. vpxor %xmm9,%xmm8,%xmm8
  2033. shrdq $14,%r13,%r13
  2034. andq %r15,%rdi
  2035. vpsllq $7,%xmm9,%xmm9
  2036. xorq %r8,%r14
  2037. addq %r13,%rdx
  2038. vpxor %xmm10,%xmm8,%xmm8
  2039. xorq %r9,%rdi
  2040. shrdq $28,%r14,%r14
  2041. vpsrlq $6,%xmm5,%xmm11
  2042. addq %rdx,%r11
  2043. addq %rdi,%rdx
  2044. vpxor %xmm9,%xmm8,%xmm8
  2045. movq %r11,%r13
  2046. addq %rdx,%r14
  2047. vpsllq $3,%xmm5,%xmm10
  2048. shrdq $23,%r13,%r13
  2049. movq %r14,%rdx
  2050. vpaddq %xmm8,%xmm6,%xmm6
  2051. movq %rax,%r12
  2052. shrdq $5,%r14,%r14
  2053. vpsrlq $19,%xmm5,%xmm9
  2054. xorq %r11,%r13
  2055. xorq %rbx,%r12
  2056. vpxor %xmm10,%xmm11,%xmm11
  2057. shrdq $4,%r13,%r13
  2058. xorq %rdx,%r14
  2059. vpsllq $42,%xmm10,%xmm10
  2060. andq %r11,%r12
  2061. xorq %r11,%r13
  2062. vpxor %xmm9,%xmm11,%xmm11
  2063. addq 104(%rsp),%rcx
  2064. movq %rdx,%rdi
  2065. vpsrlq $42,%xmm9,%xmm9
  2066. xorq %rbx,%r12
  2067. shrdq $6,%r14,%r14
  2068. vpxor %xmm10,%xmm11,%xmm11
  2069. xorq %r8,%rdi
  2070. addq %r12,%rcx
  2071. vpxor %xmm9,%xmm11,%xmm11
  2072. shrdq $14,%r13,%r13
  2073. andq %rdi,%r15
  2074. vpaddq %xmm11,%xmm6,%xmm6
  2075. xorq %rdx,%r14
  2076. addq %r13,%rcx
  2077. vpaddq 64(%rbp),%xmm6,%xmm10
  2078. xorq %r8,%r15
  2079. shrdq $28,%r14,%r14
  2080. addq %rcx,%r10
  2081. addq %r15,%rcx
  2082. movq %r10,%r13
  2083. addq %rcx,%r14
  2084. vmovdqa %xmm10,96(%rsp)
  2085. vpalignr $8,%xmm7,%xmm0,%xmm8
  2086. shrdq $23,%r13,%r13
  2087. movq %r14,%rcx
  2088. vpalignr $8,%xmm3,%xmm4,%xmm11
  2089. movq %r11,%r12
  2090. shrdq $5,%r14,%r14
  2091. vpsrlq $1,%xmm8,%xmm10
  2092. xorq %r10,%r13
  2093. xorq %rax,%r12
  2094. vpaddq %xmm11,%xmm7,%xmm7
  2095. shrdq $4,%r13,%r13
  2096. xorq %rcx,%r14
  2097. vpsrlq $7,%xmm8,%xmm11
  2098. andq %r10,%r12
  2099. xorq %r10,%r13
  2100. vpsllq $56,%xmm8,%xmm9
  2101. addq 112(%rsp),%rbx
  2102. movq %rcx,%r15
  2103. vpxor %xmm10,%xmm11,%xmm8
  2104. xorq %rax,%r12
  2105. shrdq $6,%r14,%r14
  2106. vpsrlq $7,%xmm10,%xmm10
  2107. xorq %rdx,%r15
  2108. addq %r12,%rbx
  2109. vpxor %xmm9,%xmm8,%xmm8
  2110. shrdq $14,%r13,%r13
  2111. andq %r15,%rdi
  2112. vpsllq $7,%xmm9,%xmm9
  2113. xorq %rcx,%r14
  2114. addq %r13,%rbx
  2115. vpxor %xmm10,%xmm8,%xmm8
  2116. xorq %rdx,%rdi
  2117. shrdq $28,%r14,%r14
  2118. vpsrlq $6,%xmm6,%xmm11
  2119. addq %rbx,%r9
  2120. addq %rdi,%rbx
  2121. vpxor %xmm9,%xmm8,%xmm8
  2122. movq %r9,%r13
  2123. addq %rbx,%r14
  2124. vpsllq $3,%xmm6,%xmm10
  2125. shrdq $23,%r13,%r13
  2126. movq %r14,%rbx
  2127. vpaddq %xmm8,%xmm7,%xmm7
  2128. movq %r10,%r12
  2129. shrdq $5,%r14,%r14
  2130. vpsrlq $19,%xmm6,%xmm9
  2131. xorq %r9,%r13
  2132. xorq %r11,%r12
  2133. vpxor %xmm10,%xmm11,%xmm11
  2134. shrdq $4,%r13,%r13
  2135. xorq %rbx,%r14
  2136. vpsllq $42,%xmm10,%xmm10
  2137. andq %r9,%r12
  2138. xorq %r9,%r13
  2139. vpxor %xmm9,%xmm11,%xmm11
  2140. addq 120(%rsp),%rax
  2141. movq %rbx,%rdi
  2142. vpsrlq $42,%xmm9,%xmm9
  2143. xorq %r11,%r12
  2144. shrdq $6,%r14,%r14
  2145. vpxor %xmm10,%xmm11,%xmm11
  2146. xorq %rcx,%rdi
  2147. addq %r12,%rax
  2148. vpxor %xmm9,%xmm11,%xmm11
  2149. shrdq $14,%r13,%r13
  2150. andq %rdi,%r15
  2151. vpaddq %xmm11,%xmm7,%xmm7
  2152. xorq %rbx,%r14
  2153. addq %r13,%rax
  2154. vpaddq 96(%rbp),%xmm7,%xmm10
  2155. xorq %rcx,%r15
  2156. shrdq $28,%r14,%r14
  2157. addq %rax,%r8
  2158. addq %r15,%rax
  2159. movq %r8,%r13
  2160. addq %rax,%r14
  2161. vmovdqa %xmm10,112(%rsp)
  2162. cmpb $0,135(%rbp)
  2163. jne .Lavx_00_47
  2164. shrdq $23,%r13,%r13
  2165. movq %r14,%rax
  2166. movq %r9,%r12
  2167. shrdq $5,%r14,%r14
  2168. xorq %r8,%r13
  2169. xorq %r10,%r12
  2170. shrdq $4,%r13,%r13
  2171. xorq %rax,%r14
  2172. andq %r8,%r12
  2173. xorq %r8,%r13
  2174. addq 0(%rsp),%r11
  2175. movq %rax,%r15
  2176. xorq %r10,%r12
  2177. shrdq $6,%r14,%r14
  2178. xorq %rbx,%r15
  2179. addq %r12,%r11
  2180. shrdq $14,%r13,%r13
  2181. andq %r15,%rdi
  2182. xorq %rax,%r14
  2183. addq %r13,%r11
  2184. xorq %rbx,%rdi
  2185. shrdq $28,%r14,%r14
  2186. addq %r11,%rdx
  2187. addq %rdi,%r11
  2188. movq %rdx,%r13
  2189. addq %r11,%r14
  2190. shrdq $23,%r13,%r13
  2191. movq %r14,%r11
  2192. movq %r8,%r12
  2193. shrdq $5,%r14,%r14
  2194. xorq %rdx,%r13
  2195. xorq %r9,%r12
  2196. shrdq $4,%r13,%r13
  2197. xorq %r11,%r14
  2198. andq %rdx,%r12
  2199. xorq %rdx,%r13
  2200. addq 8(%rsp),%r10
  2201. movq %r11,%rdi
  2202. xorq %r9,%r12
  2203. shrdq $6,%r14,%r14
  2204. xorq %rax,%rdi
  2205. addq %r12,%r10
  2206. shrdq $14,%r13,%r13
  2207. andq %rdi,%r15
  2208. xorq %r11,%r14
  2209. addq %r13,%r10
  2210. xorq %rax,%r15
  2211. shrdq $28,%r14,%r14
  2212. addq %r10,%rcx
  2213. addq %r15,%r10
  2214. movq %rcx,%r13
  2215. addq %r10,%r14
  2216. shrdq $23,%r13,%r13
  2217. movq %r14,%r10
  2218. movq %rdx,%r12
  2219. shrdq $5,%r14,%r14
  2220. xorq %rcx,%r13
  2221. xorq %r8,%r12
  2222. shrdq $4,%r13,%r13
  2223. xorq %r10,%r14
  2224. andq %rcx,%r12
  2225. xorq %rcx,%r13
  2226. addq 16(%rsp),%r9
  2227. movq %r10,%r15
  2228. xorq %r8,%r12
  2229. shrdq $6,%r14,%r14
  2230. xorq %r11,%r15
  2231. addq %r12,%r9
  2232. shrdq $14,%r13,%r13
  2233. andq %r15,%rdi
  2234. xorq %r10,%r14
  2235. addq %r13,%r9
  2236. xorq %r11,%rdi
  2237. shrdq $28,%r14,%r14
  2238. addq %r9,%rbx
  2239. addq %rdi,%r9
  2240. movq %rbx,%r13
  2241. addq %r9,%r14
  2242. shrdq $23,%r13,%r13
  2243. movq %r14,%r9
  2244. movq %rcx,%r12
  2245. shrdq $5,%r14,%r14
  2246. xorq %rbx,%r13
  2247. xorq %rdx,%r12
  2248. shrdq $4,%r13,%r13
  2249. xorq %r9,%r14
  2250. andq %rbx,%r12
  2251. xorq %rbx,%r13
  2252. addq 24(%rsp),%r8
  2253. movq %r9,%rdi
  2254. xorq %rdx,%r12
  2255. shrdq $6,%r14,%r14
  2256. xorq %r10,%rdi
  2257. addq %r12,%r8
  2258. shrdq $14,%r13,%r13
  2259. andq %rdi,%r15
  2260. xorq %r9,%r14
  2261. addq %r13,%r8
  2262. xorq %r10,%r15
  2263. shrdq $28,%r14,%r14
  2264. addq %r8,%rax
  2265. addq %r15,%r8
  2266. movq %rax,%r13
  2267. addq %r8,%r14
  2268. shrdq $23,%r13,%r13
  2269. movq %r14,%r8
  2270. movq %rbx,%r12
  2271. shrdq $5,%r14,%r14
  2272. xorq %rax,%r13
  2273. xorq %rcx,%r12
  2274. shrdq $4,%r13,%r13
  2275. xorq %r8,%r14
  2276. andq %rax,%r12
  2277. xorq %rax,%r13
  2278. addq 32(%rsp),%rdx
  2279. movq %r8,%r15
  2280. xorq %rcx,%r12
  2281. shrdq $6,%r14,%r14
  2282. xorq %r9,%r15
  2283. addq %r12,%rdx
  2284. shrdq $14,%r13,%r13
  2285. andq %r15,%rdi
  2286. xorq %r8,%r14
  2287. addq %r13,%rdx
  2288. xorq %r9,%rdi
  2289. shrdq $28,%r14,%r14
  2290. addq %rdx,%r11
  2291. addq %rdi,%rdx
  2292. movq %r11,%r13
  2293. addq %rdx,%r14
  2294. shrdq $23,%r13,%r13
  2295. movq %r14,%rdx
  2296. movq %rax,%r12
  2297. shrdq $5,%r14,%r14
  2298. xorq %r11,%r13
  2299. xorq %rbx,%r12
  2300. shrdq $4,%r13,%r13
  2301. xorq %rdx,%r14
  2302. andq %r11,%r12
  2303. xorq %r11,%r13
  2304. addq 40(%rsp),%rcx
  2305. movq %rdx,%rdi
  2306. xorq %rbx,%r12
  2307. shrdq $6,%r14,%r14
  2308. xorq %r8,%rdi
  2309. addq %r12,%rcx
  2310. shrdq $14,%r13,%r13
  2311. andq %rdi,%r15
  2312. xorq %rdx,%r14
  2313. addq %r13,%rcx
  2314. xorq %r8,%r15
  2315. shrdq $28,%r14,%r14
  2316. addq %rcx,%r10
  2317. addq %r15,%rcx
  2318. movq %r10,%r13
  2319. addq %rcx,%r14
  2320. shrdq $23,%r13,%r13
  2321. movq %r14,%rcx
  2322. movq %r11,%r12
  2323. shrdq $5,%r14,%r14
  2324. xorq %r10,%r13
  2325. xorq %rax,%r12
  2326. shrdq $4,%r13,%r13
  2327. xorq %rcx,%r14
  2328. andq %r10,%r12
  2329. xorq %r10,%r13
  2330. addq 48(%rsp),%rbx
  2331. movq %rcx,%r15
  2332. xorq %rax,%r12
  2333. shrdq $6,%r14,%r14
  2334. xorq %rdx,%r15
  2335. addq %r12,%rbx
  2336. shrdq $14,%r13,%r13
  2337. andq %r15,%rdi
  2338. xorq %rcx,%r14
  2339. addq %r13,%rbx
  2340. xorq %rdx,%rdi
  2341. shrdq $28,%r14,%r14
  2342. addq %rbx,%r9
  2343. addq %rdi,%rbx
  2344. movq %r9,%r13
  2345. addq %rbx,%r14
  2346. shrdq $23,%r13,%r13
  2347. movq %r14,%rbx
  2348. movq %r10,%r12
  2349. shrdq $5,%r14,%r14
  2350. xorq %r9,%r13
  2351. xorq %r11,%r12
  2352. shrdq $4,%r13,%r13
  2353. xorq %rbx,%r14
  2354. andq %r9,%r12
  2355. xorq %r9,%r13
  2356. addq 56(%rsp),%rax
  2357. movq %rbx,%rdi
  2358. xorq %r11,%r12
  2359. shrdq $6,%r14,%r14
  2360. xorq %rcx,%rdi
  2361. addq %r12,%rax
  2362. shrdq $14,%r13,%r13
  2363. andq %rdi,%r15
  2364. xorq %rbx,%r14
  2365. addq %r13,%rax
  2366. xorq %rcx,%r15
  2367. shrdq $28,%r14,%r14
  2368. addq %rax,%r8
  2369. addq %r15,%rax
  2370. movq %r8,%r13
  2371. addq %rax,%r14
  2372. shrdq $23,%r13,%r13
  2373. movq %r14,%rax
  2374. movq %r9,%r12
  2375. shrdq $5,%r14,%r14
  2376. xorq %r8,%r13
  2377. xorq %r10,%r12
  2378. shrdq $4,%r13,%r13
  2379. xorq %rax,%r14
  2380. andq %r8,%r12
  2381. xorq %r8,%r13
  2382. addq 64(%rsp),%r11
  2383. movq %rax,%r15
  2384. xorq %r10,%r12
  2385. shrdq $6,%r14,%r14
  2386. xorq %rbx,%r15
  2387. addq %r12,%r11
  2388. shrdq $14,%r13,%r13
  2389. andq %r15,%rdi
  2390. xorq %rax,%r14
  2391. addq %r13,%r11
  2392. xorq %rbx,%rdi
  2393. shrdq $28,%r14,%r14
  2394. addq %r11,%rdx
  2395. addq %rdi,%r11
  2396. movq %rdx,%r13
  2397. addq %r11,%r14
  2398. shrdq $23,%r13,%r13
  2399. movq %r14,%r11
  2400. movq %r8,%r12
  2401. shrdq $5,%r14,%r14
  2402. xorq %rdx,%r13
  2403. xorq %r9,%r12
  2404. shrdq $4,%r13,%r13
  2405. xorq %r11,%r14
  2406. andq %rdx,%r12
  2407. xorq %rdx,%r13
  2408. addq 72(%rsp),%r10
  2409. movq %r11,%rdi
  2410. xorq %r9,%r12
  2411. shrdq $6,%r14,%r14
  2412. xorq %rax,%rdi
  2413. addq %r12,%r10
  2414. shrdq $14,%r13,%r13
  2415. andq %rdi,%r15
  2416. xorq %r11,%r14
  2417. addq %r13,%r10
  2418. xorq %rax,%r15
  2419. shrdq $28,%r14,%r14
  2420. addq %r10,%rcx
  2421. addq %r15,%r10
  2422. movq %rcx,%r13
  2423. addq %r10,%r14
  2424. shrdq $23,%r13,%r13
  2425. movq %r14,%r10
  2426. movq %rdx,%r12
  2427. shrdq $5,%r14,%r14
  2428. xorq %rcx,%r13
  2429. xorq %r8,%r12
  2430. shrdq $4,%r13,%r13
  2431. xorq %r10,%r14
  2432. andq %rcx,%r12
  2433. xorq %rcx,%r13
  2434. addq 80(%rsp),%r9
  2435. movq %r10,%r15
  2436. xorq %r8,%r12
  2437. shrdq $6,%r14,%r14
  2438. xorq %r11,%r15
  2439. addq %r12,%r9
  2440. shrdq $14,%r13,%r13
  2441. andq %r15,%rdi
  2442. xorq %r10,%r14
  2443. addq %r13,%r9
  2444. xorq %r11,%rdi
  2445. shrdq $28,%r14,%r14
  2446. addq %r9,%rbx
  2447. addq %rdi,%r9
  2448. movq %rbx,%r13
  2449. addq %r9,%r14
  2450. shrdq $23,%r13,%r13
  2451. movq %r14,%r9
  2452. movq %rcx,%r12
  2453. shrdq $5,%r14,%r14
  2454. xorq %rbx,%r13
  2455. xorq %rdx,%r12
  2456. shrdq $4,%r13,%r13
  2457. xorq %r9,%r14
  2458. andq %rbx,%r12
  2459. xorq %rbx,%r13
  2460. addq 88(%rsp),%r8
  2461. movq %r9,%rdi
  2462. xorq %rdx,%r12
  2463. shrdq $6,%r14,%r14
  2464. xorq %r10,%rdi
  2465. addq %r12,%r8
  2466. shrdq $14,%r13,%r13
  2467. andq %rdi,%r15
  2468. xorq %r9,%r14
  2469. addq %r13,%r8
  2470. xorq %r10,%r15
  2471. shrdq $28,%r14,%r14
  2472. addq %r8,%rax
  2473. addq %r15,%r8
  2474. movq %rax,%r13
  2475. addq %r8,%r14
  2476. shrdq $23,%r13,%r13
  2477. movq %r14,%r8
  2478. movq %rbx,%r12
  2479. shrdq $5,%r14,%r14
  2480. xorq %rax,%r13
  2481. xorq %rcx,%r12
  2482. shrdq $4,%r13,%r13
  2483. xorq %r8,%r14
  2484. andq %rax,%r12
  2485. xorq %rax,%r13
  2486. addq 96(%rsp),%rdx
  2487. movq %r8,%r15
  2488. xorq %rcx,%r12
  2489. shrdq $6,%r14,%r14
  2490. xorq %r9,%r15
  2491. addq %r12,%rdx
  2492. shrdq $14,%r13,%r13
  2493. andq %r15,%rdi
  2494. xorq %r8,%r14
  2495. addq %r13,%rdx
  2496. xorq %r9,%rdi
  2497. shrdq $28,%r14,%r14
  2498. addq %rdx,%r11
  2499. addq %rdi,%rdx
  2500. movq %r11,%r13
  2501. addq %rdx,%r14
  2502. shrdq $23,%r13,%r13
  2503. movq %r14,%rdx
  2504. movq %rax,%r12
  2505. shrdq $5,%r14,%r14
  2506. xorq %r11,%r13
  2507. xorq %rbx,%r12
  2508. shrdq $4,%r13,%r13
  2509. xorq %rdx,%r14
  2510. andq %r11,%r12
  2511. xorq %r11,%r13
  2512. addq 104(%rsp),%rcx
  2513. movq %rdx,%rdi
  2514. xorq %rbx,%r12
  2515. shrdq $6,%r14,%r14
  2516. xorq %r8,%rdi
  2517. addq %r12,%rcx
  2518. shrdq $14,%r13,%r13
  2519. andq %rdi,%r15
  2520. xorq %rdx,%r14
  2521. addq %r13,%rcx
  2522. xorq %r8,%r15
  2523. shrdq $28,%r14,%r14
  2524. addq %rcx,%r10
  2525. addq %r15,%rcx
  2526. movq %r10,%r13
  2527. addq %rcx,%r14
  2528. shrdq $23,%r13,%r13
  2529. movq %r14,%rcx
  2530. movq %r11,%r12
  2531. shrdq $5,%r14,%r14
  2532. xorq %r10,%r13
  2533. xorq %rax,%r12
  2534. shrdq $4,%r13,%r13
  2535. xorq %rcx,%r14
  2536. andq %r10,%r12
  2537. xorq %r10,%r13
  2538. addq 112(%rsp),%rbx
  2539. movq %rcx,%r15
  2540. xorq %rax,%r12
  2541. shrdq $6,%r14,%r14
  2542. xorq %rdx,%r15
  2543. addq %r12,%rbx
  2544. shrdq $14,%r13,%r13
  2545. andq %r15,%rdi
  2546. xorq %rcx,%r14
  2547. addq %r13,%rbx
  2548. xorq %rdx,%rdi
  2549. shrdq $28,%r14,%r14
  2550. addq %rbx,%r9
  2551. addq %rdi,%rbx
  2552. movq %r9,%r13
  2553. addq %rbx,%r14
  2554. shrdq $23,%r13,%r13
  2555. movq %r14,%rbx
  2556. movq %r10,%r12
  2557. shrdq $5,%r14,%r14
  2558. xorq %r9,%r13
  2559. xorq %r11,%r12
  2560. shrdq $4,%r13,%r13
  2561. xorq %rbx,%r14
  2562. andq %r9,%r12
  2563. xorq %r9,%r13
  2564. addq 120(%rsp),%rax
  2565. movq %rbx,%rdi
  2566. xorq %r11,%r12
  2567. shrdq $6,%r14,%r14
  2568. xorq %rcx,%rdi
  2569. addq %r12,%rax
  2570. shrdq $14,%r13,%r13
  2571. andq %rdi,%r15
  2572. xorq %rbx,%r14
  2573. addq %r13,%rax
  2574. xorq %rcx,%r15
  2575. shrdq $28,%r14,%r14
  2576. addq %rax,%r8
  2577. addq %r15,%rax
  2578. movq %r8,%r13
  2579. addq %rax,%r14
  2580. movq 128+0(%rsp),%rdi
  2581. movq %r14,%rax
  2582. addq 0(%rdi),%rax
  2583. leaq 128(%rsi),%rsi
  2584. addq 8(%rdi),%rbx
  2585. addq 16(%rdi),%rcx
  2586. addq 24(%rdi),%rdx
  2587. addq 32(%rdi),%r8
  2588. addq 40(%rdi),%r9
  2589. addq 48(%rdi),%r10
  2590. addq 56(%rdi),%r11
  2591. cmpq 128+16(%rsp),%rsi
  2592. movq %rax,0(%rdi)
  2593. movq %rbx,8(%rdi)
  2594. movq %rcx,16(%rdi)
  2595. movq %rdx,24(%rdi)
  2596. movq %r8,32(%rdi)
  2597. movq %r9,40(%rdi)
  2598. movq %r10,48(%rdi)
  2599. movq %r11,56(%rdi)
  2600. jb .Lloop_avx
  2601. movq 152(%rsp),%rsi
  2602. .cfi_def_cfa %rsi,8
  2603. vzeroupper
  2604. movq -48(%rsi),%r15
  2605. .cfi_restore %r15
  2606. movq -40(%rsi),%r14
  2607. .cfi_restore %r14
  2608. movq -32(%rsi),%r13
  2609. .cfi_restore %r13
  2610. movq -24(%rsi),%r12
  2611. .cfi_restore %r12
  2612. movq -16(%rsi),%rbp
  2613. .cfi_restore %rbp
  2614. movq -8(%rsi),%rbx
  2615. .cfi_restore %rbx
  2616. leaq (%rsi),%rsp
  2617. .cfi_def_cfa_register %rsp
  2618. .Lepilogue_avx:
  2619. .byte 0xf3,0xc3
  2620. .cfi_endproc
  2621. .size sha512_block_data_order_avx,.-sha512_block_data_order_avx
  2622. #endif
  2623. .section .note.GNU-stack,"",@progbits