CmSetInstallerClassMappedPropertyFromRegProp
__int64 __fastcall CmSetInstallerClassMappedPropertyFromRegProp(
__int64 a1,
__int64 a2,
void *a3,
__int64 a4,
unsigned int a5,
_BYTE *a6,
int a7){
int v7;
DEVPROPKEY **v8;
int *v9;
unsigned int v13;
int v14;
DEVPROPKEY *v15;
DEVPROPKEY **v16;
__int64 v17;
int v19;
unsigned int v20;
unsigned int v21;
unsigned int v22;
int v23;
v7 = *(_DWORD *)(a4 + 16);
v8 = &CmClassRegPropMap;
v9 = 0i64;
v23 = 0;
v13 = 0;
v14 = 1;
do
{
v15 = *v8;
v16 = v8;
if( v7 == (*v8)->pid )
{
v17 = *(_QWORD *)a4 - *(_QWORD *)&v15->fmtid.Data1;
if( *(_QWORD *)a4 == *(_QWORD *)&v15->fmtid.Data1 )
v17 = *(_QWORD *)(a4 + 8) - *(_QWORD *)v15->fmtid.Data4;
if( !v17 )
break;
}
++v13;
v8 += 3;
v16 = 0i64;
}
while( v13 < 9 );
if( !v16 )
return 3221226032i64;
v19 = *((_DWORD *)v16 + 2);
v20 = *((_DWORD *)v16 + 3);
if( a5 != v19 )
{
if( a5 == 25 )
{
if( v19 != 18 )
return 3221225485i64;
}
else if( a5 >= 2 )
{
return 3221225485i64;
}
}
v21 = *((_DWORD *)v16 + 4);
if( v20 == 25 )
return 3221225659i64;
if( v20 != 27 )
return CmSetInstallerClassRegProp(a1, a2, a3, v20, v21, a6, a7 & (unsigned int)-(a6 != 0i64));
if( a6 )
{
if( !a7 )
return 3221225485i64;
if( *a6 != 0xFF )
{
if( *a6 )
return 3221225485i64;
v14 = 0;
}
v23 = v14;
v9 = &v23;
v22 = 4;
}
else
{
v22 = 0;
}
return CmSetInstallerClassRegProp(a1, a2, a3, 0x1Bu, v21, v9, v22);
}Referenced by:
CmSetInstallerClassMappedProperty