LdrpAccessResourceData

NTSTATUS __stdcall LdrpAccessResourceData(
        VOID *DllHandle,
        const _IMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry,
        VOID **Address,
        UINT64 *Size){
  void *v7; 
  unsigned __int64 v8; 
  const _IMAGE_RESOURCE_DATA_ENTRY *v9; 
  VOID *v10; 
  NTSTATUS result; 
  char *v12; 
  UINT64 ImageSize; 
  __int64 AlternateSize[4]; 
  UINT64 v15; 

  AlternateSize[0] = 0i64;
  ImageSize = 0i64;
  v7 = DllHandle;
  if( !DllHandle || !ResourceDataEntry )
    return -1073741811;
  if( *(&PnpReplaceEvent + 6682) == 1 )
  {
    v8 = (unsigned __int64)DllHandle & 0xFFFFFFFFFFFFFFFCui64;
    v9 = (const _IMAGE_RESOURCE_DATA_ENTRY *)RtlImageDirectoryEntryToData(DllHandle, 1u, 2u, &v15);
    if( !v9 )
      return -1073741687;
    if( ResourceDataEntry < v9 )
      goto LABEL_10;
    result = LdrpGetImageSize(v7, &ImageSize);
    if( result == -1073741701 )
      return result;
    if( ImageSize
      && ((unsigned __int64)ResourceDataEntry < v8 || (unsigned __int64)ResourceDataEntry >= v8 + ImageSize) )
    {
LABEL_10:
      LODWORD(v12) = LdrpGetAlternateResourceModuleHandleEx(
                       v7,
                       v10,
                       (_IMAGE_RESOURCE_DATA_ENTRY *)ResourceDataEntry,
                       (UINT64 *)AlternateSize,
                       ImageSize,
                       AlternateSize[0],
                       AlternateSize[1],
                       AlternateSize[2]);
      if( (unsigned __int64)(v12 - 1) <= 0xFFFFFFFFFFFFFFFDui64 )
        v7 = v12;
    }
  }
  return LdrpAccessResourceDataNoMultipleLanguage(v7, (_IMAGE_RESOURCE_DATA_ENTRY *)ResourceDataEntry, Address, Size);
}

Referenced by:

LdrAccessResource
RtlFindMessage
RtlLoadString