LdrpVerifyAlternateResourceModuleEx
BOOL __fastcall LdrpVerifyAlternateResourceModuleEx(VOID *a1, VOID *a2, INT64 a3, const WCHAR *a4, INT64 a5){
char *v7;
INT64 v8;
char *v9;
char *v10;
__int64 v11;
void *v13[3];
PVOID RcConfig;
RcConfig = 0i64;
v13[0] = 0i64;
if( (a5 & 0x1000) != 0 )
{
LODWORD(v7) = LdrResGetRCConfig(a1, 0i64, &RcConfig, 0x1000ui64, 1u);
if( (int)v7 >= 0 )
{
LODWORD(v7) = LdrResGetRCConfig(a2, 0i64, v13, 0x1000ui64, 0);
if( (int)v7 < 0 )
goto LABEL_11;
v9 = (char *)RcConfig;
v10 = (char *)v13[0];
LABEL_4:
v11 = *(_QWORD *)(v9 + 44) - *(_QWORD *)(v10 + 44);
if( !v11 )
v11 = *(_QWORD *)(v9 + 52) - *(_QWORD *)(v10 + 52);
if( !v11 )
{
if( (a5 & 0x1000000) != 0 )
goto LABEL_10;
if( a4 )
{
LODWORD(v7) = wcsicmp(a4, (const wchar_t *)&v10[*((unsigned int *)v10 + 29)]);
if( !(_DWORD)v7 )
goto LABEL_10;
}
}
LABEL_11:
LOBYTE(v7) = 0;
return(int)v7;
}
if( (_DWORD)v7 != -1073741686 )
goto LABEL_11;
}
else
{
v7 = (char *)LdrpGetRcConfig(a1, (INT64)a2, 0, 1);
v9 = v7;
if( v7 )
{
v7 = (char *)LdrpGetRcConfig(a2, v8, 0, 0);
v10 = v7;
if( !v7 )
goto LABEL_11;
goto LABEL_4;
}
}
if( (a5 & 0x1000000) == 0 )
goto LABEL_11;
LABEL_10:
LOBYTE(v7) = 1;
return(int)v7;
}Referenced by:
LdrLoadAlternateResourceModuleEx