summaryrefslogtreecommitdiff
path: root/x86
diff options
context:
space:
mode:
authorRafael Sevilla <dido@pacific.net.ph>2002-02-11 15:04:35 +0100
committerNiels Möller <nisse@lysator.liu.se>2002-02-11 15:04:35 +0100
commit9bd661407c7c24a215f8968a3284a66754408a62 (patch)
tree065b5629cd2bfd21f14720fe22da39a850e59990 /x86
parentff6c9f2a93ce3ba5ac830daf944a8b859ee1ec8c (diff)
downloadnettle-9bd661407c7c24a215f8968a3284a66754408a62.tar.gz
New assembler implementation by
Rafael Sevilla. Rev: src/nettle/x86/aes.asm:1.1 Rev: src/nettle/x86/aes_tables.asm:1.1
Diffstat (limited to 'x86')
-rw-r--r--x86/aes.asm500
-rw-r--r--x86/aes_tables.asm2613
2 files changed, 3113 insertions, 0 deletions
diff --git a/x86/aes.asm b/x86/aes.asm
new file mode 100644
index 00000000..96c30482
--- /dev/null
+++ b/x86/aes.asm
@@ -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
index 00000000..02025427
--- /dev/null
+++ b/x86/aes_tables.asm
@@ -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