Bug Summary

File:src/lib/libcrypto/idea/i_cbc.c
Warning:line 136, column 39
Although the value stored to 'xor1' is used in the enclosing expression, the value is never actually read from 'xor1'

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple amd64-unknown-openbsd7.4 -analyze -disable-free -clear-ast-before-backend -disable-llvm-verifier -discard-value-names -main-file-name i_cbc.c -analyzer-checker=core -analyzer-checker=apiModeling -analyzer-checker=unix -analyzer-checker=deadcode -analyzer-checker=security.insecureAPI.UncheckedReturn -analyzer-checker=security.insecureAPI.getpw -analyzer-checker=security.insecureAPI.gets -analyzer-checker=security.insecureAPI.mktemp -analyzer-checker=security.insecureAPI.mkstemp -analyzer-checker=security.insecureAPI.vfork -analyzer-checker=nullability.NullPassedToNonnull -analyzer-checker=nullability.NullReturnedFromNonnull -analyzer-output plist -w -setup-static-analyzer -mrelocation-model pic -pic-level 1 -pic-is-pie -mframe-pointer=all -relaxed-aliasing -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -target-feature +retpoline-indirect-calls -target-feature +retpoline-indirect-branches -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/usr/src/lib/libcrypto/obj -resource-dir /usr/local/llvm16/lib/clang/16 -D LIBRESSL_INTERNAL -D HAVE_FUNOPEN -I /usr/src/lib/libcrypto -I /usr/src/lib/libcrypto/arch/amd64 -I /usr/src/lib/libcrypto/asn1 -I /usr/src/lib/libcrypto/bio -I /usr/src/lib/libcrypto/bn -I /usr/src/lib/libcrypto/bn/arch/amd64 -I /usr/src/lib/libcrypto/bytestring -I /usr/src/lib/libcrypto/curve25519 -I /usr/src/lib/libcrypto/dh -I /usr/src/lib/libcrypto/dsa -I /usr/src/lib/libcrypto/ec -I /usr/src/lib/libcrypto/ecdsa -I /usr/src/lib/libcrypto/evp -I /usr/src/lib/libcrypto/hidden -I /usr/src/lib/libcrypto/hmac -I /usr/src/lib/libcrypto/kdf -I /usr/src/lib/libcrypto/modes -I /usr/src/lib/libcrypto/ocsp -I /usr/src/lib/libcrypto/pkcs12 -I /usr/src/lib/libcrypto/rsa -I /usr/src/lib/libcrypto/sha -I /usr/src/lib/libcrypto/ts -I /usr/src/lib/libcrypto/x509 -I /usr/src/lib/libcrypto/obj -D AES_ASM -D BSAES_ASM -D VPAES_ASM -D OPENSSL_IA32_SSE2 -D RSA_ASM -D OPENSSL_BN_ASM_MONT -D OPENSSL_BN_ASM_MONT5 -D MD5_ASM -D GHASH_ASM -D RC4_MD5_ASM -D SHA1_ASM -D SHA256_ASM -D SHA512_ASM -D WHIRLPOOL_ASM -D OPENSSL_CPUID_OBJ -internal-isystem /usr/local/llvm16/lib/clang/16/include -internal-externc-isystem /usr/include -O2 -fdebug-compilation-dir=/usr/src/lib/libcrypto/obj -ferror-limit 19 -fwrapv -D_RET_PROTECTOR -ret-protector -fcf-protection=branch -fno-jump-tables -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -fno-builtin-malloc -fno-builtin-calloc -fno-builtin-realloc -fno-builtin-valloc -fno-builtin-free -fno-builtin-strdup -fno-builtin-strndup -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /home/ben/Projects/scan/2024-01-11-140451-98009-1 -x c /usr/src/lib/libcrypto/idea/i_cbc.c
1/* $OpenBSD: i_cbc.c,v 1.6 2023/07/08 10:44:00 beck Exp $ */
2/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
3 * All rights reserved.
4 *
5 * This package is an SSL implementation written
6 * by Eric Young (eay@cryptsoft.com).
7 * The implementation was written so as to conform with Netscapes SSL.
8 *
9 * This library is free for commercial and non-commercial use as long as
10 * the following conditions are aheared to. The following conditions
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
13 * included with this distribution is covered by the same copyright terms
14 * except that the holder is Tim Hudson (tjh@cryptsoft.com).
15 *
16 * Copyright remains Eric Young's, and as such any Copyright notices in
17 * the code are not to be removed.
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.
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.
22 *
23 * Redistribution and use in source and binary forms, with or without
24 * modification, are permitted provided that the following conditions
25 * are met:
26 * 1. Redistributions of source code must retain the copyright
27 * notice, this list of conditions and the following disclaimer.
28 * 2. Redistributions in binary form must reproduce the above copyright
29 * notice, this list of conditions and the following disclaimer in the
30 * documentation and/or other materials provided with the distribution.
31 * 3. All advertising materials mentioning features or use of this software
32 * must display the following acknowledgement:
33 * "This product includes cryptographic software written by
34 * Eric Young (eay@cryptsoft.com)"
35 * The word 'cryptographic' can be left out if the rouines from the library
36 * being used are not cryptographic related :-).
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:
39 * "This product includes software written by Tim Hudson (tjh@cryptsoft.com)"
40 *
41 * THIS SOFTWARE IS PROVIDED BY ERIC YOUNG ``AS IS'' AND
42 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
43 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
44 * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
45 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
46 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
47 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
48 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
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
51 * SUCH DAMAGE.
52 *
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
55 * copied and put under another distribution licence
56 * [including the GNU Public Licence.]
57 */
58
59#include <openssl/idea.h>
60#include "idea_local.h"
61
62void
63idea_cbc_encrypt(const unsigned char *in, unsigned char *out, long length,
64 IDEA_KEY_SCHEDULE *ks, unsigned char *iv, int encrypt)
65{
66 unsigned long tin0, tin1;
67 unsigned long tout0, tout1, xor0, xor1;
68 long l = length;
69 unsigned long tin[2];
70
71 if (encrypt) {
72 n2l(iv, tout0)(tout0 =((unsigned long)(*((iv)++)))<<24L, tout0|=((unsigned
long)(*((iv)++)))<<16L, tout0|=((unsigned long)(*((iv)
++)))<< 8L, tout0|=((unsigned long)(*((iv)++))))
;
73 n2l(iv, tout1)(tout1 =((unsigned long)(*((iv)++)))<<24L, tout1|=((unsigned
long)(*((iv)++)))<<16L, tout1|=((unsigned long)(*((iv)
++)))<< 8L, tout1|=((unsigned long)(*((iv)++))))
;
74 iv -= 8;
75 for (l -= 8; l >= 0; l -= 8)
76 {
77 n2l(in, tin0)(tin0 =((unsigned long)(*((in)++)))<<24L, tin0|=((unsigned
long)(*((in)++)))<<16L, tin0|=((unsigned long)(*((in)++
)))<< 8L, tin0|=((unsigned long)(*((in)++))))
;
78 n2l(in, tin1)(tin1 =((unsigned long)(*((in)++)))<<24L, tin1|=((unsigned
long)(*((in)++)))<<16L, tin1|=((unsigned long)(*((in)++
)))<< 8L, tin1|=((unsigned long)(*((in)++))))
;
79 tin0 ^= tout0;
80 tin1 ^= tout1;
81 tin[0] = tin0;
82 tin[1] = tin1;
83 idea_encrypt(tin, ks);
84 tout0 = tin[0];
85 l2n(tout0, out)(*((out)++)=(unsigned char)(((tout0)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout0)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout0)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout0) )&0xff))
;
86 tout1 = tin[1];
87 l2n(tout1, out)(*((out)++)=(unsigned char)(((tout1)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout1)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout1)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout1) )&0xff))
;
88 }
89 if (l != -8) {
90 n2ln(in, tin0, tin1, l + 8){ in+=l + 8; tin0=tin1=0; switch (l + 8) { case 8: tin1 =((unsigned
long)(*(--(in)))) ; case 7: tin1|=((unsigned long)(*(--(in))
))<< 8; case 6: tin1|=((unsigned long)(*(--(in))))<<
16; case 5: tin1|=((unsigned long)(*(--(in))))<<24; case
4: tin0 =((unsigned long)(*(--(in)))) ; case 3: tin0|=((unsigned
long)(*(--(in))))<< 8; case 2: tin0|=((unsigned long)(
*(--(in))))<<16; case 1: tin0|=((unsigned long)(*(--(in
))))<<24; } }
;
91 tin0 ^= tout0;
92 tin1 ^= tout1;
93 tin[0] = tin0;
94 tin[1] = tin1;
95 idea_encrypt(tin, ks);
96 tout0 = tin[0];
97 l2n(tout0, out)(*((out)++)=(unsigned char)(((tout0)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout0)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout0)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout0) )&0xff))
;
98 tout1 = tin[1];
99 l2n(tout1, out)(*((out)++)=(unsigned char)(((tout1)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout1)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout1)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout1) )&0xff))
;
100 }
101 l2n(tout0, iv)(*((iv)++)=(unsigned char)(((tout0)>>24L)&0xff), *(
(iv)++)=(unsigned char)(((tout0)>>16L)&0xff), *((iv
)++)=(unsigned char)(((tout0)>> 8L)&0xff), *((iv)++
)=(unsigned char)(((tout0) )&0xff))
;
102 l2n(tout1, iv)(*((iv)++)=(unsigned char)(((tout1)>>24L)&0xff), *(
(iv)++)=(unsigned char)(((tout1)>>16L)&0xff), *((iv
)++)=(unsigned char)(((tout1)>> 8L)&0xff), *((iv)++
)=(unsigned char)(((tout1) )&0xff))
;
103 } else {
104 n2l(iv, xor0)(xor0 =((unsigned long)(*((iv)++)))<<24L, xor0|=((unsigned
long)(*((iv)++)))<<16L, xor0|=((unsigned long)(*((iv)++
)))<< 8L, xor0|=((unsigned long)(*((iv)++))))
;
105 n2l(iv, xor1)(xor1 =((unsigned long)(*((iv)++)))<<24L, xor1|=((unsigned
long)(*((iv)++)))<<16L, xor1|=((unsigned long)(*((iv)++
)))<< 8L, xor1|=((unsigned long)(*((iv)++))))
;
106 iv -= 8;
107 for (l -= 8; l >= 0; l -= 8)
108 {
109 n2l(in, tin0)(tin0 =((unsigned long)(*((in)++)))<<24L, tin0|=((unsigned
long)(*((in)++)))<<16L, tin0|=((unsigned long)(*((in)++
)))<< 8L, tin0|=((unsigned long)(*((in)++))))
;
110 tin[0] = tin0;
111 n2l(in, tin1)(tin1 =((unsigned long)(*((in)++)))<<24L, tin1|=((unsigned
long)(*((in)++)))<<16L, tin1|=((unsigned long)(*((in)++
)))<< 8L, tin1|=((unsigned long)(*((in)++))))
;
112 tin[1] = tin1;
113 idea_encrypt(tin, ks);
114 tout0 = tin[0] ^ xor0;
115 tout1 = tin[1] ^ xor1;
116 l2n(tout0, out)(*((out)++)=(unsigned char)(((tout0)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout0)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout0)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout0) )&0xff))
;
117 l2n(tout1, out)(*((out)++)=(unsigned char)(((tout1)>>24L)&0xff), *
((out)++)=(unsigned char)(((tout1)>>16L)&0xff), *((
out)++)=(unsigned char)(((tout1)>> 8L)&0xff), *((out
)++)=(unsigned char)(((tout1) )&0xff))
;
118 xor0 = tin0;
119 xor1 = tin1;
120 }
121 if (l != -8) {
122 n2l(in, tin0)(tin0 =((unsigned long)(*((in)++)))<<24L, tin0|=((unsigned
long)(*((in)++)))<<16L, tin0|=((unsigned long)(*((in)++
)))<< 8L, tin0|=((unsigned long)(*((in)++))))
;
123 tin[0] = tin0;
124 n2l(in, tin1)(tin1 =((unsigned long)(*((in)++)))<<24L, tin1|=((unsigned
long)(*((in)++)))<<16L, tin1|=((unsigned long)(*((in)++
)))<< 8L, tin1|=((unsigned long)(*((in)++))))
;
125 tin[1] = tin1;
126 idea_encrypt(tin, ks);
127 tout0 = tin[0] ^ xor0;
128 tout1 = tin[1] ^ xor1;
129 l2nn(tout0, tout1, out, l + 8){ out+=l + 8; switch (l + 8) { case 8: *(--(out))=(unsigned char
)(((tout1) )&0xff); case 7: *(--(out))=(unsigned char)(((
tout1)>> 8)&0xff); case 6: *(--(out))=(unsigned char
)(((tout1)>>16)&0xff); case 5: *(--(out))=(unsigned
char)(((tout1)>>24)&0xff); case 4: *(--(out))=(unsigned
char)(((tout0) )&0xff); case 3: *(--(out))=(unsigned char
)(((tout0)>> 8)&0xff); case 2: *(--(out))=(unsigned
char)(((tout0)>>16)&0xff); case 1: *(--(out))=(unsigned
char)(((tout0)>>24)&0xff); } }
;
130 xor0 = tin0;
131 xor1 = tin1;
132 }
133 l2n(xor0, iv)(*((iv)++)=(unsigned char)(((xor0)>>24L)&0xff), *((
iv)++)=(unsigned char)(((xor0)>>16L)&0xff), *((iv)++
)=(unsigned char)(((xor0)>> 8L)&0xff), *((iv)++)=(unsigned
char)(((xor0) )&0xff))
;
134 l2n(xor1, iv)(*((iv)++)=(unsigned char)(((xor1)>>24L)&0xff), *((
iv)++)=(unsigned char)(((xor1)>>16L)&0xff), *((iv)++
)=(unsigned char)(((xor1)>> 8L)&0xff), *((iv)++)=(unsigned
char)(((xor1) )&0xff))
;
135 }
136 tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
Although the value stored to 'xor1' is used in the enclosing expression, the value is never actually read from 'xor1'
137 tin[0] = tin[1] = 0;
138}
139LCRYPTO_ALIAS(idea_cbc_encrypt)asm("");
140
141void
142idea_encrypt(unsigned long *d, IDEA_KEY_SCHEDULE *key)
143{
144 IDEA_INTunsigned int *p;
145 unsigned long x1, x2, x3, x4, t0, t1, ul;
146
147 x2 = d[0];
148 x1 = (x2 >> 16);
149 x4 = d[1];
150 x3 = (x4 >> 16);
151
152 p = &(key->data[0][0]);
153
154 E_IDEA(0)x1&=0xffff; ul=(unsigned long)x1**p; if (ul != 0) { x1=(ul
&0xffff)-(ul>>16); x1-=((x1)>>16); } else x1=
(-(int)x1-*p+1);; p++; x2+= *(p++); x3+= *(p++); x4&=0xffff
; ul=(unsigned long)x4**p; if (ul != 0) { x4=(ul&0xffff)-
(ul>>16); x4-=((x4)>>16); } else x4=(-(int)x4-*p+
1);; p++; t0=(x1^x3)&0xffff; ul=(unsigned long)t0**p; if (
ul != 0) { t0=(ul&0xffff)-(ul>>16); t0-=((t0)>>
16); } else t0=(-(int)t0-*p+1);; p++; t1=(t0+(x2^x4))&0xffff
; ul=(unsigned long)t1**p; if (ul != 0) { t1=(ul&0xffff)-
(ul>>16); t1-=((t1)>>16); } else t1=(-(int)t1-*p+
1);; p++; t0+=t1; x1^=t1; x4^=t0; ul=x2^t0; x2=x3^t1; x3=ul;
;
155 E_IDEA(1)x1&=0xffff; ul=(unsigned long)x1**p; if (ul != 0) { x1=(ul
&0xffff)-(ul>>16); x1-=((x1)>>16); } else x1=
(-(int)x1-*p+1);; p++; x2+= *(p++); x3+= *(p++); x4&=0xffff
; ul=(unsigned long)x4**p; if (ul != 0) { x4=(ul&0xffff)-
(ul>>16); x4-=((x4)>>16); } else x4=(-(int)x4-*p+
1);; p++; t0=(x1^x3)&0xffff; ul=(unsigned long)t0**p; if (
ul != 0) { t0=(ul&0xffff)-(ul>>16); t0-=((t0)>>
16); } else t0=(-(int)t0-*p+1);; p++; t1=(t0+(x2^x4))&0xffff
; ul=(unsigned long)t1**p; if (ul != 0) { t1=(ul&0xffff)-
(ul>>16); t1-=((t1)>>16); } else t1=(-(int)t1-*p+
1);; p++; t0+=t1; x1^=t1; x4^=t0; ul=x2^t0; x2=x3^t1; x3=ul;
;
156 E_IDEA(2)x1&=0xffff; ul=(unsigned long)x1**p; if (ul != 0) { x1=(ul
&0xffff)-(ul>>16); x1-=((x1)>>16); } else x1=
(-(int)x1-*p+1);; p++; x2+= *(p++); x3+= *(p++); x4&=0xffff
; ul=(unsigned long)x4**p; if (ul != 0) { x4=(ul&0xffff)-
(ul>>16); x4-=((x4)>>16); } else x4=(-(int)x4-*p+
1);; p++; t0=(x1^x3)&0xffff; ul=(unsigned long)t0**p; if (
ul != 0) { t0=(ul&0xffff)-(ul>>16); t0-=((t0)>>
16); } else t0=(-(int)t0-*p+1);; p++; t1=(t0+(x2^x4))&0xffff
; ul=(unsigned long)t1**p; if (ul != 0) { t1=(ul&0xffff)-
(ul>>16); t1-=((t1)>>16); } else t1=(-(int)t1-*p+
1);; p++; t0+=t1; x1^=t1; x4^=t0; ul=x2^t0; x2=x3^t1; x3=ul;
;
157 E_IDEA(3)x1&=0xffff; ul=(unsigned long)x1**p; if (ul != 0) { x1=(ul
&0xffff)-(ul>>16); x1-=((x1)>>16); } else x1=
(-(int)x1-*p+1);; p++; x2+= *(p++); x3+= *(p++); x4&=0xffff
; ul=(unsigned long)x4**p; if (ul != 0) { x4=(ul&0xffff)-
(ul>>16); x4-=((x4)>>16); } else x4=(-(int)x4-*p+
1);; p++; t0=(x1^x3)&0xffff; ul=(unsigned long)t0**p; if (
ul != 0) { t0=(ul&0xffff)-(ul>>16); t0-=((t0)>>
16); } else t0=(-(int)t0-*p+1);; p++; t1=(t0+(x2^x4))&0xffff
; ul=(unsigned long)t1**p; if (ul != 0) { t1=(ul&0xffff)-
(ul>>16); t1-=((t1)>>16); } else t1=(-(int)t1-*p+
1);; p++; t0+=t1; x1^=t1; x4^=t0; ul=x2^t0; x2=x3^t1; x3=ul;
;
158 E_IDEA(4)x1&=0xffff; ul=(unsigned long)x1**p; if (ul != 0) { x1=(ul
&0xffff)-(ul>>16); x1-=((x1)>>16); } else x1=
(-(int)x1-*p+1);; p++; x2+= *(p++); x3+= *(p++); x4&=0xffff
; ul=(unsigned long)x4**p; if (ul != 0) { x4=(ul&0xffff)-
(ul>>16); x4-=((x4)>>16); } else x4=(-(int)x4-*p+
1);; p++; t0=(x1^x3)&0xffff; ul=(unsigned long)t0**p; if (
ul != 0) { t0=(ul&0xffff)-(ul>>16); t0-=((t0)>>
16); } else t0=(-(int)t0-*p+1);; p++; t1=(t0+(x2^x4))&0xffff
; ul=(unsigned long)t1**p; if (ul != 0) { t1=(ul&0xffff)-
(ul>>16); t1-=((t1)>>16); } else t1=(-(int)t1-*p+
1);; p++; t0+=t1; x1^=t1; x4^=t0; ul=x2^t0; x2=x3^t1; x3=ul;
;
159 E_IDEA(5)x1&=0xffff; ul=(unsigned long)x1**p; if (ul != 0) { x1=(ul
&0xffff)-(ul>>16); x1-=((x1)>>16); } else x1=
(-(int)x1-*p+1);; p++; x2+= *(p++); x3+= *(p++); x4&=0xffff
; ul=(unsigned long)x4**p; if (ul != 0) { x4=(ul&0xffff)-
(ul>>16); x4-=((x4)>>16); } else x4=(-(int)x4-*p+
1);; p++; t0=(x1^x3)&0xffff; ul=(unsigned long)t0**p; if (
ul != 0) { t0=(ul&0xffff)-(ul>>16); t0-=((t0)>>
16); } else t0=(-(int)t0-*p+1);; p++; t1=(t0+(x2^x4))&0xffff
; ul=(unsigned long)t1**p; if (ul != 0) { t1=(ul&0xffff)-
(ul>>16); t1-=((t1)>>16); } else t1=(-(int)t1-*p+
1);; p++; t0+=t1; x1^=t1; x4^=t0; ul=x2^t0; x2=x3^t1; x3=ul;
;
160 E_IDEA(6)x1&=0xffff; ul=(unsigned long)x1**p; if (ul != 0) { x1=(ul
&0xffff)-(ul>>16); x1-=((x1)>>16); } else x1=
(-(int)x1-*p+1);; p++; x2+= *(p++); x3+= *(p++); x4&=0xffff
; ul=(unsigned long)x4**p; if (ul != 0) { x4=(ul&0xffff)-
(ul>>16); x4-=((x4)>>16); } else x4=(-(int)x4-*p+
1);; p++; t0=(x1^x3)&0xffff; ul=(unsigned long)t0**p; if (
ul != 0) { t0=(ul&0xffff)-(ul>>16); t0-=((t0)>>
16); } else t0=(-(int)t0-*p+1);; p++; t1=(t0+(x2^x4))&0xffff
; ul=(unsigned long)t1**p; if (ul != 0) { t1=(ul&0xffff)-
(ul>>16); t1-=((t1)>>16); } else t1=(-(int)t1-*p+
1);; p++; t0+=t1; x1^=t1; x4^=t0; ul=x2^t0; x2=x3^t1; x3=ul;
;
161 E_IDEA(7)x1&=0xffff; ul=(unsigned long)x1**p; if (ul != 0) { x1=(ul
&0xffff)-(ul>>16); x1-=((x1)>>16); } else x1=
(-(int)x1-*p+1);; p++; x2+= *(p++); x3+= *(p++); x4&=0xffff
; ul=(unsigned long)x4**p; if (ul != 0) { x4=(ul&0xffff)-
(ul>>16); x4-=((x4)>>16); } else x4=(-(int)x4-*p+
1);; p++; t0=(x1^x3)&0xffff; ul=(unsigned long)t0**p; if (
ul != 0) { t0=(ul&0xffff)-(ul>>16); t0-=((t0)>>
16); } else t0=(-(int)t0-*p+1);; p++; t1=(t0+(x2^x4))&0xffff
; ul=(unsigned long)t1**p; if (ul != 0) { t1=(ul&0xffff)-
(ul>>16); t1-=((t1)>>16); } else t1=(-(int)t1-*p+
1);; p++; t0+=t1; x1^=t1; x4^=t0; ul=x2^t0; x2=x3^t1; x3=ul;
;
162
163 x1 &= 0xffff;
164 idea_mul(x1, x1, *p, ul)ul=(unsigned long)x1**p; if (ul != 0) { x1=(ul&0xffff)-(ul
>>16); x1-=((x1)>>16); } else x1=(-(int)x1-*p+1);
;
165 p++;
166
167 t0 = x3 + *(p++);
168 t1 = x2 + *(p++);
169
170 x4 &= 0xffff;
171 idea_mul(x4, x4, *p, ul)ul=(unsigned long)x4**p; if (ul != 0) { x4=(ul&0xffff)-(ul
>>16); x4-=((x4)>>16); } else x4=(-(int)x4-*p+1);
;
172
173 d[0] = (t0 & 0xffff)|((x1 & 0xffff) << 16);
174 d[1] = (x4 & 0xffff)|((t1 & 0xffff) << 16);
175}
176LCRYPTO_ALIAS(idea_encrypt)asm("");