HalpInterruptCreateGdtEntry32
unsigned int __fastcall HalpInterruptCreateGdtEntry32(
__int64 a1,
int a2,
__int64 a3,
unsigned int a4,
__int16 a5,
char a6){
__int64 v6;
int v8;
unsigned int v9;
unsigned int result;
v6 = a2 & 0xFFFFFFF0;
*(_QWORD *)(v6 + a1) = 0i64;
v8 = *(_DWORD *)(v6 + a1 + 4);
if( a4 > 0xFFFFF )
{
a4 >>= 12;
v8 |= 0x800000u;
}
*(_WORD *)(v6 + a1) = a4;
*(_DWORD *)(v6 + a1 + 4) = v8 ^ (a4 ^ v8) & 0xF0000;
*(_BYTE *)(v6 + a1 + 4) = 0;
*(_BYTE *)(v6 + a1 + 7) = 0;
v9 = *(_DWORD *)(v6 + a1 + 4) & 0xFFFF1FFF | 0x8000;
if( !a6 )
v9 = *(_DWORD *)(v6 + a1 + 4) & 0xFFBF1FFF | 0x408000;
result = v9 ^ ((unsigned __int16)v9 ^ (unsigned __int16)(a5 << 8)) & 0x1F00;
*(_DWORD *)(v6 + a1 + 4) = result;
if( a6 )
{
result |= 0x200000u;
*(_DWORD *)(v6 + a1 + 4) = result;
}
return result;
}Referenced by:
HalpInterruptBuildStartupStub