internal static object[] LoginReponse(int versionfirst, object ivk, object util, ref T result2) { Comparison comparison = null; lock (EventQueueConsumer.valCandidate) { if (!EventQueueConsumer._AdvisorCandidate) { EventQueueConsumer._AdvisorCandidate = true; EventQueueConsumer.GetReponse(); } } EventQueueConsumer.SystemProductDispatcher systemProductDispatcher = null; if (EventQueueConsumer.parameterCandidate[versionfirst] != null) { systemProductDispatcher = EventQueueConsumer.parameterCandidate[versionfirst]; } else { EventQueueConsumer.templateCandidate.BaseStream.Position = (long)EventQueueConsumer._StateCandidate[versionfirst]; systemProductDispatcher = new EventQueueConsumer.SystemProductDispatcher(); Module module = typeof(EventQueueConsumer).Module; int metadataToken = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); int num = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); int num2 = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); int num3 = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); systemProductDispatcher.comparatorCandidate = module.ResolveMethod(metadataToken); ParameterInfo[] parameters = systemProductDispatcher.comparatorCandidate.GetParameters(); systemProductDispatcher.m_ManagerCandidate = new EventQueueConsumer.RegistryFilter[parameters.Length]; for (int i = 0; i < parameters.Length; i++) { Type type = parameters[i].ParameterType; EventQueueConsumer.RegistryFilter registryFilter = new EventQueueConsumer.RegistryFilter(); registryFilter.contextCandidate = type.IsByRef; registryFilter.m_PrototypeCandidate = i; systemProductDispatcher.m_ManagerCandidate[i] = registryFilter; if (type.IsByRef) { type = type.GetElementType(); } EventQueueConsumer.SnapshotType snapshotType_; if (type == typeof(string)) { snapshotType_ = (EventQueueConsumer.SnapshotType)14; } else if (type == typeof(byte)) { snapshotType_ = (EventQueueConsumer.SnapshotType)2; } else if (type == typeof(sbyte)) { snapshotType_ = (EventQueueConsumer.SnapshotType)1; } else if (type == typeof(short)) { snapshotType_ = (EventQueueConsumer.SnapshotType)3; } else if (type == typeof(ushort)) { snapshotType_ = (EventQueueConsumer.SnapshotType)4; } else if (type == typeof(int)) { snapshotType_ = (EventQueueConsumer.SnapshotType)5; } else if (type == typeof(uint)) { snapshotType_ = (EventQueueConsumer.SnapshotType)6; } else if (type == typeof(long)) { snapshotType_ = (EventQueueConsumer.SnapshotType)7; } else if (type == typeof(ulong)) { snapshotType_ = (EventQueueConsumer.SnapshotType)8; } else if (type == typeof(float)) { snapshotType_ = (EventQueueConsumer.SnapshotType)9; } else if (type == typeof(double)) { snapshotType_ = (EventQueueConsumer.SnapshotType)10; } else if (type == typeof(bool)) { snapshotType_ = (EventQueueConsumer.SnapshotType)11; } else if (type == typeof(IntPtr)) { snapshotType_ = (EventQueueConsumer.SnapshotType)12; } else if (type == typeof(UIntPtr)) { snapshotType_ = (EventQueueConsumer.SnapshotType)13; } else if (type == typeof(char)) { snapshotType_ = (EventQueueConsumer.SnapshotType)15; } else { snapshotType_ = (EventQueueConsumer.SnapshotType)0; } registryFilter.snapshotType_0 = snapshotType_; } systemProductDispatcher.m_UtilsCandidate = new List(num); for (int j = 0; j < num; j++) { int num4 = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); EventQueueConsumer.AnnotationPolicyImporter annotationPolicyImporter = new EventQueueConsumer.AnnotationPolicyImporter(); annotationPolicyImporter._PoolCandidate = null; if (num4 >= 0 && num4 < 50) { annotationPolicyImporter._ClassCandidate = (EventQueueConsumer.SnapshotType)(num4 & 31); annotationPolicyImporter.m_FieldCandidate = ((num4 & 32) > 0); } annotationPolicyImporter.m_StatusCandidate = j; systemProductDispatcher.m_UtilsCandidate.Add(annotationPolicyImporter); } systemProductDispatcher._BaseCandidate = new List(num2); for (int k = 0; k < num2; k++) { int num5 = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); int num6 = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); EventQueueConsumer.DispatcherCandidate dispatcherCandidate = new EventQueueConsumer.DispatcherCandidate(); dispatcherCandidate.printerCandidate = num5; dispatcherCandidate._ConnectionCandidate = num6; EventQueueConsumer.WriterCandidate writerCandidate = new EventQueueConsumer.WriterCandidate(); dispatcherCandidate.m_AnnotationCandidate = writerCandidate; num5 = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); num6 = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); int num7 = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); writerCandidate._ProxyCandidate = num5; writerCandidate.int_0 = num6; writerCandidate.m_MockCandidate = num7; if (num7 == 0) { writerCandidate._ValueCandidate = module.ResolveType(EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate)); } else if (num7 == 1) { writerCandidate._TagCandidate = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); } else { EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); } systemProductDispatcher._BaseCandidate.Add(dispatcherCandidate); } List baseCandidate = systemProductDispatcher._BaseCandidate; if (comparison == null) { comparison = new Comparison(EventQueueConsumer.ExcludeReponse); } baseCandidate.Sort(comparison); systemProductDispatcher.m_AlgoCandidate = new List(num3); for (int l = 0; l < num3; l++) { EventQueueConsumer.ClientCandidateMessage clientCandidateMessage = new EventQueueConsumer.ClientCandidateMessage(); byte b = EventQueueConsumer.templateCandidate.ReadByte(); clientCandidateMessage.methodCandidate = (EventQueueConsumer.RegistryValueKind)b; if (b > 173) { throw new Exception(); } int num8 = (int)EventQueueConsumer._ProccesorCandidate[(int)b]; if (num8 == 0) { clientCandidateMessage._AttrCandidate = null; } else { object attrCandidate; switch (num8) { case 1: attrCandidate = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); break; case 2: attrCandidate = EventQueueConsumer.templateCandidate.ReadInt64(); break; case 3: attrCandidate = EventQueueConsumer.templateCandidate.ReadSingle(); break; case 4: attrCandidate = EventQueueConsumer.templateCandidate.ReadDouble(); break; case 5: { int num9 = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); int[] array = new int[num9]; for (int m = 0; m < num9; m++) { array[m] = EventQueueConsumer.FindReponse(EventQueueConsumer.templateCandidate); } attrCandidate = array; break; } default: throw new Exception(); } clientCandidateMessage._AttrCandidate = attrCandidate; } systemProductDispatcher.m_AlgoCandidate.Add(clientCandidateMessage); } EventQueueConsumer.parameterCandidate[versionfirst] = systemProductDispatcher; } EventQueueConsumer.SetterCallbackCandidate setterCallbackCandidate = new EventQueueConsumer.SetterCallbackCandidate(); setterCallbackCandidate.m_EventCandidate = systemProductDispatcher; ParameterInfo[] parameters2 = systemProductDispatcher.comparatorCandidate.GetParameters(); bool flag2 = false; int num10 = 0; if (systemProductDispatcher.comparatorCandidate is MethodInfo) { MethodInfo methodInfo = (MethodInfo)systemProductDispatcher.comparatorCandidate; if (methodInfo.ReturnType != typeof(void)) { flag2 = true; } } if (systemProductDispatcher.comparatorCandidate.IsStatic) { setterCallbackCandidate.ruleCandidate = new EventQueueConsumer.ConnectionPolicyImporter[parameters2.Length]; for (int n = 0; n < parameters2.Length; n++) { Type parameterType = parameters2[n].ParameterType; setterCallbackCandidate.ruleCandidate[n] = EventQueueConsumer.ConnectionPolicyImporter.EnableReponse(parameterType, ivk[n]); if (parameterType.IsByRef) { num10++; } } } else { setterCallbackCandidate.ruleCandidate = new EventQueueConsumer.ConnectionPolicyImporter[parameters2.Length + 1]; if (systemProductDispatcher.comparatorCandidate.DeclaringType.IsValueType) { setterCallbackCandidate.ruleCandidate[0] = new EventQueueConsumer.StrategyProductConnector(new EventQueueConsumer.OrderCallbackCandidate(util), systemProductDispatcher.comparatorCandidate.DeclaringType); } else { setterCallbackCandidate.ruleCandidate[0] = new EventQueueConsumer.OrderCallbackCandidate(util); } for (int num11 = 0; num11 < parameters2.Length; num11++) { Type parameterType2 = parameters2[num11].ParameterType; if (parameterType2.IsByRef) { setterCallbackCandidate.ruleCandidate[num11 + 1] = EventQueueConsumer.ConnectionPolicyImporter.EnableReponse(parameterType2, ivk[num11]); num10++; } else { setterCallbackCandidate.ruleCandidate[num11 + 1] = EventQueueConsumer.ConnectionPolicyImporter.EnableReponse(parameterType2, ivk[num11]); } } } setterCallbackCandidate.m_RecordCandidate = new EventQueueConsumer.ConnectionPolicyImporter[systemProductDispatcher.m_UtilsCandidate.Count]; for (int num12 = 0; num12 < systemProductDispatcher.m_UtilsCandidate.Count; num12++) { EventQueueConsumer.AnnotationPolicyImporter annotationPolicyImporter2 = systemProductDispatcher.m_UtilsCandidate[num12]; switch (annotationPolicyImporter2._ClassCandidate) { case (EventQueueConsumer.SnapshotType)0: setterCallbackCandidate.m_RecordCandidate[num12] = null; break; case (EventQueueConsumer.SnapshotType)1: case (EventQueueConsumer.SnapshotType)2: case (EventQueueConsumer.SnapshotType)3: case (EventQueueConsumer.SnapshotType)4: case (EventQueueConsumer.SnapshotType)5: case (EventQueueConsumer.SnapshotType)6: case (EventQueueConsumer.SnapshotType)11: case (EventQueueConsumer.SnapshotType)15: setterCallbackCandidate.m_RecordCandidate[num12] = new EventQueueConsumer.AuthenticationCallbackCandidate(0, annotationPolicyImporter2._ClassCandidate); break; case (EventQueueConsumer.SnapshotType)7: case (EventQueueConsumer.SnapshotType)8: setterCallbackCandidate.m_RecordCandidate[num12] = new EventQueueConsumer.ConsumerFilter(0L, annotationPolicyImporter2._ClassCandidate); break; case (EventQueueConsumer.SnapshotType)9: case (EventQueueConsumer.SnapshotType)10: setterCallbackCandidate.m_RecordCandidate[num12] = new EventQueueConsumer.ObjectCandidateMessage(0.0, annotationPolicyImporter2._ClassCandidate); break; case (EventQueueConsumer.SnapshotType)12: setterCallbackCandidate.m_RecordCandidate[num12] = new EventQueueConsumer.AnnotationWatcherWorker(IntPtr.Zero); break; case (EventQueueConsumer.SnapshotType)13: setterCallbackCandidate.m_RecordCandidate[num12] = new EventQueueConsumer.AnnotationWatcherWorker(UIntPtr.Zero); break; case (EventQueueConsumer.SnapshotType)14: setterCallbackCandidate.m_RecordCandidate[num12] = null; break; case (EventQueueConsumer.SnapshotType)16: setterCallbackCandidate.m_RecordCandidate[num12] = new EventQueueConsumer.OrderCallbackCandidate(null); break; } } try { setterCallbackCandidate.WriteAdapter(); } finally { setterCallbackCandidate.OrderAdapter(); } int num13 = 0; if (flag2) { num13 = 1; } num13 += num10; object[] array2 = new object[num13]; if (flag2) { array2[0] = null; } if (systemProductDispatcher.comparatorCandidate is MethodInfo) { MethodInfo methodInfo2 = (MethodInfo)systemProductDispatcher.comparatorCandidate; if (methodInfo2.ReturnType != typeof(void) && setterCallbackCandidate.readerCandidate != null) { array2[0] = setterCallbackCandidate.readerCandidate.DefineProperty(methodInfo2.ReturnType); } } if (num10 > 0) { int num14 = 0; if (flag2) { num14++; } for (int num15 = 0; num15 < parameters2.Length; num15++) { Type type2 = parameters2[num15].ParameterType; if (type2.IsByRef) { type2 = type2.GetElementType(); if (setterCallbackCandidate.ruleCandidate[num15] != null) { if (systemProductDispatcher.comparatorCandidate.IsStatic) { array2[num14] = setterCallbackCandidate.ruleCandidate[num15].DefineProperty(type2); } else { array2[num14] = setterCallbackCandidate.ruleCandidate[num15 + 1].DefineProperty(type2); } } else { array2[num14] = null; } num14++; } } } if (!systemProductDispatcher.comparatorCandidate.IsStatic && systemProductDispatcher.comparatorCandidate.DeclaringType.IsValueType) { result2 = (T)((object)setterCallbackCandidate.ruleCandidate[0].DefineProperty(systemProductDispatcher.comparatorCandidate.DeclaringType)); } return array2; }