HalpDmaMapContiguousTransferV3
void __fastcall HalpDmaMapContiguousTransferV3(
__int64 a1,
__int64 a2,
__int64 a3,
__int64 a4,
unsigned int *a5,
char a6,
char a7,
__int64 *a8){
unsigned int v12;
__int64 v13;
v12 = *a5;
if( (unsigned int)HalpDmaNextContiguousPiece(a1, a2, 0i64, a4, a6, *a5) != v12 || *(_BYTE *)(a3 + 64) )
{
*a8 = *(_QWORD *)a3 + (a4 & 0xFFF);
if( a6 )
{
HalpDmaSyncMapBuffers(a1, a2, a4, (_QWORD *)a3, v12, a6, 0, a7);
}
else if( !*(_BYTE *)(a1 + 437) )
{
HalpDmaSyncMapBuffers(a1, a2, a4, (_QWORD *)a3, v12, 0, 1, a7);
}
}
else
{
v13 = (a4 & 0xFFF)
+ (*(_QWORD *)(a2 + 8i64 * (unsigned int)((unsigned __int64)(a4 - *(_QWORD *)(a2 + 32)) >> 12) + 48) << 12);
*a8 = v13;
HalpDmaFlushBuffer(v13, a2, a4, v12, a6, a7);
}
}Referenced by:
HalpMapTransferV3