Bug Summary

File:Plugins/Bonjour/libezv/Private Classes/sha1.c
Location:line 104, column 17
Description:dead store

Annotated Source Code

1/*
2SHA-1 in C
3By Steve Reid <steve@edmweb.com>
4100% Public Domain
5
6Test Vectors (from FIPS PUB 180-1)
7"abc"
8 A9993E36 4706816A BA3E2571 7850C26C 9CD0D89D
9"abcdbcdecdefdefgefghfghighijhijkijkljklmklmnlmnomnopnopq"
10 84983E44 1C3BD26E BAAE4AA1 F95129E5 E54670F1
11A million repetitions of "a"
12 34AA973C D4C4DAA4 F61EEB2B DBAD2731 6534016F
13*/
14
15/* #define LITTLE_ENDIAN * This should be #define'd if true. */
16/* #define SHA1HANDSOFF * Copies data before messing with it. */
17
18#include <stdio.h>
19#include <string.h>
20
21typedef struct {
22 unsigned long state[5];
23 unsigned long count[2];
24 unsigned char buffer[64];
25} SHA1_CTX;
26
27void SHA1Transform(unsigned long state[5], unsigned char buffer[64]);
28void SHA1Init(SHA1_CTX* context);
29void SHA1Update(SHA1_CTX* context, unsigned char* data, unsigned int len);
30void SHA1Final(unsigned char digest[20], SHA1_CTX* context);
31
32#define rol(value, bits) (((value) << (bits)) | ((value) >> (32 - (bits))))
33
34/* blk0() and blk() perform the initial expand. */
35/* I got the idea of expanding during the round function from SSLeay */
36#ifdef LITTLE_ENDIAN
37#define blk0(i) (block->l[i] = (rol(block->l[i],24)&0xFF00FF00) \
38 |(rol(block->l[i],8)&0x00FF00FF))
39#else
40#define blk0(i) block->l[i]
41#endif
42#define blk(i) (block->l[i&15] = rol(block->l[(i+13)&15]^block->l[(i+8)&15] \
43 ^block->l[(i+2)&15]^block->l[i&15],1))
44
45/* (R0+R1), R2, R3, R4 are the different operations used in SHA1 */
46#define R0(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk0(i)+0x5A827999+rol(v,5);w=rol(w,30);
47#define R1(v,w,x,y,z,i) z+=((w&(x^y))^y)+blk(i)+0x5A827999+rol(v,5);w=rol(w,30);
48#define R2(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0x6ED9EBA1+rol(v,5);w=rol(w,30);
49#define R3(v,w,x,y,z,i) z+=(((w|x)&y)|(w&x))+blk(i)+0x8F1BBCDC+rol(v,5);w=rol(w,30);
50#define R4(v,w,x,y,z,i) z+=(w^x^y)+blk(i)+0xCA62C1D6+rol(v,5);w=rol(w,30);
51
52
53/* Hash a single 512-bit block. This is the core of the algorithm. */
54
55void SHA1Transform(unsigned long state[5], unsigned char buffer[64])
56{
57unsigned long a, b, c, d, e;
58typedef union {
59 unsigned char c[64];
60 unsigned long l[16];
61} CHAR64LONG16;
62CHAR64LONG16* block;
63#ifdef SHA1HANDSOFF
64static unsigned char workspace[64];
65 block = (CHAR64LONG16*)workspace;
66 memcpy(block, buffer, 64);
67#else
68 block = (CHAR64LONG16*)buffer;
69#endif
70 /* Copy context->state[] to working vars */
71 a = state[0];
72 b = state[1];
73 c = state[2];
74 d = state[3];
75 e = state[4];
76 /* 4 rounds of 20 operations each. Loop unrolled. */
77 R0e += ( ( b & ( c ^ d ) ) ^ d ) + block -> l [ 0 ] + 0x5A827999
+ ( ( ( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 )
) ) ) ; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> (
32 - ( 30 ) ) ) ) ;
(a,b,c,d,e, 0); R0d += ( ( a & ( b ^ c ) ) ^ c ) + block -> l [ 1 ] + 0x5A827999
+ ( ( ( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 )
) ) ) ; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> (
32 - ( 30 ) ) ) ) ;
(e,a,b,c,d, 1); R0c += ( ( e & ( a ^ b ) ) ^ b ) + block -> l [ 2 ] + 0x5A827999
+ ( ( ( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 )
) ) ) ; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> (
32 - ( 30 ) ) ) ) ;
(d,e,a,b,c, 2); R0b += ( ( d & ( e ^ a ) ) ^ a ) + block -> l [ 3 ] + 0x5A827999
+ ( ( ( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 )
) ) ) ; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> (
32 - ( 30 ) ) ) ) ;
(c,d,e,a,b, 3);
78 R0a += ( ( c & ( d ^ e ) ) ^ e ) + block -> l [ 4 ] + 0x5A827999
+ ( ( ( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 )
) ) ) ; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> (
32 - ( 30 ) ) ) ) ;
(b,c,d,e,a, 4); R0e += ( ( b & ( c ^ d ) ) ^ d ) + block -> l [ 5 ] + 0x5A827999
+ ( ( ( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 )
) ) ) ; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> (
32 - ( 30 ) ) ) ) ;
(a,b,c,d,e, 5); R0d += ( ( a & ( b ^ c ) ) ^ c ) + block -> l [ 6 ] + 0x5A827999
+ ( ( ( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 )
) ) ) ; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> (
32 - ( 30 ) ) ) ) ;
(e,a,b,c,d, 6); R0c += ( ( e & ( a ^ b ) ) ^ b ) + block -> l [ 7 ] + 0x5A827999
+ ( ( ( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 )
) ) ) ; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> (
32 - ( 30 ) ) ) ) ;
(d,e,a,b,c, 7);
79 R0b += ( ( d & ( e ^ a ) ) ^ a ) + block -> l [ 8 ] + 0x5A827999
+ ( ( ( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 )
) ) ) ; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> (
32 - ( 30 ) ) ) ) ;
(c,d,e,a,b, 8); R0a += ( ( c & ( d ^ e ) ) ^ e ) + block -> l [ 9 ] + 0x5A827999
+ ( ( ( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 )
) ) ) ; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> (
32 - ( 30 ) ) ) ) ;
(b,c,d,e,a, 9); R0e += ( ( b & ( c ^ d ) ) ^ d ) + block -> l [ 10 ] + 0x5A827999
+ ( ( ( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 )
) ) ) ; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> (
32 - ( 30 ) ) ) ) ;
(a,b,c,d,e,10); R0d += ( ( a & ( b ^ c ) ) ^ c ) + block -> l [ 11 ] + 0x5A827999
+ ( ( ( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 )
) ) ) ; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> (
32 - ( 30 ) ) ) ) ;
(e,a,b,c,d,11);
80 R0c += ( ( e & ( a ^ b ) ) ^ b ) + block -> l [ 12 ] + 0x5A827999
+ ( ( ( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 )
) ) ) ; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> (
32 - ( 30 ) ) ) ) ;
(d,e,a,b,c,12); R0b += ( ( d & ( e ^ a ) ) ^ a ) + block -> l [ 13 ] + 0x5A827999
+ ( ( ( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 )
) ) ) ; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> (
32 - ( 30 ) ) ) ) ;
(c,d,e,a,b,13); R0a += ( ( c & ( d ^ e ) ) ^ e ) + block -> l [ 14 ] + 0x5A827999
+ ( ( ( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 )
) ) ) ; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> (
32 - ( 30 ) ) ) ) ;
(b,c,d,e,a,14); R0e += ( ( b & ( c ^ d ) ) ^ d ) + block -> l [ 15 ] + 0x5A827999
+ ( ( ( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 )
) ) ) ; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> (
32 - ( 30 ) ) ) ) ;
(a,b,c,d,e,15);
81 R1d += ( ( a & ( b ^ c ) ) ^ c ) + ( block -> l [ 16 &
15 ] = ( ( ( block -> l [ ( 16 + 13 ) & 15 ] ^ block ->
l [ ( 16 + 8 ) & 15 ] ^ block -> l [ ( 16 + 2 ) &
15 ] ^ block -> l [ 16 & 15 ] ) << ( 1 ) ) | ( (
block -> l [ ( 16 + 13 ) & 15 ] ^ block -> l [ ( 16
+ 8 ) & 15 ] ^ block -> l [ ( 16 + 2 ) & 15 ] ^ block
-> l [ 16 & 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x5A827999
+ ( ( ( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 )
) ) ) ; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> (
32 - ( 30 ) ) ) ) ;
(e,a,b,c,d,16); R1c += ( ( e & ( a ^ b ) ) ^ b ) + ( block -> l [ 17 &
15 ] = ( ( ( block -> l [ ( 17 + 13 ) & 15 ] ^ block ->
l [ ( 17 + 8 ) & 15 ] ^ block -> l [ ( 17 + 2 ) &
15 ] ^ block -> l [ 17 & 15 ] ) << ( 1 ) ) | ( (
block -> l [ ( 17 + 13 ) & 15 ] ^ block -> l [ ( 17
+ 8 ) & 15 ] ^ block -> l [ ( 17 + 2 ) & 15 ] ^ block
-> l [ 17 & 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x5A827999
+ ( ( ( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 )
) ) ) ; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> (
32 - ( 30 ) ) ) ) ;
(d,e,a,b,c,17); R1b += ( ( d & ( e ^ a ) ) ^ a ) + ( block -> l [ 18 &
15 ] = ( ( ( block -> l [ ( 18 + 13 ) & 15 ] ^ block ->
l [ ( 18 + 8 ) & 15 ] ^ block -> l [ ( 18 + 2 ) &
15 ] ^ block -> l [ 18 & 15 ] ) << ( 1 ) ) | ( (
block -> l [ ( 18 + 13 ) & 15 ] ^ block -> l [ ( 18
+ 8 ) & 15 ] ^ block -> l [ ( 18 + 2 ) & 15 ] ^ block
-> l [ 18 & 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x5A827999
+ ( ( ( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 )
) ) ) ; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> (
32 - ( 30 ) ) ) ) ;
(c,d,e,a,b,18); R1a += ( ( c & ( d ^ e ) ) ^ e ) + ( block -> l [ 19 &
15 ] = ( ( ( block -> l [ ( 19 + 13 ) & 15 ] ^ block ->
l [ ( 19 + 8 ) & 15 ] ^ block -> l [ ( 19 + 2 ) &
15 ] ^ block -> l [ 19 & 15 ] ) << ( 1 ) ) | ( (
block -> l [ ( 19 + 13 ) & 15 ] ^ block -> l [ ( 19
+ 8 ) & 15 ] ^ block -> l [ ( 19 + 2 ) & 15 ] ^ block
-> l [ 19 & 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x5A827999
+ ( ( ( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 )
) ) ) ; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> (
32 - ( 30 ) ) ) ) ;
(b,c,d,e,a,19);
82 R2e += ( b ^ c ^ d ) + ( block -> l [ 20 & 15 ] = ( ( ( block
-> l [ ( 20 + 13 ) & 15 ] ^ block -> l [ ( 20 + 8 )
& 15 ] ^ block -> l [ ( 20 + 2 ) & 15 ] ^ block ->
l [ 20 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
20 + 13 ) & 15 ] ^ block -> l [ ( 20 + 8 ) & 15 ]
^ block -> l [ ( 20 + 2 ) & 15 ] ^ block -> l [ 20
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 ) ) ) )
; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> ( 32 - (
30 ) ) ) ) ;
(a,b,c,d,e,20); R2d += ( a ^ b ^ c ) + ( block -> l [ 21 & 15 ] = ( ( ( block
-> l [ ( 21 + 13 ) & 15 ] ^ block -> l [ ( 21 + 8 )
& 15 ] ^ block -> l [ ( 21 + 2 ) & 15 ] ^ block ->
l [ 21 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
21 + 13 ) & 15 ] ^ block -> l [ ( 21 + 8 ) & 15 ]
^ block -> l [ ( 21 + 2 ) & 15 ] ^ block -> l [ 21
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 ) ) ) )
; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> ( 32 - (
30 ) ) ) ) ;
(e,a,b,c,d,21); R2c += ( e ^ a ^ b ) + ( block -> l [ 22 & 15 ] = ( ( ( block
-> l [ ( 22 + 13 ) & 15 ] ^ block -> l [ ( 22 + 8 )
& 15 ] ^ block -> l [ ( 22 + 2 ) & 15 ] ^ block ->
l [ 22 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
22 + 13 ) & 15 ] ^ block -> l [ ( 22 + 8 ) & 15 ]
^ block -> l [ ( 22 + 2 ) & 15 ] ^ block -> l [ 22
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 ) ) ) )
; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> ( 32 - (
30 ) ) ) ) ;
(d,e,a,b,c,22); R2b += ( d ^ e ^ a ) + ( block -> l [ 23 & 15 ] = ( ( ( block
-> l [ ( 23 + 13 ) & 15 ] ^ block -> l [ ( 23 + 8 )
& 15 ] ^ block -> l [ ( 23 + 2 ) & 15 ] ^ block ->
l [ 23 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
23 + 13 ) & 15 ] ^ block -> l [ ( 23 + 8 ) & 15 ]
^ block -> l [ ( 23 + 2 ) & 15 ] ^ block -> l [ 23
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 ) ) ) )
; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> ( 32 - (
30 ) ) ) ) ;
(c,d,e,a,b,23);
83 R2a += ( c ^ d ^ e ) + ( block -> l [ 24 & 15 ] = ( ( ( block
-> l [ ( 24 + 13 ) & 15 ] ^ block -> l [ ( 24 + 8 )
& 15 ] ^ block -> l [ ( 24 + 2 ) & 15 ] ^ block ->
l [ 24 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
24 + 13 ) & 15 ] ^ block -> l [ ( 24 + 8 ) & 15 ]
^ block -> l [ ( 24 + 2 ) & 15 ] ^ block -> l [ 24
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 ) ) ) )
; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> ( 32 - (
30 ) ) ) ) ;
(b,c,d,e,a,24); R2e += ( b ^ c ^ d ) + ( block -> l [ 25 & 15 ] = ( ( ( block
-> l [ ( 25 + 13 ) & 15 ] ^ block -> l [ ( 25 + 8 )
& 15 ] ^ block -> l [ ( 25 + 2 ) & 15 ] ^ block ->
l [ 25 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
25 + 13 ) & 15 ] ^ block -> l [ ( 25 + 8 ) & 15 ]
^ block -> l [ ( 25 + 2 ) & 15 ] ^ block -> l [ 25
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 ) ) ) )
; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> ( 32 - (
30 ) ) ) ) ;
(a,b,c,d,e,25); R2d += ( a ^ b ^ c ) + ( block -> l [ 26 & 15 ] = ( ( ( block
-> l [ ( 26 + 13 ) & 15 ] ^ block -> l [ ( 26 + 8 )
& 15 ] ^ block -> l [ ( 26 + 2 ) & 15 ] ^ block ->
l [ 26 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
26 + 13 ) & 15 ] ^ block -> l [ ( 26 + 8 ) & 15 ]
^ block -> l [ ( 26 + 2 ) & 15 ] ^ block -> l [ 26
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 ) ) ) )
; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> ( 32 - (
30 ) ) ) ) ;
(e,a,b,c,d,26); R2c += ( e ^ a ^ b ) + ( block -> l [ 27 & 15 ] = ( ( ( block
-> l [ ( 27 + 13 ) & 15 ] ^ block -> l [ ( 27 + 8 )
& 15 ] ^ block -> l [ ( 27 + 2 ) & 15 ] ^ block ->
l [ 27 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
27 + 13 ) & 15 ] ^ block -> l [ ( 27 + 8 ) & 15 ]
^ block -> l [ ( 27 + 2 ) & 15 ] ^ block -> l [ 27
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 ) ) ) )
; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> ( 32 - (
30 ) ) ) ) ;
(d,e,a,b,c,27);
84 R2b += ( d ^ e ^ a ) + ( block -> l [ 28 & 15 ] = ( ( ( block
-> l [ ( 28 + 13 ) & 15 ] ^ block -> l [ ( 28 + 8 )
& 15 ] ^ block -> l [ ( 28 + 2 ) & 15 ] ^ block ->
l [ 28 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
28 + 13 ) & 15 ] ^ block -> l [ ( 28 + 8 ) & 15 ]
^ block -> l [ ( 28 + 2 ) & 15 ] ^ block -> l [ 28
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 ) ) ) )
; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> ( 32 - (
30 ) ) ) ) ;
(c,d,e,a,b,28); R2a += ( c ^ d ^ e ) + ( block -> l [ 29 & 15 ] = ( ( ( block
-> l [ ( 29 + 13 ) & 15 ] ^ block -> l [ ( 29 + 8 )
& 15 ] ^ block -> l [ ( 29 + 2 ) & 15 ] ^ block ->
l [ 29 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
29 + 13 ) & 15 ] ^ block -> l [ ( 29 + 8 ) & 15 ]
^ block -> l [ ( 29 + 2 ) & 15 ] ^ block -> l [ 29
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 ) ) ) )
; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> ( 32 - (
30 ) ) ) ) ;
(b,c,d,e,a,29); R2e += ( b ^ c ^ d ) + ( block -> l [ 30 & 15 ] = ( ( ( block
-> l [ ( 30 + 13 ) & 15 ] ^ block -> l [ ( 30 + 8 )
& 15 ] ^ block -> l [ ( 30 + 2 ) & 15 ] ^ block ->
l [ 30 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
30 + 13 ) & 15 ] ^ block -> l [ ( 30 + 8 ) & 15 ]
^ block -> l [ ( 30 + 2 ) & 15 ] ^ block -> l [ 30
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 ) ) ) )
; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> ( 32 - (
30 ) ) ) ) ;
(a,b,c,d,e,30); R2d += ( a ^ b ^ c ) + ( block -> l [ 31 & 15 ] = ( ( ( block
-> l [ ( 31 + 13 ) & 15 ] ^ block -> l [ ( 31 + 8 )
& 15 ] ^ block -> l [ ( 31 + 2 ) & 15 ] ^ block ->
l [ 31 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
31 + 13 ) & 15 ] ^ block -> l [ ( 31 + 8 ) & 15 ]
^ block -> l [ ( 31 + 2 ) & 15 ] ^ block -> l [ 31
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 ) ) ) )
; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> ( 32 - (
30 ) ) ) ) ;
(e,a,b,c,d,31);
85 R2c += ( e ^ a ^ b ) + ( block -> l [ 32 & 15 ] = ( ( ( block
-> l [ ( 32 + 13 ) & 15 ] ^ block -> l [ ( 32 + 8 )
& 15 ] ^ block -> l [ ( 32 + 2 ) & 15 ] ^ block ->
l [ 32 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
32 + 13 ) & 15 ] ^ block -> l [ ( 32 + 8 ) & 15 ]
^ block -> l [ ( 32 + 2 ) & 15 ] ^ block -> l [ 32
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 ) ) ) )
; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> ( 32 - (
30 ) ) ) ) ;
(d,e,a,b,c,32); R2b += ( d ^ e ^ a ) + ( block -> l [ 33 & 15 ] = ( ( ( block
-> l [ ( 33 + 13 ) & 15 ] ^ block -> l [ ( 33 + 8 )
& 15 ] ^ block -> l [ ( 33 + 2 ) & 15 ] ^ block ->
l [ 33 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
33 + 13 ) & 15 ] ^ block -> l [ ( 33 + 8 ) & 15 ]
^ block -> l [ ( 33 + 2 ) & 15 ] ^ block -> l [ 33
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 ) ) ) )
; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> ( 32 - (
30 ) ) ) ) ;
(c,d,e,a,b,33); R2a += ( c ^ d ^ e ) + ( block -> l [ 34 & 15 ] = ( ( ( block
-> l [ ( 34 + 13 ) & 15 ] ^ block -> l [ ( 34 + 8 )
& 15 ] ^ block -> l [ ( 34 + 2 ) & 15 ] ^ block ->
l [ 34 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
34 + 13 ) & 15 ] ^ block -> l [ ( 34 + 8 ) & 15 ]
^ block -> l [ ( 34 + 2 ) & 15 ] ^ block -> l [ 34
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 ) ) ) )
; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> ( 32 - (
30 ) ) ) ) ;
(b,c,d,e,a,34); R2e += ( b ^ c ^ d ) + ( block -> l [ 35 & 15 ] = ( ( ( block
-> l [ ( 35 + 13 ) & 15 ] ^ block -> l [ ( 35 + 8 )
& 15 ] ^ block -> l [ ( 35 + 2 ) & 15 ] ^ block ->
l [ 35 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
35 + 13 ) & 15 ] ^ block -> l [ ( 35 + 8 ) & 15 ]
^ block -> l [ ( 35 + 2 ) & 15 ] ^ block -> l [ 35
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 ) ) ) )
; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> ( 32 - (
30 ) ) ) ) ;
(a,b,c,d,e,35);
86 R2d += ( a ^ b ^ c ) + ( block -> l [ 36 & 15 ] = ( ( ( block
-> l [ ( 36 + 13 ) & 15 ] ^ block -> l [ ( 36 + 8 )
& 15 ] ^ block -> l [ ( 36 + 2 ) & 15 ] ^ block ->
l [ 36 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
36 + 13 ) & 15 ] ^ block -> l [ ( 36 + 8 ) & 15 ]
^ block -> l [ ( 36 + 2 ) & 15 ] ^ block -> l [ 36
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 ) ) ) )
; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> ( 32 - (
30 ) ) ) ) ;
(e,a,b,c,d,36); R2c += ( e ^ a ^ b ) + ( block -> l [ 37 & 15 ] = ( ( ( block
-> l [ ( 37 + 13 ) & 15 ] ^ block -> l [ ( 37 + 8 )
& 15 ] ^ block -> l [ ( 37 + 2 ) & 15 ] ^ block ->
l [ 37 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
37 + 13 ) & 15 ] ^ block -> l [ ( 37 + 8 ) & 15 ]
^ block -> l [ ( 37 + 2 ) & 15 ] ^ block -> l [ 37
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 ) ) ) )
; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> ( 32 - (
30 ) ) ) ) ;
(d,e,a,b,c,37); R2b += ( d ^ e ^ a ) + ( block -> l [ 38 & 15 ] = ( ( ( block
-> l [ ( 38 + 13 ) & 15 ] ^ block -> l [ ( 38 + 8 )
& 15 ] ^ block -> l [ ( 38 + 2 ) & 15 ] ^ block ->
l [ 38 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
38 + 13 ) & 15 ] ^ block -> l [ ( 38 + 8 ) & 15 ]
^ block -> l [ ( 38 + 2 ) & 15 ] ^ block -> l [ 38
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 ) ) ) )
; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> ( 32 - (
30 ) ) ) ) ;
(c,d,e,a,b,38); R2a += ( c ^ d ^ e ) + ( block -> l [ 39 & 15 ] = ( ( ( block
-> l [ ( 39 + 13 ) & 15 ] ^ block -> l [ ( 39 + 8 )
& 15 ] ^ block -> l [ ( 39 + 2 ) & 15 ] ^ block ->
l [ 39 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
39 + 13 ) & 15 ] ^ block -> l [ ( 39 + 8 ) & 15 ]
^ block -> l [ ( 39 + 2 ) & 15 ] ^ block -> l [ 39
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0x6ED9EBA1 + ( (
( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 ) ) ) )
; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> ( 32 - (
30 ) ) ) ) ;
(b,c,d,e,a,39);
87 R3e += ( ( ( b | c ) & d ) | ( b & c ) ) + ( block ->
l [ 40 & 15 ] = ( ( ( block -> l [ ( 40 + 13 ) & 15
] ^ block -> l [ ( 40 + 8 ) & 15 ] ^ block -> l [ (
40 + 2 ) & 15 ] ^ block -> l [ 40 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 40 + 13 ) & 15 ] ^ block
-> l [ ( 40 + 8 ) & 15 ] ^ block -> l [ ( 40 + 2 )
& 15 ] ^ block -> l [ 40 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( a ) << ( 5 ) ) | ( (
a ) >> ( 32 - ( 5 ) ) ) ) ; b = ( ( ( b ) << ( 30
) ) | ( ( b ) >> ( 32 - ( 30 ) ) ) ) ;
(a,b,c,d,e,40); R3d += ( ( ( a | b ) & c ) | ( a & b ) ) + ( block ->
l [ 41 & 15 ] = ( ( ( block -> l [ ( 41 + 13 ) & 15
] ^ block -> l [ ( 41 + 8 ) & 15 ] ^ block -> l [ (
41 + 2 ) & 15 ] ^ block -> l [ 41 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 41 + 13 ) & 15 ] ^ block
-> l [ ( 41 + 8 ) & 15 ] ^ block -> l [ ( 41 + 2 )
& 15 ] ^ block -> l [ 41 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( e ) << ( 5 ) ) | ( (
e ) >> ( 32 - ( 5 ) ) ) ) ; a = ( ( ( a ) << ( 30
) ) | ( ( a ) >> ( 32 - ( 30 ) ) ) ) ;
(e,a,b,c,d,41); R3c += ( ( ( e | a ) & b ) | ( e & a ) ) + ( block ->
l [ 42 & 15 ] = ( ( ( block -> l [ ( 42 + 13 ) & 15
] ^ block -> l [ ( 42 + 8 ) & 15 ] ^ block -> l [ (
42 + 2 ) & 15 ] ^ block -> l [ 42 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 42 + 13 ) & 15 ] ^ block
-> l [ ( 42 + 8 ) & 15 ] ^ block -> l [ ( 42 + 2 )
& 15 ] ^ block -> l [ 42 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( d ) << ( 5 ) ) | ( (
d ) >> ( 32 - ( 5 ) ) ) ) ; e = ( ( ( e ) << ( 30
) ) | ( ( e ) >> ( 32 - ( 30 ) ) ) ) ;
(d,e,a,b,c,42); R3b += ( ( ( d | e ) & a ) | ( d & e ) ) + ( block ->
l [ 43 & 15 ] = ( ( ( block -> l [ ( 43 + 13 ) & 15
] ^ block -> l [ ( 43 + 8 ) & 15 ] ^ block -> l [ (
43 + 2 ) & 15 ] ^ block -> l [ 43 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 43 + 13 ) & 15 ] ^ block
-> l [ ( 43 + 8 ) & 15 ] ^ block -> l [ ( 43 + 2 )
& 15 ] ^ block -> l [ 43 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( c ) << ( 5 ) ) | ( (
c ) >> ( 32 - ( 5 ) ) ) ) ; d = ( ( ( d ) << ( 30
) ) | ( ( d ) >> ( 32 - ( 30 ) ) ) ) ;
(c,d,e,a,b,43);
88 R3a += ( ( ( c | d ) & e ) | ( c & d ) ) + ( block ->
l [ 44 & 15 ] = ( ( ( block -> l [ ( 44 + 13 ) & 15
] ^ block -> l [ ( 44 + 8 ) & 15 ] ^ block -> l [ (
44 + 2 ) & 15 ] ^ block -> l [ 44 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 44 + 13 ) & 15 ] ^ block
-> l [ ( 44 + 8 ) & 15 ] ^ block -> l [ ( 44 + 2 )
& 15 ] ^ block -> l [ 44 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( b ) << ( 5 ) ) | ( (
b ) >> ( 32 - ( 5 ) ) ) ) ; c = ( ( ( c ) << ( 30
) ) | ( ( c ) >> ( 32 - ( 30 ) ) ) ) ;
(b,c,d,e,a,44); R3e += ( ( ( b | c ) & d ) | ( b & c ) ) + ( block ->
l [ 45 & 15 ] = ( ( ( block -> l [ ( 45 + 13 ) & 15
] ^ block -> l [ ( 45 + 8 ) & 15 ] ^ block -> l [ (
45 + 2 ) & 15 ] ^ block -> l [ 45 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 45 + 13 ) & 15 ] ^ block
-> l [ ( 45 + 8 ) & 15 ] ^ block -> l [ ( 45 + 2 )
& 15 ] ^ block -> l [ 45 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( a ) << ( 5 ) ) | ( (
a ) >> ( 32 - ( 5 ) ) ) ) ; b = ( ( ( b ) << ( 30
) ) | ( ( b ) >> ( 32 - ( 30 ) ) ) ) ;
(a,b,c,d,e,45); R3d += ( ( ( a | b ) & c ) | ( a & b ) ) + ( block ->
l [ 46 & 15 ] = ( ( ( block -> l [ ( 46 + 13 ) & 15
] ^ block -> l [ ( 46 + 8 ) & 15 ] ^ block -> l [ (
46 + 2 ) & 15 ] ^ block -> l [ 46 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 46 + 13 ) & 15 ] ^ block
-> l [ ( 46 + 8 ) & 15 ] ^ block -> l [ ( 46 + 2 )
& 15 ] ^ block -> l [ 46 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( e ) << ( 5 ) ) | ( (
e ) >> ( 32 - ( 5 ) ) ) ) ; a = ( ( ( a ) << ( 30
) ) | ( ( a ) >> ( 32 - ( 30 ) ) ) ) ;
(e,a,b,c,d,46); R3c += ( ( ( e | a ) & b ) | ( e & a ) ) + ( block ->
l [ 47 & 15 ] = ( ( ( block -> l [ ( 47 + 13 ) & 15
] ^ block -> l [ ( 47 + 8 ) & 15 ] ^ block -> l [ (
47 + 2 ) & 15 ] ^ block -> l [ 47 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 47 + 13 ) & 15 ] ^ block
-> l [ ( 47 + 8 ) & 15 ] ^ block -> l [ ( 47 + 2 )
& 15 ] ^ block -> l [ 47 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( d ) << ( 5 ) ) | ( (
d ) >> ( 32 - ( 5 ) ) ) ) ; e = ( ( ( e ) << ( 30
) ) | ( ( e ) >> ( 32 - ( 30 ) ) ) ) ;
(d,e,a,b,c,47);
89 R3b += ( ( ( d | e ) & a ) | ( d & e ) ) + ( block ->
l [ 48 & 15 ] = ( ( ( block -> l [ ( 48 + 13 ) & 15
] ^ block -> l [ ( 48 + 8 ) & 15 ] ^ block -> l [ (
48 + 2 ) & 15 ] ^ block -> l [ 48 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 48 + 13 ) & 15 ] ^ block
-> l [ ( 48 + 8 ) & 15 ] ^ block -> l [ ( 48 + 2 )
& 15 ] ^ block -> l [ 48 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( c ) << ( 5 ) ) | ( (
c ) >> ( 32 - ( 5 ) ) ) ) ; d = ( ( ( d ) << ( 30
) ) | ( ( d ) >> ( 32 - ( 30 ) ) ) ) ;
(c,d,e,a,b,48); R3a += ( ( ( c | d ) & e ) | ( c & d ) ) + ( block ->
l [ 49 & 15 ] = ( ( ( block -> l [ ( 49 + 13 ) & 15
] ^ block -> l [ ( 49 + 8 ) & 15 ] ^ block -> l [ (
49 + 2 ) & 15 ] ^ block -> l [ 49 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 49 + 13 ) & 15 ] ^ block
-> l [ ( 49 + 8 ) & 15 ] ^ block -> l [ ( 49 + 2 )
& 15 ] ^ block -> l [ 49 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( b ) << ( 5 ) ) | ( (
b ) >> ( 32 - ( 5 ) ) ) ) ; c = ( ( ( c ) << ( 30
) ) | ( ( c ) >> ( 32 - ( 30 ) ) ) ) ;
(b,c,d,e,a,49); R3e += ( ( ( b | c ) & d ) | ( b & c ) ) + ( block ->
l [ 50 & 15 ] = ( ( ( block -> l [ ( 50 + 13 ) & 15
] ^ block -> l [ ( 50 + 8 ) & 15 ] ^ block -> l [ (
50 + 2 ) & 15 ] ^ block -> l [ 50 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 50 + 13 ) & 15 ] ^ block
-> l [ ( 50 + 8 ) & 15 ] ^ block -> l [ ( 50 + 2 )
& 15 ] ^ block -> l [ 50 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( a ) << ( 5 ) ) | ( (
a ) >> ( 32 - ( 5 ) ) ) ) ; b = ( ( ( b ) << ( 30
) ) | ( ( b ) >> ( 32 - ( 30 ) ) ) ) ;
(a,b,c,d,e,50); R3d += ( ( ( a | b ) & c ) | ( a & b ) ) + ( block ->
l [ 51 & 15 ] = ( ( ( block -> l [ ( 51 + 13 ) & 15
] ^ block -> l [ ( 51 + 8 ) & 15 ] ^ block -> l [ (
51 + 2 ) & 15 ] ^ block -> l [ 51 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 51 + 13 ) & 15 ] ^ block
-> l [ ( 51 + 8 ) & 15 ] ^ block -> l [ ( 51 + 2 )
& 15 ] ^ block -> l [ 51 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( e ) << ( 5 ) ) | ( (
e ) >> ( 32 - ( 5 ) ) ) ) ; a = ( ( ( a ) << ( 30
) ) | ( ( a ) >> ( 32 - ( 30 ) ) ) ) ;
(e,a,b,c,d,51);
90 R3c += ( ( ( e | a ) & b ) | ( e & a ) ) + ( block ->
l [ 52 & 15 ] = ( ( ( block -> l [ ( 52 + 13 ) & 15
] ^ block -> l [ ( 52 + 8 ) & 15 ] ^ block -> l [ (
52 + 2 ) & 15 ] ^ block -> l [ 52 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 52 + 13 ) & 15 ] ^ block
-> l [ ( 52 + 8 ) & 15 ] ^ block -> l [ ( 52 + 2 )
& 15 ] ^ block -> l [ 52 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( d ) << ( 5 ) ) | ( (
d ) >> ( 32 - ( 5 ) ) ) ) ; e = ( ( ( e ) << ( 30
) ) | ( ( e ) >> ( 32 - ( 30 ) ) ) ) ;
(d,e,a,b,c,52); R3b += ( ( ( d | e ) & a ) | ( d & e ) ) + ( block ->
l [ 53 & 15 ] = ( ( ( block -> l [ ( 53 + 13 ) & 15
] ^ block -> l [ ( 53 + 8 ) & 15 ] ^ block -> l [ (
53 + 2 ) & 15 ] ^ block -> l [ 53 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 53 + 13 ) & 15 ] ^ block
-> l [ ( 53 + 8 ) & 15 ] ^ block -> l [ ( 53 + 2 )
& 15 ] ^ block -> l [ 53 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( c ) << ( 5 ) ) | ( (
c ) >> ( 32 - ( 5 ) ) ) ) ; d = ( ( ( d ) << ( 30
) ) | ( ( d ) >> ( 32 - ( 30 ) ) ) ) ;
(c,d,e,a,b,53); R3a += ( ( ( c | d ) & e ) | ( c & d ) ) + ( block ->
l [ 54 & 15 ] = ( ( ( block -> l [ ( 54 + 13 ) & 15
] ^ block -> l [ ( 54 + 8 ) & 15 ] ^ block -> l [ (
54 + 2 ) & 15 ] ^ block -> l [ 54 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 54 + 13 ) & 15 ] ^ block
-> l [ ( 54 + 8 ) & 15 ] ^ block -> l [ ( 54 + 2 )
& 15 ] ^ block -> l [ 54 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( b ) << ( 5 ) ) | ( (
b ) >> ( 32 - ( 5 ) ) ) ) ; c = ( ( ( c ) << ( 30
) ) | ( ( c ) >> ( 32 - ( 30 ) ) ) ) ;
(b,c,d,e,a,54); R3e += ( ( ( b | c ) & d ) | ( b & c ) ) + ( block ->
l [ 55 & 15 ] = ( ( ( block -> l [ ( 55 + 13 ) & 15
] ^ block -> l [ ( 55 + 8 ) & 15 ] ^ block -> l [ (
55 + 2 ) & 15 ] ^ block -> l [ 55 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 55 + 13 ) & 15 ] ^ block
-> l [ ( 55 + 8 ) & 15 ] ^ block -> l [ ( 55 + 2 )
& 15 ] ^ block -> l [ 55 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( a ) << ( 5 ) ) | ( (
a ) >> ( 32 - ( 5 ) ) ) ) ; b = ( ( ( b ) << ( 30
) ) | ( ( b ) >> ( 32 - ( 30 ) ) ) ) ;
(a,b,c,d,e,55);
91 R3d += ( ( ( a | b ) & c ) | ( a & b ) ) + ( block ->
l [ 56 & 15 ] = ( ( ( block -> l [ ( 56 + 13 ) & 15
] ^ block -> l [ ( 56 + 8 ) & 15 ] ^ block -> l [ (
56 + 2 ) & 15 ] ^ block -> l [ 56 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 56 + 13 ) & 15 ] ^ block
-> l [ ( 56 + 8 ) & 15 ] ^ block -> l [ ( 56 + 2 )
& 15 ] ^ block -> l [ 56 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( e ) << ( 5 ) ) | ( (
e ) >> ( 32 - ( 5 ) ) ) ) ; a = ( ( ( a ) << ( 30
) ) | ( ( a ) >> ( 32 - ( 30 ) ) ) ) ;
(e,a,b,c,d,56); R3c += ( ( ( e | a ) & b ) | ( e & a ) ) + ( block ->
l [ 57 & 15 ] = ( ( ( block -> l [ ( 57 + 13 ) & 15
] ^ block -> l [ ( 57 + 8 ) & 15 ] ^ block -> l [ (
57 + 2 ) & 15 ] ^ block -> l [ 57 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 57 + 13 ) & 15 ] ^ block
-> l [ ( 57 + 8 ) & 15 ] ^ block -> l [ ( 57 + 2 )
& 15 ] ^ block -> l [ 57 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( d ) << ( 5 ) ) | ( (
d ) >> ( 32 - ( 5 ) ) ) ) ; e = ( ( ( e ) << ( 30
) ) | ( ( e ) >> ( 32 - ( 30 ) ) ) ) ;
(d,e,a,b,c,57); R3b += ( ( ( d | e ) & a ) | ( d & e ) ) + ( block ->
l [ 58 & 15 ] = ( ( ( block -> l [ ( 58 + 13 ) & 15
] ^ block -> l [ ( 58 + 8 ) & 15 ] ^ block -> l [ (
58 + 2 ) & 15 ] ^ block -> l [ 58 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 58 + 13 ) & 15 ] ^ block
-> l [ ( 58 + 8 ) & 15 ] ^ block -> l [ ( 58 + 2 )
& 15 ] ^ block -> l [ 58 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( c ) << ( 5 ) ) | ( (
c ) >> ( 32 - ( 5 ) ) ) ) ; d = ( ( ( d ) << ( 30
) ) | ( ( d ) >> ( 32 - ( 30 ) ) ) ) ;
(c,d,e,a,b,58); R3a += ( ( ( c | d ) & e ) | ( c & d ) ) + ( block ->
l [ 59 & 15 ] = ( ( ( block -> l [ ( 59 + 13 ) & 15
] ^ block -> l [ ( 59 + 8 ) & 15 ] ^ block -> l [ (
59 + 2 ) & 15 ] ^ block -> l [ 59 & 15 ] ) <<
( 1 ) ) | ( ( block -> l [ ( 59 + 13 ) & 15 ] ^ block
-> l [ ( 59 + 8 ) & 15 ] ^ block -> l [ ( 59 + 2 )
& 15 ] ^ block -> l [ 59 & 15 ] ) >> ( 32 -
( 1 ) ) ) ) ) + 0x8F1BBCDC + ( ( ( b ) << ( 5 ) ) | ( (
b ) >> ( 32 - ( 5 ) ) ) ) ; c = ( ( ( c ) << ( 30
) ) | ( ( c ) >> ( 32 - ( 30 ) ) ) ) ;
(b,c,d,e,a,59);
92 R4e += ( b ^ c ^ d ) + ( block -> l [ 60 & 15 ] = ( ( ( block
-> l [ ( 60 + 13 ) & 15 ] ^ block -> l [ ( 60 + 8 )
& 15 ] ^ block -> l [ ( 60 + 2 ) & 15 ] ^ block ->
l [ 60 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
60 + 13 ) & 15 ] ^ block -> l [ ( 60 + 8 ) & 15 ]
^ block -> l [ ( 60 + 2 ) & 15 ] ^ block -> l [ 60
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 ) ) ) )
; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> ( 32 - (
30 ) ) ) ) ;
(a,b,c,d,e,60); R4d += ( a ^ b ^ c ) + ( block -> l [ 61 & 15 ] = ( ( ( block
-> l [ ( 61 + 13 ) & 15 ] ^ block -> l [ ( 61 + 8 )
& 15 ] ^ block -> l [ ( 61 + 2 ) & 15 ] ^ block ->
l [ 61 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
61 + 13 ) & 15 ] ^ block -> l [ ( 61 + 8 ) & 15 ]
^ block -> l [ ( 61 + 2 ) & 15 ] ^ block -> l [ 61
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 ) ) ) )
; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> ( 32 - (
30 ) ) ) ) ;
(e,a,b,c,d,61); R4c += ( e ^ a ^ b ) + ( block -> l [ 62 & 15 ] = ( ( ( block
-> l [ ( 62 + 13 ) & 15 ] ^ block -> l [ ( 62 + 8 )
& 15 ] ^ block -> l [ ( 62 + 2 ) & 15 ] ^ block ->
l [ 62 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
62 + 13 ) & 15 ] ^ block -> l [ ( 62 + 8 ) & 15 ]
^ block -> l [ ( 62 + 2 ) & 15 ] ^ block -> l [ 62
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 ) ) ) )
; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> ( 32 - (
30 ) ) ) ) ;
(d,e,a,b,c,62); R4b += ( d ^ e ^ a ) + ( block -> l [ 63 & 15 ] = ( ( ( block
-> l [ ( 63 + 13 ) & 15 ] ^ block -> l [ ( 63 + 8 )
& 15 ] ^ block -> l [ ( 63 + 2 ) & 15 ] ^ block ->
l [ 63 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
63 + 13 ) & 15 ] ^ block -> l [ ( 63 + 8 ) & 15 ]
^ block -> l [ ( 63 + 2 ) & 15 ] ^ block -> l [ 63
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 ) ) ) )
; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> ( 32 - (
30 ) ) ) ) ;
(c,d,e,a,b,63);
93 R4a += ( c ^ d ^ e ) + ( block -> l [ 64 & 15 ] = ( ( ( block
-> l [ ( 64 + 13 ) & 15 ] ^ block -> l [ ( 64 + 8 )
& 15 ] ^ block -> l [ ( 64 + 2 ) & 15 ] ^ block ->
l [ 64 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
64 + 13 ) & 15 ] ^ block -> l [ ( 64 + 8 ) & 15 ]
^ block -> l [ ( 64 + 2 ) & 15 ] ^ block -> l [ 64
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 ) ) ) )
; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> ( 32 - (
30 ) ) ) ) ;
(b,c,d,e,a,64); R4e += ( b ^ c ^ d ) + ( block -> l [ 65 & 15 ] = ( ( ( block
-> l [ ( 65 + 13 ) & 15 ] ^ block -> l [ ( 65 + 8 )
& 15 ] ^ block -> l [ ( 65 + 2 ) & 15 ] ^ block ->
l [ 65 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
65 + 13 ) & 15 ] ^ block -> l [ ( 65 + 8 ) & 15 ]
^ block -> l [ ( 65 + 2 ) & 15 ] ^ block -> l [ 65
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 ) ) ) )
; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> ( 32 - (
30 ) ) ) ) ;
(a,b,c,d,e,65); R4d += ( a ^ b ^ c ) + ( block -> l [ 66 & 15 ] = ( ( ( block
-> l [ ( 66 + 13 ) & 15 ] ^ block -> l [ ( 66 + 8 )
& 15 ] ^ block -> l [ ( 66 + 2 ) & 15 ] ^ block ->
l [ 66 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
66 + 13 ) & 15 ] ^ block -> l [ ( 66 + 8 ) & 15 ]
^ block -> l [ ( 66 + 2 ) & 15 ] ^ block -> l [ 66
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 ) ) ) )
; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> ( 32 - (
30 ) ) ) ) ;
(e,a,b,c,d,66); R4c += ( e ^ a ^ b ) + ( block -> l [ 67 & 15 ] = ( ( ( block
-> l [ ( 67 + 13 ) & 15 ] ^ block -> l [ ( 67 + 8 )
& 15 ] ^ block -> l [ ( 67 + 2 ) & 15 ] ^ block ->
l [ 67 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
67 + 13 ) & 15 ] ^ block -> l [ ( 67 + 8 ) & 15 ]
^ block -> l [ ( 67 + 2 ) & 15 ] ^ block -> l [ 67
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 ) ) ) )
; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> ( 32 - (
30 ) ) ) ) ;
(d,e,a,b,c,67);
94 R4b += ( d ^ e ^ a ) + ( block -> l [ 68 & 15 ] = ( ( ( block
-> l [ ( 68 + 13 ) & 15 ] ^ block -> l [ ( 68 + 8 )
& 15 ] ^ block -> l [ ( 68 + 2 ) & 15 ] ^ block ->
l [ 68 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
68 + 13 ) & 15 ] ^ block -> l [ ( 68 + 8 ) & 15 ]
^ block -> l [ ( 68 + 2 ) & 15 ] ^ block -> l [ 68
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 ) ) ) )
; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> ( 32 - (
30 ) ) ) ) ;
(c,d,e,a,b,68); R4a += ( c ^ d ^ e ) + ( block -> l [ 69 & 15 ] = ( ( ( block
-> l [ ( 69 + 13 ) & 15 ] ^ block -> l [ ( 69 + 8 )
& 15 ] ^ block -> l [ ( 69 + 2 ) & 15 ] ^ block ->
l [ 69 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
69 + 13 ) & 15 ] ^ block -> l [ ( 69 + 8 ) & 15 ]
^ block -> l [ ( 69 + 2 ) & 15 ] ^ block -> l [ 69
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 ) ) ) )
; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> ( 32 - (
30 ) ) ) ) ;
(b,c,d,e,a,69); R4e += ( b ^ c ^ d ) + ( block -> l [ 70 & 15 ] = ( ( ( block
-> l [ ( 70 + 13 ) & 15 ] ^ block -> l [ ( 70 + 8 )
& 15 ] ^ block -> l [ ( 70 + 2 ) & 15 ] ^ block ->
l [ 70 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
70 + 13 ) & 15 ] ^ block -> l [ ( 70 + 8 ) & 15 ]
^ block -> l [ ( 70 + 2 ) & 15 ] ^ block -> l [ 70
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 ) ) ) )
; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> ( 32 - (
30 ) ) ) ) ;
(a,b,c,d,e,70); R4d += ( a ^ b ^ c ) + ( block -> l [ 71 & 15 ] = ( ( ( block
-> l [ ( 71 + 13 ) & 15 ] ^ block -> l [ ( 71 + 8 )
& 15 ] ^ block -> l [ ( 71 + 2 ) & 15 ] ^ block ->
l [ 71 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
71 + 13 ) & 15 ] ^ block -> l [ ( 71 + 8 ) & 15 ]
^ block -> l [ ( 71 + 2 ) & 15 ] ^ block -> l [ 71
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 ) ) ) )
; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> ( 32 - (
30 ) ) ) ) ;
(e,a,b,c,d,71);
95 R4c += ( e ^ a ^ b ) + ( block -> l [ 72 & 15 ] = ( ( ( block
-> l [ ( 72 + 13 ) & 15 ] ^ block -> l [ ( 72 + 8 )
& 15 ] ^ block -> l [ ( 72 + 2 ) & 15 ] ^ block ->
l [ 72 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
72 + 13 ) & 15 ] ^ block -> l [ ( 72 + 8 ) & 15 ]
^ block -> l [ ( 72 + 2 ) & 15 ] ^ block -> l [ 72
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 ) ) ) )
; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> ( 32 - (
30 ) ) ) ) ;
(d,e,a,b,c,72); R4b += ( d ^ e ^ a ) + ( block -> l [ 73 & 15 ] = ( ( ( block
-> l [ ( 73 + 13 ) & 15 ] ^ block -> l [ ( 73 + 8 )
& 15 ] ^ block -> l [ ( 73 + 2 ) & 15 ] ^ block ->
l [ 73 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
73 + 13 ) & 15 ] ^ block -> l [ ( 73 + 8 ) & 15 ]
^ block -> l [ ( 73 + 2 ) & 15 ] ^ block -> l [ 73
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 ) ) ) )
; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> ( 32 - (
30 ) ) ) ) ;
(c,d,e,a,b,73); R4a += ( c ^ d ^ e ) + ( block -> l [ 74 & 15 ] = ( ( ( block
-> l [ ( 74 + 13 ) & 15 ] ^ block -> l [ ( 74 + 8 )
& 15 ] ^ block -> l [ ( 74 + 2 ) & 15 ] ^ block ->
l [ 74 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
74 + 13 ) & 15 ] ^ block -> l [ ( 74 + 8 ) & 15 ]
^ block -> l [ ( 74 + 2 ) & 15 ] ^ block -> l [ 74
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 ) ) ) )
; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> ( 32 - (
30 ) ) ) ) ;
(b,c,d,e,a,74); R4e += ( b ^ c ^ d ) + ( block -> l [ 75 & 15 ] = ( ( ( block
-> l [ ( 75 + 13 ) & 15 ] ^ block -> l [ ( 75 + 8 )
& 15 ] ^ block -> l [ ( 75 + 2 ) & 15 ] ^ block ->
l [ 75 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
75 + 13 ) & 15 ] ^ block -> l [ ( 75 + 8 ) & 15 ]
^ block -> l [ ( 75 + 2 ) & 15 ] ^ block -> l [ 75
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( a ) << ( 5 ) ) | ( ( a ) >> ( 32 - ( 5 ) ) ) )
; b = ( ( ( b ) << ( 30 ) ) | ( ( b ) >> ( 32 - (
30 ) ) ) ) ;
(a,b,c,d,e,75);
96 R4d += ( a ^ b ^ c ) + ( block -> l [ 76 & 15 ] = ( ( ( block
-> l [ ( 76 + 13 ) & 15 ] ^ block -> l [ ( 76 + 8 )
& 15 ] ^ block -> l [ ( 76 + 2 ) & 15 ] ^ block ->
l [ 76 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
76 + 13 ) & 15 ] ^ block -> l [ ( 76 + 8 ) & 15 ]
^ block -> l [ ( 76 + 2 ) & 15 ] ^ block -> l [ 76
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( e ) << ( 5 ) ) | ( ( e ) >> ( 32 - ( 5 ) ) ) )
; a = ( ( ( a ) << ( 30 ) ) | ( ( a ) >> ( 32 - (
30 ) ) ) ) ;
(e,a,b,c,d,76); R4c += ( e ^ a ^ b ) + ( block -> l [ 77 & 15 ] = ( ( ( block
-> l [ ( 77 + 13 ) & 15 ] ^ block -> l [ ( 77 + 8 )
& 15 ] ^ block -> l [ ( 77 + 2 ) & 15 ] ^ block ->
l [ 77 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
77 + 13 ) & 15 ] ^ block -> l [ ( 77 + 8 ) & 15 ]
^ block -> l [ ( 77 + 2 ) & 15 ] ^ block -> l [ 77
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( d ) << ( 5 ) ) | ( ( d ) >> ( 32 - ( 5 ) ) ) )
; e = ( ( ( e ) << ( 30 ) ) | ( ( e ) >> ( 32 - (
30 ) ) ) ) ;
(d,e,a,b,c,77); R4b += ( d ^ e ^ a ) + ( block -> l [ 78 & 15 ] = ( ( ( block
-> l [ ( 78 + 13 ) & 15 ] ^ block -> l [ ( 78 + 8 )
& 15 ] ^ block -> l [ ( 78 + 2 ) & 15 ] ^ block ->
l [ 78 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
78 + 13 ) & 15 ] ^ block -> l [ ( 78 + 8 ) & 15 ]
^ block -> l [ ( 78 + 2 ) & 15 ] ^ block -> l [ 78
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( c ) << ( 5 ) ) | ( ( c ) >> ( 32 - ( 5 ) ) ) )
; d = ( ( ( d ) << ( 30 ) ) | ( ( d ) >> ( 32 - (
30 ) ) ) ) ;
(c,d,e,a,b,78); R4a += ( c ^ d ^ e ) + ( block -> l [ 79 & 15 ] = ( ( ( block
-> l [ ( 79 + 13 ) & 15 ] ^ block -> l [ ( 79 + 8 )
& 15 ] ^ block -> l [ ( 79 + 2 ) & 15 ] ^ block ->
l [ 79 & 15 ] ) << ( 1 ) ) | ( ( block -> l [ (
79 + 13 ) & 15 ] ^ block -> l [ ( 79 + 8 ) & 15 ]
^ block -> l [ ( 79 + 2 ) & 15 ] ^ block -> l [ 79
& 15 ] ) >> ( 32 - ( 1 ) ) ) ) ) + 0xCA62C1D6 + ( (
( b ) << ( 5 ) ) | ( ( b ) >> ( 32 - ( 5 ) ) ) )
; c = ( ( ( c ) << ( 30 ) ) | ( ( c ) >> ( 32 - (
30 ) ) ) ) ;
(b,c,d,e,a,79);
97 /* Add the working vars back into context.state[] */
98 state[0] += a;
99 state[1] += b;
100 state[2] += c;
101 state[3] += d;
102 state[4] += e;
103 /* Wipe variables */
Although the value stored to 'd' is used in the enclosing expression, the value is never actually read from 'd'
104 a = b = c = d = e = 0;
105}
106
107
108/* SHA1Init - Initialize new context */
109
110void SHA1Init(SHA1_CTX* context)
111{
112 /* SHA1 initialization constants */
113 context->state[0] = 0x67452301;
114 context->state[1] = 0xEFCDAB89;
115 context->state[2] = 0x98BADCFE;
116 context->state[3] = 0x10325476;
117 context->state[4] = 0xC3D2E1F0;
118 context->count[0] = context->count[1] = 0;
119}
120
121
122/* Run your data through this. */
123
124void SHA1Update(SHA1_CTX* context, unsigned char* data, unsigned int len)
125{
126unsigned int i, j;
127
128 j = (context->count[0] >> 3) & 63;
129 if ((context->count[0] += len << 3) < (len << 3)) context->count[1]++;
130 context->count[1] += (len >> 29);
131 if ((j + len) > 63) {
132 memcpy(&context->buffer[j], data, (i = 64-j));
133 SHA1Transform(context->state, context->buffer);
134 for ( ; i + 63 < len; i += 64) {
135 SHA1Transform(context->state, &data[i]);
136 }
137 j = 0;
138 }
139 else i = 0;
140 memcpy(&context->buffer[j], &data[i], len - i);
141}
142
143
144/* Add padding and return the message digest. */
145
146void SHA1Final(unsigned char digest[20], SHA1_CTX* context)
147{
148unsigned long i, j;
149unsigned char finalcount[8];
150
151 for (i = 0; i < 8; i++) {
152 finalcount[i] = (unsigned char)((context->count[(i >= 4 ? 0 : 1)]
153 >> ((3-(i & 3)) * 8) ) & 255); /* Endian independent */
154 }
155 SHA1Update(context, (unsigned char *)"\200", 1);
156 while ((context->count[0] & 504) != 448) {
157 SHA1Update(context, (unsigned char *)"\0", 1);
158 }
159 SHA1Update(context, finalcount, 8); /* Should cause a SHA1Transform() */
160 for (i = 0; i < 20; i++) {
161 digest[i] = (unsigned char)
162 ((context->state[i>>2] >> ((3-(i & 3)) * 8) ) & 255);
163 }
164 /* Wipe variables */
165 i = j = 0;
166 memset(context->buffer, 0, 64);
167 memset(context->state, 0, 20);
168 memset(context->count, 0, 8);
169 memset(&finalcount, 0, 8);
170#ifdef SHA1HANDSOFF /* make SHA1Transform overwrite it's own static vars */
171 SHA1Transform(context->state, context->buffer);
172#endif
173}