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

Function md5_process

src/utils/md5.cpp:41–162  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

39}
40
41void md5_process( struct md5_context *ctx, uint8 data[64] )
42{
43 uint32 A, B, C, D, X[16];
44
45 GET_UINT32( X[0], data, 0 );
46 GET_UINT32( X[1], data, 4 );
47 GET_UINT32( X[2], data, 8 );
48 GET_UINT32( X[3], data, 12 );
49 GET_UINT32( X[4], data, 16 );
50 GET_UINT32( X[5], data, 20 );
51 GET_UINT32( X[6], data, 24 );
52 GET_UINT32( X[7], data, 28 );
53 GET_UINT32( X[8], data, 32 );
54 GET_UINT32( X[9], data, 36 );
55 GET_UINT32( X[10], data, 40 );
56 GET_UINT32( X[11], data, 44 );
57 GET_UINT32( X[12], data, 48 );
58 GET_UINT32( X[13], data, 52 );
59 GET_UINT32( X[14], data, 56 );
60 GET_UINT32( X[15], data, 60 );
61
62#define S(x,n) ((x << n) | ((x & 0xFFFFFFFF) >> (32 - n)))
63
64#define P(a,b,c,d,k,s,t) \
65{ \
66 a += F(b,c,d) + X[k] + t; a = S(a,s) + b; \
67}
68
69 A = ctx->state[0];
70 B = ctx->state[1];
71 C = ctx->state[2];
72 D = ctx->state[3];
73
74#define F(x,y,z) (z ^ (x & (y ^ z)))
75
76 P( A, B, C, D, 0, 7, 0xD76AA478 );
77 P( D, A, B, C, 1, 12, 0xE8C7B756 );
78 P( C, D, A, B, 2, 17, 0x242070DB );
79 P( B, C, D, A, 3, 22, 0xC1BDCEEE );
80 P( A, B, C, D, 4, 7, 0xF57C0FAF );
81 P( D, A, B, C, 5, 12, 0x4787C62A );
82 P( C, D, A, B, 6, 17, 0xA8304613 );
83 P( B, C, D, A, 7, 22, 0xFD469501 );
84 P( A, B, C, D, 8, 7, 0x698098D8 );
85 P( D, A, B, C, 9, 12, 0x8B44F7AF );
86 P( C, D, A, B, 10, 17, 0xFFFF5BB1 );
87 P( B, C, D, A, 11, 22, 0x895CD7BE );
88 P( A, B, C, D, 12, 7, 0x6B901122 );
89 P( D, A, B, C, 13, 12, 0xFD987193 );
90 P( C, D, A, B, 14, 17, 0xA679438E );
91 P( B, C, D, A, 15, 22, 0x49B40821 );
92
93#undef F
94
95#define F(x,y,z) (y ^ (z & (x ^ y)))
96
97 P( A, B, C, D, 1, 5, 0xF61E2562 );
98 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