]> git.ipfire.org Git - thirdparty/nettle.git/commitdiff
New assembler implementation by
authorRafael Sevilla <dido@pacific.net.ph>
Mon, 11 Feb 2002 14:04:35 +0000 (15:04 +0100)
committerNiels Möller <nisse@lysator.liu.se>
Mon, 11 Feb 2002 14:04:35 +0000 (15:04 +0100)
Rafael Sevilla.

Rev: src/nettle/x86/aes.asm:1.1
Rev: src/nettle/x86/aes_tables.asm:1.1

x86/aes.asm [new file with mode: 0644]
x86/aes_tables.asm [new file with mode: 0644]

diff --git a/x86/aes.asm b/x86/aes.asm
new file mode 100644 (file)
index 0000000..96c3048
--- /dev/null
@@ -0,0 +1,500 @@
+       .file   "rijndael.s"
+
+       .data
+
+#include "rijndaeltbls.S"
+
+       .text
+
+.globl print_word
+
+       //// rijndael_encrypt(RIJNDAEL_context *ctx, const UINT8 *plaintext
+       ////                UINT8 *ciphertext)
+       .align 16
+.globl rijndael_encrypt
+       .type   rijndael_encrypt,@function
+rijndael_encrypt:
+       //// save all registers that need to be saved
+       pushl   %ebx            // 16(%esp)
+       pushl   %ebp            // 12(%esp)
+       pushl   %esi            // 8(%esp)
+       pushl   %edi            // 4(%esp)
+       movl    24(%esp),%esi   // address of plaintext
+       movl    (%esi),%eax     // load plaintext into registers
+       movl    4(%esi),%ebx
+       movl    8(%esi),%ecx
+       movl    12(%esi),%edx
+       movl    20(%esp),%esi   // address of context struct ctx
+       xorl    (%esi),%eax     // add first key to plaintext
+       xorl    4(%esi),%ebx
+       xorl    8(%esi),%ecx
+       xorl    12(%esi),%edx
+       movl    20(%esp),%ebp   // address of context struct
+       movl    480(%ebp),%ebp  // get number of rounds to do from struct
+
+       subl    $1,%ebp
+       addl    $16,%esi        // point to next key
+.encrypt_loop:
+       pushl   %esi            // save this first: we'll clobber it later
+
+       //// First column
+       shll    $2,%esi         // index in dtbl1
+       movl    dtbl1(%esi),%edi
+       shrl    $6,%esi
+       andl    $0x000003fc,%esi // clear all but offset bytes
+       xorl    dtbl2(%esi),%edi
+       movl    %ecx,%esi       // third one
+       shrl    $14,%esi
+       andl    $0x000003fc,%esi
+       xorl    dtbl3(%esi),%edi
+       movl    %edx,%esi       // fourth one
+       shrl    $22,%esi
+       andl    $0x000003fc,%esi
+       xorl    dtbl4(%esi),%edi
+       pushl   %edi            // save first on stack
+
+       //// Second column
+       movl    %ebx,%esi       // copy first in
+       andl    $0x000000ff,%esi // clear all but offset
+       shll    $2,%esi         // index in dtbl1
+       movl    dtbl1(%esi),%edi
+       movl    %ecx,%esi       // second one
+       shrl    $6,%esi
+       andl    $0x000003fc,%esi // clear all but offset bytes
+       xorl    dtbl2(%esi),%edi
+       movl    %edx,%esi       // third one
+       shrl    $14,%esi
+       andl    $0x000003fc,%esi
+       xorl    dtbl3(%esi),%edi
+       movl    %eax,%esi       // fourth one
+       shrl    $22,%esi
+       andl    $0x000003fc,%esi
+       xorl    dtbl4(%esi),%edi
+       pushl   %edi            // save first on stack
+
+       //// Third column
+       movl    %ecx,%esi       // copy first in
+       andl    $0x000000ff,%esi // clear all but offset
+       shll    $2,%esi         // index in dtbl1
+       movl    dtbl1(%esi),%edi
+       movl    %edx,%esi       // second one
+       shrl    $6,%esi
+       andl    $0x000003fc,%esi // clear all but offset bytes
+       xorl    dtbl2(%esi),%edi
+       movl    %eax,%esi       // third one
+       shrl    $14,%esi
+       andl    $0x000003fc,%esi
+       xorl    dtbl3(%esi),%edi
+       movl    %ebx,%esi       // fourth one
+       shrl    $22,%esi
+       andl    $0x000003fc,%esi
+       xorl    dtbl4(%esi),%edi
+       pushl   %edi            // save first on stack
+
+       //// Fourth column
+       movl    %edx,%esi       // copy first in
+       andl    $0x000000ff,%esi // clear all but offset
+       shll    $2,%esi         // index in dtbl1
+       movl    dtbl1(%esi),%edi
+       movl    %eax,%esi       // second one
+       shrl    $6,%esi
+       andl    $0x000003fc,%esi // clear all but offset bytes
+       xorl    dtbl2(%esi),%edi
+       movl    %ebx,%esi       // third one
+       shrl    $14,%esi
+       andl    $0x000003fc,%esi
+       xorl    dtbl3(%esi),%edi
+       movl    %ecx,%esi       // fourth one
+       shrl    $22,%esi
+       andl    $0x000003fc,%esi
+       xorl    dtbl4(%esi),%edi
+
+       movl    %edi,%edx
+       popl    %ecx
+       popl    %ebx
+       popl    %eax
+       popl    %esi
+       xorl    (%esi),%eax     // add current session key to plaintext
+       xorl    4(%esi),%ebx
+       xorl    8(%esi),%ecx
+       xorl    12(%esi),%edx
+       addl    $16,%esi        // point to next key
+       decl    %ebp
+       jnz     .encrypt_loop
+
+       //// last round
+       //// first column
+       movl    %eax,%edi
+       andl    $0x000000ff,%edi
+       movl    %ebx,%ebp
+       andl    $0x0000ff00,%ebp
+       orl     %ebp,%edi
+       movl    %ecx,%ebp
+       andl    $0x00ff0000,%ebp
+       orl     %ebp,%edi
+       movl    %edx,%ebp
+       andl    $0xff000000,%ebp
+       orl     %ebp,%edi
+       pushl   %edi
+
+       //// second column
+       movl    %eax,%edi
+       andl    $0x0000ff00,%edi
+       movl    %ebx,%ebp
+       andl    $0x00ff0000,%ebp
+       orl     %ebp,%edi
+       movl    %ecx,%ebp
+       andl    $0xff000000,%ebp
+       orl     %ebp,%edi
+       movl    %edx,%ebp
+       andl    $0x000000ff,%ebp
+       orl     %ebp,%edi
+       pushl   %edi
+
+       //// third column
+       movl    %eax,%edi
+       andl    $0x00ff0000,%edi
+       movl    %ebx,%ebp
+       andl    $0xff000000,%ebp
+       orl     %ebp,%edi
+       movl    %ecx,%ebp
+       andl    $0x000000ff,%ebp
+       orl     %ebp,%edi
+       movl    %edx,%ebp
+       andl    $0x0000ff00,%ebp
+       orl     %ebp,%edi
+       pushl   %edi
+
+       //// fourth column
+       movl    %eax,%edi
+       andl    $0xff000000,%edi
+       movl    %ebx,%ebp
+       andl    $0x000000ff,%ebp
+       orl     %ebp,%edi
+       movl    %ecx,%ebp
+       andl    $0x0000ff00,%ebp
+       orl     %ebp,%edi
+       movl    %edx,%ebp
+       andl    $0x00ff0000,%ebp
+       orl     %ebp,%edi
+       movl    %edi,%edx
+       popl    %ecx
+       popl    %ebx
+       popl    %eax
+       xchgl   %ebx,%edx
+
+       //// S-box substitution
+       mov     $4,%edi
+.sb_sub:
+       movl    %eax,%ebp
+       andl    $0x000000ff,%ebp
+       movb    sbox(%ebp),%al
+       roll    $8,%eax
+
+       movl    %ebx,%ebp
+       andl    $0x000000ff,%ebp
+       movb    sbox(%ebp),%bl
+       roll    $8,%ebx
+
+       movl    %ecx,%ebp
+       andl    $0x000000ff,%ebp
+       movb    sbox(%ebp),%cl
+       roll    $8,%ecx
+
+       movl    %edx,%ebp
+       andl    $0x000000ff,%ebp
+       movb    sbox(%ebp),%dl
+       roll    $8,%edx
+
+       decl    %edi
+       jnz     .sb_sub
+
+       xorl    (%esi),%eax     // add last key to plaintext
+       xorl    4(%esi),%ebx
+       xorl    8(%esi),%ecx
+       xorl    12(%esi),%edx
+
+       //// store encrypted data back to caller's buffer
+       movl    28(%esp),%edi
+       movl    %eax,(%edi)
+       movl    %ebx,4(%edi)
+       movl    %ecx,8(%edi)
+       movl    %edx,12(%edi)
+       popl    %edi
+       popl    %esi
+       popl    %ebp
+       popl    %ebx
+       ret
+.eore:
+       .size   rijndael_encrypt,.eore-rijndael_encrypt
+
+
+       //// rijndael_decrypt(RIJNDAEL_context *ctx, const UINT8 *ciphertext
+       ////                UINT8 *plaintext)
+       .align 16
+.globl rijndael_decrypt
+       .type   rijndael_decrypt,@function
+rijndael_decrypt:
+       //// save all registers that need to be saved
+       pushl   %ebx            // 16(%esp)
+       pushl   %ebp            // 12(%esp)
+       pushl   %esi            // 8(%esp)
+       pushl   %edi            // 4(%esp)
+       movl    24(%esp),%esi   // address of ciphertext
+       movl    (%esi),%eax     // load ciphertext into registers
+       movl    4(%esi),%ebx
+       movl    8(%esi),%ecx
+       movl    12(%esi),%edx
+       movl    20(%esp),%esi   // address of context struct ctx
+       movl    480(%esi),%ebp  // get number of rounds to do from struct
+       shll    $4,%ebp
+       leal    240(%esi, %ebp),%esi
+       shrl    $4,%ebp
+       xorl    (%esi),%eax     // add last key to ciphertext
+       xorl    4(%esi),%ebx
+       xorl    8(%esi),%ecx
+       xorl    12(%esi),%edx
+
+       subl    $1,%ebp         // one round is complete
+       subl    $16,%esi        // point to previous key
+.decrypt_loop:
+       pushl   %esi            // save this first: we'll clobber it later
+       xchgl   %ebx,%edx
+
+       //// First column
+       movl    %eax,%esi       // copy first in
+       andl    $0x000000ff,%esi // clear all but offset
+       shll    $2,%esi         // index in itbl1
+       movl    itbl1(%esi),%edi
+       movl    %ebx,%esi       // second one
+       shrl    $6,%esi
+       andl    $0x000003fc,%esi // clear all but offset bytes
+       xorl    itbl2(%esi),%edi
+       movl    %ecx,%esi       // third one
+       shrl    $14,%esi
+       andl    $0x000003fc,%esi
+       xorl    itbl3(%esi),%edi
+       movl    %edx,%esi       // fourth one
+       shrl    $22,%esi
+       andl    $0x000003fc,%esi
+       xorl    itbl4(%esi),%edi
+       pushl   %edi            // save first on stack
+
+       //// Second column
+       movl    %edx,%esi       // copy first in
+       andl    $0x000000ff,%esi // clear all but offset
+       shll    $2,%esi         // index in itbl1
+       movl    itbl1(%esi),%edi
+       movl    %eax,%esi       // second one
+       shrl    $6,%esi
+       andl    $0x000003fc,%esi // clear all but offset bytes
+       xorl    itbl2(%esi),%edi
+       movl    %ebx,%esi       // third one
+       shrl    $14,%esi
+       andl    $0x000003fc,%esi
+       xorl    itbl3(%esi),%edi
+       movl    %ecx,%esi       // fourth one
+       shrl    $22,%esi
+       andl    $0x000003fc,%esi
+       xorl    itbl4(%esi),%edi
+       pushl   %edi
+
+       //// Third column
+       movl    %ecx,%esi       // copy first in
+       andl    $0x000000ff,%esi // clear all but offset
+       shll    $2,%esi         // index in itbl1
+       movl    itbl1(%esi),%edi
+       movl    %edx,%esi       // second one
+       shrl    $6,%esi
+       andl    $0x000003fc,%esi // clear all but offset bytes
+       xorl    itbl2(%esi),%edi
+       movl    %eax,%esi       // third one
+       shrl    $14,%esi
+       andl    $0x000003fc,%esi
+       xorl    itbl3(%esi),%edi
+       movl    %ebx,%esi       // fourth one
+       shrl    $22,%esi
+       andl    $0x000003fc,%esi
+       xorl    itbl4(%esi),%edi
+       pushl   %edi            // save first on stack
+
+       //// Fourth column
+       movl    %ebx,%esi       // copy first in
+       andl    $0x000000ff,%esi // clear all but offset
+       shll    $2,%esi         // index in itbl1
+       movl    itbl1(%esi),%edi
+       movl    %ecx,%esi       // second one
+       shrl    $6,%esi
+       andl    $0x000003fc,%esi // clear all but offset bytes
+       xorl    itbl2(%esi),%edi
+       movl    %edx,%esi       // third one
+       shrl    $14,%esi
+       andl    $0x000003fc,%esi
+       xorl    itbl3(%esi),%edi
+       movl    %eax,%esi       // fourth one
+       shrl    $22,%esi
+       andl    $0x000003fc,%esi
+       xorl    itbl4(%esi),%edi
+       movl    %edi,%edx
+       popl    %ecx
+       popl    %ebx
+       popl    %eax
+       popl    %esi
+       xorl    (%esi),%eax     // add current session key to plaintext
+       xorl    4(%esi),%ebx
+       xorl    8(%esi),%ecx
+       xorl    12(%esi),%edx
+       subl    $16,%esi        // point to previous key
+       decl    %ebp
+       jnz     .decrypt_loop
+
+       xchgl   %ebx,%edx
+
+       //// last round
+       //// first column
+       movl    %eax,%edi
+       andl    $0x000000ff,%edi
+       movl    %ebx,%ebp
+       andl    $0x0000ff00,%ebp
+       orl     %ebp,%edi
+       movl    %ecx,%ebp
+       andl    $0x00ff0000,%ebp
+       orl     %ebp,%edi
+       movl    %edx,%ebp
+       andl    $0xff000000,%ebp
+       orl     %ebp,%edi
+       pushl   %edi
+
+       //// second column
+       movl    %eax,%edi
+       andl    $0xff000000,%edi
+       movl    %ebx,%ebp
+       andl    $0x000000ff,%ebp
+       orl     %ebp,%edi
+       movl    %ecx,%ebp
+       andl    $0x0000ff00,%ebp
+       orl     %ebp,%edi
+       movl    %edx,%ebp
+       andl    $0x00ff0000,%ebp
+       orl     %ebp,%edi
+       pushl   %edi
+
+       //// third column
+       movl    %eax,%edi
+       andl    $0x00ff0000,%edi
+       movl    %ebx,%ebp
+       andl    $0xff000000,%ebp
+       orl     %ebp,%edi
+       movl    %ecx,%ebp
+       andl    $0x000000ff,%ebp
+       orl     %ebp,%edi
+       movl    %edx,%ebp
+       andl    $0x0000ff00,%ebp
+       orl     %ebp,%edi
+       pushl   %edi
+
+       //// second column
+       movl    %eax,%edi
+       andl    $0x0000ff00,%edi
+       movl    %ebx,%ebp
+       andl    $0x00ff0000,%ebp
+       orl     %ebp,%edi
+       movl    %ecx,%ebp
+       andl    $0xff000000,%ebp
+       orl     %ebp,%edi
+       movl    %edx,%ebp
+       andl    $0x000000ff,%ebp
+       orl     %ebp,%edi
+       movl    %edi,%edx
+       popl    %ecx
+       popl    %ebx
+       popl    %eax
+       xchgl   %ebx,%edx
+
+       //// inverse S-box substitution
+       mov     $4,%edi
+.isb_sub:
+       movl    %eax,%ebp
+       andl    $0x000000ff,%ebp
+       movb    isbox(%ebp),%al
+       roll    $8,%eax
+
+       movl    %ebx,%ebp
+       andl    $0x000000ff,%ebp
+       movb    isbox(%ebp),%bl
+       roll    $8,%ebx
+
+       movl    %ecx,%ebp
+       andl    $0x000000ff,%ebp
+       movb    isbox(%ebp),%cl
+       roll    $8,%ecx
+
+       movl    %edx,%ebp
+       andl    $0x000000ff,%ebp
+       movb    isbox(%ebp),%dl
+       roll    $8,%edx
+
+       decl    %edi
+       jnz     .isb_sub
+
+       xorl    (%esi),%eax     // add first key to plaintext
+       xorl    4(%esi),%ebx
+       xorl    8(%esi),%ecx
+       xorl    12(%esi),%edx
+
+       //// store decrypted data back to caller's buffer
+       movl    28(%esp),%edi
+       movl    %eax,(%edi)
+       movl    %ebx,4(%edi)
+       movl    %ecx,8(%edi)
+       movl    %edx,12(%edi)
+       popl    %edi
+       popl    %esi
+       popl    %ebp
+       popl    %ebx
+       ret
+.eord:
+       .size   rijndael_decrypt,.eord-rijndael_decrypt
+
+       .align 16
+.globl rijndael_setup
+       .type   rijndael_setup,@function
+rijndael_decrypt:
+       //// save all registers that need to be saved
+       pushl   %ebx            // 16(%esp)
+       pushl   %ebp            // 12(%esp)
+       pushl   %esi            // 8(%esp)
+       pushl   %edi            // 4(%esp)
+       movl    20(%esp),%esi   /* context structure */
+       movl    24(%esp),%ecx   /* key size */
+       movl    28(%esp),%edi   /* original key */
+       /* This code assumes that the key length given is greater than
+          or equal to 4 words (128 bits).  BAD THINGS WILL HAPPEN
+          OTHERWISE! */
+       shrl    $2,%ecx         /* divide by 4 to get total key length */
+       movl    %ecx,%edx       /* calculate the number of rounds */
+       addl    $6,%edx         /* key length in words + 6 = num. rounds */
+       /* copy the initial key into the context structure */
+       pushl   %ecx
+.key_copy_loop:        
+       movl    (%edi),%eax
+       addl    $4,%edi
+       movl    %eax,(%esi)
+       addl    $4,%esi
+       decl    %ecx
+       jnz     .key_copy_loop
+       popl    %ecx
+       incl    %edx            /* number of rounds + 1 */
+       shll    $2,%edx         /* times rijndael blk size 4words */
+       subl    %ecx,%edx       /* # of other keys to make */
+       movl    %ecx,%ebp
+       decl    %ecx            /* turn ecx into a mask */
+       movl    $1,%ebx         /* round constant */
+.keygen_loop:
+       movl    -4(%esi),%eax   /* previous key */
+       testl   %ecx,%ebp
+       jnz     .testnk
+       /* rotate and substitute */
+       roll    $8,%eax
+       movl    %eax,%edi
+       andl    $0xff,%eax
diff --git a/x86/aes_tables.asm b/x86/aes_tables.asm
new file mode 100644 (file)
index 0000000..0202542
--- /dev/null
@@ -0,0 +1,2613 @@
+/* Tables for Rijndael */
+
+       /* Large tables */
+       .align 32
+       .type   dtbl1,@object
+       .size   dtbl1,1024
+dtbl1:
+       .long   0xa56363c6
+       .long   0x847c7cf8
+       .long   0x997777ee
+       .long   0x8d7b7bf6
+       .long   0x0df2f2ff
+       .long   0xbd6b6bd6
+       .long   0xb16f6fde
+       .long   0x54c5c591
+       .long   0x50303060
+       .long   0x03010102
+       .long   0xa96767ce
+       .long   0x7d2b2b56
+       .long   0x19fefee7
+       .long   0x62d7d7b5
+       .long   0xe6abab4d
+       .long   0x9a7676ec
+       .long   0x45caca8f
+       .long   0x9d82821f
+       .long   0x40c9c989
+       .long   0x877d7dfa
+       .long   0x15fafaef
+       .long   0xeb5959b2
+       .long   0xc947478e
+       .long   0x0bf0f0fb
+       .long   0xecadad41
+       .long   0x67d4d4b3
+       .long   0xfda2a25f
+       .long   0xeaafaf45
+       .long   0xbf9c9c23
+       .long   0xf7a4a453
+       .long   0x967272e4
+       .long   0x5bc0c09b
+       .long   0xc2b7b775
+       .long   0x1cfdfde1
+       .long   0xae93933d
+       .long   0x6a26264c
+       .long   0x5a36366c
+       .long   0x413f3f7e
+       .long   0x02f7f7f5
+       .long   0x4fcccc83
+       .long   0x5c343468
+       .long   0xf4a5a551
+       .long   0x34e5e5d1
+       .long   0x08f1f1f9
+       .long   0x937171e2
+       .long   0x73d8d8ab
+       .long   0x53313162
+       .long   0x3f15152a
+       .long   0x0c040408
+       .long   0x52c7c795
+       .long   0x65232346
+       .long   0x5ec3c39d
+       .long   0x28181830
+       .long   0xa1969637
+       .long   0x0f05050a
+       .long   0xb59a9a2f
+       .long   0x0907070e
+       .long   0x36121224
+       .long   0x9b80801b
+       .long   0x3de2e2df
+       .long   0x26ebebcd
+       .long   0x6927274e
+       .long   0xcdb2b27f
+       .long   0x9f7575ea
+       .long   0x1b090912
+       .long   0x9e83831d
+       .long   0x742c2c58
+       .long   0x2e1a1a34
+       .long   0x2d1b1b36
+       .long   0xb26e6edc
+       .long   0xee5a5ab4
+       .long   0xfba0a05b
+       .long   0xf65252a4
+       .long   0x4d3b3b76
+       .long   0x61d6d6b7
+       .long   0xceb3b37d
+       .long   0x7b292952
+       .long   0x3ee3e3dd
+       .long   0x712f2f5e
+       .long   0x97848413
+       .long   0xf55353a6
+       .long   0x68d1d1b9
+       .long   0x00000000
+       .long   0x2cededc1
+       .long   0x60202040
+       .long   0x1ffcfce3
+       .long   0xc8b1b179
+       .long   0xed5b5bb6
+       .long   0xbe6a6ad4
+       .long   0x46cbcb8d
+       .long   0xd9bebe67
+       .long   0x4b393972
+       .long   0xde4a4a94
+       .long   0xd44c4c98
+       .long   0xe85858b0
+       .long   0x4acfcf85
+       .long   0x6bd0d0bb
+       .long   0x2aefefc5
+       .long   0xe5aaaa4f
+       .long   0x16fbfbed
+       .long   0xc5434386
+       .long   0xd74d4d9a
+       .long   0x55333366
+       .long   0x94858511
+       .long   0xcf45458a
+       .long   0x10f9f9e9
+       .long   0x06020204
+       .long   0x817f7ffe
+       .long   0xf05050a0
+       .long   0x443c3c78
+       .long   0xba9f9f25
+       .long   0xe3a8a84b
+       .long   0xf35151a2
+       .long   0xfea3a35d
+       .long   0xc0404080
+       .long   0x8a8f8f05
+       .long   0xad92923f
+       .long   0xbc9d9d21
+       .long   0x48383870
+       .long   0x04f5f5f1
+       .long   0xdfbcbc63
+       .long   0xc1b6b677
+       .long   0x75dadaaf
+       .long   0x63212142
+       .long   0x30101020
+       .long   0x1affffe5
+       .long   0x0ef3f3fd
+       .long   0x6dd2d2bf
+       .long   0x4ccdcd81
+       .long   0x140c0c18
+       .long   0x35131326
+       .long   0x2fececc3
+       .long   0xe15f5fbe
+       .long   0xa2979735
+       .long   0xcc444488
+       .long   0x3917172e
+       .long   0x57c4c493
+       .long   0xf2a7a755
+       .long   0x827e7efc
+       .long   0x473d3d7a
+       .long   0xac6464c8
+       .long   0xe75d5dba
+       .long   0x2b191932
+       .long   0x957373e6
+       .long   0xa06060c0
+       .long   0x98818119
+       .long   0xd14f4f9e
+       .long   0x7fdcdca3
+       .long   0x66222244
+       .long   0x7e2a2a54
+       .long   0xab90903b
+       .long   0x8388880b
+       .long   0xca46468c
+       .long   0x29eeeec7
+       .long   0xd3b8b86b
+       .long   0x3c141428
+       .long   0x79dedea7
+       .long   0xe25e5ebc
+       .long   0x1d0b0b16
+       .long   0x76dbdbad
+       .long   0x3be0e0db
+       .long   0x56323264
+       .long   0x4e3a3a74
+       .long   0x1e0a0a14
+       .long   0xdb494992
+       .long   0x0a06060c
+       .long   0x6c242448
+       .long   0xe45c5cb8
+       .long   0x5dc2c29f
+       .long   0x6ed3d3bd
+       .long   0xefacac43
+       .long   0xa66262c4
+       .long   0xa8919139
+       .long   0xa4959531
+       .long   0x37e4e4d3
+       .long   0x8b7979f2
+       .long   0x32e7e7d5
+       .long   0x43c8c88b
+       .long   0x5937376e
+       .long   0xb76d6dda
+       .long   0x8c8d8d01
+       .long   0x64d5d5b1
+       .long   0xd24e4e9c
+       .long   0xe0a9a949
+       .long   0xb46c6cd8
+       .long   0xfa5656ac
+       .long   0x07f4f4f3
+       .long   0x25eaeacf
+       .long   0xaf6565ca
+       .long   0x8e7a7af4
+       .long   0xe9aeae47
+       .long   0x18080810
+       .long   0xd5baba6f
+       .long   0x887878f0
+       .long   0x6f25254a
+       .long   0x722e2e5c
+       .long   0x241c1c38
+       .long   0xf1a6a657
+       .long   0xc7b4b473
+       .long   0x51c6c697
+       .long   0x23e8e8cb
+       .long   0x7cdddda1
+       .long   0x9c7474e8
+       .long   0x211f1f3e
+       .long   0xdd4b4b96
+       .long   0xdcbdbd61
+       .long   0x868b8b0d
+       .long   0x858a8a0f
+       .long   0x907070e0
+       .long   0x423e3e7c
+       .long   0xc4b5b571
+       .long   0xaa6666cc
+       .long   0xd8484890
+       .long   0x05030306
+       .long   0x01f6f6f7
+       .long   0x120e0e1c
+       .long   0xa36161c2
+       .long   0x5f35356a
+       .long   0xf95757ae
+       .long   0xd0b9b969
+       .long   0x91868617
+       .long   0x58c1c199
+       .long   0x271d1d3a
+       .long   0xb99e9e27
+       .long   0x38e1e1d9
+       .long   0x13f8f8eb
+       .long   0xb398982b
+       .long   0x33111122
+       .long   0xbb6969d2
+       .long   0x70d9d9a9
+       .long   0x898e8e07
+       .long   0xa7949433
+       .long   0xb69b9b2d
+       .long   0x221e1e3c
+       .long   0x92878715
+       .long   0x20e9e9c9
+       .long   0x49cece87
+       .long   0xff5555aa
+       .long   0x78282850
+       .long   0x7adfdfa5
+       .long   0x8f8c8c03
+       .long   0xf8a1a159
+       .long   0x80898909
+       .long   0x170d0d1a
+       .long   0xdabfbf65
+       .long   0x31e6e6d7
+       .long   0xc6424284
+       .long   0xb86868d0
+       .long   0xc3414182
+       .long   0xb0999929
+       .long   0x772d2d5a
+       .long   0x110f0f1e
+       .long   0xcbb0b07b
+       .long   0xfc5454a8
+       .long   0xd6bbbb6d
+       .long   0x3a16162c
+
+       .align 32
+       .type   dtbl2,@object
+       .size   dtbl2,1024
+dtbl2:
+       .long   0x6363c6a5
+       .long   0x7c7cf884
+       .long   0x7777ee99
+       .long   0x7b7bf68d
+       .long   0xf2f2ff0d
+       .long   0x6b6bd6bd
+       .long   0x6f6fdeb1
+       .long   0xc5c59154
+       .long   0x30306050
+       .long   0x01010203
+       .long   0x6767cea9
+       .long   0x2b2b567d
+       .long   0xfefee719
+       .long   0xd7d7b562
+       .long   0xabab4de6
+       .long   0x7676ec9a
+       .long   0xcaca8f45
+       .long   0x82821f9d
+       .long   0xc9c98940
+       .long   0x7d7dfa87
+       .long   0xfafaef15
+       .long   0x5959b2eb
+       .long   0x47478ec9
+       .long   0xf0f0fb0b
+       .long   0xadad41ec
+       .long   0xd4d4b367
+       .long   0xa2a25ffd
+       .long   0xafaf45ea
+       .long   0x9c9c23bf
+       .long   0xa4a453f7
+       .long   0x7272e496
+       .long   0xc0c09b5b
+       .long   0xb7b775c2
+       .long   0xfdfde11c
+       .long   0x93933dae
+       .long   0x26264c6a
+       .long   0x36366c5a
+       .long   0x3f3f7e41
+       .long   0xf7f7f502
+       .long   0xcccc834f
+       .long   0x3434685c
+       .long   0xa5a551f4
+       .long   0xe5e5d134
+       .long   0xf1f1f908
+       .long   0x7171e293
+       .long   0xd8d8ab73
+       .long   0x31316253
+       .long   0x15152a3f
+       .long   0x0404080c
+       .long   0xc7c79552
+       .long   0x23234665
+       .long   0xc3c39d5e
+       .long   0x18183028
+       .long   0x969637a1
+       .long   0x05050a0f
+       .long   0x9a9a2fb5
+       .long   0x07070e09
+       .long   0x12122436
+       .long   0x80801b9b
+       .long   0xe2e2df3d
+       .long   0xebebcd26
+       .long   0x27274e69
+       .long   0xb2b27fcd
+       .long   0x7575ea9f
+       .long   0x0909121b
+       .long   0x83831d9e
+       .long   0x2c2c5874
+       .long   0x1a1a342e
+       .long   0x1b1b362d
+       .long   0x6e6edcb2
+       .long   0x5a5ab4ee
+       .long   0xa0a05bfb
+       .long   0x5252a4f6
+       .long   0x3b3b764d
+       .long   0xd6d6b761
+       .long   0xb3b37dce
+       .long   0x2929527b
+       .long   0xe3e3dd3e
+       .long   0x2f2f5e71
+       .long   0x84841397
+       .long   0x5353a6f5
+       .long   0xd1d1b968
+       .long   0x00000000
+       .long   0xededc12c
+       .long   0x20204060
+       .long   0xfcfce31f
+       .long   0xb1b179c8
+       .long   0x5b5bb6ed
+       .long   0x6a6ad4be
+       .long   0xcbcb8d46
+       .long   0xbebe67d9
+       .long   0x3939724b
+       .long   0x4a4a94de
+       .long   0x4c4c98d4
+       .long   0x5858b0e8
+       .long   0xcfcf854a
+       .long   0xd0d0bb6b
+       .long   0xefefc52a
+       .long   0xaaaa4fe5
+       .long   0xfbfbed16
+       .long   0x434386c5
+       .long   0x4d4d9ad7
+       .long   0x33336655
+       .long   0x85851194
+       .long   0x45458acf
+       .long   0xf9f9e910
+       .long   0x02020406
+       .long   0x7f7ffe81
+       .long   0x5050a0f0
+       .long   0x3c3c7844
+       .long   0x9f9f25ba
+       .long   0xa8a84be3
+       .long   0x5151a2f3
+       .long   0xa3a35dfe
+       .long   0x404080c0
+       .long   0x8f8f058a
+       .long   0x92923fad
+       .long   0x9d9d21bc
+       .long   0x38387048
+       .long   0xf5f5f104
+       .long   0xbcbc63df
+       .long   0xb6b677c1
+       .long   0xdadaaf75
+       .long   0x21214263
+       .long   0x10102030
+       .long   0xffffe51a
+       .long   0xf3f3fd0e
+       .long   0xd2d2bf6d
+       .long   0xcdcd814c
+       .long   0x0c0c1814
+       .long   0x13132635
+       .long   0xececc32f
+       .long   0x5f5fbee1
+       .long   0x979735a2
+       .long   0x444488cc
+       .long   0x17172e39
+       .long   0xc4c49357
+       .long   0xa7a755f2
+       .long   0x7e7efc82
+       .long   0x3d3d7a47
+       .long   0x6464c8ac
+       .long   0x5d5dbae7
+       .long   0x1919322b
+       .long   0x7373e695
+       .long   0x6060c0a0
+       .long   0x81811998
+       .long   0x4f4f9ed1
+       .long   0xdcdca37f
+       .long   0x22224466
+       .long   0x2a2a547e
+       .long   0x90903bab
+       .long   0x88880b83
+       .long   0x46468cca
+       .long   0xeeeec729
+       .long   0xb8b86bd3
+       .long   0x1414283c
+       .long   0xdedea779
+       .long   0x5e5ebce2
+       .long   0x0b0b161d
+       .long   0xdbdbad76
+       .long   0xe0e0db3b
+       .long   0x32326456
+       .long   0x3a3a744e
+       .long   0x0a0a141e
+       .long   0x494992db
+       .long   0x06060c0a
+       .long   0x2424486c
+       .long   0x5c5cb8e4
+       .long   0xc2c29f5d
+       .long   0xd3d3bd6e
+       .long   0xacac43ef
+       .long   0x6262c4a6
+       .long   0x919139a8
+       .long   0x959531a4
+       .long   0xe4e4d337
+       .long   0x7979f28b
+       .long   0xe7e7d532
+       .long   0xc8c88b43
+       .long   0x37376e59
+       .long   0x6d6ddab7
+       .long   0x8d8d018c
+       .long   0xd5d5b164
+       .long   0x4e4e9cd2
+       .long   0xa9a949e0
+       .long   0x6c6cd8b4
+       .long   0x5656acfa
+       .long   0xf4f4f307
+       .long   0xeaeacf25
+       .long   0x6565caaf
+       .long   0x7a7af48e
+       .long   0xaeae47e9
+       .long   0x08081018
+       .long   0xbaba6fd5
+       .long   0x7878f088
+       .long   0x25254a6f
+       .long   0x2e2e5c72
+       .long   0x1c1c3824
+       .long   0xa6a657f1
+       .long   0xb4b473c7
+       .long   0xc6c69751
+       .long   0xe8e8cb23
+       .long   0xdddda17c
+       .long   0x7474e89c
+       .long   0x1f1f3e21
+       .long   0x4b4b96dd
+       .long   0xbdbd61dc
+       .long   0x8b8b0d86
+       .long   0x8a8a0f85
+       .long   0x7070e090
+       .long   0x3e3e7c42
+       .long   0xb5b571c4
+       .long   0x6666ccaa
+       .long   0x484890d8
+       .long   0x03030605
+       .long   0xf6f6f701
+       .long   0x0e0e1c12
+       .long   0x6161c2a3
+       .long   0x35356a5f
+       .long   0x5757aef9
+       .long   0xb9b969d0
+       .long   0x86861791
+       .long   0xc1c19958
+       .long   0x1d1d3a27
+       .long   0x9e9e27b9
+       .long   0xe1e1d938
+       .long   0xf8f8eb13
+       .long   0x98982bb3
+       .long   0x11112233
+       .long   0x6969d2bb
+       .long   0xd9d9a970
+       .long   0x8e8e0789
+       .long   0x949433a7
+       .long   0x9b9b2db6
+       .long   0x1e1e3c22
+       .long   0x87871592
+       .long   0xe9e9c920
+       .long   0xcece8749
+       .long   0x5555aaff
+       .long   0x28285078
+       .long   0xdfdfa57a
+       .long   0x8c8c038f
+       .long   0xa1a159f8
+       .long   0x89890980
+       .long   0x0d0d1a17
+       .long   0xbfbf65da
+       .long   0xe6e6d731
+       .long   0x424284c6
+       .long   0x6868d0b8
+       .long   0x414182c3
+       .long   0x999929b0
+       .long   0x2d2d5a77
+       .long   0x0f0f1e11
+       .long   0xb0b07bcb
+       .long   0x5454a8fc
+       .long   0xbbbb6dd6
+       .long   0x16162c3a
+
+       .align 32
+       .type   dtbl3,@object
+       .size   dtbl3,1024
+dtbl3:
+       .long   0x63c6a563
+       .long   0x7cf8847c
+       .long   0x77ee9977
+       .long   0x7bf68d7b
+       .long   0xf2ff0df2
+       .long   0x6bd6bd6b
+       .long   0x6fdeb16f
+       .long   0xc59154c5
+       .long   0x30605030
+       .long   0x01020301
+       .long   0x67cea967
+       .long   0x2b567d2b
+       .long   0xfee719fe
+       .long   0xd7b562d7
+       .long   0xab4de6ab
+       .long   0x76ec9a76
+       .long   0xca8f45ca
+       .long   0x821f9d82
+       .long   0xc98940c9
+       .long   0x7dfa877d
+       .long   0xfaef15fa
+       .long   0x59b2eb59
+       .long   0x478ec947
+       .long   0xf0fb0bf0
+       .long   0xad41ecad
+       .long   0xd4b367d4
+       .long   0xa25ffda2
+       .long   0xaf45eaaf
+       .long   0x9c23bf9c
+       .long   0xa453f7a4
+       .long   0x72e49672
+       .long   0xc09b5bc0
+       .long   0xb775c2b7
+       .long   0xfde11cfd
+       .long   0x933dae93
+       .long   0x264c6a26
+       .long   0x366c5a36
+       .long   0x3f7e413f
+       .long   0xf7f502f7
+       .long   0xcc834fcc
+       .long   0x34685c34
+       .long   0xa551f4a5
+       .long   0xe5d134e5
+       .long   0xf1f908f1
+       .long   0x71e29371
+       .long   0xd8ab73d8
+       .long   0x31625331
+       .long   0x152a3f15
+       .long   0x04080c04
+       .long   0xc79552c7
+       .long   0x23466523
+       .long   0xc39d5ec3
+       .long   0x18302818
+       .long   0x9637a196
+       .long   0x050a0f05
+       .long   0x9a2fb59a
+       .long   0x070e0907
+       .long   0x12243612
+       .long   0x801b9b80
+       .long   0xe2df3de2
+       .long   0xebcd26eb
+       .long   0x274e6927
+       .long   0xb27fcdb2
+       .long   0x75ea9f75
+       .long   0x09121b09
+       .long   0x831d9e83
+       .long   0x2c58742c
+       .long   0x1a342e1a
+       .long   0x1b362d1b
+       .long   0x6edcb26e
+       .long   0x5ab4ee5a
+       .long   0xa05bfba0
+       .long   0x52a4f652
+       .long   0x3b764d3b
+       .long   0xd6b761d6
+       .long   0xb37dceb3
+       .long   0x29527b29
+       .long   0xe3dd3ee3
+       .long   0x2f5e712f
+       .long   0x84139784
+       .long   0x53a6f553
+       .long   0xd1b968d1
+       .long   0x00000000
+       .long   0xedc12ced
+       .long   0x20406020
+       .long   0xfce31ffc
+       .long   0xb179c8b1
+       .long   0x5bb6ed5b
+       .long   0x6ad4be6a
+       .long   0xcb8d46cb
+       .long   0xbe67d9be
+       .long   0x39724b39
+       .long   0x4a94de4a
+       .long   0x4c98d44c
+       .long   0x58b0e858
+       .long   0xcf854acf
+       .long   0xd0bb6bd0
+       .long   0xefc52aef
+       .long   0xaa4fe5aa
+       .long   0xfbed16fb
+       .long   0x4386c543
+       .long   0x4d9ad74d
+       .long   0x33665533
+       .long   0x85119485
+       .long   0x458acf45
+       .long   0xf9e910f9
+       .long   0x02040602
+       .long   0x7ffe817f
+       .long   0x50a0f050
+       .long   0x3c78443c
+       .long   0x9f25ba9f
+       .long   0xa84be3a8
+       .long   0x51a2f351
+       .long   0xa35dfea3
+       .long   0x4080c040
+       .long   0x8f058a8f
+       .long   0x923fad92
+       .long   0x9d21bc9d
+       .long   0x38704838
+       .long   0xf5f104f5
+       .long   0xbc63dfbc
+       .long   0xb677c1b6
+       .long   0xdaaf75da
+       .long   0x21426321
+       .long   0x10203010
+       .long   0xffe51aff
+       .long   0xf3fd0ef3
+       .long   0xd2bf6dd2
+       .long   0xcd814ccd
+       .long   0x0c18140c
+       .long   0x13263513
+       .long   0xecc32fec
+       .long   0x5fbee15f
+       .long   0x9735a297
+       .long   0x4488cc44
+       .long   0x172e3917
+       .long   0xc49357c4
+       .long   0xa755f2a7
+       .long   0x7efc827e
+       .long   0x3d7a473d
+       .long   0x64c8ac64
+       .long   0x5dbae75d
+       .long   0x19322b19
+       .long   0x73e69573
+       .long   0x60c0a060
+       .long   0x81199881
+       .long   0x4f9ed14f
+       .long   0xdca37fdc
+       .long   0x22446622
+       .long   0x2a547e2a
+       .long   0x903bab90
+       .long   0x880b8388
+       .long   0x468cca46
+       .long   0xeec729ee
+       .long   0xb86bd3b8
+       .long   0x14283c14
+       .long   0xdea779de
+       .long   0x5ebce25e
+       .long   0x0b161d0b
+       .long   0xdbad76db
+       .long   0xe0db3be0
+       .long   0x32645632
+       .long   0x3a744e3a
+       .long   0x0a141e0a
+       .long   0x4992db49
+       .long   0x060c0a06
+       .long   0x24486c24
+       .long   0x5cb8e45c
+       .long   0xc29f5dc2
+       .long   0xd3bd6ed3
+       .long   0xac43efac
+       .long   0x62c4a662
+       .long   0x9139a891
+       .long   0x9531a495
+       .long   0xe4d337e4
+       .long   0x79f28b79
+       .long   0xe7d532e7
+       .long   0xc88b43c8
+       .long   0x376e5937
+       .long   0x6ddab76d
+       .long   0x8d018c8d
+       .long   0xd5b164d5
+       .long   0x4e9cd24e
+       .long   0xa949e0a9
+       .long   0x6cd8b46c
+       .long   0x56acfa56
+       .long   0xf4f307f4
+       .long   0xeacf25ea
+       .long   0x65caaf65
+       .long   0x7af48e7a
+       .long   0xae47e9ae
+       .long   0x08101808
+       .long   0xba6fd5ba
+       .long   0x78f08878
+       .long   0x254a6f25
+       .long   0x2e5c722e
+       .long   0x1c38241c
+       .long   0xa657f1a6
+       .long   0xb473c7b4
+       .long   0xc69751c6
+       .long   0xe8cb23e8
+       .long   0xdda17cdd
+       .long   0x74e89c74
+       .long   0x1f3e211f
+       .long   0x4b96dd4b
+       .long   0xbd61dcbd
+       .long   0x8b0d868b
+       .long   0x8a0f858a
+       .long   0x70e09070
+       .long   0x3e7c423e
+       .long   0xb571c4b5
+       .long   0x66ccaa66
+       .long   0x4890d848
+       .long   0x03060503
+       .long   0xf6f701f6
+       .long   0x0e1c120e
+       .long   0x61c2a361
+       .long   0x356a5f35
+       .long   0x57aef957
+       .long   0xb969d0b9
+       .long   0x86179186
+       .long   0xc19958c1
+       .long   0x1d3a271d
+       .long   0x9e27b99e
+       .long   0xe1d938e1
+       .long   0xf8eb13f8
+       .long   0x982bb398
+       .long   0x11223311
+       .long   0x69d2bb69
+       .long   0xd9a970d9
+       .long   0x8e07898e
+       .long   0x9433a794
+       .long   0x9b2db69b
+       .long   0x1e3c221e
+       .long   0x87159287
+       .long   0xe9c920e9
+       .long   0xce8749ce
+       .long   0x55aaff55
+       .long   0x28507828
+       .long   0xdfa57adf
+       .long   0x8c038f8c
+       .long   0xa159f8a1
+       .long   0x89098089
+       .long   0x0d1a170d
+       .long   0xbf65dabf
+       .long   0xe6d731e6
+       .long   0x4284c642
+       .long   0x68d0b868
+       .long   0x4182c341
+       .long   0x9929b099
+       .long   0x2d5a772d
+       .long   0x0f1e110f
+       .long   0xb07bcbb0
+       .long   0x54a8fc54
+       .long   0xbb6dd6bb
+       .long   0x162c3a16
+
+       .align 32
+       .type   dtbl4,@object
+       .size   dtbl4,1024
+dtbl4:
+       .long   0xc6a56363
+       .long   0xf8847c7c
+       .long   0xee997777
+       .long   0xf68d7b7b
+       .long   0xff0df2f2
+       .long   0xd6bd6b6b
+       .long   0xdeb16f6f
+       .long   0x9154c5c5
+       .long   0x60503030
+       .long   0x02030101
+       .long   0xcea96767
+       .long   0x567d2b2b
+       .long   0xe719fefe
+       .long   0xb562d7d7
+       .long   0x4de6abab
+       .long   0xec9a7676
+       .long   0x8f45caca
+       .long   0x1f9d8282
+       .long   0x8940c9c9
+       .long   0xfa877d7d
+       .long   0xef15fafa
+       .long   0xb2eb5959
+       .long   0x8ec94747
+       .long   0xfb0bf0f0
+       .long   0x41ecadad
+       .long   0xb367d4d4
+       .long   0x5ffda2a2
+       .long   0x45eaafaf
+       .long   0x23bf9c9c
+       .long   0x53f7a4a4
+       .long   0xe4967272
+       .long   0x9b5bc0c0
+       .long   0x75c2b7b7
+       .long   0xe11cfdfd
+       .long   0x3dae9393
+       .long   0x4c6a2626
+       .long   0x6c5a3636
+       .long   0x7e413f3f
+       .long   0xf502f7f7
+       .long   0x834fcccc
+       .long   0x685c3434
+       .long   0x51f4a5a5
+       .long   0xd134e5e5
+       .long   0xf908f1f1
+       .long   0xe2937171
+       .long   0xab73d8d8
+       .long   0x62533131
+       .long   0x2a3f1515
+       .long   0x080c0404
+       .long   0x9552c7c7
+       .long   0x46652323
+       .long   0x9d5ec3c3
+       .long   0x30281818
+       .long   0x37a19696
+       .long   0x0a0f0505
+       .long   0x2fb59a9a
+       .long   0x0e090707
+       .long   0x24361212
+       .long   0x1b9b8080
+       .long   0xdf3de2e2
+       .long   0xcd26ebeb
+       .long   0x4e692727
+       .long   0x7fcdb2b2
+       .long   0xea9f7575
+       .long   0x121b0909
+       .long   0x1d9e8383
+       .long   0x58742c2c
+       .long   0x342e1a1a
+       .long   0x362d1b1b
+       .long   0xdcb26e6e
+       .long   0xb4ee5a5a
+       .long   0x5bfba0a0
+       .long   0xa4f65252
+       .long   0x764d3b3b
+       .long   0xb761d6d6
+       .long   0x7dceb3b3
+       .long   0x527b2929
+       .long   0xdd3ee3e3
+       .long   0x5e712f2f
+       .long   0x13978484
+       .long   0xa6f55353
+       .long   0xb968d1d1
+       .long   0x00000000
+       .long   0xc12ceded
+       .long   0x40602020
+       .long   0xe31ffcfc
+       .long   0x79c8b1b1
+       .long   0xb6ed5b5b
+       .long   0xd4be6a6a
+       .long   0x8d46cbcb
+       .long   0x67d9bebe
+       .long   0x724b3939
+       .long   0x94de4a4a
+       .long   0x98d44c4c
+       .long   0xb0e85858
+       .long   0x854acfcf
+       .long   0xbb6bd0d0
+       .long   0xc52aefef
+       .long   0x4fe5aaaa
+       .long   0xed16fbfb
+       .long   0x86c54343
+       .long   0x9ad74d4d
+       .long   0x66553333
+       .long   0x11948585
+       .long   0x8acf4545
+       .long   0xe910f9f9
+       .long   0x04060202
+       .long   0xfe817f7f
+       .long   0xa0f05050
+       .long   0x78443c3c
+       .long   0x25ba9f9f
+       .long   0x4be3a8a8
+       .long   0xa2f35151
+       .long   0x5dfea3a3
+       .long   0x80c04040
+       .long   0x058a8f8f
+       .long   0x3fad9292
+       .long   0x21bc9d9d
+       .long   0x70483838
+       .long   0xf104f5f5
+       .long   0x63dfbcbc
+       .long   0x77c1b6b6
+       .long   0xaf75dada
+       .long   0x42632121
+       .long   0x20301010
+       .long   0xe51affff
+       .long   0xfd0ef3f3
+       .long   0xbf6dd2d2
+       .long   0x814ccdcd
+       .long   0x18140c0c
+       .long   0x26351313
+       .long   0xc32fecec
+       .long   0xbee15f5f
+       .long   0x35a29797
+       .long   0x88cc4444
+       .long   0x2e391717
+       .long   0x9357c4c4
+       .long   0x55f2a7a7
+       .long   0xfc827e7e
+       .long   0x7a473d3d
+       .long   0xc8ac6464
+       .long   0xbae75d5d
+       .long   0x322b1919
+       .long   0xe6957373
+       .long   0xc0a06060
+       .long   0x19988181
+       .long   0x9ed14f4f
+       .long   0xa37fdcdc
+       .long   0x44662222
+       .long   0x547e2a2a
+       .long   0x3bab9090
+       .long   0x0b838888
+       .long   0x8cca4646
+       .long   0xc729eeee
+       .long   0x6bd3b8b8
+       .long   0x283c1414
+       .long   0xa779dede
+       .long   0xbce25e5e
+       .long   0x161d0b0b
+       .long   0xad76dbdb
+       .long   0xdb3be0e0
+       .long   0x64563232
+       .long   0x744e3a3a
+       .long   0x141e0a0a
+       .long   0x92db4949
+       .long   0x0c0a0606
+       .long   0x486c2424
+       .long   0xb8e45c5c
+       .long   0x9f5dc2c2
+       .long   0xbd6ed3d3
+       .long   0x43efacac
+       .long   0xc4a66262
+       .long   0x39a89191
+       .long   0x31a49595
+       .long   0xd337e4e4
+       .long   0xf28b7979
+       .long   0xd532e7e7
+       .long   0x8b43c8c8
+       .long   0x6e593737
+       .long   0xdab76d6d
+       .long   0x018c8d8d
+       .long   0xb164d5d5
+       .long   0x9cd24e4e
+       .long   0x49e0a9a9
+       .long   0xd8b46c6c
+       .long   0xacfa5656
+       .long   0xf307f4f4
+       .long   0xcf25eaea
+       .long   0xcaaf6565
+       .long   0xf48e7a7a
+       .long   0x47e9aeae
+       .long   0x10180808
+       .long   0x6fd5baba
+       .long   0xf0887878
+       .long   0x4a6f2525
+       .long   0x5c722e2e
+       .long   0x38241c1c
+       .long   0x57f1a6a6
+       .long   0x73c7b4b4
+       .long   0x9751c6c6
+       .long   0xcb23e8e8
+       .long   0xa17cdddd
+       .long   0xe89c7474
+       .long   0x3e211f1f
+       .long   0x96dd4b4b
+       .long   0x61dcbdbd
+       .long   0x0d868b8b
+       .long   0x0f858a8a
+       .long   0xe0907070
+       .long   0x7c423e3e
+       .long   0x71c4b5b5
+       .long   0xccaa6666
+       .long   0x90d84848
+       .long   0x06050303
+       .long   0xf701f6f6
+       .long   0x1c120e0e
+       .long   0xc2a36161
+       .long   0x6a5f3535
+       .long   0xaef95757
+       .long   0x69d0b9b9
+       .long   0x17918686
+       .long   0x9958c1c1
+       .long   0x3a271d1d
+       .long   0x27b99e9e
+       .long   0xd938e1e1
+       .long   0xeb13f8f8
+       .long   0x2bb39898
+       .long   0x22331111
+       .long   0xd2bb6969
+       .long   0xa970d9d9
+       .long   0x07898e8e
+       .long   0x33a79494
+       .long   0x2db69b9b
+       .long   0x3c221e1e
+       .long   0x15928787
+       .long   0xc920e9e9
+       .long   0x8749cece
+       .long   0xaaff5555
+       .long   0x50782828
+       .long   0xa57adfdf
+       .long   0x038f8c8c
+       .long   0x59f8a1a1
+       .long   0x09808989
+       .long   0x1a170d0d
+       .long   0x65dabfbf
+       .long   0xd731e6e6
+       .long   0x84c64242
+       .long   0xd0b86868
+       .long   0x82c34141
+       .long   0x29b09999
+       .long   0x5a772d2d
+       .long   0x1e110f0f
+       .long   0x7bcbb0b0
+       .long   0xa8fc5454
+       .long   0x6dd6bbbb
+       .long   0x2c3a1616
+
+       .align 32
+       .type   itbl1,@object
+       .size   itbl1,1024
+itbl1:
+       .long   0x50a7f451
+       .long   0x5365417e
+       .long   0xc3a4171a
+       .long   0x965e273a
+       .long   0xcb6bab3b
+       .long   0xf1459d1f
+       .long   0xab58faac
+       .long   0x9303e34b
+       .long   0x55fa3020
+       .long   0xf66d76ad
+       .long   0x9176cc88
+       .long   0x254c02f5
+       .long   0xfcd7e54f
+       .long   0xd7cb2ac5
+       .long   0x80443526
+       .long   0x8fa362b5
+       .long   0x495ab1de
+       .long   0x671bba25
+       .long   0x980eea45
+       .long   0xe1c0fe5d
+       .long   0x02752fc3
+       .long   0x12f04c81
+       .long   0xa397468d
+       .long   0xc6f9d36b
+       .long   0xe75f8f03
+       .long   0x959c9215
+       .long   0xeb7a6dbf
+       .long   0xda595295
+       .long   0x2d83bed4
+       .long   0xd3217458
+       .long   0x2969e049
+       .long   0x44c8c98e
+       .long   0x6a89c275
+       .long   0x78798ef4
+       .long   0x6b3e5899
+       .long   0xdd71b927
+       .long   0xb64fe1be
+       .long   0x17ad88f0
+       .long   0x66ac20c9
+       .long   0xb43ace7d
+       .long   0x184adf63
+       .long   0x82311ae5
+       .long   0x60335197
+       .long   0x457f5362
+       .long   0xe07764b1
+       .long   0x84ae6bbb
+       .long   0x1ca081fe
+       .long   0x942b08f9
+       .long   0x58684870
+       .long   0x19fd458f
+       .long   0x876cde94
+       .long   0xb7f87b52
+       .long   0x23d373ab
+       .long   0xe2024b72
+       .long   0x578f1fe3
+       .long   0x2aab5566
+       .long   0x0728ebb2
+       .long   0x03c2b52f
+       .long   0x9a7bc586
+       .long   0xa50837d3
+       .long   0xf2872830
+       .long   0xb2a5bf23
+       .long   0xba6a0302
+       .long   0x5c8216ed
+       .long   0x2b1ccf8a
+       .long   0x92b479a7
+       .long   0xf0f207f3
+       .long   0xa1e2694e
+       .long   0xcdf4da65
+       .long   0xd5be0506
+       .long   0x1f6234d1
+       .long   0x8afea6c4
+       .long   0x9d532e34
+       .long   0xa055f3a2
+       .long   0x32e18a05
+       .long   0x75ebf6a4
+       .long   0x39ec830b
+       .long   0xaaef6040
+       .long   0x069f715e
+       .long   0x51106ebd
+       .long   0xf98a213e
+       .long   0x3d06dd96
+       .long   0xae053edd
+       .long   0x46bde64d
+       .long   0xb58d5491
+       .long   0x055dc471
+       .long   0x6fd40604
+       .long   0xff155060
+       .long   0x24fb9819
+       .long   0x97e9bdd6
+       .long   0xcc434089
+       .long   0x779ed967
+       .long   0xbd42e8b0
+       .long   0x888b8907
+       .long   0x385b19e7
+       .long   0xdbeec879
+       .long   0x470a7ca1
+       .long   0xe90f427c
+       .long   0xc91e84f8
+       .long   0x00000000
+       .long   0x83868009
+       .long   0x48ed2b32
+       .long   0xac70111e
+       .long   0x4e725a6c
+       .long   0xfbff0efd
+       .long   0x5638850f
+       .long   0x1ed5ae3d
+       .long   0x27392d36
+       .long   0x64d90f0a
+       .long   0x21a65c68
+       .long   0xd1545b9b
+       .long   0x3a2e3624
+       .long   0xb1670a0c
+       .long   0x0fe75793
+       .long   0xd296eeb4
+       .long   0x9e919b1b
+       .long   0x4fc5c080
+       .long   0xa220dc61
+       .long   0x694b775a
+       .long   0x161a121c
+       .long   0x0aba93e2
+       .long   0xe52aa0c0
+       .long   0x43e0223c
+       .long   0x1d171b12
+       .long   0x0b0d090e
+       .long   0xadc78bf2
+       .long   0xb9a8b62d
+       .long   0xc8a91e14
+       .long   0x8519f157
+       .long   0x4c0775af
+       .long   0xbbdd99ee
+       .long   0xfd607fa3
+       .long   0x9f2601f7
+       .long   0xbcf5725c
+       .long   0xc53b6644
+       .long   0x347efb5b
+       .long   0x7629438b
+       .long   0xdcc623cb
+       .long   0x68fcedb6
+       .long   0x63f1e4b8
+       .long   0xcadc31d7
+       .long   0x10856342
+       .long   0x40229713
+       .long   0x2011c684
+       .long   0x7d244a85
+       .long   0xf83dbbd2
+       .long   0x1132f9ae
+       .long   0x6da129c7
+       .long   0x4b2f9e1d
+       .long   0xf330b2dc
+       .long   0xec52860d
+       .long   0xd0e3c177
+       .long   0x6c16b32b
+       .long   0x99b970a9
+       .long   0xfa489411
+       .long   0x2264e947
+       .long   0xc48cfca8
+       .long   0x1a3ff0a0
+       .long   0xd82c7d56
+       .long   0xef903322
+       .long   0xc74e4987
+       .long   0xc1d138d9
+       .long   0xfea2ca8c
+       .long   0x360bd498
+       .long   0xcf81f5a6
+       .long   0x28de7aa5
+       .long   0x268eb7da
+       .long   0xa4bfad3f
+       .long   0xe49d3a2c
+       .long   0x0d927850
+       .long   0x9bcc5f6a
+       .long   0x62467e54
+       .long   0xc2138df6
+       .long   0xe8b8d890
+       .long   0x5ef7392e
+       .long   0xf5afc382
+       .long   0xbe805d9f
+       .long   0x7c93d069
+       .long   0xa92dd56f
+       .long   0xb31225cf
+       .long   0x3b99acc8
+       .long   0xa77d1810
+       .long   0x6e639ce8
+       .long   0x7bbb3bdb
+       .long   0x097826cd
+       .long   0xf418596e
+       .long   0x01b79aec
+       .long   0xa89a4f83
+       .long   0x656e95e6
+       .long   0x7ee6ffaa
+       .long   0x08cfbc21
+       .long   0xe6e815ef
+       .long   0xd99be7ba
+       .long   0xce366f4a
+       .long   0xd4099fea
+       .long   0xd67cb029
+       .long   0xafb2a431
+       .long   0x31233f2a
+       .long   0x3094a5c6
+       .long   0xc066a235
+       .long   0x37bc4e74
+       .long   0xa6ca82fc
+       .long   0xb0d090e0
+       .long   0x15d8a733
+       .long   0x4a9804f1
+       .long   0xf7daec41
+       .long   0x0e50cd7f
+       .long   0x2ff69117
+       .long   0x8dd64d76
+       .long   0x4db0ef43
+       .long   0x544daacc
+       .long   0xdf0496e4
+       .long   0xe3b5d19e
+       .long   0x1b886a4c
+       .long   0xb81f2cc1
+       .long   0x7f516546
+       .long   0x04ea5e9d
+       .long   0x5d358c01
+       .long   0x737487fa
+       .long   0x2e410bfb
+       .long   0x5a1d67b3
+       .long   0x52d2db92
+       .long   0x335610e9
+       .long   0x1347d66d
+       .long   0x8c61d79a
+       .long   0x7a0ca137
+       .long   0x8e14f859
+       .long   0x893c13eb
+       .long   0xee27a9ce
+       .long   0x35c961b7
+       .long   0xede51ce1
+       .long   0x3cb1477a
+       .long   0x59dfd29c
+       .long   0x3f73f255
+       .long   0x79ce1418
+       .long   0xbf37c773
+       .long   0xeacdf753
+       .long   0x5baafd5f
+       .long   0x146f3ddf
+       .long   0x86db4478
+       .long   0x81f3afca
+       .long   0x3ec468b9
+       .long   0x2c342438
+       .long   0x5f40a3c2
+       .long   0x72c31d16
+       .long   0x0c25e2bc
+       .long   0x8b493c28
+       .long   0x41950dff
+       .long   0x7101a839
+       .long   0xdeb30c08
+       .long   0x9ce4b4d8
+       .long   0x90c15664
+       .long   0x6184cb7b
+       .long   0x70b632d5
+       .long   0x745c6c48
+       .long   0x4257b8d0
+
+       .align 32
+       .type   itbl2,@object
+       .size   itbl2,1024
+itbl2:
+       .long   0xa7f45150
+       .long   0x65417e53
+       .long   0xa4171ac3
+       .long   0x5e273a96
+       .long   0x6bab3bcb
+       .long   0x459d1ff1
+       .long   0x58faacab
+       .long   0x03e34b93
+       .long   0xfa302055
+       .long   0x6d76adf6
+       .long   0x76cc8891
+       .long   0x4c02f525
+       .long   0xd7e54ffc
+       .long   0xcb2ac5d7
+       .long   0x44352680
+       .long   0xa362b58f
+       .long   0x5ab1de49
+       .long   0x1bba2567
+       .long   0x0eea4598
+       .long   0xc0fe5de1
+       .long   0x752fc302
+       .long   0xf04c8112
+       .long   0x97468da3
+       .long   0xf9d36bc6
+       .long   0x5f8f03e7
+       .long   0x9c921595
+       .long   0x7a6dbfeb
+       .long   0x595295da
+       .long   0x83bed42d
+       .long   0x217458d3
+       .long   0x69e04929
+       .long   0xc8c98e44
+       .long   0x89c2756a
+       .long   0x798ef478
+       .long   0x3e58996b
+       .long   0x71b927dd
+       .long   0x4fe1beb6
+       .long   0xad88f017
+       .long   0xac20c966
+       .long   0x3ace7db4
+       .long   0x4adf6318
+       .long   0x311ae582
+       .long   0x33519760
+       .long   0x7f536245
+       .long   0x7764b1e0
+       .long   0xae6bbb84
+       .long   0xa081fe1c
+       .long   0x2b08f994
+       .long   0x68487058
+       .long   0xfd458f19
+       .long   0x6cde9487
+       .long   0xf87b52b7
+       .long   0xd373ab23
+       .long   0x024b72e2
+       .long   0x8f1fe357
+       .long   0xab55662a
+       .long   0x28ebb207
+       .long   0xc2b52f03
+       .long   0x7bc5869a
+       .long   0x0837d3a5
+       .long   0x872830f2
+       .long   0xa5bf23b2
+       .long   0x6a0302ba
+       .long   0x8216ed5c
+       .long   0x1ccf8a2b
+       .long   0xb479a792
+       .long   0xf207f3f0
+       .long   0xe2694ea1
+       .long   0xf4da65cd
+       .long   0xbe0506d5
+       .long   0x6234d11f
+       .long   0xfea6c48a
+       .long   0x532e349d
+       .long   0x55f3a2a0
+       .long   0xe18a0532
+       .long   0xebf6a475
+       .long   0xec830b39
+       .long   0xef6040aa
+       .long   0x9f715e06
+       .long   0x106ebd51
+       .long   0x8a213ef9
+       .long   0x06dd963d
+       .long   0x053eddae
+       .long   0xbde64d46
+       .long   0x8d5491b5
+       .long   0x5dc47105
+       .long   0xd406046f
+       .long   0x155060ff
+       .long   0xfb981924
+       .long   0xe9bdd697
+       .long   0x434089cc
+       .long   0x9ed96777
+       .long   0x42e8b0bd
+       .long   0x8b890788
+       .long   0x5b19e738
+       .long   0xeec879db
+       .long   0x0a7ca147
+       .long   0x0f427ce9
+       .long   0x1e84f8c9
+       .long   0x00000000
+       .long   0x86800983
+       .long   0xed2b3248
+       .long   0x70111eac
+       .long   0x725a6c4e
+       .long   0xff0efdfb
+       .long   0x38850f56
+       .long   0xd5ae3d1e
+       .long   0x392d3627
+       .long   0xd90f0a64
+       .long   0xa65c6821
+       .long   0x545b9bd1
+       .long   0x2e36243a
+       .long   0x670a0cb1
+       .long   0xe757930f
+       .long   0x96eeb4d2
+       .long   0x919b1b9e
+       .long   0xc5c0804f
+       .long   0x20dc61a2
+       .long   0x4b775a69
+       .long   0x1a121c16
+       .long   0xba93e20a
+       .long   0x2aa0c0e5
+       .long   0xe0223c43
+       .long   0x171b121d
+       .long   0x0d090e0b
+       .long   0xc78bf2ad
+       .long   0xa8b62db9
+       .long   0xa91e14c8
+       .long   0x19f15785
+       .long   0x0775af4c
+       .long   0xdd99eebb
+       .long   0x607fa3fd
+       .long   0x2601f79f
+       .long   0xf5725cbc
+       .long   0x3b6644c5
+       .long   0x7efb5b34
+       .long   0x29438b76
+       .long   0xc623cbdc
+       .long   0xfcedb668
+       .long   0xf1e4b863
+       .long   0xdc31d7ca
+       .long   0x85634210
+       .long   0x22971340
+       .long   0x11c68420
+       .long   0x244a857d
+       .long   0x3dbbd2f8
+       .long   0x32f9ae11
+       .long   0xa129c76d
+       .long   0x2f9e1d4b
+       .long   0x30b2dcf3
+       .long   0x52860dec
+       .long   0xe3c177d0
+       .long   0x16b32b6c
+       .long   0xb970a999
+       .long   0x489411fa
+       .long   0x64e94722
+       .long   0x8cfca8c4
+       .long   0x3ff0a01a
+       .long   0x2c7d56d8
+       .long   0x903322ef
+       .long   0x4e4987c7
+       .long   0xd138d9c1
+       .long   0xa2ca8cfe
+       .long   0x0bd49836
+       .long   0x81f5a6cf
+       .long   0xde7aa528
+       .long   0x8eb7da26
+       .long   0xbfad3fa4
+       .long   0x9d3a2ce4
+       .long   0x9278500d
+       .long   0xcc5f6a9b
+       .long   0x467e5462
+       .long   0x138df6c2
+       .long   0xb8d890e8
+       .long   0xf7392e5e
+       .long   0xafc382f5
+       .long   0x805d9fbe
+       .long   0x93d0697c
+       .long   0x2dd56fa9
+       .long   0x1225cfb3
+       .long   0x99acc83b
+       .long   0x7d1810a7
+       .long   0x639ce86e
+       .long   0xbb3bdb7b
+       .long   0x7826cd09
+       .long   0x18596ef4
+       .long   0xb79aec01
+       .long   0x9a4f83a8
+       .long   0x6e95e665
+       .long   0xe6ffaa7e
+       .long   0xcfbc2108
+       .long   0xe815efe6
+       .long   0x9be7bad9
+       .long   0x366f4ace
+       .long   0x099fead4
+       .long   0x7cb029d6
+       .long   0xb2a431af
+       .long   0x233f2a31
+       .long   0x94a5c630
+       .long   0x66a235c0
+       .long   0xbc4e7437
+       .long   0xca82fca6
+       .long   0xd090e0b0
+       .long   0xd8a73315
+       .long   0x9804f14a
+       .long   0xdaec41f7
+       .long   0x50cd7f0e
+       .long   0xf691172f
+       .long   0xd64d768d
+       .long   0xb0ef434d
+       .long   0x4daacc54
+       .long   0x0496e4df
+       .long   0xb5d19ee3
+       .long   0x886a4c1b
+       .long   0x1f2cc1b8
+       .long   0x5165467f
+       .long   0xea5e9d04
+       .long   0x358c015d
+       .long   0x7487fa73
+       .long   0x410bfb2e
+       .long   0x1d67b35a
+       .long   0xd2db9252
+       .long   0x5610e933
+       .long   0x47d66d13
+       .long   0x61d79a8c
+       .long   0x0ca1377a
+       .long   0x14f8598e
+       .long   0x3c13eb89
+       .long   0x27a9ceee
+       .long   0xc961b735
+       .long   0xe51ce1ed
+       .long   0xb1477a3c
+       .long   0xdfd29c59
+       .long   0x73f2553f
+       .long   0xce141879
+       .long   0x37c773bf
+       .long   0xcdf753ea
+       .long   0xaafd5f5b
+       .long   0x6f3ddf14
+       .long   0xdb447886
+       .long   0xf3afca81
+       .long   0xc468b93e
+       .long   0x3424382c
+       .long   0x40a3c25f
+       .long   0xc31d1672
+       .long   0x25e2bc0c
+       .long   0x493c288b
+       .long   0x950dff41
+       .long   0x01a83971
+       .long   0xb30c08de
+       .long   0xe4b4d89c
+       .long   0xc1566490
+       .long   0x84cb7b61
+       .long   0xb632d570
+       .long   0x5c6c4874
+       .long   0x57b8d042
+
+       .align 32
+       .type   itbl3,@object
+       .size   itbl3,1024
+itbl3:
+       .long   0xf45150a7
+       .long   0x417e5365
+       .long   0x171ac3a4
+       .long   0x273a965e
+       .long   0xab3bcb6b
+       .long   0x9d1ff145
+       .long   0xfaacab58
+       .long   0xe34b9303
+       .long   0x302055fa
+       .long   0x76adf66d
+       .long   0xcc889176
+       .long   0x02f5254c
+       .long   0xe54ffcd7
+       .long   0x2ac5d7cb
+       .long   0x35268044
+       .long   0x62b58fa3
+       .long   0xb1de495a
+       .long   0xba25671b
+       .long   0xea45980e
+       .long   0xfe5de1c0
+       .long   0x2fc30275
+       .long   0x4c8112f0
+       .long   0x468da397
+       .long   0xd36bc6f9
+       .long   0x8f03e75f
+       .long   0x9215959c
+       .long   0x6dbfeb7a
+       .long   0x5295da59
+       .long   0xbed42d83
+       .long   0x7458d321
+       .long   0xe0492969
+       .long   0xc98e44c8
+       .long   0xc2756a89
+       .long   0x8ef47879
+       .long   0x58996b3e
+       .long   0xb927dd71
+       .long   0xe1beb64f
+       .long   0x88f017ad
+       .long   0x20c966ac
+       .long   0xce7db43a
+       .long   0xdf63184a
+       .long   0x1ae58231
+       .long   0x51976033
+       .long   0x5362457f
+       .long   0x64b1e077
+       .long   0x6bbb84ae
+       .long   0x81fe1ca0
+       .long   0x08f9942b
+       .long   0x48705868
+       .long   0x458f19fd
+       .long   0xde94876c
+       .long   0x7b52b7f8
+       .long   0x73ab23d3
+       .long   0x4b72e202
+       .long   0x1fe3578f
+       .long   0x55662aab
+       .long   0xebb20728
+       .long   0xb52f03c2
+       .long   0xc5869a7b
+       .long   0x37d3a508
+       .long   0x2830f287
+       .long   0xbf23b2a5
+       .long   0x0302ba6a
+       .long   0x16ed5c82
+       .long   0xcf8a2b1c
+       .long   0x79a792b4
+       .long   0x07f3f0f2
+       .long   0x694ea1e2
+       .long   0xda65cdf4
+       .long   0x0506d5be
+       .long   0x34d11f62
+       .long   0xa6c48afe
+       .long   0x2e349d53
+       .long   0xf3a2a055
+       .long   0x8a0532e1
+       .long   0xf6a475eb
+       .long   0x830b39ec
+       .long   0x6040aaef
+       .long   0x715e069f
+       .long   0x6ebd5110
+       .long   0x213ef98a
+       .long   0xdd963d06
+       .long   0x3eddae05
+       .long   0xe64d46bd
+       .long   0x5491b58d
+       .long   0xc471055d
+       .long   0x06046fd4
+       .long   0x5060ff15
+       .long   0x981924fb
+       .long   0xbdd697e9
+       .long   0x4089cc43
+       .long   0xd967779e
+       .long   0xe8b0bd42
+       .long   0x8907888b
+       .long   0x19e7385b
+       .long   0xc879dbee
+       .long   0x7ca1470a
+       .long   0x427ce90f
+       .long   0x84f8c91e
+       .long   0x00000000
+       .long   0x80098386
+       .long   0x2b3248ed
+       .long   0x111eac70
+       .long   0x5a6c4e72
+       .long   0x0efdfbff
+       .long   0x850f5638
+       .long   0xae3d1ed5
+       .long   0x2d362739
+       .long   0x0f0a64d9
+       .long   0x5c6821a6
+       .long   0x5b9bd154
+       .long   0x36243a2e
+       .long   0x0a0cb167
+       .long   0x57930fe7
+       .long   0xeeb4d296
+       .long   0x9b1b9e91
+       .long   0xc0804fc5
+       .long   0xdc61a220
+       .long   0x775a694b
+       .long   0x121c161a
+       .long   0x93e20aba
+       .long   0xa0c0e52a
+       .long   0x223c43e0
+       .long   0x1b121d17
+       .long   0x090e0b0d
+       .long   0x8bf2adc7
+       .long   0xb62db9a8
+       .long   0x1e14c8a9
+       .long   0xf1578519
+       .long   0x75af4c07
+       .long   0x99eebbdd
+       .long   0x7fa3fd60
+       .long   0x01f79f26
+       .long   0x725cbcf5
+       .long   0x6644c53b
+       .long   0xfb5b347e
+       .long   0x438b7629
+       .long   0x23cbdcc6
+       .long   0xedb668fc
+       .long   0xe4b863f1
+       .long   0x31d7cadc
+       .long   0x63421085
+       .long   0x97134022
+       .long   0xc6842011
+       .long   0x4a857d24
+       .long   0xbbd2f83d
+       .long   0xf9ae1132
+       .long   0x29c76da1
+       .long   0x9e1d4b2f
+       .long   0xb2dcf330
+       .long   0x860dec52
+       .long   0xc177d0e3
+       .long   0xb32b6c16
+       .long   0x70a999b9
+       .long   0x9411fa48
+       .long   0xe9472264
+       .long   0xfca8c48c
+       .long   0xf0a01a3f
+       .long   0x7d56d82c
+       .long   0x3322ef90
+       .long   0x4987c74e
+       .long   0x38d9c1d1
+       .long   0xca8cfea2
+       .long   0xd498360b
+       .long   0xf5a6cf81
+       .long   0x7aa528de
+       .long   0xb7da268e
+       .long   0xad3fa4bf
+       .long   0x3a2ce49d
+       .long   0x78500d92
+       .long   0x5f6a9bcc
+       .long   0x7e546246
+       .long   0x8df6c213
+       .long   0xd890e8b8
+       .long   0x392e5ef7
+       .long   0xc382f5af
+       .long   0x5d9fbe80
+       .long   0xd0697c93
+       .long   0xd56fa92d
+       .long   0x25cfb312
+       .long   0xacc83b99
+       .long   0x1810a77d
+       .long   0x9ce86e63
+       .long   0x3bdb7bbb
+       .long   0x26cd0978
+       .long   0x596ef418
+       .long   0x9aec01b7
+       .long   0x4f83a89a
+       .long   0x95e6656e
+       .long   0xffaa7ee6
+       .long   0xbc2108cf
+       .long   0x15efe6e8
+       .long   0xe7bad99b
+       .long   0x6f4ace36
+       .long   0x9fead409
+       .long   0xb029d67c
+       .long   0xa431afb2
+       .long   0x3f2a3123
+       .long   0xa5c63094
+       .long   0xa235c066
+       .long   0x4e7437bc
+       .long   0x82fca6ca
+       .long   0x90e0b0d0
+       .long   0xa73315d8
+       .long   0x04f14a98
+       .long   0xec41f7da
+       .long   0xcd7f0e50
+       .long   0x91172ff6
+       .long   0x4d768dd6
+       .long   0xef434db0
+       .long   0xaacc544d
+       .long   0x96e4df04
+       .long   0xd19ee3b5
+       .long   0x6a4c1b88
+       .long   0x2cc1b81f
+       .long   0x65467f51
+       .long   0x5e9d04ea
+       .long   0x8c015d35
+       .long   0x87fa7374
+       .long   0x0bfb2e41
+       .long   0x67b35a1d
+       .long   0xdb9252d2
+       .long   0x10e93356
+       .long   0xd66d1347
+       .long   0xd79a8c61
+       .long   0xa1377a0c
+       .long   0xf8598e14
+       .long   0x13eb893c
+       .long   0xa9ceee27
+       .long   0x61b735c9
+       .long   0x1ce1ede5
+       .long   0x477a3cb1
+       .long   0xd29c59df
+       .long   0xf2553f73
+       .long   0x141879ce
+       .long   0xc773bf37
+       .long   0xf753eacd
+       .long   0xfd5f5baa
+       .long   0x3ddf146f
+       .long   0x447886db
+       .long   0xafca81f3
+       .long   0x68b93ec4
+       .long   0x24382c34
+       .long   0xa3c25f40
+       .long   0x1d1672c3
+       .long   0xe2bc0c25
+       .long   0x3c288b49
+       .long   0x0dff4195
+       .long   0xa8397101
+       .long   0x0c08deb3
+       .long   0xb4d89ce4
+       .long   0x566490c1
+       .long   0xcb7b6184
+       .long   0x32d570b6
+       .long   0x6c48745c
+       .long   0xb8d04257
+
+       .align 32
+       .type   itbl4,@object
+       .size   itbl4,1024
+itbl4:
+       .long   0x5150a7f4
+       .long   0x7e536541
+       .long   0x1ac3a417
+       .long   0x3a965e27
+       .long   0x3bcb6bab
+       .long   0x1ff1459d
+       .long   0xacab58fa
+       .long   0x4b9303e3
+       .long   0x2055fa30
+       .long   0xadf66d76
+       .long   0x889176cc
+       .long   0xf5254c02
+       .long   0x4ffcd7e5
+       .long   0xc5d7cb2a
+       .long   0x26804435
+       .long   0xb58fa362
+       .long   0xde495ab1
+       .long   0x25671bba
+       .long   0x45980eea
+       .long   0x5de1c0fe
+       .long   0xc302752f
+       .long   0x8112f04c
+       .long   0x8da39746
+       .long   0x6bc6f9d3
+       .long   0x03e75f8f
+       .long   0x15959c92
+       .long   0xbfeb7a6d
+       .long   0x95da5952
+       .long   0xd42d83be
+       .long   0x58d32174
+       .long   0x492969e0
+       .long   0x8e44c8c9
+       .long   0x756a89c2
+       .long   0xf478798e
+       .long   0x996b3e58
+       .long   0x27dd71b9
+       .long   0xbeb64fe1
+       .long   0xf017ad88
+       .long   0xc966ac20
+       .long   0x7db43ace
+       .long   0x63184adf
+       .long   0xe582311a
+       .long   0x97603351
+       .long   0x62457f53
+       .long   0xb1e07764
+       .long   0xbb84ae6b
+       .long   0xfe1ca081
+       .long   0xf9942b08
+       .long   0x70586848
+       .long   0x8f19fd45
+       .long   0x94876cde
+       .long   0x52b7f87b
+       .long   0xab23d373
+       .long   0x72e2024b
+       .long   0xe3578f1f
+       .long   0x662aab55
+       .long   0xb20728eb
+       .long   0x2f03c2b5
+       .long   0x869a7bc5
+       .long   0xd3a50837
+       .long   0x30f28728
+       .long   0x23b2a5bf
+       .long   0x02ba6a03
+       .long   0xed5c8216
+       .long   0x8a2b1ccf
+       .long   0xa792b479
+       .long   0xf3f0f207
+       .long   0x4ea1e269
+       .long   0x65cdf4da
+       .long   0x06d5be05
+       .long   0xd11f6234
+       .long   0xc48afea6
+       .long   0x349d532e
+       .long   0xa2a055f3
+       .long   0x0532e18a
+       .long   0xa475ebf6
+       .long   0x0b39ec83
+       .long   0x40aaef60
+       .long   0x5e069f71
+       .long   0xbd51106e
+       .long   0x3ef98a21
+       .long   0x963d06dd
+       .long   0xddae053e
+       .long   0x4d46bde6
+       .long   0x91b58d54
+       .long   0x71055dc4
+       .long   0x046fd406
+       .long   0x60ff1550
+       .long   0x1924fb98
+       .long   0xd697e9bd
+       .long   0x89cc4340
+       .long   0x67779ed9
+       .long   0xb0bd42e8
+       .long   0x07888b89
+       .long   0xe7385b19
+       .long   0x79dbeec8
+       .long   0xa1470a7c
+       .long   0x7ce90f42
+       .long   0xf8c91e84
+       .long   0x00000000
+       .long   0x09838680
+       .long   0x3248ed2b
+       .long   0x1eac7011
+       .long   0x6c4e725a
+       .long   0xfdfbff0e
+       .long   0x0f563885
+       .long   0x3d1ed5ae
+       .long   0x3627392d
+       .long   0x0a64d90f
+       .long   0x6821a65c
+       .long   0x9bd1545b
+       .long   0x243a2e36
+       .long   0x0cb1670a
+       .long   0x930fe757
+       .long   0xb4d296ee
+       .long   0x1b9e919b
+       .long   0x804fc5c0
+       .long   0x61a220dc
+       .long   0x5a694b77
+       .long   0x1c161a12
+       .long   0xe20aba93
+       .long   0xc0e52aa0
+       .long   0x3c43e022
+       .long   0x121d171b
+       .long   0x0e0b0d09
+       .long   0xf2adc78b
+       .long   0x2db9a8b6
+       .long   0x14c8a91e
+       .long   0x578519f1
+       .long   0xaf4c0775
+       .long   0xeebbdd99
+       .long   0xa3fd607f
+       .long   0xf79f2601
+       .long   0x5cbcf572
+       .long   0x44c53b66
+       .long   0x5b347efb
+       .long   0x8b762943
+       .long   0xcbdcc623
+       .long   0xb668fced
+       .long   0xb863f1e4
+       .long   0xd7cadc31
+       .long   0x42108563
+       .long   0x13402297
+       .long   0x842011c6
+       .long   0x857d244a
+       .long   0xd2f83dbb
+       .long   0xae1132f9
+       .long   0xc76da129
+       .long   0x1d4b2f9e
+       .long   0xdcf330b2
+       .long   0x0dec5286
+       .long   0x77d0e3c1
+       .long   0x2b6c16b3
+       .long   0xa999b970
+       .long   0x11fa4894
+       .long   0x472264e9
+       .long   0xa8c48cfc
+       .long   0xa01a3ff0
+       .long   0x56d82c7d
+       .long   0x22ef9033
+       .long   0x87c74e49
+       .long   0xd9c1d138
+       .long   0x8cfea2ca
+       .long   0x98360bd4
+       .long   0xa6cf81f5
+       .long   0xa528de7a
+       .long   0xda268eb7
+       .long   0x3fa4bfad
+       .long   0x2ce49d3a
+       .long   0x500d9278
+       .long   0x6a9bcc5f
+       .long   0x5462467e
+       .long   0xf6c2138d
+       .long   0x90e8b8d8
+       .long   0x2e5ef739
+       .long   0x82f5afc3
+       .long   0x9fbe805d
+       .long   0x697c93d0
+       .long   0x6fa92dd5
+       .long   0xcfb31225
+       .long   0xc83b99ac
+       .long   0x10a77d18
+       .long   0xe86e639c
+       .long   0xdb7bbb3b
+       .long   0xcd097826
+       .long   0x6ef41859
+       .long   0xec01b79a
+       .long   0x83a89a4f
+       .long   0xe6656e95
+       .long   0xaa7ee6ff
+       .long   0x2108cfbc
+       .long   0xefe6e815
+       .long   0xbad99be7
+       .long   0x4ace366f
+       .long   0xead4099f
+       .long   0x29d67cb0
+       .long   0x31afb2a4
+       .long   0x2a31233f
+       .long   0xc63094a5
+       .long   0x35c066a2
+       .long   0x7437bc4e
+       .long   0xfca6ca82
+       .long   0xe0b0d090
+       .long   0x3315d8a7
+       .long   0xf14a9804
+       .long   0x41f7daec
+       .long   0x7f0e50cd
+       .long   0x172ff691
+       .long   0x768dd64d
+       .long   0x434db0ef
+       .long   0xcc544daa
+       .long   0xe4df0496
+       .long   0x9ee3b5d1
+       .long   0x4c1b886a
+       .long   0xc1b81f2c
+       .long   0x467f5165
+       .long   0x9d04ea5e
+       .long   0x015d358c
+       .long   0xfa737487
+       .long   0xfb2e410b
+       .long   0xb35a1d67
+       .long   0x9252d2db
+       .long   0xe9335610
+       .long   0x6d1347d6
+       .long   0x9a8c61d7
+       .long   0x377a0ca1
+       .long   0x598e14f8
+       .long   0xeb893c13
+       .long   0xceee27a9
+       .long   0xb735c961
+       .long   0xe1ede51c
+       .long   0x7a3cb147
+       .long   0x9c59dfd2
+       .long   0x553f73f2
+       .long   0x1879ce14
+       .long   0x73bf37c7
+       .long   0x53eacdf7
+       .long   0x5f5baafd
+       .long   0xdf146f3d
+       .long   0x7886db44
+       .long   0xca81f3af
+       .long   0xb93ec468
+       .long   0x382c3424
+       .long   0xc25f40a3
+       .long   0x1672c31d
+       .long   0xbc0c25e2
+       .long   0x288b493c
+       .long   0xff41950d
+       .long   0x397101a8
+       .long   0x08deb30c
+       .long   0xd89ce4b4
+       .long   0x6490c156
+       .long   0x7b6184cb
+       .long   0xd570b632
+       .long   0x48745c6c
+       .long   0xd04257b8
+
+       /* S-boxes, only used by the last round of the cipher or inverse
+          cipher. */
+       .align 32
+       .type   sbox,@object
+       .size   sbox,256
+sbox:
+       .byte   0x63
+       .byte   0x7c
+       .byte   0x77
+       .byte   0x7b
+       .byte   0xf2
+       .byte   0x6b
+       .byte   0x6f
+       .byte   0xc5
+       .byte   0x30
+       .byte   0x01
+       .byte   0x67
+       .byte   0x2b
+       .byte   0xfe
+       .byte   0xd7
+       .byte   0xab
+       .byte   0x76
+       .byte   0xca
+       .byte   0x82
+       .byte   0xc9
+       .byte   0x7d
+       .byte   0xfa
+       .byte   0x59
+       .byte   0x47
+       .byte   0xf0
+       .byte   0xad
+       .byte   0xd4
+       .byte   0xa2
+       .byte   0xaf
+       .byte   0x9c
+       .byte   0xa4
+       .byte   0x72
+       .byte   0xc0
+       .byte   0xb7
+       .byte   0xfd
+       .byte   0x93
+       .byte   0x26
+       .byte   0x36
+       .byte   0x3f
+       .byte   0xf7
+       .byte   0xcc
+       .byte   0x34
+       .byte   0xa5
+       .byte   0xe5
+       .byte   0xf1
+       .byte   0x71
+       .byte   0xd8
+       .byte   0x31
+       .byte   0x15
+       .byte   0x04
+       .byte   0xc7
+       .byte   0x23
+       .byte   0xc3
+       .byte   0x18
+       .byte   0x96
+       .byte   0x05
+       .byte   0x9a
+       .byte   0x07
+       .byte   0x12
+       .byte   0x80
+       .byte   0xe2
+       .byte   0xeb
+       .byte   0x27
+       .byte   0xb2
+       .byte   0x75
+       .byte   0x09
+       .byte   0x83
+       .byte   0x2c
+       .byte   0x1a
+       .byte   0x1b
+       .byte   0x6e
+       .byte   0x5a
+       .byte   0xa0
+       .byte   0x52
+       .byte   0x3b
+       .byte   0xd6
+       .byte   0xb3
+       .byte   0x29
+       .byte   0xe3
+       .byte   0x2f
+       .byte   0x84
+       .byte   0x53
+       .byte   0xd1
+       .byte   0x00
+       .byte   0xed
+       .byte   0x20
+       .byte   0xfc
+       .byte   0xb1
+       .byte   0x5b
+       .byte   0x6a
+       .byte   0xcb
+       .byte   0xbe
+       .byte   0x39
+       .byte   0x4a
+       .byte   0x4c
+       .byte   0x58
+       .byte   0xcf
+       .byte   0xd0
+       .byte   0xef
+       .byte   0xaa
+       .byte   0xfb
+       .byte   0x43
+       .byte   0x4d
+       .byte   0x33
+       .byte   0x85
+       .byte   0x45
+       .byte   0xf9
+       .byte   0x02
+       .byte   0x7f
+       .byte   0x50
+       .byte   0x3c
+       .byte   0x9f
+       .byte   0xa8
+       .byte   0x51
+       .byte   0xa3
+       .byte   0x40
+       .byte   0x8f
+       .byte   0x92
+       .byte   0x9d
+       .byte   0x38
+       .byte   0xf5
+       .byte   0xbc
+       .byte   0xb6
+       .byte   0xda
+       .byte   0x21
+       .byte   0x10
+       .byte   0xff
+       .byte   0xf3
+       .byte   0xd2
+       .byte   0xcd
+       .byte   0x0c
+       .byte   0x13
+       .byte   0xec
+       .byte   0x5f
+       .byte   0x97
+       .byte   0x44
+       .byte   0x17
+       .byte   0xc4
+       .byte   0xa7
+       .byte   0x7e
+       .byte   0x3d
+       .byte   0x64
+       .byte   0x5d
+       .byte   0x19
+       .byte   0x73
+       .byte   0x60
+       .byte   0x81
+       .byte   0x4f
+       .byte   0xdc
+       .byte   0x22
+       .byte   0x2a
+       .byte   0x90
+       .byte   0x88
+       .byte   0x46
+       .byte   0xee
+       .byte   0xb8
+       .byte   0x14
+       .byte   0xde
+       .byte   0x5e
+       .byte   0x0b
+       .byte   0xdb
+       .byte   0xe0
+       .byte   0x32
+       .byte   0x3a
+       .byte   0x0a
+       .byte   0x49
+       .byte   0x06
+       .byte   0x24
+       .byte   0x5c
+       .byte   0xc2
+       .byte   0xd3
+       .byte   0xac
+       .byte   0x62
+       .byte   0x91
+       .byte   0x95
+       .byte   0xe4
+       .byte   0x79
+       .byte   0xe7
+       .byte   0xc8
+       .byte   0x37
+       .byte   0x6d
+       .byte   0x8d
+       .byte   0xd5
+       .byte   0x4e
+       .byte   0xa9
+       .byte   0x6c
+       .byte   0x56
+       .byte   0xf4
+       .byte   0xea
+       .byte   0x65
+       .byte   0x7a
+       .byte   0xae
+       .byte   0x08
+       .byte   0xba
+       .byte   0x78
+       .byte   0x25
+       .byte   0x2e
+       .byte   0x1c
+       .byte   0xa6
+       .byte   0xb4
+       .byte   0xc6
+       .byte   0xe8
+       .byte   0xdd
+       .byte   0x74
+       .byte   0x1f
+       .byte   0x4b
+       .byte   0xbd
+       .byte   0x8b
+       .byte   0x8a
+       .byte   0x70
+       .byte   0x3e
+       .byte   0xb5
+       .byte   0x66
+       .byte   0x48
+       .byte   0x03
+       .byte   0xf6
+       .byte   0x0e
+       .byte   0x61
+       .byte   0x35
+       .byte   0x57
+       .byte   0xb9
+       .byte   0x86
+       .byte   0xc1
+       .byte   0x1d
+       .byte   0x9e
+       .byte   0xe1
+       .byte   0xf8
+       .byte   0x98
+       .byte   0x11
+       .byte   0x69
+       .byte   0xd9
+       .byte   0x8e
+       .byte   0x94
+       .byte   0x9b
+       .byte   0x1e
+       .byte   0x87
+       .byte   0xe9
+       .byte   0xce
+       .byte   0x55
+       .byte   0x28
+       .byte   0xdf
+       .byte   0x8c
+       .byte   0xa1
+       .byte   0x89
+       .byte   0x0d
+       .byte   0xbf
+       .byte   0xe6
+       .byte   0x42
+       .byte   0x68
+       .byte   0x41
+       .byte   0x99
+       .byte   0x2d
+       .byte   0x0f
+       .byte   0xb0
+       .byte   0x54
+       .byte   0xbb
+       .byte   0x16
+       .align 32
+       .type   isbox,@object
+       .size   isbox,256
+isbox:
+       .byte   0x52
+       .byte   0x09
+       .byte   0x6a
+       .byte   0xd5
+       .byte   0x30
+       .byte   0x36
+       .byte   0xa5
+       .byte   0x38
+       .byte   0xbf
+       .byte   0x40
+       .byte   0xa3
+       .byte   0x9e
+       .byte   0x81
+       .byte   0xf3
+       .byte   0xd7
+       .byte   0xfb
+       .byte   0x7c
+       .byte   0xe3
+       .byte   0x39
+       .byte   0x82
+       .byte   0x9b
+       .byte   0x2f
+       .byte   0xff
+       .byte   0x87
+       .byte   0x34
+       .byte   0x8e
+       .byte   0x43
+       .byte   0x44
+       .byte   0xc4
+       .byte   0xde
+       .byte   0xe9
+       .byte   0xcb
+       .byte   0x54
+       .byte   0x7b
+       .byte   0x94
+       .byte   0x32
+       .byte   0xa6
+       .byte   0xc2
+       .byte   0x23
+       .byte   0x3d
+       .byte   0xee
+       .byte   0x4c
+       .byte   0x95
+       .byte   0x0b
+       .byte   0x42
+       .byte   0xfa
+       .byte   0xc3
+       .byte   0x4e
+       .byte   0x08
+       .byte   0x2e
+       .byte   0xa1
+       .byte   0x66
+       .byte   0x28
+       .byte   0xd9
+       .byte   0x24
+       .byte   0xb2
+       .byte   0x76
+       .byte   0x5b
+       .byte   0xa2
+       .byte   0x49
+       .byte   0x6d
+       .byte   0x8b
+       .byte   0xd1
+       .byte   0x25
+       .byte   0x72
+       .byte   0xf8
+       .byte   0xf6
+       .byte   0x64
+       .byte   0x86
+       .byte   0x68
+       .byte   0x98
+       .byte   0x16
+       .byte   0xd4
+       .byte   0xa4
+       .byte   0x5c
+       .byte   0xcc
+       .byte   0x5d
+       .byte   0x65
+       .byte   0xb6
+       .byte   0x92
+       .byte   0x6c
+       .byte   0x70
+       .byte   0x48
+       .byte   0x50
+       .byte   0xfd
+       .byte   0xed
+       .byte   0xb9
+       .byte   0xda
+       .byte   0x5e
+       .byte   0x15
+       .byte   0x46
+       .byte   0x57
+       .byte   0xa7
+       .byte   0x8d
+       .byte   0x9d
+       .byte   0x84
+       .byte   0x90
+       .byte   0xd8
+       .byte   0xab
+       .byte   0x00
+       .byte   0x8c
+       .byte   0xbc
+       .byte   0xd3
+       .byte   0x0a
+       .byte   0xf7
+       .byte   0xe4
+       .byte   0x58
+       .byte   0x05
+       .byte   0xb8
+       .byte   0xb3
+       .byte   0x45
+       .byte   0x06
+       .byte   0xd0
+       .byte   0x2c
+       .byte   0x1e
+       .byte   0x8f
+       .byte   0xca
+       .byte   0x3f
+       .byte   0x0f
+       .byte   0x02
+       .byte   0xc1
+       .byte   0xaf
+       .byte   0xbd
+       .byte   0x03
+       .byte   0x01
+       .byte   0x13
+       .byte   0x8a
+       .byte   0x6b
+       .byte   0x3a
+       .byte   0x91
+       .byte   0x11
+       .byte   0x41
+       .byte   0x4f
+       .byte   0x67
+       .byte   0xdc
+       .byte   0xea
+       .byte   0x97
+       .byte   0xf2
+       .byte   0xcf
+       .byte   0xce
+       .byte   0xf0
+       .byte   0xb4
+       .byte   0xe6
+       .byte   0x73
+       .byte   0x96
+       .byte   0xac
+       .byte   0x74
+       .byte   0x22
+       .byte   0xe7
+       .byte   0xad
+       .byte   0x35
+       .byte   0x85
+       .byte   0xe2
+       .byte   0xf9
+       .byte   0x37
+       .byte   0xe8
+       .byte   0x1c
+       .byte   0x75
+       .byte   0xdf
+       .byte   0x6e
+       .byte   0x47
+       .byte   0xf1
+       .byte   0x1a
+       .byte   0x71
+       .byte   0x1d
+       .byte   0x29
+       .byte   0xc5
+       .byte   0x89
+       .byte   0x6f
+       .byte   0xb7
+       .byte   0x62
+       .byte   0x0e
+       .byte   0xaa
+       .byte   0x18
+       .byte   0xbe
+       .byte   0x1b
+       .byte   0xfc
+       .byte   0x56
+       .byte   0x3e
+       .byte   0x4b
+       .byte   0xc6
+       .byte   0xd2
+       .byte   0x79
+       .byte   0x20
+       .byte   0x9a
+       .byte   0xdb
+       .byte   0xc0
+       .byte   0xfe
+       .byte   0x78
+       .byte   0xcd
+       .byte   0x5a
+       .byte   0xf4
+       .byte   0x1f
+       .byte   0xdd
+       .byte   0xa8
+       .byte   0x33
+       .byte   0x88
+       .byte   0x07
+       .byte   0xc7
+       .byte   0x31
+       .byte   0xb1
+       .byte   0x12
+       .byte   0x10
+       .byte   0x59
+       .byte   0x27
+       .byte   0x80
+       .byte   0xec
+       .byte   0x5f
+       .byte   0x60
+       .byte   0x51
+       .byte   0x7f
+       .byte   0xa9
+       .byte   0x19
+       .byte   0xb5
+       .byte   0x4a
+       .byte   0x0d
+       .byte   0x2d
+       .byte   0xe5
+       .byte   0x7a
+       .byte   0x9f
+       .byte   0x93
+       .byte   0xc9
+       .byte   0x9c
+       .byte   0xef
+       .byte   0xa0
+       .byte   0xe0
+       .byte   0x3b
+       .byte   0x4d
+       .byte   0xae
+       .byte   0x2a
+       .byte   0xf5
+       .byte   0xb0
+       .byte   0xc8
+       .byte   0xeb
+       .byte   0xbb
+       .byte   0x3c
+       .byte   0x83
+       .byte   0x53
+       .byte   0x99
+       .byte   0x61
+       .byte   0x17
+       .byte   0x2b
+       .byte   0x04
+       .byte   0x7e
+       .byte   0xba
+       .byte   0x77
+       .byte   0xd6
+       .byte   0x26
+       .byte   0xe1
+       .byte   0x69
+       .byte   0x14
+       .byte   0x63
+       .byte   0x55
+       .byte   0x21
+       .byte   0x0c
+       .byte   0x7d