public void readCodeplug() { int num = 0; int num2 = 0; int num3 = 0; int num4 = 0; byte[] array = new byte[Class15.EEROM_SPACE]; byte[] array2 = new byte[160]; List <int> list = new List <int>(); List <int> list2 = new List <int>(); int num5 = 0; int num6 = 0; int i = 0; int num7 = 0; int num8 = 0; int num9 = 0; int num10 = 0; bool flag = false; float num11 = 0f; int num12 = 0; SpecifiedDevice specifiedDevice = null; try { specifiedDevice = SpecifiedDevice.FindSpecifiedDevice(HID_VID, HID_PID); //0x152A HID_PID if (specifiedDevice == null) { if (this.OnFirmwareUpdateProgress != null) { this.OnFirmwareUpdateProgress(this, new FirmwareUpdateProgressEventArgs(0f, Class15.SZ_DEVICE_NOT_FOUND, true, true)); } } else { while (true) { Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(Class19.CMD_PRG); specifiedDevice.ReceiveData(array2); if (array2[0] != Class19.CMD_ACK[0]) { break; } specifiedDevice.SendData(Class19.CMD_PRG2); Array.Clear(array2, 0, array2.Length); specifiedDevice.ReceiveData(array2); byte[] array3 = new byte[8]; Buffer.BlockCopy(array2, 0, array3, 0, 8); if (array3.smethod_4(Class15.CUR_MODEL)) { specifiedDevice.SendData(Class19.CMD_ACK); Array.Clear(array2, 0, array2.Length); specifiedDevice.ReceiveData(array2); if (array2[0] == Class19.CMD_ACK[0]) { if (!flag && Class15.CUR_PWD != "DT8168") { i = Class15.ADDR_PWD; num5 = 8; byte[] data = new byte[4] { 82, (byte)(i >> 8), (byte)i, 8 }; Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(data, 0, 4); specifiedDevice.ReceiveData(array2); string text = ""; for (num = 0; num < 8; num++) { char c = Convert.ToChar(array2[num + 4]); if ("0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\b".IndexOf(c) < 0) { break; } text += c; } if (string.IsNullOrEmpty(text)) { Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(Class19.CMD_ENDR); specifiedDevice.ReceiveData(array2); if (array2[0] != Class19.CMD_ACK[0]) { break; } flag = true; } else { if (text != Class15.CUR_PWD) { Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(Class19.CMD_ENDR); specifiedDevice.ReceiveData(array2); if (array2[0] != Class19.CMD_ACK[0]) { break; } Class15.CUR_PWD = ""; PasswordForm passwordForm = new PasswordForm(); if (passwordForm.ShowDialog() == DialogResult.OK) { num12++; if (num12 < 3) { continue; } this.OnFirmwareUpdateProgress(this, new FirmwareUpdateProgressEventArgs(0f, "Password error more than three times, quit communication!", true, true)); } else { this.OnFirmwareUpdateProgress(this, new FirmwareUpdateProgressEventArgs(0f, "", true, true)); } return; } Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(Class19.CMD_ENDR); specifiedDevice.ReceiveData(array2); if (array2[0] != Class19.CMD_ACK[0]) { break; } flag = true; } continue; } List <int> list3 = new List <int>(); List <int> list4 = new List <int>(); list3.Add(Class15.ADDR_CHANNEL); list4.Add(Class15.ADDR_CHANNEL + 16); for (num2 = 1; num2 < 8; num2++) { num8 = Class15.ADDR_EX_CH + (num2 - 1) * ChannelForm.SPACE_CH_GROUP; list3.Add(num8); list4.Add(num8 + 16); } num8 = Class15.ADDR_EX_ZONE_LIST; list3.Add(num8); list4.Add(num8 + 32); num3 = 0; num4 = 0; for (num = 0; num < list3.Count; num++) { num9 = list3[num]; num10 = list4[num]; for (i = num9; i < num10; i += num5) { num6 = i % 32; num5 = ((i + 32 <= num10) ? (32 - num6) : (num10 - i)); num4++; } } num8 = 0; num = 0; while (true) { if (num < list3.Count) { num9 = list3[num]; num10 = list4[num]; i = num9; while (i < num10) { if (!this.method_0()) { if (num8 >> 16 != i >> 16) { byte[] array4 = new byte[8] { 67, 87, 66, 4, 0, 0, 0, 0 }; num8 = i >> 16 << 16; array4[4] = (byte)(num8 >> 24); array4[5] = (byte)(num8 >> 16); array4[6] = (byte)(num8 >> 8); array4[7] = (byte)num8; Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(array4, 0, array4.Length); specifiedDevice.ReceiveData(array2); if (array2[0] != Class19.CMD_ACK[0]) { goto end_IL_02a2; } } num6 = i % 32; num5 = ((i + 32 <= num10) ? (32 - num6) : (num10 - i)); num7 = i - num8; byte[] data2 = new byte[4] { 82, (byte)(num7 >> 8), (byte)num7, (byte)num5 }; Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(data2, 0, 4); if (!specifiedDevice.ReceiveData(array2)) { goto end_IL_02a2; } Array.Copy(array2, 4, array, i, num5); if (this.OnFirmwareUpdateProgress != null) { this.OnFirmwareUpdateProgress(this, new FirmwareUpdateProgressEventArgs((float)(++num3) * 5f / (float)num4, i.ToString(), false, false)); } i += num5; continue; } specifiedDevice.SendData(Class19.CMD_ENDR); specifiedDevice.ReceiveData(array2); return; } num++; continue; } byte[] array5 = new byte[16]; Array.Copy(array, Class15.ADDR_CHANNEL, array5, 0, array5.Length); BitArray bitArray = new BitArray(array5); list.Add(Class15.ADDR_CHANNEL); list2.Add(Class15.ADDR_CHANNEL + 16); for (num = 0; num < 128; num++) { if (bitArray[num]) { num9 = Class15.ADDR_CHANNEL + 16 + num * ChannelForm.SPACE_CH; num10 = num9 + ChannelForm.SPACE_CH; list.Add(num9); list2.Add(num10); } } for (num2 = 1; num2 < 8; num2++) { num8 = Class15.ADDR_EX_CH + (num2 - 1) * ChannelForm.SPACE_CH_GROUP; Array.Copy(array, num8, array5, 0, array5.Length); bitArray = new BitArray(array5); list.Add(num8); list2.Add(num8 + 16); for (num = 0; num < 128; num++) { if (bitArray[num]) { num9 = num8 + 16 + num * ChannelForm.SPACE_CH; num10 = num9 + ChannelForm.SPACE_CH; list.Add(num9); list2.Add(num10); } } } byte[] array6 = new byte[32]; num8 = Class15.ADDR_EX_ZONE_LIST; Array.Copy(array, num8, array6, 0, array6.Length); bitArray = new BitArray(array6); list.Add(num8); list2.Add(num8 + 32); for (num = 0; num < 250; num++) { num8 = Class15.ADDR_EX_ZONE_LIST + 32; if (bitArray[num]) { num9 = num8 + num * ZoneForm.SPACE_ZONE; num10 = num9 + ZoneForm.SPACE_ZONE; list.Add(num9); list2.Add(num10); } } for (num = 0; num < this.START_ADDR.Length; num++) { list.Add(this.START_ADDR[num]); list2.Add(this.END_ADDR[num]); } num3 = 0; num4 = 0; for (num = 0; num < list.Count; num++) { num9 = list[num]; num10 = list2[num]; for (i = num9; i < num10; i += num5) { num6 = i % 32; num5 = ((i + 32 <= num10) ? (32 - num6) : (num10 - i)); num4++; } } num8 = 0; num = 0; while (true) { if (num < list.Count) { num9 = list[num]; num10 = list2[num]; i = num9; while (i < num10) { if (!this.method_0()) { if (num8 >> 16 != i >> 16) { byte[] array7 = new byte[8] { 67, 87, 66, 4, 0, 0, 0, 0 }; num8 = i >> 16 << 16; array7[4] = (byte)(num8 >> 24); array7[5] = (byte)(num8 >> 16); array7[6] = (byte)(num8 >> 8); array7[7] = (byte)num8; Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(array7, 0, array7.Length); specifiedDevice.ReceiveData(array2); if (array2[0] == Class19.CMD_ACK[0]) { goto IL_08b4; } goto IL_0a1f; } goto IL_08b4; } specifiedDevice.SendData(Class19.CMD_ENDR); specifiedDevice.ReceiveData(array2); return; IL_08b4: num6 = i % 32; num5 = ((i + 32 <= num10) ? (32 - num6) : (num10 - i)); num7 = i - num8; byte[] array8 = new byte[4] { 82, (byte)(num7 >> 8), (byte)num7, (byte)num5 }; Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(array8, 0, 4); if (specifiedDevice.ReceiveData(array2)) { if (Class15.smethod_18(array8, array2, 4)) { Array.Copy(array2, 4, array, i, num5); if (this.OnFirmwareUpdateProgress != null) { num11 = 5f + (float)(++num3) * 95f / (float)num4; this.OnFirmwareUpdateProgress(this, new FirmwareUpdateProgressEventArgs(num11, i.ToString(), false, false)); } i += num5; continue; } goto IL_0a51; } goto IL_0a38; } num++; continue; } Array.Clear(array2, 0, array2.Length); specifiedDevice.SendData(Class19.CMD_ENDR); specifiedDevice.ReceiveData(array2); if (array2[0] != Class19.CMD_ACK[0]) { break; } MainForm.ByteToData(array); if (this.OnFirmwareUpdateProgress != null) { this.OnFirmwareUpdateProgress(this, new FirmwareUpdateProgressEventArgs(100f, "", false, true)); } return; IL_0a51: specifiedDevice.SendData(Class19.CMD_ENDR); specifiedDevice.ReceiveData(array2); break; IL_0a38: specifiedDevice.SendData(Class19.CMD_ENDR); specifiedDevice.ReceiveData(array2); break; IL_0a1f: specifiedDevice.SendData(Class19.CMD_ENDR); specifiedDevice.ReceiveData(array2); break; } break; } } break; } if (this.OnFirmwareUpdateProgress != null) { this.OnFirmwareUpdateProgress(this, new FirmwareUpdateProgressEventArgs(0f, Class15.SZ_MODEL_NOT_MATCH, true, true)); } return; continue; // Roger Clark. There is a known compiler warning here. This may be an artifact caused by the decompiler end_IL_02a2: break; } if (this.OnFirmwareUpdateProgress != null) { this.OnFirmwareUpdateProgress(this, new FirmwareUpdateProgressEventArgs(0f, Class15.SZ_COMM_ERROR, true, true)); } } } catch (TimeoutException ex) { Console.WriteLine(ex.Message); if (this.OnFirmwareUpdateProgress != null) { this.OnFirmwareUpdateProgress(this, new FirmwareUpdateProgressEventArgs(0f, Class15.SZ_COMM_ERROR, false, false)); } } finally { if (specifiedDevice != null) { specifiedDevice.Dispose(); } } }