PopBatteryInitialize
NTSTATUS __fastcall PopBatteryInitialize(__int64 a1){
unsigned int v1;
IRP *v3;
NTSTATUS result;
int v5;
const char *v6;
__int128 v7;
bool v8;
_QWORD *v9;
_QWORD *v10;
UINT64 InputSize;
UINT64 InputSizea;
UINT64 OutputSize;
UINT64 OutputSizea;
__m256i Buffer;
int v16;
int v17;
char v18;
v1 = *(_DWORD *)(a1 + 108);
v3 = *(IRP **)(a1 + 56);
v16 = 0;
LODWORD(OutputSize) = 36;
memset(&Buffer.m256i_u64[1], 0, 24);
Buffer.m256i_i64[0] = v1;
LODWORD(InputSize) = 12;
PopPrepareIoctl(v3, 0x294044ui64, 0, &Buffer, InputSize, OutputSize);
result = IoSynchronousCallDriver(*(_DEVICE_OBJECT **)(a1 + 48), *(_IRP **)(a1 + 56));
if( result >= 0 )
{
v5 = v16;
v6 = "non-rechargeable";
v7 = *(_OWORD *)&Buffer.m256i_u64[2];
v18 = 0;
*(_OWORD *)(a1 + 112) = *(_OWORD *)Buffer.m256i_i8;
*(_OWORD *)(a1 + 128) = v7;
*(_DWORD *)(a1 + 144) = v5;
v8 = *(_BYTE *)(a1 + 116) == 0;
v17 = *(_DWORD *)(a1 + 120);
if( !v8 )
v6 = "rechargeable";
LODWORD(OutputSizea) = *(_DWORD *)(a1 + 112);
LODWORD(InputSizea) = *(_DWORD *)(a1 + 108);
DbgPrintEx(
0x92u,
2u,
"\n"
"Battery Information [%p]\n"
"|-- Tag = %u\n"
"|-- Capabilities = 0x%08x\n"
"|-- Technology = %s\n"
"|-- Chemistry = %s\n"
"|-- DesignedCapacity = %u\n"
"|-- FullChargedCapacity = %u\n"
"|-- DefaultAlert1 = %u\n"
"|-- DefaultAlert2 = %u\n"
"|-- CriticalBias = %u\n"
"|-- CycleCount = %u\n",
a1,
InputSizea,
OutputSizea,
v6,
&v17,
*(_DWORD *)(a1 + 124),
*(_DWORD *)(a1 + 128),
*(_DWORD *)(a1 + 132),
*(_DWORD *)(a1 + 136),
*(_DWORD *)(a1 + 140),
*(_DWORD *)(a1 + 144));
*(_DWORD *)(a1 + 104) = 3;
v9 = (_QWORD *)(a1 + 64);
v10 = (_QWORD *)qword_140C23558;
if( *(__int64 **)qword_140C23558 != &qword_140C23550 )
__fastfail(3u);
v9[1] = qword_140C23558;
*v9 = &qword_140C23550;
*v10 = v9;
LODWORD(dword_140C23534) = dword_140C23534 + 1;
++dword_140C23598;
result = 0;
qword_140C23558 = (__int64)v9;
byte_140C23538 = 1;
}
return result;
}Referenced by:
PopBatteryWorker