XmIdivOp
NTSTATUS __stdcall XmIdivOp(_DMA_TRANSFER_INFO *a1, _DMA_TRANSFER_INFO *a2){
unsigned __int64 ScatterGatherElementCount_low;
__int64 ScatterGatherElementCount;
unsigned int Version;
int v6;
unsigned __int64 v7;
unsigned int v8;
__int64 v9;
__int64 v10;
INT64 v11;
unsigned int *p_ScatterGatherListSize;
int v14;
__int64 v15;
ScatterGatherElementCount = (int)a1[5].V1.ScatterGatherElementCount;
if( !(_DWORD)ScatterGatherElementCount )
longjmp((unsigned __int64 *)&a1[8].Version, (VOID *)2, (VOID *)ScatterGatherElementCount_low);
Version = a1[6].Version;
if( Version )
{
p_ScatterGatherListSize = &a1[1].V1.ScatterGatherListSize;
if( Version == 1 )
{
ScatterGatherElementCount_low = (unsigned int)SLOWORD(a1[5].V2.ScatterGatherElementCount);
v14 = (LOWORD(a1[1].V1.MapRegisterCount) | (*(unsigned __int16 *)p_ScatterGatherListSize << 16))
/ SLOWORD(a1[5].V2.ScatterGatherElementCount);
if( ((v14 ^ (v14 << 16 >> 15)) & 0xFFFF0000) == 0 )
{
LODWORD(v7) = (unsigned __int16)v14;
goto LABEL_6;
}
}
else
{
HIDWORD(v15) = *p_ScatterGatherListSize;
LODWORD(v15) = a1[1].V1.MapRegisterCount;
v7 = v15 / ScatterGatherElementCount;
ScatterGatherElementCount_low = HIDWORD(v7);
if( HIDWORD(v7) == (int)v7 >> 31 )
goto LABEL_6;
}
LABEL_11:
longjmp((unsigned __int64 *)&a1[8].Version, (VOID *)3, (VOID *)ScatterGatherElementCount_low);
}
v6 = SLOWORD(a1[1].V1.MapRegisterCount) / SLOBYTE(a1[5].V2.ScatterGatherElementCount);
if( ((v6 ^ (v6 << 24 >> 23)) & 0xFFFFFF00) != 0 )
goto LABEL_11;
LODWORD(v7) = (unsigned __int8)v6;
LABEL_6:
XmStoreResult((INT64)a1, (unsigned int)v7);
*(_QWORD *)(v9 + 88) = v10;
return(unsigned int)XmStoreResult(v11, v8);
}Referenced by:
No references.