Bug Summary

File:out/../deps/openssl/openssl/crypto/idea/i_cbc.c
Warning:line 92, column 35
Although the value stored to 'xor0' is used in the enclosing expression, the value is never actually read from 'xor0'

Annotated Source Code

Press '?' to see keyboard shortcuts

clang -cc1 -cc1 -triple x86_64-unknown-linux-gnu -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 2 -pic-is-pie -mframe-pointer=all -fmath-errno -ffp-contract=on -fno-rounding-math -mconstructor-aliases -funwind-tables=2 -target-cpu x86-64 -tune-cpu generic -debugger-tuning=gdb -fcoverage-compilation-dir=/home/maurizio/node-v18.6.0/out -resource-dir /usr/local/lib/clang/16.0.0 -D V8_DEPRECATION_WARNINGS -D V8_IMMINENT_DEPRECATION_WARNINGS -D _GLIBCXX_USE_CXX11_ABI=1 -D NODE_OPENSSL_CONF_NAME=nodejs_conf -D NODE_OPENSSL_HAS_QUIC -D __STDC_FORMAT_MACROS -D OPENSSL_NO_PINSHARED -D OPENSSL_THREADS -D OPENSSL_NO_HW -D OPENSSL_API_COMPAT=0x10100001L -D STATIC_LEGACY -D NDEBUG -D OPENSSL_USE_NODELETE -D L_ENDIAN -D OPENSSL_BUILDING_OPENSSL -D AES_ASM -D BSAES_ASM -D CMLL_ASM -D ECP_NISTZ256_ASM -D GHASH_ASM -D KECCAK1600_ASM -D MD5_ASM -D OPENSSL_BN_ASM_GF2m -D OPENSSL_BN_ASM_MONT -D OPENSSL_BN_ASM_MONT5 -D OPENSSL_CPUID_OBJ -D OPENSSL_IA32_SSE2 -D PADLOCK_ASM -D POLY1305_ASM -D SHA1_ASM -D SHA256_ASM -D SHA512_ASM -D VPAES_ASM -D WHIRLPOOL_ASM -D X25519_ASM -D OPENSSL_PIC -D MODULESDIR="/home/maurizio/node-v18.6.0/out/Release/obj.target/deps/openssl/lib/openssl-modules" -D OPENSSLDIR="/home/maurizio/node-v18.6.0/out/Release/obj.target/deps/openssl" -D OPENSSLDIR="/etc/ssl" -D ENGINESDIR="/dev/null" -D TERMIOS -I ../deps/openssl/openssl -I ../deps/openssl/openssl/include -I ../deps/openssl/openssl/crypto -I ../deps/openssl/openssl/crypto/include -I ../deps/openssl/openssl/crypto/modes -I ../deps/openssl/openssl/crypto/ec/curve448 -I ../deps/openssl/openssl/crypto/ec/curve448/arch_32 -I ../deps/openssl/openssl/providers/common/include -I ../deps/openssl/openssl/providers/implementations/include -I ../deps/openssl/config -I ../deps/openssl/config/archs/linux-x86_64/asm -I ../deps/openssl/config/archs/linux-x86_64/asm/include -I ../deps/openssl/config/archs/linux-x86_64/asm/crypto -I ../deps/openssl/config/archs/linux-x86_64/asm/crypto/include/internal -I ../deps/openssl/config/archs/linux-x86_64/asm/providers/common/include -internal-isystem /usr/local/lib/clang/16.0.0/include -internal-isystem /usr/local/include -internal-isystem /usr/lib/gcc/x86_64-redhat-linux/8/../../../../x86_64-redhat-linux/include -internal-externc-isystem /include -internal-externc-isystem /usr/include -O3 -Wno-unused-parameter -Wno-missing-field-initializers -Wno-old-style-declaration -fdebug-compilation-dir=/home/maurizio/node-v18.6.0/out -ferror-limit 19 -fgnuc-version=4.2.1 -vectorize-loops -vectorize-slp -analyzer-output=html -faddrsig -D__GCC_HAVE_DWARF2_CFI_ASM=1 -o /tmp/scan-build-2022-08-22-142216-507842-1 -x c ../deps/openssl/openssl/crypto/idea/i_cbc.c
1/*
2 * Copyright 1995-2020 The OpenSSL Project Authors. All Rights Reserved.
3 *
4 * Licensed under the Apache License 2.0 (the "License"). You may not use
5 * this file except in compliance with the License. You can obtain a copy
6 * in the file LICENSE in the source distribution or at
7 * https://www.openssl.org/source/license.html
8 */
9
10/*
11 * IDEA low level APIs are deprecated for public use, but still ok for internal
12 * use where we're using them to implement the higher level EVP interface, as is
13 * the case here.
14 */
15#include "internal/deprecated.h"
16
17#include <openssl/idea.h>
18#include "idea_local.h"
19
20void IDEA_cbc_encrypt(const unsigned char *in, unsigned char *out,
21 long length, IDEA_KEY_SCHEDULE *ks, unsigned char *iv,
22 int encrypt)
23{
24 register unsigned long tin0, tin1;
25 register unsigned long tout0, tout1, xor0, xor1;
26 register long l = length;
27 unsigned long tin[2];
28
29 if (encrypt) {
30 n2l(iv, tout0)(tout0 =((unsigned long)(*((iv)++)))<<24L, tout0|=((unsigned
long)(*((iv)++)))<<16L, tout0|=((unsigned long)(*((iv)
++)))<< 8L, tout0|=((unsigned long)(*((iv)++))))
;
31 n2l(iv, tout1)(tout1 =((unsigned long)(*((iv)++)))<<24L, tout1|=((unsigned
long)(*((iv)++)))<<16L, tout1|=((unsigned long)(*((iv)
++)))<< 8L, tout1|=((unsigned long)(*((iv)++))))
;
32 iv -= 8;
33 for (l -= 8; l >= 0; l -= 8) {
34 n2l(in, tin0)(tin0 =((unsigned long)(*((in)++)))<<24L, tin0|=((unsigned
long)(*((in)++)))<<16L, tin0|=((unsigned long)(*((in)++
)))<< 8L, tin0|=((unsigned long)(*((in)++))))
;
35 n2l(in, tin1)(tin1 =((unsigned long)(*((in)++)))<<24L, tin1|=((unsigned
long)(*((in)++)))<<16L, tin1|=((unsigned long)(*((in)++
)))<< 8L, tin1|=((unsigned long)(*((in)++))))
;
36 tin0 ^= tout0;
37 tin1 ^= tout1;
38 tin[0] = tin0;
39 tin[1] = tin1;
40 IDEA_encrypt(tin, ks);
41 tout0 = tin[0];
42 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))
;
43 tout1 = tin[1];
44 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))
;
45 }
46 if (l != -8) {
47 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; } }
;
48 tin0 ^= tout0;
49 tin1 ^= tout1;
50 tin[0] = tin0;
51 tin[1] = tin1;
52 IDEA_encrypt(tin, ks);
53 tout0 = tin[0];
54 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))
;
55 tout1 = tin[1];
56 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))
;
57 }
58 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))
;
59 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))
;
60 } else {
61 n2l(iv, xor0)(xor0 =((unsigned long)(*((iv)++)))<<24L, xor0|=((unsigned
long)(*((iv)++)))<<16L, xor0|=((unsigned long)(*((iv)++
)))<< 8L, xor0|=((unsigned long)(*((iv)++))))
;
62 n2l(iv, xor1)(xor1 =((unsigned long)(*((iv)++)))<<24L, xor1|=((unsigned
long)(*((iv)++)))<<16L, xor1|=((unsigned long)(*((iv)++
)))<< 8L, xor1|=((unsigned long)(*((iv)++))))
;
63 iv -= 8;
64 for (l -= 8; l >= 0; l -= 8) {
65 n2l(in, tin0)(tin0 =((unsigned long)(*((in)++)))<<24L, tin0|=((unsigned
long)(*((in)++)))<<16L, tin0|=((unsigned long)(*((in)++
)))<< 8L, tin0|=((unsigned long)(*((in)++))))
;
66 tin[0] = tin0;
67 n2l(in, tin1)(tin1 =((unsigned long)(*((in)++)))<<24L, tin1|=((unsigned
long)(*((in)++)))<<16L, tin1|=((unsigned long)(*((in)++
)))<< 8L, tin1|=((unsigned long)(*((in)++))))
;
68 tin[1] = tin1;
69 IDEA_encrypt(tin, ks);
70 tout0 = tin[0] ^ xor0;
71 tout1 = tin[1] ^ xor1;
72 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))
;
73 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))
;
74 xor0 = tin0;
75 xor1 = tin1;
76 }
77 if (l != -8) {
78 n2l(in, tin0)(tin0 =((unsigned long)(*((in)++)))<<24L, tin0|=((unsigned
long)(*((in)++)))<<16L, tin0|=((unsigned long)(*((in)++
)))<< 8L, tin0|=((unsigned long)(*((in)++))))
;
79 tin[0] = tin0;
80 n2l(in, tin1)(tin1 =((unsigned long)(*((in)++)))<<24L, tin1|=((unsigned
long)(*((in)++)))<<16L, tin1|=((unsigned long)(*((in)++
)))<< 8L, tin1|=((unsigned long)(*((in)++))))
;
81 tin[1] = tin1;
82 IDEA_encrypt(tin, ks);
83 tout0 = tin[0] ^ xor0;
84 tout1 = tin[1] ^ xor1;
85 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); } }
;
86 xor0 = tin0;
87 xor1 = tin1;
88 }
89 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))
;
90 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))
;
91 }
92 tin0 = tin1 = tout0 = tout1 = xor0 = xor1 = 0;
Although the value stored to 'xor0' is used in the enclosing expression, the value is never actually read from 'xor0'
93 tin[0] = tin[1] = 0;
94}
95
96void IDEA_encrypt(unsigned long *d, IDEA_KEY_SCHEDULE *key)
97{
98 register IDEA_INT *p;
99 register unsigned long x1, x2, x3, x4, t0, t1, ul;
100
101 x2 = d[0];
102 x1 = (x2 >> 16);
103 x4 = d[1];
104 x3 = (x4 >> 16);
105
106 p = &(key->data[0][0]);
107
108 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;
;
109 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;
;
110 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;
;
111 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;
;
112 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;
;
113 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;
;
114 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;
;
115 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;
;
116
117 x1 &= 0xffff;
118 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);
;
119 p++;
120
121 t0 = x3 + *(p++);
122 t1 = x2 + *(p++);
123
124 x4 &= 0xffff;
125 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);
;
126
127 d[0] = (t0 & 0xffff) | ((x1 & 0xffff) << 16);
128 d[1] = (x4 & 0xffff) | ((t1 & 0xffff) << 16);
129}