components/openssl/openssl-1.0.0/engines/t4/t4_des.S
changeset 1158 227137d9fbce
parent 1157 65a016eaa866
child 1159 24e95e0bf738
--- a/components/openssl/openssl-1.0.0/engines/t4/t4_des.S	Thu Feb 14 13:54:47 2013 -0800
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,786 +0,0 @@
-/*
- * ====================================================================
- * Copyright (c) 1998-2011 The OpenSSL Project.  All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- *
- * 1. Redistributions of source code must retain the above copyright
- *    notice, this list of conditions and the following disclaimer.
- *
- * 2. Redistributions in binary form must reproduce the above copyright
- *    notice, this list of conditions and the following disclaimer in
- *    the documentation and/or other materials provided with the
- *    distribution.
- *
- * 3. All advertising materials mentioning features or use of this
- *    software must display the following acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit. (http://www.openssl.org/)"
- *
- * 4. The names "OpenSSL Toolkit" and "OpenSSL Project" must not be used to
- *    endorse or promote products derived from this software without
- *    prior written permission. For written permission, please contact
- *    [email protected].
- *
- * 5. Products derived from this software may not be called "OpenSSL"
- *    nor may "OpenSSL" appear in their names without prior written
- *    permission of the OpenSSL Project.
- *
- * 6. Redistributions of any form whatsoever must retain the following
- *    acknowledgment:
- *    "This product includes software developed by the OpenSSL Project
- *    for use in the OpenSSL Toolkit (http://www.openssl.org/)"
- *
- * THIS SOFTWARE IS PROVIDED BY THE OpenSSL PROJECT ``AS IS'' AND ANY
- * EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE OpenSSL PROJECT OR
- * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
- * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
- * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
- * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
- * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
- * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
- * OF THE POSSIBILITY OF SUCH DAMAGE.
- * ====================================================================
- */
-
-/*
- * Copyright (c) 2011, Oracle and/or its affiliates. All rights reserved.
- */
-
-/*LINTLIBRARY*/
-
-#if defined(lint) || defined(__lint)
-
-#include <sys/types.h>
-#include "../engine/eng_t4_des_asm.h"
-
-/*ARGSUSED*/
-void t4_des_expand(uint64_t *rk, const uint32_t *key)
-{ return; }
-
-/*ARGSUSED*/
-void t4_des_encrypt(const uint64_t *rk, const uint64_t *pt, uint64_t *ct)
-{ return; }
-
-
-/*ARGSUSED*/
-void t4_des_load_keys(uint64_t *ks)
-{ return; }
-
-/*ARGSUSED*/
-void t4_des_ecb_crypt(uint64_t *ks, uint64_t *asm_in,
-    uint64_t *asm_out, size_t amount_to_crypt, uint64_t *iv)
-{ return; }
-
-/*ARGSUSED*/
-void t4_des_cbc_encrypt(uint64_t *ks, uint64_t *asm_in,
-    uint64_t *asm_out, size_t amount_to_crypt, uint64_t *iv)
-{ return; }
-
-/*ARGSUSED*/
-void t4_des_cbc_decrypt(uint64_t *ks, uint64_t *asm_in,
-    uint64_t *asm_out, size_t amount_to_crypt, uint64_t *iv)
-{ return; }
-
-/*ARGSUSED*/
-void t4_des3_load_keys(uint64_t *ks)
-{ return; }
-
-/*ARGSUSED*/
-void t4_des3_ecb_crypt(uint64_t *ks, uint64_t *asm_in,
-    uint64_t *asm_out, size_t amount_to_crypt, uint64_t *iv)
-{ return; }
-
-/*ARGSUSED*/
-void t4_des3_cbc_encrypt(uint64_t *ks, uint64_t *asm_in,
-    uint64_t *asm_out, size_t amount_to_crypt, uint64_t *iv)
-{ return; }
-
-/*ARGSUSED*/
-void t4_des3_cbc_decrypt(uint64_t *ks, uint64_t *asm_in,
-    uint64_t *asm_out, size_t amount_to_crypt, uint64_t *iv)
-{ return; }
-
-#else	/* lint || __lint */
-
-#include <sys/asm_linkage.h>
-
-
-	ENTRY(t4_des_expand)
-
-!load key
-	ld	[%o1], %f0
-	ld	[%o1 + 0x4], %f1
-
-!expand the key
-	!des_kexpand %f0, 0, %f0
-	!des_kexpand %f0, 1, %f2
-	!des_kexpand %f2, 3, %f6
-	!des_kexpand %f2, 2, %f4
-	!des_kexpand %f6, 3, %f10
-	!des_kexpand %f6, 2, %f8
-	!des_kexpand %f10, 3, %f14
-	!des_kexpand %f10, 2, %f12
-	!des_kexpand %f14, 1, %f16
-	!des_kexpand %f16, 3, %f20
-	!des_kexpand %f16, 2, %f18
-	!des_kexpand %f20, 3, %f24
-	!des_kexpand %f20, 2, %f22
-	!des_kexpand %f24, 3, %f28
-	!des_kexpand %f24, 2, %f26
-	!des_kexpand %f28, 1, %f30
-	.byte	0x81, 0xb0, 0x26, 0xc0
-	.byte	0x85, 0xb0, 0x26, 0xc1
-	.byte	0x8d, 0xb0, 0xa6, 0xc3
-	.byte	0x89, 0xb0, 0xa6, 0xc2
-	.byte	0x95, 0xb1, 0xa6, 0xc3
-	.byte	0x91, 0xb1, 0xa6, 0xc2
-	.byte	0x9d, 0xb2, 0xa6, 0xc3
-	.byte	0x99, 0xb2, 0xa6, 0xc2
-	.byte	0xa1, 0xb3, 0xa6, 0xc1
-	.byte	0xa9, 0xb4, 0x26, 0xc3
-	.byte	0xa5, 0xb4, 0x26, 0xc2
-	.byte	0xb1, 0xb5, 0x26, 0xc3
-	.byte	0xad, 0xb5, 0x26, 0xc2
-	.byte	0xb9, 0xb6, 0x26, 0xc3
-	.byte	0xb5, 0xb6, 0x26, 0xc2
-	.byte	0xbd, 0xb7, 0x26, 0xc1
-
-!copy expanded key back into array
-	std	%f0, [%o0]
-	std	%f2, [%o0 + 0x8]
-	std	%f4, [%o0 + 0x10]
-	std	%f6, [%o0 + 0x18]
-	std	%f8, [%o0 + 0x20]
-	std	%f10, [%o0 + 0x28]
-	std	%f12, [%o0 + 0x30]
-	std	%f14, [%o0 + 0x38]
-	std	%f16, [%o0 + 0x40]
-	std	%f18, [%o0 + 0x48]
-	std	%f20, [%o0 + 0x50]
-	std	%f22, [%o0 + 0x58]
-	std	%f24, [%o0 + 0x60]
-	std	%f26, [%o0 + 0x68]
-	std	%f28, [%o0 + 0x70]
-	retl
-	std	%f30, [%o0 + 0x78]
-
-	SET_SIZE(t4_des_expand)
-
-
-	ENTRY(t4_des_encrypt)
-
-!load expanded key
-	ldd	[%o0], %f0
-	ldd	[%o0 + 0x8], %f2
-	ldd	[%o0 + 0x10], %f4
-	ldd	[%o0 + 0x18], %f6
-	ldd	[%o0 + 0x20], %f8
-	ldd	[%o0 + 0x28], %f10
-	ldd	[%o0 + 0x30], %f12
-	ldd	[%o0 + 0x38], %f14
-	ldd	[%o0 + 0x40], %f16
-	ldd	[%o0 + 0x48], %f18
-	ldd	[%o0 + 0x50], %f20
-	ldd	[%o0 + 0x58], %f22
-	ldd	[%o0 + 0x60], %f24
-	ldd	[%o0 + 0x68], %f26
-	ldd	[%o0 + 0x70], %f28
-	ldd	[%o0 + 0x78], %f30
-
-!load input
-	ldd	[%o1], %f32
-
-!perform the cipher transformation
-	!des_ip	%f32, %f32
-	!des_round %f0,  %f2,  %f32, %f32
-	!des_round %f4,  %f6,  %f32, %f32
-	!des_round %f8,  %f10, %f32, %f32
-	!des_round %f12, %f14, %f32, %f32
-	!des_round %f16, %f18, %f32, %f32
-	!des_round %f20, %f22, %f32, %f32
-	!des_round %f24, %f26, %f32, %f32
-	!des_round %f28, %f30, %f32, %f32
-	!des_iip	%f32, %f32
-	.byte	0x83, 0xb0, 0x66, 0x80
-	.byte	0x82, 0xc8, 0x03, 0x22
-	.byte	0x82, 0xc9, 0x03, 0x26
-	.byte	0x82, 0xca, 0x03, 0x2a
-	.byte	0x82, 0xcb, 0x03, 0x2e
-	.byte	0x82, 0xcc, 0x03, 0x32
-	.byte	0x82, 0xcd, 0x03, 0x36
-	.byte	0x82, 0xce, 0x03, 0x3a
-	.byte	0x82, 0xcf, 0x03, 0x3e
-	.byte	0x83, 0xb0, 0x66, 0xa0
-
-!copy output back to array
-	retl
-	std	%f32, [%o2]
-
-	SET_SIZE(t4_des_encrypt)
-
-	ENTRY(t4_des_load_keys)
-
-!load expanded key
-	ldd	[%o0], %f0
-	ldd	[%o0 + 0x8], %f2
-	ldd	[%o0 + 0x10], %f4
-	ldd	[%o0 + 0x18], %f6
-	ldd	[%o0 + 0x20], %f8
-	ldd	[%o0 + 0x28], %f10
-	ldd	[%o0 + 0x30], %f12
-	ldd	[%o0 + 0x38], %f14
-	ldd	[%o0 + 0x40], %f16
-	ldd	[%o0 + 0x48], %f18
-	ldd	[%o0 + 0x50], %f20
-	ldd	[%o0 + 0x58], %f22
-	ldd	[%o0 + 0x60], %f24
-	ldd	[%o0 + 0x68], %f26
-	ldd	[%o0 + 0x70], %f28
-	retl
-	ldd	[%o0 + 0x78], %f30
-
-	SET_SIZE(t4_des_load_keys)
-
-	ENTRY(t4_des3_load_keys)
-
-!load first 30 pieces of the expanded key
-	ldd	[%o0], %f0
-	ldd	[%o0 + 0x8], %f2
-	ldd	[%o0 + 0x10], %f4
-	ldd	[%o0 + 0x18], %f6
-	ldd	[%o0 + 0x20], %f8
-	ldd	[%o0 + 0x28], %f10
-	ldd	[%o0 + 0x30], %f12
-	ldd	[%o0 + 0x38], %f14
-	ldd	[%o0 + 0x40], %f16
-	ldd	[%o0 + 0x48], %f18
-	ldd	[%o0 + 0x50], %f20
-	ldd	[%o0 + 0x58], %f22
-	ldd	[%o0 + 0x60], %f24
-	ldd	[%o0 + 0x68], %f26
-	ldd	[%o0 + 0x70], %f28
-	ldd	[%o0 + 0x78], %f30
-	ldd	[%o0 + 0x80], %f32
-	ldd	[%o0 + 0x88], %f34
-	ldd	[%o0 + 0x90], %f36
-	ldd	[%o0 + 0x98], %f38
-	ldd	[%o0 + 0xa0], %f40
-	ldd	[%o0 + 0xa8], %f42
-	ldd	[%o0 + 0xb0], %f44
-	ldd	[%o0 + 0xb8], %f46
-	ldd	[%o0 + 0xc0], %f48
-	ldd	[%o0 + 0xc8], %f50
-	ldd	[%o0 + 0xd0], %f52
-	ldd	[%o0 + 0xd8], %f54
-	ldd	[%o0 + 0xe0], %f56
-	retl
-	ldd	[%o0 + 0xe8], %f58
-
-	SET_SIZE(t4_des3_load_keys)
-
-	ENTRY(t4_des_ecb_crypt)
-
-des_ecb_loop:
-!load input
-	ldd	[%o1], %f62
-
-!perform the cipher transformation
-	!des_ip	%f62, %f62
-	!des_round %f0,  %f2,  %f62, %f62
-	!des_round %f4,  %f6,  %f62, %f62
-	!des_round %f8,  %f10, %f62, %f62
-	!des_round %f12, %f14, %f62, %f62
-	!des_round %f16, %f18, %f62, %f62
-	!des_round %f20, %f22, %f62, %f62
-	!des_round %f24, %f26, %f62, %f62
-	!des_round %f28, %f30, %f62, %f62
-	!des_iip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-	.byte	0xbe, 0xc8, 0x3f, 0x22
-	.byte	0xbe, 0xc9, 0x3f, 0x26
-	.byte	0xbe, 0xca, 0x3f, 0x2a
-	.byte	0xbe, 0xcb, 0x3f, 0x2e
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	.byte	0xbe, 0xcd, 0x3f, 0x36
-	.byte	0xbe, 0xce, 0x3f, 0x3a
-	.byte	0xbe, 0xcf, 0x3f, 0x3e
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-
-!copy output back to array
-	std	%f62, [%o2]
-	sub	%o3, 8, %o3
-	add	%o1, 8, %o1
-	brnz	%o3, des_ecb_loop
-	add	%o2, 8, %o2
-
-	retl
-	nop
-
-	SET_SIZE(t4_des_ecb_crypt)
-
-
-	ENTRY(t4_des_cbc_encrypt)
-
-	ldd	[%o4], %f60
-des_cbc_encrypt_loop:
-!load input
-	ldd	[%o1], %f58
-	fxor	%f58, %f60, %f62
-
-!perform the cipher transformation
-	!des_ip	%f62, %f62
-	!des_round %f0,  %f2,  %f62, %f62
-	!des_round %f4,  %f6,  %f62, %f62
-	!des_round %f8,  %f10, %f62, %f62
-	!des_round %f12, %f14, %f62, %f62
-	!des_round %f16, %f18, %f62, %f62
-	!des_round %f20, %f22, %f62, %f62
-	!des_round %f24, %f26, %f62, %f62
-	!des_round %f28, %f30, %f62, %f62
-	!des_iip	%f62, %f60
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-	.byte	0xbe, 0xc8, 0x3f, 0x22
-	.byte	0xbe, 0xc9, 0x3f, 0x26
-	.byte	0xbe, 0xca, 0x3f, 0x2a
-	.byte	0xbe, 0xcb, 0x3f, 0x2e
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	.byte	0xbe, 0xcd, 0x3f, 0x36
-	.byte	0xbe, 0xce, 0x3f, 0x3a
-	.byte	0xbe, 0xcf, 0x3f, 0x3e
-	.byte	0xbb, 0xb7, 0xe6, 0xa0
-
-!copy output back to array
-	std	%f60, [%o2]
-	sub	%o3, 8, %o3
-	add	%o1, 8, %o1
-	brnz	%o3, des_cbc_encrypt_loop
-	add	%o2, 8, %o2
-
-	retl
-	std	%f60, [%o4]
-
-	SET_SIZE(t4_des_cbc_encrypt)
-
-
-
-	ENTRY(t4_des_cbc_decrypt)
-
-	ldd	[%o4], %f60
-des_cbc_decrypt_loop:
-!load input
-	ldd	[%o1], %f62
-	ldx	[%o1], %o5
-
-!perform the cipher transformation
-	!des_ip	%f62, %f62
-	!des_round %f0,  %f2,  %f62, %f62
-	!des_round %f4,  %f6,  %f62, %f62
-	!des_round %f8,  %f10, %f62, %f62
-	!des_round %f12, %f14, %f62, %f62
-	!des_round %f16, %f18, %f62, %f62
-	!des_round %f20, %f22, %f62, %f62
-	!des_round %f24, %f26, %f62, %f62
-	!des_round %f28, %f30, %f62, %f62
-	!des_iip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-	.byte	0xbe, 0xc8, 0x3f, 0x22
-	.byte	0xbe, 0xc9, 0x3f, 0x26
-	.byte	0xbe, 0xca, 0x3f, 0x2a
-	.byte	0xbe, 0xcb, 0x3f, 0x2e
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	.byte	0xbe, 0xcd, 0x3f, 0x36
-	.byte	0xbe, 0xce, 0x3f, 0x3a
-	.byte	0xbe, 0xcf, 0x3f, 0x3e
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-	fxor	%f60, %f62, %f62
-	movxtod	%o5, %f60
-
-!copy output back to array
-	std	%f62, [%o2]
-	sub	%o3, 8, %o3
-	add	%o1, 8, %o1
-	brnz	%o3, des_cbc_decrypt_loop
-	add	%o2, 8, %o2
-
-	retl
-	std	%f60, [%o4]
-
-	SET_SIZE(t4_des_cbc_decrypt)
-
-
-
-	ENTRY(t4_des3_ecb_crypt)
-
-des3_ecb_loop:
-!load input
-	ldd	[%o1], %f62
-
-!perform the cipher transformation
-	!des_ip	%f62, %f62
-	!des_round %f0,  %f2,  %f62, %f62
-	!des_round %f4,  %f6,  %f62, %f62
-	!des_round %f8,  %f10, %f62, %f62
-	!des_round %f12, %f14, %f62, %f62
-	!des_round %f16, %f18, %f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-	.byte	0xbe, 0xc8, 0x3f, 0x22
-	.byte	0xbe, 0xc9, 0x3f, 0x26
-	.byte	0xbe, 0xca, 0x3f, 0x2a
-	.byte	0xbe, 0xcb, 0x3f, 0x2e
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-
-	ldd	[%o0 + 0xf0], %f16
-	ldd	[%o0 + 0xf8], %f18
-	!des_round %f20, %f22, %f62, %f62
-	.byte	0xbe, 0xcd, 0x3f, 0x36
-	ldd	[%o0 + 0x100], %f20
-	ldd	[%o0 + 0x108], %f22
-	!des_round %f24, %f26, %f62, %f62
-	.byte	0xbe, 0xce, 0x3f, 0x3a
-	ldd	[%o0 + 0x110], %f24
-	ldd	[%o0 + 0x118], %f26
-	!des_round %f28, %f30, %f62, %f62
-	.byte	0xbe, 0xcf, 0x3f, 0x3e
-	ldd	[%o0 + 0x120], %f28
-	ldd	[%o0 + 0x128], %f30
-
-	!des_iip	%f62, %f62
-	!des_ip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-
-	!des_round %f32, %f34, %f62, %f62
-	.byte	0xbe, 0xc8, 0x7f, 0x23
-	ldd	[%o0 + 0x130], %f0
-	ldd	[%o0 + 0x138], %f2
-	!des_round %f36, %f38,  %f62, %f62
-	.byte	0xbe, 0xc9, 0x7f, 0x27
-	ldd	[%o0 + 0x140], %f4
-	ldd	[%o0 + 0x148], %f6
-	!des_round %f40, %f42, %f62, %f62
-	.byte	0xbe, 0xca, 0x7f, 0x2b
-	ldd	[%o0 + 0x150], %f8
-	ldd	[%o0 + 0x158], %f10
-	!des_round %f44, %f46, %f62, %f62
-	.byte	0xbe, 0xcb, 0x7f, 0x2f
-	ldd	[%o0 + 0x160], %f12
-	ldd	[%o0 + 0x168], %f14
-	!des_round %f48, %f50, %f62, %f62
-	!des_round %f52, %f54, %f62, %f62
-	!des_round %f56, %f58, %f62, %f62
-	!des_round %f16, %f18, %f62, %f62
-	.byte	0xbe, 0xcc, 0x7f, 0x33
-	.byte	0xbe, 0xcd, 0x7f, 0x37
-	.byte	0xbe, 0xce, 0x7f, 0x3b
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	ldd	[%o0 + 0x170], %f16
-	ldd	[%o0 + 0x178], %f18
-
-	!des_iip	%f62, %f62
-	!des_ip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-
-	!des_round %f20, %f22, %f62, %f62
-	.byte	0xbe, 0xcd, 0x3f, 0x36
-	ldd	[%o0 + 0x50], %f20
-	ldd	[%o0 + 0x58], %f22
-	!des_round %f24, %f26, %f62, %f62
-	.byte	0xbe, 0xce, 0x3f, 0x3a
-	ldd	[%o0 + 0x60], %f24
-	ldd	[%o0 + 0x68], %f26
-	!des_round %f28, %f30, %f62, %f62
-	.byte	0xbe, 0xcf, 0x3f, 0x3e
-	ldd	[%o0 + 0x70], %f28
-	ldd	[%o0 + 0x78], %f30
-	!des_round %f0,  %f2,  %f62, %f62
-	.byte	0xbe, 0xc8, 0x3f, 0x22
-	ldd	[%o0], %f0
-	ldd	[%o0 + 0x8], %f2
-	!des_round %f4,  %f6,  %f62, %f62
-	.byte	0xbe, 0xc9, 0x3f, 0x26
-
-	ldd	[%o0 + 0x10], %f4
-	ldd	[%o0 + 0x18], %f6
-	!des_round %f8,  %f10, %f62, %f62
-	.byte	0xbe, 0xca, 0x3f, 0x2a
-	ldd	[%o0 + 0x20], %f8
-	ldd	[%o0 + 0x28], %f10
-	!des_round %f12, %f14, %f62, %f62
-	.byte	0xbe, 0xcb, 0x3f, 0x2e
-	ldd	[%o0 + 0x30], %f12
-	ldd	[%o0 + 0x38], %f14
-	!des_round %f16, %f18, %f62, %f62
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	ldd	[%o0 + 0x40], %f16
-	ldd	[%o0 + 0x48], %f18
-
-	!des_iip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-
-!copy output back to array
-	std	%f62, [%o2]
-	sub	%o3, 8, %o3
-	add	%o1, 8, %o1
-	brnz	%o3, des3_ecb_loop
-	add	%o2, 8, %o2
-
-	retl
-	nop
-
-	SET_SIZE(t4_des3_ecb_crypt)
-
-
-	ENTRY(t4_des3_cbc_encrypt)
-
-	ldd	[%o4], %f62
-des3_cbc_encrypt_loop:
-!load input
-	ldd	[%o1], %f60
-	fxor	%f60, %f62, %f62
-
-!perform the cipher transformation
-	!des_ip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-	!des_round %f0,  %f2,  %f62, %f62
-	!des_round %f4,  %f6,  %f62, %f62
-	!des_round %f8,  %f10, %f62, %f62
-	!des_round %f12, %f14, %f62, %f62
-	!des_round %f16, %f18, %f62, %f62
-	.byte	0xbe, 0xc8, 0x3f, 0x22
-	.byte	0xbe, 0xc9, 0x3f, 0x26
-	.byte	0xbe, 0xca, 0x3f, 0x2a
-	.byte	0xbe, 0xcb, 0x3f, 0x2e
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	ldd	[%o0 + 0xf0], %f16
-	ldd	[%o0 + 0xf8], %f18
-	!des_round %f20, %f22, %f62, %f62
-	.byte	0xbe, 0xcd, 0x3f, 0x36
-	ldd	[%o0 + 0x100], %f20
-	ldd	[%o0 + 0x108], %f22
-	!des_round %f24, %f26, %f62, %f62
-	.byte	0xbe, 0xce, 0x3f, 0x3a
-	ldd	[%o0 + 0x110], %f24
-	ldd	[%o0 + 0x118], %f26
-	!des_round %f28, %f30, %f62, %f62
-	.byte	0xbe, 0xcf, 0x3f, 0x3e
-	ldd	[%o0 + 0x120], %f28
-	ldd	[%o0 + 0x128], %f30
-
-	!des_iip	%f62, %f62
-	!des_ip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-
-	!des_round %f32, %f34, %f62, %f62
-	.byte	0xbe, 0xc8, 0x7f, 0x23
-	ldd	[%o0 + 0x130], %f0
-	ldd	[%o0 + 0x138], %f2
-	!des_round %f36, %f38,  %f62, %f62
-	.byte	0xbe, 0xc9, 0x7f, 0x27
-	ldd	[%o0 + 0x140], %f4
-	ldd	[%o0 + 0x148], %f6
-	!des_round %f40, %f42, %f62, %f62
-	.byte	0xbe, 0xca, 0x7f, 0x2b
-	ldd	[%o0 + 0x150], %f8
-	ldd	[%o0 + 0x158], %f10
-	!des_round %f44, %f46, %f62, %f62
-	.byte	0xbe, 0xcb, 0x7f, 0x2f
-	ldd	[%o0 + 0x160], %f12
-	ldd	[%o0 + 0x168], %f14
-	!des_round %f48, %f50, %f62, %f62
-	!des_round %f52, %f54, %f62, %f62
-	!des_round %f56, %f58, %f62, %f62
-	!des_round %f16, %f18, %f62, %f62
-	.byte	0xbe, 0xcc, 0x7f, 0x33
-	.byte	0xbe, 0xcd, 0x7f, 0x37
-	.byte	0xbe, 0xce, 0x7f, 0x3b
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	ldd	[%o0 + 0x170], %f16
-	ldd	[%o0 + 0x178], %f18
-
-	!des_iip	%f62, %f62
-	!des_ip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-
-	!des_round %f20, %f22, %f62, %f62
-	.byte	0xbe, 0xcd, 0x3f, 0x36
-	ldd	[%o0 + 0x50], %f20
-	ldd	[%o0 + 0x58], %f22
-	!des_round %f24, %f26, %f62, %f62
-	.byte	0xbe, 0xce, 0x3f, 0x3a
-	ldd	[%o0 + 0x60], %f24
-	ldd	[%o0 + 0x68], %f26
-	!des_round %f28, %f30, %f62, %f62
-	.byte	0xbe, 0xcf, 0x3f, 0x3e
-	ldd	[%o0 + 0x70], %f28
-	ldd	[%o0 + 0x78], %f30
-	!des_round %f0,  %f2,  %f62, %f62
-	.byte	0xbe, 0xc8, 0x3f, 0x22
-	ldd	[%o0], %f0
-	ldd	[%o0 + 0x8], %f2
-	!des_round %f4,  %f6,  %f62, %f62
-	.byte	0xbe, 0xc9, 0x3f, 0x26
-	ldd	[%o0 + 0x10], %f4
-	ldd	[%o0 + 0x18], %f6
-	!des_round %f8,  %f10, %f62, %f62
-	.byte	0xbe, 0xca, 0x3f, 0x2a
-	ldd	[%o0 + 0x20], %f8
-	ldd	[%o0 + 0x28], %f10
-	!des_round %f12, %f14, %f62, %f62
-	.byte	0xbe, 0xcb, 0x3f, 0x2e
-	ldd	[%o0 + 0x30], %f12
-	ldd	[%o0 + 0x38], %f14
-	!des_round %f16, %f18, %f62, %f62
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	ldd	[%o0 + 0x40], %f16
-	ldd	[%o0 + 0x48], %f18
-
-	!des_iip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-
-!copy output back to array
-	std	%f62, [%o2]
-	sub	%o3, 8, %o3
-	add	%o1, 8, %o1
-	brnz	%o3, des3_cbc_encrypt_loop
-	add	%o2, 8, %o2
-
-	retl
-	std	%f62, [%o4]
-
-	SET_SIZE(t4_des3_cbc_encrypt)
-
-
-	ENTRY(t4_des3_cbc_decrypt)
-
-	ldd	[%o4], %f60
-des3_cbc_decrypt_loop:
-!load input
-	ldx	[%o1], %o5
-	movxtod	%o5, %f62
-
-!perform the cipher transformation
-	!des_ip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-	!des_round %f0,  %f2,  %f62, %f62
-	!des_round %f4,  %f6,  %f62, %f62
-	!des_round %f8,  %f10, %f62, %f62
-	!des_round %f12, %f14, %f62, %f62
-	!des_round %f16, %f18, %f62, %f62
-	.byte	0xbe, 0xc8, 0x3f, 0x22
-	.byte	0xbe, 0xc9, 0x3f, 0x26
-	.byte	0xbe, 0xca, 0x3f, 0x2a
-	.byte	0xbe, 0xcb, 0x3f, 0x2e
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	ldd	[%o0 + 0xf0], %f16
-	ldd	[%o0 + 0xf8], %f18
-	!des_round %f20, %f22, %f62, %f62
-	.byte	0xbe, 0xcd, 0x3f, 0x36
-	ldd	[%o0 + 0x100], %f20
-	ldd	[%o0 + 0x108], %f22
-	!des_round %f24, %f26, %f62, %f62
-	.byte	0xbe, 0xce, 0x3f, 0x3a
-	ldd	[%o0 + 0x110], %f24
-	ldd	[%o0 + 0x118], %f26
-	!des_round %f28, %f30, %f62, %f62
-	.byte	0xbe, 0xcf, 0x3f, 0x3e
-	ldd	[%o0 + 0x120], %f28
-	ldd	[%o0 + 0x128], %f30
-
-	!des_iip	%f62, %f62
-	!des_ip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-
-	!des_round %f32, %f34, %f62, %f62
-	.byte	0xbe, 0xc8, 0x7f, 0x23
-	ldd	[%o0 + 0x130], %f0
-	ldd	[%o0 + 0x138], %f2
-	!des_round %f36, %f38,  %f62, %f62
-	.byte	0xbe, 0xc9, 0x7f, 0x27
-	ldd	[%o0 + 0x140], %f4
-	ldd	[%o0 + 0x148], %f6
-	!des_round %f40, %f42, %f62, %f62
-	.byte	0xbe, 0xca, 0x7f, 0x2b
-	ldd	[%o0 + 0x150], %f8
-	ldd	[%o0 + 0x158], %f10
-	!des_round %f44, %f46, %f62, %f62
-	.byte	0xbe, 0xcb, 0x7f, 0x2f
-	ldd	[%o0 + 0x160], %f12
-	ldd	[%o0 + 0x168], %f14
-	!des_round %f48, %f50, %f62, %f62
-	!des_round %f52, %f54, %f62, %f62
-	!des_round %f56, %f58, %f62, %f62
-	!des_round %f16, %f18, %f62, %f62
-	.byte	0xbe, 0xcc, 0x7f, 0x33
-	.byte	0xbe, 0xcd, 0x7f, 0x37
-	.byte	0xbe, 0xce, 0x7f, 0x3b
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	ldd	[%o0 + 0x170], %f16
-	ldd	[%o0 + 0x178], %f18
-
-	!des_iip	%f62, %f62
-	!des_ip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-	.byte	0xbf, 0xb7, 0xe6, 0x80
-
-	!des_round %f20, %f22, %f62, %f62
-	.byte	0xbe, 0xcd, 0x3f, 0x36
-	ldd	[%o0 + 0x50], %f20
-	ldd	[%o0 + 0x58], %f22
-	!des_round %f24, %f26, %f62, %f62
-	.byte	0xbe, 0xce, 0x3f, 0x3a
-	ldd	[%o0 + 0x60], %f24
-	ldd	[%o0 + 0x68], %f26
-	!des_round %f28, %f30, %f62, %f62
-	.byte	0xbe, 0xcf, 0x3f, 0x3e
-	ldd	[%o0 + 0x70], %f28
-	ldd	[%o0 + 0x78], %f30
-	!des_round %f0,  %f2,  %f62, %f62
-	.byte	0xbe, 0xc8, 0x3f, 0x22
-	ldd	[%o0], %f0
-	ldd	[%o0 + 0x8], %f2
-	!des_round %f4,  %f6,  %f62, %f62
-	.byte	0xbe, 0xc9, 0x3f, 0x26
-	ldd	[%o0 + 0x10], %f4
-	ldd	[%o0 + 0x18], %f6
-	!des_round %f8,  %f10, %f62, %f62
-	.byte	0xbe, 0xca, 0x3f, 0x2a
-	ldd	[%o0 + 0x20], %f8
-	ldd	[%o0 + 0x28], %f10
-	!des_round %f12, %f14, %f62, %f62
-	.byte	0xbe, 0xcb, 0x3f, 0x2e
-	ldd	[%o0 + 0x30], %f12
-	ldd	[%o0 + 0x38], %f14
-	!des_round %f16, %f18, %f62, %f62
-	.byte	0xbe, 0xcc, 0x3f, 0x32
-	ldd	[%o0 + 0x40], %f16
-	ldd	[%o0 + 0x48], %f18
-
-	!des_iip	%f62, %f62
-	.byte	0xbf, 0xb7, 0xe6, 0xa0
-	fxor	%f60, %f62, %f62
-	movxtod	%o5, %f60
-
-!copy output back to array
-	std	%f62, [%o2]
-	sub	%o3, 8, %o3
-	add	%o1, 8, %o1
-	brnz	%o3, des3_cbc_decrypt_loop
-	add	%o2, 8, %o2
-
-	retl
-	stx	%o5, [%o4]
-
-	SET_SIZE(t4_des3_cbc_decrypt)
-
-
-#endif  /* lint || __lint */