private void GetsmcbtnClick(object sender, EventArgs e) { _sw = Stopwatch.StartNew(); var ofd = new OpenFileDialog(); if (ofd.ShowDialog() != DialogResult.OK) { return; } var bw = new BackgroundWorker(); bw.DoWork += (o, args) => { try { using (var reader = new NANDReader(ofd.FileName)) { AddOutput("Grabbing SMC from NAND: "); var data = _x360NAND.GetSmc(reader, true); var smc = new Smc(); var type = smc.GetType(ref data); AddOutput("\r\nSMC Version: {0} [{1}]", smc.GetVersion(ref data), smc.GetMotherBoardFromVersion(ref data)); AddOutput("\r\nSMC Type: {0}", type); if (type == Smc.SmcTypes.Jtag || type == Smc.SmcTypes.RJtag) { Smc.JtagsmcPatches.AnalyseSmc(ref data); } AddOutput("\r\nSMC Glitch Patched: {0}", smc.CheckGlitchPatch(ref data) ? "Yes" : "No"); } } catch (X360UtilsException ex) { AddOutput("FAILED!"); AddException(ex.ToString()); } AddOutput(Environment.NewLine); AddDone(); }; bw.RunWorkerCompleted += BwCompleted; bw.RunWorkerAsync(); }