Print this page
first pass
Split |
Close |
Expand all |
Collapse all |
--- old/usr/src/common/crypto/des/sun4u/des_crypt_asm.s
+++ new/usr/src/common/crypto/des/sun4u/des_crypt_asm.s
1 1 /*
2 2 * CDDL HEADER START
3 3 *
4 4 * The contents of this file are subject to the terms of the
5 5 * Common Development and Distribution License, Version 1.0 only
6 6 * (the "License"). You may not use this file except in compliance
7 7 * with the License.
8 8 *
9 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
10 10 * or http://www.opensolaris.org/os/licensing.
11 11 * See the License for the specific language governing permissions
12 12 * and limitations under the License.
13 13 *
14 14 * When distributing Covered Code, include this CDDL HEADER in each
15 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
16 16 * If applicable, add the following below this CDDL HEADER, with the
17 17 * fields enclosed by brackets "[]" replaced with your own identifying
18 18 * information: Portions Copyright [yyyy] [name of copyright owner]
19 19 *
20 20 * CDDL HEADER END
21 21 */
22 22 /*
23 23 * Copyright 2004 Sun Microsystems, Inc. All rights reserved.
24 24 * Use is subject to license terms.
25 25 */
26 26
27 27 #pragma ident "%Z%%M% %I% %E% SMI"
28 28
29 29 /*
30 30 * Unified version for both position independent and non position independent
31 31 * for both v8plus and v9
32 32 * compile with:
33 33 *
↓ open down ↓ |
33 lines elided |
↑ open up ↑ |
34 34 * cc -c -xarch=v8plus des_crypt_asm.s or
35 35 * cc -c -arch=v9 des_crypt_asm.s
36 36 * for kernel use (no -KPIC)
37 37 *
38 38 * and with
39 39 *
40 40 * cc -c -xarch=v8plus -KPIC -DPIC des_crypt_asm.s or
41 41 * cc -c -arch=v9 -KPIC -DPIC des_crypt_asm.s
42 42 * for .so use
43 43 *
44 - * EXPORT DELETE START
45 - *
46 44 * The tables were generated by a C program, compiled into the C version
47 45 * of this function, from which a .s was generated by the C compiler and
48 46 * that .s was used as a starting point for this one, in particular for
49 47 * the data definitions. It is important, though that the tables and
50 48 * the code both remain in the text section and in this order, otherwise,
51 49 * at least on UltraSparc-II processors, collisions in the E-cache are
52 50 * highly probable between the code and the data it is using which can
53 51 * result in up to 40% performance loss
54 52 *
55 53 * For a description of the DES algithm, see NIST publication FIPS PUB 46-3
56 54 *
57 55 * In this implementation, the 16 rounds of DES are carried out by unrolling
58 56 * a loop that computes two rounds. For those 2 rounds, the two parts of
59 57 * the intermediate variable (L and R in the FIPS pub) are kept in their
60 58 * extended forms (i.e. in the one after applying the transformation E),
61 59 * with the appropriate bits repeated so that bits needed for the S-box
62 60 * lookups are in consecutive positions. So the bits of the L (or R)
63 61 * variable appear in the following order (X represents a bit that is not
64 62 * from L (R), these bits are always 0):
65 63 * 32 1 2 3 4 5 X X X X X X X X 4 5
66 64 * 6 7 8 9 8 9 10 11 12 13 12 13 14 15 16 17
67 65 * 16 17 18 19 20 21 X X X X X 20 21 22 23 24
68 66 * 25 24 25 26 27 28 29 28 29 30 31 32 1 X X X
69 67 * This arrangement makes it possible that 3 of the 8 S-box indices
70 68 * can be extracted by a single instruction: srlx by 55 for the S1 index,
71 69 * srl by 23 for the S5 index and and by 0x1f80 for the S8 index. The rest
72 70 * of the indices requires two operations, a shift and an and.
↓ open down ↓ |
17 lines elided |
↑ open up ↑ |
73 71 * The tables for the S-boxes are computed in such a way that when or-ed
74 72 * together, they give the result of the S-box, P and E computations.
75 73 * Also, the key schedule bits are computed to follow this bit-scheme.
76 74 * The initial permutation tables are also computed to produce this
77 75 * bit distribution and the final permutation works from these, too.
78 76 *
79 77 * The end of each round is overlapped with the beginning of the next
80 78 * one since after the first 6 S-box lookups all the bits necessary
81 79 * for one S-box lookup in the next round can be computed (by xor-ing
82 80 * the next key schedule item to the partially computed next R).
83 - *
84 - * EXPORT DELETE END
85 81 */
86 82
87 83 #if defined(lint) || defined(__lint)
88 84 /* LINTED */
89 85 /* Nothing to be linted in this file, its pure assembly source */
90 86 #else /* lint || __lint */
91 87
92 88 .register %g2,#scratch
93 89 .register %g3,#scratch
94 90
95 91 .file "encrypt_asm.S"
96 92
97 93 .section ".text",#alloc
98 94 .align 32
99 95
100 -/* EXPORT DELETE START */
101 -
102 96 !
103 97 ! CONSTANT POOL
104 98 !
105 99
106 100 des_sbox_table:
107 101 .word 5121
108 102 .word 1073872896
109 103 .word 0
110 104 .word 0
111 105 .word 1
112 106 .word 1073741824
113 107 .word 5121
114 108 .word 1073872928
115 109 .word 5121
116 110 .word 1073741856
117 111 .word 1
118 112 .word 1073872928
119 113 .word 0
120 114 .word 32
121 115 .word 1
122 116 .word 1073741824
123 117 .word 0
124 118 .word 131072
125 119 .word 5121
126 120 .word 1073872896
127 121 .word 5121
128 122 .word 1073872928
129 123 .word 0
130 124 .word 131072
131 125 .word 5120
132 126 .word 131104
133 127 .word 5121
134 128 .word 1073741856
135 129 .word 5120
136 130 .word 0
137 131 .word 0
138 132 .word 32
139 133 .word 0
140 134 .word 131104
141 135 .word 5120
142 136 .word 131072
143 137 .word 5120
144 138 .word 131072
145 139 .word 1
146 140 .word 1073872896
147 141 .word 1
148 142 .word 1073872896
149 143 .word 5121
150 144 .word 1073741824
151 145 .word 5121
152 146 .word 1073741824
153 147 .word 5120
154 148 .word 131104
155 149 .word 1
156 150 .word 1073741856
157 151 .word 5120
158 152 .word 32
159 153 .word 5120
160 154 .word 32
161 155 .word 1
162 156 .word 1073741856
163 157 .word 0
164 158 .word 0
165 159 .word 0
166 160 .word 131104
167 161 .word 1
168 162 .word 1073872928
169 163 .word 5120
170 164 .word 0
171 165 .word 1
172 166 .word 1073741824
173 167 .word 5121
174 168 .word 1073872928
175 169 .word 0
176 170 .word 32
177 171 .word 5121
178 172 .word 1073741824
179 173 .word 5121
180 174 .word 1073872896
181 175 .word 5120
182 176 .word 0
183 177 .word 5120
184 178 .word 0
185 179 .word 0
186 180 .word 131072
187 181 .word 5121
188 182 .word 1073741856
189 183 .word 1
190 184 .word 1073741824
191 185 .word 1
192 186 .word 1073872896
193 187 .word 5120
194 188 .word 32
195 189 .word 0
196 190 .word 131072
197 191 .word 0
198 192 .word 32
199 193 .word 5120
200 194 .word 131104
201 195 .word 1
202 196 .word 1073872928
203 197 .word 5121
204 198 .word 1073872928
205 199 .word 1
206 200 .word 1073741856
207 201 .word 5121
208 202 .word 1073741824
209 203 .word 5120
210 204 .word 131104
211 205 .word 5120
212 206 .word 32
213 207 .word 0
214 208 .word 131104
215 209 .word 1
216 210 .word 1073872928
217 211 .word 5121
218 212 .word 1073872896
219 213 .word 0
220 214 .word 131104
221 215 .word 5120
222 216 .word 131072
223 217 .word 5120
224 218 .word 131072
225 219 .word 0
226 220 .word 0
227 221 .word 1
228 222 .word 1073741856
229 223 .word 1
230 224 .word 1073872896
231 225 .word 0
232 226 .word 0
233 227 .word 5121
234 228 .word 1073741856
235 229 .word 536870992
236 230 .word 536872192
237 231 .word 536870912
238 232 .word 536870912
239 233 .word 0
240 234 .word 536870912
241 235 .word 80
242 236 .word 536872192
243 237 .word 80
244 238 .word 0
245 239 .word 0
246 240 .word 1280
247 241 .word 536870992
248 242 .word 1280
249 243 .word 536870912
250 244 .word 536872192
251 245 .word 536870912
252 246 .word 1280
253 247 .word 536870992
254 248 .word 536872192
255 249 .word 536870992
256 250 .word 536870912
257 251 .word 536870912
258 252 .word 0
259 253 .word 536870912
260 254 .word 536870912
261 255 .word 80
262 256 .word 0
263 257 .word 0
264 258 .word 1280
265 259 .word 536870992
266 260 .word 1280
267 261 .word 80
268 262 .word 536870912
269 263 .word 80
270 264 .word 1280
271 265 .word 536870912
272 266 .word 536872192
273 267 .word 0
274 268 .word 0
275 269 .word 536870912
276 270 .word 0
277 271 .word 0
278 272 .word 536870912
279 273 .word 80
280 274 .word 536872192
281 275 .word 536870992
282 276 .word 0
283 277 .word 80
284 278 .word 1280
285 279 .word 536870912
286 280 .word 1280
287 281 .word 0
288 282 .word 0
289 283 .word 80
290 284 .word 536870912
291 285 .word 0
292 286 .word 536872192
293 287 .word 536870992
294 288 .word 536870912
295 289 .word 536870992
296 290 .word 0
297 291 .word 0
298 292 .word 536872192
299 293 .word 0
300 294 .word 0
301 295 .word 80
302 296 .word 536872192
303 297 .word 536870992
304 298 .word 1280
305 299 .word 80
306 300 .word 0
307 301 .word 536870912
308 302 .word 536872192
309 303 .word 536870992
310 304 .word 0
311 305 .word 536870992
312 306 .word 536870912
313 307 .word 0
314 308 .word 536870912
315 309 .word 536870992
316 310 .word 0
317 311 .word 536870912
318 312 .word 536870912
319 313 .word 0
320 314 .word 1280
321 315 .word 536870992
322 316 .word 536872192
323 317 .word 80
324 318 .word 536872192
325 319 .word 0
326 320 .word 1280
327 321 .word 0
328 322 .word 536870912
329 323 .word 536870912
330 324 .word 0
331 325 .word 0
332 326 .word 536872192
333 327 .word 536870992
334 328 .word 536870912
335 329 .word 80
336 330 .word 0
337 331 .word 536870912
338 332 .word 1280
339 333 .word 80
340 334 .word 1280
341 335 .word 536870912
342 336 .word 536872192
343 337 .word 536870912
344 338 .word 1280
345 339 .word 80
346 340 .word 1280
347 341 .word 80
348 342 .word 536870912
349 343 .word 0
350 344 .word 0
351 345 .word 536870912
352 346 .word 536870912
353 347 .word 0
354 348 .word 536872192
355 349 .word 536870912
356 350 .word 0
357 351 .word 536870992
358 352 .word 1280
359 353 .word 536870992
360 354 .word 536872192
361 355 .word 80
362 356 .word 536870912
363 357 .word 0
364 358 .word 81984
365 359 .word 32770
366 360 .word -2147401728
367 361 .word 0
368 362 .word 0
369 363 .word 32770
370 364 .word -2147483584
371 365 .word 32768
372 366 .word 81920
373 367 .word 0
374 368 .word 0
375 369 .word 2
376 370 .word -2147401664
377 371 .word 32768
378 372 .word 81920
379 373 .word 2
380 374 .word -2147483584
381 375 .word 32768
382 376 .word 64
383 377 .word 32768
384 378 .word 64
385 379 .word 2
386 380 .word -2147483648
387 381 .word 32770
388 382 .word -2147401664
389 383 .word 2
390 384 .word -2147483584
391 385 .word 32770
392 386 .word -2147483648
393 387 .word 0
394 388 .word 81984
395 389 .word 32768
396 390 .word 0
397 391 .word 0
398 392 .word 64
399 393 .word 32770
400 394 .word -2147401728
401 395 .word 0
402 396 .word 81920
403 397 .word 2
404 398 .word -2147401728
405 399 .word 32770
406 400 .word -2147483648
407 401 .word 32770
408 402 .word -2147483584
409 403 .word 2
410 404 .word -2147401664
411 405 .word 32768
412 406 .word 81984
413 407 .word 2
414 408 .word -2147401728
415 409 .word 2
416 410 .word -2147483648
417 411 .word 32768
418 412 .word 81984
419 413 .word 0
420 414 .word 64
421 415 .word 32770
422 416 .word -2147401664
423 417 .word 0
424 418 .word 81920
425 419 .word 32768
426 420 .word 0
427 421 .word 32770
428 422 .word -2147401728
429 423 .word 32768
430 424 .word 0
431 425 .word 2
432 426 .word -2147483584
433 427 .word 0
434 428 .word 81984
435 429 .word 2
436 430 .word -2147483648
437 431 .word 32770
438 432 .word -2147401728
439 433 .word 32768
440 434 .word 81920
441 435 .word 0
442 436 .word 0
443 437 .word 0
444 438 .word 81920
445 439 .word 2
446 440 .word -2147483584
447 441 .word 32770
448 442 .word -2147401664
449 443 .word 32768
450 444 .word 81920
451 445 .word 32768
452 446 .word 64
453 447 .word 0
454 448 .word 81920
455 449 .word 0
456 450 .word 0
457 451 .word 32770
458 452 .word -2147483584
459 453 .word 32768
460 454 .word 81984
461 455 .word 2
462 456 .word -2147483648
463 457 .word 32768
464 458 .word 0
465 459 .word 32770
466 460 .word -2147401664
467 461 .word 0
468 462 .word 64
469 463 .word 2
470 464 .word -2147401664
471 465 .word 2
472 466 .word -2147401728
473 467 .word 32768
474 468 .word 64
475 469 .word 32770
476 470 .word -2147483648
477 471 .word 32768
478 472 .word 81984
479 473 .word 0
480 474 .word 81984
481 475 .word 32770
482 476 .word -2147483648
483 477 .word 2
484 478 .word -2147401664
485 479 .word 0
486 480 .word 64
487 481 .word 32770
488 482 .word -2147483584
489 483 .word 2
490 484 .word -2147401728
491 485 .word 1073742336
492 486 .word 135266312
493 487 .word 1073741824
494 488 .word 135270408
495 489 .word 1073741824
496 490 .word 135270408
497 491 .word 0
498 492 .word 4096
499 493 .word 512
500 494 .word 135270400
501 495 .word 1073742336
502 496 .word 4104
503 497 .word 1073742336
504 498 .word 8
505 499 .word 1073741824
506 500 .word 135266312
507 501 .word 0
508 502 .word 0
509 503 .word 512
510 504 .word 135266304
511 505 .word 512
512 506 .word 135266304
513 507 .word 1073742336
514 508 .word 135270408
515 509 .word 1073741824
516 510 .word 4104
517 511 .word 0
518 512 .word 0
519 513 .word 512
520 514 .word 4096
521 515 .word 1073742336
522 516 .word 8
523 517 .word 1073741824
524 518 .word 8
525 519 .word 0
526 520 .word 135266304
527 521 .word 512
528 522 .word 0
529 523 .word 1073742336
530 524 .word 135266312
531 525 .word 0
532 526 .word 4096
533 527 .word 512
534 528 .word 0
535 529 .word 1073741824
536 530 .word 135266312
537 531 .word 0
538 532 .word 135270400
539 533 .word 1073742336
540 534 .word 4104
541 535 .word 1073741824
542 536 .word 8
543 537 .word 0
544 538 .word 135270400
545 539 .word 512
546 540 .word 4096
547 541 .word 0
548 542 .word 135266304
549 543 .word 512
550 544 .word 135270400
551 545 .word 1073742336
552 546 .word 135270408
553 547 .word 1073741824
554 548 .word 4104
555 549 .word 512
556 550 .word 4096
557 551 .word 1073742336
558 552 .word 8
559 553 .word 512
560 554 .word 135266304
561 555 .word 1073742336
562 556 .word 135270408
563 557 .word 1073741824
564 558 .word 4104
565 559 .word 0
566 560 .word 0
567 561 .word 0
568 562 .word 0
569 563 .word 512
570 564 .word 135266304
571 565 .word 0
572 566 .word 135270400
573 567 .word 512
574 568 .word 4096
575 569 .word 1073742336
576 570 .word 4104
577 571 .word 1073741824
578 572 .word 8
579 573 .word 1073742336
580 574 .word 135266312
581 575 .word 1073741824
582 576 .word 135270408
583 577 .word 1073741824
584 578 .word 135270408
585 579 .word 0
586 580 .word 4096
587 581 .word 1073742336
588 582 .word 135270408
589 583 .word 1073741824
590 584 .word 4104
591 585 .word 1073741824
592 586 .word 8
593 587 .word 0
594 588 .word 135266304
595 589 .word 1073742336
596 590 .word 8
597 591 .word 1073741824
598 592 .word 135266312
599 593 .word 512
600 594 .word 135270400
601 595 .word 1073742336
602 596 .word 4104
603 597 .word 1073741824
604 598 .word 135266312
605 599 .word 0
606 600 .word 135270400
607 601 .word 512
608 602 .word 0
609 603 .word 1073742336
610 604 .word 135266312
611 605 .word 0
612 606 .word 4096
613 607 .word 512
614 608 .word 0
615 609 .word 0
616 610 .word 135266304
617 611 .word 512
618 612 .word 135270400
619 613 .word 0
620 614 .word 40960
621 615 .word 10248
622 616 .word 40960
623 617 .word 10248
624 618 .word 0
625 619 .word 268445696
626 620 .word 40960
627 621 .word 8
628 622 .word 0
629 623 .word 0
630 624 .word 40960
631 625 .word 268435456
632 626 .word 0
633 627 .word 10248
634 628 .word 0
635 629 .word 268435464
636 630 .word 40960
637 631 .word 8
638 632 .word 0
639 633 .word 10240
640 634 .word 40960
641 635 .word 268435464
642 636 .word 40960
643 637 .word 268445696
644 638 .word 40960
645 639 .word 268445704
646 640 .word 0
647 641 .word 8
648 642 .word 40960
649 643 .word 268435456
650 644 .word 0
651 645 .word 10240
652 646 .word 0
653 647 .word 268435464
654 648 .word 0
655 649 .word 268435464
656 650 .word 0
657 651 .word 0
658 652 .word 0
659 653 .word 268435456
660 654 .word 40960
661 655 .word 268445704
662 656 .word 40960
663 657 .word 268445704
664 658 .word 40960
665 659 .word 10240
666 660 .word 40960
667 661 .word 268445704
668 662 .word 0
669 663 .word 268435456
670 664 .word 40960
671 665 .word 0
672 666 .word 0
673 667 .word 268445696
674 668 .word 0
675 669 .word 10248
676 670 .word 40960
677 671 .word 10240
678 672 .word 0
679 673 .word 268445696
680 674 .word 0
681 675 .word 8
682 676 .word 40960
683 677 .word 8
684 678 .word 0
685 679 .word 268445696
686 680 .word 40960
687 681 .word 0
688 682 .word 40960
689 683 .word 10240
690 684 .word 0
691 685 .word 268435456
692 686 .word 0
693 687 .word 10248
694 688 .word 0
695 689 .word 268445696
696 690 .word 40960
697 691 .word 268435464
698 692 .word 40960
699 693 .word 10240
700 694 .word 40960
701 695 .word 268435456
702 696 .word 0
703 697 .word 268445704
704 698 .word 0
705 699 .word 10248
706 700 .word 40960
707 701 .word 268435464
708 702 .word 40960
709 703 .word 0
710 704 .word 40960
711 705 .word 10240
712 706 .word 0
713 707 .word 268445704
714 708 .word 0
715 709 .word 268445704
716 710 .word 40960
717 711 .word 8
718 712 .word 40960
719 713 .word 268445696
720 714 .word 0
721 715 .word 268445704
722 716 .word 40960
723 717 .word 10248
724 718 .word 0
725 719 .word 0
726 720 .word 0
727 721 .word 268435464
728 722 .word 0
729 723 .word 268445696
730 724 .word 0
731 725 .word 8
732 726 .word 40960
733 727 .word 10240
734 728 .word 40960
735 729 .word 268435456
736 730 .word 40960
737 731 .word 8
738 732 .word 0
739 733 .word 0
740 734 .word 0
741 735 .word 268435464
742 736 .word 0
743 737 .word 10248
744 738 .word 40960
745 739 .word 268435456
746 740 .word 40960
747 741 .word 134348800
748 742 .word 640
749 743 .word 134349056
750 744 .word 0
751 745 .word 0
752 746 .word 268435456
753 747 .word 134349056
754 748 .word 268436096
755 749 .word 134349056
756 750 .word 0
757 751 .word 0
758 752 .word 640
759 753 .word 134349056
760 754 .word 268436096
761 755 .word 256
762 756 .word 0
763 757 .word 134348800
764 758 .word 268435456
765 759 .word 256
766 760 .word 268436096
767 761 .word 256
768 762 .word 0
769 763 .word 134348800
770 764 .word 640
771 765 .word 256
772 766 .word 640
773 767 .word 134348800
774 768 .word 268435456
775 769 .word 134348800
776 770 .word 0
777 771 .word 0
778 772 .word 268436096
779 773 .word 0
780 774 .word 0
781 775 .word 256
782 776 .word 640
783 777 .word 134348800
784 778 .word 268436096
785 779 .word 0
786 780 .word 268435456
787 781 .word 256
788 782 .word 268435456
789 783 .word 134348800
790 784 .word 268436096
791 785 .word 0
792 786 .word 640
793 787 .word 134349056
794 788 .word 640
795 789 .word 134349056
796 790 .word 640
797 791 .word 0
798 792 .word 0
799 793 .word 256
800 794 .word 268436096
801 795 .word 134349056
802 796 .word 268435456
803 797 .word 0
804 798 .word 268436096
805 799 .word 256
806 800 .word 268435456
807 801 .word 134349056
808 802 .word 268435456
809 803 .word 134348800
810 804 .word 0
811 805 .word 134348800
812 806 .word 268435456
813 807 .word 0
814 808 .word 640
815 809 .word 134349056
816 810 .word 640
817 811 .word 256
818 812 .word 268435456
819 813 .word 134349056
820 814 .word 268436096
821 815 .word 256
822 816 .word 0
823 817 .word 0
824 818 .word 268436096
825 819 .word 134348800
826 820 .word 640
827 821 .word 256
828 822 .word 0
829 823 .word 134348800
830 824 .word 268435456
831 825 .word 134348800
832 826 .word 0
833 827 .word 0
834 828 .word 268436096
835 829 .word 134348800
836 830 .word 640
837 831 .word 134349056
838 832 .word 268436096
839 833 .word 256
840 834 .word 268435456
841 835 .word 134349056
842 836 .word 0
843 837 .word 256
844 838 .word 268436096
845 839 .word 134349056
846 840 .word 268435456
847 841 .word 0
848 842 .word 0
849 843 .word 134349056
850 844 .word 640
851 845 .word 0
852 846 .word 640
853 847 .word 0
854 848 .word 268435456
855 849 .word 134349056
856 850 .word 0
857 851 .word 256
858 852 .word 268436096
859 853 .word 0
860 854 .word 268435456
861 855 .word 256
862 856 .word 640
863 857 .word 134348800
864 858 .word 268436096
865 859 .word 0
866 860 .word 0
867 861 .word 134349056
868 862 .word 268435456
869 863 .word 134348800
870 864 .word 0
871 865 .word 256
872 866 .word 640
873 867 .word 134348800
874 868 .word 268436096
875 869 .word 160
876 870 .word 0
877 871 .word -2147467104
878 872 .word 16
879 873 .word -2147467264
880 874 .word 262160
881 875 .word 0
882 876 .word 0
883 877 .word 0
884 878 .word 262144
885 879 .word -2147467264
886 880 .word 262160
887 881 .word -2147483488
888 882 .word 262160
889 883 .word 16544
890 884 .word 262144
891 885 .word -2147467104
892 886 .word 262160
893 887 .word 160
894 888 .word 0
895 889 .word 0
896 890 .word 0
897 891 .word -2147467264
898 892 .word 16
899 893 .word -2147483648
900 894 .word 16
901 895 .word 16384
902 896 .word 0
903 897 .word -2147467104
904 898 .word 16
905 899 .word -2147483648
906 900 .word 262160
907 901 .word 16384
908 902 .word 262144
909 903 .word -2147483488
910 904 .word 262160
911 905 .word -2147483488
912 906 .word 16
913 907 .word 16384
914 908 .word 262144
915 909 .word -2147467264
916 910 .word 16
917 911 .word 16544
918 912 .word 0
919 913 .word 16544
920 914 .word 262144
921 915 .word -2147483488
922 916 .word 16
923 917 .word 16544
924 918 .word 0
925 919 .word 0
926 920 .word 262144
927 921 .word -2147483648
928 922 .word 262160
929 923 .word -2147467104
930 924 .word 262160
931 925 .word 160
932 926 .word 262144
933 927 .word -2147483648
934 928 .word 16
935 929 .word 16384
936 930 .word 0
937 931 .word 160
938 932 .word 262144
939 933 .word 16384
940 934 .word 0
941 935 .word 160
942 936 .word 262144
943 937 .word 160
944 938 .word 0
945 939 .word -2147467264
946 940 .word 262160
947 941 .word -2147467264
948 942 .word 262160
949 943 .word -2147467104
950 944 .word 16
951 945 .word -2147467104
952 946 .word 16
953 947 .word -2147483648
954 948 .word 16
955 949 .word -2147483488
956 950 .word 16
957 951 .word 16384
958 952 .word 0
959 953 .word 16384
960 954 .word 262144
961 955 .word 160
962 956 .word 0
963 957 .word 16544
964 958 .word 262144
965 959 .word -2147483648
966 960 .word 262160
967 961 .word -2147483488
968 962 .word 262160
969 963 .word 16544
970 964 .word 262144
971 965 .word -2147483648
972 966 .word 262160
973 967 .word -2147467264
974 968 .word 16
975 969 .word -2147467104
976 970 .word 262160
977 971 .word 16544
978 972 .word 0
979 973 .word 160
980 974 .word 262144
981 975 .word 0
982 976 .word 0
983 977 .word -2147483648
984 978 .word 16
985 979 .word -2147467104
986 980 .word 262160
987 981 .word 0
988 982 .word 0
989 983 .word -2147483488
990 984 .word 262160
991 985 .word 16544
992 986 .word 0
993 987 .word 0
994 988 .word 262144
995 989 .word -2147467264
996 990 .word 16
997 991 .word 16384
998 992 .word 262144
999 993 .word 0
1000 994 .word 262144
1001 995 .word -2147483488
1002 996 .word 16
1003 997 .word 67174400
1004 998 .word 67635200
1005 999 .word 0
1006 1000 .word 67633152
1007 1001 .word 4
1008 1002 .word 0
1009 1003 .word 67174404
1010 1004 .word 67635200
1011 1005 .word 67174400
1012 1006 .word 0
1013 1007 .word 67174400
1014 1008 .word 67635200
1015 1009 .word 0
1016 1010 .word 2048
1017 1011 .word 67174400
1018 1012 .word 0
1019 1013 .word 4
1020 1014 .word 2048
1021 1015 .word 67174404
1022 1016 .word 0
1023 1017 .word 67174404
1024 1018 .word 67635200
1025 1019 .word 4
1026 1020 .word 67633152
1027 1021 .word 67174404
1028 1022 .word 67633152
1029 1023 .word 4
1030 1024 .word 67635200
1031 1025 .word 0
1032 1026 .word 67633152
1033 1027 .word 0
1034 1028 .word 2048
1035 1029 .word 67174404
1036 1030 .word 0
1037 1031 .word 67174400
1038 1032 .word 2048
1039 1033 .word 67174400
1040 1034 .word 67633152
1041 1035 .word 0
1042 1036 .word 67635200
1043 1037 .word 4
1044 1038 .word 67633152
1045 1039 .word 4
1046 1040 .word 2048
1047 1041 .word 67174404
1048 1042 .word 2048
1049 1043 .word 67174404
1050 1044 .word 67633152
1051 1045 .word 0
1052 1046 .word 67635200
1053 1047 .word 0
1054 1048 .word 0
1055 1049 .word 0
1056 1050 .word 0
1057 1051 .word 67174404
1058 1052 .word 2048
1059 1053 .word 67174400
1060 1054 .word 2048
1061 1055 .word 67174400
1062 1056 .word 67633152
1063 1057 .word 4
1064 1058 .word 67635200
1065 1059 .word 4
1066 1060 .word 0
1067 1061 .word 4
1068 1062 .word 67635200
1069 1063 .word 4
1070 1064 .word 0
1071 1065 .word 67174404
1072 1066 .word 67633152
1073 1067 .word 0
1074 1068 .word 67633152
1075 1069 .word 0
1076 1070 .word 2048
1077 1071 .word 67174404
1078 1072 .word 2048
1079 1073 .word 0
1080 1074 .word 67633152
1081 1075 .word 4
1082 1076 .word 67635200
1083 1077 .word 67174400
1084 1078 .word 67633152
1085 1079 .word 0
1086 1080 .word 2048
1087 1081 .word 67174400
1088 1082 .word 2048
1089 1083 .word 67174404
1090 1084 .word 0
1091 1085 .word 67174404
1092 1086 .word 2048
1093 1087 .word 67174400
1094 1088 .word 0
1095 1089 .word 4
1096 1090 .word 0
1097 1091 .word 67174400
1098 1092 .word 67635200
1099 1093 .word 0
1100 1094 .word 0
1101 1095 .word 67174404
1102 1096 .word 67635200
1103 1097 .word 4
1104 1098 .word 2048
1105 1099 .word 67174400
1106 1100 .word 2048
1107 1101 .word 67174404
1108 1102 .word 0
1109 1103 .word 67174400
1110 1104 .word 67633152
1111 1105 .word 67174400
1112 1106 .word 67635200
1113 1107 .word 0
1114 1108 .word 0
1115 1109 .word 67174404
1116 1110 .word 67635200
1117 1111 .word 4
1118 1112 .word 67633152
1119 1113 .word 4
1120 1114 .word 67633152
1121 1115 .word 0
1122 1116 .word 67635200
1123 1117 .word 0
1124 1118 .word 67635200
1125 1119 .word 4
1126 1120 .word 2048
1127 1121 .word 67174400
1128 1122 .word 0
1129 1123 .word 67174404
1130 1124 .word 67633152
1131 1125 .type des_sbox_table,#object
1132 1126 .size des_sbox_table,4096
1133 1127
1134 1128 .align 32
1135 1129 !
1136 1130 ! CONSTANT POOL
1137 1131 !
1138 1132 .section ".text",#alloc,#execinstr
1139 1133
1140 1134 des_ip_table:
1141 1135 .word 0
1142 1136 .word 0
1143 1137 .word 0
1144 1138 .word 1024
1145 1139 .word 8388608
1146 1140 .word 640
1147 1141 .word 8388608
1148 1142 .word 1664
1149 1143 .word 0
1150 1144 .word 4194304
1151 1145 .word 0
1152 1146 .word 4195328
1153 1147 .word 8388608
1154 1148 .word 4194944
1155 1149 .word 8388608
1156 1150 .word 4195968
1157 1151 .word 0
1158 1152 .word 2621440
1159 1153 .word 0
1160 1154 .word 2622464
1161 1155 .word 8388608
1162 1156 .word 2622080
1163 1157 .word 8388608
1164 1158 .word 2623104
1165 1159 .word 0
1166 1160 .word 6815744
1167 1161 .word 0
1168 1162 .word 6816768
1169 1163 .word 8388608
1170 1164 .word 6816384
1171 1165 .word 8388608
1172 1166 .word 6817408
1173 1167 .word 4
1174 1168 .word 0
1175 1169 .word 4
1176 1170 .word 1024
1177 1171 .word 8388612
1178 1172 .word 640
1179 1173 .word 8388612
1180 1174 .word 1664
1181 1175 .word 4
1182 1176 .word 4194304
1183 1177 .word 4
1184 1178 .word 4195328
1185 1179 .word 8388612
1186 1180 .word 4194944
1187 1181 .word 8388612
1188 1182 .word 4195968
1189 1183 .word 4
1190 1184 .word 2621440
1191 1185 .word 4
1192 1186 .word 2622464
1193 1187 .word 8388612
1194 1188 .word 2622080
1195 1189 .word 8388612
1196 1190 .word 2623104
1197 1191 .word 4
1198 1192 .word 6815744
1199 1193 .word 4
1200 1194 .word 6816768
1201 1195 .word 8388612
1202 1196 .word 6816384
1203 1197 .word 8388612
1204 1198 .word 6817408
1205 1199 .word 2
1206 1200 .word -2147483648
1207 1201 .word 2
1208 1202 .word -2147482624
1209 1203 .word 8388610
1210 1204 .word -2147483008
1211 1205 .word 8388610
1212 1206 .word -2147481984
1213 1207 .word 2
1214 1208 .word -2143289344
1215 1209 .word 2
1216 1210 .word -2143288320
1217 1211 .word 8388610
1218 1212 .word -2143288704
1219 1213 .word 8388610
1220 1214 .word -2143287680
1221 1215 .word 2
1222 1216 .word -2144862208
1223 1217 .word 2
1224 1218 .word -2144861184
1225 1219 .word 8388610
1226 1220 .word -2144861568
1227 1221 .word 8388610
1228 1222 .word -2144860544
1229 1223 .word 2
1230 1224 .word -2140667904
1231 1225 .word 2
1232 1226 .word -2140666880
1233 1227 .word 8388610
1234 1228 .word -2140667264
1235 1229 .word 8388610
1236 1230 .word -2140666240
1237 1231 .word 6
1238 1232 .word -2147483648
1239 1233 .word 6
1240 1234 .word -2147482624
1241 1235 .word 8388614
1242 1236 .word -2147483008
1243 1237 .word 8388614
1244 1238 .word -2147481984
1245 1239 .word 6
1246 1240 .word -2143289344
1247 1241 .word 6
1248 1242 .word -2143288320
1249 1243 .word 8388614
1250 1244 .word -2143288704
1251 1245 .word 8388614
1252 1246 .word -2143287680
1253 1247 .word 6
1254 1248 .word -2144862208
1255 1249 .word 6
1256 1250 .word -2144861184
1257 1251 .word 8388614
1258 1252 .word -2144861568
1259 1253 .word 8388614
1260 1254 .word -2144860544
1261 1255 .word 6
1262 1256 .word -2140667904
1263 1257 .word 6
1264 1258 .word -2140666880
1265 1259 .word 8388614
1266 1260 .word -2140667264
1267 1261 .word 8388614
1268 1262 .word -2140666240
1269 1263 .word 16384
1270 1264 .word 0
1271 1265 .word 16384
1272 1266 .word 1024
1273 1267 .word 8404992
1274 1268 .word 640
1275 1269 .word 8404992
1276 1270 .word 1664
1277 1271 .word 16384
1278 1272 .word 4194304
1279 1273 .word 16384
1280 1274 .word 4195328
1281 1275 .word 8404992
1282 1276 .word 4194944
1283 1277 .word 8404992
1284 1278 .word 4195968
1285 1279 .word 16384
1286 1280 .word 2621440
1287 1281 .word 16384
1288 1282 .word 2622464
1289 1283 .word 8404992
1290 1284 .word 2622080
1291 1285 .word 8404992
1292 1286 .word 2623104
1293 1287 .word 16384
1294 1288 .word 6815744
1295 1289 .word 16384
1296 1290 .word 6816768
1297 1291 .word 8404992
1298 1292 .word 6816384
1299 1293 .word 8404992
1300 1294 .word 6817408
1301 1295 .word 16388
1302 1296 .word 0
1303 1297 .word 16388
1304 1298 .word 1024
1305 1299 .word 8404996
1306 1300 .word 640
1307 1301 .word 8404996
1308 1302 .word 1664
1309 1303 .word 16388
1310 1304 .word 4194304
1311 1305 .word 16388
1312 1306 .word 4195328
1313 1307 .word 8404996
1314 1308 .word 4194944
1315 1309 .word 8404996
1316 1310 .word 4195968
1317 1311 .word 16388
1318 1312 .word 2621440
1319 1313 .word 16388
1320 1314 .word 2622464
1321 1315 .word 8404996
1322 1316 .word 2622080
1323 1317 .word 8404996
1324 1318 .word 2623104
1325 1319 .word 16388
1326 1320 .word 6815744
1327 1321 .word 16388
1328 1322 .word 6816768
1329 1323 .word 8404996
1330 1324 .word 6816384
1331 1325 .word 8404996
1332 1326 .word 6817408
1333 1327 .word 16386
1334 1328 .word -2147483648
1335 1329 .word 16386
1336 1330 .word -2147482624
1337 1331 .word 8404994
1338 1332 .word -2147483008
1339 1333 .word 8404994
1340 1334 .word -2147481984
1341 1335 .word 16386
1342 1336 .word -2143289344
1343 1337 .word 16386
1344 1338 .word -2143288320
1345 1339 .word 8404994
1346 1340 .word -2143288704
1347 1341 .word 8404994
1348 1342 .word -2143287680
1349 1343 .word 16386
1350 1344 .word -2144862208
1351 1345 .word 16386
1352 1346 .word -2144861184
1353 1347 .word 8404994
1354 1348 .word -2144861568
1355 1349 .word 8404994
1356 1350 .word -2144860544
1357 1351 .word 16386
1358 1352 .word -2140667904
1359 1353 .word 16386
1360 1354 .word -2140666880
1361 1355 .word 8404994
1362 1356 .word -2140667264
1363 1357 .word 8404994
1364 1358 .word -2140666240
1365 1359 .word 16390
1366 1360 .word -2147483648
1367 1361 .word 16390
1368 1362 .word -2147482624
1369 1363 .word 8404998
1370 1364 .word -2147483008
1371 1365 .word 8404998
1372 1366 .word -2147481984
1373 1367 .word 16390
1374 1368 .word -2143289344
1375 1369 .word 16390
1376 1370 .word -2143288320
1377 1371 .word 8404998
1378 1372 .word -2143288704
1379 1373 .word 8404998
1380 1374 .word -2143287680
1381 1375 .word 16390
1382 1376 .word -2144862208
1383 1377 .word 16390
1384 1378 .word -2144861184
1385 1379 .word 8404998
1386 1380 .word -2144861568
1387 1381 .word 8404998
1388 1382 .word -2144860544
1389 1383 .word 16390
1390 1384 .word -2140667904
1391 1385 .word 16390
1392 1386 .word -2140666880
1393 1387 .word 8404998
1394 1388 .word -2140667264
1395 1389 .word 8404998
1396 1390 .word -2140666240
1397 1391 .word 10240
1398 1392 .word 0
1399 1393 .word 10240
1400 1394 .word 1024
1401 1395 .word 8398848
1402 1396 .word 640
1403 1397 .word 8398848
1404 1398 .word 1664
1405 1399 .word 10240
1406 1400 .word 4194304
1407 1401 .word 10240
1408 1402 .word 4195328
1409 1403 .word 8398848
1410 1404 .word 4194944
1411 1405 .word 8398848
1412 1406 .word 4195968
1413 1407 .word 10240
1414 1408 .word 2621440
1415 1409 .word 10240
1416 1410 .word 2622464
1417 1411 .word 8398848
1418 1412 .word 2622080
1419 1413 .word 8398848
1420 1414 .word 2623104
1421 1415 .word 10240
1422 1416 .word 6815744
1423 1417 .word 10240
1424 1418 .word 6816768
1425 1419 .word 8398848
1426 1420 .word 6816384
1427 1421 .word 8398848
1428 1422 .word 6817408
1429 1423 .word 10244
1430 1424 .word 0
1431 1425 .word 10244
1432 1426 .word 1024
1433 1427 .word 8398852
1434 1428 .word 640
1435 1429 .word 8398852
1436 1430 .word 1664
1437 1431 .word 10244
1438 1432 .word 4194304
1439 1433 .word 10244
1440 1434 .word 4195328
1441 1435 .word 8398852
1442 1436 .word 4194944
1443 1437 .word 8398852
1444 1438 .word 4195968
1445 1439 .word 10244
1446 1440 .word 2621440
1447 1441 .word 10244
1448 1442 .word 2622464
1449 1443 .word 8398852
1450 1444 .word 2622080
1451 1445 .word 8398852
1452 1446 .word 2623104
1453 1447 .word 10244
1454 1448 .word 6815744
1455 1449 .word 10244
1456 1450 .word 6816768
1457 1451 .word 8398852
1458 1452 .word 6816384
1459 1453 .word 8398852
1460 1454 .word 6817408
1461 1455 .word 10242
1462 1456 .word -2147483648
1463 1457 .word 10242
1464 1458 .word -2147482624
1465 1459 .word 8398850
1466 1460 .word -2147483008
1467 1461 .word 8398850
1468 1462 .word -2147481984
1469 1463 .word 10242
1470 1464 .word -2143289344
1471 1465 .word 10242
1472 1466 .word -2143288320
1473 1467 .word 8398850
1474 1468 .word -2143288704
1475 1469 .word 8398850
1476 1470 .word -2143287680
1477 1471 .word 10242
1478 1472 .word -2144862208
1479 1473 .word 10242
1480 1474 .word -2144861184
1481 1475 .word 8398850
1482 1476 .word -2144861568
1483 1477 .word 8398850
1484 1478 .word -2144860544
1485 1479 .word 10242
1486 1480 .word -2140667904
1487 1481 .word 10242
1488 1482 .word -2140666880
1489 1483 .word 8398850
1490 1484 .word -2140667264
1491 1485 .word 8398850
1492 1486 .word -2140666240
1493 1487 .word 10246
1494 1488 .word -2147483648
1495 1489 .word 10246
1496 1490 .word -2147482624
1497 1491 .word 8398854
1498 1492 .word -2147483008
1499 1493 .word 8398854
1500 1494 .word -2147481984
1501 1495 .word 10246
1502 1496 .word -2143289344
1503 1497 .word 10246
1504 1498 .word -2143288320
1505 1499 .word 8398854
1506 1500 .word -2143288704
1507 1501 .word 8398854
1508 1502 .word -2143287680
1509 1503 .word 10246
1510 1504 .word -2144862208
1511 1505 .word 10246
1512 1506 .word -2144861184
1513 1507 .word 8398854
1514 1508 .word -2144861568
1515 1509 .word 8398854
1516 1510 .word -2144860544
1517 1511 .word 10246
1518 1512 .word -2140667904
1519 1513 .word 10246
1520 1514 .word -2140666880
1521 1515 .word 8398854
1522 1516 .word -2140667264
1523 1517 .word 8398854
1524 1518 .word -2140666240
1525 1519 .word 26624
1526 1520 .word 0
1527 1521 .word 26624
1528 1522 .word 1024
1529 1523 .word 8415232
1530 1524 .word 640
1531 1525 .word 8415232
1532 1526 .word 1664
1533 1527 .word 26624
1534 1528 .word 4194304
1535 1529 .word 26624
1536 1530 .word 4195328
1537 1531 .word 8415232
1538 1532 .word 4194944
1539 1533 .word 8415232
1540 1534 .word 4195968
1541 1535 .word 26624
1542 1536 .word 2621440
1543 1537 .word 26624
1544 1538 .word 2622464
1545 1539 .word 8415232
1546 1540 .word 2622080
1547 1541 .word 8415232
1548 1542 .word 2623104
1549 1543 .word 26624
1550 1544 .word 6815744
1551 1545 .word 26624
1552 1546 .word 6816768
1553 1547 .word 8415232
1554 1548 .word 6816384
1555 1549 .word 8415232
1556 1550 .word 6817408
1557 1551 .word 26628
1558 1552 .word 0
1559 1553 .word 26628
1560 1554 .word 1024
1561 1555 .word 8415236
1562 1556 .word 640
1563 1557 .word 8415236
1564 1558 .word 1664
1565 1559 .word 26628
1566 1560 .word 4194304
1567 1561 .word 26628
1568 1562 .word 4195328
1569 1563 .word 8415236
1570 1564 .word 4194944
1571 1565 .word 8415236
1572 1566 .word 4195968
1573 1567 .word 26628
1574 1568 .word 2621440
1575 1569 .word 26628
1576 1570 .word 2622464
1577 1571 .word 8415236
1578 1572 .word 2622080
1579 1573 .word 8415236
1580 1574 .word 2623104
1581 1575 .word 26628
1582 1576 .word 6815744
1583 1577 .word 26628
1584 1578 .word 6816768
1585 1579 .word 8415236
1586 1580 .word 6816384
1587 1581 .word 8415236
1588 1582 .word 6817408
1589 1583 .word 26626
1590 1584 .word -2147483648
1591 1585 .word 26626
1592 1586 .word -2147482624
1593 1587 .word 8415234
1594 1588 .word -2147483008
1595 1589 .word 8415234
1596 1590 .word -2147481984
1597 1591 .word 26626
1598 1592 .word -2143289344
1599 1593 .word 26626
1600 1594 .word -2143288320
1601 1595 .word 8415234
1602 1596 .word -2143288704
1603 1597 .word 8415234
1604 1598 .word -2143287680
1605 1599 .word 26626
1606 1600 .word -2144862208
1607 1601 .word 26626
1608 1602 .word -2144861184
1609 1603 .word 8415234
1610 1604 .word -2144861568
1611 1605 .word 8415234
1612 1606 .word -2144860544
1613 1607 .word 26626
1614 1608 .word -2140667904
1615 1609 .word 26626
1616 1610 .word -2140666880
1617 1611 .word 8415234
1618 1612 .word -2140667264
1619 1613 .word 8415234
1620 1614 .word -2140666240
1621 1615 .word 26630
1622 1616 .word -2147483648
1623 1617 .word 26630
1624 1618 .word -2147482624
1625 1619 .word 8415238
1626 1620 .word -2147483008
1627 1621 .word 8415238
1628 1622 .word -2147481984
1629 1623 .word 26630
1630 1624 .word -2143289344
1631 1625 .word 26630
1632 1626 .word -2143288320
1633 1627 .word 8415238
1634 1628 .word -2143288704
1635 1629 .word 8415238
1636 1630 .word -2143287680
1637 1631 .word 26630
1638 1632 .word -2144862208
1639 1633 .word 26630
1640 1634 .word -2144861184
1641 1635 .word 8415238
1642 1636 .word -2144861568
1643 1637 .word 8415238
1644 1638 .word -2144860544
1645 1639 .word 26630
1646 1640 .word -2140667904
1647 1641 .word 26630
1648 1642 .word -2140666880
1649 1643 .word 8415238
1650 1644 .word -2140667264
1651 1645 .word 8415238
1652 1646 .word -2140666240
1653 1647 .word 0
1654 1648 .word 0
1655 1649 .word 0
1656 1650 .word 20480
1657 1651 .word 0
1658 1652 .word 2048
1659 1653 .word 0
1660 1654 .word 22528
1661 1655 .word 0
1662 1656 .word 83886080
1663 1657 .word 0
1664 1658 .word 83906560
1665 1659 .word 0
1666 1660 .word 83888128
1667 1661 .word 0
1668 1662 .word 83908608
1669 1663 .word 0
1670 1664 .word 8388608
1671 1665 .word 0
1672 1666 .word 8409088
1673 1667 .word 0
1674 1668 .word 8390656
1675 1669 .word 0
1676 1670 .word 8411136
1677 1671 .word 0
1678 1672 .word 92274688
1679 1673 .word 0
1680 1674 .word 92295168
1681 1675 .word 0
1682 1676 .word 92276736
1683 1677 .word 0
1684 1678 .word 92297216
1685 1679 .word 80
1686 1680 .word 0
1687 1681 .word 80
1688 1682 .word 20480
1689 1683 .word 80
1690 1684 .word 2048
1691 1685 .word 80
1692 1686 .word 22528
1693 1687 .word 80
1694 1688 .word 83886080
1695 1689 .word 80
1696 1690 .word 83906560
1697 1691 .word 80
1698 1692 .word 83888128
1699 1693 .word 80
1700 1694 .word 83908608
1701 1695 .word 80
1702 1696 .word 8388608
1703 1697 .word 80
1704 1698 .word 8409088
1705 1699 .word 80
1706 1700 .word 8390656
1707 1701 .word 80
1708 1702 .word 8411136
1709 1703 .word 80
1710 1704 .word 92274688
1711 1705 .word 80
1712 1706 .word 92295168
1713 1707 .word 80
1714 1708 .word 92276736
1715 1709 .word 80
1716 1710 .word 92297216
1717 1711 .word 8
1718 1712 .word 0
1719 1713 .word 8
1720 1714 .word 20480
1721 1715 .word 8
1722 1716 .word 2048
1723 1717 .word 8
1724 1718 .word 22528
1725 1719 .word 8
1726 1720 .word 83886080
1727 1721 .word 8
1728 1722 .word 83906560
1729 1723 .word 8
1730 1724 .word 83888128
1731 1725 .word 8
1732 1726 .word 83908608
1733 1727 .word 8
1734 1728 .word 8388608
1735 1729 .word 8
1736 1730 .word 8409088
1737 1731 .word 8
1738 1732 .word 8390656
1739 1733 .word 8
1740 1734 .word 8411136
1741 1735 .word 8
1742 1736 .word 92274688
1743 1737 .word 8
1744 1738 .word 92295168
1745 1739 .word 8
1746 1740 .word 92276736
1747 1741 .word 8
1748 1742 .word 92297216
1749 1743 .word 88
1750 1744 .word 0
1751 1745 .word 88
1752 1746 .word 20480
1753 1747 .word 88
1754 1748 .word 2048
1755 1749 .word 88
1756 1750 .word 22528
1757 1751 .word 88
1758 1752 .word 83886080
1759 1753 .word 88
1760 1754 .word 83906560
1761 1755 .word 88
1762 1756 .word 83888128
1763 1757 .word 88
1764 1758 .word 83908608
1765 1759 .word 88
1766 1760 .word 8388608
1767 1761 .word 88
1768 1762 .word 8409088
1769 1763 .word 88
1770 1764 .word 8390656
1771 1765 .word 88
1772 1766 .word 8411136
1773 1767 .word 88
1774 1768 .word 92274688
1775 1769 .word 88
1776 1770 .word 92295168
1777 1771 .word 88
1778 1772 .word 92276736
1779 1773 .word 88
1780 1774 .word 92297216
1781 1775 .word 327680
1782 1776 .word 4
1783 1777 .word 327680
1784 1778 .word 20484
1785 1779 .word 327680
1786 1780 .word 2052
1787 1781 .word 327680
1788 1782 .word 22532
1789 1783 .word 327680
1790 1784 .word 83886084
1791 1785 .word 327680
1792 1786 .word 83906564
1793 1787 .word 327680
1794 1788 .word 83888132
1795 1789 .word 327680
1796 1790 .word 83908612
1797 1791 .word 327680
1798 1792 .word 8388612
1799 1793 .word 327680
1800 1794 .word 8409092
1801 1795 .word 327680
1802 1796 .word 8390660
1803 1797 .word 327680
1804 1798 .word 8411140
1805 1799 .word 327680
1806 1800 .word 92274692
1807 1801 .word 327680
1808 1802 .word 92295172
1809 1803 .word 327680
1810 1804 .word 92276740
1811 1805 .word 327680
1812 1806 .word 92297220
1813 1807 .word 327760
1814 1808 .word 4
1815 1809 .word 327760
1816 1810 .word 20484
1817 1811 .word 327760
1818 1812 .word 2052
1819 1813 .word 327760
1820 1814 .word 22532
1821 1815 .word 327760
1822 1816 .word 83886084
1823 1817 .word 327760
1824 1818 .word 83906564
1825 1819 .word 327760
1826 1820 .word 83888132
1827 1821 .word 327760
1828 1822 .word 83908612
1829 1823 .word 327760
1830 1824 .word 8388612
1831 1825 .word 327760
1832 1826 .word 8409092
1833 1827 .word 327760
1834 1828 .word 8390660
1835 1829 .word 327760
1836 1830 .word 8411140
1837 1831 .word 327760
1838 1832 .word 92274692
1839 1833 .word 327760
1840 1834 .word 92295172
1841 1835 .word 327760
1842 1836 .word 92276740
1843 1837 .word 327760
1844 1838 .word 92297220
1845 1839 .word 327688
1846 1840 .word 4
1847 1841 .word 327688
1848 1842 .word 20484
1849 1843 .word 327688
1850 1844 .word 2052
1851 1845 .word 327688
1852 1846 .word 22532
1853 1847 .word 327688
1854 1848 .word 83886084
1855 1849 .word 327688
1856 1850 .word 83906564
1857 1851 .word 327688
1858 1852 .word 83888132
1859 1853 .word 327688
1860 1854 .word 83908612
1861 1855 .word 327688
1862 1856 .word 8388612
1863 1857 .word 327688
1864 1858 .word 8409092
1865 1859 .word 327688
1866 1860 .word 8390660
1867 1861 .word 327688
1868 1862 .word 8411140
1869 1863 .word 327688
1870 1864 .word 92274692
1871 1865 .word 327688
1872 1866 .word 92295172
1873 1867 .word 327688
1874 1868 .word 92276740
1875 1869 .word 327688
1876 1870 .word 92297220
1877 1871 .word 327768
1878 1872 .word 4
1879 1873 .word 327768
1880 1874 .word 20484
1881 1875 .word 327768
1882 1876 .word 2052
1883 1877 .word 327768
1884 1878 .word 22532
1885 1879 .word 327768
1886 1880 .word 83886084
1887 1881 .word 327768
1888 1882 .word 83906564
1889 1883 .word 327768
1890 1884 .word 83888132
1891 1885 .word 327768
1892 1886 .word 83908612
1893 1887 .word 327768
1894 1888 .word 8388612
1895 1889 .word 327768
1896 1890 .word 8409092
1897 1891 .word 327768
1898 1892 .word 8390660
1899 1893 .word 327768
1900 1894 .word 8411140
1901 1895 .word 327768
1902 1896 .word 92274692
1903 1897 .word 327768
1904 1898 .word 92295172
1905 1899 .word 327768
1906 1900 .word 92276740
1907 1901 .word 327768
1908 1902 .word 92297220
1909 1903 .word 32768
1910 1904 .word 0
1911 1905 .word 32768
1912 1906 .word 20480
1913 1907 .word 32768
1914 1908 .word 2048
1915 1909 .word 32768
1916 1910 .word 22528
1917 1911 .word 32768
1918 1912 .word 83886080
1919 1913 .word 32768
1920 1914 .word 83906560
1921 1915 .word 32768
1922 1916 .word 83888128
1923 1917 .word 32768
1924 1918 .word 83908608
1925 1919 .word 32768
1926 1920 .word 8388608
1927 1921 .word 32768
1928 1922 .word 8409088
1929 1923 .word 32768
1930 1924 .word 8390656
1931 1925 .word 32768
1932 1926 .word 8411136
1933 1927 .word 32768
1934 1928 .word 92274688
1935 1929 .word 32768
1936 1930 .word 92295168
1937 1931 .word 32768
1938 1932 .word 92276736
1939 1933 .word 32768
1940 1934 .word 92297216
1941 1935 .word 32848
1942 1936 .word 0
1943 1937 .word 32848
1944 1938 .word 20480
1945 1939 .word 32848
1946 1940 .word 2048
1947 1941 .word 32848
1948 1942 .word 22528
1949 1943 .word 32848
1950 1944 .word 83886080
1951 1945 .word 32848
1952 1946 .word 83906560
1953 1947 .word 32848
1954 1948 .word 83888128
1955 1949 .word 32848
1956 1950 .word 83908608
1957 1951 .word 32848
1958 1952 .word 8388608
1959 1953 .word 32848
1960 1954 .word 8409088
1961 1955 .word 32848
1962 1956 .word 8390656
1963 1957 .word 32848
1964 1958 .word 8411136
1965 1959 .word 32848
1966 1960 .word 92274688
1967 1961 .word 32848
1968 1962 .word 92295168
1969 1963 .word 32848
1970 1964 .word 92276736
1971 1965 .word 32848
1972 1966 .word 92297216
1973 1967 .word 32776
1974 1968 .word 0
1975 1969 .word 32776
1976 1970 .word 20480
1977 1971 .word 32776
1978 1972 .word 2048
1979 1973 .word 32776
1980 1974 .word 22528
1981 1975 .word 32776
1982 1976 .word 83886080
1983 1977 .word 32776
1984 1978 .word 83906560
1985 1979 .word 32776
1986 1980 .word 83888128
1987 1981 .word 32776
1988 1982 .word 83908608
1989 1983 .word 32776
1990 1984 .word 8388608
1991 1985 .word 32776
1992 1986 .word 8409088
1993 1987 .word 32776
1994 1988 .word 8390656
1995 1989 .word 32776
1996 1990 .word 8411136
1997 1991 .word 32776
1998 1992 .word 92274688
1999 1993 .word 32776
2000 1994 .word 92295168
2001 1995 .word 32776
2002 1996 .word 92276736
2003 1997 .word 32776
2004 1998 .word 92297216
2005 1999 .word 32856
2006 2000 .word 0
2007 2001 .word 32856
2008 2002 .word 20480
2009 2003 .word 32856
2010 2004 .word 2048
2011 2005 .word 32856
2012 2006 .word 22528
2013 2007 .word 32856
2014 2008 .word 83886080
2015 2009 .word 32856
2016 2010 .word 83906560
2017 2011 .word 32856
2018 2012 .word 83888128
2019 2013 .word 32856
2020 2014 .word 83908608
2021 2015 .word 32856
2022 2016 .word 8388608
2023 2017 .word 32856
2024 2018 .word 8409088
2025 2019 .word 32856
2026 2020 .word 8390656
2027 2021 .word 32856
2028 2022 .word 8411136
2029 2023 .word 32856
2030 2024 .word 92274688
2031 2025 .word 32856
2032 2026 .word 92295168
2033 2027 .word 32856
2034 2028 .word 92276736
2035 2029 .word 32856
2036 2030 .word 92297216
2037 2031 .word 360448
2038 2032 .word 4
2039 2033 .word 360448
2040 2034 .word 20484
2041 2035 .word 360448
2042 2036 .word 2052
2043 2037 .word 360448
2044 2038 .word 22532
2045 2039 .word 360448
2046 2040 .word 83886084
2047 2041 .word 360448
2048 2042 .word 83906564
2049 2043 .word 360448
2050 2044 .word 83888132
2051 2045 .word 360448
2052 2046 .word 83908612
2053 2047 .word 360448
2054 2048 .word 8388612
2055 2049 .word 360448
2056 2050 .word 8409092
2057 2051 .word 360448
2058 2052 .word 8390660
2059 2053 .word 360448
2060 2054 .word 8411140
2061 2055 .word 360448
2062 2056 .word 92274692
2063 2057 .word 360448
2064 2058 .word 92295172
2065 2059 .word 360448
2066 2060 .word 92276740
2067 2061 .word 360448
2068 2062 .word 92297220
2069 2063 .word 360528
2070 2064 .word 4
2071 2065 .word 360528
2072 2066 .word 20484
2073 2067 .word 360528
2074 2068 .word 2052
2075 2069 .word 360528
2076 2070 .word 22532
2077 2071 .word 360528
2078 2072 .word 83886084
2079 2073 .word 360528
2080 2074 .word 83906564
2081 2075 .word 360528
2082 2076 .word 83888132
2083 2077 .word 360528
2084 2078 .word 83908612
2085 2079 .word 360528
2086 2080 .word 8388612
2087 2081 .word 360528
2088 2082 .word 8409092
2089 2083 .word 360528
2090 2084 .word 8390660
2091 2085 .word 360528
2092 2086 .word 8411140
2093 2087 .word 360528
2094 2088 .word 92274692
2095 2089 .word 360528
2096 2090 .word 92295172
2097 2091 .word 360528
2098 2092 .word 92276740
2099 2093 .word 360528
2100 2094 .word 92297220
2101 2095 .word 360456
2102 2096 .word 4
2103 2097 .word 360456
2104 2098 .word 20484
2105 2099 .word 360456
2106 2100 .word 2052
2107 2101 .word 360456
2108 2102 .word 22532
2109 2103 .word 360456
2110 2104 .word 83886084
2111 2105 .word 360456
2112 2106 .word 83906564
2113 2107 .word 360456
2114 2108 .word 83888132
2115 2109 .word 360456
2116 2110 .word 83908612
2117 2111 .word 360456
2118 2112 .word 8388612
2119 2113 .word 360456
2120 2114 .word 8409092
2121 2115 .word 360456
2122 2116 .word 8390660
2123 2117 .word 360456
2124 2118 .word 8411140
2125 2119 .word 360456
2126 2120 .word 92274692
2127 2121 .word 360456
2128 2122 .word 92295172
2129 2123 .word 360456
2130 2124 .word 92276740
2131 2125 .word 360456
2132 2126 .word 92297220
2133 2127 .word 360536
2134 2128 .word 4
2135 2129 .word 360536
2136 2130 .word 20484
2137 2131 .word 360536
2138 2132 .word 2052
2139 2133 .word 360536
2140 2134 .word 22532
2141 2135 .word 360536
2142 2136 .word 83886084
2143 2137 .word 360536
2144 2138 .word 83906564
2145 2139 .word 360536
2146 2140 .word 83888132
2147 2141 .word 360536
2148 2142 .word 83908612
2149 2143 .word 360536
2150 2144 .word 8388612
2151 2145 .word 360536
2152 2146 .word 8409092
2153 2147 .word 360536
2154 2148 .word 8390660
2155 2149 .word 360536
2156 2150 .word 8411140
2157 2151 .word 360536
2158 2152 .word 92274692
2159 2153 .word 360536
2160 2154 .word 92295172
2161 2155 .word 360536
2162 2156 .word 92276740
2163 2157 .word 360536
2164 2158 .word 92297220
2165 2159 .type des_ip_table,#object
2166 2160 .size des_ip_table,4096
2167 2161
2168 2162
2169 2163 .section ".data",#alloc
2170 2164 .align 32
2171 2165
2172 2166
2173 2167 des_enc_const:
2174 2168
2175 2169 #ifdef __sparcv9
2176 2170
2177 2171 !
2178 2172 ! For v9, the addresses ar 64-bit long, so we should use .xword
2179 2173 ! instead of .word, this makes the constant table bigger
2180 2174 !
2181 2175 .xword (des_ip_table+0x0) ! initial permutation table
2182 2176 .xword (des_ip_table+0x800)
2183 2177
2184 2178 .xword (des_fp_table+0x0) ! final permutation table
2185 2179
2186 2180 .xword (des_sbox_table+0x0) ! sboxes table
2187 2181 .xword (des_sbox_table+0x200)
2188 2182 .xword (des_sbox_table+0x400)
2189 2183 .xword (des_sbox_table+0x600)
2190 2184 .xword (des_sbox_table+0x800)
2191 2185 .xword (des_sbox_table+0xa00)
2192 2186 .xword (des_sbox_table+0xc00)
2193 2187 .xword (des_sbox_table+0xe00)
2194 2188
2195 2189 .word 0 ! for alignment
2196 2190 .word 7 ! counter for encrypt loop
2197 2191
2198 2192 .word 16515072 ! top_1
2199 2193 .word 0 !
2200 2194
2201 2195 .word 262143 ! mid_4
2202 2196 .word -67108864 !
2203 2197
2204 2198 .word 0 ! low_3
2205 2199 .word 67108608 !
2206 2200
2207 2201 .word -1431655766 ! 0xaaaaaaaaaaaaaaaa
2208 2202 .word -1431655766 !
2209 2203
2210 2204 .word 1431655765 ! 0x5555555555555555
2211 2205 .word 1431655765 !
2212 2206 #else
2213 2207
2214 2208 !
2215 2209 ! For v8, the addresses are 32-bit long
2216 2210 !
2217 2211
2218 2212 .word (des_ip_table+0x0) ! initial permutation table
2219 2213 .word (des_ip_table+0x800)
2220 2214
2221 2215 .word (des_fp_table+0x0) ! final permutation table
2222 2216
2223 2217 .word (des_sbox_table+0x0) ! sboxes table
2224 2218 .word (des_sbox_table+0x200)
2225 2219 .word (des_sbox_table+0x400)
2226 2220 .word (des_sbox_table+0x600)
2227 2221 .word (des_sbox_table+0x800)
2228 2222 .word (des_sbox_table+0xa00)
2229 2223 .word (des_sbox_table+0xc00)
2230 2224 .word (des_sbox_table+0xe00)
2231 2225
2232 2226 .word 7 ! counter for encrypt loop
2233 2227
2234 2228 .word 16515072 ! top_1
2235 2229 .word 0 !
2236 2230
2237 2231 .word 262143 ! mid_4
2238 2232 .word -67108864 !
2239 2233
2240 2234 .word 0 ! low_3
2241 2235 .word 67108608 !
2242 2236
2243 2237 .word -1431655766 ! 0xaaaaaaaaaaaaaaaa
2244 2238 .word -1431655766 !
2245 2239
2246 2240 .word 1431655765 ! 0x5555555555555555
2247 2241 .word 1431655765 !
2248 2242 #endif
2249 2243 .type des_enc_const,#object
2250 2244 .size des_enc_const,(.-des_enc_const)
2251 2245
2252 2246
2253 2247 .section ".text",#alloc,#execinstr
2254 2248 /* 000000 0 */ .align 32
2255 2249 /* 000000 */ .skip 32
2256 2250 !
2257 2251 ! SUBROUTINE des_crypt_impl
2258 2252 !
2259 2253 ! OFFSET SOURCE LINE LABEL INSTRUCTION
2260 2254
2261 2255 .global des_crypt_impl
2262 2256
2263 2257 ! uint64_t des_crypt_impl(uint64_t *ks, uint64_t block, int one_or_three);
2264 2258 !
2265 2259 ! ks is the key schedule, en/decryption is differentiated by computing
2266 2260 ! an encryption key schedule for encryption and the reverse of it
2267 2261 ! for decryption (for DES, 16 entries, for triple-DES, 48 entries)
2268 2262 ! block is the 64-bit block to en/decrypt
2269 2263 ! one_or_three is 1 for DES and 3 for triple-DES
2270 2264
2271 2265 des_crypt_impl:
2272 2266
2273 2267 #ifdef __sparcv9
2274 2268 save %sp,-192,%sp
2275 2269 #ifdef PIC
2276 2270 .L0:
2277 2271 call . + 8
2278 2272 sethi %hi(_GLOBAL_OFFSET_TABLE_ - (.L0 - .)), %o1
2279 2273 sethi %hi(des_enc_const), %g1
2280 2274
2281 2275 or %o1, %lo(_GLOBAL_OFFSET_TABLE_ - (.L0 - .)), %o1
2282 2276 or %g1, %lo(des_enc_const),%g1
2283 2277
2284 2278 add %o1, %o7, %o1
2285 2279 #else
2286 2280 sethi %hh(des_enc_const),%o1
2287 2281 sethi %lm(des_enc_const),%g1
2288 2282
2289 2283 or %o1,%hm(des_enc_const),%o1
2290 2284 or %g1,%lo(des_enc_const),%g1
2291 2285
2292 2286 sllx %o1,32,%o1
2293 2287 #endif
2294 2288 sethi %hi(0xaaaaaaaa), %g3
2295 2289
2296 2290 #ifdef PIC
2297 2291 ldx [%o1 + %g1], %i5
2298 2292 #else
2299 2293 or %o1,%g1,%i5 ! &des_enc_const
2300 2294 #endif
2301 2295 or %g3, %lo(0xaaaaaaaa), %g3
2302 2296
2303 2297 sllx %g3, 32, %o0
2304 2298
2305 2299 or %g3, %o0, %g3 ! 0xaaaaaaaaaaaaaaaa
2306 2300
2307 2301 srlx %g3, 1, %g2 ! 0x5555555555555555
2308 2302 and %i1, %g3, %g1
2309 2303
2310 2304 sllx %g1, 7, %g3
2311 2305 ldx [%i5 + 0], %l7 ! &(des_ip_table[0][0])
2312 2306 and %i1, %g2, %g2
2313 2307
2314 2308 srlx %g2, 7, %g4
2315 2309 ldx [%i5 + 8], %l6 ! &(des_ip_table[1][0])
2316 2310 or %g1, %g3, %g1
2317 2311
2318 2312 srlx %g1, 21, %o0
2319 2313 ld [%i5 + 92], %i4 ! 7 (for iteration counter)
2320 2314 or %g2, %g4, %g2
2321 2315
2322 2316 srlx %g1, 5, %o1
2323 2317 ldx [%i5 + 24], %l0 ! &(des_sbox_table[0][0])
2324 2318 and %o0, 0x7f8, %o0
2325 2319
2326 2320 srlx %g2, 13, %o2
2327 2321 ldx [%l7 + %o0], %o0
2328 2322 and %o1, 0x7f8, %o1
2329 2323
2330 2324 sllx %g2, 3, %o3
2331 2325 ldx [%l6 + %o1], %o1
2332 2326 and %o2, 0x7f8, %o2
2333 2327
2334 2328 srlx %g1, 53, %o4
2335 2329 ldx [%l7 + %o2], %o2
2336 2330 and %o3, 0x7f8, %o3
2337 2331
2338 2332 srlx %g1, 37, %o5
2339 2333 ldx [%l6 + %o3], %o3
2340 2334 and %o4, 0x7f8, %o4
2341 2335
2342 2336 srlx %g2, 45, %g1
2343 2337 ldx [%l7 + %o4], %o4
2344 2338 and %o5, 0x7f8, %o5
2345 2339
2346 2340 srlx %g2, 29, %g2
2347 2341 ldx [%l6 + %o5], %o5
2348 2342 and %g1, 0x7f8, %g1
2349 2343
2350 2344 sllx %o0, 6, %o0
2351 2345 ldx [%l7 + %g1], %g1
2352 2346 and %g2, 0x7f8, %g2
2353 2347
2354 2348 sllx %o1, 6, %o1
2355 2349 ldx [%l6 + %g2], %g2
2356 2350 or %o4, %o5, %o4
2357 2351
2358 2352 sllx %o2, 6, %o2
2359 2353 ldx [%i5 + 32], %l1 ! &(des_sbox_table[1][0])
2360 2354 or %o0, %o1, %o0
2361 2355
2362 2356 sllx %o3, 6, %o3
2363 2357 ldx [%i5 + 96], %g3 ! top_1
2364 2358 or %o0, %o4, %o0
2365 2359
2366 2360 or %g1, %g2, %g1
2367 2361 ldx [%i5 + 104], %g4 ! mid_4
2368 2362 or %o2, %o3, %o2
2369 2363
2370 2364 and %o0, %g3, %o4
2371 2365 ldx [%i5 + 112], %g2 ! low_3
2372 2366 or %o2, %g1, %o1
2373 2367
2374 2368 sllx %o4, 8, %o4
2375 2369 ldx [%i5 + 40], %l2 ! &(des_sbox_table[2][0])
2376 2370 and %o1, %g3, %o5
2377 2371
2378 2372 sllx %o5, 8, %o5
2379 2373 ldx [%i5 + 48], %l3 ! &(des_sbox_table[3][0])
2380 2374 and %o0, %g2, %o2
2381 2375
2382 2376 srlx %o2, 5, %o2
2383 2377 ldx [%i5 + 56], %l4 ! &(des_sbox_table[4][0])
2384 2378 and %o1, %g2, %o3
2385 2379
2386 2380 srlx %o3, 5, %o3
2387 2381 ldx [%i0], %g2 ! ks[0]
2388 2382 and %o0, %g4, %o0
2389 2383
2390 2384 or %o0, %o2, %o0
2391 2385 ldx [%i5 + 64], %l5 ! &(des_sbox_table[5][0])
2392 2386 and %o1, %g4, %o1
2393 2387
2394 2388 or %o0, %o4, %o0
2395 2389 ldx [%i5 + 72], %l6 ! &(des_sbox_table[6][0])
2396 2390 or %o1, %o3, %o1
2397 2391
2398 2392 xor %o0, %g2, %g1
2399 2393 ldx [%i5 + 80], %l7 ! &(des_sbox_table[7][0])
2400 2394 or %o1, %o5, %o1
2401 2395 #else
2402 2396
2403 2397 ! v8 version
2404 2398
2405 2399 save %sp,-144,%sp
2406 2400 sethi %hi(des_enc_const), %g2
2407 2401
2408 2402 #ifdef PIC
2409 2403 .L1:
2410 2404 call .+8
2411 2405
2412 2406 sethi %hi(_GLOBAL_OFFSET_TABLE_ - (.L1 - .)), %g1
2413 2407
2414 2408 or %g1, %lo(_GLOBAL_OFFSET_TABLE_ - (.L1 - .)), %g1
2415 2409 or %g2, %lo(des_enc_const), %g2
2416 2410 #else
2417 2411 or %g2, %lo(des_enc_const), %i5
2418 2412 #endif
2419 2413 srl %i2, 0, %g4
2420 2414 sethi %hi(0xaaaaaaaa), %g3
2421 2415
2422 2416 sllx %i1, 32, %g5
2423 2417 or %g3, %lo(0xaaaaaaaa), %g3
2424 2418
2425 2419 sllx %g3, 32, %o0
2426 2420 add %o7, %g1, %g1
2427 2421
2428 2422 or %g3, %o0, %g3 ! 0xaaaaaaaaaaaaaaaa
2429 2423 #ifdef PIC
2430 2424 ld [%g1 + %g2], %i5
2431 2425 #endif
2432 2426 or %g4, %g5, %g4
2433 2427
2434 2428 srlx %g3, 1, %g2 ! 0x5555555555555555
2435 2429 and %g4, %g3, %g1
2436 2430
2437 2431 sllx %g1, 7, %g3
2438 2432 ld [%i5 + 0], %l7 ! &(des_ip_table[0][0])
2439 2433 and %g4, %g2, %g2
2440 2434
2441 2435 srlx %g2, 7, %g4
2442 2436 ld [%i5 + 4], %l6 ! &(des_ip_table[1][0])
2443 2437 or %g1, %g3, %g1
2444 2438
2445 2439 srlx %g1, 21, %o0
2446 2440 ld [%i5 + 44], %i4 ! 7 (for iteration counter)
2447 2441 or %g2, %g4, %g2
2448 2442
2449 2443 srlx %g1, 5, %o1
2450 2444 ld [%i5 + 12], %l0 ! &(des_sbox_table[0][0])
2451 2445 and %o0, 0x7f8, %o0
2452 2446
2453 2447 srlx %g2, 13, %o2
2454 2448 ldx [%l7 + %o0], %o0
2455 2449 and %o1, 0x7f8, %o1
2456 2450
2457 2451 sllx %g2, 3, %o3
2458 2452 ldx [%l6 + %o1], %o1
2459 2453 and %o2, 0x7f8, %o2
2460 2454
2461 2455 srlx %g1, 53, %o4
2462 2456 ldx [%l7 + %o2], %o2
2463 2457 and %o3, 0x7f8, %o3
2464 2458
2465 2459 srlx %g1, 37, %o5
2466 2460 ldx [%l6 + %o3], %o3
2467 2461 and %o4, 0x7f8, %o4
2468 2462
2469 2463 srlx %g2, 45, %g1
2470 2464 ldx [%l7 + %o4], %o4
2471 2465 and %o5, 0x7f8, %o5
2472 2466
2473 2467 srlx %g2, 29, %g2
2474 2468 ldx [%l6 + %o5], %o5
2475 2469 and %g1, 0x7f8, %g1
2476 2470
2477 2471 sllx %o0, 6, %o0
2478 2472 ldx [%l7 + %g1], %g1
2479 2473 and %g2, 0x7f8, %g2
2480 2474
2481 2475 sllx %o1, 6, %o1
2482 2476 ldx [%l6 + %g2], %g2
2483 2477 or %o4, %o5, %o4
2484 2478
2485 2479 sllx %o2, 6, %o2
2486 2480 ld [%i5 + 16], %l1 ! &(des_sbox_table[1][0])
2487 2481 or %o0, %o1, %o0
2488 2482
2489 2483 sllx %o3, 6, %o3
2490 2484 ldx [%i5 + 48], %g3 ! top_1
2491 2485 or %o0, %o4, %o0
2492 2486
2493 2487 or %g1, %g2, %g1
2494 2488 ldx [%i5 + 56], %g4 ! mid_4
2495 2489 or %o2, %o3, %o2
2496 2490
2497 2491 and %o0, %g3, %o4
2498 2492 ldx [%i5 + 64], %g2 ! low_3
2499 2493 or %o2, %g1, %o1
2500 2494
2501 2495 sllx %o4, 8, %o4
2502 2496 ld [%i5 + 20], %l2 ! &(des_sbox_table[2][0])
2503 2497 and %o1, %g3, %o5
2504 2498
2505 2499 sllx %o5, 8, %o5
2506 2500 ld [%i5 + 24], %l3 ! &(des_sbox_table[3][0])
2507 2501 and %o0, %g2, %o2
2508 2502
2509 2503 srlx %o2, 5, %o2
2510 2504 ld [%i5 + 28], %l4 ! &(des_sbox_table[4][0])
2511 2505 and %o1, %g2, %o3
2512 2506
2513 2507 srlx %o3, 5, %o3
2514 2508 ldx [%i0], %g2 ! ks[0]
2515 2509 and %o0, %g4, %o0
2516 2510
2517 2511 or %o0, %o2, %o0
2518 2512 ld [%i5 + 32], %l5 ! &(des_sbox_table[5][0])
2519 2513 and %o1, %g4, %o1
2520 2514
2521 2515 or %o0, %o4, %o0
2522 2516 ld [%i5 + 36], %l6 ! &(des_sbox_table[6][0])
2523 2517 or %o1, %o3, %o1
2524 2518
2525 2519 xor %o0, %g2, %g1
2526 2520 ld [%i5 + 40], %l7 ! &(des_sbox_table[7][0])
2527 2521 or %o1, %o5, %o1
2528 2522
2529 2523 #endif
2530 2524 .L2:
2531 2525 srlx %g1, 55, %g1
2532 2526 xor %o0, %g2, %o5
2533 2527 .L3:
2534 2528 srlx %o5, 41, %g3
2535 2529 ldx [%l0 + %g1], %g1
2536 2530 and %o5, 0x1f8, %g2
2537 2531
2538 2532 srlx %o5, 29, %g4
2539 2533 ldx [%l7 + %g2], %g2
2540 2534 and %g3, 0x1f8, %g3
2541 2535
2542 2536 srlx %o5, 12, %o2
2543 2537 ldx [%l1 + %g3], %g3
2544 2538 and %g4, 0x1f8, %g4
2545 2539
2546 2540 srlx %o5, 35, %o3
2547 2541 ldx [%l3 + %g4], %g4
2548 2542 and %o2, 0x1f8, %o2
2549 2543
2550 2544 srlx %o5, 6, %o4
2551 2545 ldx [%l5 + %o2], %o2
2552 2546 and %o3, 0x1f8, %o3
2553 2547
2554 2548 or %g1, %g2, %g2
2555 2549 ldx [%l2 + %o3], %o3
2556 2550 and %o4, 0x1f8, %o4
2557 2551
2558 2552 srl %o5, 23, %o5
2559 2553 ldx [%l6 + %o4], %o4
2560 2554 or %g3, %g4, %g4
2561 2555
2562 2556 or %g2, %g4, %g4
2563 2557 ldx [%l4 + %o5], %o5
2564 2558 or %o2, %o3, %o3
2565 2559
2566 2560 or %g4, %o3, %o3
2567 2561 ldx [%i0 + 8], %g2
2568 2562 add %i0, 16, %i0
2569 2563
2570 2564 xor %o1, %o3, %o1
2571 2565 or %o4, %o5, %o5
2572 2566
2573 2567 xor %o1, %g2, %g1
2574 2568 xor %o1, %o5, %o1
2575 2569
2576 2570 srl %g1, 23, %g1
2577 2571 xor %o1, %g2, %o5
2578 2572
2579 2573 srlx %o5, 41, %g3
2580 2574 ldx [%l4 + %g1], %g1
2581 2575 and %o5, 0x1f8, %g2
2582 2576
2583 2577 srlx %o5, 29, %g4
2584 2578 ldx [%l7 + %g2], %g2
2585 2579 and %g3, 0x1f8, %g3
2586 2580
2587 2581 srlx %o5, 12, %o2
2588 2582 ldx [%l1 + %g3], %g3
2589 2583 and %g4, 0x1f8, %g4
2590 2584
2591 2585 srlx %o5, 6, %o3
2592 2586 ldx [%l3 + %g4], %g4
2593 2587 and %o2, 0x1f8, %o2
2594 2588
2595 2589 srlx %o5, 35, %o4
2596 2590 ldx [%l5 + %o2], %o2
2597 2591 and %o3, 0x1f8, %o3
2598 2592
2599 2593 or %g1, %g2, %g2
2600 2594 ldx [%l6 + %o3], %o3
2601 2595 and %o4, 0x1f8, %o4
2602 2596
2603 2597 srlx %o5, 55, %o5
2604 2598 ldx [%l2 + %o4], %o4
2605 2599 or %g3, %g4, %g4
2606 2600
2607 2601 or %g2, %g4, %g4
2608 2602 ldx [%l0 + %o5], %o5
2609 2603 or %o2, %o3, %o3
2610 2604
2611 2605 or %g4, %o3, %o3
2612 2606 ldx [%i0], %g2
2613 2607 subcc %i4,1,%i4
2614 2608
2615 2609 xor %o0, %o3, %o0
2616 2610 or %o4, %o5, %o5
2617 2611
2618 2612 xor %o0, %g2, %g1
2619 2613 ! bnz %icc, .L2
2620 2614 xor %o0, %o5, %o0
2621 2615
2622 2616 srlx %g1, 55, %g1
2623 2617 xor %o0, %g2, %o5
2624 2618
2625 2619 srlx %o5, 41, %g3
2626 2620 ldx [%l0 + %g1], %g1
2627 2621 and %o5, 0x1f8, %g2
2628 2622
2629 2623 srlx %o5, 29, %g4
2630 2624 ldx [%l7 + %g2], %g2
2631 2625 and %g3, 0x1f8, %g3
2632 2626
2633 2627 srlx %o5, 12, %o2
2634 2628 ldx [%l1 + %g3], %g3
2635 2629 and %g4, 0x1f8, %g4
2636 2630
2637 2631 srlx %o5, 35, %o3
2638 2632 ldx [%l3 + %g4], %g4
2639 2633 and %o2, 0x1f8, %o2
2640 2634
2641 2635 srlx %o5, 6, %o4
2642 2636 ldx [%l5 + %o2], %o2
2643 2637 and %o3, 0x1f8, %o3
2644 2638
2645 2639 or %g1, %g2, %g2
2646 2640 ldx [%l2 + %o3], %o3
2647 2641 and %o4, 0x1f8, %o4
2648 2642
2649 2643 srl %o5, 23, %o5
2650 2644 ldx [%l6 + %o4], %o4
2651 2645 or %g3, %g4, %g4
2652 2646
2653 2647 or %g2, %g4, %g4
2654 2648 ldx [%l4 + %o5], %o5
2655 2649 or %o2, %o3, %o3
2656 2650
2657 2651 or %g4, %o3, %o3
2658 2652 ldx [%i0 + 8], %g2
2659 2653 add %i0, 16, %i0
2660 2654
2661 2655 xor %o1, %o3, %o1
2662 2656 or %o4, %o5, %o5
2663 2657
2664 2658 xor %o1, %g2, %g1
2665 2659 xor %o1, %o5, %o1
2666 2660
2667 2661 srl %g1, 23, %g1
2668 2662 xor %o1, %g2, %o5
2669 2663
2670 2664 srlx %o5, 41, %g3
2671 2665 ldx [%l4 + %g1], %g1
2672 2666 and %o5, 0x1f8, %g2
2673 2667
2674 2668 srlx %o5, 29, %g4
2675 2669 ldx [%l7 + %g2], %g2
2676 2670 and %g3, 0x1f8, %g3
2677 2671
2678 2672 srlx %o5, 12, %o2
2679 2673 ldx [%l1 + %g3], %g3
2680 2674 and %g4, 0x1f8, %g4
2681 2675
2682 2676 srlx %o5, 6, %o3
2683 2677 ldx [%l3 + %g4], %g4
2684 2678 and %o2, 0x1f8, %o2
2685 2679
2686 2680 srlx %o5, 35, %o4
2687 2681 ldx [%l5 + %o2], %o2
2688 2682 and %o3, 0x1f8, %o3
2689 2683
2690 2684 or %g1, %g2, %g2
2691 2685 ldx [%l6 + %o3], %o3
2692 2686 and %o4, 0x1f8, %o4
2693 2687
2694 2688 srlx %o5, 55, %o5
2695 2689 ldx [%l2 + %o4], %o4
2696 2690 or %g3, %g4, %g4
2697 2691
2698 2692 or %g2, %g4, %g4
2699 2693 ldx [%l0 + %o5], %o5
2700 2694 or %o2, %o3, %o3
2701 2695
2702 2696 or %g4, %o3, %o3
2703 2697 ldx [%i0], %g2
2704 2698 subcc %i4,1,%i4
2705 2699
2706 2700 xor %o0, %o3, %o0
2707 2701 or %o4, %o5, %o5
2708 2702
2709 2703 xor %o0, %g2, %g1
2710 2704 ! bnz %icc, .L2
2711 2705 xor %o0, %o5, %o0
2712 2706
2713 2707 srlx %g1, 55, %g1
2714 2708 xor %o0, %g2, %o5
2715 2709
2716 2710 srlx %o5, 41, %g3
2717 2711 ldx [%l0 + %g1], %g1
2718 2712 and %o5, 0x1f8, %g2
2719 2713
2720 2714 srlx %o5, 29, %g4
2721 2715 ldx [%l7 + %g2], %g2
2722 2716 and %g3, 0x1f8, %g3
2723 2717
2724 2718 srlx %o5, 12, %o2
2725 2719 ldx [%l1 + %g3], %g3
2726 2720 and %g4, 0x1f8, %g4
2727 2721
2728 2722 srlx %o5, 35, %o3
2729 2723 ldx [%l3 + %g4], %g4
2730 2724 and %o2, 0x1f8, %o2
2731 2725
2732 2726 srlx %o5, 6, %o4
2733 2727 ldx [%l5 + %o2], %o2
2734 2728 and %o3, 0x1f8, %o3
2735 2729
2736 2730 or %g1, %g2, %g2
2737 2731 ldx [%l2 + %o3], %o3
2738 2732 and %o4, 0x1f8, %o4
2739 2733
2740 2734 srl %o5, 23, %o5
2741 2735 ldx [%l6 + %o4], %o4
2742 2736 or %g3, %g4, %g4
2743 2737
2744 2738 or %g2, %g4, %g4
2745 2739 ldx [%l4 + %o5], %o5
2746 2740 or %o2, %o3, %o3
2747 2741
2748 2742 or %g4, %o3, %o3
2749 2743 ldx [%i0 + 8], %g2
2750 2744 add %i0, 16, %i0
2751 2745
2752 2746 xor %o1, %o3, %o1
2753 2747 or %o4, %o5, %o5
2754 2748
2755 2749 xor %o1, %g2, %g1
2756 2750 xor %o1, %o5, %o1
2757 2751
2758 2752 srl %g1, 23, %g1
2759 2753 xor %o1, %g2, %o5
2760 2754
2761 2755 srlx %o5, 41, %g3
2762 2756 ldx [%l4 + %g1], %g1
2763 2757 and %o5, 0x1f8, %g2
2764 2758
2765 2759 srlx %o5, 29, %g4
2766 2760 ldx [%l7 + %g2], %g2
2767 2761 and %g3, 0x1f8, %g3
2768 2762
2769 2763 srlx %o5, 12, %o2
2770 2764 ldx [%l1 + %g3], %g3
2771 2765 and %g4, 0x1f8, %g4
2772 2766
2773 2767 srlx %o5, 6, %o3
2774 2768 ldx [%l3 + %g4], %g4
2775 2769 and %o2, 0x1f8, %o2
2776 2770
2777 2771 srlx %o5, 35, %o4
2778 2772 ldx [%l5 + %o2], %o2
2779 2773 and %o3, 0x1f8, %o3
2780 2774
2781 2775 or %g1, %g2, %g2
2782 2776 ldx [%l6 + %o3], %o3
2783 2777 and %o4, 0x1f8, %o4
2784 2778
2785 2779 srlx %o5, 55, %o5
2786 2780 ldx [%l2 + %o4], %o4
2787 2781 or %g3, %g4, %g4
2788 2782
2789 2783 or %g2, %g4, %g4
2790 2784 ldx [%l0 + %o5], %o5
2791 2785 or %o2, %o3, %o3
2792 2786
2793 2787 or %g4, %o3, %o3
2794 2788 ldx [%i0], %g2
2795 2789 subcc %i4,1,%i4
2796 2790
2797 2791 xor %o0, %o3, %o0
2798 2792 or %o4, %o5, %o5
2799 2793
2800 2794 xor %o0, %g2, %g1
2801 2795 ! bnz %icc, .L2
2802 2796 xor %o0, %o5, %o0
2803 2797
2804 2798 srlx %g1, 55, %g1
2805 2799 xor %o0, %g2, %o5
2806 2800
2807 2801 srlx %o5, 41, %g3
2808 2802 ldx [%l0 + %g1], %g1
2809 2803 and %o5, 0x1f8, %g2
2810 2804
2811 2805 srlx %o5, 29, %g4
2812 2806 ldx [%l7 + %g2], %g2
2813 2807 and %g3, 0x1f8, %g3
2814 2808
2815 2809 srlx %o5, 12, %o2
2816 2810 ldx [%l1 + %g3], %g3
2817 2811 and %g4, 0x1f8, %g4
2818 2812
2819 2813 srlx %o5, 35, %o3
2820 2814 ldx [%l3 + %g4], %g4
2821 2815 and %o2, 0x1f8, %o2
2822 2816
2823 2817 srlx %o5, 6, %o4
2824 2818 ldx [%l5 + %o2], %o2
2825 2819 and %o3, 0x1f8, %o3
2826 2820
2827 2821 or %g1, %g2, %g2
2828 2822 ldx [%l2 + %o3], %o3
2829 2823 and %o4, 0x1f8, %o4
2830 2824
2831 2825 srl %o5, 23, %o5
2832 2826 ldx [%l6 + %o4], %o4
2833 2827 or %g3, %g4, %g4
2834 2828
2835 2829 or %g2, %g4, %g4
2836 2830 ldx [%l4 + %o5], %o5
2837 2831 or %o2, %o3, %o3
2838 2832
2839 2833 or %g4, %o3, %o3
2840 2834 ldx [%i0 + 8], %g2
2841 2835 add %i0, 16, %i0
2842 2836
2843 2837 xor %o1, %o3, %o1
2844 2838 or %o4, %o5, %o5
2845 2839
2846 2840 xor %o1, %g2, %g1
2847 2841 xor %o1, %o5, %o1
2848 2842
2849 2843 srl %g1, 23, %g1
2850 2844 xor %o1, %g2, %o5
2851 2845
2852 2846 srlx %o5, 41, %g3
2853 2847 ldx [%l4 + %g1], %g1
2854 2848 and %o5, 0x1f8, %g2
2855 2849
2856 2850 srlx %o5, 29, %g4
2857 2851 ldx [%l7 + %g2], %g2
2858 2852 and %g3, 0x1f8, %g3
2859 2853
2860 2854 srlx %o5, 12, %o2
2861 2855 ldx [%l1 + %g3], %g3
2862 2856 and %g4, 0x1f8, %g4
2863 2857
2864 2858 srlx %o5, 6, %o3
2865 2859 ldx [%l3 + %g4], %g4
2866 2860 and %o2, 0x1f8, %o2
2867 2861
2868 2862 srlx %o5, 35, %o4
2869 2863 ldx [%l5 + %o2], %o2
2870 2864 and %o3, 0x1f8, %o3
2871 2865
2872 2866 or %g1, %g2, %g2
2873 2867 ldx [%l6 + %o3], %o3
2874 2868 and %o4, 0x1f8, %o4
2875 2869
2876 2870 srlx %o5, 55, %o5
2877 2871 ldx [%l2 + %o4], %o4
2878 2872 or %g3, %g4, %g4
2879 2873
2880 2874 or %g2, %g4, %g4
2881 2875 ldx [%l0 + %o5], %o5
2882 2876 or %o2, %o3, %o3
2883 2877
2884 2878 or %g4, %o3, %o3
2885 2879 ldx [%i0], %g2
2886 2880 subcc %i4,1,%i4
2887 2881
2888 2882 xor %o0, %o3, %o0
2889 2883 or %o4, %o5, %o5
2890 2884
2891 2885 xor %o0, %g2, %g1
2892 2886 ! bnz %icc, .L2
2893 2887 xor %o0, %o5, %o0
2894 2888
2895 2889 srlx %g1, 55, %g1
2896 2890 xor %o0, %g2, %o5
2897 2891
2898 2892 srlx %o5, 41, %g3
2899 2893 ldx [%l0 + %g1], %g1
2900 2894 and %o5, 0x1f8, %g2
2901 2895
2902 2896 srlx %o5, 29, %g4
2903 2897 ldx [%l7 + %g2], %g2
2904 2898 and %g3, 0x1f8, %g3
2905 2899
2906 2900 srlx %o5, 12, %o2
2907 2901 ldx [%l1 + %g3], %g3
2908 2902 and %g4, 0x1f8, %g4
2909 2903
2910 2904 srlx %o5, 35, %o3
2911 2905 ldx [%l3 + %g4], %g4
2912 2906 and %o2, 0x1f8, %o2
2913 2907
2914 2908 srlx %o5, 6, %o4
2915 2909 ldx [%l5 + %o2], %o2
2916 2910 and %o3, 0x1f8, %o3
2917 2911
2918 2912 or %g1, %g2, %g2
2919 2913 ldx [%l2 + %o3], %o3
2920 2914 and %o4, 0x1f8, %o4
2921 2915
2922 2916 srl %o5, 23, %o5
2923 2917 ldx [%l6 + %o4], %o4
2924 2918 or %g3, %g4, %g4
2925 2919
2926 2920 or %g2, %g4, %g4
2927 2921 ldx [%l4 + %o5], %o5
2928 2922 or %o2, %o3, %o3
2929 2923
2930 2924 or %g4, %o3, %o3
2931 2925 ldx [%i0 + 8], %g2
2932 2926 add %i0, 16, %i0
2933 2927
2934 2928 xor %o1, %o3, %o1
2935 2929 or %o4, %o5, %o5
2936 2930
2937 2931 xor %o1, %g2, %g1
2938 2932 xor %o1, %o5, %o1
2939 2933
2940 2934 srl %g1, 23, %g1
2941 2935 xor %o1, %g2, %o5
2942 2936
2943 2937 srlx %o5, 41, %g3
2944 2938 ldx [%l4 + %g1], %g1
2945 2939 and %o5, 0x1f8, %g2
2946 2940
2947 2941 srlx %o5, 29, %g4
2948 2942 ldx [%l7 + %g2], %g2
2949 2943 and %g3, 0x1f8, %g3
2950 2944
2951 2945 srlx %o5, 12, %o2
2952 2946 ldx [%l1 + %g3], %g3
2953 2947 and %g4, 0x1f8, %g4
2954 2948
2955 2949 srlx %o5, 6, %o3
2956 2950 ldx [%l3 + %g4], %g4
2957 2951 and %o2, 0x1f8, %o2
2958 2952
2959 2953 srlx %o5, 35, %o4
2960 2954 ldx [%l5 + %o2], %o2
2961 2955 and %o3, 0x1f8, %o3
2962 2956
2963 2957 or %g1, %g2, %g2
2964 2958 ldx [%l6 + %o3], %o3
2965 2959 and %o4, 0x1f8, %o4
2966 2960
2967 2961 srlx %o5, 55, %o5
2968 2962 ldx [%l2 + %o4], %o4
2969 2963 or %g3, %g4, %g4
2970 2964
2971 2965 or %g2, %g4, %g4
2972 2966 ldx [%l0 + %o5], %o5
2973 2967 or %o2, %o3, %o3
2974 2968
2975 2969 or %g4, %o3, %o3
2976 2970 ldx [%i0], %g2
2977 2971 subcc %i4,1,%i4
2978 2972
2979 2973 xor %o0, %o3, %o0
2980 2974 or %o4, %o5, %o5
2981 2975
2982 2976 xor %o0, %g2, %g1
2983 2977 ! bnz %icc, .L2
2984 2978 xor %o0, %o5, %o0
2985 2979
2986 2980 srlx %g1, 55, %g1
2987 2981 xor %o0, %g2, %o5
2988 2982
2989 2983 srlx %o5, 41, %g3
2990 2984 ldx [%l0 + %g1], %g1
2991 2985 and %o5, 0x1f8, %g2
2992 2986
2993 2987 srlx %o5, 29, %g4
2994 2988 ldx [%l7 + %g2], %g2
2995 2989 and %g3, 0x1f8, %g3
2996 2990
2997 2991 srlx %o5, 12, %o2
2998 2992 ldx [%l1 + %g3], %g3
2999 2993 and %g4, 0x1f8, %g4
3000 2994
3001 2995 srlx %o5, 35, %o3
3002 2996 ldx [%l3 + %g4], %g4
3003 2997 and %o2, 0x1f8, %o2
3004 2998
3005 2999 srlx %o5, 6, %o4
3006 3000 ldx [%l5 + %o2], %o2
3007 3001 and %o3, 0x1f8, %o3
3008 3002
3009 3003 or %g1, %g2, %g2
3010 3004 ldx [%l2 + %o3], %o3
3011 3005 and %o4, 0x1f8, %o4
3012 3006
3013 3007 srl %o5, 23, %o5
3014 3008 ldx [%l6 + %o4], %o4
3015 3009 or %g3, %g4, %g4
3016 3010
3017 3011 or %g2, %g4, %g4
3018 3012 ldx [%l4 + %o5], %o5
3019 3013 or %o2, %o3, %o3
3020 3014
3021 3015 or %g4, %o3, %o3
3022 3016 ldx [%i0 + 8], %g2
3023 3017 add %i0, 16, %i0
3024 3018
3025 3019 xor %o1, %o3, %o1
3026 3020 or %o4, %o5, %o5
3027 3021
3028 3022 xor %o1, %g2, %g1
3029 3023 xor %o1, %o5, %o1
3030 3024
3031 3025 srl %g1, 23, %g1
3032 3026 xor %o1, %g2, %o5
3033 3027
3034 3028 srlx %o5, 41, %g3
3035 3029 ldx [%l4 + %g1], %g1
3036 3030 and %o5, 0x1f8, %g2
3037 3031
3038 3032 srlx %o5, 29, %g4
3039 3033 ldx [%l7 + %g2], %g2
3040 3034 and %g3, 0x1f8, %g3
3041 3035
3042 3036 srlx %o5, 12, %o2
3043 3037 ldx [%l1 + %g3], %g3
3044 3038 and %g4, 0x1f8, %g4
3045 3039
3046 3040 srlx %o5, 6, %o3
3047 3041 ldx [%l3 + %g4], %g4
3048 3042 and %o2, 0x1f8, %o2
3049 3043
3050 3044 srlx %o5, 35, %o4
3051 3045 ldx [%l5 + %o2], %o2
3052 3046 and %o3, 0x1f8, %o3
3053 3047
3054 3048 or %g1, %g2, %g2
3055 3049 ldx [%l6 + %o3], %o3
3056 3050 and %o4, 0x1f8, %o4
3057 3051
3058 3052 srlx %o5, 55, %o5
3059 3053 ldx [%l2 + %o4], %o4
3060 3054 or %g3, %g4, %g4
3061 3055
3062 3056 or %g2, %g4, %g4
3063 3057 ldx [%l0 + %o5], %o5
3064 3058 or %o2, %o3, %o3
3065 3059
3066 3060 or %g4, %o3, %o3
3067 3061 ldx [%i0], %g2
3068 3062 subcc %i4,1,%i4
3069 3063
3070 3064 xor %o0, %o3, %o0
3071 3065 or %o4, %o5, %o5
3072 3066
3073 3067 xor %o0, %g2, %g1
3074 3068 ! bnz %icc, .L2
3075 3069 xor %o0, %o5, %o0
3076 3070
3077 3071 srlx %g1, 55, %g1
3078 3072 xor %o0, %g2, %o5
3079 3073
3080 3074 srlx %o5, 41, %g3
3081 3075 ldx [%l0 + %g1], %g1
3082 3076 and %o5, 0x1f8, %g2
3083 3077
3084 3078 srlx %o5, 29, %g4
3085 3079 ldx [%l7 + %g2], %g2
3086 3080 and %g3, 0x1f8, %g3
3087 3081
3088 3082 srlx %o5, 12, %o2
3089 3083 ldx [%l1 + %g3], %g3
3090 3084 and %g4, 0x1f8, %g4
3091 3085
3092 3086 srlx %o5, 35, %o3
3093 3087 ldx [%l3 + %g4], %g4
3094 3088 and %o2, 0x1f8, %o2
3095 3089
3096 3090 srlx %o5, 6, %o4
3097 3091 ldx [%l5 + %o2], %o2
3098 3092 and %o3, 0x1f8, %o3
3099 3093
3100 3094 or %g1, %g2, %g2
3101 3095 ldx [%l2 + %o3], %o3
3102 3096 and %o4, 0x1f8, %o4
3103 3097
3104 3098 srl %o5, 23, %o5
3105 3099 ldx [%l6 + %o4], %o4
3106 3100 or %g3, %g4, %g4
3107 3101
3108 3102 or %g2, %g4, %g4
3109 3103 ldx [%l4 + %o5], %o5
3110 3104 or %o2, %o3, %o3
3111 3105
3112 3106 or %g4, %o3, %o3
3113 3107 ldx [%i0 + 8], %g2
3114 3108 add %i0, 16, %i0
3115 3109
3116 3110 xor %o1, %o3, %o1
3117 3111 or %o4, %o5, %o5
3118 3112
3119 3113 xor %o1, %g2, %g1
3120 3114 xor %o1, %o5, %o1
3121 3115
3122 3116 srl %g1, 23, %g1
3123 3117 xor %o1, %g2, %o5
3124 3118
3125 3119 srlx %o5, 41, %g3
3126 3120 ldx [%l4 + %g1], %g1
3127 3121 and %o5, 0x1f8, %g2
3128 3122
3129 3123 srlx %o5, 29, %g4
3130 3124 ldx [%l7 + %g2], %g2
3131 3125 and %g3, 0x1f8, %g3
3132 3126
3133 3127 srlx %o5, 12, %o2
3134 3128 ldx [%l1 + %g3], %g3
3135 3129 and %g4, 0x1f8, %g4
3136 3130
3137 3131 srlx %o5, 6, %o3
3138 3132 ldx [%l3 + %g4], %g4
3139 3133 and %o2, 0x1f8, %o2
3140 3134
3141 3135 srlx %o5, 35, %o4
3142 3136 ldx [%l5 + %o2], %o2
3143 3137 and %o3, 0x1f8, %o3
3144 3138
3145 3139 or %g1, %g2, %g2
3146 3140 ldx [%l6 + %o3], %o3
3147 3141 and %o4, 0x1f8, %o4
3148 3142
3149 3143 srlx %o5, 55, %o5
3150 3144 ldx [%l2 + %o4], %o4
3151 3145 or %g3, %g4, %g4
3152 3146
3153 3147 or %g2, %g4, %g4
3154 3148 ldx [%l0 + %o5], %o5
3155 3149 or %o2, %o3, %o3
3156 3150
3157 3151 or %g4, %o3, %o3
3158 3152 ldx [%i0], %g2
3159 3153 subcc %i4,1,%i4
3160 3154
3161 3155 xor %o0, %o3, %o0
3162 3156 or %o4, %o5, %o5
3163 3157
3164 3158 xor %o0, %g2, %g1
3165 3159 ! bnz %icc, .L2
3166 3160 xor %o0, %o5, %o0
3167 3161
3168 3162 srlx %g1, 55, %g1
3169 3163 xor %o0, %g2, %o5
3170 3164
3171 3165 srlx %o5, 41, %g3
3172 3166 ldx [%l0 + %g1], %g1
3173 3167 and %o5, 0x1f8, %g2
3174 3168
3175 3169 srlx %o5, 29, %g4
3176 3170 ldx [%l7 + %g2], %g2
3177 3171 and %g3, 0x1f8, %g3
3178 3172
3179 3173 srlx %o5, 12, %o2
3180 3174 ldx [%l1 + %g3], %g3
3181 3175 and %g4, 0x1f8, %g4
3182 3176
3183 3177 srlx %o5, 35, %o3
3184 3178 ldx [%l3 + %g4], %g4
3185 3179 and %o2, 0x1f8, %o2
3186 3180
3187 3181 srlx %o5, 6, %o4
3188 3182 ldx [%l5 + %o2], %o2
3189 3183 and %o3, 0x1f8, %o3
3190 3184
3191 3185 or %g1, %g2, %g2
3192 3186 ldx [%l2 + %o3], %o3
3193 3187 and %o4, 0x1f8, %o4
3194 3188
3195 3189 srl %o5, 23, %o5
3196 3190 ldx [%l6 + %o4], %o4
3197 3191 or %g3, %g4, %g4
3198 3192
3199 3193 or %g2, %g4, %g4
3200 3194 ldx [%l4 + %o5], %o5
3201 3195 or %o2, %o3, %o3
3202 3196
3203 3197 or %g4, %o3, %o3
3204 3198 ldx [%i0 + 8], %g2
3205 3199 #ifdef __sparcv9
3206 3200 subcc %i2, 1, %i2 ! one_or_three for v9
3207 3201 #else
3208 3202 subcc %i3, 1, %i3 ! one_or_three for v8
3209 3203 #endif
3210 3204
3211 3205 xor %o1, %o3, %o1
3212 3206 or %o4, %o5, %o5
3213 3207
3214 3208 xor %o1, %g2, %g1
3215 3209 xor %o1, %o5, %g5
3216 3210
3217 3211 srl %g1, 23, %g1
3218 3212 xor %g5, %g2, %o5
3219 3213
3220 3214 srlx %o5, 41, %g3
3221 3215 ldx [%l4 + %g1], %g1
3222 3216 and %o5, 0x1f8, %g2
3223 3217
3224 3218 srlx %o5, 29, %g4
3225 3219 ldx [%l7 + %g2], %g2
3226 3220 and %g3, 0x1f8, %g3
3227 3221
3228 3222 srlx %o5, 12, %o2
3229 3223 ldx [%l1 + %g3], %g3
3230 3224 and %g4, 0x1f8, %g4
3231 3225
3232 3226 srlx %o5, 6, %o3
3233 3227 ldx [%l3 + %g4], %g4
3234 3228 and %o2, 0x1f8, %o2
3235 3229
3236 3230 srlx %o5, 35, %o4
3237 3231 ldx [%l5 + %o2], %o2
3238 3232 and %o3, 0x1f8, %o3
3239 3233
3240 3234 or %g1, %g2, %g2
3241 3235 ldx [%l6 + %o3], %o3
3242 3236 and %o4, 0x1f8, %o4
3243 3237
3244 3238 srlx %o5, 55, %o5
3245 3239 ldx [%l2 + %o4], %o4
3246 3240 or %g3, %g4, %g4
3247 3241
3248 3242 or %g2, %g4, %g4
3249 3243 ldx [%l0 + %o5], %o5
3250 3244 bz,pn %icc, .L4 ! if finished (one or three iterations
3251 3245 or %o2, %o3, %o3 ! of the 16 rounds), go to final perm.
3252 3246
3253 3247 or %g4, %o3, %o3
3254 3248 ldx [%i0 + 16], %g2
3255 3249 add %i0, 16, %i0
3256 3250
3257 3251 xor %o0, %o3, %o0
3258 3252 or %o4, %o5, %o4
3259 3253
3260 3254 xor %g5, %g2, %o5
3261 3255 xor %o0, %o4, %o1
3262 3256
3263 3257 srlx %o5, 55, %g1
3264 3258 ba .L3
3265 3259 or %g5, %g0, %o0
3266 3260
3267 3261
3268 3262 .L4:
3269 3263 or %g4, %o3, %o3
3270 3264 #ifdef __sparcv9
3271 3265 ldx [%i5 + 16], %i5 ! &(dec_fp_table[0])
3272 3266 #else
3273 3267 ld [%i5 + 8], %i5 ! &(dec_fp_table[0])
3274 3268 #endif
3275 3269 or %g0, 0xf, %g4
3276 3270
3277 3271 xor %o0, %o3, %o0
3278 3272 or %o4, %o5, %o5
3279 3273
3280 3274 sllx %g4, 59, %g4 ! mask for bits 1-4
3281 3275 xor %o0, %o5, %o0
3282 3276
3283 3277 ! fp starts here
3284 3278
3285 3279 srlx %o0, 33, %g1
3286 3280 and %o0, %g4, %g2
3287 3281
3288 3282 srlx %g5, 37, %l0
3289 3283 and %g5, %g4, %g3
3290 3284
3291 3285 srlx %g2, 53, %g2
3292 3286 and %g1, 0x3c0, %g1
3293 3287
3294 3288 srlx %g3, 57, %l1
3295 3289 and %l0, 0x3c, %l0
3296 3290
3297 3291 srlx %o0, 21, %g3
3298 3292 or %g1, %l0, %l0
3299 3293
3300 3294 srlx %g5, 25, %l2
3301 3295 ld [%i5 + %l0], %l0
3302 3296 or %l1, %g2, %l1
3303 3297
3304 3298 srlx %o0, 4, %g4
3305 3299 ld [%i5 + %l1], %l1
3306 3300 and %g3, 0x3c0, %g3
3307 3301
3308 3302 srlx %g5, 8, %l3
3309 3303 and %l2, 0x3c, %l2
3310 3304
3311 3305 srlx %o0, 27, %g1
3312 3306 or %l2, %g3, %l2
3313 3307
3314 3308 srlx %g5, 31, %l4
3315 3309 ld [%i5 + %l2], %l2
3316 3310 and %g4, 0x3c0, %g4
3317 3311
3318 3312 and %l3, 0x3c, %l3
3319 3313 and %g1, 0x3c0, %g1
3320 3314
3321 3315 srlx %o0, 10, %g2
3322 3316 or %l3, %g4, %l3
3323 3317
3324 3318 srlx %g5, 14, %l5
3325 3319 ld [%i5 + %l3], %l3
3326 3320 and %l4, 0x3c, %l4
3327 3321
3328 3322 sllx %o0, 2, %g3
3329 3323 or %l4, %g1, %l4
3330 3324
3331 3325 srlx %g5, 2, %l6
3332 3326 ld [%i5 + %l4], %l4
3333 3327 and %g2, 0x3c0, %g2
3334 3328
3335 3329 srlx %o0, 39, %g4
3336 3330 and %l5, 0x3c, %l5
3337 3331
3338 3332 and %g3, 0x3c0, %g3
3339 3333 or %l5, %g2, %l5
3340 3334
3341 3335 srlx %g5, 43, %l7
3342 3336 ld [%i5 + %l5], %l5
3343 3337 and %l6, 0x3c, %l6
3344 3338
3345 3339 and %g4, 0x3c0, %g4
3346 3340 or %l6, %g3, %l6
3347 3341
3348 3342 srl %l0, 2, %l0
3349 3343 ld [%i5 + %l6], %l6
3350 3344 and %l7, 0x3c, %l7
3351 3345
3352 3346 srl %l2, 4, %l2
3353 3347 or %l7, %g4, %l7
3354 3348
3355 3349 srl %l4, 2, %l4
3356 3350 ld [%i5 + %l7], %l7
3357 3351 or %l0, %l1, %l1
3358 3352
3359 3353 srl %l5, 4, %l5
3360 3354 or %l1, %l2, %l2
3361 3355
3362 3356 srl %l6, 6, %l6
3363 3357 or %l4, %l5, %l5
3364 3358
3365 3359 srl %l3, 6, %l3
3366 3360 or %l6, %l7, %l7
3367 3361
3368 3362 or %l2, %l3, %i1
3369 3363 or %l5, %l7, %i0
3370 3364
3371 3365 !
3372 3366 ! result at this point is in i0-i1, just as it should for v8
3373 3367 !
3374 3368 #ifdef __sparcv9
3375 3369 srl %i1, 0, %i1
3376 3370
3377 3371 sllx %i0, 32, %i0
3378 3372
3379 3373 or %i0, %i1, %i0
3380 3374 #endif
3381 3375
3382 3376
3383 3377 ret
3384 3378 restore %g0,%g0,%g0
3385 3379 .type des_crypt_impl,2
3386 3380 .size des_crypt_impl,(.-des_crypt_impl)
3387 3381
3388 3382 .align 32
3389 3383 !
3390 3384 ! CONSTANT POOL
3391 3385 !
3392 3386 des_fp_table:
3393 3387 .word 0
3394 3388 .word -2147483648
3395 3389 .word 8388608
3396 3390 .word -2139095040
3397 3391 .word 32768
3398 3392 .word -2147450880
3399 3393 .word 8421376
3400 3394 .word -2139062272
3401 3395 .word 128
3402 3396 .word -2147483520
3403 3397 .word 8388736
3404 3398 .word -2139094912
3405 3399 .word 32896
3406 3400 .word -2147450752
3407 3401 .word 8421504
3408 3402 .word -2139062144
3409 3403 .word 1073741824
3410 3404 .word -1073741824
3411 3405 .word 1082130432
3412 3406 .word -1065353216
3413 3407 .word 1073774592
3414 3408 .word -1073709056
3415 3409 .word 1082163200
3416 3410 .word -1065320448
3417 3411 .word 1073741952
3418 3412 .word -1073741696
3419 3413 .word 1082130560
3420 3414 .word -1065353088
3421 3415 .word 1073774720
3422 3416 .word -1073708928
3423 3417 .word 1082163328
3424 3418 .word -1065320320
3425 3419 .word 4194304
3426 3420 .word -2143289344
3427 3421 .word 12582912
3428 3422 .word -2134900736
3429 3423 .word 4227072
3430 3424 .word -2143256576
3431 3425 .word 12615680
3432 3426 .word -2134867968
3433 3427 .word 4194432
3434 3428 .word -2143289216
3435 3429 .word 12583040
3436 3430 .word -2134900608
3437 3431 .word 4227200
3438 3432 .word -2143256448
3439 3433 .word 12615808
3440 3434 .word -2134867840
3441 3435 .word 1077936128
3442 3436 .word -1069547520
3443 3437 .word 1086324736
3444 3438 .word -1061158912
3445 3439 .word 1077968896
3446 3440 .word -1069514752
3447 3441 .word 1086357504
3448 3442 .word -1061126144
3449 3443 .word 1077936256
3450 3444 .word -1069547392
3451 3445 .word 1086324864
3452 3446 .word -1061158784
3453 3447 .word 1077969024
3454 3448 .word -1069514624
3455 3449 .word 1086357632
3456 3450 .word -1061126016
3457 3451 .word 16384
3458 3452 .word -2147467264
3459 3453 .word 8404992
3460 3454 .word -2139078656
3461 3455 .word 49152
3462 3456 .word -2147434496
3463 3457 .word 8437760
3464 3458 .word -2139045888
3465 3459 .word 16512
3466 3460 .word -2147467136
3467 3461 .word 8405120
3468 3462 .word -2139078528
3469 3463 .word 49280
3470 3464 .word -2147434368
3471 3465 .word 8437888
3472 3466 .word -2139045760
3473 3467 .word 1073758208
3474 3468 .word -1073725440
3475 3469 .word 1082146816
3476 3470 .word -1065336832
3477 3471 .word 1073790976
3478 3472 .word -1073692672
3479 3473 .word 1082179584
3480 3474 .word -1065304064
3481 3475 .word 1073758336
3482 3476 .word -1073725312
3483 3477 .word 1082146944
3484 3478 .word -1065336704
3485 3479 .word 1073791104
3486 3480 .word -1073692544
3487 3481 .word 1082179712
3488 3482 .word -1065303936
3489 3483 .word 4210688
3490 3484 .word -2143272960
3491 3485 .word 12599296
3492 3486 .word -2134884352
3493 3487 .word 4243456
3494 3488 .word -2143240192
3495 3489 .word 12632064
3496 3490 .word -2134851584
3497 3491 .word 4210816
3498 3492 .word -2143272832
3499 3493 .word 12599424
3500 3494 .word -2134884224
3501 3495 .word 4243584
3502 3496 .word -2143240064
3503 3497 .word 12632192
3504 3498 .word -2134851456
3505 3499 .word 1077952512
3506 3500 .word -1069531136
3507 3501 .word 1086341120
3508 3502 .word -1061142528
3509 3503 .word 1077985280
3510 3504 .word -1069498368
3511 3505 .word 1086373888
3512 3506 .word -1061109760
3513 3507 .word 1077952640
3514 3508 .word -1069531008
3515 3509 .word 1086341248
3516 3510 .word -1061142400
3517 3511 .word 1077985408
3518 3512 .word -1069498240
3519 3513 .word 1086374016
3520 3514 .word -1061109632
3521 3515 .word 64
3522 3516 .word -2147483584
3523 3517 .word 8388672
3524 3518 .word -2139094976
3525 3519 .word 32832
3526 3520 .word -2147450816
3527 3521 .word 8421440
3528 3522 .word -2139062208
3529 3523 .word 192
3530 3524 .word -2147483456
3531 3525 .word 8388800
3532 3526 .word -2139094848
3533 3527 .word 32960
3534 3528 .word -2147450688
3535 3529 .word 8421568
3536 3530 .word -2139062080
3537 3531 .word 1073741888
3538 3532 .word -1073741760
3539 3533 .word 1082130496
3540 3534 .word -1065353152
3541 3535 .word 1073774656
3542 3536 .word -1073708992
3543 3537 .word 1082163264
3544 3538 .word -1065320384
3545 3539 .word 1073742016
3546 3540 .word -1073741632
3547 3541 .word 1082130624
3548 3542 .word -1065353024
3549 3543 .word 1073774784
3550 3544 .word -1073708864
3551 3545 .word 1082163392
3552 3546 .word -1065320256
3553 3547 .word 4194368
3554 3548 .word -2143289280
3555 3549 .word 12582976
3556 3550 .word -2134900672
3557 3551 .word 4227136
3558 3552 .word -2143256512
3559 3553 .word 12615744
3560 3554 .word -2134867904
3561 3555 .word 4194496
3562 3556 .word -2143289152
3563 3557 .word 12583104
3564 3558 .word -2134900544
3565 3559 .word 4227264
3566 3560 .word -2143256384
3567 3561 .word 12615872
3568 3562 .word -2134867776
3569 3563 .word 1077936192
3570 3564 .word -1069547456
3571 3565 .word 1086324800
3572 3566 .word -1061158848
3573 3567 .word 1077968960
3574 3568 .word -1069514688
3575 3569 .word 1086357568
3576 3570 .word -1061126080
3577 3571 .word 1077936320
3578 3572 .word -1069547328
3579 3573 .word 1086324928
3580 3574 .word -1061158720
3581 3575 .word 1077969088
3582 3576 .word -1069514560
3583 3577 .word 1086357696
3584 3578 .word -1061125952
3585 3579 .word 16448
3586 3580 .word -2147467200
3587 3581 .word 8405056
3588 3582 .word -2139078592
3589 3583 .word 49216
3590 3584 .word -2147434432
3591 3585 .word 8437824
3592 3586 .word -2139045824
3593 3587 .word 16576
3594 3588 .word -2147467072
3595 3589 .word 8405184
3596 3590 .word -2139078464
3597 3591 .word 49344
3598 3592 .word -2147434304
3599 3593 .word 8437952
3600 3594 .word -2139045696
3601 3595 .word 1073758272
3602 3596 .word -1073725376
3603 3597 .word 1082146880
3604 3598 .word -1065336768
3605 3599 .word 1073791040
3606 3600 .word -1073692608
3607 3601 .word 1082179648
3608 3602 .word -1065304000
3609 3603 .word 1073758400
3610 3604 .word -1073725248
3611 3605 .word 1082147008
3612 3606 .word -1065336640
3613 3607 .word 1073791168
3614 3608 .word -1073692480
3615 3609 .word 1082179776
3616 3610 .word -1065303872
3617 3611 .word 4210752
3618 3612 .word -2143272896
3619 3613 .word 12599360
3620 3614 .word -2134884288
3621 3615 .word 4243520
3622 3616 .word -2143240128
3623 3617 .word 12632128
3624 3618 .word -2134851520
3625 3619 .word 4210880
3626 3620 .word -2143272768
3627 3621 .word 12599488
3628 3622 .word -2134884160
3629 3623 .word 4243648
3630 3624 .word -2143240000
3631 3625 .word 12632256
3632 3626 .word -2134851392
3633 3627 .word 1077952576
3634 3628 .word -1069531072
3635 3629 .word 1086341184
3636 3630 .word -1061142464
3637 3631 .word 1077985344
3638 3632 .word -1069498304
3639 3633 .word 1086373952
3640 3634 .word -1061109696
3641 3635 .word 1077952704
↓ open down ↓ |
3530 lines elided |
↑ open up ↑ |
3642 3636 .word -1069530944
3643 3637 .word 1086341312
3644 3638 .word -1061142336
3645 3639 .word 1077985472
3646 3640 .word -1069498176
3647 3641 .word 1086374080
3648 3642 .word -1061109568
3649 3643 .type des_fp_table,#object
3650 3644 .size des_fp_table,1024
3651 3645
3652 -/* EXPORT DELETE END */
3653 -
3654 3646 #endif /* lint || __lint */
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX