public static LogicSession GetLogicSession(CookieMemory cookie) { string sessionId = cookie.SessionId; DateTime updateTime = cookie.UpdateTime; LogicSession logicSession = null; LogicSession lgcSession = null; object lockObj = AuthUtils._lockObj; LogicSession result; lock (lockObj) { bool local_5_; do { bool flag2 = !AuthUtils.GlobalLogicSession.TryGetValue(sessionId, out lgcSession); if (flag2) { lgcSession = new LogicSession(sessionId); AuthUtils.GlobalLogicSession[sessionId] = lgcSession; } local_5_ = Monitor.TryEnter(lgcSession); bool flag3 = !local_5_; if (flag3) { Thread.Sleep(0); } }while (!local_5_); try { DateTime local_6 = AppRuntime.ServerDateTime; bool flag4 = lgcSession.LoginType == LogicSessionType.N && !AuthUtils.SelectAuthToSession(sessionId, lgcSession); if (flag4) { lgcSession.Ignore = true; result = null; return(result); } bool flag5 = lgcSession.LastRequestTime < AppRuntime.ServerDateTime.AddMinutes(-480.0) && !AuthUtils.UpdateAuthLastRequest(sessionId, local_6); if (flag5) { lgcSession.Ignore = true; result = null; return(result); } bool flag6 = updateTime > lgcSession.UpdateTime && !AuthUtils.SelectAuthToSession(sessionId, lgcSession); if (flag6) { lgcSession.Ignore = true; result = null; return(result); } lgcSession.LastRequestTime = local_6; logicSession = lgcSession; } finally { Monitor.Exit(lgcSession); } } result = logicSession; return(result); }