SymCryptMarvin32Append

VOID __stdcall SymCryptMarvin32Append(PSYMCRYPT_MARVIN32_STATE pState, PCBYTE pbData, _SIZE_T cbData){
  int v3; 
  unsigned __int64 v4; 
  const unsigned __int8 *v5; 
  __int64 v6; 
  unsigned int v7; 
  unsigned __int64 v8; 

  v3 = *(_DWORD *)(*(_QWORD *)&pState + 40i64);
  v4 = *(_QWORD *)&cbData;
  v5 = pbData;
  v6 = *(_QWORD *)&pState;
  *(_DWORD *)(*(_QWORD *)&pState + 40i64) = v3 + cbData;
  v7 = v3 & 3;
  if( v7 )
  {
    v8 = 4 - v7;
    if( *(_QWORD *)&cbData >= v8 )
    {
      memmove((VOID *)(*(_QWORD *)&pState + v7), pbData, v8);
      v5 += v8;
      v4 -= v8;
      SymCryptMarvin32AppendBlocks((PSYMCRYPT_MARVIN32_CHAINING_STATE)(v6 + 16), (PCBYTE)v6, 4);
      v7 = 0;
    }
  }
  if( v4 >= 4 )
  {
    SymCryptMarvin32AppendBlocks((PSYMCRYPT_MARVIN32_CHAINING_STATE)(v6 + 16), v5, v4 & 0xFFFFFFFC);
    v5 += v4 & 0xFFFFFFFFFFFFFFFCui64;
    v4 -= v4 & 0xFFFFFFFFFFFFFFFCui64;
  }
  if( v4 )
    memmove((VOID *)(v6 + v7), v5, v4);
}

Referenced by:

HvpGenerateLogEntryChecksums