wp-x86_64.s 28 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879
  1. .text
  2. .globl _whirlpool_block
  3. .p2align 4
  4. _whirlpool_block:
  5. movq %rsp,%rax
  6. pushq %rbx
  7. pushq %rbp
  8. pushq %r12
  9. pushq %r13
  10. pushq %r14
  11. pushq %r15
  12. subq $128+40,%rsp
  13. andq $-64,%rsp
  14. leaq 128(%rsp),%r10
  15. movq %rdi,0(%r10)
  16. movq %rsi,8(%r10)
  17. movq %rdx,16(%r10)
  18. movq %rax,32(%r10)
  19. L$prologue:
  20. movq %r10,%rbx
  21. leaq L$table(%rip),%rbp
  22. xorq %rcx,%rcx
  23. xorq %rdx,%rdx
  24. movq 0(%rdi),%r8
  25. movq 8(%rdi),%r9
  26. movq 16(%rdi),%r10
  27. movq 24(%rdi),%r11
  28. movq 32(%rdi),%r12
  29. movq 40(%rdi),%r13
  30. movq 48(%rdi),%r14
  31. movq 56(%rdi),%r15
  32. L$outerloop:
  33. movq %r8,0(%rsp)
  34. movq %r9,8(%rsp)
  35. movq %r10,16(%rsp)
  36. movq %r11,24(%rsp)
  37. movq %r12,32(%rsp)
  38. movq %r13,40(%rsp)
  39. movq %r14,48(%rsp)
  40. movq %r15,56(%rsp)
  41. xorq 0(%rsi),%r8
  42. xorq 8(%rsi),%r9
  43. xorq 16(%rsi),%r10
  44. xorq 24(%rsi),%r11
  45. xorq 32(%rsi),%r12
  46. xorq 40(%rsi),%r13
  47. xorq 48(%rsi),%r14
  48. xorq 56(%rsi),%r15
  49. movq %r8,64+0(%rsp)
  50. movq %r9,64+8(%rsp)
  51. movq %r10,64+16(%rsp)
  52. movq %r11,64+24(%rsp)
  53. movq %r12,64+32(%rsp)
  54. movq %r13,64+40(%rsp)
  55. movq %r14,64+48(%rsp)
  56. movq %r15,64+56(%rsp)
  57. xorq %rsi,%rsi
  58. movq %rsi,24(%rbx)
  59. jmp L$round
  60. .p2align 4
  61. L$round:
  62. movq 4096(%rbp,%rsi,8),%r8
  63. movl 0(%rsp),%eax
  64. movl 4(%rsp),%ebx
  65. movzbl %al,%ecx
  66. movzbl %ah,%edx
  67. shrl $16,%eax
  68. leaq (%rcx,%rcx,1),%rsi
  69. movzbl %al,%ecx
  70. leaq (%rdx,%rdx,1),%rdi
  71. movzbl %ah,%edx
  72. xorq 0(%rbp,%rsi,8),%r8
  73. movq 7(%rbp,%rdi,8),%r9
  74. movl 0+8(%rsp),%eax
  75. leaq (%rcx,%rcx,1),%rsi
  76. movzbl %bl,%ecx
  77. leaq (%rdx,%rdx,1),%rdi
  78. movzbl %bh,%edx
  79. movq 6(%rbp,%rsi,8),%r10
  80. movq 5(%rbp,%rdi,8),%r11
  81. shrl $16,%ebx
  82. leaq (%rcx,%rcx,1),%rsi
  83. movzbl %bl,%ecx
  84. leaq (%rdx,%rdx,1),%rdi
  85. movzbl %bh,%edx
  86. movq 4(%rbp,%rsi,8),%r12
  87. movq 3(%rbp,%rdi,8),%r13
  88. movl 0+8+4(%rsp),%ebx
  89. leaq (%rcx,%rcx,1),%rsi
  90. movzbl %al,%ecx
  91. leaq (%rdx,%rdx,1),%rdi
  92. movzbl %ah,%edx
  93. movq 2(%rbp,%rsi,8),%r14
  94. movq 1(%rbp,%rdi,8),%r15
  95. shrl $16,%eax
  96. leaq (%rcx,%rcx,1),%rsi
  97. movzbl %al,%ecx
  98. leaq (%rdx,%rdx,1),%rdi
  99. movzbl %ah,%edx
  100. xorq 0(%rbp,%rsi,8),%r9
  101. xorq 7(%rbp,%rdi,8),%r10
  102. movl 8+8(%rsp),%eax
  103. leaq (%rcx,%rcx,1),%rsi
  104. movzbl %bl,%ecx
  105. leaq (%rdx,%rdx,1),%rdi
  106. movzbl %bh,%edx
  107. xorq 6(%rbp,%rsi,8),%r11
  108. xorq 5(%rbp,%rdi,8),%r12
  109. shrl $16,%ebx
  110. leaq (%rcx,%rcx,1),%rsi
  111. movzbl %bl,%ecx
  112. leaq (%rdx,%rdx,1),%rdi
  113. movzbl %bh,%edx
  114. xorq 4(%rbp,%rsi,8),%r13
  115. xorq 3(%rbp,%rdi,8),%r14
  116. movl 8+8+4(%rsp),%ebx
  117. leaq (%rcx,%rcx,1),%rsi
  118. movzbl %al,%ecx
  119. leaq (%rdx,%rdx,1),%rdi
  120. movzbl %ah,%edx
  121. xorq 2(%rbp,%rsi,8),%r15
  122. xorq 1(%rbp,%rdi,8),%r8
  123. shrl $16,%eax
  124. leaq (%rcx,%rcx,1),%rsi
  125. movzbl %al,%ecx
  126. leaq (%rdx,%rdx,1),%rdi
  127. movzbl %ah,%edx
  128. xorq 0(%rbp,%rsi,8),%r10
  129. xorq 7(%rbp,%rdi,8),%r11
  130. movl 16+8(%rsp),%eax
  131. leaq (%rcx,%rcx,1),%rsi
  132. movzbl %bl,%ecx
  133. leaq (%rdx,%rdx,1),%rdi
  134. movzbl %bh,%edx
  135. xorq 6(%rbp,%rsi,8),%r12
  136. xorq 5(%rbp,%rdi,8),%r13
  137. shrl $16,%ebx
  138. leaq (%rcx,%rcx,1),%rsi
  139. movzbl %bl,%ecx
  140. leaq (%rdx,%rdx,1),%rdi
  141. movzbl %bh,%edx
  142. xorq 4(%rbp,%rsi,8),%r14
  143. xorq 3(%rbp,%rdi,8),%r15
  144. movl 16+8+4(%rsp),%ebx
  145. leaq (%rcx,%rcx,1),%rsi
  146. movzbl %al,%ecx
  147. leaq (%rdx,%rdx,1),%rdi
  148. movzbl %ah,%edx
  149. xorq 2(%rbp,%rsi,8),%r8
  150. xorq 1(%rbp,%rdi,8),%r9
  151. shrl $16,%eax
  152. leaq (%rcx,%rcx,1),%rsi
  153. movzbl %al,%ecx
  154. leaq (%rdx,%rdx,1),%rdi
  155. movzbl %ah,%edx
  156. xorq 0(%rbp,%rsi,8),%r11
  157. xorq 7(%rbp,%rdi,8),%r12
  158. movl 24+8(%rsp),%eax
  159. leaq (%rcx,%rcx,1),%rsi
  160. movzbl %bl,%ecx
  161. leaq (%rdx,%rdx,1),%rdi
  162. movzbl %bh,%edx
  163. xorq 6(%rbp,%rsi,8),%r13
  164. xorq 5(%rbp,%rdi,8),%r14
  165. shrl $16,%ebx
  166. leaq (%rcx,%rcx,1),%rsi
  167. movzbl %bl,%ecx
  168. leaq (%rdx,%rdx,1),%rdi
  169. movzbl %bh,%edx
  170. xorq 4(%rbp,%rsi,8),%r15
  171. xorq 3(%rbp,%rdi,8),%r8
  172. movl 24+8+4(%rsp),%ebx
  173. leaq (%rcx,%rcx,1),%rsi
  174. movzbl %al,%ecx
  175. leaq (%rdx,%rdx,1),%rdi
  176. movzbl %ah,%edx
  177. xorq 2(%rbp,%rsi,8),%r9
  178. xorq 1(%rbp,%rdi,8),%r10
  179. shrl $16,%eax
  180. leaq (%rcx,%rcx,1),%rsi
  181. movzbl %al,%ecx
  182. leaq (%rdx,%rdx,1),%rdi
  183. movzbl %ah,%edx
  184. xorq 0(%rbp,%rsi,8),%r12
  185. xorq 7(%rbp,%rdi,8),%r13
  186. movl 32+8(%rsp),%eax
  187. leaq (%rcx,%rcx,1),%rsi
  188. movzbl %bl,%ecx
  189. leaq (%rdx,%rdx,1),%rdi
  190. movzbl %bh,%edx
  191. xorq 6(%rbp,%rsi,8),%r14
  192. xorq 5(%rbp,%rdi,8),%r15
  193. shrl $16,%ebx
  194. leaq (%rcx,%rcx,1),%rsi
  195. movzbl %bl,%ecx
  196. leaq (%rdx,%rdx,1),%rdi
  197. movzbl %bh,%edx
  198. xorq 4(%rbp,%rsi,8),%r8
  199. xorq 3(%rbp,%rdi,8),%r9
  200. movl 32+8+4(%rsp),%ebx
  201. leaq (%rcx,%rcx,1),%rsi
  202. movzbl %al,%ecx
  203. leaq (%rdx,%rdx,1),%rdi
  204. movzbl %ah,%edx
  205. xorq 2(%rbp,%rsi,8),%r10
  206. xorq 1(%rbp,%rdi,8),%r11
  207. shrl $16,%eax
  208. leaq (%rcx,%rcx,1),%rsi
  209. movzbl %al,%ecx
  210. leaq (%rdx,%rdx,1),%rdi
  211. movzbl %ah,%edx
  212. xorq 0(%rbp,%rsi,8),%r13
  213. xorq 7(%rbp,%rdi,8),%r14
  214. movl 40+8(%rsp),%eax
  215. leaq (%rcx,%rcx,1),%rsi
  216. movzbl %bl,%ecx
  217. leaq (%rdx,%rdx,1),%rdi
  218. movzbl %bh,%edx
  219. xorq 6(%rbp,%rsi,8),%r15
  220. xorq 5(%rbp,%rdi,8),%r8
  221. shrl $16,%ebx
  222. leaq (%rcx,%rcx,1),%rsi
  223. movzbl %bl,%ecx
  224. leaq (%rdx,%rdx,1),%rdi
  225. movzbl %bh,%edx
  226. xorq 4(%rbp,%rsi,8),%r9
  227. xorq 3(%rbp,%rdi,8),%r10
  228. movl 40+8+4(%rsp),%ebx
  229. leaq (%rcx,%rcx,1),%rsi
  230. movzbl %al,%ecx
  231. leaq (%rdx,%rdx,1),%rdi
  232. movzbl %ah,%edx
  233. xorq 2(%rbp,%rsi,8),%r11
  234. xorq 1(%rbp,%rdi,8),%r12
  235. shrl $16,%eax
  236. leaq (%rcx,%rcx,1),%rsi
  237. movzbl %al,%ecx
  238. leaq (%rdx,%rdx,1),%rdi
  239. movzbl %ah,%edx
  240. xorq 0(%rbp,%rsi,8),%r14
  241. xorq 7(%rbp,%rdi,8),%r15
  242. movl 48+8(%rsp),%eax
  243. leaq (%rcx,%rcx,1),%rsi
  244. movzbl %bl,%ecx
  245. leaq (%rdx,%rdx,1),%rdi
  246. movzbl %bh,%edx
  247. xorq 6(%rbp,%rsi,8),%r8
  248. xorq 5(%rbp,%rdi,8),%r9
  249. shrl $16,%ebx
  250. leaq (%rcx,%rcx,1),%rsi
  251. movzbl %bl,%ecx
  252. leaq (%rdx,%rdx,1),%rdi
  253. movzbl %bh,%edx
  254. xorq 4(%rbp,%rsi,8),%r10
  255. xorq 3(%rbp,%rdi,8),%r11
  256. movl 48+8+4(%rsp),%ebx
  257. leaq (%rcx,%rcx,1),%rsi
  258. movzbl %al,%ecx
  259. leaq (%rdx,%rdx,1),%rdi
  260. movzbl %ah,%edx
  261. xorq 2(%rbp,%rsi,8),%r12
  262. xorq 1(%rbp,%rdi,8),%r13
  263. shrl $16,%eax
  264. leaq (%rcx,%rcx,1),%rsi
  265. movzbl %al,%ecx
  266. leaq (%rdx,%rdx,1),%rdi
  267. movzbl %ah,%edx
  268. xorq 0(%rbp,%rsi,8),%r15
  269. xorq 7(%rbp,%rdi,8),%r8
  270. movl 56+8(%rsp),%eax
  271. leaq (%rcx,%rcx,1),%rsi
  272. movzbl %bl,%ecx
  273. leaq (%rdx,%rdx,1),%rdi
  274. movzbl %bh,%edx
  275. xorq 6(%rbp,%rsi,8),%r9
  276. xorq 5(%rbp,%rdi,8),%r10
  277. shrl $16,%ebx
  278. leaq (%rcx,%rcx,1),%rsi
  279. movzbl %bl,%ecx
  280. leaq (%rdx,%rdx,1),%rdi
  281. movzbl %bh,%edx
  282. xorq 4(%rbp,%rsi,8),%r11
  283. xorq 3(%rbp,%rdi,8),%r12
  284. movl 56+8+4(%rsp),%ebx
  285. leaq (%rcx,%rcx,1),%rsi
  286. movzbl %al,%ecx
  287. leaq (%rdx,%rdx,1),%rdi
  288. movzbl %ah,%edx
  289. xorq 2(%rbp,%rsi,8),%r13
  290. xorq 1(%rbp,%rdi,8),%r14
  291. movq %r8,0(%rsp)
  292. movq %r9,8(%rsp)
  293. movq %r10,16(%rsp)
  294. movq %r11,24(%rsp)
  295. movq %r12,32(%rsp)
  296. movq %r13,40(%rsp)
  297. movq %r14,48(%rsp)
  298. movq %r15,56(%rsp)
  299. shrl $16,%eax
  300. leaq (%rcx,%rcx,1),%rsi
  301. movzbl %al,%ecx
  302. leaq (%rdx,%rdx,1),%rdi
  303. movzbl %ah,%edx
  304. xorq 0(%rbp,%rsi,8),%r8
  305. xorq 7(%rbp,%rdi,8),%r9
  306. movl 64+0+8(%rsp),%eax
  307. leaq (%rcx,%rcx,1),%rsi
  308. movzbl %bl,%ecx
  309. leaq (%rdx,%rdx,1),%rdi
  310. movzbl %bh,%edx
  311. xorq 6(%rbp,%rsi,8),%r10
  312. xorq 5(%rbp,%rdi,8),%r11
  313. shrl $16,%ebx
  314. leaq (%rcx,%rcx,1),%rsi
  315. movzbl %bl,%ecx
  316. leaq (%rdx,%rdx,1),%rdi
  317. movzbl %bh,%edx
  318. xorq 4(%rbp,%rsi,8),%r12
  319. xorq 3(%rbp,%rdi,8),%r13
  320. movl 64+0+8+4(%rsp),%ebx
  321. leaq (%rcx,%rcx,1),%rsi
  322. movzbl %al,%ecx
  323. leaq (%rdx,%rdx,1),%rdi
  324. movzbl %ah,%edx
  325. xorq 2(%rbp,%rsi,8),%r14
  326. xorq 1(%rbp,%rdi,8),%r15
  327. shrl $16,%eax
  328. leaq (%rcx,%rcx,1),%rsi
  329. movzbl %al,%ecx
  330. leaq (%rdx,%rdx,1),%rdi
  331. movzbl %ah,%edx
  332. xorq 0(%rbp,%rsi,8),%r9
  333. xorq 7(%rbp,%rdi,8),%r10
  334. movl 64+8+8(%rsp),%eax
  335. leaq (%rcx,%rcx,1),%rsi
  336. movzbl %bl,%ecx
  337. leaq (%rdx,%rdx,1),%rdi
  338. movzbl %bh,%edx
  339. xorq 6(%rbp,%rsi,8),%r11
  340. xorq 5(%rbp,%rdi,8),%r12
  341. shrl $16,%ebx
  342. leaq (%rcx,%rcx,1),%rsi
  343. movzbl %bl,%ecx
  344. leaq (%rdx,%rdx,1),%rdi
  345. movzbl %bh,%edx
  346. xorq 4(%rbp,%rsi,8),%r13
  347. xorq 3(%rbp,%rdi,8),%r14
  348. movl 64+8+8+4(%rsp),%ebx
  349. leaq (%rcx,%rcx,1),%rsi
  350. movzbl %al,%ecx
  351. leaq (%rdx,%rdx,1),%rdi
  352. movzbl %ah,%edx
  353. xorq 2(%rbp,%rsi,8),%r15
  354. xorq 1(%rbp,%rdi,8),%r8
  355. shrl $16,%eax
  356. leaq (%rcx,%rcx,1),%rsi
  357. movzbl %al,%ecx
  358. leaq (%rdx,%rdx,1),%rdi
  359. movzbl %ah,%edx
  360. xorq 0(%rbp,%rsi,8),%r10
  361. xorq 7(%rbp,%rdi,8),%r11
  362. movl 64+16+8(%rsp),%eax
  363. leaq (%rcx,%rcx,1),%rsi
  364. movzbl %bl,%ecx
  365. leaq (%rdx,%rdx,1),%rdi
  366. movzbl %bh,%edx
  367. xorq 6(%rbp,%rsi,8),%r12
  368. xorq 5(%rbp,%rdi,8),%r13
  369. shrl $16,%ebx
  370. leaq (%rcx,%rcx,1),%rsi
  371. movzbl %bl,%ecx
  372. leaq (%rdx,%rdx,1),%rdi
  373. movzbl %bh,%edx
  374. xorq 4(%rbp,%rsi,8),%r14
  375. xorq 3(%rbp,%rdi,8),%r15
  376. movl 64+16+8+4(%rsp),%ebx
  377. leaq (%rcx,%rcx,1),%rsi
  378. movzbl %al,%ecx
  379. leaq (%rdx,%rdx,1),%rdi
  380. movzbl %ah,%edx
  381. xorq 2(%rbp,%rsi,8),%r8
  382. xorq 1(%rbp,%rdi,8),%r9
  383. shrl $16,%eax
  384. leaq (%rcx,%rcx,1),%rsi
  385. movzbl %al,%ecx
  386. leaq (%rdx,%rdx,1),%rdi
  387. movzbl %ah,%edx
  388. xorq 0(%rbp,%rsi,8),%r11
  389. xorq 7(%rbp,%rdi,8),%r12
  390. movl 64+24+8(%rsp),%eax
  391. leaq (%rcx,%rcx,1),%rsi
  392. movzbl %bl,%ecx
  393. leaq (%rdx,%rdx,1),%rdi
  394. movzbl %bh,%edx
  395. xorq 6(%rbp,%rsi,8),%r13
  396. xorq 5(%rbp,%rdi,8),%r14
  397. shrl $16,%ebx
  398. leaq (%rcx,%rcx,1),%rsi
  399. movzbl %bl,%ecx
  400. leaq (%rdx,%rdx,1),%rdi
  401. movzbl %bh,%edx
  402. xorq 4(%rbp,%rsi,8),%r15
  403. xorq 3(%rbp,%rdi,8),%r8
  404. movl 64+24+8+4(%rsp),%ebx
  405. leaq (%rcx,%rcx,1),%rsi
  406. movzbl %al,%ecx
  407. leaq (%rdx,%rdx,1),%rdi
  408. movzbl %ah,%edx
  409. xorq 2(%rbp,%rsi,8),%r9
  410. xorq 1(%rbp,%rdi,8),%r10
  411. shrl $16,%eax
  412. leaq (%rcx,%rcx,1),%rsi
  413. movzbl %al,%ecx
  414. leaq (%rdx,%rdx,1),%rdi
  415. movzbl %ah,%edx
  416. xorq 0(%rbp,%rsi,8),%r12
  417. xorq 7(%rbp,%rdi,8),%r13
  418. movl 64+32+8(%rsp),%eax
  419. leaq (%rcx,%rcx,1),%rsi
  420. movzbl %bl,%ecx
  421. leaq (%rdx,%rdx,1),%rdi
  422. movzbl %bh,%edx
  423. xorq 6(%rbp,%rsi,8),%r14
  424. xorq 5(%rbp,%rdi,8),%r15
  425. shrl $16,%ebx
  426. leaq (%rcx,%rcx,1),%rsi
  427. movzbl %bl,%ecx
  428. leaq (%rdx,%rdx,1),%rdi
  429. movzbl %bh,%edx
  430. xorq 4(%rbp,%rsi,8),%r8
  431. xorq 3(%rbp,%rdi,8),%r9
  432. movl 64+32+8+4(%rsp),%ebx
  433. leaq (%rcx,%rcx,1),%rsi
  434. movzbl %al,%ecx
  435. leaq (%rdx,%rdx,1),%rdi
  436. movzbl %ah,%edx
  437. xorq 2(%rbp,%rsi,8),%r10
  438. xorq 1(%rbp,%rdi,8),%r11
  439. shrl $16,%eax
  440. leaq (%rcx,%rcx,1),%rsi
  441. movzbl %al,%ecx
  442. leaq (%rdx,%rdx,1),%rdi
  443. movzbl %ah,%edx
  444. xorq 0(%rbp,%rsi,8),%r13
  445. xorq 7(%rbp,%rdi,8),%r14
  446. movl 64+40+8(%rsp),%eax
  447. leaq (%rcx,%rcx,1),%rsi
  448. movzbl %bl,%ecx
  449. leaq (%rdx,%rdx,1),%rdi
  450. movzbl %bh,%edx
  451. xorq 6(%rbp,%rsi,8),%r15
  452. xorq 5(%rbp,%rdi,8),%r8
  453. shrl $16,%ebx
  454. leaq (%rcx,%rcx,1),%rsi
  455. movzbl %bl,%ecx
  456. leaq (%rdx,%rdx,1),%rdi
  457. movzbl %bh,%edx
  458. xorq 4(%rbp,%rsi,8),%r9
  459. xorq 3(%rbp,%rdi,8),%r10
  460. movl 64+40+8+4(%rsp),%ebx
  461. leaq (%rcx,%rcx,1),%rsi
  462. movzbl %al,%ecx
  463. leaq (%rdx,%rdx,1),%rdi
  464. movzbl %ah,%edx
  465. xorq 2(%rbp,%rsi,8),%r11
  466. xorq 1(%rbp,%rdi,8),%r12
  467. shrl $16,%eax
  468. leaq (%rcx,%rcx,1),%rsi
  469. movzbl %al,%ecx
  470. leaq (%rdx,%rdx,1),%rdi
  471. movzbl %ah,%edx
  472. xorq 0(%rbp,%rsi,8),%r14
  473. xorq 7(%rbp,%rdi,8),%r15
  474. movl 64+48+8(%rsp),%eax
  475. leaq (%rcx,%rcx,1),%rsi
  476. movzbl %bl,%ecx
  477. leaq (%rdx,%rdx,1),%rdi
  478. movzbl %bh,%edx
  479. xorq 6(%rbp,%rsi,8),%r8
  480. xorq 5(%rbp,%rdi,8),%r9
  481. shrl $16,%ebx
  482. leaq (%rcx,%rcx,1),%rsi
  483. movzbl %bl,%ecx
  484. leaq (%rdx,%rdx,1),%rdi
  485. movzbl %bh,%edx
  486. xorq 4(%rbp,%rsi,8),%r10
  487. xorq 3(%rbp,%rdi,8),%r11
  488. movl 64+48+8+4(%rsp),%ebx
  489. leaq (%rcx,%rcx,1),%rsi
  490. movzbl %al,%ecx
  491. leaq (%rdx,%rdx,1),%rdi
  492. movzbl %ah,%edx
  493. xorq 2(%rbp,%rsi,8),%r12
  494. xorq 1(%rbp,%rdi,8),%r13
  495. shrl $16,%eax
  496. leaq (%rcx,%rcx,1),%rsi
  497. movzbl %al,%ecx
  498. leaq (%rdx,%rdx,1),%rdi
  499. movzbl %ah,%edx
  500. xorq 0(%rbp,%rsi,8),%r15
  501. xorq 7(%rbp,%rdi,8),%r8
  502. leaq (%rcx,%rcx,1),%rsi
  503. movzbl %bl,%ecx
  504. leaq (%rdx,%rdx,1),%rdi
  505. movzbl %bh,%edx
  506. xorq 6(%rbp,%rsi,8),%r9
  507. xorq 5(%rbp,%rdi,8),%r10
  508. shrl $16,%ebx
  509. leaq (%rcx,%rcx,1),%rsi
  510. movzbl %bl,%ecx
  511. leaq (%rdx,%rdx,1),%rdi
  512. movzbl %bh,%edx
  513. xorq 4(%rbp,%rsi,8),%r11
  514. xorq 3(%rbp,%rdi,8),%r12
  515. leaq (%rcx,%rcx,1),%rsi
  516. movzbl %al,%ecx
  517. leaq (%rdx,%rdx,1),%rdi
  518. movzbl %ah,%edx
  519. xorq 2(%rbp,%rsi,8),%r13
  520. xorq 1(%rbp,%rdi,8),%r14
  521. leaq 128(%rsp),%rbx
  522. movq 24(%rbx),%rsi
  523. addq $1,%rsi
  524. cmpq $10,%rsi
  525. je L$roundsdone
  526. movq %rsi,24(%rbx)
  527. movq %r8,64+0(%rsp)
  528. movq %r9,64+8(%rsp)
  529. movq %r10,64+16(%rsp)
  530. movq %r11,64+24(%rsp)
  531. movq %r12,64+32(%rsp)
  532. movq %r13,64+40(%rsp)
  533. movq %r14,64+48(%rsp)
  534. movq %r15,64+56(%rsp)
  535. jmp L$round
  536. .p2align 4
  537. L$roundsdone:
  538. movq 0(%rbx),%rdi
  539. movq 8(%rbx),%rsi
  540. movq 16(%rbx),%rax
  541. xorq 0(%rsi),%r8
  542. xorq 8(%rsi),%r9
  543. xorq 16(%rsi),%r10
  544. xorq 24(%rsi),%r11
  545. xorq 32(%rsi),%r12
  546. xorq 40(%rsi),%r13
  547. xorq 48(%rsi),%r14
  548. xorq 56(%rsi),%r15
  549. xorq 0(%rdi),%r8
  550. xorq 8(%rdi),%r9
  551. xorq 16(%rdi),%r10
  552. xorq 24(%rdi),%r11
  553. xorq 32(%rdi),%r12
  554. xorq 40(%rdi),%r13
  555. xorq 48(%rdi),%r14
  556. xorq 56(%rdi),%r15
  557. movq %r8,0(%rdi)
  558. movq %r9,8(%rdi)
  559. movq %r10,16(%rdi)
  560. movq %r11,24(%rdi)
  561. movq %r12,32(%rdi)
  562. movq %r13,40(%rdi)
  563. movq %r14,48(%rdi)
  564. movq %r15,56(%rdi)
  565. leaq 64(%rsi),%rsi
  566. subq $1,%rax
  567. jz L$alldone
  568. movq %rsi,8(%rbx)
  569. movq %rax,16(%rbx)
  570. jmp L$outerloop
  571. L$alldone:
  572. movq 32(%rbx),%rsi
  573. movq -48(%rsi),%r15
  574. movq -40(%rsi),%r14
  575. movq -32(%rsi),%r13
  576. movq -24(%rsi),%r12
  577. movq -16(%rsi),%rbp
  578. movq -8(%rsi),%rbx
  579. leaq (%rsi),%rsp
  580. L$epilogue:
  581. .byte 0xf3,0xc3
  582. .p2align 6
  583. L$table:
  584. .byte 24,24,96,24,192,120,48,216,24,24,96,24,192,120,48,216
  585. .byte 35,35,140,35,5,175,70,38,35,35,140,35,5,175,70,38
  586. .byte 198,198,63,198,126,249,145,184,198,198,63,198,126,249,145,184
  587. .byte 232,232,135,232,19,111,205,251,232,232,135,232,19,111,205,251
  588. .byte 135,135,38,135,76,161,19,203,135,135,38,135,76,161,19,203
  589. .byte 184,184,218,184,169,98,109,17,184,184,218,184,169,98,109,17
  590. .byte 1,1,4,1,8,5,2,9,1,1,4,1,8,5,2,9
  591. .byte 79,79,33,79,66,110,158,13,79,79,33,79,66,110,158,13
  592. .byte 54,54,216,54,173,238,108,155,54,54,216,54,173,238,108,155
  593. .byte 166,166,162,166,89,4,81,255,166,166,162,166,89,4,81,255
  594. .byte 210,210,111,210,222,189,185,12,210,210,111,210,222,189,185,12
  595. .byte 245,245,243,245,251,6,247,14,245,245,243,245,251,6,247,14
  596. .byte 121,121,249,121,239,128,242,150,121,121,249,121,239,128,242,150
  597. .byte 111,111,161,111,95,206,222,48,111,111,161,111,95,206,222,48
  598. .byte 145,145,126,145,252,239,63,109,145,145,126,145,252,239,63,109
  599. .byte 82,82,85,82,170,7,164,248,82,82,85,82,170,7,164,248
  600. .byte 96,96,157,96,39,253,192,71,96,96,157,96,39,253,192,71
  601. .byte 188,188,202,188,137,118,101,53,188,188,202,188,137,118,101,53
  602. .byte 155,155,86,155,172,205,43,55,155,155,86,155,172,205,43,55
  603. .byte 142,142,2,142,4,140,1,138,142,142,2,142,4,140,1,138
  604. .byte 163,163,182,163,113,21,91,210,163,163,182,163,113,21,91,210
  605. .byte 12,12,48,12,96,60,24,108,12,12,48,12,96,60,24,108
  606. .byte 123,123,241,123,255,138,246,132,123,123,241,123,255,138,246,132
  607. .byte 53,53,212,53,181,225,106,128,53,53,212,53,181,225,106,128
  608. .byte 29,29,116,29,232,105,58,245,29,29,116,29,232,105,58,245
  609. .byte 224,224,167,224,83,71,221,179,224,224,167,224,83,71,221,179
  610. .byte 215,215,123,215,246,172,179,33,215,215,123,215,246,172,179,33
  611. .byte 194,194,47,194,94,237,153,156,194,194,47,194,94,237,153,156
  612. .byte 46,46,184,46,109,150,92,67,46,46,184,46,109,150,92,67
  613. .byte 75,75,49,75,98,122,150,41,75,75,49,75,98,122,150,41
  614. .byte 254,254,223,254,163,33,225,93,254,254,223,254,163,33,225,93
  615. .byte 87,87,65,87,130,22,174,213,87,87,65,87,130,22,174,213
  616. .byte 21,21,84,21,168,65,42,189,21,21,84,21,168,65,42,189
  617. .byte 119,119,193,119,159,182,238,232,119,119,193,119,159,182,238,232
  618. .byte 55,55,220,55,165,235,110,146,55,55,220,55,165,235,110,146
  619. .byte 229,229,179,229,123,86,215,158,229,229,179,229,123,86,215,158
  620. .byte 159,159,70,159,140,217,35,19,159,159,70,159,140,217,35,19
  621. .byte 240,240,231,240,211,23,253,35,240,240,231,240,211,23,253,35
  622. .byte 74,74,53,74,106,127,148,32,74,74,53,74,106,127,148,32
  623. .byte 218,218,79,218,158,149,169,68,218,218,79,218,158,149,169,68
  624. .byte 88,88,125,88,250,37,176,162,88,88,125,88,250,37,176,162
  625. .byte 201,201,3,201,6,202,143,207,201,201,3,201,6,202,143,207
  626. .byte 41,41,164,41,85,141,82,124,41,41,164,41,85,141,82,124
  627. .byte 10,10,40,10,80,34,20,90,10,10,40,10,80,34,20,90
  628. .byte 177,177,254,177,225,79,127,80,177,177,254,177,225,79,127,80
  629. .byte 160,160,186,160,105,26,93,201,160,160,186,160,105,26,93,201
  630. .byte 107,107,177,107,127,218,214,20,107,107,177,107,127,218,214,20
  631. .byte 133,133,46,133,92,171,23,217,133,133,46,133,92,171,23,217
  632. .byte 189,189,206,189,129,115,103,60,189,189,206,189,129,115,103,60
  633. .byte 93,93,105,93,210,52,186,143,93,93,105,93,210,52,186,143
  634. .byte 16,16,64,16,128,80,32,144,16,16,64,16,128,80,32,144
  635. .byte 244,244,247,244,243,3,245,7,244,244,247,244,243,3,245,7
  636. .byte 203,203,11,203,22,192,139,221,203,203,11,203,22,192,139,221
  637. .byte 62,62,248,62,237,198,124,211,62,62,248,62,237,198,124,211
  638. .byte 5,5,20,5,40,17,10,45,5,5,20,5,40,17,10,45
  639. .byte 103,103,129,103,31,230,206,120,103,103,129,103,31,230,206,120
  640. .byte 228,228,183,228,115,83,213,151,228,228,183,228,115,83,213,151
  641. .byte 39,39,156,39,37,187,78,2,39,39,156,39,37,187,78,2
  642. .byte 65,65,25,65,50,88,130,115,65,65,25,65,50,88,130,115
  643. .byte 139,139,22,139,44,157,11,167,139,139,22,139,44,157,11,167
  644. .byte 167,167,166,167,81,1,83,246,167,167,166,167,81,1,83,246
  645. .byte 125,125,233,125,207,148,250,178,125,125,233,125,207,148,250,178
  646. .byte 149,149,110,149,220,251,55,73,149,149,110,149,220,251,55,73
  647. .byte 216,216,71,216,142,159,173,86,216,216,71,216,142,159,173,86
  648. .byte 251,251,203,251,139,48,235,112,251,251,203,251,139,48,235,112
  649. .byte 238,238,159,238,35,113,193,205,238,238,159,238,35,113,193,205
  650. .byte 124,124,237,124,199,145,248,187,124,124,237,124,199,145,248,187
  651. .byte 102,102,133,102,23,227,204,113,102,102,133,102,23,227,204,113
  652. .byte 221,221,83,221,166,142,167,123,221,221,83,221,166,142,167,123
  653. .byte 23,23,92,23,184,75,46,175,23,23,92,23,184,75,46,175
  654. .byte 71,71,1,71,2,70,142,69,71,71,1,71,2,70,142,69
  655. .byte 158,158,66,158,132,220,33,26,158,158,66,158,132,220,33,26
  656. .byte 202,202,15,202,30,197,137,212,202,202,15,202,30,197,137,212
  657. .byte 45,45,180,45,117,153,90,88,45,45,180,45,117,153,90,88
  658. .byte 191,191,198,191,145,121,99,46,191,191,198,191,145,121,99,46
  659. .byte 7,7,28,7,56,27,14,63,7,7,28,7,56,27,14,63
  660. .byte 173,173,142,173,1,35,71,172,173,173,142,173,1,35,71,172
  661. .byte 90,90,117,90,234,47,180,176,90,90,117,90,234,47,180,176
  662. .byte 131,131,54,131,108,181,27,239,131,131,54,131,108,181,27,239
  663. .byte 51,51,204,51,133,255,102,182,51,51,204,51,133,255,102,182
  664. .byte 99,99,145,99,63,242,198,92,99,99,145,99,63,242,198,92
  665. .byte 2,2,8,2,16,10,4,18,2,2,8,2,16,10,4,18
  666. .byte 170,170,146,170,57,56,73,147,170,170,146,170,57,56,73,147
  667. .byte 113,113,217,113,175,168,226,222,113,113,217,113,175,168,226,222
  668. .byte 200,200,7,200,14,207,141,198,200,200,7,200,14,207,141,198
  669. .byte 25,25,100,25,200,125,50,209,25,25,100,25,200,125,50,209
  670. .byte 73,73,57,73,114,112,146,59,73,73,57,73,114,112,146,59
  671. .byte 217,217,67,217,134,154,175,95,217,217,67,217,134,154,175,95
  672. .byte 242,242,239,242,195,29,249,49,242,242,239,242,195,29,249,49
  673. .byte 227,227,171,227,75,72,219,168,227,227,171,227,75,72,219,168
  674. .byte 91,91,113,91,226,42,182,185,91,91,113,91,226,42,182,185
  675. .byte 136,136,26,136,52,146,13,188,136,136,26,136,52,146,13,188
  676. .byte 154,154,82,154,164,200,41,62,154,154,82,154,164,200,41,62
  677. .byte 38,38,152,38,45,190,76,11,38,38,152,38,45,190,76,11
  678. .byte 50,50,200,50,141,250,100,191,50,50,200,50,141,250,100,191
  679. .byte 176,176,250,176,233,74,125,89,176,176,250,176,233,74,125,89
  680. .byte 233,233,131,233,27,106,207,242,233,233,131,233,27,106,207,242
  681. .byte 15,15,60,15,120,51,30,119,15,15,60,15,120,51,30,119
  682. .byte 213,213,115,213,230,166,183,51,213,213,115,213,230,166,183,51
  683. .byte 128,128,58,128,116,186,29,244,128,128,58,128,116,186,29,244
  684. .byte 190,190,194,190,153,124,97,39,190,190,194,190,153,124,97,39
  685. .byte 205,205,19,205,38,222,135,235,205,205,19,205,38,222,135,235
  686. .byte 52,52,208,52,189,228,104,137,52,52,208,52,189,228,104,137
  687. .byte 72,72,61,72,122,117,144,50,72,72,61,72,122,117,144,50
  688. .byte 255,255,219,255,171,36,227,84,255,255,219,255,171,36,227,84
  689. .byte 122,122,245,122,247,143,244,141,122,122,245,122,247,143,244,141
  690. .byte 144,144,122,144,244,234,61,100,144,144,122,144,244,234,61,100
  691. .byte 95,95,97,95,194,62,190,157,95,95,97,95,194,62,190,157
  692. .byte 32,32,128,32,29,160,64,61,32,32,128,32,29,160,64,61
  693. .byte 104,104,189,104,103,213,208,15,104,104,189,104,103,213,208,15
  694. .byte 26,26,104,26,208,114,52,202,26,26,104,26,208,114,52,202
  695. .byte 174,174,130,174,25,44,65,183,174,174,130,174,25,44,65,183
  696. .byte 180,180,234,180,201,94,117,125,180,180,234,180,201,94,117,125
  697. .byte 84,84,77,84,154,25,168,206,84,84,77,84,154,25,168,206
  698. .byte 147,147,118,147,236,229,59,127,147,147,118,147,236,229,59,127
  699. .byte 34,34,136,34,13,170,68,47,34,34,136,34,13,170,68,47
  700. .byte 100,100,141,100,7,233,200,99,100,100,141,100,7,233,200,99
  701. .byte 241,241,227,241,219,18,255,42,241,241,227,241,219,18,255,42
  702. .byte 115,115,209,115,191,162,230,204,115,115,209,115,191,162,230,204
  703. .byte 18,18,72,18,144,90,36,130,18,18,72,18,144,90,36,130
  704. .byte 64,64,29,64,58,93,128,122,64,64,29,64,58,93,128,122
  705. .byte 8,8,32,8,64,40,16,72,8,8,32,8,64,40,16,72
  706. .byte 195,195,43,195,86,232,155,149,195,195,43,195,86,232,155,149
  707. .byte 236,236,151,236,51,123,197,223,236,236,151,236,51,123,197,223
  708. .byte 219,219,75,219,150,144,171,77,219,219,75,219,150,144,171,77
  709. .byte 161,161,190,161,97,31,95,192,161,161,190,161,97,31,95,192
  710. .byte 141,141,14,141,28,131,7,145,141,141,14,141,28,131,7,145
  711. .byte 61,61,244,61,245,201,122,200,61,61,244,61,245,201,122,200
  712. .byte 151,151,102,151,204,241,51,91,151,151,102,151,204,241,51,91
  713. .byte 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
  714. .byte 207,207,27,207,54,212,131,249,207,207,27,207,54,212,131,249
  715. .byte 43,43,172,43,69,135,86,110,43,43,172,43,69,135,86,110
  716. .byte 118,118,197,118,151,179,236,225,118,118,197,118,151,179,236,225
  717. .byte 130,130,50,130,100,176,25,230,130,130,50,130,100,176,25,230
  718. .byte 214,214,127,214,254,169,177,40,214,214,127,214,254,169,177,40
  719. .byte 27,27,108,27,216,119,54,195,27,27,108,27,216,119,54,195
  720. .byte 181,181,238,181,193,91,119,116,181,181,238,181,193,91,119,116
  721. .byte 175,175,134,175,17,41,67,190,175,175,134,175,17,41,67,190
  722. .byte 106,106,181,106,119,223,212,29,106,106,181,106,119,223,212,29
  723. .byte 80,80,93,80,186,13,160,234,80,80,93,80,186,13,160,234
  724. .byte 69,69,9,69,18,76,138,87,69,69,9,69,18,76,138,87
  725. .byte 243,243,235,243,203,24,251,56,243,243,235,243,203,24,251,56
  726. .byte 48,48,192,48,157,240,96,173,48,48,192,48,157,240,96,173
  727. .byte 239,239,155,239,43,116,195,196,239,239,155,239,43,116,195,196
  728. .byte 63,63,252,63,229,195,126,218,63,63,252,63,229,195,126,218
  729. .byte 85,85,73,85,146,28,170,199,85,85,73,85,146,28,170,199
  730. .byte 162,162,178,162,121,16,89,219,162,162,178,162,121,16,89,219
  731. .byte 234,234,143,234,3,101,201,233,234,234,143,234,3,101,201,233
  732. .byte 101,101,137,101,15,236,202,106,101,101,137,101,15,236,202,106
  733. .byte 186,186,210,186,185,104,105,3,186,186,210,186,185,104,105,3
  734. .byte 47,47,188,47,101,147,94,74,47,47,188,47,101,147,94,74
  735. .byte 192,192,39,192,78,231,157,142,192,192,39,192,78,231,157,142
  736. .byte 222,222,95,222,190,129,161,96,222,222,95,222,190,129,161,96
  737. .byte 28,28,112,28,224,108,56,252,28,28,112,28,224,108,56,252
  738. .byte 253,253,211,253,187,46,231,70,253,253,211,253,187,46,231,70
  739. .byte 77,77,41,77,82,100,154,31,77,77,41,77,82,100,154,31
  740. .byte 146,146,114,146,228,224,57,118,146,146,114,146,228,224,57,118
  741. .byte 117,117,201,117,143,188,234,250,117,117,201,117,143,188,234,250
  742. .byte 6,6,24,6,48,30,12,54,6,6,24,6,48,30,12,54
  743. .byte 138,138,18,138,36,152,9,174,138,138,18,138,36,152,9,174
  744. .byte 178,178,242,178,249,64,121,75,178,178,242,178,249,64,121,75
  745. .byte 230,230,191,230,99,89,209,133,230,230,191,230,99,89,209,133
  746. .byte 14,14,56,14,112,54,28,126,14,14,56,14,112,54,28,126
  747. .byte 31,31,124,31,248,99,62,231,31,31,124,31,248,99,62,231
  748. .byte 98,98,149,98,55,247,196,85,98,98,149,98,55,247,196,85
  749. .byte 212,212,119,212,238,163,181,58,212,212,119,212,238,163,181,58
  750. .byte 168,168,154,168,41,50,77,129,168,168,154,168,41,50,77,129
  751. .byte 150,150,98,150,196,244,49,82,150,150,98,150,196,244,49,82
  752. .byte 249,249,195,249,155,58,239,98,249,249,195,249,155,58,239,98
  753. .byte 197,197,51,197,102,246,151,163,197,197,51,197,102,246,151,163
  754. .byte 37,37,148,37,53,177,74,16,37,37,148,37,53,177,74,16
  755. .byte 89,89,121,89,242,32,178,171,89,89,121,89,242,32,178,171
  756. .byte 132,132,42,132,84,174,21,208,132,132,42,132,84,174,21,208
  757. .byte 114,114,213,114,183,167,228,197,114,114,213,114,183,167,228,197
  758. .byte 57,57,228,57,213,221,114,236,57,57,228,57,213,221,114,236
  759. .byte 76,76,45,76,90,97,152,22,76,76,45,76,90,97,152,22
  760. .byte 94,94,101,94,202,59,188,148,94,94,101,94,202,59,188,148
  761. .byte 120,120,253,120,231,133,240,159,120,120,253,120,231,133,240,159
  762. .byte 56,56,224,56,221,216,112,229,56,56,224,56,221,216,112,229
  763. .byte 140,140,10,140,20,134,5,152,140,140,10,140,20,134,5,152
  764. .byte 209,209,99,209,198,178,191,23,209,209,99,209,198,178,191,23
  765. .byte 165,165,174,165,65,11,87,228,165,165,174,165,65,11,87,228
  766. .byte 226,226,175,226,67,77,217,161,226,226,175,226,67,77,217,161
  767. .byte 97,97,153,97,47,248,194,78,97,97,153,97,47,248,194,78
  768. .byte 179,179,246,179,241,69,123,66,179,179,246,179,241,69,123,66
  769. .byte 33,33,132,33,21,165,66,52,33,33,132,33,21,165,66,52
  770. .byte 156,156,74,156,148,214,37,8,156,156,74,156,148,214,37,8
  771. .byte 30,30,120,30,240,102,60,238,30,30,120,30,240,102,60,238
  772. .byte 67,67,17,67,34,82,134,97,67,67,17,67,34,82,134,97
  773. .byte 199,199,59,199,118,252,147,177,199,199,59,199,118,252,147,177
  774. .byte 252,252,215,252,179,43,229,79,252,252,215,252,179,43,229,79
  775. .byte 4,4,16,4,32,20,8,36,4,4,16,4,32,20,8,36
  776. .byte 81,81,89,81,178,8,162,227,81,81,89,81,178,8,162,227
  777. .byte 153,153,94,153,188,199,47,37,153,153,94,153,188,199,47,37
  778. .byte 109,109,169,109,79,196,218,34,109,109,169,109,79,196,218,34
  779. .byte 13,13,52,13,104,57,26,101,13,13,52,13,104,57,26,101
  780. .byte 250,250,207,250,131,53,233,121,250,250,207,250,131,53,233,121
  781. .byte 223,223,91,223,182,132,163,105,223,223,91,223,182,132,163,105
  782. .byte 126,126,229,126,215,155,252,169,126,126,229,126,215,155,252,169
  783. .byte 36,36,144,36,61,180,72,25,36,36,144,36,61,180,72,25
  784. .byte 59,59,236,59,197,215,118,254,59,59,236,59,197,215,118,254
  785. .byte 171,171,150,171,49,61,75,154,171,171,150,171,49,61,75,154
  786. .byte 206,206,31,206,62,209,129,240,206,206,31,206,62,209,129,240
  787. .byte 17,17,68,17,136,85,34,153,17,17,68,17,136,85,34,153
  788. .byte 143,143,6,143,12,137,3,131,143,143,6,143,12,137,3,131
  789. .byte 78,78,37,78,74,107,156,4,78,78,37,78,74,107,156,4
  790. .byte 183,183,230,183,209,81,115,102,183,183,230,183,209,81,115,102
  791. .byte 235,235,139,235,11,96,203,224,235,235,139,235,11,96,203,224
  792. .byte 60,60,240,60,253,204,120,193,60,60,240,60,253,204,120,193
  793. .byte 129,129,62,129,124,191,31,253,129,129,62,129,124,191,31,253
  794. .byte 148,148,106,148,212,254,53,64,148,148,106,148,212,254,53,64
  795. .byte 247,247,251,247,235,12,243,28,247,247,251,247,235,12,243,28
  796. .byte 185,185,222,185,161,103,111,24,185,185,222,185,161,103,111,24
  797. .byte 19,19,76,19,152,95,38,139,19,19,76,19,152,95,38,139
  798. .byte 44,44,176,44,125,156,88,81,44,44,176,44,125,156,88,81
  799. .byte 211,211,107,211,214,184,187,5,211,211,107,211,214,184,187,5
  800. .byte 231,231,187,231,107,92,211,140,231,231,187,231,107,92,211,140
  801. .byte 110,110,165,110,87,203,220,57,110,110,165,110,87,203,220,57
  802. .byte 196,196,55,196,110,243,149,170,196,196,55,196,110,243,149,170
  803. .byte 3,3,12,3,24,15,6,27,3,3,12,3,24,15,6,27
  804. .byte 86,86,69,86,138,19,172,220,86,86,69,86,138,19,172,220
  805. .byte 68,68,13,68,26,73,136,94,68,68,13,68,26,73,136,94
  806. .byte 127,127,225,127,223,158,254,160,127,127,225,127,223,158,254,160
  807. .byte 169,169,158,169,33,55,79,136,169,169,158,169,33,55,79,136
  808. .byte 42,42,168,42,77,130,84,103,42,42,168,42,77,130,84,103
  809. .byte 187,187,214,187,177,109,107,10,187,187,214,187,177,109,107,10
  810. .byte 193,193,35,193,70,226,159,135,193,193,35,193,70,226,159,135
  811. .byte 83,83,81,83,162,2,166,241,83,83,81,83,162,2,166,241
  812. .byte 220,220,87,220,174,139,165,114,220,220,87,220,174,139,165,114
  813. .byte 11,11,44,11,88,39,22,83,11,11,44,11,88,39,22,83
  814. .byte 157,157,78,157,156,211,39,1,157,157,78,157,156,211,39,1
  815. .byte 108,108,173,108,71,193,216,43,108,108,173,108,71,193,216,43
  816. .byte 49,49,196,49,149,245,98,164,49,49,196,49,149,245,98,164
  817. .byte 116,116,205,116,135,185,232,243,116,116,205,116,135,185,232,243
  818. .byte 246,246,255,246,227,9,241,21,246,246,255,246,227,9,241,21
  819. .byte 70,70,5,70,10,67,140,76,70,70,5,70,10,67,140,76
  820. .byte 172,172,138,172,9,38,69,165,172,172,138,172,9,38,69,165
  821. .byte 137,137,30,137,60,151,15,181,137,137,30,137,60,151,15,181
  822. .byte 20,20,80,20,160,68,40,180,20,20,80,20,160,68,40,180
  823. .byte 225,225,163,225,91,66,223,186,225,225,163,225,91,66,223,186
  824. .byte 22,22,88,22,176,78,44,166,22,22,88,22,176,78,44,166
  825. .byte 58,58,232,58,205,210,116,247,58,58,232,58,205,210,116,247
  826. .byte 105,105,185,105,111,208,210,6,105,105,185,105,111,208,210,6
  827. .byte 9,9,36,9,72,45,18,65,9,9,36,9,72,45,18,65
  828. .byte 112,112,221,112,167,173,224,215,112,112,221,112,167,173,224,215
  829. .byte 182,182,226,182,217,84,113,111,182,182,226,182,217,84,113,111
  830. .byte 208,208,103,208,206,183,189,30,208,208,103,208,206,183,189,30
  831. .byte 237,237,147,237,59,126,199,214,237,237,147,237,59,126,199,214
  832. .byte 204,204,23,204,46,219,133,226,204,204,23,204,46,219,133,226
  833. .byte 66,66,21,66,42,87,132,104,66,66,21,66,42,87,132,104
  834. .byte 152,152,90,152,180,194,45,44,152,152,90,152,180,194,45,44
  835. .byte 164,164,170,164,73,14,85,237,164,164,170,164,73,14,85,237
  836. .byte 40,40,160,40,93,136,80,117,40,40,160,40,93,136,80,117
  837. .byte 92,92,109,92,218,49,184,134,92,92,109,92,218,49,184,134
  838. .byte 248,248,199,248,147,63,237,107,248,248,199,248,147,63,237,107
  839. .byte 134,134,34,134,68,164,17,194,134,134,34,134,68,164,17,194
  840. .byte 24,35,198,232,135,184,1,79
  841. .byte 54,166,210,245,121,111,145,82
  842. .byte 96,188,155,142,163,12,123,53
  843. .byte 29,224,215,194,46,75,254,87
  844. .byte 21,119,55,229,159,240,74,218
  845. .byte 88,201,41,10,177,160,107,133
  846. .byte 189,93,16,244,203,62,5,103
  847. .byte 228,39,65,139,167,125,149,216
  848. .byte 251,238,124,102,221,23,71,158
  849. .byte 202,45,191,7,173,90,131,51