LdrpLoadResourceFromAlternativeModule

NTSTATUS __stdcall LdrpLoadResourceFromAlternativeModule(
        PVOID DllHandle,
        UINT64 *ResourceIdPath,
        UINT64 ResourceIdPathLength,
        UINT64 Flags,
        PVOID *ResourceDirectoryOrData){
  char v5; 
  UINT16 v7; 
  NTSTATUS result; 
  PVOID v9; 
  UINT64 Flagsa; 
  PVOID ReturnAlternateModule; 
  __int64 AlternateViewSize[2]; 

  ReturnAlternateModule = 0i64;
  v5 = Flags;
  if( (unsigned int)(ResourceIdPathLength - 3) > 1 )
    return -1073741583;
  if( (Flags & 0x1000000) != 0 )
    v7 = -3346;
  else
    v7 = *((_WORD *)ResourceIdPath + 8);
  AlternateViewSize[0] = 0i64;
  LODWORD(Flagsa) = Flags;
  result = LdrLoadAlternateResourceModuleEx(DllHandle, v7, &ReturnAlternateModule, (UINT64 *)AlternateViewSize, Flagsa);
  if( result >= 0 )
  {
    v9 = ReturnAlternateModule;
    ResourceIdPath[2] = v7;
    result = LdrpSearchResourceSection_U(v9, ResourceIdPath, 3ui64, 0x2000030ui64, ResourceDirectoryOrData);
    if( (v5 & 0x40) != 0 && result >= 0 )
    {
      result = LdrpFindMessageInAlternateModule(
                 ReturnAlternateModule,
                 *ResourceDirectoryOrData,
                 0i64,
                 *((unsigned int *)ResourceIdPath + 6),
                 0);
      if( result < 0 )
        *ResourceDirectoryOrData = 0i64;
    }
  }
  else if( result == -1073741766 || result == -1073741772 )
  {
    return -1073020927;
  }
  return result;
}

Referenced by:

LdrpSearchResourceSection_U