wp-x86_64.s 29 KB

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