1extern crate c2rust_bitfields;
2extern crate libc;
3extern crate core;
4pub type __uint8_t = libc::c_uchar;
5pub type __uint64_t = libc::c_ulong;
6pub type uint8_t = __uint8_t;
7pub type uint64_t = __uint64_t;
8pub type size_t = libc::c_ulong;
9#[no_mangle]
10pub unsafe extern "C" fn siptlw(mut c: libc::c_int) -> libc::c_int {
11 if c >= 'A' as i32 && c <= 'Z' as i32 {
12 return c + ('a' as i32 - 'A' as i32)
13 } else {
14 return c
15 };
16}
17#[no_mangle]
18pub unsafe extern "C" fn siphash(
19 mut in_0: *const uint8_t,
20 inlen: size_t,
21 mut k: *const uint8_t,
22) -> uint64_t {
23 let mut v0: uint64_t = 0x736f6d6570736575 as libc::c_ulonglong as uint64_t;
24 let mut v1: uint64_t = 0x646f72616e646f6d as libc::c_ulonglong as uint64_t;
25 let mut v2: uint64_t = 0x6c7967656e657261 as libc::c_ulonglong as uint64_t;
26 let mut v3: uint64_t = 0x7465646279746573 as libc::c_ulonglong as uint64_t;
27 let mut k0: uint64_t = *(k as *mut uint64_t);
28 let mut k1: uint64_t = *(k.offset(8 as libc::c_int as isize) as *mut uint64_t);
29 let mut m: uint64_t = 0;
30 let mut end: *const uint8_t = in_0
31 .offset(inlen as isize)
32 .offset(
33 -(inlen.wrapping_rem(core::mem::size_of::<uint64_t>() as libc::c_ulong)
34 as isize),
35 );
36 let left: libc::c_int = (inlen & 7 as libc::c_int as libc::c_ulong) as libc::c_int;
37 let mut b: uint64_t = inlen << 56 as libc::c_int;
38 v3 ^= k1;
39 v2 ^= k0;
40 v1 ^= k1;
41 v0 ^= k0;
42 while in_0 != end {
43 m = *(in_0 as *mut uint64_t);
44 v3 ^= m;
45 v0 = (v0 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
46 v1 = v1 << 13 as libc::c_int | v1 >> 64 as libc::c_int - 13 as libc::c_int;
47 v1 ^= v0;
48 v0 = v0 << 32 as libc::c_int | v0 >> 64 as libc::c_int - 32 as libc::c_int;
49 v2 = (v2 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
50 v3 = v3 << 16 as libc::c_int | v3 >> 64 as libc::c_int - 16 as libc::c_int;
51 v3 ^= v2;
52 v0 = (v0 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
53 v3 = v3 << 21 as libc::c_int | v3 >> 64 as libc::c_int - 21 as libc::c_int;
54 v3 ^= v0;
55 v2 = (v2 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
56 v1 = v1 << 17 as libc::c_int | v1 >> 64 as libc::c_int - 17 as libc::c_int;
57 v1 ^= v2;
58 v2 = v2 << 32 as libc::c_int | v2 >> 64 as libc::c_int - 32 as libc::c_int;
59 v0 ^= m;
60 in_0 = in_0.offset(8 as libc::c_int as isize);
61 }
62 let mut current_block_31: u64;
63 match left {
64 7 => {
65 b
66 |= (*in_0.offset(6 as libc::c_int as isize) as uint64_t)
67 << 48 as libc::c_int;
68 current_block_31 = 1249139192423293139;
69 }
70 6 => {
71 current_block_31 = 1249139192423293139;
72 }
73 5 => {
74 current_block_31 = 17953379472903764582;
75 }
76 4 => {
77 current_block_31 = 13450376713251723712;
78 }
79 3 => {
80 current_block_31 = 17412530589607255837;
81 }
82 2 => {
83 current_block_31 = 3653295323910715944;
84 }
85 1 => {
86 current_block_31 = 15640639866236238398;
87 }
88 0 | _ => {
89 current_block_31 = 4488286894823169796;
90 }
91 }
92 match current_block_31 {
93 1249139192423293139 => {
94 b
95 |= (*in_0.offset(5 as libc::c_int as isize) as uint64_t)
96 << 40 as libc::c_int;
97 current_block_31 = 17953379472903764582;
98 }
99 _ => {}
100 }
101 match current_block_31 {
102 17953379472903764582 => {
103 b
104 |= (*in_0.offset(4 as libc::c_int as isize) as uint64_t)
105 << 32 as libc::c_int;
106 current_block_31 = 13450376713251723712;
107 }
108 _ => {}
109 }
110 match current_block_31 {
111 13450376713251723712 => {
112 b
113 |= (*in_0.offset(3 as libc::c_int as isize) as uint64_t)
114 << 24 as libc::c_int;
115 current_block_31 = 17412530589607255837;
116 }
117 _ => {}
118 }
119 match current_block_31 {
120 17412530589607255837 => {
121 b
122 |= (*in_0.offset(2 as libc::c_int as isize) as uint64_t)
123 << 16 as libc::c_int;
124 current_block_31 = 3653295323910715944;
125 }
126 _ => {}
127 }
128 match current_block_31 {
129 3653295323910715944 => {
130 b
131 |= (*in_0.offset(1 as libc::c_int as isize) as uint64_t)
132 << 8 as libc::c_int;
133 current_block_31 = 15640639866236238398;
134 }
135 _ => {}
136 }
137 match current_block_31 {
138 15640639866236238398 => {
139 b |= *in_0.offset(0 as libc::c_int as isize) as uint64_t;
140 }
141 _ => {}
142 }
143 v3 ^= b;
144 v0 = (v0 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
145 v1 = v1 << 13 as libc::c_int | v1 >> 64 as libc::c_int - 13 as libc::c_int;
146 v1 ^= v0;
147 v0 = v0 << 32 as libc::c_int | v0 >> 64 as libc::c_int - 32 as libc::c_int;
148 v2 = (v2 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
149 v3 = v3 << 16 as libc::c_int | v3 >> 64 as libc::c_int - 16 as libc::c_int;
150 v3 ^= v2;
151 v0 = (v0 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
152 v3 = v3 << 21 as libc::c_int | v3 >> 64 as libc::c_int - 21 as libc::c_int;
153 v3 ^= v0;
154 v2 = (v2 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
155 v1 = v1 << 17 as libc::c_int | v1 >> 64 as libc::c_int - 17 as libc::c_int;
156 v1 ^= v2;
157 v2 = v2 << 32 as libc::c_int | v2 >> 64 as libc::c_int - 32 as libc::c_int;
158 v0 ^= b;
159 v2 ^= 0xff as libc::c_int as libc::c_ulong;
160 v0 = (v0 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
161 v1 = v1 << 13 as libc::c_int | v1 >> 64 as libc::c_int - 13 as libc::c_int;
162 v1 ^= v0;
163 v0 = v0 << 32 as libc::c_int | v0 >> 64 as libc::c_int - 32 as libc::c_int;
164 v2 = (v2 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
165 v3 = v3 << 16 as libc::c_int | v3 >> 64 as libc::c_int - 16 as libc::c_int;
166 v3 ^= v2;
167 v0 = (v0 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
168 v3 = v3 << 21 as libc::c_int | v3 >> 64 as libc::c_int - 21 as libc::c_int;
169 v3 ^= v0;
170 v2 = (v2 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
171 v1 = v1 << 17 as libc::c_int | v1 >> 64 as libc::c_int - 17 as libc::c_int;
172 v1 ^= v2;
173 v2 = v2 << 32 as libc::c_int | v2 >> 64 as libc::c_int - 32 as libc::c_int;
174 v0 = (v0 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
175 v1 = v1 << 13 as libc::c_int | v1 >> 64 as libc::c_int - 13 as libc::c_int;
176 v1 ^= v0;
177 v0 = v0 << 32 as libc::c_int | v0 >> 64 as libc::c_int - 32 as libc::c_int;
178 v2 = (v2 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
179 v3 = v3 << 16 as libc::c_int | v3 >> 64 as libc::c_int - 16 as libc::c_int;
180 v3 ^= v2;
181 v0 = (v0 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
182 v3 = v3 << 21 as libc::c_int | v3 >> 64 as libc::c_int - 21 as libc::c_int;
183 v3 ^= v0;
184 v2 = (v2 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
185 v1 = v1 << 17 as libc::c_int | v1 >> 64 as libc::c_int - 17 as libc::c_int;
186 v1 ^= v2;
187 v2 = v2 << 32 as libc::c_int | v2 >> 64 as libc::c_int - 32 as libc::c_int;
188 b = v0 ^ v1 ^ v2 ^ v3;
189 return b;
190}
191#[no_mangle]
192pub unsafe extern "C" fn siphash_nocase(
193 mut in_0: *const uint8_t,
194 inlen: size_t,
195 mut k: *const uint8_t,
196) -> uint64_t {
197 let mut v0: uint64_t = 0x736f6d6570736575 as libc::c_ulonglong as uint64_t;
198 let mut v1: uint64_t = 0x646f72616e646f6d as libc::c_ulonglong as uint64_t;
199 let mut v2: uint64_t = 0x6c7967656e657261 as libc::c_ulonglong as uint64_t;
200 let mut v3: uint64_t = 0x7465646279746573 as libc::c_ulonglong as uint64_t;
201 let mut k0: uint64_t = *(k as *mut uint64_t);
202 let mut k1: uint64_t = *(k.offset(8 as libc::c_int as isize) as *mut uint64_t);
203 let mut m: uint64_t = 0;
204 let mut end: *const uint8_t = in_0
205 .offset(inlen as isize)
206 .offset(
207 -(inlen.wrapping_rem(core::mem::size_of::<uint64_t>() as libc::c_ulong)
208 as isize),
209 );
210 let left: libc::c_int = (inlen & 7 as libc::c_int as libc::c_ulong) as libc::c_int;
211 let mut b: uint64_t = inlen << 56 as libc::c_int;
212 v3 ^= k1;
213 v2 ^= k0;
214 v1 ^= k1;
215 v0 ^= k0;
216 while in_0 != end {
217 m = siptlw(*in_0.offset(0 as libc::c_int as isize) as libc::c_int) as uint64_t
218 | (siptlw(*in_0.offset(1 as libc::c_int as isize) as libc::c_int)
219 as uint64_t) << 8 as libc::c_int
220 | (siptlw(*in_0.offset(2 as libc::c_int as isize) as libc::c_int)
221 as uint64_t) << 16 as libc::c_int
222 | (siptlw(*in_0.offset(3 as libc::c_int as isize) as libc::c_int)
223 as uint64_t) << 24 as libc::c_int
224 | (siptlw(*in_0.offset(4 as libc::c_int as isize) as libc::c_int)
225 as uint64_t) << 32 as libc::c_int
226 | (siptlw(*in_0.offset(5 as libc::c_int as isize) as libc::c_int)
227 as uint64_t) << 40 as libc::c_int
228 | (siptlw(*in_0.offset(6 as libc::c_int as isize) as libc::c_int)
229 as uint64_t) << 48 as libc::c_int
230 | (siptlw(*in_0.offset(7 as libc::c_int as isize) as libc::c_int)
231 as uint64_t) << 56 as libc::c_int;
232 v3 ^= m;
233 v0 = (v0 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
234 v1 = v1 << 13 as libc::c_int | v1 >> 64 as libc::c_int - 13 as libc::c_int;
235 v1 ^= v0;
236 v0 = v0 << 32 as libc::c_int | v0 >> 64 as libc::c_int - 32 as libc::c_int;
237 v2 = (v2 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
238 v3 = v3 << 16 as libc::c_int | v3 >> 64 as libc::c_int - 16 as libc::c_int;
239 v3 ^= v2;
240 v0 = (v0 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
241 v3 = v3 << 21 as libc::c_int | v3 >> 64 as libc::c_int - 21 as libc::c_int;
242 v3 ^= v0;
243 v2 = (v2 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
244 v1 = v1 << 17 as libc::c_int | v1 >> 64 as libc::c_int - 17 as libc::c_int;
245 v1 ^= v2;
246 v2 = v2 << 32 as libc::c_int | v2 >> 64 as libc::c_int - 32 as libc::c_int;
247 v0 ^= m;
248 in_0 = in_0.offset(8 as libc::c_int as isize);
249 }
250 let mut current_block_31: u64;
251 match left {
252 7 => {
253 b
254 |= (siptlw(*in_0.offset(6 as libc::c_int as isize) as libc::c_int)
255 as uint64_t) << 48 as libc::c_int;
256 current_block_31 = 2776346960145241100;
257 }
258 6 => {
259 current_block_31 = 2776346960145241100;
260 }
261 5 => {
262 current_block_31 = 649228984063957735;
263 }
264 4 => {
265 current_block_31 = 10473994958786212244;
266 }
267 3 => {
268 current_block_31 = 9711627312585919507;
269 }
270 2 => {
271 current_block_31 = 12437083962755276651;
272 }
273 1 => {
274 current_block_31 = 6055168197975140418;
275 }
276 0 | _ => {
277 current_block_31 = 4488286894823169796;
278 }
279 }
280 match current_block_31 {
281 2776346960145241100 => {
282 b
283 |= (siptlw(*in_0.offset(5 as libc::c_int as isize) as libc::c_int)
284 as uint64_t) << 40 as libc::c_int;
285 current_block_31 = 649228984063957735;
286 }
287 _ => {}
288 }
289 match current_block_31 {
290 649228984063957735 => {
291 b
292 |= (siptlw(*in_0.offset(4 as libc::c_int as isize) as libc::c_int)
293 as uint64_t) << 32 as libc::c_int;
294 current_block_31 = 10473994958786212244;
295 }
296 _ => {}
297 }
298 match current_block_31 {
299 10473994958786212244 => {
300 b
301 |= (siptlw(*in_0.offset(3 as libc::c_int as isize) as libc::c_int)
302 as uint64_t) << 24 as libc::c_int;
303 current_block_31 = 9711627312585919507;
304 }
305 _ => {}
306 }
307 match current_block_31 {
308 9711627312585919507 => {
309 b
310 |= (siptlw(*in_0.offset(2 as libc::c_int as isize) as libc::c_int)
311 as uint64_t) << 16 as libc::c_int;
312 current_block_31 = 12437083962755276651;
313 }
314 _ => {}
315 }
316 match current_block_31 {
317 12437083962755276651 => {
318 b
319 |= (siptlw(*in_0.offset(1 as libc::c_int as isize) as libc::c_int)
320 as uint64_t) << 8 as libc::c_int;
321 current_block_31 = 6055168197975140418;
322 }
323 _ => {}
324 }
325 match current_block_31 {
326 6055168197975140418 => {
327 b
328 |= siptlw(*in_0.offset(0 as libc::c_int as isize) as libc::c_int)
329 as uint64_t;
330 }
331 _ => {}
332 }
333 v3 ^= b;
334 v0 = (v0 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
335 v1 = v1 << 13 as libc::c_int | v1 >> 64 as libc::c_int - 13 as libc::c_int;
336 v1 ^= v0;
337 v0 = v0 << 32 as libc::c_int | v0 >> 64 as libc::c_int - 32 as libc::c_int;
338 v2 = (v2 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
339 v3 = v3 << 16 as libc::c_int | v3 >> 64 as libc::c_int - 16 as libc::c_int;
340 v3 ^= v2;
341 v0 = (v0 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
342 v3 = v3 << 21 as libc::c_int | v3 >> 64 as libc::c_int - 21 as libc::c_int;
343 v3 ^= v0;
344 v2 = (v2 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
345 v1 = v1 << 17 as libc::c_int | v1 >> 64 as libc::c_int - 17 as libc::c_int;
346 v1 ^= v2;
347 v2 = v2 << 32 as libc::c_int | v2 >> 64 as libc::c_int - 32 as libc::c_int;
348 v0 ^= b;
349 v2 ^= 0xff as libc::c_int as libc::c_ulong;
350 v0 = (v0 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
351 v1 = v1 << 13 as libc::c_int | v1 >> 64 as libc::c_int - 13 as libc::c_int;
352 v1 ^= v0;
353 v0 = v0 << 32 as libc::c_int | v0 >> 64 as libc::c_int - 32 as libc::c_int;
354 v2 = (v2 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
355 v3 = v3 << 16 as libc::c_int | v3 >> 64 as libc::c_int - 16 as libc::c_int;
356 v3 ^= v2;
357 v0 = (v0 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
358 v3 = v3 << 21 as libc::c_int | v3 >> 64 as libc::c_int - 21 as libc::c_int;
359 v3 ^= v0;
360 v2 = (v2 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
361 v1 = v1 << 17 as libc::c_int | v1 >> 64 as libc::c_int - 17 as libc::c_int;
362 v1 ^= v2;
363 v2 = v2 << 32 as libc::c_int | v2 >> 64 as libc::c_int - 32 as libc::c_int;
364 v0 = (v0 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
365 v1 = v1 << 13 as libc::c_int | v1 >> 64 as libc::c_int - 13 as libc::c_int;
366 v1 ^= v0;
367 v0 = v0 << 32 as libc::c_int | v0 >> 64 as libc::c_int - 32 as libc::c_int;
368 v2 = (v2 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
369 v3 = v3 << 16 as libc::c_int | v3 >> 64 as libc::c_int - 16 as libc::c_int;
370 v3 ^= v2;
371 v0 = (v0 as libc::c_ulong).wrapping_add(v3) as uint64_t as uint64_t;
372 v3 = v3 << 21 as libc::c_int | v3 >> 64 as libc::c_int - 21 as libc::c_int;
373 v3 ^= v0;
374 v2 = (v2 as libc::c_ulong).wrapping_add(v1) as uint64_t as uint64_t;
375 v1 = v1 << 17 as libc::c_int | v1 >> 64 as libc::c_int - 17 as libc::c_int;
376 v1 ^= v2;
377 v2 = v2 << 32 as libc::c_int | v2 >> 64 as libc::c_int - 32 as libc::c_int;
378 b = v0 ^ v1 ^ v2 ^ v3;
379 return b;
380}