private void ReadCLIHeader()
{
int addr_cli = RVAManager.GetAddress(this.pe4.CLIHeader);
if (addr_cli == 0) return;
cli = new CLIHeader();
this.cli.ReadData(this.data, this.rva.ConvertToPhysical(addr_cli));
int offset = this.rva.ConvertToPhysical(RVAManager.GetAddress(this.cli.MetaData));
this.mdroot = new MetadataRoot();
this.mdroot.ReadData(this.data, offset);
offset += this.mdroot.Length + 18;
int nStreams = Util.GetInt16(this.data, offset);
offset += 2;
this.idxm = new IndexManager(this.data, this.rva);
for (int i = 0; i < nStreams; i++)
{
StreamHeader sh = new StreamHeader();
sh.mdroot = mdroot;
sh.ReadData(this.data, offset);
offset += sh.GetStreamSize();
this.SetStreamHeader(sh);
}
this.ReadTilde();
}