RtlCmEncodeMemIoResource
INT64 __stdcall RtlCmEncodeMemIoResource(
_CM_PARTIAL_RESOURCE_DESCRIPTOR *Descriptor,
UINT8 Type,
UINT64 Length,
UINT64 Start){
__int16 v4;
UINT64 v6;
__int16 v7;
if( ((Type - 3) & 0xFB) != 0 )
{
if( Type != 1 )
return 3221225485i64;
goto LABEL_9;
}
if( Type == 1 )
{
LABEL_9:
if( Length <= 0xFFFFFFFF )
goto LABEL_3;
return 3221225485i64;
}
LABEL_3:
*(_QWORD *)((char *)Descriptor + 4) = Start;
if( Type == 1 )
{
*(_BYTE *)Descriptor = 1;
goto LABEL_6;
}
v4 = *((_WORD *)Descriptor + 1) & 0xF1FF;
*((_WORD *)Descriptor + 1) = v4;
if( Length <= 0xFFFFFFFF )
{
*(_BYTE *)Descriptor = 3;
LABEL_6:
*((_DWORD *)Descriptor + 3) = Length;
return 0i64;
}
if( Length > 0xFFFFFFFF00i64 )
{
if( Length > 0xFFFFFFFF0000i64 )
{
if( Length <= 0xFFFFFFFF00000000ui64 )
{
v6 = HIDWORD(Length);
if( Length == HIDWORD(Length) << 32 )
{
v7 = 2048;
goto LABEL_15;
}
}
}
else
{
v6 = Length >> 16;
if( Length == (unsigned __int64)(unsigned int)(Length >> 16) << 16 )
{
v7 = 1024;
goto LABEL_15;
}
}
}
else
{
v6 = Length >> 8;
if( Length == (unsigned __int64)(unsigned int)(Length >> 8) << 8 )
{
v7 = 512;
LABEL_15:
*(_BYTE *)Descriptor = 7;
*((_WORD *)Descriptor + 1) = v7 | v4;
*((_DWORD *)Descriptor + 3) = v6;
return 0i64;
}
}
return 3221225473i64;
}Referenced by:
HalpReportResourceUsage
IopInitializeResourceMap