SdbpGetRegistryMatchingAttributes
VOID __stdcall SdbpGetRegistryMatchingAttributes(){
UINT64 v0;
_DB *v1;
WCHAR **v2;
WCHAR **v3;
int v4;
unsigned int v5;
_DB *v6;
unsigned int v7;
WCHAR *v8;
VOID *BinaryTagData;
unsigned int FirstTag;
INT8 *v11;
UINT64 v12;
WCHAR *StringTagPtr;
WCHAR *v14;
unsigned int v15;
unsigned int v16;
unsigned int DWORDTag;
unsigned int v18;
__int64 TagDataSize;
unsigned int v20;
unsigned int v21;
unsigned int v22;
unsigned int v23;
WCHAR *v24;
__int64 QWORDTag;
WCHAR **v26;
WCHAR **v27;
unsigned int *v28;
WCHAR **v29;
_DWORD *v30;
__int64 *v31;
_QWORD *v32;
_QWORD *v33;
v27 = v3;
v26 = v2;
v4 = 0;
*v2 = 0i64;
v5 = v0;
v24 = 0i64;
v6 = v1;
QWORDTag = 0i64;
*v28 = 0;
v7 = 0;
v8 = 0i64;
BinaryTagData = 0i64;
*v3 = 0i64;
*v29 = 0i64;
*v30 = 0;
*v31 = 0i64;
*v32 = 0i64;
*v33 = 0i64;
FirstTag = SdbFindFirstTag(v1, v0, 0x6001u);
if( FirstTag )
{
StringTagPtr = SdbGetStringTagPtr(v6, FirstTag);
v14 = StringTagPtr;
if( !StringTagPtr || !*StringTagPtr )
{
v11 = (INT8 *)"Failed to read key path";
v12 = 798i64;
goto LABEL_34;
}
v15 = SdbFindFirstTag(v6, v5, 0x6030u);
if( v15 )
v24 = SdbGetStringTagPtr(v6, v15);
v16 = SdbFindFirstTag(v6, v5, 0x4051u);
if( !v16 )
{
LABEL_18:
TagDataSize = 0i64;
goto LABEL_19;
}
DWORDTag = SdbReadDWORDTag(v6, v16, 0);
v7 = DWORDTag;
if( !DWORDTag )
{
v11 = "Failed to read value type";
v12 = 817i64;
goto LABEL_34;
}
if( DWORDTag > 2 )
{
switch( DWORDTag )
{
case 3u:
v21 = SdbFindFirstTag(v6, v5, 0x9012u);
v22 = v21;
if( !v21 )
{
v11 = "Failed to get TAG_REG_VALUE_DATA_BINARY";
v12 = 864i64;
goto LABEL_34;
}
BinaryTagData = SdbGetBinaryTagData(v6, v21);
if( !BinaryTagData )
{
v11 = "Failed to read value data";
v12 = 870i64;
goto LABEL_34;
}
TagDataSize = (unsigned int)SdbGetTagDataSize(v6, v22);
break;
case 4u:
v20 = SdbFindFirstTag(v6, v5, 0x4052u);
if( !v20 )
{
v11 = "Failed to get TAG_REG_VALUE_DATA_DWORD";
v12 = 844i64;
goto LABEL_34;
}
v4 = SdbReadDWORDTag(v6, v20, 0);
TagDataSize = 0i64;
break;
case 7u:
goto LABEL_28;
case 0xBu:
v18 = SdbFindFirstTag(v6, v5, 0x501Bu);
if( !v18 )
{
v11 = "Failed to get TAG_REG_VALUE_DATA_QWORD";
v12 = 854i64;
goto LABEL_34;
}
QWORDTag = SdbReadQWORDTag(v6, v18, 0i64);
goto LABEL_18;
default:
v11 = "Unknown registry value type";
v12 = 877i64;
goto LABEL_34;
}
LABEL_19:
*v26 = v14;
*v27 = v24;
*v28 = v7;
*v29 = v8;
*v30 = v4;
*v31 = QWORDTag;
*v32 = BinaryTagData;
*v33 = TagDataSize;
return;
}
LABEL_28:
v23 = SdbFindFirstTag(v6, v5, 0x6031u);
if( !v23 )
{
v11 = "Failed to get TAG_REG_VALUE_DATA_SZ";
v12 = 830i64;
goto LABEL_34;
}
v8 = SdbGetStringTagPtr(v6, v23);
if( !v8 )
{
v11 = "Failed to read value data";
v12 = 836i64;
goto LABEL_34;
}
goto LABEL_18;
}
v11 = "Failed to get key path tag";
v12 = 792i64;
LABEL_34:
AslLogCallPrintf(1ui64, (INT8 *)"SdbpGetRegistryMatchingAttributes", v12, v11);
}Referenced by:
SdbpCheckMatchingRegistry
SdbpCheckMatchingWildcardRegistry