SymCryptMarvin32AppendBlocks
VOID __stdcall SymCryptMarvin32AppendBlocks(PSYMCRYPT_MARVIN32_CHAINING_STATE pChain, PCBYTE pbData, _SIZE_T cbData){
unsigned int v3;
unsigned int v4;
__int64 v5;
const unsigned __int8 *v6;
__int64 v7;
unsigned int v8;
int v9;
int v10;
int v11;
unsigned int v12;
int v13;
int v14;
int v15;
unsigned int v16;
int v17;
int v18;
int v19;
unsigned int v20;
int v21;
int v22;
int v23;
v3 = pChain->s[0];
v4 = pChain->s[1];
v5 = cbData & 0xC;
v6 = &pbData[v5];
v7 = *(_QWORD *)&cbData - v5;
switch( v5 )
{
case 0i64:
goto LABEL_6;
case 4i64:
goto LABEL_10;
case 8i64:
goto LABEL_9;
case 12i64:
while( 1 )
{
v12 = *((_DWORD *)v6 - 3) + v3;
v13 = v12 ^ v4;
v14 = v13 + __ROL4__(v12, 20);
v15 = v14 ^ __ROL4__(v13, 9);
v3 = v15 + __ROL4__(v14, 27);
v4 = __ROL4__(v15, 19);
LABEL_9:
v16 = *((_DWORD *)v6 - 2) + v3;
v17 = v16 ^ v4;
v18 = v17 + __ROL4__(v16, 20);
v19 = v18 ^ __ROL4__(v17, 9);
v3 = v19 + __ROL4__(v18, 27);
v4 = __ROL4__(v19, 19);
LABEL_10:
v20 = *((_DWORD *)v6 - 1) + v3;
v21 = v20 ^ v4;
v22 = v21 + __ROL4__(v20, 20);
v23 = v22 ^ __ROL4__(v21, 9);
v3 = v23 + __ROL4__(v22, 27);
v4 = __ROL4__(v23, 19);
LABEL_6:
if( !v7 )
break;
v8 = *(_DWORD *)v6 + v3;
v6 += 16;
v9 = v8 ^ v4;
v7 -= 16i64;
v10 = v9 + __ROL4__(v8, 20);
v11 = v10 ^ __ROL4__(v9, 9);
v3 = v11 + __ROL4__(v10, 27);
v4 = __ROL4__(v11, 19);
}
break;
}
pChain->s[0] = v3;
pChain->s[1] = v4;
}Referenced by:
SymCryptMarvin32Append
SymCryptMarvin32Result