HvpCopyDataToOffsetArray

VOID __stdcall HvpCopyDataToOffsetArray(INT64 a1, UINT64 a2, INT64 a3, INT64 a4, UINT64 *a5, UINT64 *a6){
  UINT64 *v6; 
  UINT64 *v8; 
  size_t v9; 
  unsigned int v10; 
  unsigned int v11; 
  unsigned int v12; 
  size_t v14; 
  size_t v15; 

  v6 = a6;
  v8 = a5;
  v9 = a2;
  v10 = *(_DWORD *)a6;
  v11 = *(_DWORD *)a5;
  if( (_DWORD)a2 )
  {
    v12 = 0;
    while( 1 )
    {
      v14 = v9;
      if( v10 + v9 > *(_DWORD *)(a3 + 24i64 * v11 + 16) )
        v14 = *(_DWORD *)(a3 + 24i64 * v11 + 16) - v10;
      v15 = v14;
      memmove((VOID *)(*(_QWORD *)(a3 + 24i64 * v11 + 8) + v10), (const VOID *)(a1 + v12), v14);
      v12 += v15;
      v10 += v15;
      v9 -= v15;
      if( v10 == *(_DWORD *)(a3 + 24i64 * v11 + 16) )
      {
        if( !v9 )
        {
LABEL_7:
          v6 = a6;
          v8 = a5;
          break;
        }
        ++v11;
        v10 = 0;
      }
      if( !v9 )
        goto LABEL_7;
    }
  }
  *(_DWORD *)v8 = v11;
  *(_DWORD *)v6 = v10;
}

Referenced by:

HvpGenerateLogEntryDirtyData
HvpGenerateLogEntryHeader
HvpGenerateLogEntryMetadata