3 typedef unsigned char uc
;
4 typedef unsigned __int128 uint128
;
6 void addvector(int *r
, const int *a
, const int *b
, size_t len
)
8 for(int *r2
= r
; r2
< r
+ len
;r2
++, a
++, b
++)
12 int memcmp(const void *s1
, const void *s2
, size_t n
)
14 for(uc
*s3
= (uc
*)s1
, *s4
= (uc
*)s2
; s3
< (uc
*)s1
+ n
; s3
++, s4
++)
20 int memcmp_backwards(const void *s1
, const void *s2
, size_t n
)
22 for(uc
*s3
= (uc
*)s1
+n
, *s4
= (uc
*)s2
+n
; s3
>= (uc
*)s1
; s3
--, s4
--)
28 int memcmp_fast(const void *s1
, const void *s2
, size_t n
)
30 uint128
*s3
= (uint128
*)s1
;
31 uint128
*s4
= (uint128
*)s2
;
32 unsigned int blocks
= n
/sizeof(uint128
);
33 for(; s3
<((uint128
*)s1
)+blocks
; s3
++, s4
++)
35 return memcmp(s3
, s4
, sizeof(uint128
));
36 return memcmp(s3
, s4
, n
% sizeof(uint128
));