/// <summary> /// Reads a single <see cref="X64RuntimeFunction"/> from the provided input stream. /// </summary> /// <param name="context">The reader context.</param> /// <param name="reader">The input stream.</param> /// <returns>The read function entry.</returns> public static X64RuntimeFunction FromReader(PEReaderContext context, IBinaryStreamReader reader) { uint begin = reader.ReadUInt32(); uint end = reader.ReadUInt32(); uint unwindInfoRva = reader.ReadUInt32(); var unwindInfo = context.File.TryCreateReaderAtRva(unwindInfoRva, out var unwindReader) ? X64UnwindInfo.FromReader(context, unwindReader) : context.BadImageAndReturn <X64UnwindInfo>($"Invalid UnwindInfo RVA {unwindInfoRva:X8}."); return(new X64RuntimeFunction( context.File.GetReferenceToRva(begin), context.File.GetReferenceToRva(end), unwindInfo)); }