This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug c/28146] New: -O2 produces invalid code on s390-linux-gnu: gcc-4.1.2 20060608
- From: "gcc-bugzilla at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 23 Jun 2006 18:43:53 -0000
- Subject: [Bug c/28146] New: -O2 produces invalid code on s390-linux-gnu: gcc-4.1.2 20060608
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
This started because coreutils' new sha2 programs failed their tests on s390.
======================
gcc -v output:
Using built-in specs.
Target: s390-linux-gnu
Configured with: ../src/configure -v
--enable-languages=c,c++,java,fortran,objc,obj-c++,ada,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu
--enable-libstdcxx-debug --enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre --enable-mpfr
--enable-checking=release s390-linux-gnu
Thread model: posix
gcc version 4.1.2 20060608 (prerelease) (Debian 4.1.1-3)
======================
Environment:
System: Linux raptor 2.6.12-1-s390x #1 SMP Tue Sep 27 09:43:57 UTC 2005 s390x
GNU/Linux
Architecture: s390x
host: s390-ibm-linux-gnu
build: s390-ibm-linux-gnu
target: s390-ibm-linux-gnu
configured with: ../src/configure -v
--enable-languages=c,c++,java,fortran,objc,obj-c++,ada,treelang --prefix=/usr
--enable-shared --with-system-zlib --libexecdir=/usr/lib
--without-included-gettext --enable-threads=posix --enable-nls
--program-suffix=-4.1 --enable-__cxa_atexit --enable-clocale=gnu
--enable-libstdcxx-debug --enable-java-awt=gtk --enable-gtk-cairo
--with-java-home=/usr/lib/jvm/java-1.4.2-gcj-4.1-1.4.2.0/jre --enable-mpfr
--enable-checking=release s390-linux-gnu
How-To-Repeat:
# Correct output when compiled with -O
$ gcc -I.. -I. -g -O ~/j.c && ./a.out
38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b
# Invalid output when compiled with -O2
$ gcc -I.. -I. -g -O2 ~/j.c && ./a.out
517189ab07d222a14e0dcfcf6208ebffac951f89e8cbb81636706f714aacb757a8c8fb9e4474ab7b2e809f7a82fe9130
Here's j.i:
typedef signed char int8_t;
typedef short int int16_t;
typedef int int32_t;
__extension__
typedef long long int int64_t;
typedef unsigned char uint8_t;
typedef unsigned short int uint16_t;
typedef unsigned int uint32_t;
__extension__
typedef unsigned long long int uint64_t;
typedef signed char int_least8_t;
typedef short int int_least16_t;
typedef int int_least32_t;
__extension__
typedef long long int int_least64_t;
typedef unsigned char uint_least8_t;
typedef unsigned short int uint_least16_t;
typedef unsigned int uint_least32_t;
__extension__
typedef unsigned long long int uint_least64_t;
typedef signed char int_fast8_t;
typedef int int_fast16_t;
typedef int int_fast32_t;
__extension__
typedef long long int int_fast64_t;
typedef unsigned char uint_fast8_t;
typedef unsigned int uint_fast16_t;
typedef unsigned int uint_fast32_t;
__extension__
typedef unsigned long long int uint_fast64_t;
typedef int intptr_t;
typedef unsigned int uintptr_t;
__extension__
typedef long long int intmax_t;
__extension__
typedef unsigned long long int uintmax_t;
typedef long unsigned int size_t;
extern void *memcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memmove (void *__dest, __const void *__src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memccpy (void *__restrict __dest, __const void *__restrict __src,
int __c, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *memset (void *__s, int __c, size_t __n) __attribute__
((__nothrow__)) __attribute__ ((__nonnull__ (1)));
extern int memcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern void *memchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern void *rawmemchr (__const void *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern void *memrchr (__const void *__s, int __c, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern char *strcpy (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strcat (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strncat (char *__restrict __dest, __const char *__restrict __src,
size_t __n) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__
(1, 2)));
extern int strcmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern int strncmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern int strcoll (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern size_t strxfrm (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
typedef struct __locale_struct
{
struct locale_data *__locales[13];
const unsigned short int *__ctype_b;
const int *__ctype_tolower;
const int *__ctype_toupper;
const char *__names[13];
} *__locale_t;
extern int strcoll_l (__const char *__s1, __const char *__s2, __locale_t __l)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2, 3)));
extern size_t strxfrm_l (char *__dest, __const char *__src, size_t __n,
__locale_t __l) __attribute__ ((__nothrow__)) __attribute__ ((__nonnull__
(2, 4)));
extern char *strdup (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__
((__nonnull__ (1)));
extern char *strndup (__const char *__string, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__)) __attribute__
((__nonnull__ (1)));
extern char *strchr (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern char *strrchr (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern char *strchrnul (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern size_t strcspn (__const char *__s, __const char *__reject)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern size_t strspn (__const char *__s, __const char *__accept)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern char *strpbrk (__const char *__s, __const char *__accept)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern char *strstr (__const char *__haystack, __const char *__needle)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern char *strtok (char *__restrict __s, __const char *__restrict __delim)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern char *__strtok_r (char *__restrict __s,
__const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
extern char *strtok_r (char *__restrict __s, __const char *__restrict __delim,
char **__restrict __save_ptr)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2, 3)));
extern char *strcasestr (__const char *__haystack, __const char *__needle)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern void *memmem (__const void *__haystack, size_t __haystacklen,
__const void *__needle, size_t __needlelen)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 3)));
extern void *__mempcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void *mempcpy (void *__restrict __dest,
__const void *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern size_t strlen (__const char *__s)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern size_t strnlen (__const char *__string, size_t __maxlen)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern char *strerror (int __errnum) __attribute__ ((__nothrow__));
extern char *strerror_r (int __errnum, char *__buf, size_t __buflen)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (2)));
extern void __bzero (void *__s, size_t __n) __attribute__ ((__nothrow__))
__attribute__ ((__nonnull__ (1)));
extern void bcopy (__const void *__src, void *__dest, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern void bzero (void *__s, size_t __n) __attribute__ ((__nothrow__))
__attribute__ ((__nonnull__ (1)));
extern int bcmp (__const void *__s1, __const void *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern char *index (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern char *rindex (__const char *__s, int __c)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1)));
extern int ffs (int __i) __attribute__ ((__nothrow__)) __attribute__
((__const__));
extern int ffsl (long int __l) __attribute__ ((__nothrow__)) __attribute__
((__const__));
__extension__ extern int ffsll (long long int __ll)
__attribute__ ((__nothrow__)) __attribute__ ((__const__));
extern int rpl_strcasecmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern int strncasecmp (__const char *__s1, __const char *__s2, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern int strcasecmp_l (__const char *__s1, __const char *__s2,
__locale_t __loc)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2, 3)));
extern int strncasecmp_l (__const char *__s1, __const char *__s2,
size_t __n, __locale_t __loc)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2, 4)));
extern char *strsep (char **__restrict __stringp,
__const char *__restrict __delim)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern int strverscmp (__const char *__s1, __const char *__s2)
__attribute__ ((__nothrow__)) __attribute__ ((__pure__)) __attribute__
((__nonnull__ (1, 2)));
extern char *strsignal (int __sig) __attribute__ ((__nothrow__));
extern char *__stpcpy (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpcpy (char *__restrict __dest, __const char *__restrict __src)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *__stpncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *stpncpy (char *__restrict __dest,
__const char *__restrict __src, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__nonnull__ (1, 2)));
extern char *strfry (char *__string) __attribute__ ((__nothrow__))
__attribute__ ((__nonnull__ (1)));
extern void *memfrob (void *__s, size_t __n) __attribute__ ((__nothrow__))
__attribute__ ((__nonnull__ (1)));
extern char *basename (__const char *__filename) __attribute__ ((__nothrow__))
__attribute__ ((__nonnull__ (1)));
typedef unsigned char __u_char;
typedef unsigned short int __u_short;
typedef unsigned int __u_int;
typedef unsigned long int __u_long;
typedef signed char __int8_t;
typedef unsigned char __uint8_t;
typedef signed short int __int16_t;
typedef unsigned short int __uint16_t;
typedef signed int __int32_t;
typedef unsigned int __uint32_t;
__extension__ typedef signed long long int __int64_t;
__extension__ typedef unsigned long long int __uint64_t;
__extension__ typedef long long int __quad_t;
__extension__ typedef unsigned long long int __u_quad_t;
__extension__ typedef __u_quad_t __dev_t;
__extension__ typedef unsigned int __uid_t;
__extension__ typedef unsigned int __gid_t;
__extension__ typedef unsigned long int __ino_t;
__extension__ typedef __u_quad_t __ino64_t;
__extension__ typedef unsigned int __mode_t;
__extension__ typedef unsigned int __nlink_t;
__extension__ typedef long int __off_t;
__extension__ typedef __quad_t __off64_t;
__extension__ typedef int __pid_t;
__extension__ typedef struct { int __val[2]; } __fsid_t;
__extension__ typedef long int __clock_t;
__extension__ typedef unsigned long int __rlim_t;
__extension__ typedef __u_quad_t __rlim64_t;
__extension__ typedef unsigned int __id_t;
__extension__ typedef long int __time_t;
__extension__ typedef unsigned int __useconds_t;
__extension__ typedef long int __suseconds_t;
__extension__ typedef int __daddr_t;
__extension__ typedef long int __swblk_t;
__extension__ typedef int __key_t;
__extension__ typedef int __clockid_t;
__extension__ typedef int __timer_t;
__extension__ typedef long int __blksize_t;
__extension__ typedef long int __blkcnt_t;
__extension__ typedef __quad_t __blkcnt64_t;
__extension__ typedef unsigned long int __fsblkcnt_t;
__extension__ typedef __u_quad_t __fsblkcnt64_t;
__extension__ typedef unsigned long int __fsfilcnt_t;
__extension__ typedef __u_quad_t __fsfilcnt64_t;
__extension__ typedef long int __ssize_t;
typedef __off64_t __loff_t;
typedef __quad_t *__qaddr_t;
typedef char *__caddr_t;
__extension__ typedef int __intptr_t;
__extension__ typedef unsigned int __socklen_t;
extern void *__rawmemchr (const void *__s, int __c);
extern __inline size_t __strcspn_c1 (__const char *__s, int __reject);
extern __inline size_t
__strcspn_c1 (__const char *__s, int __reject)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject)
++__result;
return __result;
}
extern __inline size_t __strcspn_c2 (__const char *__s, int __reject1,
int __reject2);
extern __inline size_t
__strcspn_c2 (__const char *__s, int __reject1, int __reject2)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2)
++__result;
return __result;
}
extern __inline size_t __strcspn_c3 (__const char *__s, int __reject1,
int __reject2, int __reject3);
extern __inline size_t
__strcspn_c3 (__const char *__s, int __reject1, int __reject2,
int __reject3)
{
register size_t __result = 0;
while (__s[__result] != '\0' && __s[__result] != __reject1
&& __s[__result] != __reject2 && __s[__result] != __reject3)
++__result;
return __result;
}
extern __inline size_t __strspn_c1 (__const char *__s, int __accept);
extern __inline size_t
__strspn_c1 (__const char *__s, int __accept)
{
register size_t __result = 0;
while (__s[__result] == __accept)
++__result;
return __result;
}
extern __inline size_t __strspn_c2 (__const char *__s, int __accept1,
int __accept2);
extern __inline size_t
__strspn_c2 (__const char *__s, int __accept1, int __accept2)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2)
++__result;
return __result;
}
extern __inline size_t __strspn_c3 (__const char *__s, int __accept1,
int __accept2, int __accept3);
extern __inline size_t
__strspn_c3 (__const char *__s, int __accept1, int __accept2, int __accept3)
{
register size_t __result = 0;
while (__s[__result] == __accept1 || __s[__result] == __accept2
|| __s[__result] == __accept3)
++__result;
return __result;
}
extern __inline char *__strpbrk_c2 (__const char *__s, int __accept1,
int __accept2);
extern __inline char *
__strpbrk_c2 (__const char *__s, int __accept1, int __accept2)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
extern __inline char *__strpbrk_c3 (__const char *__s, int __accept1,
int __accept2, int __accept3);
extern __inline char *
__strpbrk_c3 (__const char *__s, int __accept1, int __accept2,
int __accept3)
{
while (*__s != '\0' && *__s != __accept1 && *__s != __accept2
&& *__s != __accept3)
++__s;
return *__s == '\0' ? ((void *)0) : (char *) (size_t) __s;
}
extern __inline char *__strtok_r_1c (char *__s, char __sep, char **__nextp);
extern __inline char *
__strtok_r_1c (char *__s, char __sep, char **__nextp)
{
char *__result;
if (__s == ((void *)0))
__s = *__nextp;
while (*__s == __sep)
++__s;
__result = ((void *)0);
if (*__s != '\0')
{
__result = __s++;
while (*__s != '\0')
if (*__s++ == __sep)
{
__s[-1] = '\0';
break;
}
*__nextp = __s;
}
return __result;
}
extern char *__strsep_g (char **__stringp, __const char *__delim);
extern __inline char *__strsep_1c (char **__s, char __reject);
extern __inline char *
__strsep_1c (char **__s, char __reject)
{
register char *__retval = *__s;
if (__retval != ((void *)0) && (*__s = (__extension__ (__builtin_constant_p
(__reject) && !__builtin_constant_p (__retval) && (__reject) == '\0' ? (char *)
__rawmemchr (__retval, __reject) : __builtin_strchr (__retval, __reject)))) !=
((void *)0))
*(*__s)++ = '\0';
return __retval;
}
extern __inline char *__strsep_2c (char **__s, char __reject1, char __reject2);
extern __inline char *
__strsep_2c (char **__s, char __reject1, char __reject2)
{
register char *__retval = *__s;
if (__retval != ((void *)0))
{
register char *__cp = __retval;
while (1)
{
if (*__cp == '\0')
{
__cp = ((void *)0);
break;
}
if (*__cp == __reject1 || *__cp == __reject2)
{
*__cp++ = '\0';
break;
}
++__cp;
}
*__s = __cp;
}
return __retval;
}
extern __inline char *__strsep_3c (char **__s, char __reject1, char __reject2,
char __reject3);
extern __inline char *
__strsep_3c (char **__s, char __reject1, char __reject2, char __reject3)
{
register char *__retval = *__s;
if (__retval != ((void *)0))
{
register char *__cp = __retval;
while (1)
{
if (*__cp == '\0')
{
__cp = ((void *)0);
break;
}
if (*__cp == __reject1 || *__cp == __reject2 || *__cp == __reject3)
{
*__cp++ = '\0';
break;
}
++__cp;
}
*__s = __cp;
}
return __retval;
}
extern void *malloc (size_t __size) __attribute__ ((__nothrow__)) __attribute__
((__malloc__));
extern void *calloc (size_t __nmemb, size_t __size)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
extern char *__strdup (__const char *__string) __attribute__ ((__nothrow__))
__attribute__ ((__malloc__));
extern char *__strndup (__const char *__string, size_t __n)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
typedef struct _IO_FILE FILE;
typedef struct _IO_FILE __FILE;
typedef int wchar_t;
typedef unsigned int wint_t;
typedef struct
{
int __count;
union
{
wint_t __wch;
char __wchb[4];
} __value;
} __mbstate_t;
typedef struct
{
__off_t __pos;
__mbstate_t __state;
} _G_fpos_t;
typedef struct
{
__off64_t __pos;
__mbstate_t __state;
} _G_fpos64_t;
enum
{
__GCONV_OK = 0,
__GCONV_NOCONV,
__GCONV_NODB,
__GCONV_NOMEM,
__GCONV_EMPTY_INPUT,
__GCONV_FULL_OUTPUT,
__GCONV_ILLEGAL_INPUT,
__GCONV_INCOMPLETE_INPUT,
__GCONV_ILLEGAL_DESCRIPTOR,
__GCONV_INTERNAL_ERROR
};
enum
{
__GCONV_IS_LAST = 0x0001,
__GCONV_IGNORE_ERRORS = 0x0002
};
struct __gconv_step;
struct __gconv_step_data;
struct __gconv_loaded_object;
struct __gconv_trans_data;
typedef int (*__gconv_fct) (struct __gconv_step *, struct __gconv_step_data *,
__const unsigned char **, __const unsigned char *,
unsigned char **, size_t *, int, int);
typedef wint_t (*__gconv_btowc_fct) (struct __gconv_step *, unsigned char);
typedef int (*__gconv_init_fct) (struct __gconv_step *);
typedef void (*__gconv_end_fct) (struct __gconv_step *);
typedef int (*__gconv_trans_fct) (struct __gconv_step *,
struct __gconv_step_data *, void *,
__const unsigned char *,
__const unsigned char **,
__const unsigned char *, unsigned char **,
size_t *);
typedef int (*__gconv_trans_context_fct) (void *, __const unsigned char *,
__const unsigned char *,
unsigned char *, unsigned char *);
typedef int (*__gconv_trans_query_fct) (__const char *, __const char ***,
size_t *);
typedef int (*__gconv_trans_init_fct) (void **, const char *);
typedef void (*__gconv_trans_end_fct) (void *);
struct __gconv_trans_data
{
__gconv_trans_fct __trans_fct;
__gconv_trans_context_fct __trans_context_fct;
__gconv_trans_end_fct __trans_end_fct;
void *__data;
struct __gconv_trans_data *__next;
};
struct __gconv_step
{
struct __gconv_loaded_object *__shlib_handle;
__const char *__modname;
int __counter;
char *__from_name;
char *__to_name;
__gconv_fct __fct;
__gconv_btowc_fct __btowc_fct;
__gconv_init_fct __init_fct;
__gconv_end_fct __end_fct;
int __min_needed_from;
int __max_needed_from;
int __min_needed_to;
int __max_needed_to;
int __stateful;
void *__data;
};
struct __gconv_step_data
{
unsigned char *__outbuf;
unsigned char *__outbufend;
int __flags;
int __invocation_counter;
int __internal_use;
__mbstate_t *__statep;
__mbstate_t __state;
struct __gconv_trans_data *__trans;
};
typedef struct __gconv_info
{
size_t __nsteps;
struct __gconv_step *__steps;
__extension__ struct __gconv_step_data __data [];
} *__gconv_t;
typedef union
{
struct __gconv_info __cd;
struct
{
struct __gconv_info __cd;
struct __gconv_step_data __data;
} __combined;
} _G_iconv_t;
typedef int _G_int16_t __attribute__ ((__mode__ (__HI__)));
typedef int _G_int32_t __attribute__ ((__mode__ (__SI__)));
typedef unsigned int _G_uint16_t __attribute__ ((__mode__ (__HI__)));
typedef unsigned int _G_uint32_t __attribute__ ((__mode__ (__SI__)));
typedef __builtin_va_list __gnuc_va_list;
struct _IO_jump_t; struct _IO_FILE;
typedef void _IO_lock_t;
struct _IO_marker {
struct _IO_marker *_next;
struct _IO_FILE *_sbuf;
int _pos;
};
enum __codecvt_result
{
__codecvt_ok,
__codecvt_partial,
__codecvt_error,
__codecvt_noconv
};
struct _IO_FILE {
int _flags;
char* _IO_read_ptr;
char* _IO_read_end;
char* _IO_read_base;
char* _IO_write_base;
char* _IO_write_ptr;
char* _IO_write_end;
char* _IO_buf_base;
char* _IO_buf_end;
char *_IO_save_base;
char *_IO_backup_base;
char *_IO_save_end;
struct _IO_marker *_markers;
struct _IO_FILE *_chain;
int _fileno;
int _flags2;
__off_t _old_offset;
unsigned short _cur_column;
signed char _vtable_offset;
char _shortbuf[1];
_IO_lock_t *_lock;
__off64_t _offset;
void *__pad1;
void *__pad2;
int _mode;
char _unused2[15 * sizeof (int) - 2 * sizeof (void *)];
};
typedef struct _IO_FILE _IO_FILE;
struct _IO_FILE_plus;
extern struct _IO_FILE_plus _IO_2_1_stdin_;
extern struct _IO_FILE_plus _IO_2_1_stdout_;
extern struct _IO_FILE_plus _IO_2_1_stderr_;
typedef __ssize_t __io_read_fn (void *__cookie, char *__buf, size_t __nbytes);
typedef __ssize_t __io_write_fn (void *__cookie, __const char *__buf,
size_t __n);
typedef int __io_seek_fn (void *__cookie, __off64_t *__pos, int __w);
typedef int __io_close_fn (void *__cookie);
typedef __io_read_fn cookie_read_function_t;
typedef __io_write_fn cookie_write_function_t;
typedef __io_seek_fn cookie_seek_function_t;
typedef __io_close_fn cookie_close_function_t;
typedef struct
{
__io_read_fn *read;
__io_write_fn *write;
__io_seek_fn *seek;
__io_close_fn *close;
} _IO_cookie_io_functions_t;
typedef _IO_cookie_io_functions_t cookie_io_functions_t;
struct _IO_cookie_file;
extern void _IO_cookie_init (struct _IO_cookie_file *__cfile, int __read_write,
void *__cookie, _IO_cookie_io_functions_t __fns);
extern int __underflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern int __uflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern int __overflow (_IO_FILE *, int) __attribute__ ((__nothrow__));
extern wint_t __wunderflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern wint_t __wuflow (_IO_FILE *) __attribute__ ((__nothrow__));
extern wint_t __woverflow (_IO_FILE *, wint_t) __attribute__ ((__nothrow__));
extern int _IO_getc (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_putc (int __c, _IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_feof (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_ferror (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern int _IO_peekc_locked (_IO_FILE *__fp) __attribute__ ((__nothrow__));
extern void _IO_flockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern void _IO_funlockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_ftrylockfile (_IO_FILE *) __attribute__ ((__nothrow__));
extern int _IO_vfscanf (_IO_FILE * __restrict, const char * __restrict,
__gnuc_va_list, int *__restrict) __attribute__ ((__nothrow__));
extern int _IO_vfprintf (_IO_FILE *__restrict, const char *__restrict,
__gnuc_va_list) __attribute__ ((__nothrow__));
extern __ssize_t _IO_padn (_IO_FILE *, int, __ssize_t) __attribute__
((__nothrow__));
extern size_t _IO_sgetn (_IO_FILE *, void *, size_t) __attribute__
((__nothrow__));
extern __off64_t _IO_seekoff (_IO_FILE *, __off64_t, int, int) __attribute__
((__nothrow__));
extern __off64_t _IO_seekpos (_IO_FILE *, __off64_t, int) __attribute__
((__nothrow__));
extern void _IO_free_backup_area (_IO_FILE *) __attribute__ ((__nothrow__));
typedef __gnuc_va_list va_list;
typedef _G_fpos64_t fpos_t;
typedef _G_fpos64_t fpos64_t;
extern struct _IO_FILE *stdin;
extern struct _IO_FILE *stdout;
extern struct _IO_FILE *stderr;
extern int remove (__const char *__filename) __attribute__ ((__nothrow__));
extern int rename (__const char *__old, __const char *__new) __attribute__
((__nothrow__));
extern FILE *tmpfile (void) __asm__ ("" "tmpfile64");
extern FILE *tmpfile64 (void);
extern char *tmpnam (char *__s) __attribute__ ((__nothrow__));
extern char *tmpnam_r (char *__s) __attribute__ ((__nothrow__));
extern char *tempnam (__const char *__dir, __const char *__pfx)
__attribute__ ((__nothrow__)) __attribute__ ((__malloc__));
extern int fclose (FILE *__stream);
extern int fflush (FILE *__stream);
extern int fflush_unlocked (FILE *__stream);
extern int fcloseall (void);
extern FILE *fopen (__const char *__restrict __filename, __const char
*__restrict __modes) __asm__ ("" "fopen64");
extern FILE *freopen (__const char *__restrict __filename, __const char
*__restrict __modes, FILE *__restrict __stream) __asm__ ("" "freopen64");
extern FILE *fopen64 (__const char *__restrict __filename,
__const char *__restrict __modes);
extern FILE *freopen64 (__const char *__restrict __filename,
__const char *__restrict __modes,
FILE *__restrict __stream);
extern FILE *fdopen (int __fd, __const char *__modes) __attribute__
((__nothrow__));
extern FILE *fopencookie (void *__restrict __magic_cookie,
__const char *__restrict __modes,
_IO_cookie_io_functions_t __io_funcs) __attribute__ ((__nothrow__));
extern FILE *fmemopen (void *__s, size_t __len, __const char *__modes)
__attribute__ ((__nothrow__));
extern FILE *open_memstream (char **__restrict __bufloc,
size_t *__restrict __sizeloc) __attribute__ ((__nothrow__));
extern void setbuf (FILE *__restrict __stream, char *__restrict __buf)
__attribute__ ((__nothrow__));
extern int setvbuf (FILE *__restrict __stream, char *__restrict __buf,
int __modes, size_t __n) __attribute__ ((__nothrow__));
extern void setbuffer (FILE *__restrict __stream, char *__restrict __buf,
size_t __size) __attribute__ ((__nothrow__));
extern void setlinebuf (FILE *__stream) __attribute__ ((__nothrow__));
extern int fprintf (FILE *__restrict __stream,
__const char *__restrict __format, ...);
extern int printf (__const char *__restrict __format, ...);
extern int sprintf (char *__restrict __s,
__const char *__restrict __format, ...) __attribute__ ((__nothrow__));
extern int vfprintf (FILE *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg);
extern int vprintf (__const char *__restrict __format, __gnuc_va_list __arg);
extern int vsprintf (char *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg) __attribute__ ((__nothrow__));
extern int snprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3,
4)));
extern int vsnprintf (char *__restrict __s, size_t __maxlen,
__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 3,
0)));
extern int vasprintf (char **__restrict __ptr, __const char *__restrict __f,
__gnuc_va_list __arg)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2,
0)));
extern int __asprintf (char **__restrict __ptr,
__const char *__restrict __fmt, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2,
3)));
extern int asprintf (char **__restrict __ptr,
__const char *__restrict __fmt, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2,
3)));
extern int vdprintf (int __fd, __const char *__restrict __fmt,
__gnuc_va_list __arg)
__attribute__ ((__format__ (__printf__, 2, 0)));
extern int dprintf (int __fd, __const char *__restrict __fmt, ...)
__attribute__ ((__format__ (__printf__, 2, 3)));
extern int fscanf (FILE *__restrict __stream,
__const char *__restrict __format, ...);
extern int scanf (__const char *__restrict __format, ...);
extern int sscanf (__const char *__restrict __s,
__const char *__restrict __format, ...) __attribute__ ((__nothrow__));
extern int vfscanf (FILE *__restrict __s, __const char *__restrict __format,
__gnuc_va_list __arg)
__attribute__ ((__format__ (__scanf__, 2, 0)));
extern int vscanf (__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__format__ (__scanf__, 1, 0)));
extern int vsscanf (__const char *__restrict __s,
__const char *__restrict __format, __gnuc_va_list __arg)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__scanf__, 2,
0)));
extern int fgetc (FILE *__stream);
extern int getc (FILE *__stream);
extern int getchar (void);
extern int getc_unlocked (FILE *__stream);
extern int getchar_unlocked (void);
extern int fgetc_unlocked (FILE *__stream);
extern int fputc (int __c, FILE *__stream);
extern int putc (int __c, FILE *__stream);
extern int putchar (int __c);
extern int fputc_unlocked (int __c, FILE *__stream);
extern int putc_unlocked (int __c, FILE *__stream);
extern int putchar_unlocked (int __c);
extern int getw (FILE *__stream);
extern int putw (int __w, FILE *__stream);
extern char *fgets (char *__restrict __s, int __n, FILE *__restrict __stream);
extern char *gets (char *__s);
extern char *fgets_unlocked (char *__restrict __s, int __n,
FILE *__restrict __stream);
extern __ssize_t __getdelim (char **__restrict __lineptr,
size_t *__restrict __n, int __delimiter,
FILE *__restrict __stream);
extern __ssize_t getdelim (char **__restrict __lineptr,
size_t *__restrict __n, int __delimiter,
FILE *__restrict __stream);
extern __ssize_t getline (char **__restrict __lineptr,
size_t *__restrict __n,
FILE *__restrict __stream);
extern int fputs (__const char *__restrict __s, FILE *__restrict __stream);
extern int puts (__const char *__s);
extern int ungetc (int __c, FILE *__stream);
extern size_t fread (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern size_t fwrite (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __s);
extern int fputs_unlocked (__const char *__restrict __s,
FILE *__restrict __stream);
extern size_t fread_unlocked (void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern size_t fwrite_unlocked (__const void *__restrict __ptr, size_t __size,
size_t __n, FILE *__restrict __stream);
extern int fseek (FILE *__stream, long int __off, int __whence);
extern long int ftell (FILE *__stream);
extern void rewind (FILE *__stream);
extern int fseeko (FILE *__stream, __off64_t __off, int __whence) __asm__ (""
"fseeko64");
extern __off64_t ftello (FILE *__stream) __asm__ ("" "ftello64");
extern int fgetpos (FILE *__restrict __stream, fpos_t *__restrict __pos)
__asm__ ("" "fgetpos64");
extern int fsetpos (FILE *__stream, __const fpos_t *__pos) __asm__ (""
"fsetpos64");
extern int fseeko64 (FILE *__stream, __off64_t __off, int __whence);
extern __off64_t ftello64 (FILE *__stream);
extern int fgetpos64 (FILE *__restrict __stream, fpos64_t *__restrict __pos);
extern int fsetpos64 (FILE *__stream, __const fpos64_t *__pos);
extern void clearerr (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof (FILE *__stream) __attribute__ ((__nothrow__));
extern int ferror (FILE *__stream) __attribute__ ((__nothrow__));
extern void clearerr_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int feof_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern int ferror_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern void perror (__const char *__s);
extern int sys_nerr;
extern __const char *__const sys_errlist[];
extern int _sys_nerr;
extern __const char *__const _sys_errlist[];
extern int fileno (FILE *__stream) __attribute__ ((__nothrow__));
extern int fileno_unlocked (FILE *__stream) __attribute__ ((__nothrow__));
extern FILE *popen (__const char *__command, __const char *__modes);
extern int pclose (FILE *__stream);
extern char *ctermid (char *__s) __attribute__ ((__nothrow__));
extern char *cuserid (char *__s);
struct obstack;
extern int obstack_printf (struct obstack *__restrict __obstack,
__const char *__restrict __format, ...)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2,
3)));
extern int obstack_vprintf (struct obstack *__restrict __obstack,
__const char *__restrict __format,
__gnuc_va_list __args)
__attribute__ ((__nothrow__)) __attribute__ ((__format__ (__printf__, 2,
0)));
extern void flockfile (FILE *__stream) __attribute__ ((__nothrow__));
extern int ftrylockfile (FILE *__stream) __attribute__ ((__nothrow__));
extern void funlockfile (FILE *__stream) __attribute__ ((__nothrow__));
extern __inline int
vprintf (__const char *__restrict __fmt, __gnuc_va_list __arg)
{
return vfprintf (stdout, __fmt, __arg);
}
extern __inline int
getchar (void)
{
return _IO_getc (stdin);
}
extern __inline int
getc_unlocked (FILE *__fp)
{
return (__builtin_expect ((__fp)->_IO_read_ptr >= (__fp)->_IO_read_end, 0) ?
__uflow (__fp) : *(unsigned char *) (__fp)->_IO_read_ptr++);
}
extern __inline int
getchar_unlocked (void)
{
return (__builtin_expect ((stdin)->_IO_read_ptr >= (stdin)->_IO_read_end, 0)
? __uflow (stdin) : *(unsigned char *) (stdin)->_IO_read_ptr++);
}
extern __inline int
putchar (int __c)
{
return _IO_putc (__c, stdout);
}
extern __inline int
fputc_unlocked (int __c, FILE *__stream)
{
return (__builtin_expect ((__stream)->_IO_write_ptr >=
(__stream)->_IO_write_end, 0) ? __overflow (__stream, (unsigned char) (__c)) :
(unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putc_unlocked (int __c, FILE *__stream)
{
return (__builtin_expect ((__stream)->_IO_write_ptr >=
(__stream)->_IO_write_end, 0) ? __overflow (__stream, (unsigned char) (__c)) :
(unsigned char) (*(__stream)->_IO_write_ptr++ = (__c)));
}
extern __inline int
putchar_unlocked (int __c)
{
return (__builtin_expect ((stdout)->_IO_write_ptr >= (stdout)->_IO_write_end,
0) ? __overflow (stdout, (unsigned char) (__c)) : (unsigned char)
(*(stdout)->_IO_write_ptr++ = (__c)));
}
extern __inline __ssize_t
getline (char **__lineptr, size_t *__n, FILE *__stream)
{
return __getdelim (__lineptr, __n, '\n', __stream);
}
extern __inline int
__attribute__ ((__nothrow__)) feof_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x10) != 0);
}
extern __inline int
__attribute__ ((__nothrow__)) ferror_unlocked (FILE *__stream)
{
return (((__stream)->_flags & 0x20) != 0);
}
struct sha512_ctx
{
uint64_t state[8];
uint64_t total[2];
uint64_t buflen;
uint64_t buffer[32];
};
extern void sha512_init_ctx (struct sha512_ctx *ctx);
extern void sha384_init_ctx (struct sha512_ctx *ctx);
extern void sha512_process_block (const void *buffer, size_t len,
struct sha512_ctx *ctx);
extern void sha512_process_bytes (const void *buffer, size_t len,
struct sha512_ctx *ctx);
extern void *sha512_finish_ctx (struct sha512_ctx *ctx, void *resbuf);
extern void *sha384_finish_ctx (struct sha512_ctx *ctx, void *resbuf);
extern void *sha512_read_ctx (const struct sha512_ctx *ctx, void *resbuf);
extern void *sha384_read_ctx (const struct sha512_ctx *ctx, void *resbuf);
extern int sha512_stream (FILE *stream, void *resblock);
extern int sha384_stream (FILE *stream, void *resblock);
extern void *sha512_buffer (const char *buffer, size_t len, void *resblock);
extern void *sha384_buffer (const char *buffer, size_t len, void *resblock);
typedef int ptrdiff_t;
static const unsigned char fillbuf[128] = { 0x80, 0 };
void
sha512_init_ctx (struct sha512_ctx *ctx)
{
ctx->state[0] = 0x6a09e667f3bcc908ULL;
ctx->state[1] = 0xbb67ae8584caa73bULL;
ctx->state[2] = 0x3c6ef372fe94f82bULL;
ctx->state[3] = 0xa54ff53a5f1d36f1ULL;
ctx->state[4] = 0x510e527fade682d1ULL;
ctx->state[5] = 0x9b05688c2b3e6c1fULL;
ctx->state[6] = 0x1f83d9abfb41bd6bULL;
ctx->state[7] = 0x5be0cd19137e2179ULL;
ctx->total[0] = ctx->total[1] = 0;
ctx->buflen = 0;
}
void
sha384_init_ctx (struct sha512_ctx *ctx)
{
ctx->state[0] = 0xcbbb9d5dc1059ed8ULL;
ctx->state[1] = 0x629a292a367cd507ULL;
ctx->state[2] = 0x9159015a3070dd17ULL;
ctx->state[3] = 0x152fecd8f70e5939ULL;
ctx->state[4] = 0x67332667ffc00b31ULL;
ctx->state[5] = 0x8eb44a8768581511ULL;
ctx->state[6] = 0xdb0c2e0d64f98fa7ULL;
ctx->state[7] = 0x47b5481dbefa4fa4ULL;
ctx->total[0] = ctx->total[1] = 0;
ctx->buflen = 0;
}
void *
sha512_read_ctx (const struct sha512_ctx *ctx, void *resbuf)
{
int i;
for (i = 0; i < 8; i++)
((uint64_t *) resbuf)[i] = (ctx->state[i]);
return resbuf;
}
void *
sha384_read_ctx (const struct sha512_ctx *ctx, void *resbuf)
{
int i;
for (i = 0; i < 6; i++)
((uint64_t *) resbuf)[i] = (ctx->state[i]);
return resbuf;
}
static void
sha512_conclude_ctx (struct sha512_ctx *ctx)
{
uint64_t bytes = ctx->buflen;
size_t size = (bytes < 112) ? 128 / 8 : 128 * 2 / 8;
ctx->total[0] += bytes;
if (ctx->total[0] < bytes)
++ctx->total[1];
ctx->buffer[size - 2] = ((ctx->total[1] << 3) | (ctx->total[0] >> 61));
ctx->buffer[size - 1] = (ctx->total[0] << 3);
memcpy (&((char *) ctx->buffer)[bytes], fillbuf, (size - 2) * 8 - bytes);
sha512_process_block (ctx->buffer, size * 8, ctx);
}
void *
sha512_finish_ctx (struct sha512_ctx *ctx, void *resbuf)
{
sha512_conclude_ctx (ctx);
return sha512_read_ctx (ctx, resbuf);
}
void *
sha384_finish_ctx (struct sha512_ctx *ctx, void *resbuf)
{
sha512_conclude_ctx (ctx);
return sha384_read_ctx (ctx, resbuf);
}
int
sha512_stream (FILE *stream, void *resblock)
{
struct sha512_ctx ctx;
char buffer[4096 + 72];
size_t sum;
sha512_init_ctx (&ctx);
while (1)
{
size_t n;
sum = 0;
while (1)
{
n = (__extension__ ((__builtin_constant_p (1) && __builtin_constant_p (4096
- sum) && (size_t) (1) * (size_t) (4096 - sum) <= 8 && (size_t) (1) != 0) ? ({
char *__ptr = (char *) (buffer + sum); FILE *__stream = (stream); size_t __cnt;
for (__cnt = (size_t) (1) * (size_t) (4096 - sum); __cnt > 0; --__cnt) { int
__c = (__builtin_expect ((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end,
0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++); if
(__c == (-1)) break; *__ptr++ = __c; } ((size_t) (1) * (size_t) (4096 - sum) -
__cnt) / (size_t) (1); }) : (((__builtin_constant_p (1) && (size_t) (1) == 0)
|| (__builtin_constant_p (4096 - sum) && (size_t) (4096 - sum) == 0)) ? ((void)
(buffer + sum), (void) (stream), (void) (1), (void) (4096 - sum), (size_t) 0) :
fread_unlocked (buffer + sum, 1, 4096 - sum, stream))));
sum += n;
if (sum == 4096)
break;
if (n == 0)
{
if (ferror_unlocked (stream))
return 1;
goto process_partial_block;
}
if (feof_unlocked (stream))
goto process_partial_block;
}
sha512_process_block (buffer, 4096, &ctx);
}
process_partial_block:;
if (sum > 0)
sha512_process_bytes (buffer, sum, &ctx);
sha512_finish_ctx (&ctx, resblock);
return 0;
}
int
sha384_stream (FILE *stream, void *resblock)
{
struct sha512_ctx ctx;
char buffer[4096 + 72];
size_t sum;
sha384_init_ctx (&ctx);
while (1)
{
size_t n;
sum = 0;
while (1)
{
n = (__extension__ ((__builtin_constant_p (1) && __builtin_constant_p (4096
- sum) && (size_t) (1) * (size_t) (4096 - sum) <= 8 && (size_t) (1) != 0) ? ({
char *__ptr = (char *) (buffer + sum); FILE *__stream = (stream); size_t __cnt;
for (__cnt = (size_t) (1) * (size_t) (4096 - sum); __cnt > 0; --__cnt) { int
__c = (__builtin_expect ((__stream)->_IO_read_ptr >= (__stream)->_IO_read_end,
0) ? __uflow (__stream) : *(unsigned char *) (__stream)->_IO_read_ptr++); if
(__c == (-1)) break; *__ptr++ = __c; } ((size_t) (1) * (size_t) (4096 - sum) -
__cnt) / (size_t) (1); }) : (((__builtin_constant_p (1) && (size_t) (1) == 0)
|| (__builtin_constant_p (4096 - sum) && (size_t) (4096 - sum) == 0)) ? ((void)
(buffer + sum), (void) (stream), (void) (1), (void) (4096 - sum), (size_t) 0) :
fread_unlocked (buffer + sum, 1, 4096 - sum, stream))));
sum += n;
if (sum == 4096)
break;
if (n == 0)
{
if (ferror_unlocked (stream))
return 1;
goto process_partial_block;
}
if (feof_unlocked (stream))
goto process_partial_block;
}
sha512_process_block (buffer, 4096, &ctx);
}
process_partial_block:;
if (sum > 0)
sha512_process_bytes (buffer, sum, &ctx);
sha384_finish_ctx (&ctx, resblock);
return 0;
}
void *
sha512_buffer (const char *buffer, size_t len, void *resblock)
{
struct sha512_ctx ctx;
sha512_init_ctx (&ctx);
sha512_process_bytes (buffer, len, &ctx);
return sha512_finish_ctx (&ctx, resblock);
}
void *
sha384_buffer (const char *buffer, size_t len, void *resblock)
{
struct sha512_ctx ctx;
sha384_init_ctx (&ctx);
sha512_process_bytes (buffer, len, &ctx);
return sha384_finish_ctx (&ctx, resblock);
}
void
sha512_process_bytes (const void *buffer, size_t len, struct sha512_ctx *ctx)
{
if (ctx->buflen != 0)
{
size_t left_over = ctx->buflen;
size_t add = 256 - left_over > len ? len : 256 - left_over;
memcpy (&((char *) ctx->buffer)[left_over], buffer, add);
ctx->buflen += add;
if (ctx->buflen > 128)
{
sha512_process_block (ctx->buffer, ctx->buflen & ~63, ctx);
ctx->buflen &= 127;
memcpy (ctx->buffer,
&((char *) ctx->buffer)[(left_over + add) & ~127],
ctx->buflen);
}
buffer = (const char *) buffer + add;
len -= add;
}
if (len >= 128)
{
{
sha512_process_block (buffer, len & ~127, ctx);
buffer = (const char *) buffer + (len & ~127);
len &= 127;
}
}
if (len > 0)
{
size_t left_over = ctx->buflen;
memcpy (&((char *) ctx->buffer)[left_over], buffer, len);
left_over += len;
if (left_over >= 128)
{
sha512_process_block (ctx->buffer, 128, ctx);
left_over -= 128;
memcpy (ctx->buffer, &ctx->buffer[16], left_over);
}
ctx->buflen = left_over;
}
}
static const uint64_t sha512_round_constants[80] = {
0x428a2f98d728ae22ULL, 0x7137449123ef65cdULL, 0xb5c0fbcfec4d3b2fULL,
0xe9b5dba58189dbbcULL, 0x3956c25bf348b538ULL, 0x59f111f1b605d019ULL,
0x923f82a4af194f9bULL, 0xab1c5ed5da6d8118ULL,
0xd807aa98a3030242ULL, 0x12835b0145706fbeULL, 0x243185be4ee4b28cULL,
0x550c7dc3d5ffb4e2ULL, 0x72be5d74f27b896fULL, 0x80deb1fe3b1696b1ULL,
0x9bdc06a725c71235ULL, 0xc19bf174cf692694ULL,
0xe49b69c19ef14ad2ULL, 0xefbe4786384f25e3ULL, 0x0fc19dc68b8cd5b5ULL,
0x240ca1cc77ac9c65ULL, 0x2de92c6f592b0275ULL, 0x4a7484aa6ea6e483ULL,
0x5cb0a9dcbd41fbd4ULL, 0x76f988da831153b5ULL,
0x983e5152ee66dfabULL, 0xa831c66d2db43210ULL, 0xb00327c898fb213fULL,
0xbf597fc7beef0ee4ULL, 0xc6e00bf33da88fc2ULL, 0xd5a79147930aa725ULL,
0x06ca6351e003826fULL, 0x142929670a0e6e70ULL,
0x27b70a8546d22ffcULL, 0x2e1b21385c26c926ULL, 0x4d2c6dfc5ac42aedULL,
0x53380d139d95b3dfULL, 0x650a73548baf63deULL, 0x766a0abb3c77b2a8ULL,
0x81c2c92e47edaee6ULL, 0x92722c851482353bULL,
0xa2bfe8a14cf10364ULL, 0xa81a664bbc423001ULL, 0xc24b8b70d0f89791ULL,
0xc76c51a30654be30ULL, 0xd192e819d6ef5218ULL, 0xd69906245565a910ULL,
0xf40e35855771202aULL, 0x106aa07032bbd1b8ULL,
0x19a4c116b8d2d0c8ULL, 0x1e376c085141ab53ULL, 0x2748774cdf8eeb99ULL,
0x34b0bcb5e19b48a8ULL, 0x391c0cb3c5c95a63ULL, 0x4ed8aa4ae3418acbULL,
0x5b9cca4f7763e373ULL, 0x682e6ff3d6b2b8a3ULL,
0x748f82ee5defb2fcULL, 0x78a5636f43172f60ULL, 0x84c87814a1f0ab72ULL,
0x8cc702081a6439ecULL, 0x90befffa23631e28ULL, 0xa4506cebde82bde9ULL,
0xbef9a3f7b2c67915ULL, 0xc67178f2e372532bULL,
0xca273eceea26619cULL, 0xd186b8c721c0c207ULL, 0xeada7dd6cde0eb1eULL,
0xf57d4f7fee6ed178ULL, 0x06f067aa72176fbaULL, 0x0a637dc5a2c898a6ULL,
0x113f9804bef90daeULL, 0x1b710b35131c471bULL,
0x28db77f523047d84ULL, 0x32caab7b40c72493ULL, 0x3c9ebe0a15c9bebcULL,
0x431d67c49c100d4cULL, 0x4cc5d4becb3e42b6ULL, 0x597f299cfc657e2aULL,
0x5fcb6fab3ad6faecULL, 0x6c44198c4a475817ULL,
};
void
sha512_process_block (const void *buffer, size_t len, struct sha512_ctx *ctx)
{
const uint64_t *words = buffer;
size_t nwords = len / sizeof (uint64_t);
const uint64_t *endp = words + nwords;
uint64_t x[16];
uint64_t a = ctx->state[0];
uint64_t b = ctx->state[1];
uint64_t c = ctx->state[2];
uint64_t d = ctx->state[3];
uint64_t e = ctx->state[4];
uint64_t f = ctx->state[5];
uint64_t g = ctx->state[6];
uint64_t h = ctx->state[7];
ctx->total[0] += len;
if (ctx->total[0] < len)
++ctx->total[1];
while (words < endp)
{
uint64_t tm;
uint64_t t0, t1;
int t;
for (t = 0; t < 16; t++)
{
x[t] = (*words);
words++;
}
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[0] + x[ 0]; d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[1] + x[ 1]; c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[2] + x[ 2]; b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[3] + x[ 3]; a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[4] + x[ 4]; h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[5] + x[ 5]; g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[6] + x[ 6]; f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[7] + x[ 7]; e += t1; a = t0 + t1; }
while(0);
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[8] + x[ 8]; d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[9] + x[ 9]; c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[10] + x[10]; b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[11] + x[11]; a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[12] + x[12]; h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[13] + x[13]; g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[14] + x[14]; f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[15] + x[15]; e += t1; a = t0 + t1; }
while(0);
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[16] + ( tm = (( ((x[(16 -2)&0x0f]) << (45))
| ((x[(16 -2)&0x0f]) >> (64-(45))) )^( ((x[(16 -2)&0x0f]) << (3)) | ((x[(16
-2)&0x0f]) >> (64-(3))) )^(x[(16 -2)&0x0f]>>6)) + x[(16 -7)&0x0f] + (( ((x[(16
-15)&0x0f]) << (63)) | ((x[(16 -15)&0x0f]) >> (64-(63))) )^( ((x[(16
-15)&0x0f]) << (56)) | ((x[(16 -15)&0x0f]) >> (64-(56))) )^(x[(16
-15)&0x0f]>>7)) + x[16&0x0f] , x[16&0x0f] = tm ); d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[17] + ( tm = (( ((x[(17 -2)&0x0f]) << (45))
| ((x[(17 -2)&0x0f]) >> (64-(45))) )^( ((x[(17 -2)&0x0f]) << (3)) | ((x[(17
-2)&0x0f]) >> (64-(3))) )^(x[(17 -2)&0x0f]>>6)) + x[(17 -7)&0x0f] + (( ((x[(17
-15)&0x0f]) << (63)) | ((x[(17 -15)&0x0f]) >> (64-(63))) )^( ((x[(17
-15)&0x0f]) << (56)) | ((x[(17 -15)&0x0f]) >> (64-(56))) )^(x[(17
-15)&0x0f]>>7)) + x[17&0x0f] , x[17&0x0f] = tm ); c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[18] + ( tm = (( ((x[(18 -2)&0x0f]) << (45))
| ((x[(18 -2)&0x0f]) >> (64-(45))) )^( ((x[(18 -2)&0x0f]) << (3)) | ((x[(18
-2)&0x0f]) >> (64-(3))) )^(x[(18 -2)&0x0f]>>6)) + x[(18 -7)&0x0f] + (( ((x[(18
-15)&0x0f]) << (63)) | ((x[(18 -15)&0x0f]) >> (64-(63))) )^( ((x[(18
-15)&0x0f]) << (56)) | ((x[(18 -15)&0x0f]) >> (64-(56))) )^(x[(18
-15)&0x0f]>>7)) + x[18&0x0f] , x[18&0x0f] = tm ); b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[19] + ( tm = (( ((x[(19 -2)&0x0f]) << (45))
| ((x[(19 -2)&0x0f]) >> (64-(45))) )^( ((x[(19 -2)&0x0f]) << (3)) | ((x[(19
-2)&0x0f]) >> (64-(3))) )^(x[(19 -2)&0x0f]>>6)) + x[(19 -7)&0x0f] + (( ((x[(19
-15)&0x0f]) << (63)) | ((x[(19 -15)&0x0f]) >> (64-(63))) )^( ((x[(19
-15)&0x0f]) << (56)) | ((x[(19 -15)&0x0f]) >> (64-(56))) )^(x[(19
-15)&0x0f]>>7)) + x[19&0x0f] , x[19&0x0f] = tm ); a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[20] + ( tm = (( ((x[(20 -2)&0x0f]) << (45))
| ((x[(20 -2)&0x0f]) >> (64-(45))) )^( ((x[(20 -2)&0x0f]) << (3)) | ((x[(20
-2)&0x0f]) >> (64-(3))) )^(x[(20 -2)&0x0f]>>6)) + x[(20 -7)&0x0f] + (( ((x[(20
-15)&0x0f]) << (63)) | ((x[(20 -15)&0x0f]) >> (64-(63))) )^( ((x[(20
-15)&0x0f]) << (56)) | ((x[(20 -15)&0x0f]) >> (64-(56))) )^(x[(20
-15)&0x0f]>>7)) + x[20&0x0f] , x[20&0x0f] = tm ); h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[21] + ( tm = (( ((x[(21 -2)&0x0f]) << (45))
| ((x[(21 -2)&0x0f]) >> (64-(45))) )^( ((x[(21 -2)&0x0f]) << (3)) | ((x[(21
-2)&0x0f]) >> (64-(3))) )^(x[(21 -2)&0x0f]>>6)) + x[(21 -7)&0x0f] + (( ((x[(21
-15)&0x0f]) << (63)) | ((x[(21 -15)&0x0f]) >> (64-(63))) )^( ((x[(21
-15)&0x0f]) << (56)) | ((x[(21 -15)&0x0f]) >> (64-(56))) )^(x[(21
-15)&0x0f]>>7)) + x[21&0x0f] , x[21&0x0f] = tm ); g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[22] + ( tm = (( ((x[(22 -2)&0x0f]) << (45))
| ((x[(22 -2)&0x0f]) >> (64-(45))) )^( ((x[(22 -2)&0x0f]) << (3)) | ((x[(22
-2)&0x0f]) >> (64-(3))) )^(x[(22 -2)&0x0f]>>6)) + x[(22 -7)&0x0f] + (( ((x[(22
-15)&0x0f]) << (63)) | ((x[(22 -15)&0x0f]) >> (64-(63))) )^( ((x[(22
-15)&0x0f]) << (56)) | ((x[(22 -15)&0x0f]) >> (64-(56))) )^(x[(22
-15)&0x0f]>>7)) + x[22&0x0f] , x[22&0x0f] = tm ); f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[23] + ( tm = (( ((x[(23 -2)&0x0f]) << (45))
| ((x[(23 -2)&0x0f]) >> (64-(45))) )^( ((x[(23 -2)&0x0f]) << (3)) | ((x[(23
-2)&0x0f]) >> (64-(3))) )^(x[(23 -2)&0x0f]>>6)) + x[(23 -7)&0x0f] + (( ((x[(23
-15)&0x0f]) << (63)) | ((x[(23 -15)&0x0f]) >> (64-(63))) )^( ((x[(23
-15)&0x0f]) << (56)) | ((x[(23 -15)&0x0f]) >> (64-(56))) )^(x[(23
-15)&0x0f]>>7)) + x[23&0x0f] , x[23&0x0f] = tm ); e += t1; a = t0 + t1; }
while(0);
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[24] + ( tm = (( ((x[(24 -2)&0x0f]) << (45))
| ((x[(24 -2)&0x0f]) >> (64-(45))) )^( ((x[(24 -2)&0x0f]) << (3)) | ((x[(24
-2)&0x0f]) >> (64-(3))) )^(x[(24 -2)&0x0f]>>6)) + x[(24 -7)&0x0f] + (( ((x[(24
-15)&0x0f]) << (63)) | ((x[(24 -15)&0x0f]) >> (64-(63))) )^( ((x[(24
-15)&0x0f]) << (56)) | ((x[(24 -15)&0x0f]) >> (64-(56))) )^(x[(24
-15)&0x0f]>>7)) + x[24&0x0f] , x[24&0x0f] = tm ); d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[25] + ( tm = (( ((x[(25 -2)&0x0f]) << (45))
| ((x[(25 -2)&0x0f]) >> (64-(45))) )^( ((x[(25 -2)&0x0f]) << (3)) | ((x[(25
-2)&0x0f]) >> (64-(3))) )^(x[(25 -2)&0x0f]>>6)) + x[(25 -7)&0x0f] + (( ((x[(25
-15)&0x0f]) << (63)) | ((x[(25 -15)&0x0f]) >> (64-(63))) )^( ((x[(25
-15)&0x0f]) << (56)) | ((x[(25 -15)&0x0f]) >> (64-(56))) )^(x[(25
-15)&0x0f]>>7)) + x[25&0x0f] , x[25&0x0f] = tm ); c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[26] + ( tm = (( ((x[(26 -2)&0x0f]) << (45))
| ((x[(26 -2)&0x0f]) >> (64-(45))) )^( ((x[(26 -2)&0x0f]) << (3)) | ((x[(26
-2)&0x0f]) >> (64-(3))) )^(x[(26 -2)&0x0f]>>6)) + x[(26 -7)&0x0f] + (( ((x[(26
-15)&0x0f]) << (63)) | ((x[(26 -15)&0x0f]) >> (64-(63))) )^( ((x[(26
-15)&0x0f]) << (56)) | ((x[(26 -15)&0x0f]) >> (64-(56))) )^(x[(26
-15)&0x0f]>>7)) + x[26&0x0f] , x[26&0x0f] = tm ); b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[27] + ( tm = (( ((x[(27 -2)&0x0f]) << (45))
| ((x[(27 -2)&0x0f]) >> (64-(45))) )^( ((x[(27 -2)&0x0f]) << (3)) | ((x[(27
-2)&0x0f]) >> (64-(3))) )^(x[(27 -2)&0x0f]>>6)) + x[(27 -7)&0x0f] + (( ((x[(27
-15)&0x0f]) << (63)) | ((x[(27 -15)&0x0f]) >> (64-(63))) )^( ((x[(27
-15)&0x0f]) << (56)) | ((x[(27 -15)&0x0f]) >> (64-(56))) )^(x[(27
-15)&0x0f]>>7)) + x[27&0x0f] , x[27&0x0f] = tm ); a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[28] + ( tm = (( ((x[(28 -2)&0x0f]) << (45))
| ((x[(28 -2)&0x0f]) >> (64-(45))) )^( ((x[(28 -2)&0x0f]) << (3)) | ((x[(28
-2)&0x0f]) >> (64-(3))) )^(x[(28 -2)&0x0f]>>6)) + x[(28 -7)&0x0f] + (( ((x[(28
-15)&0x0f]) << (63)) | ((x[(28 -15)&0x0f]) >> (64-(63))) )^( ((x[(28
-15)&0x0f]) << (56)) | ((x[(28 -15)&0x0f]) >> (64-(56))) )^(x[(28
-15)&0x0f]>>7)) + x[28&0x0f] , x[28&0x0f] = tm ); h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[29] + ( tm = (( ((x[(29 -2)&0x0f]) << (45))
| ((x[(29 -2)&0x0f]) >> (64-(45))) )^( ((x[(29 -2)&0x0f]) << (3)) | ((x[(29
-2)&0x0f]) >> (64-(3))) )^(x[(29 -2)&0x0f]>>6)) + x[(29 -7)&0x0f] + (( ((x[(29
-15)&0x0f]) << (63)) | ((x[(29 -15)&0x0f]) >> (64-(63))) )^( ((x[(29
-15)&0x0f]) << (56)) | ((x[(29 -15)&0x0f]) >> (64-(56))) )^(x[(29
-15)&0x0f]>>7)) + x[29&0x0f] , x[29&0x0f] = tm ); g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[30] + ( tm = (( ((x[(30 -2)&0x0f]) << (45))
| ((x[(30 -2)&0x0f]) >> (64-(45))) )^( ((x[(30 -2)&0x0f]) << (3)) | ((x[(30
-2)&0x0f]) >> (64-(3))) )^(x[(30 -2)&0x0f]>>6)) + x[(30 -7)&0x0f] + (( ((x[(30
-15)&0x0f]) << (63)) | ((x[(30 -15)&0x0f]) >> (64-(63))) )^( ((x[(30
-15)&0x0f]) << (56)) | ((x[(30 -15)&0x0f]) >> (64-(56))) )^(x[(30
-15)&0x0f]>>7)) + x[30&0x0f] , x[30&0x0f] = tm ); f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[31] + ( tm = (( ((x[(31 -2)&0x0f]) << (45))
| ((x[(31 -2)&0x0f]) >> (64-(45))) )^( ((x[(31 -2)&0x0f]) << (3)) | ((x[(31
-2)&0x0f]) >> (64-(3))) )^(x[(31 -2)&0x0f]>>6)) + x[(31 -7)&0x0f] + (( ((x[(31
-15)&0x0f]) << (63)) | ((x[(31 -15)&0x0f]) >> (64-(63))) )^( ((x[(31
-15)&0x0f]) << (56)) | ((x[(31 -15)&0x0f]) >> (64-(56))) )^(x[(31
-15)&0x0f]>>7)) + x[31&0x0f] , x[31&0x0f] = tm ); e += t1; a = t0 + t1; }
while(0);
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[32] + ( tm = (( ((x[(32 -2)&0x0f]) << (45))
| ((x[(32 -2)&0x0f]) >> (64-(45))) )^( ((x[(32 -2)&0x0f]) << (3)) | ((x[(32
-2)&0x0f]) >> (64-(3))) )^(x[(32 -2)&0x0f]>>6)) + x[(32 -7)&0x0f] + (( ((x[(32
-15)&0x0f]) << (63)) | ((x[(32 -15)&0x0f]) >> (64-(63))) )^( ((x[(32
-15)&0x0f]) << (56)) | ((x[(32 -15)&0x0f]) >> (64-(56))) )^(x[(32
-15)&0x0f]>>7)) + x[32&0x0f] , x[32&0x0f] = tm ); d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[33] + ( tm = (( ((x[(33 -2)&0x0f]) << (45))
| ((x[(33 -2)&0x0f]) >> (64-(45))) )^( ((x[(33 -2)&0x0f]) << (3)) | ((x[(33
-2)&0x0f]) >> (64-(3))) )^(x[(33 -2)&0x0f]>>6)) + x[(33 -7)&0x0f] + (( ((x[(33
-15)&0x0f]) << (63)) | ((x[(33 -15)&0x0f]) >> (64-(63))) )^( ((x[(33
-15)&0x0f]) << (56)) | ((x[(33 -15)&0x0f]) >> (64-(56))) )^(x[(33
-15)&0x0f]>>7)) + x[33&0x0f] , x[33&0x0f] = tm ); c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[34] + ( tm = (( ((x[(34 -2)&0x0f]) << (45))
| ((x[(34 -2)&0x0f]) >> (64-(45))) )^( ((x[(34 -2)&0x0f]) << (3)) | ((x[(34
-2)&0x0f]) >> (64-(3))) )^(x[(34 -2)&0x0f]>>6)) + x[(34 -7)&0x0f] + (( ((x[(34
-15)&0x0f]) << (63)) | ((x[(34 -15)&0x0f]) >> (64-(63))) )^( ((x[(34
-15)&0x0f]) << (56)) | ((x[(34 -15)&0x0f]) >> (64-(56))) )^(x[(34
-15)&0x0f]>>7)) + x[34&0x0f] , x[34&0x0f] = tm ); b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[35] + ( tm = (( ((x[(35 -2)&0x0f]) << (45))
| ((x[(35 -2)&0x0f]) >> (64-(45))) )^( ((x[(35 -2)&0x0f]) << (3)) | ((x[(35
-2)&0x0f]) >> (64-(3))) )^(x[(35 -2)&0x0f]>>6)) + x[(35 -7)&0x0f] + (( ((x[(35
-15)&0x0f]) << (63)) | ((x[(35 -15)&0x0f]) >> (64-(63))) )^( ((x[(35
-15)&0x0f]) << (56)) | ((x[(35 -15)&0x0f]) >> (64-(56))) )^(x[(35
-15)&0x0f]>>7)) + x[35&0x0f] , x[35&0x0f] = tm ); a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[36] + ( tm = (( ((x[(36 -2)&0x0f]) << (45))
| ((x[(36 -2)&0x0f]) >> (64-(45))) )^( ((x[(36 -2)&0x0f]) << (3)) | ((x[(36
-2)&0x0f]) >> (64-(3))) )^(x[(36 -2)&0x0f]>>6)) + x[(36 -7)&0x0f] + (( ((x[(36
-15)&0x0f]) << (63)) | ((x[(36 -15)&0x0f]) >> (64-(63))) )^( ((x[(36
-15)&0x0f]) << (56)) | ((x[(36 -15)&0x0f]) >> (64-(56))) )^(x[(36
-15)&0x0f]>>7)) + x[36&0x0f] , x[36&0x0f] = tm ); h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[37] + ( tm = (( ((x[(37 -2)&0x0f]) << (45))
| ((x[(37 -2)&0x0f]) >> (64-(45))) )^( ((x[(37 -2)&0x0f]) << (3)) | ((x[(37
-2)&0x0f]) >> (64-(3))) )^(x[(37 -2)&0x0f]>>6)) + x[(37 -7)&0x0f] + (( ((x[(37
-15)&0x0f]) << (63)) | ((x[(37 -15)&0x0f]) >> (64-(63))) )^( ((x[(37
-15)&0x0f]) << (56)) | ((x[(37 -15)&0x0f]) >> (64-(56))) )^(x[(37
-15)&0x0f]>>7)) + x[37&0x0f] , x[37&0x0f] = tm ); g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[38] + ( tm = (( ((x[(38 -2)&0x0f]) << (45))
| ((x[(38 -2)&0x0f]) >> (64-(45))) )^( ((x[(38 -2)&0x0f]) << (3)) | ((x[(38
-2)&0x0f]) >> (64-(3))) )^(x[(38 -2)&0x0f]>>6)) + x[(38 -7)&0x0f] + (( ((x[(38
-15)&0x0f]) << (63)) | ((x[(38 -15)&0x0f]) >> (64-(63))) )^( ((x[(38
-15)&0x0f]) << (56)) | ((x[(38 -15)&0x0f]) >> (64-(56))) )^(x[(38
-15)&0x0f]>>7)) + x[38&0x0f] , x[38&0x0f] = tm ); f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[39] + ( tm = (( ((x[(39 -2)&0x0f]) << (45))
| ((x[(39 -2)&0x0f]) >> (64-(45))) )^( ((x[(39 -2)&0x0f]) << (3)) | ((x[(39
-2)&0x0f]) >> (64-(3))) )^(x[(39 -2)&0x0f]>>6)) + x[(39 -7)&0x0f] + (( ((x[(39
-15)&0x0f]) << (63)) | ((x[(39 -15)&0x0f]) >> (64-(63))) )^( ((x[(39
-15)&0x0f]) << (56)) | ((x[(39 -15)&0x0f]) >> (64-(56))) )^(x[(39
-15)&0x0f]>>7)) + x[39&0x0f] , x[39&0x0f] = tm ); e += t1; a = t0 + t1; }
while(0);
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[40] + ( tm = (( ((x[(40 -2)&0x0f]) << (45))
| ((x[(40 -2)&0x0f]) >> (64-(45))) )^( ((x[(40 -2)&0x0f]) << (3)) | ((x[(40
-2)&0x0f]) >> (64-(3))) )^(x[(40 -2)&0x0f]>>6)) + x[(40 -7)&0x0f] + (( ((x[(40
-15)&0x0f]) << (63)) | ((x[(40 -15)&0x0f]) >> (64-(63))) )^( ((x[(40
-15)&0x0f]) << (56)) | ((x[(40 -15)&0x0f]) >> (64-(56))) )^(x[(40
-15)&0x0f]>>7)) + x[40&0x0f] , x[40&0x0f] = tm ); d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[41] + ( tm = (( ((x[(41 -2)&0x0f]) << (45))
| ((x[(41 -2)&0x0f]) >> (64-(45))) )^( ((x[(41 -2)&0x0f]) << (3)) | ((x[(41
-2)&0x0f]) >> (64-(3))) )^(x[(41 -2)&0x0f]>>6)) + x[(41 -7)&0x0f] + (( ((x[(41
-15)&0x0f]) << (63)) | ((x[(41 -15)&0x0f]) >> (64-(63))) )^( ((x[(41
-15)&0x0f]) << (56)) | ((x[(41 -15)&0x0f]) >> (64-(56))) )^(x[(41
-15)&0x0f]>>7)) + x[41&0x0f] , x[41&0x0f] = tm ); c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[42] + ( tm = (( ((x[(42 -2)&0x0f]) << (45))
| ((x[(42 -2)&0x0f]) >> (64-(45))) )^( ((x[(42 -2)&0x0f]) << (3)) | ((x[(42
-2)&0x0f]) >> (64-(3))) )^(x[(42 -2)&0x0f]>>6)) + x[(42 -7)&0x0f] + (( ((x[(42
-15)&0x0f]) << (63)) | ((x[(42 -15)&0x0f]) >> (64-(63))) )^( ((x[(42
-15)&0x0f]) << (56)) | ((x[(42 -15)&0x0f]) >> (64-(56))) )^(x[(42
-15)&0x0f]>>7)) + x[42&0x0f] , x[42&0x0f] = tm ); b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[43] + ( tm = (( ((x[(43 -2)&0x0f]) << (45))
| ((x[(43 -2)&0x0f]) >> (64-(45))) )^( ((x[(43 -2)&0x0f]) << (3)) | ((x[(43
-2)&0x0f]) >> (64-(3))) )^(x[(43 -2)&0x0f]>>6)) + x[(43 -7)&0x0f] + (( ((x[(43
-15)&0x0f]) << (63)) | ((x[(43 -15)&0x0f]) >> (64-(63))) )^( ((x[(43
-15)&0x0f]) << (56)) | ((x[(43 -15)&0x0f]) >> (64-(56))) )^(x[(43
-15)&0x0f]>>7)) + x[43&0x0f] , x[43&0x0f] = tm ); a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[44] + ( tm = (( ((x[(44 -2)&0x0f]) << (45))
| ((x[(44 -2)&0x0f]) >> (64-(45))) )^( ((x[(44 -2)&0x0f]) << (3)) | ((x[(44
-2)&0x0f]) >> (64-(3))) )^(x[(44 -2)&0x0f]>>6)) + x[(44 -7)&0x0f] + (( ((x[(44
-15)&0x0f]) << (63)) | ((x[(44 -15)&0x0f]) >> (64-(63))) )^( ((x[(44
-15)&0x0f]) << (56)) | ((x[(44 -15)&0x0f]) >> (64-(56))) )^(x[(44
-15)&0x0f]>>7)) + x[44&0x0f] , x[44&0x0f] = tm ); h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[45] + ( tm = (( ((x[(45 -2)&0x0f]) << (45))
| ((x[(45 -2)&0x0f]) >> (64-(45))) )^( ((x[(45 -2)&0x0f]) << (3)) | ((x[(45
-2)&0x0f]) >> (64-(3))) )^(x[(45 -2)&0x0f]>>6)) + x[(45 -7)&0x0f] + (( ((x[(45
-15)&0x0f]) << (63)) | ((x[(45 -15)&0x0f]) >> (64-(63))) )^( ((x[(45
-15)&0x0f]) << (56)) | ((x[(45 -15)&0x0f]) >> (64-(56))) )^(x[(45
-15)&0x0f]>>7)) + x[45&0x0f] , x[45&0x0f] = tm ); g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[46] + ( tm = (( ((x[(46 -2)&0x0f]) << (45))
| ((x[(46 -2)&0x0f]) >> (64-(45))) )^( ((x[(46 -2)&0x0f]) << (3)) | ((x[(46
-2)&0x0f]) >> (64-(3))) )^(x[(46 -2)&0x0f]>>6)) + x[(46 -7)&0x0f] + (( ((x[(46
-15)&0x0f]) << (63)) | ((x[(46 -15)&0x0f]) >> (64-(63))) )^( ((x[(46
-15)&0x0f]) << (56)) | ((x[(46 -15)&0x0f]) >> (64-(56))) )^(x[(46
-15)&0x0f]>>7)) + x[46&0x0f] , x[46&0x0f] = tm ); f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[47] + ( tm = (( ((x[(47 -2)&0x0f]) << (45))
| ((x[(47 -2)&0x0f]) >> (64-(45))) )^( ((x[(47 -2)&0x0f]) << (3)) | ((x[(47
-2)&0x0f]) >> (64-(3))) )^(x[(47 -2)&0x0f]>>6)) + x[(47 -7)&0x0f] + (( ((x[(47
-15)&0x0f]) << (63)) | ((x[(47 -15)&0x0f]) >> (64-(63))) )^( ((x[(47
-15)&0x0f]) << (56)) | ((x[(47 -15)&0x0f]) >> (64-(56))) )^(x[(47
-15)&0x0f]>>7)) + x[47&0x0f] , x[47&0x0f] = tm ); e += t1; a = t0 + t1; }
while(0);
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[48] + ( tm = (( ((x[(48 -2)&0x0f]) << (45))
| ((x[(48 -2)&0x0f]) >> (64-(45))) )^( ((x[(48 -2)&0x0f]) << (3)) | ((x[(48
-2)&0x0f]) >> (64-(3))) )^(x[(48 -2)&0x0f]>>6)) + x[(48 -7)&0x0f] + (( ((x[(48
-15)&0x0f]) << (63)) | ((x[(48 -15)&0x0f]) >> (64-(63))) )^( ((x[(48
-15)&0x0f]) << (56)) | ((x[(48 -15)&0x0f]) >> (64-(56))) )^(x[(48
-15)&0x0f]>>7)) + x[48&0x0f] , x[48&0x0f] = tm ); d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[49] + ( tm = (( ((x[(49 -2)&0x0f]) << (45))
| ((x[(49 -2)&0x0f]) >> (64-(45))) )^( ((x[(49 -2)&0x0f]) << (3)) | ((x[(49
-2)&0x0f]) >> (64-(3))) )^(x[(49 -2)&0x0f]>>6)) + x[(49 -7)&0x0f] + (( ((x[(49
-15)&0x0f]) << (63)) | ((x[(49 -15)&0x0f]) >> (64-(63))) )^( ((x[(49
-15)&0x0f]) << (56)) | ((x[(49 -15)&0x0f]) >> (64-(56))) )^(x[(49
-15)&0x0f]>>7)) + x[49&0x0f] , x[49&0x0f] = tm ); c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[50] + ( tm = (( ((x[(50 -2)&0x0f]) << (45))
| ((x[(50 -2)&0x0f]) >> (64-(45))) )^( ((x[(50 -2)&0x0f]) << (3)) | ((x[(50
-2)&0x0f]) >> (64-(3))) )^(x[(50 -2)&0x0f]>>6)) + x[(50 -7)&0x0f] + (( ((x[(50
-15)&0x0f]) << (63)) | ((x[(50 -15)&0x0f]) >> (64-(63))) )^( ((x[(50
-15)&0x0f]) << (56)) | ((x[(50 -15)&0x0f]) >> (64-(56))) )^(x[(50
-15)&0x0f]>>7)) + x[50&0x0f] , x[50&0x0f] = tm ); b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[51] + ( tm = (( ((x[(51 -2)&0x0f]) << (45))
| ((x[(51 -2)&0x0f]) >> (64-(45))) )^( ((x[(51 -2)&0x0f]) << (3)) | ((x[(51
-2)&0x0f]) >> (64-(3))) )^(x[(51 -2)&0x0f]>>6)) + x[(51 -7)&0x0f] + (( ((x[(51
-15)&0x0f]) << (63)) | ((x[(51 -15)&0x0f]) >> (64-(63))) )^( ((x[(51
-15)&0x0f]) << (56)) | ((x[(51 -15)&0x0f]) >> (64-(56))) )^(x[(51
-15)&0x0f]>>7)) + x[51&0x0f] , x[51&0x0f] = tm ); a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[52] + ( tm = (( ((x[(52 -2)&0x0f]) << (45))
| ((x[(52 -2)&0x0f]) >> (64-(45))) )^( ((x[(52 -2)&0x0f]) << (3)) | ((x[(52
-2)&0x0f]) >> (64-(3))) )^(x[(52 -2)&0x0f]>>6)) + x[(52 -7)&0x0f] + (( ((x[(52
-15)&0x0f]) << (63)) | ((x[(52 -15)&0x0f]) >> (64-(63))) )^( ((x[(52
-15)&0x0f]) << (56)) | ((x[(52 -15)&0x0f]) >> (64-(56))) )^(x[(52
-15)&0x0f]>>7)) + x[52&0x0f] , x[52&0x0f] = tm ); h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[53] + ( tm = (( ((x[(53 -2)&0x0f]) << (45))
| ((x[(53 -2)&0x0f]) >> (64-(45))) )^( ((x[(53 -2)&0x0f]) << (3)) | ((x[(53
-2)&0x0f]) >> (64-(3))) )^(x[(53 -2)&0x0f]>>6)) + x[(53 -7)&0x0f] + (( ((x[(53
-15)&0x0f]) << (63)) | ((x[(53 -15)&0x0f]) >> (64-(63))) )^( ((x[(53
-15)&0x0f]) << (56)) | ((x[(53 -15)&0x0f]) >> (64-(56))) )^(x[(53
-15)&0x0f]>>7)) + x[53&0x0f] , x[53&0x0f] = tm ); g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[54] + ( tm = (( ((x[(54 -2)&0x0f]) << (45))
| ((x[(54 -2)&0x0f]) >> (64-(45))) )^( ((x[(54 -2)&0x0f]) << (3)) | ((x[(54
-2)&0x0f]) >> (64-(3))) )^(x[(54 -2)&0x0f]>>6)) + x[(54 -7)&0x0f] + (( ((x[(54
-15)&0x0f]) << (63)) | ((x[(54 -15)&0x0f]) >> (64-(63))) )^( ((x[(54
-15)&0x0f]) << (56)) | ((x[(54 -15)&0x0f]) >> (64-(56))) )^(x[(54
-15)&0x0f]>>7)) + x[54&0x0f] , x[54&0x0f] = tm ); f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[55] + ( tm = (( ((x[(55 -2)&0x0f]) << (45))
| ((x[(55 -2)&0x0f]) >> (64-(45))) )^( ((x[(55 -2)&0x0f]) << (3)) | ((x[(55
-2)&0x0f]) >> (64-(3))) )^(x[(55 -2)&0x0f]>>6)) + x[(55 -7)&0x0f] + (( ((x[(55
-15)&0x0f]) << (63)) | ((x[(55 -15)&0x0f]) >> (64-(63))) )^( ((x[(55
-15)&0x0f]) << (56)) | ((x[(55 -15)&0x0f]) >> (64-(56))) )^(x[(55
-15)&0x0f]>>7)) + x[55&0x0f] , x[55&0x0f] = tm ); e += t1; a = t0 + t1; }
while(0);
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[56] + ( tm = (( ((x[(56 -2)&0x0f]) << (45))
| ((x[(56 -2)&0x0f]) >> (64-(45))) )^( ((x[(56 -2)&0x0f]) << (3)) | ((x[(56
-2)&0x0f]) >> (64-(3))) )^(x[(56 -2)&0x0f]>>6)) + x[(56 -7)&0x0f] + (( ((x[(56
-15)&0x0f]) << (63)) | ((x[(56 -15)&0x0f]) >> (64-(63))) )^( ((x[(56
-15)&0x0f]) << (56)) | ((x[(56 -15)&0x0f]) >> (64-(56))) )^(x[(56
-15)&0x0f]>>7)) + x[56&0x0f] , x[56&0x0f] = tm ); d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[57] + ( tm = (( ((x[(57 -2)&0x0f]) << (45))
| ((x[(57 -2)&0x0f]) >> (64-(45))) )^( ((x[(57 -2)&0x0f]) << (3)) | ((x[(57
-2)&0x0f]) >> (64-(3))) )^(x[(57 -2)&0x0f]>>6)) + x[(57 -7)&0x0f] + (( ((x[(57
-15)&0x0f]) << (63)) | ((x[(57 -15)&0x0f]) >> (64-(63))) )^( ((x[(57
-15)&0x0f]) << (56)) | ((x[(57 -15)&0x0f]) >> (64-(56))) )^(x[(57
-15)&0x0f]>>7)) + x[57&0x0f] , x[57&0x0f] = tm ); c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[58] + ( tm = (( ((x[(58 -2)&0x0f]) << (45))
| ((x[(58 -2)&0x0f]) >> (64-(45))) )^( ((x[(58 -2)&0x0f]) << (3)) | ((x[(58
-2)&0x0f]) >> (64-(3))) )^(x[(58 -2)&0x0f]>>6)) + x[(58 -7)&0x0f] + (( ((x[(58
-15)&0x0f]) << (63)) | ((x[(58 -15)&0x0f]) >> (64-(63))) )^( ((x[(58
-15)&0x0f]) << (56)) | ((x[(58 -15)&0x0f]) >> (64-(56))) )^(x[(58
-15)&0x0f]>>7)) + x[58&0x0f] , x[58&0x0f] = tm ); b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[59] + ( tm = (( ((x[(59 -2)&0x0f]) << (45))
| ((x[(59 -2)&0x0f]) >> (64-(45))) )^( ((x[(59 -2)&0x0f]) << (3)) | ((x[(59
-2)&0x0f]) >> (64-(3))) )^(x[(59 -2)&0x0f]>>6)) + x[(59 -7)&0x0f] + (( ((x[(59
-15)&0x0f]) << (63)) | ((x[(59 -15)&0x0f]) >> (64-(63))) )^( ((x[(59
-15)&0x0f]) << (56)) | ((x[(59 -15)&0x0f]) >> (64-(56))) )^(x[(59
-15)&0x0f]>>7)) + x[59&0x0f] , x[59&0x0f] = tm ); a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[60] + ( tm = (( ((x[(60 -2)&0x0f]) << (45))
| ((x[(60 -2)&0x0f]) >> (64-(45))) )^( ((x[(60 -2)&0x0f]) << (3)) | ((x[(60
-2)&0x0f]) >> (64-(3))) )^(x[(60 -2)&0x0f]>>6)) + x[(60 -7)&0x0f] + (( ((x[(60
-15)&0x0f]) << (63)) | ((x[(60 -15)&0x0f]) >> (64-(63))) )^( ((x[(60
-15)&0x0f]) << (56)) | ((x[(60 -15)&0x0f]) >> (64-(56))) )^(x[(60
-15)&0x0f]>>7)) + x[60&0x0f] , x[60&0x0f] = tm ); h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[61] + ( tm = (( ((x[(61 -2)&0x0f]) << (45))
| ((x[(61 -2)&0x0f]) >> (64-(45))) )^( ((x[(61 -2)&0x0f]) << (3)) | ((x[(61
-2)&0x0f]) >> (64-(3))) )^(x[(61 -2)&0x0f]>>6)) + x[(61 -7)&0x0f] + (( ((x[(61
-15)&0x0f]) << (63)) | ((x[(61 -15)&0x0f]) >> (64-(63))) )^( ((x[(61
-15)&0x0f]) << (56)) | ((x[(61 -15)&0x0f]) >> (64-(56))) )^(x[(61
-15)&0x0f]>>7)) + x[61&0x0f] , x[61&0x0f] = tm ); g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[62] + ( tm = (( ((x[(62 -2)&0x0f]) << (45))
| ((x[(62 -2)&0x0f]) >> (64-(45))) )^( ((x[(62 -2)&0x0f]) << (3)) | ((x[(62
-2)&0x0f]) >> (64-(3))) )^(x[(62 -2)&0x0f]>>6)) + x[(62 -7)&0x0f] + (( ((x[(62
-15)&0x0f]) << (63)) | ((x[(62 -15)&0x0f]) >> (64-(63))) )^( ((x[(62
-15)&0x0f]) << (56)) | ((x[(62 -15)&0x0f]) >> (64-(56))) )^(x[(62
-15)&0x0f]>>7)) + x[62&0x0f] , x[62&0x0f] = tm ); f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[63] + ( tm = (( ((x[(63 -2)&0x0f]) << (45))
| ((x[(63 -2)&0x0f]) >> (64-(45))) )^( ((x[(63 -2)&0x0f]) << (3)) | ((x[(63
-2)&0x0f]) >> (64-(3))) )^(x[(63 -2)&0x0f]>>6)) + x[(63 -7)&0x0f] + (( ((x[(63
-15)&0x0f]) << (63)) | ((x[(63 -15)&0x0f]) >> (64-(63))) )^( ((x[(63
-15)&0x0f]) << (56)) | ((x[(63 -15)&0x0f]) >> (64-(56))) )^(x[(63
-15)&0x0f]>>7)) + x[63&0x0f] , x[63&0x0f] = tm ); e += t1; a = t0 + t1; }
while(0);
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[64] + ( tm = (( ((x[(64 -2)&0x0f]) << (45))
| ((x[(64 -2)&0x0f]) >> (64-(45))) )^( ((x[(64 -2)&0x0f]) << (3)) | ((x[(64
-2)&0x0f]) >> (64-(3))) )^(x[(64 -2)&0x0f]>>6)) + x[(64 -7)&0x0f] + (( ((x[(64
-15)&0x0f]) << (63)) | ((x[(64 -15)&0x0f]) >> (64-(63))) )^( ((x[(64
-15)&0x0f]) << (56)) | ((x[(64 -15)&0x0f]) >> (64-(56))) )^(x[(64
-15)&0x0f]>>7)) + x[64&0x0f] , x[64&0x0f] = tm ); d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[65] + ( tm = (( ((x[(65 -2)&0x0f]) << (45))
| ((x[(65 -2)&0x0f]) >> (64-(45))) )^( ((x[(65 -2)&0x0f]) << (3)) | ((x[(65
-2)&0x0f]) >> (64-(3))) )^(x[(65 -2)&0x0f]>>6)) + x[(65 -7)&0x0f] + (( ((x[(65
-15)&0x0f]) << (63)) | ((x[(65 -15)&0x0f]) >> (64-(63))) )^( ((x[(65
-15)&0x0f]) << (56)) | ((x[(65 -15)&0x0f]) >> (64-(56))) )^(x[(65
-15)&0x0f]>>7)) + x[65&0x0f] , x[65&0x0f] = tm ); c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[66] + ( tm = (( ((x[(66 -2)&0x0f]) << (45))
| ((x[(66 -2)&0x0f]) >> (64-(45))) )^( ((x[(66 -2)&0x0f]) << (3)) | ((x[(66
-2)&0x0f]) >> (64-(3))) )^(x[(66 -2)&0x0f]>>6)) + x[(66 -7)&0x0f] + (( ((x[(66
-15)&0x0f]) << (63)) | ((x[(66 -15)&0x0f]) >> (64-(63))) )^( ((x[(66
-15)&0x0f]) << (56)) | ((x[(66 -15)&0x0f]) >> (64-(56))) )^(x[(66
-15)&0x0f]>>7)) + x[66&0x0f] , x[66&0x0f] = tm ); b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[67] + ( tm = (( ((x[(67 -2)&0x0f]) << (45))
| ((x[(67 -2)&0x0f]) >> (64-(45))) )^( ((x[(67 -2)&0x0f]) << (3)) | ((x[(67
-2)&0x0f]) >> (64-(3))) )^(x[(67 -2)&0x0f]>>6)) + x[(67 -7)&0x0f] + (( ((x[(67
-15)&0x0f]) << (63)) | ((x[(67 -15)&0x0f]) >> (64-(63))) )^( ((x[(67
-15)&0x0f]) << (56)) | ((x[(67 -15)&0x0f]) >> (64-(56))) )^(x[(67
-15)&0x0f]>>7)) + x[67&0x0f] , x[67&0x0f] = tm ); a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[68] + ( tm = (( ((x[(68 -2)&0x0f]) << (45))
| ((x[(68 -2)&0x0f]) >> (64-(45))) )^( ((x[(68 -2)&0x0f]) << (3)) | ((x[(68
-2)&0x0f]) >> (64-(3))) )^(x[(68 -2)&0x0f]>>6)) + x[(68 -7)&0x0f] + (( ((x[(68
-15)&0x0f]) << (63)) | ((x[(68 -15)&0x0f]) >> (64-(63))) )^( ((x[(68
-15)&0x0f]) << (56)) | ((x[(68 -15)&0x0f]) >> (64-(56))) )^(x[(68
-15)&0x0f]>>7)) + x[68&0x0f] , x[68&0x0f] = tm ); h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[69] + ( tm = (( ((x[(69 -2)&0x0f]) << (45))
| ((x[(69 -2)&0x0f]) >> (64-(45))) )^( ((x[(69 -2)&0x0f]) << (3)) | ((x[(69
-2)&0x0f]) >> (64-(3))) )^(x[(69 -2)&0x0f]>>6)) + x[(69 -7)&0x0f] + (( ((x[(69
-15)&0x0f]) << (63)) | ((x[(69 -15)&0x0f]) >> (64-(63))) )^( ((x[(69
-15)&0x0f]) << (56)) | ((x[(69 -15)&0x0f]) >> (64-(56))) )^(x[(69
-15)&0x0f]>>7)) + x[69&0x0f] , x[69&0x0f] = tm ); g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[70] + ( tm = (( ((x[(70 -2)&0x0f]) << (45))
| ((x[(70 -2)&0x0f]) >> (64-(45))) )^( ((x[(70 -2)&0x0f]) << (3)) | ((x[(70
-2)&0x0f]) >> (64-(3))) )^(x[(70 -2)&0x0f]>>6)) + x[(70 -7)&0x0f] + (( ((x[(70
-15)&0x0f]) << (63)) | ((x[(70 -15)&0x0f]) >> (64-(63))) )^( ((x[(70
-15)&0x0f]) << (56)) | ((x[(70 -15)&0x0f]) >> (64-(56))) )^(x[(70
-15)&0x0f]>>7)) + x[70&0x0f] , x[70&0x0f] = tm ); f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[71] + ( tm = (( ((x[(71 -2)&0x0f]) << (45))
| ((x[(71 -2)&0x0f]) >> (64-(45))) )^( ((x[(71 -2)&0x0f]) << (3)) | ((x[(71
-2)&0x0f]) >> (64-(3))) )^(x[(71 -2)&0x0f]>>6)) + x[(71 -7)&0x0f] + (( ((x[(71
-15)&0x0f]) << (63)) | ((x[(71 -15)&0x0f]) >> (64-(63))) )^( ((x[(71
-15)&0x0f]) << (56)) | ((x[(71 -15)&0x0f]) >> (64-(56))) )^(x[(71
-15)&0x0f]>>7)) + x[71&0x0f] , x[71&0x0f] = tm ); e += t1; a = t0 + t1; }
while(0);
do { t0 = (( ((a) << (36)) | ((a) >> (64-(36))) )^( ((a) << (30)) | ((a)
>> (64-(30))) )^( ((a) << (25)) | ((a) >> (64-(25))) )) + ( ( a & b ) | ( c & (
a | b ) ) ); t1 = h + (( ((e) << (50)) | ((e) >> (64-(50))) )^( ((e) << (46)) |
((e) >> (64-(46))) )^( ((e) << (23)) | ((e) >> (64-(23))) )) + ( g ^ ( e & ( f
^ g ) ) ) + sha512_round_constants[72] + ( tm = (( ((x[(72 -2)&0x0f]) << (45))
| ((x[(72 -2)&0x0f]) >> (64-(45))) )^( ((x[(72 -2)&0x0f]) << (3)) | ((x[(72
-2)&0x0f]) >> (64-(3))) )^(x[(72 -2)&0x0f]>>6)) + x[(72 -7)&0x0f] + (( ((x[(72
-15)&0x0f]) << (63)) | ((x[(72 -15)&0x0f]) >> (64-(63))) )^( ((x[(72
-15)&0x0f]) << (56)) | ((x[(72 -15)&0x0f]) >> (64-(56))) )^(x[(72
-15)&0x0f]>>7)) + x[72&0x0f] , x[72&0x0f] = tm ); d += t1; h = t0 + t1; }
while(0);
do { t0 = (( ((h) << (36)) | ((h) >> (64-(36))) )^( ((h) << (30)) | ((h)
>> (64-(30))) )^( ((h) << (25)) | ((h) >> (64-(25))) )) + ( ( h & a ) | ( b & (
h | a ) ) ); t1 = g + (( ((d) << (50)) | ((d) >> (64-(50))) )^( ((d) << (46)) |
((d) >> (64-(46))) )^( ((d) << (23)) | ((d) >> (64-(23))) )) + ( f ^ ( d & ( e
^ f ) ) ) + sha512_round_constants[73] + ( tm = (( ((x[(73 -2)&0x0f]) << (45))
| ((x[(73 -2)&0x0f]) >> (64-(45))) )^( ((x[(73 -2)&0x0f]) << (3)) | ((x[(73
-2)&0x0f]) >> (64-(3))) )^(x[(73 -2)&0x0f]>>6)) + x[(73 -7)&0x0f] + (( ((x[(73
-15)&0x0f]) << (63)) | ((x[(73 -15)&0x0f]) >> (64-(63))) )^( ((x[(73
-15)&0x0f]) << (56)) | ((x[(73 -15)&0x0f]) >> (64-(56))) )^(x[(73
-15)&0x0f]>>7)) + x[73&0x0f] , x[73&0x0f] = tm ); c += t1; g = t0 + t1; }
while(0);
do { t0 = (( ((g) << (36)) | ((g) >> (64-(36))) )^( ((g) << (30)) | ((g)
>> (64-(30))) )^( ((g) << (25)) | ((g) >> (64-(25))) )) + ( ( g & h ) | ( a & (
g | h ) ) ); t1 = f + (( ((c) << (50)) | ((c) >> (64-(50))) )^( ((c) << (46)) |
((c) >> (64-(46))) )^( ((c) << (23)) | ((c) >> (64-(23))) )) + ( e ^ ( c & ( d
^ e ) ) ) + sha512_round_constants[74] + ( tm = (( ((x[(74 -2)&0x0f]) << (45))
| ((x[(74 -2)&0x0f]) >> (64-(45))) )^( ((x[(74 -2)&0x0f]) << (3)) | ((x[(74
-2)&0x0f]) >> (64-(3))) )^(x[(74 -2)&0x0f]>>6)) + x[(74 -7)&0x0f] + (( ((x[(74
-15)&0x0f]) << (63)) | ((x[(74 -15)&0x0f]) >> (64-(63))) )^( ((x[(74
-15)&0x0f]) << (56)) | ((x[(74 -15)&0x0f]) >> (64-(56))) )^(x[(74
-15)&0x0f]>>7)) + x[74&0x0f] , x[74&0x0f] = tm ); b += t1; f = t0 + t1; }
while(0);
do { t0 = (( ((f) << (36)) | ((f) >> (64-(36))) )^( ((f) << (30)) | ((f)
>> (64-(30))) )^( ((f) << (25)) | ((f) >> (64-(25))) )) + ( ( f & g ) | ( h & (
f | g ) ) ); t1 = e + (( ((b) << (50)) | ((b) >> (64-(50))) )^( ((b) << (46)) |
((b) >> (64-(46))) )^( ((b) << (23)) | ((b) >> (64-(23))) )) + ( d ^ ( b & ( c
^ d ) ) ) + sha512_round_constants[75] + ( tm = (( ((x[(75 -2)&0x0f]) << (45))
| ((x[(75 -2)&0x0f]) >> (64-(45))) )^( ((x[(75 -2)&0x0f]) << (3)) | ((x[(75
-2)&0x0f]) >> (64-(3))) )^(x[(75 -2)&0x0f]>>6)) + x[(75 -7)&0x0f] + (( ((x[(75
-15)&0x0f]) << (63)) | ((x[(75 -15)&0x0f]) >> (64-(63))) )^( ((x[(75
-15)&0x0f]) << (56)) | ((x[(75 -15)&0x0f]) >> (64-(56))) )^(x[(75
-15)&0x0f]>>7)) + x[75&0x0f] , x[75&0x0f] = tm ); a += t1; e = t0 + t1; }
while(0);
do { t0 = (( ((e) << (36)) | ((e) >> (64-(36))) )^( ((e) << (30)) | ((e)
>> (64-(30))) )^( ((e) << (25)) | ((e) >> (64-(25))) )) + ( ( e & f ) | ( g & (
e | f ) ) ); t1 = d + (( ((a) << (50)) | ((a) >> (64-(50))) )^( ((a) << (46)) |
((a) >> (64-(46))) )^( ((a) << (23)) | ((a) >> (64-(23))) )) + ( c ^ ( a & ( b
^ c ) ) ) + sha512_round_constants[76] + ( tm = (( ((x[(76 -2)&0x0f]) << (45))
| ((x[(76 -2)&0x0f]) >> (64-(45))) )^( ((x[(76 -2)&0x0f]) << (3)) | ((x[(76
-2)&0x0f]) >> (64-(3))) )^(x[(76 -2)&0x0f]>>6)) + x[(76 -7)&0x0f] + (( ((x[(76
-15)&0x0f]) << (63)) | ((x[(76 -15)&0x0f]) >> (64-(63))) )^( ((x[(76
-15)&0x0f]) << (56)) | ((x[(76 -15)&0x0f]) >> (64-(56))) )^(x[(76
-15)&0x0f]>>7)) + x[76&0x0f] , x[76&0x0f] = tm ); h += t1; d = t0 + t1; }
while(0);
do { t0 = (( ((d) << (36)) | ((d) >> (64-(36))) )^( ((d) << (30)) | ((d)
>> (64-(30))) )^( ((d) << (25)) | ((d) >> (64-(25))) )) + ( ( d & e ) | ( f & (
d | e ) ) ); t1 = c + (( ((h) << (50)) | ((h) >> (64-(50))) )^( ((h) << (46)) |
((h) >> (64-(46))) )^( ((h) << (23)) | ((h) >> (64-(23))) )) + ( b ^ ( h & ( a
^ b ) ) ) + sha512_round_constants[77] + ( tm = (( ((x[(77 -2)&0x0f]) << (45))
| ((x[(77 -2)&0x0f]) >> (64-(45))) )^( ((x[(77 -2)&0x0f]) << (3)) | ((x[(77
-2)&0x0f]) >> (64-(3))) )^(x[(77 -2)&0x0f]>>6)) + x[(77 -7)&0x0f] + (( ((x[(77
-15)&0x0f]) << (63)) | ((x[(77 -15)&0x0f]) >> (64-(63))) )^( ((x[(77
-15)&0x0f]) << (56)) | ((x[(77 -15)&0x0f]) >> (64-(56))) )^(x[(77
-15)&0x0f]>>7)) + x[77&0x0f] , x[77&0x0f] = tm ); g += t1; c = t0 + t1; }
while(0);
do { t0 = (( ((c) << (36)) | ((c) >> (64-(36))) )^( ((c) << (30)) | ((c)
>> (64-(30))) )^( ((c) << (25)) | ((c) >> (64-(25))) )) + ( ( c & d ) | ( e & (
c | d ) ) ); t1 = b + (( ((g) << (50)) | ((g) >> (64-(50))) )^( ((g) << (46)) |
((g) >> (64-(46))) )^( ((g) << (23)) | ((g) >> (64-(23))) )) + ( a ^ ( g & ( h
^ a ) ) ) + sha512_round_constants[78] + ( tm = (( ((x[(78 -2)&0x0f]) << (45))
| ((x[(78 -2)&0x0f]) >> (64-(45))) )^( ((x[(78 -2)&0x0f]) << (3)) | ((x[(78
-2)&0x0f]) >> (64-(3))) )^(x[(78 -2)&0x0f]>>6)) + x[(78 -7)&0x0f] + (( ((x[(78
-15)&0x0f]) << (63)) | ((x[(78 -15)&0x0f]) >> (64-(63))) )^( ((x[(78
-15)&0x0f]) << (56)) | ((x[(78 -15)&0x0f]) >> (64-(56))) )^(x[(78
-15)&0x0f]>>7)) + x[78&0x0f] , x[78&0x0f] = tm ); f += t1; b = t0 + t1; }
while(0);
do { t0 = (( ((b) << (36)) | ((b) >> (64-(36))) )^( ((b) << (30)) | ((b)
>> (64-(30))) )^( ((b) << (25)) | ((b) >> (64-(25))) )) + ( ( b & c ) | ( d & (
b | c ) ) ); t1 = a + (( ((f) << (50)) | ((f) >> (64-(50))) )^( ((f) << (46)) |
((f) >> (64-(46))) )^( ((f) << (23)) | ((f) >> (64-(23))) )) + ( h ^ ( f & ( g
^ h ) ) ) + sha512_round_constants[79] + ( tm = (( ((x[(79 -2)&0x0f]) << (45))
| ((x[(79 -2)&0x0f]) >> (64-(45))) )^( ((x[(79 -2)&0x0f]) << (3)) | ((x[(79
-2)&0x0f]) >> (64-(3))) )^(x[(79 -2)&0x0f]>>6)) + x[(79 -7)&0x0f] + (( ((x[(79
-15)&0x0f]) << (63)) | ((x[(79 -15)&0x0f]) >> (64-(63))) )^( ((x[(79
-15)&0x0f]) << (56)) | ((x[(79 -15)&0x0f]) >> (64-(56))) )^(x[(79
-15)&0x0f]>>7)) + x[79&0x0f] , x[79&0x0f] = tm ); e += t1; a = t0 + t1; }
while(0);
a = ctx->state[0] += a;
b = ctx->state[1] += b;
c = ctx->state[2] += c;
d = ctx->state[3] += d;
e = ctx->state[4] += e;
f = ctx->state[5] += f;
g = ctx->state[6] += g;
h = ctx->state[7] += h;
}
}
static inline void *
ptr_align (void const *ptr, size_t alignment)
{
char const *p0 = ptr;
char const *p1 = p0 + alignment - 1;
return (void *) (p1 - (size_t) p1 % alignment);
}
int
main()
{
unsigned char bin_buffer_unaligned[(384 / 8) + 8];
unsigned char *bin_buffer = ptr_align (bin_buffer_unaligned, 8);
sha384_buffer (((void *)0), 0, bin_buffer);
int i;
for (i = 0; i < ((384 / 4) / 2); ++i)
printf ("%02x", bin_buffer[i]);
printf ("\n");
return 0;
}
--
Summary: -O2 produces invalid code on s390-linux-gnu: gcc-4.1.2
20060608
Product: gcc
Version: 4.1.1
Status: UNCONFIRMED
Severity: normal
Priority: P3
Component: c
AssignedTo: unassigned at gcc dot gnu dot org
ReportedBy: jim at meyering dot net
GCC build triplet: s390-ibm-linux-gnu
GCC host triplet: s390-ibm-linux-gnu
GCC target triplet: s390-ibm-linux-gnu
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28146