# Model_HeartBeatManager_191.luac
; fn @HeartBeatManager.lua  line 0-0 np=0 va=1 ms=3 code=73 consts=25 upvals=1 protos=22
;   K[0]='HeartBeatManager'
;   K[1]='__index'
;   K[2]=60
;   K[3]='Init'
;   K[4]='Update'
;   K[5]='UpdatePerSecond'
;   K[6]='Destroy'
;   K[7]='OnSceneViewLoaded'
;   K[8]='_OnEnterMainScene'
;   K[9]='TrySchedule'
;   K[10]='_HeartBeatScheduler'
;   K[11]='_ResetSchedulerInterval'
;   K[12]='_ClearSchedulerInterval'
;   K[13]='Unschedule'
;   K[14]='HeartBeatOnNextFrame'
;   K[15]='_TrySend'
;   K[16]='HandleHeartBeatResponse'
;   K[17]='HandleConflictSession'
;   K[18]='KickedOut'
;   K[19]='IsKickedOut'
;   K[20]='SetSession'
;   K[21]='GetSession'
;   K[22]='SetInterval'
;   K[23]='_CanUseUdp'
;   K[24]='_CheckSceneCondition'
;   upvals: _ENV
;   locals: HEART_BEAT_DEFAULT_MAX_INTERVAL(6-73)
0000  NEWTABLE  R0 = {} (0 items)
0001  SETTABUP  _ENV[K0('HeartBeatManager')] = R0
0002  GETTABUP  R0 = _ENV[K0('HeartBeatManager')]
0003  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0004  SETTABLE  R0[K1('__index')] = R1
0005  LOADK     R0 = K2 60
0006  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0007  CLOSURE   R2 = closure proto0
0008  SETTABLE  R1[K3('Init')] = R2
0009  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0010  CLOSURE   R2 = closure proto1
0011  SETTABLE  R1[K4('Update')] = R2
0012  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0013  CLOSURE   R2 = closure proto2
0014  SETTABLE  R1[K5('UpdatePerSecond')] = R2
0015  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0016  CLOSURE   R2 = closure proto3
0017  SETTABLE  R1[K6('Destroy')] = R2
0018  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0019  CLOSURE   R2 = closure proto4
0020  SETTABLE  R1[K7('OnSceneViewLoaded')] = R2
0021  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0022  CLOSURE   R2 = closure proto5
0023  SETTABLE  R1[K8('_OnEnterMainScene')] = R2
0024  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0025  CLOSURE   R2 = closure proto6
0026  SETTABLE  R1[K9('TrySchedule')] = R2
0027  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0028  CLOSURE   R2 = closure proto7
0029  SETTABLE  R1[K10('_HeartBeatScheduler')] = R2
0030  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0031  CLOSURE   R2 = closure proto8
0032  SETTABLE  R1[K11('_ResetSchedulerInterval')] = R2
0033  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0034  CLOSURE   R2 = closure proto9
0035  SETTABLE  R1[K12('_ClearSchedulerInterval')] = R2
0036  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0037  CLOSURE   R2 = closure proto10
0038  SETTABLE  R1[K13('Unschedule')] = R2
0039  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0040  CLOSURE   R2 = closure proto11
0041  SETTABLE  R1[K14('HeartBeatOnNextFrame')] = R2
0042  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0043  CLOSURE   R2 = closure proto12
0044  SETTABLE  R1[K15('_TrySend')] = R2
0045  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0046  CLOSURE   R2 = closure proto13
0047  SETTABLE  R1[K16('HandleHeartBeatResponse')] = R2
0048  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0049  CLOSURE   R2 = closure proto14
0050  SETTABLE  R1[K17('HandleConflictSession')] = R2
0051  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0052  CLOSURE   R2 = closure proto15
0053  SETTABLE  R1[K18('KickedOut')] = R2
0054  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0055  CLOSURE   R2 = closure proto16
0056  SETTABLE  R1[K19('IsKickedOut')] = R2
0057  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0058  CLOSURE   R2 = closure proto17
0059  SETTABLE  R1[K20('SetSession')] = R2
0060  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0061  CLOSURE   R2 = closure proto18
0062  SETTABLE  R1[K21('GetSession')] = R2
0063  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0064  CLOSURE   R2 = closure proto19
0065  SETTABLE  R1[K22('SetInterval')] = R2
0066  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0067  CLOSURE   R2 = closure proto20
0068  SETTABLE  R1[K23('_CanUseUdp')] = R2
0069  GETTABUP  R1 = _ENV[K0('HeartBeatManager')]
0070  CLOSURE   R2 = closure proto21
0071  SETTABLE  R1[K24('_CheckSceneCondition')] = R2
0072  RETURN    return R0..R-1
; ---------- proto0 [Init] ----------
  ; fn ?  line 8-13 np=1 va=0 ms=5 code=14 consts=8 upvals=2 protos=0
  ;   K[0]='m_maxInterval'
  ;   K[1]='m_iPendingLimit'
  ;   K[2]='_ClearSchedulerInterval'
  ;   K[3]='EventDispatcher'
  ;   K[4]='AddListener'
  ;   K[5]='EEventType'
  ;   K[6]='EnterMainScene'
  ;   K[7]='_OnEnterMainScene'
  ;   upvals: HEART_BEAT_DEFAULT_MAX_INTERVAL, _ENV
  ;   locals: self(0-14)
  0000  GETUPVAL  R1 = HEART_BEAT_DEFAULT_MAX_INTERVAL
  0001  SETTABLE  R0[K0('m_maxInterval')] = R1
  0002  GETTABLE  R1 = R0[K0('m_maxInterval')]
  0003  SETTABLE  R0[K1('m_iPendingLimit')] = R1
  0004  SELF      R2 = R0[K2('_ClearSchedulerInterval')] (self)
  0005  CALL      R1 = call(R1, 0 args, 1 rets)
  0006  GETTABUP  R1 = _ENV[K3('EventDispatcher')]
  0007  GETTABLE  R1 = R1[K4('AddListener')]
  0008  GETTABUP  R2 = _ENV[K5('EEventType')]
  0009  GETTABLE  R2 = R2[K6('EnterMainScene')]
  0010  MOVE      R3 = R0
  0011  GETTABLE  R4 = R0[K7('_OnEnterMainScene')]
  0012  CALL      R1 = call(R1, 0 args, 3 rets)
  0013  RETURN    return R0..R-1
; ---------- proto1 [Update] ----------
  ; fn ?  line 15-25 np=1 va=0 ms=4 code=16 consts=5 upvals=0 protos=0
  ;   K[0]='m_frameSchedulerArg'
  ;   K[1]=nil
  ;   K[2]='m_scheduled'
  ;   K[3]='IsKickedOut'
  ;   K[4]='_HeartBeatScheduler'
  ;   locals: self(0-16)
  0000  GETTABLE  R1 = R0[K0('m_frameSchedulerArg')]
  0001  EQ        if R0 eq K1(nil)   -> -130300
  0002  JMP       (jump)   -> 4
  0003  RETURN    return R0..R-1
  0004  GETTABLE  R1 = R0[K2('m_scheduled')]
  0005  TEST      if not R1 then   -> -131065
  0006  JMP       (jump)   -> 14
  0007  SELF      R2 = R0[K3('IsKickedOut')] (self)
  0008  CALL      R1 = call(R1, 1 args, 1 rets)
  0009  TEST      if not R1 then   -> -131060
  0010  JMP       (jump)   -> 14
  0011  SELF      R2 = R0[K4('_HeartBeatScheduler')] (self)
  0012  GETTABLE  R3 = R0[K0('m_frameSchedulerArg')]
  0013  CALL      R1 = call(R1, 0 args, 2 rets)
  0014  SETTABLE  R0[K0('m_frameSchedulerArg')] = K1(nil)
  0015  RETURN    return R0..R-1
; ---------- proto2 [UpdatePerSecond] ----------
  ; fn ?  line 27-34 np=1 va=0 ms=4 code=18 consts=6 upvals=0 protos=0
  ;   K[0]='m_scheduled'
  ;   K[1]='IsKickedOut'
  ;   K[2]='m_schedulerInterval'
  ;   K[3]=1
  ;   K[4]='m_iPendingLimit'
  ;   K[5]='_HeartBeatScheduler'
  ;   locals: self(0-18)
  0000  GETTABLE  R1 = R0[K0('m_scheduled')]
  0001  TEST      if not R1 then   -> -131069
  0002  JMP       (jump)   -> 17
  0003  SELF      R2 = R0[K1('IsKickedOut')] (self)
  0004  CALL      R1 = call(R1, 1 args, 1 rets)
  0005  TEST      if not R1 then   -> -131064
  0006  JMP       (jump)   -> 17
  0007  GETTABLE  R1 = R0[K2('m_schedulerInterval')]
  0008  ADD       R1 = K3(1) add R1
  0009  SETTABLE  R0[K2('m_schedulerInterval')] = R1
  0010  GETTABLE  R1 = R0[K2('m_schedulerInterval')]
  0011  GETTABLE  R2 = R0[K4('m_iPendingLimit')]
  0012  LT        if R0 lt R1   -> -130033
  0013  JMP       (jump)   -> 17
  0014  SELF      R2 = R0[K5('_HeartBeatScheduler')] (self)
  0015  LOADBOOL  R3 = false
  0016  CALL      R1 = call(R1, 0 args, 2 rets)
  0017  RETURN    return R0..R-1
; ---------- proto3 [Destroy] ----------
  ; fn ?  line 36-38 np=1 va=0 ms=3 code=5 consts=2 upvals=1 protos=0
  ;   K[0]='EventDispatcher'
  ;   K[1]='RemoveTarget'
  ;   upvals: _ENV
  ;   locals: self(0-5)
  0000  GETTABUP  R1 = _ENV[K0('EventDispatcher')]
  0001  GETTABLE  R1 = R1[K1('RemoveTarget')]
  0002  MOVE      R2 = R0
  0003  CALL      R1 = call(R1, 0 args, 1 rets)
  0004  RETURN    return R0..R-1
; ---------- proto4 [OnSceneViewLoaded] ----------
  ; fn ?  line 41-45 np=1 va=0 ms=3 code=10 consts=3 upvals=0 protos=0
  ;   K[0]='IsKickedOut'
  ;   K[1]='m_bOpendWindow'
  ;   K[2]='KickedOut'
  ;   locals: self(0-10)
  0000  SELF      R2 = R0[K0('IsKickedOut')] (self)
  0001  CALL      R1 = call(R1, 1 args, 1 rets)
  0002  TEST      if not R1 then   -> -131068
  0003  JMP       (jump)   -> 9
  0004  GETTABLE  R1 = R0[K1('m_bOpendWindow')]
  0005  TEST      if not R1 then   -> -131064
  0006  JMP       (jump)   -> 9
  0007  SELF      R2 = R0[K2('KickedOut')] (self)
  0008  CALL      R1 = call(R1, 0 args, 1 rets)
  0009  RETURN    return R0..R-1
; ---------- proto5 [_OnEnterMainScene] ----------
  ; fn ?  line 48-50 np=1 va=0 ms=5 code=5 consts=1 upvals=0 protos=0
  ;   K[0]='TrySchedule'
  ;   locals: self(0-5)
  0000  SELF      R2 = R0[K0('TrySchedule')] (self)
  0001  LOADBOOL  R3 = false
  0002  LOADBOOL  R4 = true
  0003  CALL      R1 = call(R1, 0 args, 3 rets)
  0004  RETURN    return R0..R-1
; ---------- proto6 [TrySchedule] ----------
  ; fn ?  line 54-72 np=3 va=0 ms=6 code=45 consts=16 upvals=1 protos=0
  ;   K[0]='_CheckSceneCondition'
  ;   K[1]='GM'
  ;   K[2]='ActivityManager'
  ;   K[3]='CanHeartBeat'
  ;   K[4]='Unschedule'
  ;   K[5]='m_scheduled'
  ;   K[6]=true
  ;   K[7]='Log'
  ;   K[8]='Info'
  ;   K[9]='心跳开始'
  ;   K[10]='GameConfig'
  ;   K[11]='IsTestMode'
  ;   K[12]='UIManager'
  ;   K[13]='ShowTestPrompt'
  ;   K[14]='心跳触发开始'
  ;   K[15]='_HeartBeatScheduler'
  ;   upvals: _ENV
  ;   locals: self(0-45), triggeredByLogin(0-45), useHttp(0-45)
  0000  SELF      R4 = R0[K0('_CheckSceneCondition')] (self)
  0001  CALL      R3 = call(R3, 1 args, 1 rets)
  0002  TEST      if not R3 then   -> -131068
  0003  JMP       (jump)   -> 10
  0004  GETTABUP  R3 = _ENV[K1('GM')]
  0005  GETTABLE  R3 = R3[K2('ActivityManager')]
  0006  SELF      R4 = R3[K3('CanHeartBeat')] (self)
  0007  CALL      R3 = call(R3, 1 args, 1 rets)
  0008  TEST      if not R3 then   -> -131061
  0009  JMP       (jump)   -> 13
  0010  SELF      R4 = R0[K4('Unschedule')] (self)
  0011  CALL      R3 = call(R3, 0 args, 1 rets)
  0012  RETURN    return R0..R-1
  0013  GETTABLE  R3 = R0[K5('m_scheduled')]
  0014  TEST      if not R3 then   -> -131055
  0015  JMP       (jump)   -> 37
  0016  SETTABLE  R0[K5('m_scheduled')] = K6(true)
  0017  GETTABUP  R3 = _ENV[K7('Log')]
  0018  GETTABLE  R3 = R3[K8('Info')]
  0019  LOADK     R4 = K9 '心跳开始'
  0020  CALL      R3 = call(R3, 0 args, 1 rets)
  0021  GETTABUP  R3 = _ENV[K10('GameConfig')]
  0022  GETTABLE  R3 = R3[K11('IsTestMode')]
  0023  CALL      R3 = call(R3, 1 args, 0 rets)
  0024  TEST      if not R3 then   -> -131046
  0025  JMP       (jump)   -> 31
  0026  GETTABUP  R3 = _ENV[K1('GM')]
  0027  GETTABLE  R3 = R3[K12('UIManager')]
  0028  SELF      R4 = R3[K13('ShowTestPrompt')] (self)
  0029  LOADK     R5 = K14 '心跳触发开始'
  0030  CALL      R3 = call(R3, 0 args, 2 rets)
  0031  SELF      R4 = R0[K15('_HeartBeatScheduler')] (self)
  0032  TESTSET   if R1 then R5   -> -130013
  0033  JMP       (jump)   -> 35
  0034  LOADBOOL  R5 = false
  0035  CALL      R3 = call(R3, 0 args, 2 rets)
  0036  JMP       (jump)   -> 44
  0037  TEST      if not R1 then   -> -131033
  0038  JMP       (jump)   -> 44
  0039  SELF      R4 = R0[K15('_HeartBeatScheduler')] (self)
  0040  TESTSET   if R1 then R5   -> -130005
  0041  JMP       (jump)   -> 43
  0042  LOADBOOL  R5 = false
  0043  CALL      R3 = call(R3, 0 args, 2 rets)
  0044  RETURN    return R0..R-1
; ---------- proto7 [_HeartBeatScheduler] ----------
  ; fn ?  line 75-88 np=2 va=0 ms=5 code=31 consts=12 upvals=1 protos=0
  ;   K[0]='GetSession'
  ;   K[1]='Log'
  ;   K[2]='Info'
  ;   K[3]='[HeartBeatManager] session为nil'
  ;   K[4]='m_bIsSendingRequest'
  ;   K[5]='GM'
  ;   K[6]='ActivityManager'
  ;   K[7]='IsSendingRankRequest'
  ;   K[8]='SyncModel'
  ;   K[9]='CanUpload'
  ;   K[10]='_TrySend'
  ;   K[11]='_ResetSchedulerInterval'
  ;   upvals: _ENV
  ;   locals: self(0-31), useHttp(0-31)
  0000  SELF      R3 = R0[K0('GetSession')] (self)
  0001  CALL      R2 = call(R2, 1 args, 1 rets)
  0002  TEST      if not R2 then   -> -131067
  0003  JMP       (jump)   -> 9
  0004  GETTABUP  R2 = _ENV[K1('Log')]
  0005  GETTABLE  R2 = R2[K2('Info')]
  0006  LOADK     R3 = K3 '[HeartBeatManager] session为nil'
  0007  CALL      R2 = call(R2, 0 args, 1 rets)
  0008  RETURN    return R0..R-1
  0009  GETTABLE  R2 = R0[K4('m_bIsSendingRequest')]
  0010  TEST      if not R2 then   -> -131059
  0011  JMP       (jump)   -> 28
  0012  GETTABUP  R2 = _ENV[K5('GM')]
  0013  GETTABLE  R2 = R2[K6('ActivityManager')]
  0014  SELF      R3 = R2[K7('IsSendingRankRequest')] (self)
  0015  CALL      R2 = call(R2, 1 args, 1 rets)
  0016  TEST      if not R2 then   -> -131053
  0017  JMP       (jump)   -> 28
  0018  GETTABUP  R2 = _ENV[K5('GM')]
  0019  GETTABLE  R2 = R2[K8('SyncModel')]
  0020  SELF      R3 = R2[K9('CanUpload')] (self)
  0021  CALL      R2 = call(R2, 1 args, 1 rets)
  0022  TEST      if not R2 then   -> -131048
  0023  JMP       (jump)   -> 28
  0024  SELF      R3 = R0[K10('_TrySend')] (self)
  0025  MOVE      R4 = R0
  0026  CALL      R2 = call(R2, 0 args, 2 rets)
  0027  JMP       (jump)   -> 30
  0028  SELF      R3 = R0[K11('_ResetSchedulerInterval')] (self)
  0029  CALL      R2 = call(R2, 0 args, 1 rets)
  0030  RETURN    return R0..R-1
; ---------- proto8 [_ResetSchedulerInterval] ----------
  ; fn ?  line 90-93 np=1 va=0 ms=3 code=6 consts=3 upvals=0 protos=0
  ;   K[0]='m_iPendingLimit'
  ;   K[1]='m_schedulerInterval'
  ;   K[2]=0
  ;   locals: self(0-6)
  0000  GETTABLE  R1 = R0[K0('m_iPendingLimit')]
  0001  GETTABLE  R2 = R0[K1('m_schedulerInterval')]
  0002  SUB       R1 = R2 sub R1
  0003  SETTABLE  R0[K0('m_iPendingLimit')] = R1
  0004  SETTABLE  R0[K1('m_schedulerInterval')] = K2(0)
  0005  RETURN    return R0..R-1
; ---------- proto9 [_ClearSchedulerInterval] ----------
  ; fn ?  line 95-98 np=1 va=0 ms=2 code=4 consts=4 upvals=0 protos=0
  ;   K[0]='m_iPendingLimit'
  ;   K[1]='m_maxInterval'
  ;   K[2]='m_schedulerInterval'
  ;   K[3]=0
  ;   locals: self(0-4)
  0000  GETTABLE  R1 = R0[K1('m_maxInterval')]
  0001  SETTABLE  R0[K0('m_iPendingLimit')] = R1
  0002  SETTABLE  R0[K2('m_schedulerInterval')] = K3(0)
  0003  RETURN    return R0..R-1
; ---------- proto10 [Unschedule] ----------
  ; fn ?  line 100-103 np=1 va=0 ms=3 code=4 consts=3 upvals=0 protos=0
  ;   K[0]='m_scheduled'
  ;   K[1]=false
  ;   K[2]='_ClearSchedulerInterval'
  ;   locals: self(0-4)
  0000  SETTABLE  R0[K0('m_scheduled')] = K1(false)
  0001  SELF      R2 = R0[K2('_ClearSchedulerInterval')] (self)
  0002  CALL      R1 = call(R1, 0 args, 1 rets)
  0003  RETURN    return R0..R-1
; ---------- proto11 [HeartBeatOnNextFrame] ----------
  ; fn ?  line 108-110 np=2 va=0 ms=2 code=2 consts=1 upvals=0 protos=0
  ;   K[0]='m_frameSchedulerArg'
  ;   locals: self(0-2), useHttp(0-2)
  0000  SETTABLE  R0[K0('m_frameSchedulerArg')] = R1
  0001  RETURN    return R0..R-1
; ---------- proto12 [_TrySend] ----------
  ; fn ?  line 116-152 np=2 va=0 ms=8 code=39 consts=20 upvals=1 protos=1
  ;   K[0]='GM'
  ;   K[1]='ActivityManager'
  ;   K[2]='ToHeartBeat'
  ;   K[3]='userId'
  ;   K[4]='UserModel'
  ;   K[5]='GetUserId'
  ;   K[6]='session'
  ;   K[7]='GetSession'
  ;   K[8]='user_level'
  ;   K[9]='LevelModel'
  ;   K[10]='GetCurrentLevel'
  ;   K[11]='m_bIsSendingRequest'
  ;   K[12]=true
  ;   K[13]='RedisMessage'
  ;   K[14]='HeartBeat'
  ;   K[15]='GameConfig'
  ;   K[16]='IsTestMode'
  ;   K[17]='UIManager'
  ;   K[18]='ShowTestPrompt'
  ;   K[19]='发送心跳'
  ;   upvals: _ENV
  ;   locals: self(0-39), useHttp(0-39), callback(1-39), request(5-39)
  0000  CLOSURE   R2 = closure proto0
  0001  GETTABUP  R3 = _ENV[K0('GM')]
  0002  GETTABLE  R3 = R3[K1('ActivityManager')]
  0003  SELF      R4 = R3[K2('ToHeartBeat')] (self)
  0004  CALL      R3 = call(R3, 1 args, 1 rets)
  0005  GETTABUP  R4 = _ENV[K0('GM')]
  0006  GETTABLE  R4 = R4[K4('UserModel')]
  0007  SELF      R5 = R4[K5('GetUserId')] (self)
  0008  CALL      R4 = call(R4, 1 args, 1 rets)
  0009  SETTABLE  R3[K3('userId')] = R4
  0010  SELF      R5 = R0[K7('GetSession')] (self)
  0011  CALL      R4 = call(R4, 1 args, 1 rets)
  0012  SETTABLE  R3[K6('session')] = R4
  0013  GETTABUP  R4 = _ENV[K0('GM')]
  0014  GETTABLE  R4 = R4[K9('LevelModel')]
  0015  SELF      R5 = R4[K10('GetCurrentLevel')] (self)
  0016  CALL      R4 = call(R4, 1 args, 1 rets)
  0017  SETTABLE  R3[K8('user_level')] = R4
  0018  SETTABLE  R0[K11('m_bIsSendingRequest')] = K12(true)
  0019  GETTABUP  R4 = _ENV[K13('RedisMessage')]
  0020  GETTABLE  R4 = R4[K14('HeartBeat')]
  0021  MOVE      R5 = R0
  0022  MOVE      R6 = R0
  0023  MOVE      R7 = R0
  0024  CALL      R4 = call(R4, 0 args, 3 rets)
  0025  GETTABLE  R4 = R0[K11('m_bIsSendingRequest')]
  0026  TEST      if not R4 then   -> -131044
  0027  JMP       (jump)   -> 38
  0028  GETTABUP  R4 = _ENV[K15('GameConfig')]
  0029  GETTABLE  R4 = R4[K16('IsTestMode')]
  0030  CALL      R4 = call(R4, 1 args, 0 rets)
  0031  TEST      if not R4 then   -> -131039
  0032  JMP       (jump)   -> 38
  0033  GETTABUP  R4 = _ENV[K0('GM')]
  0034  GETTABLE  R4 = R4[K17('UIManager')]
  0035  SELF      R5 = R4[K18('ShowTestPrompt')] (self)
  0036  LOADK     R6 = K19 '发送心跳'
  0037  CALL      R4 = call(R4, 0 args, 2 rets)
  0038  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 117-139 np=4 va=0 ms=8 code=35 consts=15 upvals=2 protos=0
    ;   K[0]='rcode'
    ;   K[1]=0
    ;   K[2]='GM'
    ;   K[3]='ActivityManager'
    ;   K[4]='FromHeartBeat'
    ;   K[5]=1
    ;   K[6]='HandleConflictSession'
    ;   K[7]='GameConfig'
    ;   K[8]='IsTestMode'
    ;   K[9]='UIManager'
    ;   K[10]='ShowTestPrompt'
    ;   K[11]='心跳失败'
    ;   K[12]='m_bIsSendingRequest'
    ;   K[13]=false
    ;   K[14]='_ClearSchedulerInterval'
    ;   upvals: _ENV, self
    ;   locals: bSuccess(0-35), response(0-35), reqCtx(0-35), tbMsgReq(0-35)
    0000  TEST      if not R0 then   -> -131070
    0001  JMP       (jump)   -> 20
    0002  GETTABLE  R4 = R1[K0('rcode')]
    0003  EQ        if R0 eq K1(0)   -> -128762
    0004  JMP       (jump)   -> 12
    0005  GETTABUP  R4 = _ENV[K2('GM')]
    0006  GETTABLE  R4 = R4[K3('ActivityManager')]
    0007  SELF      R5 = R4[K4('FromHeartBeat')] (self)
    0008  MOVE      R6 = R0
    0009  MOVE      R7 = R0
    0010  CALL      R4 = call(R4, 0 args, 3 rets)
    0011  JMP       (jump)   -> 30
    0012  GETTABLE  R4 = R1[K0('rcode')]
    0013  EQ        if R0 eq K5(1)   -> -128748
    0014  JMP       (jump)   -> 30
    0015  GETUPVAL  R4 = _ENV
    0016  SELF      R5 = R4[K6('HandleConflictSession')] (self)
    0017  CALL      R4 = call(R4, 0 args, 1 rets)
    0018  RETURN    return R0..R-1
    0019  JMP       (jump)   -> 30
    0020  GETTABUP  R4 = _ENV[K7('GameConfig')]
    0021  GETTABLE  R4 = R4[K8('IsTestMode')]
    0022  CALL      R4 = call(R4, 1 args, 0 rets)
    0023  TEST      if not R4 then   -> -131047
    0024  JMP       (jump)   -> 30
    0025  GETTABUP  R4 = _ENV[K2('GM')]
    0026  GETTABLE  R4 = R4[K9('UIManager')]
    0027  SELF      R5 = R4[K10('ShowTestPrompt')] (self)
    0028  LOADK     R6 = K11 '心跳失败'
    0029  CALL      R4 = call(R4, 0 args, 2 rets)
    0030  SETTABUP  self[K12('m_bIsSendingRequest')] = K13(false)
    0031  GETUPVAL  R4 = _ENV
    0032  SELF      R5 = R4[K14('_ClearSchedulerInterval')] (self)
    0033  CALL      R4 = call(R4, 0 args, 1 rets)
    0034  RETURN    return R0..R-1
; ---------- proto13 [HandleHeartBeatResponse] ----------
  ; fn ?  line 154-161 np=2 va=0 ms=5 code=17 consts=7 upvals=1 protos=0
  ;   K[0]='session'
  ;   K[1]=0
  ;   K[2]='GetSession'
  ;   K[3]='HandleConflictSession'
  ;   K[4]='GM'
  ;   K[5]='ActivityManager'
  ;   K[6]='FromHeartBeat'
  ;   upvals: _ENV
  ;   locals: self(0-17), tbResp(0-17)
  0000  GETTABLE  R2 = R1[K0('session')]
  0001  EQ        if R1 eq K1(0)   -> -129788
  0002  JMP       (jump)   -> 11
  0003  GETTABLE  R2 = R1[K0('session')]
  0004  SELF      R4 = R0[K2('GetSession')] (self)
  0005  CALL      R3 = call(R3, 1 args, 1 rets)
  0006  EQ        if R1 eq R3   -> -130037
  0007  JMP       (jump)   -> 11
  0008  SELF      R3 = R0[K3('HandleConflictSession')] (self)
  0009  CALL      R2 = call(R2, 0 args, 1 rets)
  0010  RETURN    return R0..R-1
  0011  GETTABUP  R2 = _ENV[K4('GM')]
  0012  GETTABLE  R2 = R2[K5('ActivityManager')]
  0013  SELF      R3 = R2[K6('FromHeartBeat')] (self)
  0014  MOVE      R4 = R0
  0015  CALL      R2 = call(R2, 0 args, 2 rets)
  0016  RETURN    return R0..R-1
; ---------- proto14 [HandleConflictSession] ----------
  ; fn ?  line 163-170 np=1 va=0 ms=4 code=15 consts=6 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='SceneManager'
  ;   K[2]='GetGameMode'
  ;   K[3]='EGameMode'
  ;   K[4]='Loading'
  ;   K[5]='KickedOut'
  ;   upvals: _ENV
  ;   locals: self(0-15)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('SceneManager')]
  0002  SELF      R2 = R1[K2('GetGameMode')] (self)
  0003  CALL      R1 = call(R1, 1 args, 1 rets)
  0004  GETTABUP  R2 = _ENV[K3('EGameMode')]
  0005  GETTABLE  R2 = R2[K4('Loading')]
  0006  EQ        if R1 eq R2   -> -130550
  0007  JMP       (jump)   -> 11
  0008  SELF      R2 = R0[K5('KickedOut')] (self)
  0009  CALL      R1 = call(R1, 0 args, 1 rets)
  0010  JMP       (jump)   -> 14
  0011  SELF      R2 = R0[K5('KickedOut')] (self)
  0012  LOADBOOL  R3 = true
  0013  CALL      R1 = call(R1, 0 args, 2 rets)
  0014  RETURN    return R0..R-1
; ---------- proto15 [KickedOut] ----------
  ; fn ?  line 173-189 np=2 va=0 ms=10 code=36 consts=16 upvals=1 protos=1
  ;   K[0]='m_bOpendWindow'
  ;   K[1]=false
  ;   K[2]='m_bKickedOut'
  ;   K[3]=true
  ;   K[4]='GM'
  ;   K[5]='SyncModel'
  ;   K[6]='SetDataInconsistent'
  ;   K[7]='UIManager'
  ;   K[8]='OpenView'
  ;   K[9]='UIPrefabConfigName'
  ;   K[10]='SystemGeneralMsgWindow'
  ;   K[11]='GameTextModel'
  ;   K[12]='GetText'
  ;   K[13]='device_conflict_window_title'
  ;   K[14]='device_conflict_window_desc'
  ;   K[15]='common_button_ok'
  ;   upvals: _ENV
  ;   locals: self(0-36), bHideWindow(0-36)
  0000  TEST      if not R1 then   -> -131069
  0001  JMP       (jump)   -> 3
  0002  LOADBOOL  R1 = false
  0003  SETTABLE  R0[K0('m_bOpendWindow')] = K1(false)
  0004  SETTABLE  R0[K2('m_bKickedOut')] = K3(true)
  0005  GETTABUP  R2 = _ENV[K4('GM')]
  0006  GETTABLE  R2 = R2[K5('SyncModel')]
  0007  SELF      R3 = R2[K6('SetDataInconsistent')] (self)
  0008  LOADBOOL  R4 = true
  0009  CALL      R2 = call(R2, 0 args, 2 rets)
  0010  TEST      if not R1 then   -> -131059
  0011  JMP       (jump)   -> 35
  0012  SETTABLE  R0[K0('m_bOpendWindow')] = K3(true)
  0013  GETTABUP  R2 = _ENV[K4('GM')]
  0014  GETTABLE  R2 = R2[K7('UIManager')]
  0015  SELF      R3 = R2[K8('OpenView')] (self)
  0016  GETTABUP  R4 = _ENV[K9('UIPrefabConfigName')]
  0017  GETTABLE  R4 = R4[K10('SystemGeneralMsgWindow')]
  0018  GETTABUP  R5 = _ENV[K4('GM')]
  0019  GETTABLE  R5 = R5[K11('GameTextModel')]
  0020  SELF      R6 = R5[K12('GetText')] (self)
  0021  LOADK     R7 = K13 'device_conflict_window_title'
  0022  CALL      R5 = call(R5, 1 args, 2 rets)
  0023  GETTABUP  R6 = _ENV[K4('GM')]
  0024  GETTABLE  R6 = R6[K11('GameTextModel')]
  0025  SELF      R7 = R6[K12('GetText')] (self)
  0026  LOADK     R8 = K14 'device_conflict_window_desc'
  0027  CALL      R6 = call(R6, 1 args, 2 rets)
  0028  GETTABUP  R7 = _ENV[K4('GM')]
  0029  GETTABLE  R7 = R7[K11('GameTextModel')]
  0030  SELF      R8 = R7[K12('GetText')] (self)
  0031  LOADK     R9 = K15 'common_button_ok'
  0032  CALL      R7 = call(R7, 1 args, 2 rets)
  0033  CLOSURE   R8 = closure proto0
  0034  CALL      R2 = call(R2, 0 args, 6 rets)
  0035  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 184-186 np=0 va=0 ms=2 code=4 consts=2 upvals=1 protos=0
    ;   K[0]='PlatformInterface'
    ;   K[1]='ExitGame'
    ;   upvals: _ENV
    0000  GETTABUP  R0 = _ENV[K0('PlatformInterface')]
    0001  GETTABLE  R0 = R0[K1('ExitGame')]
    0002  CALL      R0 = call(R0, 0 args, 0 rets)
    0003  RETURN    return R0..R-1
; ---------- proto16 [IsKickedOut] ----------
  ; fn ?  line 191-193 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_bKickedOut'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_bKickedOut')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto17 [SetSession] ----------
  ; fn ?  line 197-199 np=2 va=0 ms=2 code=2 consts=1 upvals=0 protos=0
  ;   K[0]='m_session'
  ;   locals: self(0-2), session(0-2)
  0000  SETTABLE  R0[K0('m_session')] = R1
  0001  RETURN    return R0..R-1
; ---------- proto18 [GetSession] ----------
  ; fn ?  line 201-203 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_session'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_session')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto19 [SetInterval] ----------
  ; fn ?  line 205-208 np=2 va=0 ms=5 code=5 consts=2 upvals=0 protos=0
  ;   K[0]='m_maxInterval'
  ;   K[1]='TrySchedule'
  ;   locals: self(0-5), maxInterval(0-5)
  0000  SETTABLE  R0[K0('m_maxInterval')] = R1
  0001  SELF      R3 = R0[K1('TrySchedule')] (self)
  0002  LOADBOOL  R4 = true
  0003  CALL      R2 = call(R2, 0 args, 2 rets)
  0004  RETURN    return R0..R-1
; ---------- proto20 [_CanUseUdp] ----------
  ; fn ?  line 211-225 np=1 va=0 ms=4 code=17 consts=6 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='SsoManager'
  ;   K[2]='GetToken'
  ;   K[3]='string'
  ;   K[4]='len'
  ;   K[5]=52
  ;   upvals: _ENV
  ;   locals: self(0-17), strToken(6-17)
  0000  LOADBOOL  R1 = false
  0001  RETURN    return R1..R0
  0002  GETTABUP  R1 = _ENV[K0('GM')]
  0003  GETTABLE  R1 = R1[K1('SsoManager')]
  0004  SELF      R2 = R1[K2('GetToken')] (self)
  0005  CALL      R1 = call(R1, 1 args, 1 rets)
  0006  GETTABUP  R2 = _ENV[K3('string')]
  0007  GETTABLE  R2 = R2[K4('len')]
  0008  MOVE      R3 = R0
  0009  CALL      R2 = call(R2, 1 args, 1 rets)
  0010  EQ        if R1 eq K5(52)   -> -129775
  0011  JMP       (jump)   -> 14
  0012  LOADBOOL  R2 = false
  0013  RETURN    return R2..R1
  0014  LOADBOOL  R2 = true
  0015  RETURN    return R2..R1
  0016  RETURN    return R0..R-1
; ---------- proto21 [_CheckSceneCondition] ----------
  ; fn ?  line 227-229 np=1 va=0 ms=3 code=19 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='SceneManager'
  ;   K[2]='GetGameMode'
  ;   K[3]='EGameMode'
  ;   K[4]='Loading'
  ;   upvals: _ENV
  ;   locals: self(0-19)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  TEST      if not R1 then   -> -131069
  0002  JMP       (jump)   -> 17
  0003  GETTABUP  R1 = _ENV[K0('GM')]
  0004  GETTABLE  R1 = R1[K1('SceneManager')]
  0005  TEST      if not R1 then   -> -131065
  0006  JMP       (jump)   -> 17
  0007  GETTABUP  R1 = _ENV[K0('GM')]
  0008  GETTABLE  R1 = R1[K1('SceneManager')]
  0009  SELF      R2 = R1[K2('GetGameMode')] (self)
  0010  CALL      R1 = call(R1, 1 args, 1 rets)
  0011  GETTABUP  R2 = _ENV[K3('EGameMode')]
  0012  GETTABLE  R2 = R2[K4('Loading')]
  0013  EQ        if R0 eq R2   -> -130543
  0014  JMP       (jump)   -> 16
  0015  LOADBOOL  R1 = false
  0016  LOADBOOL  R1 = true
  0017  RETURN    return R1..R0
  0018  RETURN    return R0..R-1
