private void DisassembleFunction(object sender, RoutedEventArgs e) { ListViewFunction item = (ListViewFunction)FunctionsView.SelectedItem; Function f = item.Details; if (f.Size == 0xFFFFFFFF || f.Blocks == null) { f.FindSize(); FindDominators(f.Blocks); } _InstrCollection.Clear(); foreach (FunctionBlock block in f.Blocks) { uint offset = state.Pe.Rva2Offset(block.StartAddress - (uint)state.Pe.optHdr.ImageBase); for (uint i = 0; i < block.InstrCount; i++) { uint instruction = state.Pe.ReadInstruction(offset + i * 4); XenonInstructions.OpCodeInfo info = state.Instructions.GetInfo(instruction); ListViewInstr instr = new ListViewInstr("0x" + (block.StartAddress + i * 4).ToString("X8"), info.Name, ""); _InstrCollection.Add(instr); } } }