HalpGetPCIData
INT64 __fastcall HalpGetPCIData(INT64 a1, INT64 a2, UINT64 a3, UINT8 *r9_0, UINT64 arg20, UINT64 a6){
unsigned int v6;
unsigned int v7;
unsigned int v9;
char v10;
__int64 v11;
unsigned __int16 v12;
unsigned int v13;
unsigned int v14;
unsigned int v15;
INT64 v16;
UINT64 a5;
UINT64 a5a;
UINT64 Size;
UINT64 Sizea;
__int16 a4[32];
v6 = arg20;
v7 = 4096;
v9 = a3;
if( (unsigned int)a6 <= 0x1000 )
v7 = a6;
v10 = a2;
LODWORD(v11) = 0;
v12 = a1;
if( (unsigned int)arg20 < 0x40 )
{
LODWORD(Size) = 64;
LODWORD(a5) = 0;
HalpReadPCIConfig(a1, a2, a3, a4, a5, Size);
v13 = 2;
if( a4[0] != -1 )
v13 = 64;
if( v13 >= (unsigned int)arg20 )
{
v14 = v13 - arg20;
v15 = v7;
if( v14 <= v7 )
v15 = v14;
v11 = v15;
memmove(r9_0, (UINT8 *)a4 + (unsigned int)arg20, v15);
v6 = v11 + arg20;
r9_0 += v11;
v7 -= v11;
goto LABEL_10;
}
return 0i64;
}
LODWORD(Size) = 4;
LODWORD(a5) = 0;
HalpReadPCIConfig(a1, a2, a3, a4, a5, Size);
if( a4[0] == -1 )
return 0i64;
LABEL_10:
if( v7 )
{
if( v6 >= 0x40 )
{
LODWORD(Sizea) = v7;
LODWORD(a5a) = v6;
LOBYTE(v16) = v10;
HalpReadPCIConfig(v12, v16, v9, r9_0, a5a, Sizea);
LODWORD(v11) = v7 + v11;
}
}
return(unsigned int)v11;
}Referenced by:
HalGetBusDataByOffset
HalpPciReadSecondaryBusNumber