HalpBlkPoPerformPpmOperationForIoPort
VOID __fastcall HalpBlkPoPerformPpmOperationForIoPort(INT64 a1){
INT64 v1;
int v2;
int v3;
UINT32 Port;
int v5;
unsigned __int16 v6;
UINT32 v7;
__int64 v8;
v1 = a1;
v2 = *(_DWORD *)(a1 + 12) - 1;
if( v2 )
{
if( v2 != 1 )
{
LABEL_3:
__debugbreak();
return;
}
v3 = *(_DWORD *)(v1 + 28);
if( *(_DWORD *)(v1 + 24) )
{
Port = HalpBlkPoReadPort(*(_WORD *)(v1 + 20), *(_WORD *)(v1 + 22));
v3 = Port & *(_DWORD *)(v1 + 24) | ~*(_DWORD *)(v1 + 24) & v5;
}
v6 = *(_WORD *)(v1 + 20);
switch( *(_WORD *)(v1 + 22) )
{
case 1:
__outbyte(v6, v3);
break;
case 2:
__outword(v6, v3);
break;
case 4:
__outdword(v6, v3);
break;
default:
goto LABEL_3;
}
}
else
{
v7 = HalpBlkPoReadPort(*(_WORD *)(v1 + 20), *(_WORD *)(v1 + 22));
*(_DWORD *)(v8 + 24) = v7;
}
}Referenced by:
HalpBlkPoPerformPpmOperation