LdrpAccessResourceData

INT64 __fastcall LdrpAccessResourceData(
        VOID *DllHandle,
        const _IMAGE_RESOURCE_DATA_ENTRY *ResourceDataEntry,
        VOID **Address,
        UINT64 *Size){
  void *v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 
  IMAGE_RESOURCE_DATA_ENTRY *v10; 
  INT64 result; 
  char *v12; 
  UINT64 ImageSize; 
  IMAGE_RESOURCE_DATA_ENTRY ResourceDataEntrya[2]; 
  UINT64 v15; 
  *(_QWORD *)&ResourceDataEntrya[0].OffsetToData = 0i64;
  ImageSize = 0i64;
  v7 = DllHandle;
  if( !DllHandle || !ResourceDataEntry )
    return 3221225485i64;
  if( PnPBootDriversInitialized == 1 )
  {
    v8 = (unsigned __int64)DllHandle & 0xFFFFFFFFFFFFFFFCui64;
    LODWORD(v9) = RtlImageDirectoryEntryToData(DllHandle, 1u, 2u, &v15);
    if( !v9 )
      return 3221225609i64;
    if( (unsigned __int64)ResourceDataEntry < v9 )
      goto LABEL_10;
    LODWORD(result) = LdrpGetImageSize(v7, &ImageSize);
    if( (_DWORD)result == -1073741701 )
      return result;
    if( ImageSize
      && ((unsigned __int64)ResourceDataEntry < v8 || (unsigned __int64)ResourceDataEntry >= v8 + ImageSize) )
    {
LABEL_10:
      LODWORD(v12) = LdrpGetAlternateResourceModuleHandleEx(
                       v7,
                       v10,
                       (UINT64 *)&ResourceDataEntry->OffsetToData,
                       ResourceDataEntrya,
                       ImageSize);
      if( (unsigned __int64)(v12 - 1) <= 0xFFFFFFFFFFFFFFFDui64 )
        v7 = v12;
    }
  }
  LODWORD(result) = LdrpAccessResourceDataNoMultipleLanguage(
                      v7,
                      (_IMAGE_RESOURCE_DATA_ENTRY *)ResourceDataEntry,
                      Address,
                      Size);
  return result;
}

Referenced by:

LdrAccessResource
RtlFindMessage
RtlLoadString