summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorjsing <>2023-07-08 07:25:43 +0000
committerjsing <>2023-07-08 07:25:43 +0000
commit903dc2a64c29e2f25074485b7e91d9844296b1f3 (patch)
tree62f8b433574e4f04b2602a55200cbb3ef37b48f0 /src
parent605061cd51d735c05fdfe92ab4ec68dd715c2deb (diff)
downloadopenbsd-903dc2a64c29e2f25074485b7e91d9844296b1f3.tar.gz
openbsd-903dc2a64c29e2f25074485b7e91d9844296b1f3.tar.bz2
openbsd-903dc2a64c29e2f25074485b7e91d9844296b1f3.zip
Hit cast with the style(9) stick.
Diffstat (limited to 'src')
-rw-r--r--src/lib/libcrypto/cast/c_cfb64.c110
-rw-r--r--src/lib/libcrypto/cast/c_ecb.c43
-rw-r--r--src/lib/libcrypto/cast/c_enc.c272
-rw-r--r--src/lib/libcrypto/cast/c_ofb64.c86
-rw-r--r--src/lib/libcrypto/cast/c_skey.c165
-rw-r--r--src/lib/libcrypto/cast/cast.h33
-rw-r--r--src/lib/libcrypto/cast/cast_local.h14
-rw-r--r--src/lib/libcrypto/cast/cast_s.h1070
8 files changed, 898 insertions, 895 deletions
diff --git a/src/lib/libcrypto/cast/c_cfb64.c b/src/lib/libcrypto/cast/c_cfb64.c
index 9586f932aa..2b1883b1fb 100644
--- a/src/lib/libcrypto/cast/c_cfb64.c
+++ b/src/lib/libcrypto/cast/c_cfb64.c
@@ -1,25 +1,25 @@
1/* $OpenBSD: c_cfb64.c,v 1.6 2022/11/26 16:08:51 tb Exp $ */ 1/* $OpenBSD: c_cfb64.c,v 1.7 2023/07/08 07:25:43 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA, 11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms 13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 * 15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed. 17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution 18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used. 19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or 20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package. 21 * in documentation (online or textual) provided with the package.
22 * 22 *
23 * Redistribution and use in source and binary forms, with or without 23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 24 * modification, are permitted provided that the following conditions
25 * are met: 25 * are met:
@@ -34,10 +34,10 @@
34 * Eric Young (eay@cryptsoft.com)" 34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library 35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-). 36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement: 38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 * 40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE. 51 * SUCH DAMAGE.
52 * 52 *
53 * The licence and distribution terms for any publically available version or 53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
@@ -64,58 +64,60 @@
64 * 64bit block we have used is contained in *num; 64 * 64bit block we have used is contained in *num;
65 */ 65 */
66 66
67void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, 67void
68 long length, const CAST_KEY *schedule, unsigned char *ivec, 68CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
69 int *num, int enc) 69 long length, const CAST_KEY *schedule, unsigned char *ivec,
70 { 70 int *num, int enc)
71 CAST_LONG v0,v1,t; 71{
72 CAST_LONG v0, v1, t;
72 int n= *num; 73 int n= *num;
73 long l=length; 74 long l = length;
74 CAST_LONG ti[2]; 75 CAST_LONG ti[2];
75 unsigned char *iv,c,cc; 76 unsigned char *iv, c, cc;
76 77
77 iv=ivec; 78 iv = ivec;
78 if (enc) 79 if (enc) {
79 { 80 while (l--) {
80 while (l--) 81 if (n == 0) {
81 { 82 n2l(iv, v0);
82 if (n == 0) 83 ti[0] = v0;
83 { 84 n2l(iv, v1);
84 n2l(iv,v0); ti[0]=v0; 85 ti[1] = v1;
85 n2l(iv,v1); ti[1]=v1; 86 CAST_encrypt((CAST_LONG *)ti, schedule);
86 CAST_encrypt((CAST_LONG *)ti,schedule); 87 iv = ivec;
87 iv=ivec; 88 t = ti[0];
88 t=ti[0]; l2n(t,iv); 89 l2n(t, iv);
89 t=ti[1]; l2n(t,iv); 90 t = ti[1];
90 iv=ivec; 91 l2n(t, iv);
91 } 92 iv = ivec;
92 c= *(in++)^iv[n];
93 *(out++)=c;
94 iv[n]=c;
95 n=(n+1)&0x07;
96 } 93 }
94 c= *(in++)^iv[n];
95 *(out++) = c;
96 iv[n] = c;
97 n = (n + 1)&0x07;
97 } 98 }
98 else 99 } else {
99 { 100 while (l--) {
100 while (l--) 101 if (n == 0) {
101 { 102 n2l(iv, v0);
102 if (n == 0) 103 ti[0] = v0;
103 { 104 n2l(iv, v1);
104 n2l(iv,v0); ti[0]=v0; 105 ti[1] = v1;
105 n2l(iv,v1); ti[1]=v1; 106 CAST_encrypt((CAST_LONG *)ti, schedule);
106 CAST_encrypt((CAST_LONG *)ti,schedule); 107 iv = ivec;
107 iv=ivec; 108 t = ti[0];
108 t=ti[0]; l2n(t,iv); 109 l2n(t, iv);
109 t=ti[1]; l2n(t,iv); 110 t = ti[1];
110 iv=ivec; 111 l2n(t, iv);
111 } 112 iv = ivec;
112 cc= *(in++);
113 c=iv[n];
114 iv[n]=cc;
115 *(out++)=c^cc;
116 n=(n+1)&0x07;
117 } 113 }
114 cc= *(in++);
115 c = iv[n];
116 iv[n] = cc;
117 *(out++) = c^cc;
118 n = (n + 1)&0x07;
118 } 119 }
119 v0=v1=ti[0]=ti[1]=t=c=cc=0;
120 *num=n;
121 } 120 }
121 v0 = v1 = ti[0] = ti[1] = t=c = cc = 0;
122 *num = n;
123}
diff --git a/src/lib/libcrypto/cast/c_ecb.c b/src/lib/libcrypto/cast/c_ecb.c
index e4ad05c297..ea00898536 100644
--- a/src/lib/libcrypto/cast/c_ecb.c
+++ b/src/lib/libcrypto/cast/c_ecb.c
@@ -1,25 +1,25 @@
1/* $OpenBSD: c_ecb.c,v 1.8 2022/11/26 16:08:51 tb Exp $ */ 1/* $OpenBSD: c_ecb.c,v 1.9 2023/07/08 07:25:43 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA, 11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms 13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 * 15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed. 17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution 18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used. 19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or 20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package. 21 * in documentation (online or textual) provided with the package.
22 * 22 *
23 * Redistribution and use in source and binary forms, with or without 23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 24 * modification, are permitted provided that the following conditions
25 * are met: 25 * are met:
@@ -34,10 +34,10 @@
34 * Eric Young (eay@cryptsoft.com)" 34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library 35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-). 36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement: 38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 * 40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE. 51 * SUCH DAMAGE.
52 * 52 *
53 * The licence and distribution terms for any publically available version or 53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
@@ -60,18 +60,23 @@
60#include "cast_local.h" 60#include "cast_local.h"
61#include <openssl/opensslv.h> 61#include <openssl/opensslv.h>
62 62
63void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, 63void
64 const CAST_KEY *ks, int enc) 64CAST_ecb_encrypt(const unsigned char *in, unsigned char *out,
65 { 65 const CAST_KEY *ks, int enc)
66 CAST_LONG l,d[2]; 66{
67 CAST_LONG l, d[2];
67 68
68 n2l(in,l); d[0]=l; 69 n2l(in, l);
69 n2l(in,l); d[1]=l; 70 d[0] = l;
71 n2l(in, l);
72 d[1] = l;
70 if (enc) 73 if (enc)
71 CAST_encrypt(d,ks); 74 CAST_encrypt(d, ks);
72 else 75 else
73 CAST_decrypt(d,ks); 76 CAST_decrypt(d, ks);
74 l=d[0]; l2n(l,out); 77 l = d[0];
75 l=d[1]; l2n(l,out); 78 l2n(l, out);
76 l=d[0]=d[1]=0; 79 l = d[1];
77 } 80 l2n(l, out);
81 l = d[0] = d[1] = 0;
82}
diff --git a/src/lib/libcrypto/cast/c_enc.c b/src/lib/libcrypto/cast/c_enc.c
index cc28991bd2..70cad75f31 100644
--- a/src/lib/libcrypto/cast/c_enc.c
+++ b/src/lib/libcrypto/cast/c_enc.c
@@ -1,25 +1,25 @@
1/* $OpenBSD: c_enc.c,v 1.8 2022/11/26 16:08:51 tb Exp $ */ 1/* $OpenBSD: c_enc.c,v 1.9 2023/07/08 07:25:43 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA, 11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms 13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 * 15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed. 17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution 18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used. 19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or 20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package. 21 * in documentation (online or textual) provided with the package.
22 * 22 *
23 * Redistribution and use in source and binary forms, with or without 23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 24 * modification, are permitted provided that the following conditions
25 * are met: 25 * are met:
@@ -34,10 +34,10 @@
34 * Eric Young (eay@cryptsoft.com)" 34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library 35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-). 36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement: 38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 * 40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE. 51 * SUCH DAMAGE.
52 * 52 *
53 * The licence and distribution terms for any publically available version or 53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
@@ -60,151 +60,145 @@
60#include "cast_local.h" 60#include "cast_local.h"
61 61
62#ifndef OPENBSD_CAST_ASM 62#ifndef OPENBSD_CAST_ASM
63void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key) 63void
64 { 64CAST_encrypt(CAST_LONG *data, const CAST_KEY *key)
65 CAST_LONG l,r,t; 65{
66 CAST_LONG l, r, t;
66 const CAST_LONG *k; 67 const CAST_LONG *k;
67 68
68 k= &(key->data[0]); 69 k = &(key->data[0]);
69 l=data[0]; 70 l = data[0];
70 r=data[1]; 71 r = data[1];
71
72 E_CAST( 0,k,l,r,+,^,-);
73 E_CAST( 1,k,r,l,^,-,+);
74 E_CAST( 2,k,l,r,-,+,^);
75 E_CAST( 3,k,r,l,+,^,-);
76 E_CAST( 4,k,l,r,^,-,+);
77 E_CAST( 5,k,r,l,-,+,^);
78 E_CAST( 6,k,l,r,+,^,-);
79 E_CAST( 7,k,r,l,^,-,+);
80 E_CAST( 8,k,l,r,-,+,^);
81 E_CAST( 9,k,r,l,+,^,-);
82 E_CAST(10,k,l,r,^,-,+);
83 E_CAST(11,k,r,l,-,+,^);
84 if(!key->short_key)
85 {
86 E_CAST(12,k,l,r,+,^,-);
87 E_CAST(13,k,r,l,^,-,+);
88 E_CAST(14,k,l,r,-,+,^);
89 E_CAST(15,k,r,l,+,^,-);
90 }
91 72
92 data[1]=l&0xffffffffL; 73 E_CAST( 0, k,l, r,+,^, -);
93 data[0]=r&0xffffffffL; 74 E_CAST( 1, k,r, l,^, -,+);
75 E_CAST( 2, k,l, r, -,+,^);
76 E_CAST( 3, k,r, l,+,^, -);
77 E_CAST( 4, k,l, r,^, -,+);
78 E_CAST( 5, k,r, l, -,+,^);
79 E_CAST( 6, k,l, r,+,^, -);
80 E_CAST( 7, k,r, l,^, -,+);
81 E_CAST( 8, k,l, r, -,+,^);
82 E_CAST( 9, k,r, l,+,^, -);
83 E_CAST(10, k,l, r,^, -,+);
84 E_CAST(11, k,r, l, -,+,^);
85 if (!key->short_key) {
86 E_CAST(12, k,l, r,+,^, -);
87 E_CAST(13, k,r, l,^, -,+);
88 E_CAST(14, k,l, r, -,+,^);
89 E_CAST(15, k,r, l,+,^, -);
94 } 90 }
95 91
96void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key) 92 data[1] = l&0xffffffffL;
97 { 93 data[0] = r&0xffffffffL;
98 CAST_LONG l,r,t; 94}
99 const CAST_LONG *k;
100 95
101 k= &(key->data[0]); 96void
102 l=data[0]; 97CAST_decrypt(CAST_LONG *data, const CAST_KEY *key)
103 r=data[1]; 98{
99 CAST_LONG l, r, t;
100 const CAST_LONG *k;
104 101
105 if(!key->short_key) 102 k = &(key->data[0]);
106 { 103 l = data[0];
107 E_CAST(15,k,l,r,+,^,-); 104 r = data[1];
108 E_CAST(14,k,r,l,-,+,^);
109 E_CAST(13,k,l,r,^,-,+);
110 E_CAST(12,k,r,l,+,^,-);
111 }
112 E_CAST(11,k,l,r,-,+,^);
113 E_CAST(10,k,r,l,^,-,+);
114 E_CAST( 9,k,l,r,+,^,-);
115 E_CAST( 8,k,r,l,-,+,^);
116 E_CAST( 7,k,l,r,^,-,+);
117 E_CAST( 6,k,r,l,+,^,-);
118 E_CAST( 5,k,l,r,-,+,^);
119 E_CAST( 4,k,r,l,^,-,+);
120 E_CAST( 3,k,l,r,+,^,-);
121 E_CAST( 2,k,r,l,-,+,^);
122 E_CAST( 1,k,l,r,^,-,+);
123 E_CAST( 0,k,r,l,+,^,-);
124 105
125 data[1]=l&0xffffffffL; 106 if (!key->short_key) {
126 data[0]=r&0xffffffffL; 107 E_CAST(15, k,l, r,+,^, -);
108 E_CAST(14, k,r, l, -,+,^);
109 E_CAST(13, k,l, r,^, -,+);
110 E_CAST(12, k,r, l,+,^, -);
127 } 111 }
112 E_CAST(11, k,l, r, -,+,^);
113 E_CAST(10, k,r, l,^, -,+);
114 E_CAST( 9, k,l, r,+,^, -);
115 E_CAST( 8, k,r, l, -,+,^);
116 E_CAST( 7, k,l, r,^, -,+);
117 E_CAST( 6, k,r, l,+,^, -);
118 E_CAST( 5, k,l, r, -,+,^);
119 E_CAST( 4, k,r, l,^, -,+);
120 E_CAST( 3, k,l, r,+,^, -);
121 E_CAST( 2, k,r, l, -,+,^);
122 E_CAST( 1, k,l, r,^, -,+);
123 E_CAST( 0, k,r, l,+,^, -);
124
125 data[1] = l&0xffffffffL;
126 data[0] = r&0xffffffffL;
127}
128#endif 128#endif
129 129
130void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, 130void
131 const CAST_KEY *ks, unsigned char *iv, int enc) 131CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
132 { 132 const CAST_KEY *ks, unsigned char *iv, int enc)
133 CAST_LONG tin0,tin1; 133{
134 CAST_LONG tout0,tout1,xor0,xor1; 134 CAST_LONG tin0, tin1;
135 long l=length; 135 CAST_LONG tout0, tout1, xor0, xor1;
136 long l = length;
136 CAST_LONG tin[2]; 137 CAST_LONG tin[2];
137 138
138 if (enc) 139 if (enc) {
139 { 140 n2l(iv, tout0);
140 n2l(iv,tout0); 141 n2l(iv, tout1);
141 n2l(iv,tout1); 142 iv -= 8;
142 iv-=8; 143 for (l -= 8; l >= 0; l -= 8) {
143 for (l-=8; l>=0; l-=8) 144 n2l(in, tin0);
144 { 145 n2l(in, tin1);
145 n2l(in,tin0); 146 tin0 ^= tout0;
146 n2l(in,tin1); 147 tin1 ^= tout1;
147 tin0^=tout0; 148 tin[0] = tin0;
148 tin1^=tout1; 149 tin[1] = tin1;
149 tin[0]=tin0; 150 CAST_encrypt(tin, ks);
150 tin[1]=tin1; 151 tout0 = tin[0];
151 CAST_encrypt(tin,ks); 152 tout1 = tin[1];
152 tout0=tin[0]; 153 l2n(tout0, out);
153 tout1=tin[1]; 154 l2n(tout1, out);
154 l2n(tout0,out); 155 }
155 l2n(tout1,out); 156 if (l != -8) {
156 } 157 n2ln(in, tin0, tin1, l + 8);
157 if (l != -8) 158 tin0 ^= tout0;
158 { 159 tin1 ^= tout1;
159 n2ln(in,tin0,tin1,l+8); 160 tin[0] = tin0;
160 tin0^=tout0; 161 tin[1] = tin1;
161 tin1^=tout1; 162 CAST_encrypt(tin, ks);
162 tin[0]=tin0; 163 tout0 = tin[0];
163 tin[1]=tin1; 164 tout1 = tin[1];
164 CAST_encrypt(tin,ks); 165 l2n(tout0, out);
165 tout0=tin[0]; 166 l2n(tout1, out);
166 tout1=tin[1]; 167 }
167 l2n(tout0,out); 168 l2n(tout0, iv);
168 l2n(tout1,out); 169 l2n(tout1, iv);
169 } 170 } else {
170 l2n(tout0,iv); 171 n2l(iv, xor0);
171 l2n(tout1,iv); 172 n2l(iv, xor1);
173 iv -= 8;
174 for (l -= 8; l >= 0; l -= 8) {
175 n2l(in, tin0);
176 n2l(in, tin1);
177 tin[0] = tin0;
178 tin[1] = tin1;
179 CAST_decrypt(tin, ks);
180 tout0 = tin[0]^xor0;
181 tout1 = tin[1]^xor1;
182 l2n(tout0, out);
183 l2n(tout1, out);
184 xor0 = tin0;
185 xor1 = tin1;
172 } 186 }
173 else 187 if (l != -8) {
174 { 188 n2l(in, tin0);
175 n2l(iv,xor0); 189 n2l(in, tin1);
176 n2l(iv,xor1); 190 tin[0] = tin0;
177 iv-=8; 191 tin[1] = tin1;
178 for (l-=8; l>=0; l-=8) 192 CAST_decrypt(tin, ks);
179 { 193 tout0 = tin[0]^xor0;
180 n2l(in,tin0); 194 tout1 = tin[1]^xor1;
181 n2l(in,tin1); 195 l2nn(tout0, tout1, out, l + 8);
182 tin[0]=tin0; 196 xor0 = tin0;
183 tin[1]=tin1; 197 xor1 = tin1;
184 CAST_decrypt(tin,ks);
185 tout0=tin[0]^xor0;
186 tout1=tin[1]^xor1;
187 l2n(tout0,out);
188 l2n(tout1,out);
189 xor0=tin0;
190 xor1=tin1;
191 }
192 if (l != -8)
193 {
194 n2l(in,tin0);
195 n2l(in,tin1);
196 tin[0]=tin0;
197 tin[1]=tin1;
198 CAST_decrypt(tin,ks);
199 tout0=tin[0]^xor0;
200 tout1=tin[1]^xor1;
201 l2nn(tout0,tout1,out,l+8);
202 xor0=tin0;
203 xor1=tin1;
204 }
205 l2n(xor0,iv);
206 l2n(xor1,iv);
207 } 198 }
208 tin0=tin1=tout0=tout1=xor0=xor1=0; 199 l2n(xor0, iv);
209 tin[0]=tin[1]=0; 200 l2n(xor1, iv);
210 } 201 }
202 tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
203 tin[0] = tin[1] = 0;
204}
diff --git a/src/lib/libcrypto/cast/c_ofb64.c b/src/lib/libcrypto/cast/c_ofb64.c
index d5859150a9..7fd5444a05 100644
--- a/src/lib/libcrypto/cast/c_ofb64.c
+++ b/src/lib/libcrypto/cast/c_ofb64.c
@@ -1,25 +1,25 @@
1/* $OpenBSD: c_ofb64.c,v 1.6 2022/11/26 16:08:51 tb Exp $ */ 1/* $OpenBSD: c_ofb64.c,v 1.7 2023/07/08 07:25:43 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA, 11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms 13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 * 15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed. 17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution 18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used. 19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or 20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package. 21 * in documentation (online or textual) provided with the package.
22 * 22 *
23 * Redistribution and use in source and binary forms, with or without 23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 24 * modification, are permitted provided that the following conditions
25 * are met: 25 * are met:
@@ -34,10 +34,10 @@
34 * Eric Young (eay@cryptsoft.com)" 34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library 35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-). 36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement: 38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 * 40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE. 51 * SUCH DAMAGE.
52 * 52 *
53 * The licence and distribution terms for any publically available version or 53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
@@ -63,48 +63,48 @@
63 * used. The extra state information to record how much of the 63 * used. The extra state information to record how much of the
64 * 64bit block we have used is contained in *num; 64 * 64bit block we have used is contained in *num;
65 */ 65 */
66void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, 66void
67 long length, const CAST_KEY *schedule, unsigned char *ivec, 67CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
68 int *num) 68 long length, const CAST_KEY *schedule, unsigned char *ivec,
69 { 69 int *num)
70 CAST_LONG v0,v1,t; 70{
71 CAST_LONG v0, v1, t;
71 int n= *num; 72 int n= *num;
72 long l=length; 73 long l = length;
73 unsigned char d[8]; 74 unsigned char d[8];
74 char *dp; 75 char *dp;
75 CAST_LONG ti[2]; 76 CAST_LONG ti[2];
76 unsigned char *iv; 77 unsigned char *iv;
77 int save=0; 78 int save = 0;
78 79
79 iv=ivec; 80 iv = ivec;
80 n2l(iv,v0); 81 n2l(iv, v0);
81 n2l(iv,v1); 82 n2l(iv, v1);
82 ti[0]=v0; 83 ti[0] = v0;
83 ti[1]=v1; 84 ti[1] = v1;
84 dp=(char *)d; 85 dp = (char *)d;
85 l2n(v0,dp); 86 l2n(v0, dp);
86 l2n(v1,dp); 87 l2n(v1, dp);
87 while (l--) 88 while (l--) {
88 { 89 if (n == 0) {
89 if (n == 0) 90 CAST_encrypt((CAST_LONG *)ti, schedule);
90 { 91 dp = (char *)d;
91 CAST_encrypt((CAST_LONG *)ti,schedule); 92 t = ti[0];
92 dp=(char *)d; 93 l2n(t, dp);
93 t=ti[0]; l2n(t,dp); 94 t = ti[1];
94 t=ti[1]; l2n(t,dp); 95 l2n(t, dp);
95 save++; 96 save++;
96 }
97 *(out++)= *(in++)^d[n];
98 n=(n+1)&0x07;
99 }
100 if (save)
101 {
102 v0=ti[0];
103 v1=ti[1];
104 iv=ivec;
105 l2n(v0,iv);
106 l2n(v1,iv);
107 } 97 }
108 t=v0=v1=ti[0]=ti[1]=0; 98 *(out++)= *(in++)^d[n];
109 *num=n; 99 n = (n + 1)&0x07;
100 }
101 if (save) {
102 v0 = ti[0];
103 v1 = ti[1];
104 iv = ivec;
105 l2n(v0, iv);
106 l2n(v1, iv);
110 } 107 }
108 t = v0 = v1 = ti[0] = ti[1] = 0;
109 *num = n;
110}
diff --git a/src/lib/libcrypto/cast/c_skey.c b/src/lib/libcrypto/cast/c_skey.c
index 5f86effc3e..1f876648fd 100644
--- a/src/lib/libcrypto/cast/c_skey.c
+++ b/src/lib/libcrypto/cast/c_skey.c
@@ -1,25 +1,25 @@
1/* $OpenBSD: c_skey.c,v 1.12 2022/11/26 16:08:51 tb Exp $ */ 1/* $OpenBSD: c_skey.c,v 1.13 2023/07/08 07:25:43 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA, 11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms 13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 * 15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed. 17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution 18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used. 19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or 20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package. 21 * in documentation (online or textual) provided with the package.
22 * 22 *
23 * Redistribution and use in source and binary forms, with or without 23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 24 * modification, are permitted provided that the following conditions
25 * are met: 25 * are met:
@@ -34,10 +34,10 @@
34 * Eric Young (eay@cryptsoft.com)" 34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library 35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-). 36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement: 38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 * 40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE. 51 * SUCH DAMAGE.
52 * 52 *
53 * The licence and distribution terms for any publically available version or 53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
@@ -72,95 +72,98 @@
72#define S5 CAST_S_table5 72#define S5 CAST_S_table5
73#define S6 CAST_S_table6 73#define S6 CAST_S_table6
74#define S7 CAST_S_table7 74#define S7 CAST_S_table7
75void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data) 75void
76 { 76CAST_set_key(CAST_KEY *key, int len, const unsigned char *data)
77{
77 CAST_LONG x[16]; 78 CAST_LONG x[16];
78 CAST_LONG z[16]; 79 CAST_LONG z[16];
79 CAST_LONG k[32]; 80 CAST_LONG k[32];
80 CAST_LONG X[4],Z[4]; 81 CAST_LONG X[4], Z[4];
81 CAST_LONG l,*K; 82 CAST_LONG l, *K;
82 int i; 83 int i;
83 84
84 for (i=0; i<16; i++) x[i]=0; 85 for (i = 0;
85 if (len > 16) len=16; 86 i < 16;
86 for (i=0; i<len; i++) 87 i++) x[i] = 0;
87 x[i]=data[i]; 88 if (len > 16)
88 if(len <= 10) 89 len = 16;
89 key->short_key=1; 90 for (i = 0; i < len; i++)
91 x[i] = data[i];
92 if (len <= 10)
93 key->short_key = 1;
90 else 94 else
91 key->short_key=0; 95 key->short_key = 0;
92 96
93 K= &k[0]; 97 K = &k[0];
94 X[0]=((x[ 0]<<24)|(x[ 1]<<16)|(x[ 2]<<8)|x[ 3])&0xffffffffL; 98 X[0] = ((x[ 0]<<24)|(x[ 1]<<16)|(x[ 2]<<8)|x[ 3])&0xffffffffL;
95 X[1]=((x[ 4]<<24)|(x[ 5]<<16)|(x[ 6]<<8)|x[ 7])&0xffffffffL; 99 X[1] = ((x[ 4]<<24)|(x[ 5]<<16)|(x[ 6]<<8)|x[ 7])&0xffffffffL;
96 X[2]=((x[ 8]<<24)|(x[ 9]<<16)|(x[10]<<8)|x[11])&0xffffffffL; 100 X[2] = ((x[ 8]<<24)|(x[ 9]<<16)|(x[10]<<8)|x[11])&0xffffffffL;
97 X[3]=((x[12]<<24)|(x[13]<<16)|(x[14]<<8)|x[15])&0xffffffffL; 101 X[3] = ((x[12]<<24)|(x[13]<<16)|(x[14]<<8)|x[15])&0xffffffffL;
98 102
99 for (;;) 103 for (;;) {
100 { 104 l = X[0]^S4[x[13]]^S5[x[15]]^S6[x[12]]^S7[x[14]]^S6[x[ 8]];
101 l=X[0]^S4[x[13]]^S5[x[15]]^S6[x[12]]^S7[x[14]]^S6[x[ 8]]; 105 CAST_exp(l, Z, z, 0);
102 CAST_exp(l,Z,z, 0); 106 l = X[2]^S4[z[ 0]]^S5[z[ 2]]^S6[z[ 1]]^S7[z[ 3]]^S7[x[10]];
103 l=X[2]^S4[z[ 0]]^S5[z[ 2]]^S6[z[ 1]]^S7[z[ 3]]^S7[x[10]]; 107 CAST_exp(l, Z, z, 4);
104 CAST_exp(l,Z,z, 4); 108 l = X[3]^S4[z[ 7]]^S5[z[ 6]]^S6[z[ 5]]^S7[z[ 4]]^S4[x[ 9]];
105 l=X[3]^S4[z[ 7]]^S5[z[ 6]]^S6[z[ 5]]^S7[z[ 4]]^S4[x[ 9]]; 109 CAST_exp(l, Z, z, 8);
106 CAST_exp(l,Z,z, 8); 110 l = X[1]^S4[z[10]]^S5[z[ 9]]^S6[z[11]]^S7[z[ 8]]^S5[x[11]];
107 l=X[1]^S4[z[10]]^S5[z[ 9]]^S6[z[11]]^S7[z[ 8]]^S5[x[11]]; 111 CAST_exp(l, Z,z, 12);
108 CAST_exp(l,Z,z,12);
109 112
110 K[ 0]= S4[z[ 8]]^S5[z[ 9]]^S6[z[ 7]]^S7[z[ 6]]^S4[z[ 2]]; 113 K[0] = S4[z[ 8]]^S5[z[ 9]]^S6[z[ 7]]^S7[z[ 6]]^S4[z[ 2]];
111 K[ 1]= S4[z[10]]^S5[z[11]]^S6[z[ 5]]^S7[z[ 4]]^S5[z[ 6]]; 114 K[1] = S4[z[10]]^S5[z[11]]^S6[z[ 5]]^S7[z[ 4]]^S5[z[ 6]];
112 K[ 2]= S4[z[12]]^S5[z[13]]^S6[z[ 3]]^S7[z[ 2]]^S6[z[ 9]]; 115 K[2] = S4[z[12]]^S5[z[13]]^S6[z[ 3]]^S7[z[ 2]]^S6[z[ 9]];
113 K[ 3]= S4[z[14]]^S5[z[15]]^S6[z[ 1]]^S7[z[ 0]]^S7[z[12]]; 116 K[3] = S4[z[14]]^S5[z[15]]^S6[z[ 1]]^S7[z[ 0]]^S7[z[12]];
114 117
115 l=Z[2]^S4[z[ 5]]^S5[z[ 7]]^S6[z[ 4]]^S7[z[ 6]]^S6[z[ 0]]; 118 l = Z[2]^S4[z[ 5]]^S5[z[ 7]]^S6[z[ 4]]^S7[z[ 6]]^S6[z[ 0]];
116 CAST_exp(l,X,x, 0); 119 CAST_exp(l, X, x, 0);
117 l=Z[0]^S4[x[ 0]]^S5[x[ 2]]^S6[x[ 1]]^S7[x[ 3]]^S7[z[ 2]]; 120 l = Z[0]^S4[x[ 0]]^S5[x[ 2]]^S6[x[ 1]]^S7[x[ 3]]^S7[z[ 2]];
118 CAST_exp(l,X,x, 4); 121 CAST_exp(l, X, x, 4);
119 l=Z[1]^S4[x[ 7]]^S5[x[ 6]]^S6[x[ 5]]^S7[x[ 4]]^S4[z[ 1]]; 122 l = Z[1]^S4[x[ 7]]^S5[x[ 6]]^S6[x[ 5]]^S7[x[ 4]]^S4[z[ 1]];
120 CAST_exp(l,X,x, 8); 123 CAST_exp(l, X, x, 8);
121 l=Z[3]^S4[x[10]]^S5[x[ 9]]^S6[x[11]]^S7[x[ 8]]^S5[z[ 3]]; 124 l = Z[3]^S4[x[10]]^S5[x[ 9]]^S6[x[11]]^S7[x[ 8]]^S5[z[ 3]];
122 CAST_exp(l,X,x,12); 125 CAST_exp(l, X,x, 12);
123 126
124 K[ 4]= S4[x[ 3]]^S5[x[ 2]]^S6[x[12]]^S7[x[13]]^S4[x[ 8]]; 127 K[4] = S4[x[ 3]]^S5[x[ 2]]^S6[x[12]]^S7[x[13]]^S4[x[ 8]];
125 K[ 5]= S4[x[ 1]]^S5[x[ 0]]^S6[x[14]]^S7[x[15]]^S5[x[13]]; 128 K[5] = S4[x[ 1]]^S5[x[ 0]]^S6[x[14]]^S7[x[15]]^S5[x[13]];
126 K[ 6]= S4[x[ 7]]^S5[x[ 6]]^S6[x[ 8]]^S7[x[ 9]]^S6[x[ 3]]; 129 K[6] = S4[x[ 7]]^S5[x[ 6]]^S6[x[ 8]]^S7[x[ 9]]^S6[x[ 3]];
127 K[ 7]= S4[x[ 5]]^S5[x[ 4]]^S6[x[10]]^S7[x[11]]^S7[x[ 7]]; 130 K[7] = S4[x[ 5]]^S5[x[ 4]]^S6[x[10]]^S7[x[11]]^S7[x[ 7]];
128 131
129 l=X[0]^S4[x[13]]^S5[x[15]]^S6[x[12]]^S7[x[14]]^S6[x[ 8]]; 132 l = X[0]^S4[x[13]]^S5[x[15]]^S6[x[12]]^S7[x[14]]^S6[x[ 8]];
130 CAST_exp(l,Z,z, 0); 133 CAST_exp(l, Z, z, 0);
131 l=X[2]^S4[z[ 0]]^S5[z[ 2]]^S6[z[ 1]]^S7[z[ 3]]^S7[x[10]]; 134 l = X[2]^S4[z[ 0]]^S5[z[ 2]]^S6[z[ 1]]^S7[z[ 3]]^S7[x[10]];
132 CAST_exp(l,Z,z, 4); 135 CAST_exp(l, Z, z, 4);
133 l=X[3]^S4[z[ 7]]^S5[z[ 6]]^S6[z[ 5]]^S7[z[ 4]]^S4[x[ 9]]; 136 l = X[3]^S4[z[ 7]]^S5[z[ 6]]^S6[z[ 5]]^S7[z[ 4]]^S4[x[ 9]];
134 CAST_exp(l,Z,z, 8); 137 CAST_exp(l, Z, z, 8);
135 l=X[1]^S4[z[10]]^S5[z[ 9]]^S6[z[11]]^S7[z[ 8]]^S5[x[11]]; 138 l = X[1]^S4[z[10]]^S5[z[ 9]]^S6[z[11]]^S7[z[ 8]]^S5[x[11]];
136 CAST_exp(l,Z,z,12); 139 CAST_exp(l, Z,z, 12);
137 140
138 K[ 8]= S4[z[ 3]]^S5[z[ 2]]^S6[z[12]]^S7[z[13]]^S4[z[ 9]]; 141 K[8] = S4[z[ 3]]^S5[z[ 2]]^S6[z[12]]^S7[z[13]]^S4[z[ 9]];
139 K[ 9]= S4[z[ 1]]^S5[z[ 0]]^S6[z[14]]^S7[z[15]]^S5[z[12]]; 142 K[9] = S4[z[ 1]]^S5[z[ 0]]^S6[z[14]]^S7[z[15]]^S5[z[12]];
140 K[10]= S4[z[ 7]]^S5[z[ 6]]^S6[z[ 8]]^S7[z[ 9]]^S6[z[ 2]]; 143 K[10] = S4[z[ 7]]^S5[z[ 6]]^S6[z[ 8]]^S7[z[ 9]]^S6[z[ 2]];
141 K[11]= S4[z[ 5]]^S5[z[ 4]]^S6[z[10]]^S7[z[11]]^S7[z[ 6]]; 144 K[11] = S4[z[ 5]]^S5[z[ 4]]^S6[z[10]]^S7[z[11]]^S7[z[ 6]];
142 145
143 l=Z[2]^S4[z[ 5]]^S5[z[ 7]]^S6[z[ 4]]^S7[z[ 6]]^S6[z[ 0]]; 146 l = Z[2]^S4[z[ 5]]^S5[z[ 7]]^S6[z[ 4]]^S7[z[ 6]]^S6[z[ 0]];
144 CAST_exp(l,X,x, 0); 147 CAST_exp(l, X, x, 0);
145 l=Z[0]^S4[x[ 0]]^S5[x[ 2]]^S6[x[ 1]]^S7[x[ 3]]^S7[z[ 2]]; 148 l = Z[0]^S4[x[ 0]]^S5[x[ 2]]^S6[x[ 1]]^S7[x[ 3]]^S7[z[ 2]];
146 CAST_exp(l,X,x, 4); 149 CAST_exp(l, X, x, 4);
147 l=Z[1]^S4[x[ 7]]^S5[x[ 6]]^S6[x[ 5]]^S7[x[ 4]]^S4[z[ 1]]; 150 l = Z[1]^S4[x[ 7]]^S5[x[ 6]]^S6[x[ 5]]^S7[x[ 4]]^S4[z[ 1]];
148 CAST_exp(l,X,x, 8); 151 CAST_exp(l, X, x, 8);
149 l=Z[3]^S4[x[10]]^S5[x[ 9]]^S6[x[11]]^S7[x[ 8]]^S5[z[ 3]]; 152 l = Z[3]^S4[x[10]]^S5[x[ 9]]^S6[x[11]]^S7[x[ 8]]^S5[z[ 3]];
150 CAST_exp(l,X,x,12); 153 CAST_exp(l, X,x, 12);
151 154
152 K[12]= S4[x[ 8]]^S5[x[ 9]]^S6[x[ 7]]^S7[x[ 6]]^S4[x[ 3]]; 155 K[12] = S4[x[ 8]]^S5[x[ 9]]^S6[x[ 7]]^S7[x[ 6]]^S4[x[ 3]];
153 K[13]= S4[x[10]]^S5[x[11]]^S6[x[ 5]]^S7[x[ 4]]^S5[x[ 7]]; 156 K[13] = S4[x[10]]^S5[x[11]]^S6[x[ 5]]^S7[x[ 4]]^S5[x[ 7]];
154 K[14]= S4[x[12]]^S5[x[13]]^S6[x[ 3]]^S7[x[ 2]]^S6[x[ 8]]; 157 K[14] = S4[x[12]]^S5[x[13]]^S6[x[ 3]]^S7[x[ 2]]^S6[x[ 8]];
155 K[15]= S4[x[14]]^S5[x[15]]^S6[x[ 1]]^S7[x[ 0]]^S7[x[13]]; 158 K[15] = S4[x[14]]^S5[x[15]]^S6[x[ 1]]^S7[x[ 0]]^S7[x[13]];
156 if (K != k) break; 159 if (K != k)
157 K+=16; 160 break;
158 } 161 K += 16;
162 }
159 163
160 for (i=0; i<16; i++) 164 for (i = 0; i < 16; i++) {
161 { 165 key->data[i*2] = k[i];
162 key->data[i*2]=k[i]; 166 key->data[i*2 + 1] = ((k[i + 16]) + 16)&0x1f;
163 key->data[i*2+1]=((k[i+16])+16)&0x1f;
164 }
165 } 167 }
168}
166 169
diff --git a/src/lib/libcrypto/cast/cast.h b/src/lib/libcrypto/cast/cast.h
index 1043c7f24f..0936696066 100644
--- a/src/lib/libcrypto/cast/cast.h
+++ b/src/lib/libcrypto/cast/cast.h
@@ -1,25 +1,25 @@
1/* $OpenBSD: cast.h,v 1.12 2014/07/10 22:45:56 jsing Exp $ */ 1/* $OpenBSD: cast.h,v 1.13 2023/07/08 07:25:43 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA, 11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms 13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 * 15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed. 17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution 18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used. 19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or 20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package. 21 * in documentation (online or textual) provided with the package.
22 * 22 *
23 * Redistribution and use in source and binary forms, with or without 23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 24 * modification, are permitted provided that the following conditions
25 * are met: 25 * are met:
@@ -34,10 +34,10 @@
34 * Eric Young (eay@cryptsoft.com)" 34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library 35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-). 36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement: 38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 * 40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE. 51 * SUCH DAMAGE.
52 * 52 *
53 * The licence and distribution terms for any publically available version or 53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
@@ -77,25 +77,24 @@ extern "C" {
77#define CAST_BLOCK 8 77#define CAST_BLOCK 8
78#define CAST_KEY_LENGTH 16 78#define CAST_KEY_LENGTH 16
79 79
80typedef struct cast_key_st 80typedef struct cast_key_st {
81 {
82 CAST_LONG data[32]; 81 CAST_LONG data[32];
83 int short_key; /* Use reduced rounds for short key */ 82 int short_key; /* Use reduced rounds for short key */
84 } CAST_KEY; 83} CAST_KEY;
85 84
86void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data); 85void CAST_set_key(CAST_KEY *key, int len, const unsigned char *data);
87void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, const CAST_KEY *key, 86void CAST_ecb_encrypt(const unsigned char *in, unsigned char *out, const CAST_KEY *key,
88 int enc); 87 int enc);
89void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key); 88void CAST_encrypt(CAST_LONG *data, const CAST_KEY *key);
90void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key); 89void CAST_decrypt(CAST_LONG *data, const CAST_KEY *key);
91void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length, 90void CAST_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
92 const CAST_KEY *ks, unsigned char *iv, int enc); 91 const CAST_KEY *ks, unsigned char *iv, int enc);
93void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out, 92void CAST_cfb64_encrypt(const unsigned char *in, unsigned char *out,
94 long length, const CAST_KEY *schedule, unsigned char *ivec, 93 long length, const CAST_KEY *schedule, unsigned char *ivec,
95 int *num, int enc); 94 int *num, int enc);
96void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out, 95void CAST_ofb64_encrypt(const unsigned char *in, unsigned char *out,
97 long length, const CAST_KEY *schedule, unsigned char *ivec, 96 long length, const CAST_KEY *schedule, unsigned char *ivec,
98 int *num); 97 int *num);
99 98
100#ifdef __cplusplus 99#ifdef __cplusplus
101} 100}
diff --git a/src/lib/libcrypto/cast/cast_local.h b/src/lib/libcrypto/cast/cast_local.h
index 2ee72a9e5a..5fb9911105 100644
--- a/src/lib/libcrypto/cast/cast_local.h
+++ b/src/lib/libcrypto/cast/cast_local.h
@@ -1,25 +1,25 @@
1/* $OpenBSD: cast_local.h,v 1.1 2022/11/26 16:08:51 tb Exp $ */ 1/* $OpenBSD: cast_local.h,v 1.2 2023/07/08 07:25:43 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA, 11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms 13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 * 15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed. 17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution 18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used. 19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or 20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package. 21 * in documentation (online or textual) provided with the package.
22 * 22 *
23 * Redistribution and use in source and binary forms, with or without 23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 24 * modification, are permitted provided that the following conditions
25 * are met: 25 * are met:
@@ -34,10 +34,10 @@
34 * Eric Young (eay@cryptsoft.com)" 34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library 35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-). 36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement: 38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 * 40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE. 51 * SUCH DAMAGE.
52 * 52 *
53 * The licence and distribution terms for any publically available version or 53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
diff --git a/src/lib/libcrypto/cast/cast_s.h b/src/lib/libcrypto/cast/cast_s.h
index 472128bb40..dc339504d4 100644
--- a/src/lib/libcrypto/cast/cast_s.h
+++ b/src/lib/libcrypto/cast/cast_s.h
@@ -1,25 +1,25 @@
1/* $OpenBSD: cast_s.h,v 1.6 2016/12/21 15:49:29 jsing Exp $ */ 1/* $OpenBSD: cast_s.h,v 1.7 2023/07/08 07:25:43 jsing Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) 2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved. 3 * All rights reserved.
4 * 4 *
5 * This package is an SSL implementation written 5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com). 6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL. 7 * The implementation was written so as to conform with Netscapes SSL.
8 * 8 *
9 * This library is free for commercial and non-commercial use as long as 9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions 10 * the following conditions are aheared to. The following conditions
11 * apply to all code found in this distribution, be it the RC4, RSA, 11 * apply to all code found in this distribution, be it the RC4, RSA,
12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation 12 * lhash, DES, etc., code; not just the SSL code. The SSL documentation
13 * included with this distribution is covered by the same copyright terms 13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com). 14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 * 15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in 16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed. 17 * the code are not to be removed.
18 * If this package is used in a product, Eric Young should be given attribution 18 * If this package is used in a product, Eric Young should be given attribution
19 * as the author of the parts of the library used. 19 * as the author of the parts of the library used.
20 * This can be in the form of a textual message at program startup or 20 * This can be in the form of a textual message at program startup or
21 * in documentation (online or textual) provided with the package. 21 * in documentation (online or textual) provided with the package.
22 * 22 *
23 * Redistribution and use in source and binary forms, with or without 23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions 24 * modification, are permitted provided that the following conditions
25 * are met: 25 * are met:
@@ -34,10 +34,10 @@
34 * Eric Young (eay@cryptsoft.com)" 34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library 35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-). 36 * being used are not cryptographic related :-).
37 * 4. If you include any Windows specific code (or a derivative thereof) from 37 * 4. If you include any Windows specific code (or a derivative thereof) from
38 * the apps directory (application code) you must include an acknowledgement: 38 * the apps directory (application code) you must include an acknowledgement:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)" 39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 * 40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND 41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
@@ -49,7 +49,7 @@
49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 49 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 50 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51 * SUCH DAMAGE. 51 * SUCH DAMAGE.
52 * 52 *
53 * The licence and distribution terms for any publically available version or 53 * The licence and distribution terms for any publically available version or
54 * derivative of this code cannot be changed. i.e. this code cannot simply be 54 * derivative of this code cannot be changed. i.e. this code cannot simply be
55 * copied and put under another distribution licence 55 * copied and put under another distribution licence
@@ -58,533 +58,533 @@
58 58
59__BEGIN_HIDDEN_DECLS 59__BEGIN_HIDDEN_DECLS
60 60
61const CAST_LONG CAST_S_table0[256]={ 61const CAST_LONG CAST_S_table0[256] = {
62 0x30fb40d4,0x9fa0ff0b,0x6beccd2f,0x3f258c7a, 62 0x30fb40d4, 0x9fa0ff0b, 0x6beccd2f, 0x3f258c7a,
63 0x1e213f2f,0x9c004dd3,0x6003e540,0xcf9fc949, 63 0x1e213f2f, 0x9c004dd3, 0x6003e540, 0xcf9fc949,
64 0xbfd4af27,0x88bbbdb5,0xe2034090,0x98d09675, 64 0xbfd4af27, 0x88bbbdb5, 0xe2034090, 0x98d09675,
65 0x6e63a0e0,0x15c361d2,0xc2e7661d,0x22d4ff8e, 65 0x6e63a0e0, 0x15c361d2, 0xc2e7661d, 0x22d4ff8e,
66 0x28683b6f,0xc07fd059,0xff2379c8,0x775f50e2, 66 0x28683b6f, 0xc07fd059, 0xff2379c8, 0x775f50e2,
67 0x43c340d3,0xdf2f8656,0x887ca41a,0xa2d2bd2d, 67 0x43c340d3, 0xdf2f8656, 0x887ca41a, 0xa2d2bd2d,
68 0xa1c9e0d6,0x346c4819,0x61b76d87,0x22540f2f, 68 0xa1c9e0d6, 0x346c4819, 0x61b76d87, 0x22540f2f,
69 0x2abe32e1,0xaa54166b,0x22568e3a,0xa2d341d0, 69 0x2abe32e1, 0xaa54166b, 0x22568e3a, 0xa2d341d0,
70 0x66db40c8,0xa784392f,0x004dff2f,0x2db9d2de, 70 0x66db40c8, 0xa784392f, 0x004dff2f, 0x2db9d2de,
71 0x97943fac,0x4a97c1d8,0x527644b7,0xb5f437a7, 71 0x97943fac, 0x4a97c1d8, 0x527644b7, 0xb5f437a7,
72 0xb82cbaef,0xd751d159,0x6ff7f0ed,0x5a097a1f, 72 0xb82cbaef, 0xd751d159, 0x6ff7f0ed, 0x5a097a1f,
73 0x827b68d0,0x90ecf52e,0x22b0c054,0xbc8e5935, 73 0x827b68d0, 0x90ecf52e, 0x22b0c054, 0xbc8e5935,
74 0x4b6d2f7f,0x50bb64a2,0xd2664910,0xbee5812d, 74 0x4b6d2f7f, 0x50bb64a2, 0xd2664910, 0xbee5812d,
75 0xb7332290,0xe93b159f,0xb48ee411,0x4bff345d, 75 0xb7332290, 0xe93b159f, 0xb48ee411, 0x4bff345d,
76 0xfd45c240,0xad31973f,0xc4f6d02e,0x55fc8165, 76 0xfd45c240, 0xad31973f, 0xc4f6d02e, 0x55fc8165,
77 0xd5b1caad,0xa1ac2dae,0xa2d4b76d,0xc19b0c50, 77 0xd5b1caad, 0xa1ac2dae, 0xa2d4b76d, 0xc19b0c50,
78 0x882240f2,0x0c6e4f38,0xa4e4bfd7,0x4f5ba272, 78 0x882240f2, 0x0c6e4f38, 0xa4e4bfd7, 0x4f5ba272,
79 0x564c1d2f,0xc59c5319,0xb949e354,0xb04669fe, 79 0x564c1d2f, 0xc59c5319, 0xb949e354, 0xb04669fe,
80 0xb1b6ab8a,0xc71358dd,0x6385c545,0x110f935d, 80 0xb1b6ab8a, 0xc71358dd, 0x6385c545, 0x110f935d,
81 0x57538ad5,0x6a390493,0xe63d37e0,0x2a54f6b3, 81 0x57538ad5, 0x6a390493, 0xe63d37e0, 0x2a54f6b3,
82 0x3a787d5f,0x6276a0b5,0x19a6fcdf,0x7a42206a, 82 0x3a787d5f, 0x6276a0b5, 0x19a6fcdf, 0x7a42206a,
83 0x29f9d4d5,0xf61b1891,0xbb72275e,0xaa508167, 83 0x29f9d4d5, 0xf61b1891, 0xbb72275e, 0xaa508167,
84 0x38901091,0xc6b505eb,0x84c7cb8c,0x2ad75a0f, 84 0x38901091, 0xc6b505eb, 0x84c7cb8c, 0x2ad75a0f,
85 0x874a1427,0xa2d1936b,0x2ad286af,0xaa56d291, 85 0x874a1427, 0xa2d1936b, 0x2ad286af, 0xaa56d291,
86 0xd7894360,0x425c750d,0x93b39e26,0x187184c9, 86 0xd7894360, 0x425c750d, 0x93b39e26, 0x187184c9,
87 0x6c00b32d,0x73e2bb14,0xa0bebc3c,0x54623779, 87 0x6c00b32d, 0x73e2bb14, 0xa0bebc3c, 0x54623779,
88 0x64459eab,0x3f328b82,0x7718cf82,0x59a2cea6, 88 0x64459eab, 0x3f328b82, 0x7718cf82, 0x59a2cea6,
89 0x04ee002e,0x89fe78e6,0x3fab0950,0x325ff6c2, 89 0x04ee002e, 0x89fe78e6, 0x3fab0950, 0x325ff6c2,
90 0x81383f05,0x6963c5c8,0x76cb5ad6,0xd49974c9, 90 0x81383f05, 0x6963c5c8, 0x76cb5ad6, 0xd49974c9,
91 0xca180dcf,0x380782d5,0xc7fa5cf6,0x8ac31511, 91 0xca180dcf, 0x380782d5, 0xc7fa5cf6, 0x8ac31511,
92 0x35e79e13,0x47da91d0,0xf40f9086,0xa7e2419e, 92 0x35e79e13, 0x47da91d0, 0xf40f9086, 0xa7e2419e,
93 0x31366241,0x051ef495,0xaa573b04,0x4a805d8d, 93 0x31366241, 0x051ef495, 0xaa573b04, 0x4a805d8d,
94 0x548300d0,0x00322a3c,0xbf64cddf,0xba57a68e, 94 0x548300d0, 0x00322a3c, 0xbf64cddf, 0xba57a68e,
95 0x75c6372b,0x50afd341,0xa7c13275,0x915a0bf5, 95 0x75c6372b, 0x50afd341, 0xa7c13275, 0x915a0bf5,
96 0x6b54bfab,0x2b0b1426,0xab4cc9d7,0x449ccd82, 96 0x6b54bfab, 0x2b0b1426, 0xab4cc9d7, 0x449ccd82,
97 0xf7fbf265,0xab85c5f3,0x1b55db94,0xaad4e324, 97 0xf7fbf265, 0xab85c5f3, 0x1b55db94, 0xaad4e324,
98 0xcfa4bd3f,0x2deaa3e2,0x9e204d02,0xc8bd25ac, 98 0xcfa4bd3f, 0x2deaa3e2, 0x9e204d02, 0xc8bd25ac,
99 0xeadf55b3,0xd5bd9e98,0xe31231b2,0x2ad5ad6c, 99 0xeadf55b3, 0xd5bd9e98, 0xe31231b2, 0x2ad5ad6c,
100 0x954329de,0xadbe4528,0xd8710f69,0xaa51c90f, 100 0x954329de, 0xadbe4528, 0xd8710f69, 0xaa51c90f,
101 0xaa786bf6,0x22513f1e,0xaa51a79b,0x2ad344cc, 101 0xaa786bf6, 0x22513f1e, 0xaa51a79b, 0x2ad344cc,
102 0x7b5a41f0,0xd37cfbad,0x1b069505,0x41ece491, 102 0x7b5a41f0, 0xd37cfbad, 0x1b069505, 0x41ece491,
103 0xb4c332e6,0x032268d4,0xc9600acc,0xce387e6d, 103 0xb4c332e6, 0x032268d4, 0xc9600acc, 0xce387e6d,
104 0xbf6bb16c,0x6a70fb78,0x0d03d9c9,0xd4df39de, 104 0xbf6bb16c, 0x6a70fb78, 0x0d03d9c9, 0xd4df39de,
105 0xe01063da,0x4736f464,0x5ad328d8,0xb347cc96, 105 0xe01063da, 0x4736f464, 0x5ad328d8, 0xb347cc96,
106 0x75bb0fc3,0x98511bfb,0x4ffbcc35,0xb58bcf6a, 106 0x75bb0fc3, 0x98511bfb, 0x4ffbcc35, 0xb58bcf6a,
107 0xe11f0abc,0xbfc5fe4a,0xa70aec10,0xac39570a, 107 0xe11f0abc, 0xbfc5fe4a, 0xa70aec10, 0xac39570a,
108 0x3f04442f,0x6188b153,0xe0397a2e,0x5727cb79, 108 0x3f04442f, 0x6188b153, 0xe0397a2e, 0x5727cb79,
109 0x9ceb418f,0x1cacd68d,0x2ad37c96,0x0175cb9d, 109 0x9ceb418f, 0x1cacd68d, 0x2ad37c96, 0x0175cb9d,
110 0xc69dff09,0xc75b65f0,0xd9db40d8,0xec0e7779, 110 0xc69dff09, 0xc75b65f0, 0xd9db40d8, 0xec0e7779,
111 0x4744ead4,0xb11c3274,0xdd24cb9e,0x7e1c54bd, 111 0x4744ead4, 0xb11c3274, 0xdd24cb9e, 0x7e1c54bd,
112 0xf01144f9,0xd2240eb1,0x9675b3fd,0xa3ac3755, 112 0xf01144f9, 0xd2240eb1, 0x9675b3fd, 0xa3ac3755,
113 0xd47c27af,0x51c85f4d,0x56907596,0xa5bb15e6, 113 0xd47c27af, 0x51c85f4d, 0x56907596, 0xa5bb15e6,
114 0x580304f0,0xca042cf1,0x011a37ea,0x8dbfaadb, 114 0x580304f0, 0xca042cf1, 0x011a37ea, 0x8dbfaadb,
115 0x35ba3e4a,0x3526ffa0,0xc37b4d09,0xbc306ed9, 115 0x35ba3e4a, 0x3526ffa0, 0xc37b4d09, 0xbc306ed9,
116 0x98a52666,0x5648f725,0xff5e569d,0x0ced63d0, 116 0x98a52666, 0x5648f725, 0xff5e569d, 0x0ced63d0,
117 0x7c63b2cf,0x700b45e1,0xd5ea50f1,0x85a92872, 117 0x7c63b2cf, 0x700b45e1, 0xd5ea50f1, 0x85a92872,
118 0xaf1fbda7,0xd4234870,0xa7870bf3,0x2d3b4d79, 118 0xaf1fbda7, 0xd4234870, 0xa7870bf3, 0x2d3b4d79,
119 0x42e04198,0x0cd0ede7,0x26470db8,0xf881814c, 119 0x42e04198, 0x0cd0ede7, 0x26470db8, 0xf881814c,
120 0x474d6ad7,0x7c0c5e5c,0xd1231959,0x381b7298, 120 0x474d6ad7, 0x7c0c5e5c, 0xd1231959, 0x381b7298,
121 0xf5d2f4db,0xab838653,0x6e2f1e23,0x83719c9e, 121 0xf5d2f4db, 0xab838653, 0x6e2f1e23, 0x83719c9e,
122 0xbd91e046,0x9a56456e,0xdc39200c,0x20c8c571, 122 0xbd91e046, 0x9a56456e, 0xdc39200c, 0x20c8c571,
123 0x962bda1c,0xe1e696ff,0xb141ab08,0x7cca89b9, 123 0x962bda1c, 0xe1e696ff, 0xb141ab08, 0x7cca89b9,
124 0x1a69e783,0x02cc4843,0xa2f7c579,0x429ef47d, 124 0x1a69e783, 0x02cc4843, 0xa2f7c579, 0x429ef47d,
125 0x427b169c,0x5ac9f049,0xdd8f0f00,0x5c8165bf, 125 0x427b169c, 0x5ac9f049, 0xdd8f0f00, 0x5c8165bf,
126 }; 126};
127const CAST_LONG CAST_S_table1[256]={ 127const CAST_LONG CAST_S_table1[256] = {
128 0x1f201094,0xef0ba75b,0x69e3cf7e,0x393f4380, 128 0x1f201094, 0xef0ba75b, 0x69e3cf7e, 0x393f4380,
129 0xfe61cf7a,0xeec5207a,0x55889c94,0x72fc0651, 129 0xfe61cf7a, 0xeec5207a, 0x55889c94, 0x72fc0651,
130 0xada7ef79,0x4e1d7235,0xd55a63ce,0xde0436ba, 130 0xada7ef79, 0x4e1d7235, 0xd55a63ce, 0xde0436ba,
131 0x99c430ef,0x5f0c0794,0x18dcdb7d,0xa1d6eff3, 131 0x99c430ef, 0x5f0c0794, 0x18dcdb7d, 0xa1d6eff3,
132 0xa0b52f7b,0x59e83605,0xee15b094,0xe9ffd909, 132 0xa0b52f7b, 0x59e83605, 0xee15b094, 0xe9ffd909,
133 0xdc440086,0xef944459,0xba83ccb3,0xe0c3cdfb, 133 0xdc440086, 0xef944459, 0xba83ccb3, 0xe0c3cdfb,
134 0xd1da4181,0x3b092ab1,0xf997f1c1,0xa5e6cf7b, 134 0xd1da4181, 0x3b092ab1, 0xf997f1c1, 0xa5e6cf7b,
135 0x01420ddb,0xe4e7ef5b,0x25a1ff41,0xe180f806, 135 0x01420ddb, 0xe4e7ef5b, 0x25a1ff41, 0xe180f806,
136 0x1fc41080,0x179bee7a,0xd37ac6a9,0xfe5830a4, 136 0x1fc41080, 0x179bee7a, 0xd37ac6a9, 0xfe5830a4,
137 0x98de8b7f,0x77e83f4e,0x79929269,0x24fa9f7b, 137 0x98de8b7f, 0x77e83f4e, 0x79929269, 0x24fa9f7b,
138 0xe113c85b,0xacc40083,0xd7503525,0xf7ea615f, 138 0xe113c85b, 0xacc40083, 0xd7503525, 0xf7ea615f,
139 0x62143154,0x0d554b63,0x5d681121,0xc866c359, 139 0x62143154, 0x0d554b63, 0x5d681121, 0xc866c359,
140 0x3d63cf73,0xcee234c0,0xd4d87e87,0x5c672b21, 140 0x3d63cf73, 0xcee234c0, 0xd4d87e87, 0x5c672b21,
141 0x071f6181,0x39f7627f,0x361e3084,0xe4eb573b, 141 0x071f6181, 0x39f7627f, 0x361e3084, 0xe4eb573b,
142 0x602f64a4,0xd63acd9c,0x1bbc4635,0x9e81032d, 142 0x602f64a4, 0xd63acd9c, 0x1bbc4635, 0x9e81032d,
143 0x2701f50c,0x99847ab4,0xa0e3df79,0xba6cf38c, 143 0x2701f50c, 0x99847ab4, 0xa0e3df79, 0xba6cf38c,
144 0x10843094,0x2537a95e,0xf46f6ffe,0xa1ff3b1f, 144 0x10843094, 0x2537a95e, 0xf46f6ffe, 0xa1ff3b1f,
145 0x208cfb6a,0x8f458c74,0xd9e0a227,0x4ec73a34, 145 0x208cfb6a, 0x8f458c74, 0xd9e0a227, 0x4ec73a34,
146 0xfc884f69,0x3e4de8df,0xef0e0088,0x3559648d, 146 0xfc884f69, 0x3e4de8df, 0xef0e0088, 0x3559648d,
147 0x8a45388c,0x1d804366,0x721d9bfd,0xa58684bb, 147 0x8a45388c, 0x1d804366, 0x721d9bfd, 0xa58684bb,
148 0xe8256333,0x844e8212,0x128d8098,0xfed33fb4, 148 0xe8256333, 0x844e8212, 0x128d8098, 0xfed33fb4,
149 0xce280ae1,0x27e19ba5,0xd5a6c252,0xe49754bd, 149 0xce280ae1, 0x27e19ba5, 0xd5a6c252, 0xe49754bd,
150 0xc5d655dd,0xeb667064,0x77840b4d,0xa1b6a801, 150 0xc5d655dd, 0xeb667064, 0x77840b4d, 0xa1b6a801,
151 0x84db26a9,0xe0b56714,0x21f043b7,0xe5d05860, 151 0x84db26a9, 0xe0b56714, 0x21f043b7, 0xe5d05860,
152 0x54f03084,0x066ff472,0xa31aa153,0xdadc4755, 152 0x54f03084, 0x066ff472, 0xa31aa153, 0xdadc4755,
153 0xb5625dbf,0x68561be6,0x83ca6b94,0x2d6ed23b, 153 0xb5625dbf, 0x68561be6, 0x83ca6b94, 0x2d6ed23b,
154 0xeccf01db,0xa6d3d0ba,0xb6803d5c,0xaf77a709, 154 0xeccf01db, 0xa6d3d0ba, 0xb6803d5c, 0xaf77a709,
155 0x33b4a34c,0x397bc8d6,0x5ee22b95,0x5f0e5304, 155 0x33b4a34c, 0x397bc8d6, 0x5ee22b95, 0x5f0e5304,
156 0x81ed6f61,0x20e74364,0xb45e1378,0xde18639b, 156 0x81ed6f61, 0x20e74364, 0xb45e1378, 0xde18639b,
157 0x881ca122,0xb96726d1,0x8049a7e8,0x22b7da7b, 157 0x881ca122, 0xb96726d1, 0x8049a7e8, 0x22b7da7b,
158 0x5e552d25,0x5272d237,0x79d2951c,0xc60d894c, 158 0x5e552d25, 0x5272d237, 0x79d2951c, 0xc60d894c,
159 0x488cb402,0x1ba4fe5b,0xa4b09f6b,0x1ca815cf, 159 0x488cb402, 0x1ba4fe5b, 0xa4b09f6b, 0x1ca815cf,
160 0xa20c3005,0x8871df63,0xb9de2fcb,0x0cc6c9e9, 160 0xa20c3005, 0x8871df63, 0xb9de2fcb, 0x0cc6c9e9,
161 0x0beeff53,0xe3214517,0xb4542835,0x9f63293c, 161 0x0beeff53, 0xe3214517, 0xb4542835, 0x9f63293c,
162 0xee41e729,0x6e1d2d7c,0x50045286,0x1e6685f3, 162 0xee41e729, 0x6e1d2d7c, 0x50045286, 0x1e6685f3,
163 0xf33401c6,0x30a22c95,0x31a70850,0x60930f13, 163 0xf33401c6, 0x30a22c95, 0x31a70850, 0x60930f13,
164 0x73f98417,0xa1269859,0xec645c44,0x52c877a9, 164 0x73f98417, 0xa1269859, 0xec645c44, 0x52c877a9,
165 0xcdff33a6,0xa02b1741,0x7cbad9a2,0x2180036f, 165 0xcdff33a6, 0xa02b1741, 0x7cbad9a2, 0x2180036f,
166 0x50d99c08,0xcb3f4861,0xc26bd765,0x64a3f6ab, 166 0x50d99c08, 0xcb3f4861, 0xc26bd765, 0x64a3f6ab,
167 0x80342676,0x25a75e7b,0xe4e6d1fc,0x20c710e6, 167 0x80342676, 0x25a75e7b, 0xe4e6d1fc, 0x20c710e6,
168 0xcdf0b680,0x17844d3b,0x31eef84d,0x7e0824e4, 168 0xcdf0b680, 0x17844d3b, 0x31eef84d, 0x7e0824e4,
169 0x2ccb49eb,0x846a3bae,0x8ff77888,0xee5d60f6, 169 0x2ccb49eb, 0x846a3bae, 0x8ff77888, 0xee5d60f6,
170 0x7af75673,0x2fdd5cdb,0xa11631c1,0x30f66f43, 170 0x7af75673, 0x2fdd5cdb, 0xa11631c1, 0x30f66f43,
171 0xb3faec54,0x157fd7fa,0xef8579cc,0xd152de58, 171 0xb3faec54, 0x157fd7fa, 0xef8579cc, 0xd152de58,
172 0xdb2ffd5e,0x8f32ce19,0x306af97a,0x02f03ef8, 172 0xdb2ffd5e, 0x8f32ce19, 0x306af97a, 0x02f03ef8,
173 0x99319ad5,0xc242fa0f,0xa7e3ebb0,0xc68e4906, 173 0x99319ad5, 0xc242fa0f, 0xa7e3ebb0, 0xc68e4906,
174 0xb8da230c,0x80823028,0xdcdef3c8,0xd35fb171, 174 0xb8da230c, 0x80823028, 0xdcdef3c8, 0xd35fb171,
175 0x088a1bc8,0xbec0c560,0x61a3c9e8,0xbca8f54d, 175 0x088a1bc8, 0xbec0c560, 0x61a3c9e8, 0xbca8f54d,
176 0xc72feffa,0x22822e99,0x82c570b4,0xd8d94e89, 176 0xc72feffa, 0x22822e99, 0x82c570b4, 0xd8d94e89,
177 0x8b1c34bc,0x301e16e6,0x273be979,0xb0ffeaa6, 177 0x8b1c34bc, 0x301e16e6, 0x273be979, 0xb0ffeaa6,
178 0x61d9b8c6,0x00b24869,0xb7ffce3f,0x08dc283b, 178 0x61d9b8c6, 0x00b24869, 0xb7ffce3f, 0x08dc283b,
179 0x43daf65a,0xf7e19798,0x7619b72f,0x8f1c9ba4, 179 0x43daf65a, 0xf7e19798, 0x7619b72f, 0x8f1c9ba4,
180 0xdc8637a0,0x16a7d3b1,0x9fc393b7,0xa7136eeb, 180 0xdc8637a0, 0x16a7d3b1, 0x9fc393b7, 0xa7136eeb,
181 0xc6bcc63e,0x1a513742,0xef6828bc,0x520365d6, 181 0xc6bcc63e, 0x1a513742, 0xef6828bc, 0x520365d6,
182 0x2d6a77ab,0x3527ed4b,0x821fd216,0x095c6e2e, 182 0x2d6a77ab, 0x3527ed4b, 0x821fd216, 0x095c6e2e,
183 0xdb92f2fb,0x5eea29cb,0x145892f5,0x91584f7f, 183 0xdb92f2fb, 0x5eea29cb, 0x145892f5, 0x91584f7f,
184 0x5483697b,0x2667a8cc,0x85196048,0x8c4bacea, 184 0x5483697b, 0x2667a8cc, 0x85196048, 0x8c4bacea,
185 0x833860d4,0x0d23e0f9,0x6c387e8a,0x0ae6d249, 185 0x833860d4, 0x0d23e0f9, 0x6c387e8a, 0x0ae6d249,
186 0xb284600c,0xd835731d,0xdcb1c647,0xac4c56ea, 186 0xb284600c, 0xd835731d, 0xdcb1c647, 0xac4c56ea,
187 0x3ebd81b3,0x230eabb0,0x6438bc87,0xf0b5b1fa, 187 0x3ebd81b3, 0x230eabb0, 0x6438bc87, 0xf0b5b1fa,
188 0x8f5ea2b3,0xfc184642,0x0a036b7a,0x4fb089bd, 188 0x8f5ea2b3, 0xfc184642, 0x0a036b7a, 0x4fb089bd,
189 0x649da589,0xa345415e,0x5c038323,0x3e5d3bb9, 189 0x649da589, 0xa345415e, 0x5c038323, 0x3e5d3bb9,
190 0x43d79572,0x7e6dd07c,0x06dfdf1e,0x6c6cc4ef, 190 0x43d79572, 0x7e6dd07c, 0x06dfdf1e, 0x6c6cc4ef,
191 0x7160a539,0x73bfbe70,0x83877605,0x4523ecf1, 191 0x7160a539, 0x73bfbe70, 0x83877605, 0x4523ecf1,
192 }; 192};
193const CAST_LONG CAST_S_table2[256]={ 193const CAST_LONG CAST_S_table2[256] = {
194 0x8defc240,0x25fa5d9f,0xeb903dbf,0xe810c907, 194 0x8defc240, 0x25fa5d9f, 0xeb903dbf, 0xe810c907,
195 0x47607fff,0x369fe44b,0x8c1fc644,0xaececa90, 195 0x47607fff, 0x369fe44b, 0x8c1fc644, 0xaececa90,
196 0xbeb1f9bf,0xeefbcaea,0xe8cf1950,0x51df07ae, 196 0xbeb1f9bf, 0xeefbcaea, 0xe8cf1950, 0x51df07ae,
197 0x920e8806,0xf0ad0548,0xe13c8d83,0x927010d5, 197 0x920e8806, 0xf0ad0548, 0xe13c8d83, 0x927010d5,
198 0x11107d9f,0x07647db9,0xb2e3e4d4,0x3d4f285e, 198 0x11107d9f, 0x07647db9, 0xb2e3e4d4, 0x3d4f285e,
199 0xb9afa820,0xfade82e0,0xa067268b,0x8272792e, 199 0xb9afa820, 0xfade82e0, 0xa067268b, 0x8272792e,
200 0x553fb2c0,0x489ae22b,0xd4ef9794,0x125e3fbc, 200 0x553fb2c0, 0x489ae22b, 0xd4ef9794, 0x125e3fbc,
201 0x21fffcee,0x825b1bfd,0x9255c5ed,0x1257a240, 201 0x21fffcee, 0x825b1bfd, 0x9255c5ed, 0x1257a240,
202 0x4e1a8302,0xbae07fff,0x528246e7,0x8e57140e, 202 0x4e1a8302, 0xbae07fff, 0x528246e7, 0x8e57140e,
203 0x3373f7bf,0x8c9f8188,0xa6fc4ee8,0xc982b5a5, 203 0x3373f7bf, 0x8c9f8188, 0xa6fc4ee8, 0xc982b5a5,
204 0xa8c01db7,0x579fc264,0x67094f31,0xf2bd3f5f, 204 0xa8c01db7, 0x579fc264, 0x67094f31, 0xf2bd3f5f,
205 0x40fff7c1,0x1fb78dfc,0x8e6bd2c1,0x437be59b, 205 0x40fff7c1, 0x1fb78dfc, 0x8e6bd2c1, 0x437be59b,
206 0x99b03dbf,0xb5dbc64b,0x638dc0e6,0x55819d99, 206 0x99b03dbf, 0xb5dbc64b, 0x638dc0e6, 0x55819d99,
207 0xa197c81c,0x4a012d6e,0xc5884a28,0xccc36f71, 207 0xa197c81c, 0x4a012d6e, 0xc5884a28, 0xccc36f71,
208 0xb843c213,0x6c0743f1,0x8309893c,0x0feddd5f, 208 0xb843c213, 0x6c0743f1, 0x8309893c, 0x0feddd5f,
209 0x2f7fe850,0xd7c07f7e,0x02507fbf,0x5afb9a04, 209 0x2f7fe850, 0xd7c07f7e, 0x02507fbf, 0x5afb9a04,
210 0xa747d2d0,0x1651192e,0xaf70bf3e,0x58c31380, 210 0xa747d2d0, 0x1651192e, 0xaf70bf3e, 0x58c31380,
211 0x5f98302e,0x727cc3c4,0x0a0fb402,0x0f7fef82, 211 0x5f98302e, 0x727cc3c4, 0x0a0fb402, 0x0f7fef82,
212 0x8c96fdad,0x5d2c2aae,0x8ee99a49,0x50da88b8, 212 0x8c96fdad, 0x5d2c2aae, 0x8ee99a49, 0x50da88b8,
213 0x8427f4a0,0x1eac5790,0x796fb449,0x8252dc15, 213 0x8427f4a0, 0x1eac5790, 0x796fb449, 0x8252dc15,
214 0xefbd7d9b,0xa672597d,0xada840d8,0x45f54504, 214 0xefbd7d9b, 0xa672597d, 0xada840d8, 0x45f54504,
215 0xfa5d7403,0xe83ec305,0x4f91751a,0x925669c2, 215 0xfa5d7403, 0xe83ec305, 0x4f91751a, 0x925669c2,
216 0x23efe941,0xa903f12e,0x60270df2,0x0276e4b6, 216 0x23efe941, 0xa903f12e, 0x60270df2, 0x0276e4b6,
217 0x94fd6574,0x927985b2,0x8276dbcb,0x02778176, 217 0x94fd6574, 0x927985b2, 0x8276dbcb, 0x02778176,
218 0xf8af918d,0x4e48f79e,0x8f616ddf,0xe29d840e, 218 0xf8af918d, 0x4e48f79e, 0x8f616ddf, 0xe29d840e,
219 0x842f7d83,0x340ce5c8,0x96bbb682,0x93b4b148, 219 0x842f7d83, 0x340ce5c8, 0x96bbb682, 0x93b4b148,
220 0xef303cab,0x984faf28,0x779faf9b,0x92dc560d, 220 0xef303cab, 0x984faf28, 0x779faf9b, 0x92dc560d,
221 0x224d1e20,0x8437aa88,0x7d29dc96,0x2756d3dc, 221 0x224d1e20, 0x8437aa88, 0x7d29dc96, 0x2756d3dc,
222 0x8b907cee,0xb51fd240,0xe7c07ce3,0xe566b4a1, 222 0x8b907cee, 0xb51fd240, 0xe7c07ce3, 0xe566b4a1,
223 0xc3e9615e,0x3cf8209d,0x6094d1e3,0xcd9ca341, 223 0xc3e9615e, 0x3cf8209d, 0x6094d1e3, 0xcd9ca341,
224 0x5c76460e,0x00ea983b,0xd4d67881,0xfd47572c, 224 0x5c76460e, 0x00ea983b, 0xd4d67881, 0xfd47572c,
225 0xf76cedd9,0xbda8229c,0x127dadaa,0x438a074e, 225 0xf76cedd9, 0xbda8229c, 0x127dadaa, 0x438a074e,
226 0x1f97c090,0x081bdb8a,0x93a07ebe,0xb938ca15, 226 0x1f97c090, 0x081bdb8a, 0x93a07ebe, 0xb938ca15,
227 0x97b03cff,0x3dc2c0f8,0x8d1ab2ec,0x64380e51, 227 0x97b03cff, 0x3dc2c0f8, 0x8d1ab2ec, 0x64380e51,
228 0x68cc7bfb,0xd90f2788,0x12490181,0x5de5ffd4, 228 0x68cc7bfb, 0xd90f2788, 0x12490181, 0x5de5ffd4,
229 0xdd7ef86a,0x76a2e214,0xb9a40368,0x925d958f, 229 0xdd7ef86a, 0x76a2e214, 0xb9a40368, 0x925d958f,
230 0x4b39fffa,0xba39aee9,0xa4ffd30b,0xfaf7933b, 230 0x4b39fffa, 0xba39aee9, 0xa4ffd30b, 0xfaf7933b,
231 0x6d498623,0x193cbcfa,0x27627545,0x825cf47a, 231 0x6d498623, 0x193cbcfa, 0x27627545, 0x825cf47a,
232 0x61bd8ba0,0xd11e42d1,0xcead04f4,0x127ea392, 232 0x61bd8ba0, 0xd11e42d1, 0xcead04f4, 0x127ea392,
233 0x10428db7,0x8272a972,0x9270c4a8,0x127de50b, 233 0x10428db7, 0x8272a972, 0x9270c4a8, 0x127de50b,
234 0x285ba1c8,0x3c62f44f,0x35c0eaa5,0xe805d231, 234 0x285ba1c8, 0x3c62f44f, 0x35c0eaa5, 0xe805d231,
235 0x428929fb,0xb4fcdf82,0x4fb66a53,0x0e7dc15b, 235 0x428929fb, 0xb4fcdf82, 0x4fb66a53, 0x0e7dc15b,
236 0x1f081fab,0x108618ae,0xfcfd086d,0xf9ff2889, 236 0x1f081fab, 0x108618ae, 0xfcfd086d, 0xf9ff2889,
237 0x694bcc11,0x236a5cae,0x12deca4d,0x2c3f8cc5, 237 0x694bcc11, 0x236a5cae, 0x12deca4d, 0x2c3f8cc5,
238 0xd2d02dfe,0xf8ef5896,0xe4cf52da,0x95155b67, 238 0xd2d02dfe, 0xf8ef5896, 0xe4cf52da, 0x95155b67,
239 0x494a488c,0xb9b6a80c,0x5c8f82bc,0x89d36b45, 239 0x494a488c, 0xb9b6a80c, 0x5c8f82bc, 0x89d36b45,
240 0x3a609437,0xec00c9a9,0x44715253,0x0a874b49, 240 0x3a609437, 0xec00c9a9, 0x44715253, 0x0a874b49,
241 0xd773bc40,0x7c34671c,0x02717ef6,0x4feb5536, 241 0xd773bc40, 0x7c34671c, 0x02717ef6, 0x4feb5536,
242 0xa2d02fff,0xd2bf60c4,0xd43f03c0,0x50b4ef6d, 242 0xa2d02fff, 0xd2bf60c4, 0xd43f03c0, 0x50b4ef6d,
243 0x07478cd1,0x006e1888,0xa2e53f55,0xb9e6d4bc, 243 0x07478cd1, 0x006e1888, 0xa2e53f55, 0xb9e6d4bc,
244 0xa2048016,0x97573833,0xd7207d67,0xde0f8f3d, 244 0xa2048016, 0x97573833, 0xd7207d67, 0xde0f8f3d,
245 0x72f87b33,0xabcc4f33,0x7688c55d,0x7b00a6b0, 245 0x72f87b33, 0xabcc4f33, 0x7688c55d, 0x7b00a6b0,
246 0x947b0001,0x570075d2,0xf9bb88f8,0x8942019e, 246 0x947b0001, 0x570075d2, 0xf9bb88f8, 0x8942019e,
247 0x4264a5ff,0x856302e0,0x72dbd92b,0xee971b69, 247 0x4264a5ff, 0x856302e0, 0x72dbd92b, 0xee971b69,
248 0x6ea22fde,0x5f08ae2b,0xaf7a616d,0xe5c98767, 248 0x6ea22fde, 0x5f08ae2b, 0xaf7a616d, 0xe5c98767,
249 0xcf1febd2,0x61efc8c2,0xf1ac2571,0xcc8239c2, 249 0xcf1febd2, 0x61efc8c2, 0xf1ac2571, 0xcc8239c2,
250 0x67214cb8,0xb1e583d1,0xb7dc3e62,0x7f10bdce, 250 0x67214cb8, 0xb1e583d1, 0xb7dc3e62, 0x7f10bdce,
251 0xf90a5c38,0x0ff0443d,0x606e6dc6,0x60543a49, 251 0xf90a5c38, 0x0ff0443d, 0x606e6dc6, 0x60543a49,
252 0x5727c148,0x2be98a1d,0x8ab41738,0x20e1be24, 252 0x5727c148, 0x2be98a1d, 0x8ab41738, 0x20e1be24,
253 0xaf96da0f,0x68458425,0x99833be5,0x600d457d, 253 0xaf96da0f, 0x68458425, 0x99833be5, 0x600d457d,
254 0x282f9350,0x8334b362,0xd91d1120,0x2b6d8da0, 254 0x282f9350, 0x8334b362, 0xd91d1120, 0x2b6d8da0,
255 0x642b1e31,0x9c305a00,0x52bce688,0x1b03588a, 255 0x642b1e31, 0x9c305a00, 0x52bce688, 0x1b03588a,
256 0xf7baefd5,0x4142ed9c,0xa4315c11,0x83323ec5, 256 0xf7baefd5, 0x4142ed9c, 0xa4315c11, 0x83323ec5,
257 0xdfef4636,0xa133c501,0xe9d3531c,0xee353783, 257 0xdfef4636, 0xa133c501, 0xe9d3531c, 0xee353783,
258 }; 258};
259const CAST_LONG CAST_S_table3[256]={ 259const CAST_LONG CAST_S_table3[256] = {
260 0x9db30420,0x1fb6e9de,0xa7be7bef,0xd273a298, 260 0x9db30420, 0x1fb6e9de, 0xa7be7bef, 0xd273a298,
261 0x4a4f7bdb,0x64ad8c57,0x85510443,0xfa020ed1, 261 0x4a4f7bdb, 0x64ad8c57, 0x85510443, 0xfa020ed1,
262 0x7e287aff,0xe60fb663,0x095f35a1,0x79ebf120, 262 0x7e287aff, 0xe60fb663, 0x095f35a1, 0x79ebf120,
263 0xfd059d43,0x6497b7b1,0xf3641f63,0x241e4adf, 263 0xfd059d43, 0x6497b7b1, 0xf3641f63, 0x241e4adf,
264 0x28147f5f,0x4fa2b8cd,0xc9430040,0x0cc32220, 264 0x28147f5f, 0x4fa2b8cd, 0xc9430040, 0x0cc32220,
265 0xfdd30b30,0xc0a5374f,0x1d2d00d9,0x24147b15, 265 0xfdd30b30, 0xc0a5374f, 0x1d2d00d9, 0x24147b15,
266 0xee4d111a,0x0fca5167,0x71ff904c,0x2d195ffe, 266 0xee4d111a, 0x0fca5167, 0x71ff904c, 0x2d195ffe,
267 0x1a05645f,0x0c13fefe,0x081b08ca,0x05170121, 267 0x1a05645f, 0x0c13fefe, 0x081b08ca, 0x05170121,
268 0x80530100,0xe83e5efe,0xac9af4f8,0x7fe72701, 268 0x80530100, 0xe83e5efe, 0xac9af4f8, 0x7fe72701,
269 0xd2b8ee5f,0x06df4261,0xbb9e9b8a,0x7293ea25, 269 0xd2b8ee5f, 0x06df4261, 0xbb9e9b8a, 0x7293ea25,
270 0xce84ffdf,0xf5718801,0x3dd64b04,0xa26f263b, 270 0xce84ffdf, 0xf5718801, 0x3dd64b04, 0xa26f263b,
271 0x7ed48400,0x547eebe6,0x446d4ca0,0x6cf3d6f5, 271 0x7ed48400, 0x547eebe6, 0x446d4ca0, 0x6cf3d6f5,
272 0x2649abdf,0xaea0c7f5,0x36338cc1,0x503f7e93, 272 0x2649abdf, 0xaea0c7f5, 0x36338cc1, 0x503f7e93,
273 0xd3772061,0x11b638e1,0x72500e03,0xf80eb2bb, 273 0xd3772061, 0x11b638e1, 0x72500e03, 0xf80eb2bb,
274 0xabe0502e,0xec8d77de,0x57971e81,0xe14f6746, 274 0xabe0502e, 0xec8d77de, 0x57971e81, 0xe14f6746,
275 0xc9335400,0x6920318f,0x081dbb99,0xffc304a5, 275 0xc9335400, 0x6920318f, 0x081dbb99, 0xffc304a5,
276 0x4d351805,0x7f3d5ce3,0xa6c866c6,0x5d5bcca9, 276 0x4d351805, 0x7f3d5ce3, 0xa6c866c6, 0x5d5bcca9,
277 0xdaec6fea,0x9f926f91,0x9f46222f,0x3991467d, 277 0xdaec6fea, 0x9f926f91, 0x9f46222f, 0x3991467d,
278 0xa5bf6d8e,0x1143c44f,0x43958302,0xd0214eeb, 278 0xa5bf6d8e, 0x1143c44f, 0x43958302, 0xd0214eeb,
279 0x022083b8,0x3fb6180c,0x18f8931e,0x281658e6, 279 0x022083b8, 0x3fb6180c, 0x18f8931e, 0x281658e6,
280 0x26486e3e,0x8bd78a70,0x7477e4c1,0xb506e07c, 280 0x26486e3e, 0x8bd78a70, 0x7477e4c1, 0xb506e07c,
281 0xf32d0a25,0x79098b02,0xe4eabb81,0x28123b23, 281 0xf32d0a25, 0x79098b02, 0xe4eabb81, 0x28123b23,
282 0x69dead38,0x1574ca16,0xdf871b62,0x211c40b7, 282 0x69dead38, 0x1574ca16, 0xdf871b62, 0x211c40b7,
283 0xa51a9ef9,0x0014377b,0x041e8ac8,0x09114003, 283 0xa51a9ef9, 0x0014377b, 0x041e8ac8, 0x09114003,
284 0xbd59e4d2,0xe3d156d5,0x4fe876d5,0x2f91a340, 284 0xbd59e4d2, 0xe3d156d5, 0x4fe876d5, 0x2f91a340,
285 0x557be8de,0x00eae4a7,0x0ce5c2ec,0x4db4bba6, 285 0x557be8de, 0x00eae4a7, 0x0ce5c2ec, 0x4db4bba6,
286 0xe756bdff,0xdd3369ac,0xec17b035,0x06572327, 286 0xe756bdff, 0xdd3369ac, 0xec17b035, 0x06572327,
287 0x99afc8b0,0x56c8c391,0x6b65811c,0x5e146119, 287 0x99afc8b0, 0x56c8c391, 0x6b65811c, 0x5e146119,
288 0x6e85cb75,0xbe07c002,0xc2325577,0x893ff4ec, 288 0x6e85cb75, 0xbe07c002, 0xc2325577, 0x893ff4ec,
289 0x5bbfc92d,0xd0ec3b25,0xb7801ab7,0x8d6d3b24, 289 0x5bbfc92d, 0xd0ec3b25, 0xb7801ab7, 0x8d6d3b24,
290 0x20c763ef,0xc366a5fc,0x9c382880,0x0ace3205, 290 0x20c763ef, 0xc366a5fc, 0x9c382880, 0x0ace3205,
291 0xaac9548a,0xeca1d7c7,0x041afa32,0x1d16625a, 291 0xaac9548a, 0xeca1d7c7, 0x041afa32, 0x1d16625a,
292 0x6701902c,0x9b757a54,0x31d477f7,0x9126b031, 292 0x6701902c, 0x9b757a54, 0x31d477f7, 0x9126b031,
293 0x36cc6fdb,0xc70b8b46,0xd9e66a48,0x56e55a79, 293 0x36cc6fdb, 0xc70b8b46, 0xd9e66a48, 0x56e55a79,
294 0x026a4ceb,0x52437eff,0x2f8f76b4,0x0df980a5, 294 0x026a4ceb, 0x52437eff, 0x2f8f76b4, 0x0df980a5,
295 0x8674cde3,0xedda04eb,0x17a9be04,0x2c18f4df, 295 0x8674cde3, 0xedda04eb, 0x17a9be04, 0x2c18f4df,
296 0xb7747f9d,0xab2af7b4,0xefc34d20,0x2e096b7c, 296 0xb7747f9d, 0xab2af7b4, 0xefc34d20, 0x2e096b7c,
297 0x1741a254,0xe5b6a035,0x213d42f6,0x2c1c7c26, 297 0x1741a254, 0xe5b6a035, 0x213d42f6, 0x2c1c7c26,
298 0x61c2f50f,0x6552daf9,0xd2c231f8,0x25130f69, 298 0x61c2f50f, 0x6552daf9, 0xd2c231f8, 0x25130f69,
299 0xd8167fa2,0x0418f2c8,0x001a96a6,0x0d1526ab, 299 0xd8167fa2, 0x0418f2c8, 0x001a96a6, 0x0d1526ab,
300 0x63315c21,0x5e0a72ec,0x49bafefd,0x187908d9, 300 0x63315c21, 0x5e0a72ec, 0x49bafefd, 0x187908d9,
301 0x8d0dbd86,0x311170a7,0x3e9b640c,0xcc3e10d7, 301 0x8d0dbd86, 0x311170a7, 0x3e9b640c, 0xcc3e10d7,
302 0xd5cad3b6,0x0caec388,0xf73001e1,0x6c728aff, 302 0xd5cad3b6, 0x0caec388, 0xf73001e1, 0x6c728aff,
303 0x71eae2a1,0x1f9af36e,0xcfcbd12f,0xc1de8417, 303 0x71eae2a1, 0x1f9af36e, 0xcfcbd12f, 0xc1de8417,
304 0xac07be6b,0xcb44a1d8,0x8b9b0f56,0x013988c3, 304 0xac07be6b, 0xcb44a1d8, 0x8b9b0f56, 0x013988c3,
305 0xb1c52fca,0xb4be31cd,0xd8782806,0x12a3a4e2, 305 0xb1c52fca, 0xb4be31cd, 0xd8782806, 0x12a3a4e2,
306 0x6f7de532,0x58fd7eb6,0xd01ee900,0x24adffc2, 306 0x6f7de532, 0x58fd7eb6, 0xd01ee900, 0x24adffc2,
307 0xf4990fc5,0x9711aac5,0x001d7b95,0x82e5e7d2, 307 0xf4990fc5, 0x9711aac5, 0x001d7b95, 0x82e5e7d2,
308 0x109873f6,0x00613096,0xc32d9521,0xada121ff, 308 0x109873f6, 0x00613096, 0xc32d9521, 0xada121ff,
309 0x29908415,0x7fbb977f,0xaf9eb3db,0x29c9ed2a, 309 0x29908415, 0x7fbb977f, 0xaf9eb3db, 0x29c9ed2a,
310 0x5ce2a465,0xa730f32c,0xd0aa3fe8,0x8a5cc091, 310 0x5ce2a465, 0xa730f32c, 0xd0aa3fe8, 0x8a5cc091,
311 0xd49e2ce7,0x0ce454a9,0xd60acd86,0x015f1919, 311 0xd49e2ce7, 0x0ce454a9, 0xd60acd86, 0x015f1919,
312 0x77079103,0xdea03af6,0x78a8565e,0xdee356df, 312 0x77079103, 0xdea03af6, 0x78a8565e, 0xdee356df,
313 0x21f05cbe,0x8b75e387,0xb3c50651,0xb8a5c3ef, 313 0x21f05cbe, 0x8b75e387, 0xb3c50651, 0xb8a5c3ef,
314 0xd8eeb6d2,0xe523be77,0xc2154529,0x2f69efdf, 314 0xd8eeb6d2, 0xe523be77, 0xc2154529, 0x2f69efdf,
315 0xafe67afb,0xf470c4b2,0xf3e0eb5b,0xd6cc9876, 315 0xafe67afb, 0xf470c4b2, 0xf3e0eb5b, 0xd6cc9876,
316 0x39e4460c,0x1fda8538,0x1987832f,0xca007367, 316 0x39e4460c, 0x1fda8538, 0x1987832f, 0xca007367,
317 0xa99144f8,0x296b299e,0x492fc295,0x9266beab, 317 0xa99144f8, 0x296b299e, 0x492fc295, 0x9266beab,
318 0xb5676e69,0x9bd3ddda,0xdf7e052f,0xdb25701c, 318 0xb5676e69, 0x9bd3ddda, 0xdf7e052f, 0xdb25701c,
319 0x1b5e51ee,0xf65324e6,0x6afce36c,0x0316cc04, 319 0x1b5e51ee, 0xf65324e6, 0x6afce36c, 0x0316cc04,
320 0x8644213e,0xb7dc59d0,0x7965291f,0xccd6fd43, 320 0x8644213e, 0xb7dc59d0, 0x7965291f, 0xccd6fd43,
321 0x41823979,0x932bcdf6,0xb657c34d,0x4edfd282, 321 0x41823979, 0x932bcdf6, 0xb657c34d, 0x4edfd282,
322 0x7ae5290c,0x3cb9536b,0x851e20fe,0x9833557e, 322 0x7ae5290c, 0x3cb9536b, 0x851e20fe, 0x9833557e,
323 0x13ecf0b0,0xd3ffb372,0x3f85c5c1,0x0aef7ed2, 323 0x13ecf0b0, 0xd3ffb372, 0x3f85c5c1, 0x0aef7ed2,
324 }; 324};
325const CAST_LONG CAST_S_table4[256]={ 325const CAST_LONG CAST_S_table4[256] = {
326 0x7ec90c04,0x2c6e74b9,0x9b0e66df,0xa6337911, 326 0x7ec90c04, 0x2c6e74b9, 0x9b0e66df, 0xa6337911,
327 0xb86a7fff,0x1dd358f5,0x44dd9d44,0x1731167f, 327 0xb86a7fff, 0x1dd358f5, 0x44dd9d44, 0x1731167f,
328 0x08fbf1fa,0xe7f511cc,0xd2051b00,0x735aba00, 328 0x08fbf1fa, 0xe7f511cc, 0xd2051b00, 0x735aba00,
329 0x2ab722d8,0x386381cb,0xacf6243a,0x69befd7a, 329 0x2ab722d8, 0x386381cb, 0xacf6243a, 0x69befd7a,
330 0xe6a2e77f,0xf0c720cd,0xc4494816,0xccf5c180, 330 0xe6a2e77f, 0xf0c720cd, 0xc4494816, 0xccf5c180,
331 0x38851640,0x15b0a848,0xe68b18cb,0x4caadeff, 331 0x38851640, 0x15b0a848, 0xe68b18cb, 0x4caadeff,
332 0x5f480a01,0x0412b2aa,0x259814fc,0x41d0efe2, 332 0x5f480a01, 0x0412b2aa, 0x259814fc, 0x41d0efe2,
333 0x4e40b48d,0x248eb6fb,0x8dba1cfe,0x41a99b02, 333 0x4e40b48d, 0x248eb6fb, 0x8dba1cfe, 0x41a99b02,
334 0x1a550a04,0xba8f65cb,0x7251f4e7,0x95a51725, 334 0x1a550a04, 0xba8f65cb, 0x7251f4e7, 0x95a51725,
335 0xc106ecd7,0x97a5980a,0xc539b9aa,0x4d79fe6a, 335 0xc106ecd7, 0x97a5980a, 0xc539b9aa, 0x4d79fe6a,
336 0xf2f3f763,0x68af8040,0xed0c9e56,0x11b4958b, 336 0xf2f3f763, 0x68af8040, 0xed0c9e56, 0x11b4958b,
337 0xe1eb5a88,0x8709e6b0,0xd7e07156,0x4e29fea7, 337 0xe1eb5a88, 0x8709e6b0, 0xd7e07156, 0x4e29fea7,
338 0x6366e52d,0x02d1c000,0xc4ac8e05,0x9377f571, 338 0x6366e52d, 0x02d1c000, 0xc4ac8e05, 0x9377f571,
339 0x0c05372a,0x578535f2,0x2261be02,0xd642a0c9, 339 0x0c05372a, 0x578535f2, 0x2261be02, 0xd642a0c9,
340 0xdf13a280,0x74b55bd2,0x682199c0,0xd421e5ec, 340 0xdf13a280, 0x74b55bd2, 0x682199c0, 0xd421e5ec,
341 0x53fb3ce8,0xc8adedb3,0x28a87fc9,0x3d959981, 341 0x53fb3ce8, 0xc8adedb3, 0x28a87fc9, 0x3d959981,
342 0x5c1ff900,0xfe38d399,0x0c4eff0b,0x062407ea, 342 0x5c1ff900, 0xfe38d399, 0x0c4eff0b, 0x062407ea,
343 0xaa2f4fb1,0x4fb96976,0x90c79505,0xb0a8a774, 343 0xaa2f4fb1, 0x4fb96976, 0x90c79505, 0xb0a8a774,
344 0xef55a1ff,0xe59ca2c2,0xa6b62d27,0xe66a4263, 344 0xef55a1ff, 0xe59ca2c2, 0xa6b62d27, 0xe66a4263,
345 0xdf65001f,0x0ec50966,0xdfdd55bc,0x29de0655, 345 0xdf65001f, 0x0ec50966, 0xdfdd55bc, 0x29de0655,
346 0x911e739a,0x17af8975,0x32c7911c,0x89f89468, 346 0x911e739a, 0x17af8975, 0x32c7911c, 0x89f89468,
347 0x0d01e980,0x524755f4,0x03b63cc9,0x0cc844b2, 347 0x0d01e980, 0x524755f4, 0x03b63cc9, 0x0cc844b2,
348 0xbcf3f0aa,0x87ac36e9,0xe53a7426,0x01b3d82b, 348 0xbcf3f0aa, 0x87ac36e9, 0xe53a7426, 0x01b3d82b,
349 0x1a9e7449,0x64ee2d7e,0xcddbb1da,0x01c94910, 349 0x1a9e7449, 0x64ee2d7e, 0xcddbb1da, 0x01c94910,
350 0xb868bf80,0x0d26f3fd,0x9342ede7,0x04a5c284, 350 0xb868bf80, 0x0d26f3fd, 0x9342ede7, 0x04a5c284,
351 0x636737b6,0x50f5b616,0xf24766e3,0x8eca36c1, 351 0x636737b6, 0x50f5b616, 0xf24766e3, 0x8eca36c1,
352 0x136e05db,0xfef18391,0xfb887a37,0xd6e7f7d4, 352 0x136e05db, 0xfef18391, 0xfb887a37, 0xd6e7f7d4,
353 0xc7fb7dc9,0x3063fcdf,0xb6f589de,0xec2941da, 353 0xc7fb7dc9, 0x3063fcdf, 0xb6f589de, 0xec2941da,
354 0x26e46695,0xb7566419,0xf654efc5,0xd08d58b7, 354 0x26e46695, 0xb7566419, 0xf654efc5, 0xd08d58b7,
355 0x48925401,0xc1bacb7f,0xe5ff550f,0xb6083049, 355 0x48925401, 0xc1bacb7f, 0xe5ff550f, 0xb6083049,
356 0x5bb5d0e8,0x87d72e5a,0xab6a6ee1,0x223a66ce, 356 0x5bb5d0e8, 0x87d72e5a, 0xab6a6ee1, 0x223a66ce,
357 0xc62bf3cd,0x9e0885f9,0x68cb3e47,0x086c010f, 357 0xc62bf3cd, 0x9e0885f9, 0x68cb3e47, 0x086c010f,
358 0xa21de820,0xd18b69de,0xf3f65777,0xfa02c3f6, 358 0xa21de820, 0xd18b69de, 0xf3f65777, 0xfa02c3f6,
359 0x407edac3,0xcbb3d550,0x1793084d,0xb0d70eba, 359 0x407edac3, 0xcbb3d550, 0x1793084d, 0xb0d70eba,
360 0x0ab378d5,0xd951fb0c,0xded7da56,0x4124bbe4, 360 0x0ab378d5, 0xd951fb0c, 0xded7da56, 0x4124bbe4,
361 0x94ca0b56,0x0f5755d1,0xe0e1e56e,0x6184b5be, 361 0x94ca0b56, 0x0f5755d1, 0xe0e1e56e, 0x6184b5be,
362 0x580a249f,0x94f74bc0,0xe327888e,0x9f7b5561, 362 0x580a249f, 0x94f74bc0, 0xe327888e, 0x9f7b5561,
363 0xc3dc0280,0x05687715,0x646c6bd7,0x44904db3, 363 0xc3dc0280, 0x05687715, 0x646c6bd7, 0x44904db3,
364 0x66b4f0a3,0xc0f1648a,0x697ed5af,0x49e92ff6, 364 0x66b4f0a3, 0xc0f1648a, 0x697ed5af, 0x49e92ff6,
365 0x309e374f,0x2cb6356a,0x85808573,0x4991f840, 365 0x309e374f, 0x2cb6356a, 0x85808573, 0x4991f840,
366 0x76f0ae02,0x083be84d,0x28421c9a,0x44489406, 366 0x76f0ae02, 0x083be84d, 0x28421c9a, 0x44489406,
367 0x736e4cb8,0xc1092910,0x8bc95fc6,0x7d869cf4, 367 0x736e4cb8, 0xc1092910, 0x8bc95fc6, 0x7d869cf4,
368 0x134f616f,0x2e77118d,0xb31b2be1,0xaa90b472, 368 0x134f616f, 0x2e77118d, 0xb31b2be1, 0xaa90b472,
369 0x3ca5d717,0x7d161bba,0x9cad9010,0xaf462ba2, 369 0x3ca5d717, 0x7d161bba, 0x9cad9010, 0xaf462ba2,
370 0x9fe459d2,0x45d34559,0xd9f2da13,0xdbc65487, 370 0x9fe459d2, 0x45d34559, 0xd9f2da13, 0xdbc65487,
371 0xf3e4f94e,0x176d486f,0x097c13ea,0x631da5c7, 371 0xf3e4f94e, 0x176d486f, 0x097c13ea, 0x631da5c7,
372 0x445f7382,0x175683f4,0xcdc66a97,0x70be0288, 372 0x445f7382, 0x175683f4, 0xcdc66a97, 0x70be0288,
373 0xb3cdcf72,0x6e5dd2f3,0x20936079,0x459b80a5, 373 0xb3cdcf72, 0x6e5dd2f3, 0x20936079, 0x459b80a5,
374 0xbe60e2db,0xa9c23101,0xeba5315c,0x224e42f2, 374 0xbe60e2db, 0xa9c23101, 0xeba5315c, 0x224e42f2,
375 0x1c5c1572,0xf6721b2c,0x1ad2fff3,0x8c25404e, 375 0x1c5c1572, 0xf6721b2c, 0x1ad2fff3, 0x8c25404e,
376 0x324ed72f,0x4067b7fd,0x0523138e,0x5ca3bc78, 376 0x324ed72f, 0x4067b7fd, 0x0523138e, 0x5ca3bc78,
377 0xdc0fd66e,0x75922283,0x784d6b17,0x58ebb16e, 377 0xdc0fd66e, 0x75922283, 0x784d6b17, 0x58ebb16e,
378 0x44094f85,0x3f481d87,0xfcfeae7b,0x77b5ff76, 378 0x44094f85, 0x3f481d87, 0xfcfeae7b, 0x77b5ff76,
379 0x8c2302bf,0xaaf47556,0x5f46b02a,0x2b092801, 379 0x8c2302bf, 0xaaf47556, 0x5f46b02a, 0x2b092801,
380 0x3d38f5f7,0x0ca81f36,0x52af4a8a,0x66d5e7c0, 380 0x3d38f5f7, 0x0ca81f36, 0x52af4a8a, 0x66d5e7c0,
381 0xdf3b0874,0x95055110,0x1b5ad7a8,0xf61ed5ad, 381 0xdf3b0874, 0x95055110, 0x1b5ad7a8, 0xf61ed5ad,
382 0x6cf6e479,0x20758184,0xd0cefa65,0x88f7be58, 382 0x6cf6e479, 0x20758184, 0xd0cefa65, 0x88f7be58,
383 0x4a046826,0x0ff6f8f3,0xa09c7f70,0x5346aba0, 383 0x4a046826, 0x0ff6f8f3, 0xa09c7f70, 0x5346aba0,
384 0x5ce96c28,0xe176eda3,0x6bac307f,0x376829d2, 384 0x5ce96c28, 0xe176eda3, 0x6bac307f, 0x376829d2,
385 0x85360fa9,0x17e3fe2a,0x24b79767,0xf5a96b20, 385 0x85360fa9, 0x17e3fe2a, 0x24b79767, 0xf5a96b20,
386 0xd6cd2595,0x68ff1ebf,0x7555442c,0xf19f06be, 386 0xd6cd2595, 0x68ff1ebf, 0x7555442c, 0xf19f06be,
387 0xf9e0659a,0xeeb9491d,0x34010718,0xbb30cab8, 387 0xf9e0659a, 0xeeb9491d, 0x34010718, 0xbb30cab8,
388 0xe822fe15,0x88570983,0x750e6249,0xda627e55, 388 0xe822fe15, 0x88570983, 0x750e6249, 0xda627e55,
389 0x5e76ffa8,0xb1534546,0x6d47de08,0xefe9e7d4, 389 0x5e76ffa8, 0xb1534546, 0x6d47de08, 0xefe9e7d4,
390 }; 390};
391const CAST_LONG CAST_S_table5[256]={ 391const CAST_LONG CAST_S_table5[256] = {
392 0xf6fa8f9d,0x2cac6ce1,0x4ca34867,0xe2337f7c, 392 0xf6fa8f9d, 0x2cac6ce1, 0x4ca34867, 0xe2337f7c,
393 0x95db08e7,0x016843b4,0xeced5cbc,0x325553ac, 393 0x95db08e7, 0x016843b4, 0xeced5cbc, 0x325553ac,
394 0xbf9f0960,0xdfa1e2ed,0x83f0579d,0x63ed86b9, 394 0xbf9f0960, 0xdfa1e2ed, 0x83f0579d, 0x63ed86b9,
395 0x1ab6a6b8,0xde5ebe39,0xf38ff732,0x8989b138, 395 0x1ab6a6b8, 0xde5ebe39, 0xf38ff732, 0x8989b138,
396 0x33f14961,0xc01937bd,0xf506c6da,0xe4625e7e, 396 0x33f14961, 0xc01937bd, 0xf506c6da, 0xe4625e7e,
397 0xa308ea99,0x4e23e33c,0x79cbd7cc,0x48a14367, 397 0xa308ea99, 0x4e23e33c, 0x79cbd7cc, 0x48a14367,
398 0xa3149619,0xfec94bd5,0xa114174a,0xeaa01866, 398 0xa3149619, 0xfec94bd5, 0xa114174a, 0xeaa01866,
399 0xa084db2d,0x09a8486f,0xa888614a,0x2900af98, 399 0xa084db2d, 0x09a8486f, 0xa888614a, 0x2900af98,
400 0x01665991,0xe1992863,0xc8f30c60,0x2e78ef3c, 400 0x01665991, 0xe1992863, 0xc8f30c60, 0x2e78ef3c,
401 0xd0d51932,0xcf0fec14,0xf7ca07d2,0xd0a82072, 401 0xd0d51932, 0xcf0fec14, 0xf7ca07d2, 0xd0a82072,
402 0xfd41197e,0x9305a6b0,0xe86be3da,0x74bed3cd, 402 0xfd41197e, 0x9305a6b0, 0xe86be3da, 0x74bed3cd,
403 0x372da53c,0x4c7f4448,0xdab5d440,0x6dba0ec3, 403 0x372da53c, 0x4c7f4448, 0xdab5d440, 0x6dba0ec3,
404 0x083919a7,0x9fbaeed9,0x49dbcfb0,0x4e670c53, 404 0x083919a7, 0x9fbaeed9, 0x49dbcfb0, 0x4e670c53,
405 0x5c3d9c01,0x64bdb941,0x2c0e636a,0xba7dd9cd, 405 0x5c3d9c01, 0x64bdb941, 0x2c0e636a, 0xba7dd9cd,
406 0xea6f7388,0xe70bc762,0x35f29adb,0x5c4cdd8d, 406 0xea6f7388, 0xe70bc762, 0x35f29adb, 0x5c4cdd8d,
407 0xf0d48d8c,0xb88153e2,0x08a19866,0x1ae2eac8, 407 0xf0d48d8c, 0xb88153e2, 0x08a19866, 0x1ae2eac8,
408 0x284caf89,0xaa928223,0x9334be53,0x3b3a21bf, 408 0x284caf89, 0xaa928223, 0x9334be53, 0x3b3a21bf,
409 0x16434be3,0x9aea3906,0xefe8c36e,0xf890cdd9, 409 0x16434be3, 0x9aea3906, 0xefe8c36e, 0xf890cdd9,
410 0x80226dae,0xc340a4a3,0xdf7e9c09,0xa694a807, 410 0x80226dae, 0xc340a4a3, 0xdf7e9c09, 0xa694a807,
411 0x5b7c5ecc,0x221db3a6,0x9a69a02f,0x68818a54, 411 0x5b7c5ecc, 0x221db3a6, 0x9a69a02f, 0x68818a54,
412 0xceb2296f,0x53c0843a,0xfe893655,0x25bfe68a, 412 0xceb2296f, 0x53c0843a, 0xfe893655, 0x25bfe68a,
413 0xb4628abc,0xcf222ebf,0x25ac6f48,0xa9a99387, 413 0xb4628abc, 0xcf222ebf, 0x25ac6f48, 0xa9a99387,
414 0x53bddb65,0xe76ffbe7,0xe967fd78,0x0ba93563, 414 0x53bddb65, 0xe76ffbe7, 0xe967fd78, 0x0ba93563,
415 0x8e342bc1,0xe8a11be9,0x4980740d,0xc8087dfc, 415 0x8e342bc1, 0xe8a11be9, 0x4980740d, 0xc8087dfc,
416 0x8de4bf99,0xa11101a0,0x7fd37975,0xda5a26c0, 416 0x8de4bf99, 0xa11101a0, 0x7fd37975, 0xda5a26c0,
417 0xe81f994f,0x9528cd89,0xfd339fed,0xb87834bf, 417 0xe81f994f, 0x9528cd89, 0xfd339fed, 0xb87834bf,
418 0x5f04456d,0x22258698,0xc9c4c83b,0x2dc156be, 418 0x5f04456d, 0x22258698, 0xc9c4c83b, 0x2dc156be,
419 0x4f628daa,0x57f55ec5,0xe2220abe,0xd2916ebf, 419 0x4f628daa, 0x57f55ec5, 0xe2220abe, 0xd2916ebf,
420 0x4ec75b95,0x24f2c3c0,0x42d15d99,0xcd0d7fa0, 420 0x4ec75b95, 0x24f2c3c0, 0x42d15d99, 0xcd0d7fa0,
421 0x7b6e27ff,0xa8dc8af0,0x7345c106,0xf41e232f, 421 0x7b6e27ff, 0xa8dc8af0, 0x7345c106, 0xf41e232f,
422 0x35162386,0xe6ea8926,0x3333b094,0x157ec6f2, 422 0x35162386, 0xe6ea8926, 0x3333b094, 0x157ec6f2,
423 0x372b74af,0x692573e4,0xe9a9d848,0xf3160289, 423 0x372b74af, 0x692573e4, 0xe9a9d848, 0xf3160289,
424 0x3a62ef1d,0xa787e238,0xf3a5f676,0x74364853, 424 0x3a62ef1d, 0xa787e238, 0xf3a5f676, 0x74364853,
425 0x20951063,0x4576698d,0xb6fad407,0x592af950, 425 0x20951063, 0x4576698d, 0xb6fad407, 0x592af950,
426 0x36f73523,0x4cfb6e87,0x7da4cec0,0x6c152daa, 426 0x36f73523, 0x4cfb6e87, 0x7da4cec0, 0x6c152daa,
427 0xcb0396a8,0xc50dfe5d,0xfcd707ab,0x0921c42f, 427 0xcb0396a8, 0xc50dfe5d, 0xfcd707ab, 0x0921c42f,
428 0x89dff0bb,0x5fe2be78,0x448f4f33,0x754613c9, 428 0x89dff0bb, 0x5fe2be78, 0x448f4f33, 0x754613c9,
429 0x2b05d08d,0x48b9d585,0xdc049441,0xc8098f9b, 429 0x2b05d08d, 0x48b9d585, 0xdc049441, 0xc8098f9b,
430 0x7dede786,0xc39a3373,0x42410005,0x6a091751, 430 0x7dede786, 0xc39a3373, 0x42410005, 0x6a091751,
431 0x0ef3c8a6,0x890072d6,0x28207682,0xa9a9f7be, 431 0x0ef3c8a6, 0x890072d6, 0x28207682, 0xa9a9f7be,
432 0xbf32679d,0xd45b5b75,0xb353fd00,0xcbb0e358, 432 0xbf32679d, 0xd45b5b75, 0xb353fd00, 0xcbb0e358,
433 0x830f220a,0x1f8fb214,0xd372cf08,0xcc3c4a13, 433 0x830f220a, 0x1f8fb214, 0xd372cf08, 0xcc3c4a13,
434 0x8cf63166,0x061c87be,0x88c98f88,0x6062e397, 434 0x8cf63166, 0x061c87be, 0x88c98f88, 0x6062e397,
435 0x47cf8e7a,0xb6c85283,0x3cc2acfb,0x3fc06976, 435 0x47cf8e7a, 0xb6c85283, 0x3cc2acfb, 0x3fc06976,
436 0x4e8f0252,0x64d8314d,0xda3870e3,0x1e665459, 436 0x4e8f0252, 0x64d8314d, 0xda3870e3, 0x1e665459,
437 0xc10908f0,0x513021a5,0x6c5b68b7,0x822f8aa0, 437 0xc10908f0, 0x513021a5, 0x6c5b68b7, 0x822f8aa0,
438 0x3007cd3e,0x74719eef,0xdc872681,0x073340d4, 438 0x3007cd3e, 0x74719eef, 0xdc872681, 0x073340d4,
439 0x7e432fd9,0x0c5ec241,0x8809286c,0xf592d891, 439 0x7e432fd9, 0x0c5ec241, 0x8809286c, 0xf592d891,
440 0x08a930f6,0x957ef305,0xb7fbffbd,0xc266e96f, 440 0x08a930f6, 0x957ef305, 0xb7fbffbd, 0xc266e96f,
441 0x6fe4ac98,0xb173ecc0,0xbc60b42a,0x953498da, 441 0x6fe4ac98, 0xb173ecc0, 0xbc60b42a, 0x953498da,
442 0xfba1ae12,0x2d4bd736,0x0f25faab,0xa4f3fceb, 442 0xfba1ae12, 0x2d4bd736, 0x0f25faab, 0xa4f3fceb,
443 0xe2969123,0x257f0c3d,0x9348af49,0x361400bc, 443 0xe2969123, 0x257f0c3d, 0x9348af49, 0x361400bc,
444 0xe8816f4a,0x3814f200,0xa3f94043,0x9c7a54c2, 444 0xe8816f4a, 0x3814f200, 0xa3f94043, 0x9c7a54c2,
445 0xbc704f57,0xda41e7f9,0xc25ad33a,0x54f4a084, 445 0xbc704f57, 0xda41e7f9, 0xc25ad33a, 0x54f4a084,
446 0xb17f5505,0x59357cbe,0xedbd15c8,0x7f97c5ab, 446 0xb17f5505, 0x59357cbe, 0xedbd15c8, 0x7f97c5ab,
447 0xba5ac7b5,0xb6f6deaf,0x3a479c3a,0x5302da25, 447 0xba5ac7b5, 0xb6f6deaf, 0x3a479c3a, 0x5302da25,
448 0x653d7e6a,0x54268d49,0x51a477ea,0x5017d55b, 448 0x653d7e6a, 0x54268d49, 0x51a477ea, 0x5017d55b,
449 0xd7d25d88,0x44136c76,0x0404a8c8,0xb8e5a121, 449 0xd7d25d88, 0x44136c76, 0x0404a8c8, 0xb8e5a121,
450 0xb81a928a,0x60ed5869,0x97c55b96,0xeaec991b, 450 0xb81a928a, 0x60ed5869, 0x97c55b96, 0xeaec991b,
451 0x29935913,0x01fdb7f1,0x088e8dfa,0x9ab6f6f5, 451 0x29935913, 0x01fdb7f1, 0x088e8dfa, 0x9ab6f6f5,
452 0x3b4cbf9f,0x4a5de3ab,0xe6051d35,0xa0e1d855, 452 0x3b4cbf9f, 0x4a5de3ab, 0xe6051d35, 0xa0e1d855,
453 0xd36b4cf1,0xf544edeb,0xb0e93524,0xbebb8fbd, 453 0xd36b4cf1, 0xf544edeb, 0xb0e93524, 0xbebb8fbd,
454 0xa2d762cf,0x49c92f54,0x38b5f331,0x7128a454, 454 0xa2d762cf, 0x49c92f54, 0x38b5f331, 0x7128a454,
455 0x48392905,0xa65b1db8,0x851c97bd,0xd675cf2f, 455 0x48392905, 0xa65b1db8, 0x851c97bd, 0xd675cf2f,
456 }; 456};
457const CAST_LONG CAST_S_table6[256]={ 457const CAST_LONG CAST_S_table6[256] = {
458 0x85e04019,0x332bf567,0x662dbfff,0xcfc65693, 458 0x85e04019, 0x332bf567, 0x662dbfff, 0xcfc65693,
459 0x2a8d7f6f,0xab9bc912,0xde6008a1,0x2028da1f, 459 0x2a8d7f6f, 0xab9bc912, 0xde6008a1, 0x2028da1f,
460 0x0227bce7,0x4d642916,0x18fac300,0x50f18b82, 460 0x0227bce7, 0x4d642916, 0x18fac300, 0x50f18b82,
461 0x2cb2cb11,0xb232e75c,0x4b3695f2,0xb28707de, 461 0x2cb2cb11, 0xb232e75c, 0x4b3695f2, 0xb28707de,
462 0xa05fbcf6,0xcd4181e9,0xe150210c,0xe24ef1bd, 462 0xa05fbcf6, 0xcd4181e9, 0xe150210c, 0xe24ef1bd,
463 0xb168c381,0xfde4e789,0x5c79b0d8,0x1e8bfd43, 463 0xb168c381, 0xfde4e789, 0x5c79b0d8, 0x1e8bfd43,
464 0x4d495001,0x38be4341,0x913cee1d,0x92a79c3f, 464 0x4d495001, 0x38be4341, 0x913cee1d, 0x92a79c3f,
465 0x089766be,0xbaeeadf4,0x1286becf,0xb6eacb19, 465 0x089766be, 0xbaeeadf4, 0x1286becf, 0xb6eacb19,
466 0x2660c200,0x7565bde4,0x64241f7a,0x8248dca9, 466 0x2660c200, 0x7565bde4, 0x64241f7a, 0x8248dca9,
467 0xc3b3ad66,0x28136086,0x0bd8dfa8,0x356d1cf2, 467 0xc3b3ad66, 0x28136086, 0x0bd8dfa8, 0x356d1cf2,
468 0x107789be,0xb3b2e9ce,0x0502aa8f,0x0bc0351e, 468 0x107789be, 0xb3b2e9ce, 0x0502aa8f, 0x0bc0351e,
469 0x166bf52a,0xeb12ff82,0xe3486911,0xd34d7516, 469 0x166bf52a, 0xeb12ff82, 0xe3486911, 0xd34d7516,
470 0x4e7b3aff,0x5f43671b,0x9cf6e037,0x4981ac83, 470 0x4e7b3aff, 0x5f43671b, 0x9cf6e037, 0x4981ac83,
471 0x334266ce,0x8c9341b7,0xd0d854c0,0xcb3a6c88, 471 0x334266ce, 0x8c9341b7, 0xd0d854c0, 0xcb3a6c88,
472 0x47bc2829,0x4725ba37,0xa66ad22b,0x7ad61f1e, 472 0x47bc2829, 0x4725ba37, 0xa66ad22b, 0x7ad61f1e,
473 0x0c5cbafa,0x4437f107,0xb6e79962,0x42d2d816, 473 0x0c5cbafa, 0x4437f107, 0xb6e79962, 0x42d2d816,
474 0x0a961288,0xe1a5c06e,0x13749e67,0x72fc081a, 474 0x0a961288, 0xe1a5c06e, 0x13749e67, 0x72fc081a,
475 0xb1d139f7,0xf9583745,0xcf19df58,0xbec3f756, 475 0xb1d139f7, 0xf9583745, 0xcf19df58, 0xbec3f756,
476 0xc06eba30,0x07211b24,0x45c28829,0xc95e317f, 476 0xc06eba30, 0x07211b24, 0x45c28829, 0xc95e317f,
477 0xbc8ec511,0x38bc46e9,0xc6e6fa14,0xbae8584a, 477 0xbc8ec511, 0x38bc46e9, 0xc6e6fa14, 0xbae8584a,
478 0xad4ebc46,0x468f508b,0x7829435f,0xf124183b, 478 0xad4ebc46, 0x468f508b, 0x7829435f, 0xf124183b,
479 0x821dba9f,0xaff60ff4,0xea2c4e6d,0x16e39264, 479 0x821dba9f, 0xaff60ff4, 0xea2c4e6d, 0x16e39264,
480 0x92544a8b,0x009b4fc3,0xaba68ced,0x9ac96f78, 480 0x92544a8b, 0x009b4fc3, 0xaba68ced, 0x9ac96f78,
481 0x06a5b79a,0xb2856e6e,0x1aec3ca9,0xbe838688, 481 0x06a5b79a, 0xb2856e6e, 0x1aec3ca9, 0xbe838688,
482 0x0e0804e9,0x55f1be56,0xe7e5363b,0xb3a1f25d, 482 0x0e0804e9, 0x55f1be56, 0xe7e5363b, 0xb3a1f25d,
483 0xf7debb85,0x61fe033c,0x16746233,0x3c034c28, 483 0xf7debb85, 0x61fe033c, 0x16746233, 0x3c034c28,
484 0xda6d0c74,0x79aac56c,0x3ce4e1ad,0x51f0c802, 484 0xda6d0c74, 0x79aac56c, 0x3ce4e1ad, 0x51f0c802,
485 0x98f8f35a,0x1626a49f,0xeed82b29,0x1d382fe3, 485 0x98f8f35a, 0x1626a49f, 0xeed82b29, 0x1d382fe3,
486 0x0c4fb99a,0xbb325778,0x3ec6d97b,0x6e77a6a9, 486 0x0c4fb99a, 0xbb325778, 0x3ec6d97b, 0x6e77a6a9,
487 0xcb658b5c,0xd45230c7,0x2bd1408b,0x60c03eb7, 487 0xcb658b5c, 0xd45230c7, 0x2bd1408b, 0x60c03eb7,
488 0xb9068d78,0xa33754f4,0xf430c87d,0xc8a71302, 488 0xb9068d78, 0xa33754f4, 0xf430c87d, 0xc8a71302,
489 0xb96d8c32,0xebd4e7be,0xbe8b9d2d,0x7979fb06, 489 0xb96d8c32, 0xebd4e7be, 0xbe8b9d2d, 0x7979fb06,
490 0xe7225308,0x8b75cf77,0x11ef8da4,0xe083c858, 490 0xe7225308, 0x8b75cf77, 0x11ef8da4, 0xe083c858,
491 0x8d6b786f,0x5a6317a6,0xfa5cf7a0,0x5dda0033, 491 0x8d6b786f, 0x5a6317a6, 0xfa5cf7a0, 0x5dda0033,
492 0xf28ebfb0,0xf5b9c310,0xa0eac280,0x08b9767a, 492 0xf28ebfb0, 0xf5b9c310, 0xa0eac280, 0x08b9767a,
493 0xa3d9d2b0,0x79d34217,0x021a718d,0x9ac6336a, 493 0xa3d9d2b0, 0x79d34217, 0x021a718d, 0x9ac6336a,
494 0x2711fd60,0x438050e3,0x069908a8,0x3d7fedc4, 494 0x2711fd60, 0x438050e3, 0x069908a8, 0x3d7fedc4,
495 0x826d2bef,0x4eeb8476,0x488dcf25,0x36c9d566, 495 0x826d2bef, 0x4eeb8476, 0x488dcf25, 0x36c9d566,
496 0x28e74e41,0xc2610aca,0x3d49a9cf,0xbae3b9df, 496 0x28e74e41, 0xc2610aca, 0x3d49a9cf, 0xbae3b9df,
497 0xb65f8de6,0x92aeaf64,0x3ac7d5e6,0x9ea80509, 497 0xb65f8de6, 0x92aeaf64, 0x3ac7d5e6, 0x9ea80509,
498 0xf22b017d,0xa4173f70,0xdd1e16c3,0x15e0d7f9, 498 0xf22b017d, 0xa4173f70, 0xdd1e16c3, 0x15e0d7f9,
499 0x50b1b887,0x2b9f4fd5,0x625aba82,0x6a017962, 499 0x50b1b887, 0x2b9f4fd5, 0x625aba82, 0x6a017962,
500 0x2ec01b9c,0x15488aa9,0xd716e740,0x40055a2c, 500 0x2ec01b9c, 0x15488aa9, 0xd716e740, 0x40055a2c,
501 0x93d29a22,0xe32dbf9a,0x058745b9,0x3453dc1e, 501 0x93d29a22, 0xe32dbf9a, 0x058745b9, 0x3453dc1e,
502 0xd699296e,0x496cff6f,0x1c9f4986,0xdfe2ed07, 502 0xd699296e, 0x496cff6f, 0x1c9f4986, 0xdfe2ed07,
503 0xb87242d1,0x19de7eae,0x053e561a,0x15ad6f8c, 503 0xb87242d1, 0x19de7eae, 0x053e561a, 0x15ad6f8c,
504 0x66626c1c,0x7154c24c,0xea082b2a,0x93eb2939, 504 0x66626c1c, 0x7154c24c, 0xea082b2a, 0x93eb2939,
505 0x17dcb0f0,0x58d4f2ae,0x9ea294fb,0x52cf564c, 505 0x17dcb0f0, 0x58d4f2ae, 0x9ea294fb, 0x52cf564c,
506 0x9883fe66,0x2ec40581,0x763953c3,0x01d6692e, 506 0x9883fe66, 0x2ec40581, 0x763953c3, 0x01d6692e,
507 0xd3a0c108,0xa1e7160e,0xe4f2dfa6,0x693ed285, 507 0xd3a0c108, 0xa1e7160e, 0xe4f2dfa6, 0x693ed285,
508 0x74904698,0x4c2b0edd,0x4f757656,0x5d393378, 508 0x74904698, 0x4c2b0edd, 0x4f757656, 0x5d393378,
509 0xa132234f,0x3d321c5d,0xc3f5e194,0x4b269301, 509 0xa132234f, 0x3d321c5d, 0xc3f5e194, 0x4b269301,
510 0xc79f022f,0x3c997e7e,0x5e4f9504,0x3ffafbbd, 510 0xc79f022f, 0x3c997e7e, 0x5e4f9504, 0x3ffafbbd,
511 0x76f7ad0e,0x296693f4,0x3d1fce6f,0xc61e45be, 511 0x76f7ad0e, 0x296693f4, 0x3d1fce6f, 0xc61e45be,
512 0xd3b5ab34,0xf72bf9b7,0x1b0434c0,0x4e72b567, 512 0xd3b5ab34, 0xf72bf9b7, 0x1b0434c0, 0x4e72b567,
513 0x5592a33d,0xb5229301,0xcfd2a87f,0x60aeb767, 513 0x5592a33d, 0xb5229301, 0xcfd2a87f, 0x60aeb767,
514 0x1814386b,0x30bcc33d,0x38a0c07d,0xfd1606f2, 514 0x1814386b, 0x30bcc33d, 0x38a0c07d, 0xfd1606f2,
515 0xc363519b,0x589dd390,0x5479f8e6,0x1cb8d647, 515 0xc363519b, 0x589dd390, 0x5479f8e6, 0x1cb8d647,
516 0x97fd61a9,0xea7759f4,0x2d57539d,0x569a58cf, 516 0x97fd61a9, 0xea7759f4, 0x2d57539d, 0x569a58cf,
517 0xe84e63ad,0x462e1b78,0x6580f87e,0xf3817914, 517 0xe84e63ad, 0x462e1b78, 0x6580f87e, 0xf3817914,
518 0x91da55f4,0x40a230f3,0xd1988f35,0xb6e318d2, 518 0x91da55f4, 0x40a230f3, 0xd1988f35, 0xb6e318d2,
519 0x3ffa50bc,0x3d40f021,0xc3c0bdae,0x4958c24c, 519 0x3ffa50bc, 0x3d40f021, 0xc3c0bdae, 0x4958c24c,
520 0x518f36b2,0x84b1d370,0x0fedce83,0x878ddada, 520 0x518f36b2, 0x84b1d370, 0x0fedce83, 0x878ddada,
521 0xf2a279c7,0x94e01be8,0x90716f4b,0x954b8aa3, 521 0xf2a279c7, 0x94e01be8, 0x90716f4b, 0x954b8aa3,
522 }; 522};
523const CAST_LONG CAST_S_table7[256]={ 523const CAST_LONG CAST_S_table7[256] = {
524 0xe216300d,0xbbddfffc,0xa7ebdabd,0x35648095, 524 0xe216300d, 0xbbddfffc, 0xa7ebdabd, 0x35648095,
525 0x7789f8b7,0xe6c1121b,0x0e241600,0x052ce8b5, 525 0x7789f8b7, 0xe6c1121b, 0x0e241600, 0x052ce8b5,
526 0x11a9cfb0,0xe5952f11,0xece7990a,0x9386d174, 526 0x11a9cfb0, 0xe5952f11, 0xece7990a, 0x9386d174,
527 0x2a42931c,0x76e38111,0xb12def3a,0x37ddddfc, 527 0x2a42931c, 0x76e38111, 0xb12def3a, 0x37ddddfc,
528 0xde9adeb1,0x0a0cc32c,0xbe197029,0x84a00940, 528 0xde9adeb1, 0x0a0cc32c, 0xbe197029, 0x84a00940,
529 0xbb243a0f,0xb4d137cf,0xb44e79f0,0x049eedfd, 529 0xbb243a0f, 0xb4d137cf, 0xb44e79f0, 0x049eedfd,
530 0x0b15a15d,0x480d3168,0x8bbbde5a,0x669ded42, 530 0x0b15a15d, 0x480d3168, 0x8bbbde5a, 0x669ded42,
531 0xc7ece831,0x3f8f95e7,0x72df191b,0x7580330d, 531 0xc7ece831, 0x3f8f95e7, 0x72df191b, 0x7580330d,
532 0x94074251,0x5c7dcdfa,0xabbe6d63,0xaa402164, 532 0x94074251, 0x5c7dcdfa, 0xabbe6d63, 0xaa402164,
533 0xb301d40a,0x02e7d1ca,0x53571dae,0x7a3182a2, 533 0xb301d40a, 0x02e7d1ca, 0x53571dae, 0x7a3182a2,
534 0x12a8ddec,0xfdaa335d,0x176f43e8,0x71fb46d4, 534 0x12a8ddec, 0xfdaa335d, 0x176f43e8, 0x71fb46d4,
535 0x38129022,0xce949ad4,0xb84769ad,0x965bd862, 535 0x38129022, 0xce949ad4, 0xb84769ad, 0x965bd862,
536 0x82f3d055,0x66fb9767,0x15b80b4e,0x1d5b47a0, 536 0x82f3d055, 0x66fb9767, 0x15b80b4e, 0x1d5b47a0,
537 0x4cfde06f,0xc28ec4b8,0x57e8726e,0x647a78fc, 537 0x4cfde06f, 0xc28ec4b8, 0x57e8726e, 0x647a78fc,
538 0x99865d44,0x608bd593,0x6c200e03,0x39dc5ff6, 538 0x99865d44, 0x608bd593, 0x6c200e03, 0x39dc5ff6,
539 0x5d0b00a3,0xae63aff2,0x7e8bd632,0x70108c0c, 539 0x5d0b00a3, 0xae63aff2, 0x7e8bd632, 0x70108c0c,
540 0xbbd35049,0x2998df04,0x980cf42a,0x9b6df491, 540 0xbbd35049, 0x2998df04, 0x980cf42a, 0x9b6df491,
541 0x9e7edd53,0x06918548,0x58cb7e07,0x3b74ef2e, 541 0x9e7edd53, 0x06918548, 0x58cb7e07, 0x3b74ef2e,
542 0x522fffb1,0xd24708cc,0x1c7e27cd,0xa4eb215b, 542 0x522fffb1, 0xd24708cc, 0x1c7e27cd, 0xa4eb215b,
543 0x3cf1d2e2,0x19b47a38,0x424f7618,0x35856039, 543 0x3cf1d2e2, 0x19b47a38, 0x424f7618, 0x35856039,
544 0x9d17dee7,0x27eb35e6,0xc9aff67b,0x36baf5b8, 544 0x9d17dee7, 0x27eb35e6, 0xc9aff67b, 0x36baf5b8,
545 0x09c467cd,0xc18910b1,0xe11dbf7b,0x06cd1af8, 545 0x09c467cd, 0xc18910b1, 0xe11dbf7b, 0x06cd1af8,
546 0x7170c608,0x2d5e3354,0xd4de495a,0x64c6d006, 546 0x7170c608, 0x2d5e3354, 0xd4de495a, 0x64c6d006,
547 0xbcc0c62c,0x3dd00db3,0x708f8f34,0x77d51b42, 547 0xbcc0c62c, 0x3dd00db3, 0x708f8f34, 0x77d51b42,
548 0x264f620f,0x24b8d2bf,0x15c1b79e,0x46a52564, 548 0x264f620f, 0x24b8d2bf, 0x15c1b79e, 0x46a52564,
549 0xf8d7e54e,0x3e378160,0x7895cda5,0x859c15a5, 549 0xf8d7e54e, 0x3e378160, 0x7895cda5, 0x859c15a5,
550 0xe6459788,0xc37bc75f,0xdb07ba0c,0x0676a3ab, 550 0xe6459788, 0xc37bc75f, 0xdb07ba0c, 0x0676a3ab,
551 0x7f229b1e,0x31842e7b,0x24259fd7,0xf8bef472, 551 0x7f229b1e, 0x31842e7b, 0x24259fd7, 0xf8bef472,
552 0x835ffcb8,0x6df4c1f2,0x96f5b195,0xfd0af0fc, 552 0x835ffcb8, 0x6df4c1f2, 0x96f5b195, 0xfd0af0fc,
553 0xb0fe134c,0xe2506d3d,0x4f9b12ea,0xf215f225, 553 0xb0fe134c, 0xe2506d3d, 0x4f9b12ea, 0xf215f225,
554 0xa223736f,0x9fb4c428,0x25d04979,0x34c713f8, 554 0xa223736f, 0x9fb4c428, 0x25d04979, 0x34c713f8,
555 0xc4618187,0xea7a6e98,0x7cd16efc,0x1436876c, 555 0xc4618187, 0xea7a6e98, 0x7cd16efc, 0x1436876c,
556 0xf1544107,0xbedeee14,0x56e9af27,0xa04aa441, 556 0xf1544107, 0xbedeee14, 0x56e9af27, 0xa04aa441,
557 0x3cf7c899,0x92ecbae6,0xdd67016d,0x151682eb, 557 0x3cf7c899, 0x92ecbae6, 0xdd67016d, 0x151682eb,
558 0xa842eedf,0xfdba60b4,0xf1907b75,0x20e3030f, 558 0xa842eedf, 0xfdba60b4, 0xf1907b75, 0x20e3030f,
559 0x24d8c29e,0xe139673b,0xefa63fb8,0x71873054, 559 0x24d8c29e, 0xe139673b, 0xefa63fb8, 0x71873054,
560 0xb6f2cf3b,0x9f326442,0xcb15a4cc,0xb01a4504, 560 0xb6f2cf3b, 0x9f326442, 0xcb15a4cc, 0xb01a4504,
561 0xf1e47d8d,0x844a1be5,0xbae7dfdc,0x42cbda70, 561 0xf1e47d8d, 0x844a1be5, 0xbae7dfdc, 0x42cbda70,
562 0xcd7dae0a,0x57e85b7a,0xd53f5af6,0x20cf4d8c, 562 0xcd7dae0a, 0x57e85b7a, 0xd53f5af6, 0x20cf4d8c,
563 0xcea4d428,0x79d130a4,0x3486ebfb,0x33d3cddc, 563 0xcea4d428, 0x79d130a4, 0x3486ebfb, 0x33d3cddc,
564 0x77853b53,0x37effcb5,0xc5068778,0xe580b3e6, 564 0x77853b53, 0x37effcb5, 0xc5068778, 0xe580b3e6,
565 0x4e68b8f4,0xc5c8b37e,0x0d809ea2,0x398feb7c, 565 0x4e68b8f4, 0xc5c8b37e, 0x0d809ea2, 0x398feb7c,
566 0x132a4f94,0x43b7950e,0x2fee7d1c,0x223613bd, 566 0x132a4f94, 0x43b7950e, 0x2fee7d1c, 0x223613bd,
567 0xdd06caa2,0x37df932b,0xc4248289,0xacf3ebc3, 567 0xdd06caa2, 0x37df932b, 0xc4248289, 0xacf3ebc3,
568 0x5715f6b7,0xef3478dd,0xf267616f,0xc148cbe4, 568 0x5715f6b7, 0xef3478dd, 0xf267616f, 0xc148cbe4,
569 0x9052815e,0x5e410fab,0xb48a2465,0x2eda7fa4, 569 0x9052815e, 0x5e410fab, 0xb48a2465, 0x2eda7fa4,
570 0xe87b40e4,0xe98ea084,0x5889e9e1,0xefd390fc, 570 0xe87b40e4, 0xe98ea084, 0x5889e9e1, 0xefd390fc,
571 0xdd07d35b,0xdb485694,0x38d7e5b2,0x57720101, 571 0xdd07d35b, 0xdb485694, 0x38d7e5b2, 0x57720101,
572 0x730edebc,0x5b643113,0x94917e4f,0x503c2fba, 572 0x730edebc, 0x5b643113, 0x94917e4f, 0x503c2fba,
573 0x646f1282,0x7523d24a,0xe0779695,0xf9c17a8f, 573 0x646f1282, 0x7523d24a, 0xe0779695, 0xf9c17a8f,
574 0x7a5b2121,0xd187b896,0x29263a4d,0xba510cdf, 574 0x7a5b2121, 0xd187b896, 0x29263a4d, 0xba510cdf,
575 0x81f47c9f,0xad1163ed,0xea7b5965,0x1a00726e, 575 0x81f47c9f, 0xad1163ed, 0xea7b5965, 0x1a00726e,
576 0x11403092,0x00da6d77,0x4a0cdd61,0xad1f4603, 576 0x11403092, 0x00da6d77, 0x4a0cdd61, 0xad1f4603,
577 0x605bdfb0,0x9eedc364,0x22ebe6a8,0xcee7d28a, 577 0x605bdfb0, 0x9eedc364, 0x22ebe6a8, 0xcee7d28a,
578 0xa0e736a0,0x5564a6b9,0x10853209,0xc7eb8f37, 578 0xa0e736a0, 0x5564a6b9, 0x10853209, 0xc7eb8f37,
579 0x2de705ca,0x8951570f,0xdf09822b,0xbd691a6c, 579 0x2de705ca, 0x8951570f, 0xdf09822b, 0xbd691a6c,
580 0xaa12e4f2,0x87451c0f,0xe0f6a27a,0x3ada4819, 580 0xaa12e4f2, 0x87451c0f, 0xe0f6a27a, 0x3ada4819,
581 0x4cf1764f,0x0d771c2b,0x67cdb156,0x350d8384, 581 0x4cf1764f, 0x0d771c2b, 0x67cdb156, 0x350d8384,
582 0x5938fa0f,0x42399ef3,0x36997b07,0x0e84093d, 582 0x5938fa0f, 0x42399ef3, 0x36997b07, 0x0e84093d,
583 0x4aa93e61,0x8360d87b,0x1fa98b0c,0x1149382c, 583 0x4aa93e61, 0x8360d87b, 0x1fa98b0c, 0x1149382c,
584 0xe97625a5,0x0614d1b7,0x0e25244b,0x0c768347, 584 0xe97625a5, 0x0614d1b7, 0x0e25244b, 0x0c768347,
585 0x589e8d82,0x0d2059d1,0xa466bb1e,0xf8da0a82, 585 0x589e8d82, 0x0d2059d1, 0xa466bb1e, 0xf8da0a82,
586 0x04f19130,0xba6e4ec0,0x99265164,0x1ee7230d, 586 0x04f19130, 0xba6e4ec0, 0x99265164, 0x1ee7230d,
587 0x50b2ad80,0xeaee6801,0x8db2a283,0xea8bf59e, 587 0x50b2ad80, 0xeaee6801, 0x8db2a283, 0xea8bf59e,
588 }; 588};
589 589
590__END_HIDDEN_DECLS 590__END_HIDDEN_DECLS