HalpSetWakeAlarm
NTSTATUS __stdcall HalpSetWakeAlarm(INT64 a1, UINT8 *a2, INT64 a3){
unsigned int v4;
unsigned int v5;
unsigned int v6;
unsigned int v7;
unsigned int v8;
unsigned __int8 v9;
HalpAcquireCmosSpinLockAndWait((_EPROCESS *)a1, a2, (VOID *)a3);
v4 = a2[10];
__outbyte(0x70u, 1u);
__outbyte(0x71u, v4 % 0xA + 16 * (v4 / 0xA));
v5 = a2[8];
__outbyte(0x70u, 3u);
__outbyte(0x71u, v5 % 0xA + 16 * (v5 / 0xA));
v6 = a2[6];
__outbyte(0x70u, 5u);
__outbyte(0x71u, v6 % 0xA + 16 * (v6 / 0xA));
if( Fadt.day_alarm_index > 9u )
{
v7 = a2[4];
__outbyte(0x70u, Fadt.day_alarm_index);
__outbyte(0x71u, v7 % 0xA + 16 * (v7 / 0xA));
if( Fadt.month_alarm_index > 9u )
{
v8 = a2[2];
__outbyte(0x70u, Fadt.month_alarm_index);
__outbyte(0x71u, v8 % 0xA + 16 * (v8 / 0xA));
}
}
__outbyte(0x70u, 0xBu);
v9 = __inbyte(0x71u);
__outbyte(0x70u, 0xBu);
__outbyte(0x71u, v9 & 0x41 | 0x22);
__outbyte(0x70u, 0xCu);
__inbyte(0x71u);
__outbyte(0x70u, 0xDu);
__inbyte(0x71u);
_InterlockedExchange(&HalpSystemHardwareLock, -1);
if( (_BYTE)byte_140C49EE0 )
_enable();
return 0;
}Referenced by:
HaliSetWakeAlarm
HalpCheckWakeupTimeAndAdjust