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