1656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* crypto/des/des_opts.c */
2656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * All rights reserved.
4656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
5656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This package is an SSL implementation written
6656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * by Eric Young (eay@cryptsoft.com).
7656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The implementation was written so as to conform with Netscapes SSL.
8656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
9656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This library is free for commercial and non-commercial use as long as
10656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the following conditions are aheared to.  The following conditions
11656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * apply to all code found in this distribution, be it the RC4, RSA,
12656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * lhash, DES, etc., code; not just the SSL code.  The SSL documentation
13656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * included with this distribution is covered by the same copyright terms
14656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
16656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Copyright remains Eric Young's, and as such any Copyright notices in
17656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * the code are not to be removed.
18656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * If this package is used in a product, Eric Young should be given attribution
19656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * as the author of the parts of the library used.
20656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This can be in the form of a textual message at program startup or
21656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * in documentation (online or textual) provided with the package.
22656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
23656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * Redistribution and use in source and binary forms, with or without
24656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * modification, are permitted provided that the following conditions
25656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * are met:
26656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 1. Redistributions of source code must retain the copyright
27656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer.
28656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 2. Redistributions in binary form must reproduce the above copyright
29656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    notice, this list of conditions and the following disclaimer in the
30656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    documentation and/or other materials provided with the distribution.
31656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 3. All advertising materials mentioning features or use of this software
32656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    must display the following acknowledgement:
33656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes cryptographic software written by
34656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *     Eric Young (eay@cryptsoft.com)"
35656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    The word 'cryptographic' can be left out if the rouines from the library
36656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    being used are not cryptographic related :-).
37656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * 4. If you include any Windows specific code (or a derivative thereof) from
38656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    the apps directory (application code) you must include an acknowledgement:
39656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *    "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
41656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
49656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
50656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
51656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * SUCH DAMAGE.
52656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project *
53656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * The licence and distribution terms for any publically available version or
54656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * derivative of this code cannot be changed.  i.e. this code cannot simply be
55656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * copied and put under another distribution licence
56656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * [including the GNU Public Licence.]
57656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project */
58656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
59656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* define PART1, PART2, PART3 or PART4 to build only with a few of the options.
60656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project * This is for machines with 64k code segment size restrictions. */
61656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
62656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(OPENSSL_SYS_MSDOS) && (!defined(OPENSSL_SYS_VMS) || defined(__DECC)) && !defined(OPENSSL_SYS_MACOSX)
63656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define TIMES
64656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
65656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
66656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <stdio.h>
67656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_SYS_MSDOS
68656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/e_os2.h>
69656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include OPENSSL_UNISTD
70656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
71656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <io.h>
72656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectextern void exit();
73656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
74656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
75656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef OPENSSL_SYS_NETWARE
76656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <signal.h>
77656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
78656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
79656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef _IRIX
80656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <time.h>
81656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
82656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef TIMES
83656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/types.h>
84656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/times.h>
85656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
86656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
87656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* Depending on the VMS version, the tms structure is perhaps defined.
88656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   The __TMS macro will show if it was.  If it wasn't defined, we should
89656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   undefine TIMES, since that tells the rest of the program how things
90656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project   should be handled.				-- Richard Levitte */
91656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(OPENSSL_SYS_VMS_DECC) && !defined(__TMS)
92656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef TIMES
93656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
94656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
95656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef TIMES
96656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/timeb.h>
97656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
98656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
99656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
100656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(sun) || defined(__ultrix)
101656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define _POSIX_SOURCE
102656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <limits.h>
103656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <sys/param.h>
104656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
105656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
106656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include <openssl/des.h>
107656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "spr.h"
108656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
109656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_DEFAULT_OPTIONS
110656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
111656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if !defined(PART1) && !defined(PART2) && !defined(PART3) && !defined(PART4)
112656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PART1
113656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PART2
114656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PART3
115656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define PART4
116656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
117656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
118656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART1
119656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
120656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_UNROLL
121656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC1
122656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC2
123656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_PTR
124656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
125656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u4_cisc_idx
126656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u4_cisc_idx
127656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u4_cisc_idx
128656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u4_cisc_idx
129656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
130656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
131656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
132656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_UNROLL
133656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC1
134656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC2
135656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_PTR
136656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
137656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
138656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
139656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
140656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
141656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u16_cisc_idx
142656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u16_cisc_idx
143656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u16_cisc_idx
144656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u16_cisc_idx
145656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
146656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
147656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
148656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_UNROLL
149656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_RISC1
150656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC2
151656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_PTR
152656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
153656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
154656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
155656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
156656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
157656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u4_risc1_idx
158656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u4_risc1_idx
159656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u4_risc1_idx
160656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u4_risc1_idx
161656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
162656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
163656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
164656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
165656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
166656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART2
167656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
168656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_UNROLL
169656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC1
170656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_RISC2
171656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_PTR
172656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
173656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
174656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
175656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
176656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
177656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u4_risc2_idx
178656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u4_risc2_idx
179656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u4_risc2_idx
180656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u4_risc2_idx
181656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
182656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
183656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
184656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_UNROLL
185656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_RISC1
186656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC2
187656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_PTR
188656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
189656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
190656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
191656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
192656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
193656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u16_risc1_idx
194656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u16_risc1_idx
195656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u16_risc1_idx
196656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u16_risc1_idx
197656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
198656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
199656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
200656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_UNROLL
201656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC1
202656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_RISC2
203656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_PTR
204656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
205656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
206656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
207656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
208656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
209656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u16_risc2_idx
210656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u16_risc2_idx
211656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u16_risc2_idx
212656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u16_risc2_idx
213656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
214656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
215656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
216656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
217656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
218656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART3
219656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
220656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_UNROLL
221656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC1
222656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC2
223656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_PTR
224656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
225656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
226656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
227656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
228656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
229656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u4_cisc_ptr
230656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u4_cisc_ptr
231656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u4_cisc_ptr
232656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u4_cisc_ptr
233656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
234656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
235656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
236656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_UNROLL
237656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC1
238656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC2
239656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_PTR
240656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
241656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
242656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
243656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
244656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
245656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u16_cisc_ptr
246656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u16_cisc_ptr
247656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u16_cisc_ptr
248656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u16_cisc_ptr
249656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
250656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
251656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
252656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_UNROLL
253656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_RISC1
254656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC2
255656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_PTR
256656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
257656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
258656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
259656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
260656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
261656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u4_risc1_ptr
262656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u4_risc1_ptr
263656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u4_risc1_ptr
264656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u4_risc1_ptr
265656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
266656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
267656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
268656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
269656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
270656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART4
271656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
272656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_UNROLL
273656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC1
274656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_RISC2
275656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_PTR
276656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
277656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
278656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
279656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
280656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
281656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u4_risc2_ptr
282656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u4_risc2_ptr
283656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u4_risc2_ptr
284656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u4_risc2_ptr
285656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
286656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
287656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
288656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_UNROLL
289656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_RISC1
290656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC2
291656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_PTR
292656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
293656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
294656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
295656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
296656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
297656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u16_risc1_ptr
298656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u16_risc1_ptr
299656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u16_risc1_ptr
300656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u16_risc1_ptr
301656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
302656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
303656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
304656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_UNROLL
305656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_RISC1
306656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_RISC2
307656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_PTR
308656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef D_ENCRYPT
309656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt1
310656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt2
311656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_encrypt3
312656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef DES_decrypt3
313656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt1 des_encrypt_u16_risc2_ptr
314656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt2 des_encrypt2_u16_risc2_ptr
315656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_encrypt3 des_encrypt3_u16_risc2_ptr
316656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define DES_decrypt3 des_decrypt3_u16_risc2_ptr
317656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#undef HEADER_DES_LOCL_H
318656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#include "des_enc.c"
319656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
320656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
321656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
322656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project/* The following if from times(3) man page.  It may need to be changed */
323656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef HZ
324656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# ifndef CLK_TCK
325656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  ifndef _BSD_CLK_TCK_ /* FreeBSD fix */
326656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#   define HZ	100.0
327656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  else /* _BSD_CLK_TCK_ */
328656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#   define HZ ((double)_BSD_CLK_TCK_)
329656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  endif
330656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# else /* CLK_TCK */
331656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#  define HZ ((double)CLK_TCK)
332656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project# endif
333656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
334656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
335656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define BUFSIZE	((long)1024)
336656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectlong run=0;
337656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
338656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdouble Time_F(int s);
339656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef SIGALRM
340656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(__STDC__) || defined(sgi)
341656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define SIGRETTYPE void
342656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
343656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define SIGRETTYPE int
344656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
345656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
346656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSIGRETTYPE sig_done(int sig);
347656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source ProjectSIGRETTYPE sig_done(int sig)
348656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
349656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	signal(SIGALRM,sig_done);
350656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	run=0;
351656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef LINT
352656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	sig=sig;
353656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
354656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
355656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
356656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
357656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define START	0
358656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define STOP	1
359656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
360656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectdouble Time_F(int s)
361656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
362656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	double ret;
363656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef TIMES
364656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static struct tms tstart,tend;
365656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
366656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s == START)
367656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
368656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		times(&tstart);
369656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
370656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
371656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
372656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
373656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		times(&tend);
374656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=((double)(tend.tms_utime-tstart.tms_utime))/HZ;
375656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return((ret == 0.0)?1e-6:ret);
376656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
377656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else /* !times() */
378656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static struct timeb tstart,tend;
379656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long i;
380656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
381656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (s == START)
382656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
383656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ftime(&tstart);
384656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return(0);
385656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
386656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	else
387656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
388656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ftime(&tend);
389656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		i=(long)tend.millitm-(long)tstart.millitm;
390656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		ret=((double)(tend.time-tstart.time))+((double)i)/1000.0;
391656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		return((ret == 0.0)?1e-6:ret);
392656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
393656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
394656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
395656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
396656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef SIGALRM
397656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define print_name(name) fprintf(stderr,"Doing %s's for 10 seconds\n",name); alarm(10);
398656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
399656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define print_name(name) fprintf(stderr,"Doing %s %ld times\n",name,cb);
400656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
401656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
402656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define time_it(func,name,index) \
403656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_name(name); \
404656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	Time_F(START); \
405656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (count=0,run=1; COND(cb); count++) \
406656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{ \
407656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		unsigned long d[2]; \
408656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		func(d,&sch,DES_ENCRYPT); \
409656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		} \
410656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tm[index]=Time_F(STOP); \
411656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"%ld %s's in %.2f second\n",count,name,tm[index]); \
412656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tm[index]=((double)COUNT(cb))/tm[index];
413656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
414656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define print_it(name,index) \
415656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"%s bytes per sec = %12.2f (%5.1fuS)\n",name, \
416656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		tm[index]*8,1.0e6/tm[index]);
417656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
418656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Projectint main(int argc, char **argv)
419656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	{
420656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long count;
421656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static unsigned char buf[BUFSIZE];
422656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static DES_cblock key ={0x12,0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0};
423656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static DES_cblock key2={0x34,0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12};
424656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	static DES_cblock key3={0x56,0x78,0x9a,0xbc,0xde,0xf0,0x12,0x34};
425656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_key_schedule sch,sch2,sch3;
426656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	double d,tm[16],max=0;
427656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int rank[16];
428656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	char *str[16];
429656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	int max_idx=0,i,num=0,j;
430656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef SIGALARM
431656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	long ca,cb,cc,cd,ce;
432656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
433656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
434656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (i=0; i<12; i++)
435656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
436656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		tm[i]=0.0;
437656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		rank[i]=0;
438656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
439656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
440656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef TIMES
441656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"To get the most accurate results, try to run this\n");
442656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"program when this computer is idle.\n");
443656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
444656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
445656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_unchecked(&key,&sch);
446656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_unchecked(&key2,&sch2);
447656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_unchecked(&key3,&sch3);
448656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
449656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifndef SIGALRM
450656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	fprintf(stderr,"First we calculate the approximate speed ...\n");
451656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	DES_set_key_unchecked(&key,sch);
452656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	count=10;
453656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	do	{
454656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		long i;
455656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		unsigned long data[2];
456656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
457656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		count*=2;
458656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		Time_F(START);
459656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=count; i; i--)
460656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			DES_encrypt1(data,&(sch[0]),DES_ENCRYPT);
461656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		d=Time_F(STOP);
462656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		} while (d < 3.0);
463656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ca=count;
464656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cb=count*3;
465656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cc=count*3*8/BUFSIZE+1;
466656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	cd=count*8/BUFSIZE+1;
467656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
468656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	ce=count/20+1;
469656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COND(d) (count != (d))
470656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COUNT(d) (d)
471656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#else
472656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COND(c) (run)
473656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#define COUNT(d) (count)
474656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        signal(SIGALRM,sig_done);
475656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project        alarm(10);
476656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
477656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
478656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART1
479656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u4_cisc_idx,  "des_encrypt_u4_cisc_idx  ", 0);
480656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u16_cisc_idx, "des_encrypt_u16_cisc_idx ", 1);
481656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u4_risc1_idx, "des_encrypt_u4_risc1_idx ", 2);
482656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num+=3;
483656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
484656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART2
485656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u16_risc1_idx,"des_encrypt_u16_risc1_idx", 3);
486656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u4_risc2_idx, "des_encrypt_u4_risc2_idx ", 4);
487656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u16_risc2_idx,"des_encrypt_u16_risc2_idx", 5);
488656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num+=3;
489656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
490656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART3
491656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u4_cisc_ptr,  "des_encrypt_u4_cisc_ptr  ", 6);
492656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u16_cisc_ptr, "des_encrypt_u16_cisc_ptr ", 7);
493656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u4_risc1_ptr, "des_encrypt_u4_risc1_ptr ", 8);
494656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num+=3;
495656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
496656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART4
497656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u16_risc1_ptr,"des_encrypt_u16_risc1_ptr", 9);
498656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u4_risc2_ptr, "des_encrypt_u4_risc2_ptr ",10);
499656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	time_it(des_encrypt_u16_risc2_ptr,"des_encrypt_u16_risc2_ptr",11);
500656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	num+=3;
501656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
502656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
503656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART1
504656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[0]=" 4  c i";
505656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u4_cisc_idx  ",0);
506656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	max=tm[0];
507656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	max_idx=0;
508656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[1]="16  c i";
509656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u16_cisc_idx ",1);
510656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[1]) { max=tm[1]; max_idx=1; }
511656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[2]=" 4 r1 i";
512656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u4_risc1_idx ",2);
513656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[2]) { max=tm[2]; max_idx=2; }
514656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
515656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART2
516656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[3]="16 r1 i";
517656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u16_risc1_idx",3);
518656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[3]) { max=tm[3]; max_idx=3; }
519656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[4]=" 4 r2 i";
520656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u4_risc2_idx ",4);
521656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[4]) { max=tm[4]; max_idx=4; }
522656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[5]="16 r2 i";
523656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u16_risc2_idx",5);
524656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[5]) { max=tm[5]; max_idx=5; }
525656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
526656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART3
527656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[6]=" 4  c p";
528656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u4_cisc_ptr  ",6);
529656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[6]) { max=tm[6]; max_idx=6; }
530656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[7]="16  c p";
531656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u16_cisc_ptr ",7);
532656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[7]) { max=tm[7]; max_idx=7; }
533656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[8]=" 4 r1 p";
534656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u4_risc1_ptr ",8);
535656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[8]) { max=tm[8]; max_idx=8; }
536656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
537656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#ifdef PART4
538656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[9]="16 r1 p";
539656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u16_risc1_ptr",9);
540656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[9]) { max=tm[9]; max_idx=9; }
541656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[10]=" 4 r2 p";
542656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u4_risc2_ptr ",10);
543656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[10]) { max=tm[10]; max_idx=10; }
544656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	str[11]="16 r2 p";
545656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	print_it("des_encrypt_u16_risc2_ptr",11);
546656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	if (max < tm[11]) { max=tm[11]; max_idx=11; }
547656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
548656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("options    des ecb/s\n");
549656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	printf("%s %12.2f 100.0%%\n",str[max_idx],tm[max_idx]);
550656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	d=tm[max_idx];
551656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	tm[max_idx]= -2.0;
552656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	max= -1.0;
553656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	for (;;)
554656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
555656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		for (i=0; i<12; i++)
556656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			{
557656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			if (max < tm[i]) { max=tm[i]; j=i; }
558656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project			}
559656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		if (max < 0.0) break;
560656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("%s %12.2f  %4.1f%%\n",str[j],tm[j],tm[j]/d*100.0);
561656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		tm[j]= -2.0;
562656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		max= -1.0;
563656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
564656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project
565656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	switch (max_idx)
566656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		{
567656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 0:
568656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_DEFAULT_OPTIONS\n");
569656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
570656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 1:
571656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_UNROLL\n");
572656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
573656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 2:
574656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_RISC1\n");
575656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
576656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 3:
577656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_UNROLL -DDES_RISC1\n");
578656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
579656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 4:
580656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_RISC2\n");
581656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
582656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 5:
583656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_UNROLL -DDES_RISC2\n");
584656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
585656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 6:
586656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_PTR\n");
587656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
588656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 7:
589656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_UNROLL -DDES_PTR\n");
590656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
591656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 8:
592656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_RISC1 -DDES_PTR\n");
593656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
594656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 9:
595656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_UNROLL -DDES_RISC1 -DDES_PTR\n");
596656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
597656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 10:
598656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_RISC2 -DDES_PTR\n");
599656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
600656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	case 11:
601656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		printf("-DDES_UNROLL -DDES_RISC2 -DDES_PTR\n");
602656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		break;
603656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project		}
604656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	exit(0);
605656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#if defined(LINT) || defined(OPENSSL_SYS_MSDOS)
606656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	return(0);
607656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project#endif
608656d9c7f52f88b3a3daccafa7655dec086c4756eThe Android Open Source Project	}
609