From 9bd661407c7c24a215f8968a3284a66754408a62 Mon Sep 17 00:00:00 2001
From: Rafael Sevilla <dido@pacific.net.ph>
Date: Mon, 11 Feb 2002 15:04:35 +0100
Subject: [PATCH] New assembler implementation by Rafael Sevilla.

Rev: src/nettle/x86/aes.asm:1.1
Rev: src/nettle/x86/aes_tables.asm:1.1
---
 x86/aes.asm        |  500 +++++++++
 x86/aes_tables.asm | 2613 ++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 3113 insertions(+)
 create mode 100644 x86/aes.asm
 create mode 100644 x86/aes_tables.asm

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
-- 
GitLab