SymCryptMarvin32
VOID __stdcall SymCryptMarvin32(
PCSYMCRYPT_MARVIN32_EXPANDED_SEED pExpandedSeed,
PCBYTE pbData,
_SIZE_T cbData,
PBYTE pbResult,
UINT8 pbResulta){
int v5;
int v6;
unsigned __int64 v7;
int v8;
int v9;
int v10;
int v11;
int v12;
int v13;
int v14;
int v15;
int v16;
__int64 v17;
__int64 v18;
__int64 v19;
__int64 v20;
__int64 v21;
int v22;
int v23;
int v24;
int v25;
unsigned int v26;
int v27;
int v28;
int v29;
int v30;
int v31;
int v32;
int v33;
int v34;
unsigned int v35;
int v36;
int v37;
int v38;
int v39;
int v40;
int v41;
int v42;
v5 = **(_DWORD **)&pExpandedSeed;
v6 = *(_DWORD *)(*(_QWORD *)&pExpandedSeed + 4i64);
if( *(_QWORD *)&cbData > 7ui64 )
{
v7 = ((unsigned __int64)(*(_QWORD *)&cbData - 8i64) >> 3) + 1;
*(_QWORD *)&cbData += -8i64 * v7;
do
{
v8 = *(_DWORD *)pbData + v5;
v9 = v8 ^ v6;
v10 = v9 + __ROL4__(v8, 20);
v11 = v10 ^ __ROL4__(v9, 9);
v12 = *((_DWORD *)pbData + 1) + __ROL4__(v10, 27);
pbData += 8;
v13 = v11 + v12;
v14 = v13 ^ __ROL4__(v11, 19);
v15 = v14 + __ROL4__(v13, 20);
v16 = v15 ^ __ROL4__(v14, 9);
v5 = v16 + __ROL4__(v15, 27);
v6 = __ROL4__(v16, 19);
--v7;
}
while( v7 );
}
if( !*(_QWORD *)&cbData )
goto LABEL_17;
v17 = *(_QWORD *)&cbData - 1i64;
if( !v17 )
goto LABEL_16;
v18 = v17 - 1;
if( !v18 )
goto LABEL_14;
v19 = v18 - 1;
if( v19 )
{
v20 = v19 - 2;
if( v20 )
{
v21 = v20 - 1;
if( v21 )
{
v22 = *(_DWORD *)pbData + v5;
v23 = v22 ^ v6;
v24 = v23 + __ROL4__(v22, 20);
v25 = v24 ^ __ROL4__(v23, 9);
v5 = v25 + __ROL4__(v24, 27);
v6 = __ROL4__(v25, 19);
if( v21 == 1 )
{
pbData += 4;
goto LABEL_12;
}
LABEL_17:
v26 = 128;
goto LABEL_18;
}
v27 = *(_DWORD *)pbData + v5;
v28 = v27 ^ v6;
v29 = v28 + __ROL4__(v27, 20);
v30 = v29 ^ __ROL4__(v28, 9);
v5 = v30 + __ROL4__(v29, 27);
v6 = __ROL4__(v30, 19);
pbData += 4;
LABEL_14:
v26 = *(unsigned __int16 *)pbData | 0x800000;
goto LABEL_18;
}
v31 = *(_DWORD *)pbData + v5;
v32 = v31 ^ v6;
v33 = v32 + __ROL4__(v31, 20);
v34 = v33 ^ __ROL4__(v32, 9);
v5 = v34 + __ROL4__(v33, 27);
v6 = __ROL4__(v34, 19);
pbData += 4;
LABEL_16:
v26 = *pbData | 0x8000;
goto LABEL_18;
}
LABEL_12:
v26 = *(unsigned __int16 *)pbData | (pbData[2] << 16) | 0x80000000;
LABEL_18:
v35 = v26 + v5;
v36 = v35 ^ v6;
v37 = v36 + __ROL4__(v35, 20);
v38 = v37 ^ __ROL4__(v36, 9);
v39 = v38 + __ROL4__(v37, 27);
v40 = v39 ^ __ROL4__(v38, 19);
v41 = v40 + __ROL4__(v39, 20);
v42 = v41 ^ __ROL4__(v40, 9);
*((_DWORD *)pbResult + 1) = __ROL4__(v42, 19);
*(_DWORD *)pbResult = v42 + __ROL4__(v41, 27);
}Referenced by:
HvpApplyIncrementalLogFile
HvpGenerateLogEntryChecksums
HvpLogEntryCheckHeaderChecksum