MCPcopy Create free account
hub / github.com/TASEmulators/fceux / md5_process

Function md5_process

fceux-server/md5.cpp:64–185  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

62}
63
64void md5_process( struct md5_context *ctx, uint8 data[64] )
65{
66 uint32 A, B, C, D, X[16];
67
68 GET_UINT32( X[0], data, 0 );
69 GET_UINT32( X[1], data, 4 );
70 GET_UINT32( X[2], data, 8 );
71 GET_UINT32( X[3], data, 12 );
72 GET_UINT32( X[4], data, 16 );
73 GET_UINT32( X[5], data, 20 );
74 GET_UINT32( X[6], data, 24 );
75 GET_UINT32( X[7], data, 28 );
76 GET_UINT32( X[8], data, 32 );
77 GET_UINT32( X[9], data, 36 );
78 GET_UINT32( X[10], data, 40 );
79 GET_UINT32( X[11], data, 44 );
80 GET_UINT32( X[12], data, 48 );
81 GET_UINT32( X[13], data, 52 );
82 GET_UINT32( X[14], data, 56 );
83 GET_UINT32( X[15], data, 60 );
84
85#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
86
87#define P(a,b,c,d,k,s,t) \
88{ \
89 a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \
90}
91
92 A = ctx->state[0];
93 B = ctx->state[1];
94 C = ctx->state[2];
95 D = ctx->state[3];
96
97#define F(x,y,z) (z ^ (x & (y ^ z)))
98
99 P( A, B, C, D, 0, 7, 0xD76AA478 );
100 P( D, A, B, C, 1, 12, 0xE8C7B756 );
101 P( C, D, A, B, 2, 17, 0x242070DB );
102 P( B, C, D, A, 3, 22, 0xC1BDCEEE );
103 P( A, B, C, D, 4, 7, 0xF57C0FAF );
104 P( D, A, B, C, 5, 12, 0x4787C62A );
105 P( C, D, A, B, 6, 17, 0xA8304613 );
106 P( B, C, D, A, 7, 22, 0xFD469501 );
107 P( A, B, C, D, 8, 7, 0x698098D8 );
108 P( D, A, B, C, 9, 12, 0x8B44F7AF );
109 P( C, D, A, B, 10, 17, 0xFFFF5BB1 );
110 P( B, C, D, A, 11, 22, 0x895CD7BE );
111 P( A, B, C, D, 12, 7, 0x6B901122 );
112 P( D, A, B, C, 13, 12, 0xFD987193 );
113 P( C, D, A, B, 14, 17, 0xA679438E );
114 P( B, C, D, A, 15, 22, 0x49B40821 );
115
116#undef F
117
118#define F(x,y,z) (y ^ (z & (x ^ y)))
119
120 P( A, B, C, D, 1, 5, 0xF61E2562 );
121 P( D, A, B, C, 6, 9, 0xC040B340 );

Callers 1

md5_updateFunction · 0.70

Calls 1

PFunction · 0.50

Tested by

no test coverage detected