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; }
Can you please attach the preprocessed source rather than pasting it in? (I know there was no way to do so on the new bug page) Thanks!
Created attachment 11734 [details] preprocessed input Here's the same j.i file, as an attachment.
It produces 38b060a751ac96384cd9327eb1b1e36a21fdb71114be07434c0cc7bf63f6e1da274edebfe76f65fbd51ad2f14898b95b for me with -O and -O2. Can you post the output of gcc -I.. -I. -g -O2 ~/j.c -v ?
Created attachment 11735 [details] Here's the output of running gcc -I.. -I. -g -O2 ~/j.c -v Here's the output of running gcc -I.. -I. -g -O2 ~/j.c -v
Ok, looks like it is s390 specific because I can reproduce it with gcc version 4.1.2 20060531 (prerelease) /usr/lib/gcc/s390-suse-linux/4.1.2/cc1 -fpreprocessed t.i -quiet -dumpbase t.i -march=z900 -mtune=z9-109 -m31 -mesa -auxbase t -O2 -version -o /tmp/ccuMU6kl.s ppc, ppc64, i686 and x86_64 are fine with the same version.
trying to reduce it.
Subject: Bug 28146 Author: aoliva Date: Thu Aug 17 08:55:02 2006 New Revision: 116215 URL: http://gcc.gnu.org/viewcvs?root=gcc&view=rev&rev=116215 Log: PR target/28146 * reload.h (reg_equiv_alt_mem_list): New declaration. * reload1.c (reg_equiv_alt_mem_list): New definition. (reload): Initialize it and release it. (delete_output_reload): Use it. * reload.c (push_reg_equiv_alt_mem): New function. (find_reloads_toplev): Call it. (find_reloads_address, find_reloads_address_1): Likewise. (find_reloads_subreg_address): Likewise. Modified: trunk/gcc/ChangeLog trunk/gcc/reload.c trunk/gcc/reload.h trunk/gcc/reload1.c
Fixed.
*** Bug 28789 has been marked as a duplicate of this bug. ***