SymCryptMarvin32Append

void __fastcall SymCryptMarvin32Append(INT64 a1, UINT8 *Src, UINT64 Size){
  int v3; 
  UINT64 v4; 
  UINT8 *v5; 
  unsigned int v7; 
  UINT64 v8; 
  v3 = *(_DWORD *)(a1 + 40);
  v4 = Size;
  v5 = Src;
  *(_DWORD *)(a1 + 40) = v3 + Size;
  v7 = v3 & 3;
  if( v7 )
  {
    v8 = 4 - v7;
    if( Size >= v8 )
    {
      memmove((UINT8 *)(a1 + v7), Src, (unsigned int)v8);
      v5 += v8;
      v4 -= v8;
      SymCryptMarvin32AppendBlocks((UINT64 *)(a1 + 16), a1, 4i64);
      v7 = 0;
    }
  }
  if( v4 >= 4 )
  {
    SymCryptMarvin32AppendBlocks((UINT64 *)(a1 + 16), (INT64)v5, v4 & 0xFFFFFFFFFFFFFFFCui64);
    v5 += v4 & 0xFFFFFFFFFFFFFFFCui64;
    v4 -= v4 & 0xFFFFFFFFFFFFFFFCui64;
  }
  if( v4 )
    memmove((UINT8 *)(a1 + v7), v5, v4);
}

Referenced by:

HvpGenerateLogEntryChecksums