BapdRegisterSiData
VOID __fastcall BapdRegisterSiData(VOID *WbclPackage, UINT64 WbclPackageSize, UINT64 InvokeType){
unsigned __int64 v4;
int v5;
WCHAR v6;
const WCHAR *v7;
__int64 v8;
__int64 v9;
WCHAR v10;
WCHAR v11;
WCHAR v12;
WCHAR v13;
WCHAR v14;
WCHAR v15;
WCHAR v16;
UINT64 DataSize;
UINT64 DataSizeb;
UINT64 DataSizec;
UINT64 DataSizea;
UINT64 DataSized;
UINT64 DataSizee;
UINT64 DataSizef;
UINT64 DataSizeg;
struct _UNICODE_STRING DestinationString;
HANDLE KeyHandle;
if( WbclPackage )
{
KeyHandle = 0i64;
v4 = (unsigned int)WbclPackageSize;
v5 = InvokeType;
DestinationString = 0i64;
if( BapdGetISRegistryKey(&KeyHandle) >= 0 )
{
if( WbclPackage != (VOID *)-4i64 && *(_DWORD *)WbclPackage )
{
v7 = L"WBCLDrtm";
if( v5 != 2 )
v7 = L"WBCL";
RtlInitUnicodeString(&DestinationString, v7, v6);
LODWORD(DataSize) = *(_DWORD *)WbclPackage;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 3ui64, (char *)WbclPackage + 4, DataSize);
}
if( v5 != 2 )
{
v8 = (unsigned int)(*(_DWORD *)WbclPackage + 4);
v9 = v8;
if( v4 >= v8 + 48
&& *(_DWORD *)((char *)WbclPackage + v8) <= 0x30u
&& *(_DWORD *)((char *)WbclPackage + v8 + 4) <= 2u )
{
RtlInitUnicodeString(&DestinationString, L"EventCount", v6);
LODWORD(DataSize) = 8;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 0xBui64, (char *)WbclPackage + v9 + 8, DataSize);
RtlInitUnicodeString(&DestinationString, L"BootCount", v10);
LODWORD(DataSizeb) = 8;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 0xBui64, (char *)WbclPackage + v9 + 16, DataSizeb);
RtlInitUnicodeString(&DestinationString, L"CounterId", v11);
LODWORD(DataSizec) = 8;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 0xBui64, (char *)WbclPackage + v9 + 24, DataSizec);
if( *(_DWORD *)((char *)WbclPackage + v9 + 4) == 2
&& *(_DWORD *)((char *)WbclPackage + v9) == 48
&& *((_BYTE *)WbclPackage + v9 + 32) )
{
RtlInitUnicodeString(&DestinationString, L"TPMActivePCRBanks", v12);
LODWORD(DataSizea) = 4;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 4ui64, (char *)WbclPackage + v9 + 40, DataSizea);
RtlInitUnicodeString(&DestinationString, L"TPMActiveLogFormat", v13);
LODWORD(DataSized) = 4;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 4ui64, (char *)WbclPackage + v9 + 44, DataSized);
RtlInitUnicodeString(&DestinationString, L"TPMDigestAlgID", v14);
LODWORD(DataSizee) = 4;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 4ui64, (char *)WbclPackage + v9 + 36, DataSizee);
}
if( !v5 )
{
RtlInitUnicodeString(&DestinationString, L"InitialEventCount", v12);
LODWORD(DataSizea) = 8;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 0xBui64, (char *)WbclPackage + v9 + 8, DataSizea);
RtlInitUnicodeString(&DestinationString, L"InitialBootCount", v15);
LODWORD(DataSizef) = 8;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 0xBui64, (char *)WbclPackage + v9 + 16, DataSizef);
RtlInitUnicodeString(&DestinationString, L"InitialCounterId", v16);
LODWORD(DataSizeg) = 8;
ZwSetValueKey(KeyHandle, &DestinationString, 0i64, 0xBui64, (char *)WbclPackage + v9 + 24, DataSizeg);
}
}
}
}
if( KeyHandle )
ZwClose(KeyHandle);
}
}Referenced by:
BapdpRegisterWbclData
PopBootLoaderSiData