LdrpVerifyAlternateResourceModuleEx

BOOL __stdcall LdrpVerifyAlternateResourceModuleEx(VOID *a1, VOID *a2, INT64 a3, const WCHAR *a4, INT64 a5){
  INT64 v7; 
  char *v8; 
  char *v9; 
  __int64 v10; 
  NTSTATUS v12; 
  VOID *v13; 
  VOID *RcConfig; 

  RcConfig = 0i64;
  v13 = 0i64;
  if( (a5 & 0x1000) != 0 )
  {
    v12 = LdrResGetRCConfig(a1, 0i64, &RcConfig, 0x1000ui64, 1u);
    if( v12 >= 0 )
    {
      if( LdrResGetRCConfig(a2, 0i64, &v13, 0x1000ui64, 0) < 0 )
        return 0;
      v8 = (char *)RcConfig;
      v9 = (char *)v13;
LABEL_4:
      v10 = *(_QWORD *)(v8 + 44) - *(_QWORD *)(v9 + 44);
      if( !v10 )
        v10 = *(_QWORD *)(v8 + 52) - *(_QWORD *)(v9 + 52);
      return !v10 && ((a5 & 0x1000000) != 0 || a4 && !wcsicmp(a4, (const wchar_t *)&v9[*((unsigned int *)v9 + 29)]));
    }
    if( v12 != -1073741686 )
      return 0;
  }
  else
  {
    v8 = (char *)LdrpGetRcConfig(a1, (INT64)a2, 0, 1);
    if( v8 )
    {
      v9 = (char *)LdrpGetRcConfig(a2, v7, 0, 0);
      if( !v9 )
        return 0;
      goto LABEL_4;
    }
  }
  return(a5 & 0x1000000) != 0;
}

Referenced by:

LdrLoadAlternateResourceModuleEx