# Model_Bundle_BundleChainModel_130.luac
; fn @BundleChainModel.lua  line 0-0 np=0 va=1 ms=3 code=102 consts=41 upvals=1 protos=29
;   K[0]='BundleChainModel'
;   K[1]='setmetatable'
;   K[2]='DataGroupClass'
;   K[3]='BundleChainServerConfigDataGroup'
;   K[4]='BundleActivityBaseModel'
;   K[5]='__index'
;   K[6]='HasPaidThisRound'
;   K[7]='hptr'
;   K[8]='CurIndex'
;   K[9]='curIndex'
;   K[10]='ChainPurchaseInfo'
;   K[11]='cpi'
;   K[12]='CanShowEntry'
;   K[13]='HasPurchaseFinished'
;   K[14]='_CanTriggerBundleWindow'
;   K[15]='_OnPurchaseFinished'
;   K[16]='_OnBuyFinished'
;   K[17]='_OnBundleTriggered'
;   K[18]='_RemoveLocalConfig'
;   K[19]='OnBundleStateChanged'
;   K[20]='OnSceneViewLoaded'
;   K[21]='TryRecoverFreeRewards'
;   K[22]='BuyBundle'
;   K[23]='_BuyBundle'
;   K[24]='GetCurStepBundleConfigData'
;   K[25]='_RecordPurchaseInfo'
;   K[26]='_GetRecordPurchaseInfo'
;   K[27]='_ReleasePurchaseInfo'
;   K[28]='_GetRecordPurchaseRewards'
;   K[29]='_IsValidDataGroup'
;   K[30]='CanOpenRecoverWindowImmediately'
;   K[31]='_AcquireRecoverRewards'
;   K[32]='OnRestoreIAPRewards'
;   K[33]='_OnRestoreIAPRewards'
;   K[34]='_HasPaidThisRound'
;   K[35]='_SetPaidThisRound'
;   K[36]='_Set2NextStep'
;   K[37]='_SetStep'
;   K[38]='GetCurChainStep'
;   K[39]='_GetCurChainStep'
;   K[40]='GetTitleText'
;   upvals: _ENV
;   locals: DBKey(14-102)
0000  GETTABUP  R0 = _ENV[K1('setmetatable')]
0001  NEWTABLE  R1 = {} (0 items)
0002  GETTABUP  R2 = _ENV[K3('BundleChainServerConfigDataGroup')]
0003  SETTABLE  R1[K2('DataGroupClass')] = R2
0004  GETTABUP  R2 = _ENV[K4('BundleActivityBaseModel')]
0005  CALL      R0 = call(R0, 1 args, 2 rets)
0006  SETTABUP  _ENV[K0('BundleChainModel')] = R0
0007  GETTABUP  R0 = _ENV[K0('BundleChainModel')]
0008  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0009  SETTABLE  R0[K5('__index')] = R1
0010  NEWTABLE  R0 = {} (0 items)
0011  SETTABLE  R0[K6('HasPaidThisRound')] = K7('hptr')
0012  SETTABLE  R0[K8('CurIndex')] = K9('curIndex')
0013  SETTABLE  R0[K10('ChainPurchaseInfo')] = K11('cpi')
0014  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0015  CLOSURE   R2 = closure proto0
0016  SETTABLE  R1[K12('CanShowEntry')] = R2
0017  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0018  CLOSURE   R2 = closure proto1
0019  SETTABLE  R1[K13('HasPurchaseFinished')] = R2
0020  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0021  CLOSURE   R2 = closure proto2
0022  SETTABLE  R1[K14('_CanTriggerBundleWindow')] = R2
0023  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0024  CLOSURE   R2 = closure proto3
0025  SETTABLE  R1[K15('_OnPurchaseFinished')] = R2
0026  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0027  CLOSURE   R2 = closure proto4
0028  SETTABLE  R1[K16('_OnBuyFinished')] = R2
0029  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0030  CLOSURE   R2 = closure proto5
0031  SETTABLE  R1[K17('_OnBundleTriggered')] = R2
0032  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0033  CLOSURE   R2 = closure proto6
0034  SETTABLE  R1[K18('_RemoveLocalConfig')] = R2
0035  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0036  CLOSURE   R2 = closure proto7
0037  SETTABLE  R1[K19('OnBundleStateChanged')] = R2
0038  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0039  CLOSURE   R2 = closure proto8
0040  SETTABLE  R1[K20('OnSceneViewLoaded')] = R2
0041  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0042  CLOSURE   R2 = closure proto9
0043  SETTABLE  R1[K21('TryRecoverFreeRewards')] = R2
0044  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0045  CLOSURE   R2 = closure proto10
0046  SETTABLE  R1[K22('BuyBundle')] = R2
0047  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0048  CLOSURE   R2 = closure proto11
0049  SETTABLE  R1[K23('_BuyBundle')] = R2
0050  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0051  CLOSURE   R2 = closure proto12
0052  SETTABLE  R1[K24('GetCurStepBundleConfigData')] = R2
0053  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0054  CLOSURE   R2 = closure proto13
0055  SETTABLE  R1[K25('_RecordPurchaseInfo')] = R2
0056  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0057  CLOSURE   R2 = closure proto14
0058  SETTABLE  R1[K26('_GetRecordPurchaseInfo')] = R2
0059  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0060  CLOSURE   R2 = closure proto15
0061  SETTABLE  R1[K27('_ReleasePurchaseInfo')] = R2
0062  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0063  CLOSURE   R2 = closure proto16
0064  SETTABLE  R1[K28('_GetRecordPurchaseRewards')] = R2
0065  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0066  CLOSURE   R2 = closure proto17
0067  SETTABLE  R1[K29('_IsValidDataGroup')] = R2
0068  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0069  CLOSURE   R2 = closure proto18
0070  SETTABLE  R1[K30('CanOpenRecoverWindowImmediately')] = R2
0071  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0072  CLOSURE   R2 = closure proto19
0073  SETTABLE  R1[K31('_AcquireRecoverRewards')] = R2
0074  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0075  CLOSURE   R2 = closure proto20
0076  SETTABLE  R1[K32('OnRestoreIAPRewards')] = R2
0077  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0078  CLOSURE   R2 = closure proto21
0079  SETTABLE  R1[K33('_OnRestoreIAPRewards')] = R2
0080  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0081  CLOSURE   R2 = closure proto22
0082  SETTABLE  R1[K34('_HasPaidThisRound')] = R2
0083  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0084  CLOSURE   R2 = closure proto23
0085  SETTABLE  R1[K35('_SetPaidThisRound')] = R2
0086  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0087  CLOSURE   R2 = closure proto24
0088  SETTABLE  R1[K36('_Set2NextStep')] = R2
0089  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0090  CLOSURE   R2 = closure proto25
0091  SETTABLE  R1[K37('_SetStep')] = R2
0092  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0093  CLOSURE   R2 = closure proto26
0094  SETTABLE  R1[K38('GetCurChainStep')] = R2
0095  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0096  CLOSURE   R2 = closure proto27
0097  SETTABLE  R1[K39('_GetCurChainStep')] = R2
0098  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
0099  CLOSURE   R2 = closure proto28
0100  SETTABLE  R1[K40('GetTitleText')] = R2
0101  RETURN    return R0..R-1
; ---------- proto0 [CanShowEntry] ----------
  ; fn ?  line 16-18 np=2 va=0 ms=5 code=6 consts=1 upvals=0 protos=0
  ;   K[0]='HasPurchaseFinished'
  ;   locals: self(0-6), dataGroup(0-6)
  0000  SELF      R3 = R0[K0('HasPurchaseFinished')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  NOT       R2 = not R0
  0004  RETURN    return R2..R1
  0005  RETURN    return R0..R-1
; ---------- proto1 [HasPurchaseFinished] ----------
  ; fn ?  line 21-24 np=2 va=0 ms=6 code=12 consts=3 upvals=0 protos=0
  ;   K[0]='GetCurChainStep'
  ;   K[1]='GetConfigDataByIndex'
  ;   K[2]=nil
  ;   locals: self(0-12), dataGroup(0-12), curStep(3-12)
  0000  SELF      R3 = R0[K0('GetCurChainStep')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  SELF      R4 = R1[K1('GetConfigDataByIndex')] (self)
  0004  MOVE      R5 = R0
  0005  CALL      R3 = call(R3, 1 args, 2 rets)
  0006  EQ        if R1 eq K2(nil)   -> -129270
  0007  JMP       (jump)   -> 9
  0008  LOADBOOL  R3 = false
  0009  LOADBOOL  R3 = true
  0010  RETURN    return R3..R2
  0011  RETURN    return R0..R-1
; ---------- proto2 [_CanTriggerBundleWindow] ----------
  ; fn ?  line 26-28 np=3 va=0 ms=7 code=14 consts=3 upvals=1 protos=0
  ;   K[0]='BundleActivityBaseModel'
  ;   K[1]='_CanTriggerBundleWindow'
  ;   K[2]='HasPurchaseFinished'
  ;   upvals: _ENV
  ;   locals: self(0-14), dataGroup(0-14), eTriggerType(0-14)
  0000  GETTABUP  R3 = _ENV[K0('BundleActivityBaseModel')]
  0001  GETTABLE  R3 = R3[K1('_CanTriggerBundleWindow')]
  0002  MOVE      R4 = R0
  0003  MOVE      R5 = R0
  0004  MOVE      R6 = R0
  0005  CALL      R3 = call(R3, 1 args, 3 rets)
  0006  TEST      if not R3 then   -> -131064
  0007  JMP       (jump)   -> 12
  0008  SELF      R4 = R0[K2('HasPurchaseFinished')] (self)
  0009  MOVE      R5 = R0
  0010  CALL      R3 = call(R3, 1 args, 2 rets)
  0011  NOT       R3 = not R0
  0012  RETURN    return R3..R2
  0013  RETURN    return R0..R-1
; ---------- proto3 [_OnPurchaseFinished] ----------
  ; fn ?  line 31-33 np=3 va=0 ms=3 code=1 consts=0 upvals=0 protos=0
  ;   locals: self(0-1), dataGroup(0-1), bundleId(0-1)
  0000  RETURN    return R0..R-1
; ---------- proto4 [_OnBuyFinished] ----------
  ; fn ?  line 36-42 np=3 va=0 ms=6 code=9 consts=2 upvals=0 protos=0
  ;   K[0]='HasPurchaseFinished'
  ;   K[1]='OnBundleStateChanged'
  ;   locals: self(0-9), dataGroup(0-9), bundleId(0-9)
  0000  SELF      R4 = R0[K0('HasPurchaseFinished')] (self)
  0001  MOVE      R5 = R0
  0002  CALL      R3 = call(R3, 1 args, 2 rets)
  0003  TEST      if not R3 then   -> -131067
  0004  JMP       (jump)   -> 8
  0005  SELF      R4 = R0[K1('OnBundleStateChanged')] (self)
  0006  MOVE      R5 = R0
  0007  CALL      R3 = call(R3, 0 args, 2 rets)
  0008  RETURN    return R0..R-1
; ---------- proto5 [_OnBundleTriggered] ----------
  ; fn ?  line 44-47 np=2 va=0 ms=6 code=9 consts=3 upvals=0 protos=0
  ;   K[0]='_SetStep'
  ;   K[1]=1
  ;   K[2]='_SetPaidThisRound'
  ;   locals: self(0-9), dataGroup(0-9)
  0000  SELF      R3 = R0[K0('_SetStep')] (self)
  0001  MOVE      R4 = R0
  0002  LOADK     R5 = K1 1
  0003  CALL      R2 = call(R2, 0 args, 3 rets)
  0004  SELF      R3 = R0[K2('_SetPaidThisRound')] (self)
  0005  MOVE      R4 = R0
  0006  LOADBOOL  R5 = false
  0007  CALL      R2 = call(R2, 0 args, 3 rets)
  0008  RETURN    return R0..R-1
; ---------- proto6 [_RemoveLocalConfig] ----------
  ; fn ?  line 49-54 np=2 va=0 ms=6 code=14 consts=5 upvals=2 protos=0
  ;   K[0]='BundleActivityBaseModel'
  ;   K[1]='_RemoveLocalConfig'
  ;   K[2]='_RemoveBundleDBData'
  ;   K[3]='HasPaidThisRound'
  ;   K[4]='CurIndex'
  ;   upvals: _ENV, DBKey
  ;   locals: self(0-14), groupId(0-14)
  0000  GETTABUP  R2 = _ENV[K0('BundleActivityBaseModel')]
  0001  GETTABLE  R2 = R2[K1('_RemoveLocalConfig')]
  0002  MOVE      R3 = R0
  0003  MOVE      R4 = R0
  0004  CALL      R2 = call(R2, 0 args, 2 rets)
  0005  SELF      R3 = R0[K2('_RemoveBundleDBData')] (self)
  0006  MOVE      R4 = R0
  0007  GETTABUP  R5 = DBKey[K3('HasPaidThisRound')]
  0008  CALL      R2 = call(R2, 0 args, 3 rets)
  0009  SELF      R3 = R0[K2('_RemoveBundleDBData')] (self)
  0010  MOVE      R4 = R0
  0011  GETTABUP  R5 = DBKey[K4('CurIndex')]
  0012  CALL      R2 = call(R2, 0 args, 3 rets)
  0013  RETURN    return R0..R-1
; ---------- proto7 [OnBundleStateChanged] ----------
  ; fn ?  line 56-69 np=3 va=0 ms=7 code=34 consts=11 upvals=1 protos=0
  ;   K[0]='Log'
  ;   K[1]='Info'
  ;   K[2]='BundleChainModel:OnBundleStateChanged'
  ;   K[3]='GetBundleState'
  ;   K[4]='EBundleState'
  ;   K[5]='Opening'
  ;   K[6]='_OnBundleTriggered'
  ;   K[7]='Close'
  ;   K[8]='TryRecoverFreeRewards'
  ;   K[9]='BundleActivityBaseModel'
  ;   K[10]='OnBundleStateChanged'
  ;   upvals: _ENV
  ;   locals: self(0-34), dataGroup(0-34), bTriggered(0-34)
  0000  GETTABUP  R3 = _ENV[K0('Log')]
  0001  GETTABLE  R3 = R3[K1('Info')]
  0002  LOADK     R4 = K2 'BundleChainModel:OnBundleStateChanged'
  0003  CALL      R3 = call(R3, 0 args, 1 rets)
  0004  SELF      R4 = R0[K3('GetBundleState')] (self)
  0005  MOVE      R5 = R0
  0006  CALL      R3 = call(R3, 1 args, 2 rets)
  0007  GETTABUP  R4 = _ENV[K4('EBundleState')]
  0008  GETTABLE  R4 = R4[K5('Opening')]
  0009  EQ        if R0 eq R4   -> -129521
  0010  JMP       (jump)   -> 17
  0011  TEST      if not R2 then   -> -131059
  0012  JMP       (jump)   -> 17
  0013  SELF      R4 = R0[K6('_OnBundleTriggered')] (self)
  0014  MOVE      R5 = R0
  0015  CALL      R3 = call(R3, 0 args, 2 rets)
  0016  JMP       (jump)   -> 27
  0017  SELF      R4 = R0[K3('GetBundleState')] (self)
  0018  MOVE      R5 = R0
  0019  CALL      R3 = call(R3, 1 args, 2 rets)
  0020  GETTABUP  R4 = _ENV[K4('EBundleState')]
  0021  GETTABLE  R4 = R4[K7('Close')]
  0022  EQ        if R0 eq R4   -> -129508
  0023  JMP       (jump)   -> 27
  0024  SELF      R4 = R0[K8('TryRecoverFreeRewards')] (self)
  0025  MOVE      R5 = R0
  0026  CALL      R3 = call(R3, 0 args, 2 rets)
  0027  GETTABUP  R3 = _ENV[K9('BundleActivityBaseModel')]
  0028  GETTABLE  R3 = R3[K10('OnBundleStateChanged')]
  0029  MOVE      R4 = R0
  0030  MOVE      R5 = R0
  0031  MOVE      R6 = R0
  0032  CALL      R3 = call(R3, 0 args, 3 rets)
  0033  RETURN    return R0..R-1
; ---------- proto8 [OnSceneViewLoaded] ----------
  ; fn ?  line 71-77 np=1 va=0 ms=9 code=11 consts=5 upvals=1 protos=0
  ;   K[0]='m_bSceneViewLoaded'
  ;   K[1]=true
  ;   K[2]='ipairs'
  ;   K[3]='m_dataGroups'
  ;   K[4]='TryRecoverFreeRewards'
  ;   upvals: _ENV
  ;   locals: self(0-11), (for generator)(4-10), (for state)(4-10), (for control)(4-10), _(5-8), dataGroup(5-8)
  0000  SETTABLE  R0[K0('m_bSceneViewLoaded')] = K1(true)
  0001  GETTABUP  R1 = _ENV[K2('ipairs')]
  0002  GETTABLE  R2 = R0[K3('m_dataGroups')]
  0003  CALL      R1 = call(R1, 3 args, 1 rets)
  0004  JMP       (jump)   -> 8
  0005  SELF      R7 = R0[K4('TryRecoverFreeRewards')] (self)
  0006  MOVE      R8 = R0
  0007  CALL      R6 = call(R6, 0 args, 2 rets)
  0008  TFORCALL  tforcall R1
  0009  TFORLOOP  tforloop R3(sBx=-5)   -> 5
  0010  RETURN    return R0..R-1
; ---------- proto9 [TryRecoverFreeRewards] ----------
  ; fn ?  line 79-98 np=3 va=0 ms=11 code=47 consts=14 upvals=1 protos=0
  ;   K[0]='m_bSceneViewLoaded'
  ;   K[1]='GetBundleState'
  ;   K[2]='EBundleState'
  ;   K[3]='Close'
  ;   K[4]='_HasPaidThisRound'
  ;   K[5]='_GetRecordPurchaseRewards'
  ;   K[6]='Table'
  ;   K[7]='IsEmpty'
  ;   K[8]='_AcquireRecoverRewards'
  ;   K[9]='GetBundleUIType'
  ;   K[10]='_SetStep'
  ;   K[11]='Log'
  ;   K[12]='Traceback'
  ;   K[13]='BundleChainModel:TryRecoverFreeRewards'
  ;   upvals: _ENV
  ;   locals: self(0-47), dataGroup(0-47), bImmediately(0-47), rewards(21-44), step(21-44)
  0000  GETTABLE  R3 = R0[K0('m_bSceneViewLoaded')]
  0001  TEST      if not R3 then   -> -131068
  0002  JMP       (jump)   -> 5
  0003  LOADBOOL  R3 = false
  0004  RETURN    return R3..R2
  0005  SELF      R4 = R0[K1('GetBundleState')] (self)
  0006  MOVE      R5 = R0
  0007  CALL      R3 = call(R3, 1 args, 2 rets)
  0008  GETTABUP  R4 = _ENV[K2('EBundleState')]
  0009  GETTABLE  R4 = R4[K3('Close')]
  0010  EQ        if R0 eq R4   -> -129520
  0011  JMP       (jump)   -> 44
  0012  SELF      R4 = R0[K4('_HasPaidThisRound')] (self)
  0013  MOVE      R5 = R0
  0014  CALL      R3 = call(R3, 1 args, 2 rets)
  0015  TEST      if not R3 then   -> -131055
  0016  JMP       (jump)   -> 44
  0017  SELF      R4 = R0[K5('_GetRecordPurchaseRewards')] (self)
  0018  MOVE      R5 = R0
  0019  LOADBOOL  R6 = false
  0020  CALL      R3 = call(R3, 2 args, 3 rets)
  0021  GETTABUP  R5 = _ENV[K6('Table')]
  0022  GETTABLE  R5 = R5[K7('IsEmpty')]
  0023  MOVE      R6 = R0
  0024  CALL      R5 = call(R5, 1 args, 1 rets)
  0025  TEST      if not R5 then   -> -131044
  0026  JMP       (jump)   -> 44
  0027  SELF      R6 = R0[K8('_AcquireRecoverRewards')] (self)
  0028  MOVE      R7 = R0
  0029  MOVE      R8 = R0
  0030  SELF      R10 = R1[K9('GetBundleUIType')] (self)
  0031  CALL      R9 = call(R9, 1 args, 1 rets)
  0032  MOVE      R10 = R0
  0033  CALL      R5 = call(R5, 0 args, 5 rets)
  0034  SELF      R6 = R0[K10('_SetStep')] (self)
  0035  MOVE      R7 = R0
  0036  MOVE      R8 = R0
  0037  CALL      R5 = call(R5, 0 args, 3 rets)
  0038  GETTABUP  R5 = _ENV[K11('Log')]
  0039  GETTABLE  R5 = R5[K12('Traceback')]
  0040  LOADK     R6 = K13 'BundleChainModel:TryRecoverFreeRewards'
  0041  CALL      R5 = call(R5, 0 args, 1 rets)
  0042  LOADBOOL  R5 = true
  0043  RETURN    return R5..R4
  0044  LOADBOOL  R3 = false
  0045  RETURN    return R3..R2
  0046  RETURN    return R0..R-1
; ---------- proto10 [BuyBundle] ----------
  ; fn ?  line 100-104 np=3 va=0 ms=12 code=22 consts=10 upvals=1 protos=0
  ;   K[0]='GetCurStepBundleConfigData'
  ;   K[1]='GM'
  ;   K[2]='BIManager'
  ;   K[3]='LogAction'
  ;   K[4]='EBIType'
  ;   K[5]='BundleBuy'
  ;   K[6]='GetGroupId'
  ;   K[7]='_'
  ;   K[8]='GetCurChainStep'
  ;   K[9]='_BuyBundle'
  ;   upvals: _ENV
  ;   locals: self(0-22), dataGroup(0-22), callback(0-22), bundleData(3-22)
  0000  SELF      R4 = R0[K0('GetCurStepBundleConfigData')] (self)
  0001  MOVE      R5 = R0
  0002  CALL      R3 = call(R3, 1 args, 2 rets)
  0003  GETTABUP  R4 = _ENV[K1('GM')]
  0004  GETTABLE  R4 = R4[K2('BIManager')]
  0005  SELF      R5 = R4[K3('LogAction')] (self)
  0006  GETTABUP  R6 = _ENV[K4('EBIType')]
  0007  GETTABLE  R6 = R6[K5('BundleBuy')]
  0008  SELF      R8 = R1[K6('GetGroupId')] (self)
  0009  CALL      R7 = call(R7, 1 args, 1 rets)
  0010  LOADK     R8 = K7 '_'
  0011  SELF      R10 = R0[K8('GetCurChainStep')] (self)
  0012  MOVE      R11 = R0
  0013  CALL      R9 = call(R9, 1 args, 2 rets)
  0014  CONCAT    R7 = concat(R7..R7)
  0015  CALL      R4 = call(R4, 0 args, 3 rets)
  0016  SELF      R5 = R0[K9('_BuyBundle')] (self)
  0017  MOVE      R6 = R0
  0018  MOVE      R7 = R0
  0019  MOVE      R8 = R0
  0020  CALL      R4 = call(R4, 0 args, 4 rets)
  0021  RETURN    return R0..R-1
; ---------- proto11 [_BuyBundle] ----------
  ; fn ?  line 106-182 np=4 va=0 ms=16 code=82 consts=33 upvals=1 protos=1
  ;   K[0]='IsFree'
  ;   K[1]='_HasPaidThisRound'
  ;   K[2]='EPropertySource'
  ;   K[3]='Buy'
  ;   K[4]='Give'
  ;   K[5]='RewardApi'
  ;   K[6]='AcquireRewardsLogic'
  ;   K[7]='GetGoods'
  ;   K[8]='EBIType'
  ;   K[9]='BundleFree'
  ;   K[10]='ERewardScene'
  ;   K[11]='Bundle'
  ;   K[12]='CacheItemType'
  ;   K[13]='Stack'
  ;   K[14]='_Set2NextStep'
  ;   K[15]='_OnBuyFinished'
  ;   K[16]='GetBundleId'
  ;   K[17]=nil
  ;   K[18]='GetPurchaseId'
  ;   K[19]='_GetRecordPurchaseRewards'
  ;   K[20]='GetCurChainStep'
  ;   K[21]=1
  ;   K[22]='purchaseId'
  ;   K[23]='rewards'
  ;   K[24]='uiCode'
  ;   K[25]='GetBundleUIType'
  ;   K[26]='step'
  ;   K[27]='_RecordPurchaseInfo'
  ;   K[28]='GetGroupId'
  ;   K[29]='GetBundleTriggerStartTime'
  ;   K[30]='GM'
  ;   K[31]='BundleManager'
  ;   K[32]='m_bundleType'
  ;   upvals: _ENV
  ;   locals: self(0-82), dataGroup(0-82), bundleData(0-82), callback(0-82), eFree(15-42), payId(45-81), rewards(49-81), step(49-81), freeRewards(57-81), purchaseInfo(64-81), triggerTime(72-81)
  0000  SELF      R5 = R2[K0('IsFree')] (self)
  0001  CALL      R4 = call(R4, 1 args, 1 rets)
  0002  TEST      if not R4 then   -> -131068
  0003  JMP       (jump)   -> 43
  0004  SELF      R5 = R0[K1('_HasPaidThisRound')] (self)
  0005  MOVE      R6 = R0
  0006  CALL      R4 = call(R4, 1 args, 2 rets)
  0007  TEST      if not R4 then   -> -131063
  0008  JMP       (jump)   -> 13
  0009  GETTABUP  R4 = _ENV[K2('EPropertySource')]
  0010  GETTABLE  R4 = R4[K3('Buy')]
  0011  TEST      if not R4 then   -> -131058
  0012  JMP       (jump)   -> 15
  0013  GETTABUP  R4 = _ENV[K2('EPropertySource')]
  0014  GETTABLE  R4 = R4[K4('Give')]
  0015  GETTABUP  R5 = _ENV[K5('RewardApi')]
  0016  GETTABLE  R5 = R5[K6('AcquireRewardsLogic')]
  0017  SELF      R7 = R2[K7('GetGoods')] (self)
  0018  CALL      R6 = call(R6, 1 args, 1 rets)
  0019  MOVE      R7 = R0
  0020  GETTABUP  R8 = _ENV[K8('EBIType')]
  0021  GETTABLE  R8 = R8[K9('BundleFree')]
  0022  GETTABUP  R9 = _ENV[K10('ERewardScene')]
  0023  GETTABLE  R9 = R9[K11('Bundle')]
  0024  LOADNIL   R10..R10 = nil
  0025  GETTABUP  R11 = _ENV[K12('CacheItemType')]
  0026  GETTABLE  R11 = R11[K13('Stack')]
  0027  CALL      R5 = call(R5, 0 args, 6 rets)
  0028  SELF      R6 = R0[K14('_Set2NextStep')] (self)
  0029  MOVE      R7 = R0
  0030  CALL      R5 = call(R5, 0 args, 2 rets)
  0031  SELF      R6 = R0[K15('_OnBuyFinished')] (self)
  0032  MOVE      R7 = R0
  0033  SELF      R9 = R2[K16('GetBundleId')] (self)
  0034  CALL      R8 = call(R8, -1 args, 1 rets)
  0035  CALL      R5 = call(R5, 0 args, -1 rets)
  0036  EQ        if R1 eq K17(nil)   -> -129225
  0037  JMP       (jump)   -> 81
  0038  MOVE      R5 = R0
  0039  SELF      R7 = R2[K7('GetGoods')] (self)
  0040  CALL      R6 = call(R6, -1 args, 1 rets)
  0041  CALL      R5 = call(R5, 0 args, -1 rets)
  0042  JMP       (jump)   -> 81
  0043  SELF      R5 = R2[K18('GetPurchaseId')] (self)
  0044  CALL      R4 = call(R4, 1 args, 1 rets)
  0045  SELF      R6 = R0[K19('_GetRecordPurchaseRewards')] (self)
  0046  MOVE      R7 = R0
  0047  LOADBOOL  R8 = true
  0048  CALL      R5 = call(R5, 2 args, 3 rets)
  0049  SELF      R8 = R0[K19('_GetRecordPurchaseRewards')] (self)
  0050  MOVE      R9 = R0
  0051  LOADBOOL  R10 = false
  0052  SELF      R12 = R0[K20('GetCurChainStep')] (self)
  0053  MOVE      R13 = R0
  0054  CALL      R11 = call(R11, 1 args, 2 rets)
  0055  ADD       R11 = K21(1) add R11
  0056  CALL      R7 = call(R7, 1 args, 4 rets)
  0057  NEWTABLE  R8 = {} (0 items)
  0058  SETTABLE  R8[K22('purchaseId')] = R4
  0059  SETTABLE  R8[K23('rewards')] = R5
  0060  SELF      R10 = R1[K25('GetBundleUIType')] (self)
  0061  CALL      R9 = call(R9, 1 args, 1 rets)
  0062  SETTABLE  R8[K24('uiCode')] = R9
  0063  SETTABLE  R8[K26('step')] = R6
  0064  SELF      R10 = R0[K27('_RecordPurchaseInfo')] (self)
  0065  SELF      R12 = R1[K28('GetGroupId')] (self)
  0066  CALL      R11 = call(R11, 1 args, 1 rets)
  0067  MOVE      R12 = R0
  0068  CALL      R9 = call(R9, 0 args, 3 rets)
  0069  SELF      R10 = R0[K29('GetBundleTriggerStartTime')] (self)
  0070  MOVE      R11 = R0
  0071  CALL      R9 = call(R9, 1 args, 2 rets)
  0072  GETTABUP  R10 = _ENV[K30('GM')]
  0073  GETTABLE  R10 = R10[K31('BundleManager')]
  0074  SELF      R11 = R10[K3('Buy')] (self)
  0075  GETTABLE  R12 = R0[K32('m_bundleType')]
  0076  MOVE      R13 = R0
  0077  CLOSURE   R14 = closure proto0
  0078  LOADBOOL  R15 = true
  0079  CALL      R10 = call(R10, 0 args, 5 rets)
  0080  JMP       (jump)   -> 81
  0081  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 137-180 np=1 va=0 ms=11 code=171 consts=43 upvals=9 protos=0
    ;   K[0]='BundleUIType'
    ;   K[1]='GetBundleUIType'
    ;   K[2]='_IsValidDataGroup'
    ;   K[3]='GetBundleState'
    ;   K[4]='EBundleState'
    ;   K[5]='Opening'
    ;   K[6]='IsDisposable'
    ;   K[7]='GM'
    ;   K[8]='UIManager'
    ;   K[9]='GetOpenedViewByName'
    ;   K[10]='window'
    ;   K[11]=nil
    ;   K[12]='_Set2NextStep'
    ;   K[13]='_SetPaidThisRound'
    ;   K[14]='_ReleasePurchaseInfo'
    ;   K[15]='GetGroupId'
    ;   K[16]='_OnBuyFinished'
    ;   K[17]='GetBundleId'
    ;   K[18]='Table'
    ;   K[19]='IsEmpty'
    ;   K[20]='RewardApi'
    ;   K[21]='AcquireRewardsLogic'
    ;   K[22]='EPropertySource'
    ;   K[23]='Buy'
    ;   K[24]='EBIType'
    ;   K[25]='ChainRestoreAfterFinish'
    ;   K[26]='ERewardScene'
    ;   K[27]='Bundle'
    ;   K[28]='CacheItemType'
    ;   K[29]='Stack'
    ;   K[30]='rewards'
    ;   K[31]='FilterRewards'
    ;   K[32]='uiCode'
    ;   K[33]='CanOpenRecoverWindowImmediately'
    ;   K[34]='OpenView'
    ;   K[35]='UIPrefabConfigName'
    ;   K[36]='BundleRewardWindow'
    ;   K[37]='GetTitleText'
    ;   K[38]='BundlePopupHelper'
    ;   K[39]='AddWindowToPopupChain'
    ;   K[40]='GetCurChainStep'
    ;   K[41]='step'
    ;   K[42]='_SetStep'
    ;   upvals: _ENV, dataGroup, self, triggerTime, bundleData, callback, freeRewards, purchaseInfo, step
    ;   locals: rewards(0-171), uiDefinition(5-171), validRewards(92-138), uiDefinition(104-138)
    0000  GETTABUP  R1 = _ENV[K0('BundleUIType')]
    0001  GETUPVAL  R2 = _ENV
    0002  SELF      R3 = R2[K1('GetBundleUIType')] (self)
    0003  CALL      R2 = call(R2, 1 args, 1 rets)
    0004  GETTABLE  R1 = R1[R2]
    0005  GETUPVAL  R2 = _ENV
    0006  SELF      R3 = R2[K2('_IsValidDataGroup')] (self)
    0007  GETUPVAL  R4 = _ENV
    0008  GETUPVAL  R5 = _ENV
    0009  CALL      R2 = call(R2, 1 args, 3 rets)
    0010  TEST      if not R2 then   -> -131060
    0011  JMP       (jump)   -> 61
    0012  GETUPVAL  R2 = _ENV
    0013  SELF      R3 = R2[K3('GetBundleState')] (self)
    0014  GETUPVAL  R4 = _ENV
    0015  CALL      R2 = call(R2, 1 args, 2 rets)
    0016  GETTABUP  R3 = _ENV[K4('EBundleState')]
    0017  GETTABLE  R3 = R3[K5('Opening')]
    0018  EQ        if R1 eq R3   -> -130025
    0019  JMP       (jump)   -> 32
    0020  GETUPVAL  R2 = _ENV
    0021  SELF      R3 = R2[K6('IsDisposable')] (self)
    0022  CALL      R2 = call(R2, 1 args, 1 rets)
    0023  TEST      if not R2 then   -> -131047
    0024  JMP       (jump)   -> 61
    0025  GETTABUP  R2 = _ENV[K7('GM')]
    0026  GETTABLE  R2 = R2[K8('UIManager')]
    0027  SELF      R3 = R2[K9('GetOpenedViewByName')] (self)
    0028  GETTABLE  R4 = R1[K10('window')]
    0029  CALL      R2 = call(R2, 1 args, 2 rets)
    0030  EQ        if R1 eq K11(nil)   -> -129749
    0031  JMP       (jump)   -> 61
    0032  GETUPVAL  R2 = _ENV
    0033  SELF      R3 = R2[K12('_Set2NextStep')] (self)
    0034  GETUPVAL  R4 = _ENV
    0035  CALL      R2 = call(R2, 0 args, 2 rets)
    0036  GETUPVAL  R2 = _ENV
    0037  SELF      R3 = R2[K13('_SetPaidThisRound')] (self)
    0038  GETUPVAL  R4 = _ENV
    0039  LOADBOOL  R5 = true
    0040  CALL      R2 = call(R2, 0 args, 3 rets)
    0041  GETUPVAL  R2 = _ENV
    0042  SELF      R3 = R2[K14('_ReleasePurchaseInfo')] (self)
    0043  GETUPVAL  R4 = _ENV
    0044  SELF      R5 = R4[K15('GetGroupId')] (self)
    0045  CALL      R4 = call(R4, -1 args, 1 rets)
    0046  CALL      R2 = call(R2, 0 args, -1 rets)
    0047  GETUPVAL  R2 = _ENV
    0048  SELF      R3 = R2[K16('_OnBuyFinished')] (self)
    0049  GETUPVAL  R4 = _ENV
    0050  GETUPVAL  R5 = _ENV
    0051  SELF      R6 = R5[K17('GetBundleId')] (self)
    0052  CALL      R5 = call(R5, -1 args, 1 rets)
    0053  CALL      R2 = call(R2, 0 args, -1 rets)
    0054  GETUPVAL  R2 = _ENV
    0055  EQ        if R1 eq K11(nil)   -> -129724
    0056  JMP       (jump)   -> 170
    0057  GETUPVAL  R2 = _ENV
    0058  MOVE      R3 = R0
    0059  CALL      R2 = call(R2, 0 args, 1 rets)
    0060  JMP       (jump)   -> 170
    0061  GETTABUP  R2 = _ENV[K18('Table')]
    0062  GETTABLE  R2 = R2[K19('IsEmpty')]
    0063  GETUPVAL  R3 = _ENV
    0064  CALL      R2 = call(R2, 1 args, 1 rets)
    0065  TEST      if not R2 then   -> -131004
    0066  JMP       (jump)   -> 80
    0067  GETTABUP  R2 = _ENV[K20('RewardApi')]
    0068  GETTABLE  R2 = R2[K21('AcquireRewardsLogic')]
    0069  GETUPVAL  R3 = _ENV
    0070  GETTABUP  R4 = _ENV[K22('EPropertySource')]
    0071  GETTABLE  R4 = R4[K23('Buy')]
    0072  GETTABUP  R5 = _ENV[K24('EBIType')]
    0073  GETTABLE  R5 = R5[K25('ChainRestoreAfterFinish')]
    0074  GETTABUP  R6 = _ENV[K26('ERewardScene')]
    0075  GETTABLE  R6 = R6[K27('Bundle')]
    0076  LOADNIL   R7..R7 = nil
    0077  GETTABUP  R8 = _ENV[K28('CacheItemType')]
    0078  GETTABLE  R8 = R8[K29('Stack')]
    0079  CALL      R2 = call(R2, 0 args, 6 rets)
    0080  GETTABUP  R2 = _ENV[K18('Table')]
    0081  GETTABLE  R2 = R2[K19('IsEmpty')]
    0082  GETTABUP  R3 = purchaseInfo[K30('rewards')]
    0083  CALL      R2 = call(R2, 1 args, 1 rets)
    0084  TEST      if not R2 then   -> -130985
    0085  JMP       (jump)   -> 138
    0086  GETTABUP  R2 = _ENV[K20('RewardApi')]
    0087  GETTABLE  R2 = R2[K31('FilterRewards')]
    0088  GETTABUP  R3 = purchaseInfo[K30('rewards')]
    0089  GETTABUP  R4 = _ENV[K26('ERewardScene')]
    0090  GETTABLE  R4 = R4[K27('Bundle')]
    0091  CALL      R2 = call(R2, 1 args, 2 rets)
    0092  GETTABUP  R3 = _ENV[K18('Table')]
    0093  GETTABLE  R3 = R3[K19('IsEmpty')]
    0094  MOVE      R4 = R0
    0095  CALL      R3 = call(R3, 1 args, 1 rets)
    0096  TEST      if not R3 then   -> -130973
    0097  JMP       (jump)   -> 138
    0098  GETTABUP  R3 = _ENV[K0('BundleUIType')]
    0099  GETTABUP  R4 = purchaseInfo[K32('uiCode')]
    0100  GETTABLE  R3 = R3[R4]
    0101  TEST      if not R3 then   -> -130968
    0102  JMP       (jump)   -> 104
    0103  NEWTABLE  R3 = {} (0 items)
    0104  GETUPVAL  R4 = _ENV
    0105  SELF      R5 = R4[K33('CanOpenRecoverWindowImmediately')] (self)
    0106  GETTABUP  R6 = purchaseInfo[K32('uiCode')]
    0107  CALL      R4 = call(R4, 1 args, 2 rets)
    0108  TEST      if not R4 then   -> -130962
    0109  JMP       (jump)   -> 125
    0110  GETTABUP  R4 = _ENV[K7('GM')]
    0111  GETTABLE  R4 = R4[K8('UIManager')]
    0112  SELF      R5 = R4[K34('OpenView')] (self)
    0113  GETTABUP  R6 = _ENV[K35('UIPrefabConfigName')]
    0114  GETTABLE  R6 = R6[K36('BundleRewardWindow')]
    0115  MOVE      R7 = R0
    0116  GETUPVAL  R8 = _ENV
    0117  SELF      R9 = R8[K37('GetTitleText')] (self)
    0118  GETUPVAL  R10 = _ENV
    0119  CALL      R8 = call(R8, 1 args, 2 rets)
    0120  LOADBOOL  R9 = true
    0121  GETTABUP  R10 = _ENV[K26('ERewardScene')]
    0122  GETTABLE  R10 = R10[K27('Bundle')]
    0123  CALL      R4 = call(R4, 0 args, 6 rets)
    0124  JMP       (jump)   -> 138
    0125  GETTABUP  R4 = _ENV[K38('BundlePopupHelper')]
    0126  GETTABLE  R4 = R4[K39('AddWindowToPopupChain')]
    0127  GETTABUP  R5 = _ENV[K35('UIPrefabConfigName')]
    0128  GETTABLE  R5 = R5[K36('BundleRewardWindow')]
    0129  MOVE      R6 = R0
    0130  GETUPVAL  R7 = _ENV
    0131  SELF      R8 = R7[K37('GetTitleText')] (self)
    0132  GETUPVAL  R9 = _ENV
    0133  CALL      R7 = call(R7, 1 args, 2 rets)
    0134  LOADBOOL  R8 = true
    0135  GETTABUP  R9 = _ENV[K26('ERewardScene')]
    0136  GETTABLE  R9 = R9[K27('Bundle')]
    0137  CALL      R4 = call(R4, 0 args, 5 rets)
    0138  GETUPVAL  R2 = _ENV
    0139  SELF      R3 = R2[K2('_IsValidDataGroup')] (self)
    0140  GETUPVAL  R4 = _ENV
    0141  GETUPVAL  R5 = _ENV
    0142  CALL      R2 = call(R2, 1 args, 3 rets)
    0143  TEST      if not R2 then   -> -130927
    0144  JMP       (jump)   -> 170
    0145  GETUPVAL  R2 = _ENV
    0146  SELF      R3 = R2[K40('GetCurChainStep')] (self)
    0147  GETUPVAL  R4 = _ENV
    0148  CALL      R2 = call(R2, 1 args, 2 rets)
    0149  GETTABUP  R3 = purchaseInfo[K41('step')]
    0150  LT        if R0 lt R3   -> -129893
    0151  JMP       (jump)   -> 157
    0152  GETUPVAL  R2 = _ENV
    0153  SELF      R3 = R2[K42('_SetStep')] (self)
    0154  GETUPVAL  R4 = _ENV
    0155  GETUPVAL  R5 = _ENV
    0156  CALL      R2 = call(R2, 0 args, 3 rets)
    0157  GETUPVAL  R2 = _ENV
    0158  SELF      R3 = R2[K14('_ReleasePurchaseInfo')] (self)
    0159  GETUPVAL  R4 = _ENV
    0160  SELF      R5 = R4[K15('GetGroupId')] (self)
    0161  CALL      R4 = call(R4, -1 args, 1 rets)
    0162  CALL      R2 = call(R2, 0 args, -1 rets)
    0163  GETUPVAL  R2 = _ENV
    0164  SELF      R3 = R2[K16('_OnBuyFinished')] (self)
    0165  GETUPVAL  R4 = _ENV
    0166  GETUPVAL  R5 = _ENV
    0167  SELF      R6 = R5[K17('GetBundleId')] (self)
    0168  CALL      R5 = call(R5, -1 args, 1 rets)
    0169  CALL      R2 = call(R2, 0 args, -1 rets)
    0170  RETURN    return R0..R-1
; ---------- proto12 [GetCurStepBundleConfigData] ----------
  ; fn ?  line 184-187 np=2 va=0 ms=6 code=8 consts=2 upvals=0 protos=0
  ;   K[0]='GetCurChainStep'
  ;   K[1]='GetConfigDataByIndex'
  ;   locals: self(0-8), dataGroup(0-8), step(3-8)
  0000  SELF      R3 = R0[K0('GetCurChainStep')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  SELF      R4 = R1[K1('GetConfigDataByIndex')] (self)
  0004  MOVE      R5 = R0
  0005  TAILCALL  tailcall(R3, 0)
  0006  RETURN    return R3..R2
  0007  RETURN    return R0..R-1
; ---------- proto13 [_RecordPurchaseInfo] ----------
  ; fn ?  line 192-194 np=3 va=0 ms=11 code=14 consts=8 upvals=2 protos=0
  ;   K[0]='_SetBundleDBData'
  ;   K[1]='ChainPurchaseInfo'
  ;   K[2]='StringUtil'
  ;   K[3]='Replace'
  ;   K[4]='json'
  ;   K[5]='encode'
  ;   K[6]=','
  ;   K[7]='@'
  ;   upvals: DBKey, _ENV
  ;   locals: self(0-14), groupId(0-14), info(0-14)
  0000  SELF      R4 = R0[K0('_SetBundleDBData')] (self)
  0001  MOVE      R5 = R0
  0002  GETTABUP  R6 = DBKey[K1('ChainPurchaseInfo')]
  0003  GETTABUP  R7 = _ENV[K2('StringUtil')]
  0004  GETTABLE  R7 = R7[K3('Replace')]
  0005  GETTABUP  R8 = _ENV[K4('json')]
  0006  GETTABLE  R8 = R8[K5('encode')]
  0007  MOVE      R9 = R0
  0008  CALL      R8 = call(R8, 1 args, 1 rets)
  0009  LOADK     R9 = K6 ','
  0010  LOADK     R10 = K7 '@'
  0011  CALL      R7 = call(R7, -1 args, 3 rets)
  0012  CALL      R3 = call(R3, 0 args, -1 rets)
  0013  RETURN    return R0..R-1
; ---------- proto14 [_GetRecordPurchaseInfo] ----------
  ; fn ?  line 196-202 np=2 va=0 ms=8 code=23 consts=9 upvals=2 protos=0
  ;   K[0]='_GetBundleDBData'
  ;   K[1]='ChainPurchaseInfo'
  ;   K[2]='StringUtil'
  ;   K[3]='IsNilOrEmpty'
  ;   K[4]='json'
  ;   K[5]='decode'
  ;   K[6]='Replace'
  ;   K[7]='@'
  ;   K[8]=','
  ;   upvals: DBKey, _ENV
  ;   locals: self(0-23), groupId(0-23), strInfo(4-23)
  0000  SELF      R3 = R0[K0('_GetBundleDBData')] (self)
  0001  MOVE      R4 = R0
  0002  GETTABUP  R5 = DBKey[K1('ChainPurchaseInfo')]
  0003  CALL      R2 = call(R2, 1 args, 3 rets)
  0004  GETTABUP  R3 = _ENV[K2('StringUtil')]
  0005  GETTABLE  R3 = R3[K3('IsNilOrEmpty')]
  0006  MOVE      R4 = R0
  0007  CALL      R3 = call(R3, 1 args, 1 rets)
  0008  TEST      if not R3 then   -> -131061
  0009  JMP       (jump)   -> 20
  0010  GETTABUP  R3 = _ENV[K4('json')]
  0011  GETTABLE  R3 = R3[K5('decode')]
  0012  GETTABUP  R4 = _ENV[K2('StringUtil')]
  0013  GETTABLE  R4 = R4[K6('Replace')]
  0014  MOVE      R5 = R0
  0015  LOADK     R6 = K7 '@'
  0016  LOADK     R7 = K8 ','
  0017  CALL      R4 = call(R4, -1 args, 3 rets)
  0018  TAILCALL  tailcall(R3, 0)
  0019  RETURN    return R3..R2
  0020  LOADNIL   R3..R3 = nil
  0021  RETURN    return R3..R2
  0022  RETURN    return R0..R-1
; ---------- proto15 [_ReleasePurchaseInfo] ----------
  ; fn ?  line 204-206 np=2 va=0 ms=6 code=5 consts=2 upvals=1 protos=0
  ;   K[0]='_RemoveBundleDBData'
  ;   K[1]='ChainPurchaseInfo'
  ;   upvals: DBKey
  ;   locals: self(0-5), groupId(0-5)
  0000  SELF      R3 = R0[K0('_RemoveBundleDBData')] (self)
  0001  MOVE      R4 = R0
  0002  GETTABUP  R5 = DBKey[K1('ChainPurchaseInfo')]
  0003  CALL      R2 = call(R2, 0 args, 3 rets)
  0004  RETURN    return R0..R-1
; ---------- proto16 [_GetRecordPurchaseRewards] ----------
  ; fn ?  line 211-244 np=4 va=0 ms=14 code=65 consts=11 upvals=1 protos=0
  ;   K[0]='_GetCurChainStep'
  ;   K[1]=nil
  ;   K[2]='GetCircleBundleIds'
  ;   K[3]=0
  ;   K[4]='GetConfigDataByIndex'
  ;   K[5]='IsFree'
  ;   K[6]='GetBundleIds'
  ;   K[7]=1
  ;   K[8]='Table'
  ;   K[9]='ListAppend'
  ;   K[10]='GetGoods'
  ;   upvals: _ENV
  ;   locals: self(0-65), dataGroup(0-65), bIAPBefore(0-65), step(0-65), step(5-65), rewards(9-65), bIAP(10-65), circleLength(16-65), circleStep(17-65), data(20-60)
  0000  TESTSET   if R1 then R4   -> -129533
  0001  JMP       (jump)   -> 5
  0002  SELF      R5 = R0[K0('_GetCurChainStep')] (self)
  0003  MOVE      R6 = R0
  0004  CALL      R4 = call(R4, 1 args, 2 rets)
  0005  EQ        if R0 eq K1(nil)   -> -128760
  0006  JMP       (jump)   -> 8
  0007  RETURN    return R0..R-1
  0008  NEWTABLE  R5 = {} (0 items)
  0009  LOADBOOL  R6 = false
  0010  SELF      R8 = R1[K2('GetCircleBundleIds')] (self)
  0011  CALL      R7 = call(R7, 1 args, 1 rets)
  0012  TEST      if not R7 then   -> -131057
  0013  JMP       (jump)   -> 15
  0014  NEWTABLE  R7 = {} (0 items)
  0015  LEN       R7 = len R0
  0016  LOADK     R8 = K3 0
  0017  SELF      R10 = R1[K4('GetConfigDataByIndex')] (self)
  0018  MOVE      R11 = R0
  0019  CALL      R9 = call(R9, 1 args, 2 rets)
  0020  EQ        if R1 eq K1(nil)   -> -126185
  0021  JMP       (jump)   -> 61
  0022  LT        if R0 lt R7   -> 1567
  0023  JMP       (jump)   -> 26
  0024  LE        if R1 le R8   -> -127454
  0025  JMP       (jump)   -> 61
  0026  SELF      R11 = R9[K5('IsFree')] (self)
  0027  CALL      R10 = call(R10, 1 args, 1 rets)
  0028  TEST      if not R10 then   -> -131042
  0029  JMP       (jump)   -> 46
  0030  SELF      R11 = R1[K6('GetBundleIds')] (self)
  0031  CALL      R10 = call(R10, 1 args, 1 rets)
  0032  TEST      if not R10 then   -> -131037
  0033  JMP       (jump)   -> 35
  0034  NEWTABLE  R10 = {} (0 items)
  0035  LEN       R10 = len R0
  0036  LT        if R0 lt R4   -> -125910
  0037  JMP       (jump)   -> 39
  0038  ADD       R8 = K7(1) add R8
  0039  GETTABUP  R10 = _ENV[K8('Table')]
  0040  GETTABLE  R10 = R10[K9('ListAppend')]
  0041  MOVE      R11 = R0
  0042  SELF      R13 = R9[K10('GetGoods')] (self)
  0043  CALL      R12 = call(R12, -1 args, 1 rets)
  0044  CALL      R10 = call(R10, 0 args, -1 rets)
  0045  JMP       (jump)   -> 59
  0046  TEST      if not R6 then   -> -131023
  0047  JMP       (jump)   -> 61
  0048  TEST      if not R2 then   -> -131022
  0049  JMP       (jump)   -> 61
  0050  LOADBOOL  R6 = true
  0051  GETTABUP  R10 = _ENV[K8('Table')]
  0052  GETTABLE  R10 = R10[K9('ListAppend')]
  0053  MOVE      R11 = R0
  0054  SELF      R13 = R9[K10('GetGoods')] (self)
  0055  CALL      R12 = call(R12, -1 args, 1 rets)
  0056  CALL      R10 = call(R10, 0 args, -1 rets)
  0057  JMP       (jump)   -> 59
  0058  JMP       (jump)   -> 61
  0059  ADD       R4 = K7(1) add R4
  0060  JMP       (jump)   -> 17
  0061  MOVE      R9 = R0
  0062  MOVE      R10 = R0
  0063  RETURN    return R9..R8
  0064  RETURN    return R0..R-1
; ---------- proto17 [_IsValidDataGroup] ----------
  ; fn ?  line 248-258 np=3 va=0 ms=12 code=25 consts=4 upvals=1 protos=0
  ;   K[0]='ipairs'
  ;   K[1]='m_dataGroups'
  ;   K[2]='GetBundleTriggerStartTime'
  ;   K[3]='GetGroupId'
  ;   upvals: _ENV
  ;   locals: self(0-25), dataGroup(0-25), recordTriggerTime(0-25), (for generator)(6-22), (for state)(6-22), (for control)(6-22), _(7-20), validDataGroup(7-20), triggerTime(10-20)
  0000  GETTABUP  R3 = _ENV[K0('ipairs')]
  0001  GETTABLE  R4 = R0[K1('m_dataGroups')]
  0002  TEST      if not R4 then   -> -131067
  0003  JMP       (jump)   -> 5
  0004  NEWTABLE  R4 = {} (0 items)
  0005  CALL      R3 = call(R3, 3 args, 1 rets)
  0006  JMP       (jump)   -> 20
  0007  SELF      R9 = R0[K2('GetBundleTriggerStartTime')] (self)
  0008  MOVE      R10 = R0
  0009  CALL      R8 = call(R8, 1 args, 2 rets)
  0010  SELF      R10 = R7[K3('GetGroupId')] (self)
  0011  CALL      R9 = call(R9, 1 args, 1 rets)
  0012  SELF      R11 = R1[K3('GetGroupId')] (self)
  0013  CALL      R10 = call(R10, 1 args, 1 rets)
  0014  EQ        if R0 eq R10   -> -126438
  0015  JMP       (jump)   -> 20
  0016  EQ        if R0 eq R2   -> -126956
  0017  JMP       (jump)   -> 20
  0018  LOADBOOL  R9 = true
  0019  RETURN    return R9..R8
  0020  TFORCALL  tforcall R3
  0021  TFORLOOP  tforloop R5(sBx=-15)   -> 7
  0022  LOADBOOL  R3 = false
  0023  RETURN    return R3..R2
  0024  RETURN    return R0..R-1
; ---------- proto18 [CanOpenRecoverWindowImmediately] ----------
  ; fn ?  line 260-271 np=2 va=0 ms=11 code=36 consts=13 upvals=1 protos=0
  ;   K[0]='BundleUIType'
  ;   K[1]=nil
  ;   K[2]='Table'
  ;   K[3]='IsEmpty'
  ;   K[4]='entryInfo'
  ;   K[5]='ipairs'
  ;   K[6]='scene'
  ;   K[7]='EBundleEntryScene'
  ;   K[8]='Activity'
  ;   K[9]='window'
  ;   K[10]='GM'
  ;   K[11]='UIManager'
  ;   K[12]='GetOpenedViewByName'
  ;   upvals: _ENV
  ;   locals: self(0-36), uiCode(0-36), uiDefinition(2-36), (for generator)(13-33), (for state)(13-33), (for control)(13-33), _(14-31), info(14-31)
  0000  GETTABUP  R2 = _ENV[K0('BundleUIType')]
  0001  GETTABLE  R2 = R2[R1]
  0002  EQ        if R1 eq K1(nil)   -> -129787
  0003  JMP       (jump)   -> 33
  0004  GETTABUP  R3 = _ENV[K2('Table')]
  0005  GETTABLE  R3 = R3[K3('IsEmpty')]
  0006  GETTABLE  R4 = R2[K4('entryInfo')]
  0007  CALL      R3 = call(R3, 1 args, 1 rets)
  0008  TEST      if not R3 then   -> -131061
  0009  JMP       (jump)   -> 33
  0010  GETTABUP  R3 = _ENV[K5('ipairs')]
  0011  GETTABLE  R4 = R2[K4('entryInfo')]
  0012  CALL      R3 = call(R3, 3 args, 1 rets)
  0013  JMP       (jump)   -> 31
  0014  GETTABLE  R8 = R7[K6('scene')]
  0015  GETTABUP  R9 = _ENV[K7('EBundleEntryScene')]
  0016  GETTABLE  R9 = R9[K8('Activity')]
  0017  EQ        if R0 eq R9   -> -126948
  0018  JMP       (jump)   -> 31
  0019  GETTABLE  R8 = R7[K9('window')]
  0020  EQ        if R1 eq K1(nil)   -> -126697
  0021  JMP       (jump)   -> 31
  0022  GETTABUP  R8 = _ENV[K10('GM')]
  0023  GETTABLE  R8 = R8[K11('UIManager')]
  0024  SELF      R9 = R8[K12('GetOpenedViewByName')] (self)
  0025  GETTABLE  R10 = R7[K9('window')]
  0026  CALL      R8 = call(R8, 1 args, 2 rets)
  0027  EQ        if R1 eq K1(nil)   -> -126690
  0028  JMP       (jump)   -> 31
  0029  LOADBOOL  R8 = true
  0030  RETURN    return R8..R7
  0031  TFORCALL  tforcall R3
  0032  TFORLOOP  tforloop R5(sBx=-19)   -> 14
  0033  LOADBOOL  R3 = false
  0034  RETURN    return R3..R2
  0035  RETURN    return R0..R-1
; ---------- proto19 [_AcquireRecoverRewards] ----------
  ; fn ?  line 273-290 np=5 va=0 ms=14 code=65 consts=23 upvals=1 protos=0
  ;   K[0]=nil
  ;   K[1]='CanOpenRecoverWindowImmediately'
  ;   K[2]='Table'
  ;   K[3]='IsEmpty'
  ;   K[4]='RewardApi'
  ;   K[5]='AcquireRewardsLogic'
  ;   K[6]='EPropertySource'
  ;   K[7]='Buy'
  ;   K[8]='EBIType'
  ;   K[9]='ChainRestoreAfterFinish'
  ;   K[10]='ERewardScene'
  ;   K[11]='Bundle'
  ;   K[12]='CacheItemType'
  ;   K[13]='Stack'
  ;   K[14]='FilterRewards'
  ;   K[15]='GetTitleText'
  ;   K[16]='GM'
  ;   K[17]='UIManager'
  ;   K[18]='OpenView'
  ;   K[19]='UIPrefabConfigName'
  ;   K[20]='BundleRewardWindow'
  ;   K[21]='BundlePopupHelper'
  ;   K[22]='AddWindowToPopupChain'
  ;   upvals: _ENV
  ;   locals: self(0-65), rewards(0-65), dataGroup(0-65), uiCode(0-65), bImmediately(0-65), validRewards(31-64), titleText(40-64)
  0000  EQ        if R0 eq K0(nil)   -> -128766
  0001  JMP       (jump)   -> 6
  0002  SELF      R6 = R0[K1('CanOpenRecoverWindowImmediately')] (self)
  0003  MOVE      R7 = R0
  0004  CALL      R5 = call(R5, 1 args, 2 rets)
  0005  MOVE      R4 = R0
  0006  GETTABUP  R5 = _ENV[K2('Table')]
  0007  GETTABLE  R5 = R5[K3('IsEmpty')]
  0008  MOVE      R6 = R0
  0009  CALL      R5 = call(R5, 1 args, 1 rets)
  0010  TEST      if not R5 then   -> -131059
  0011  JMP       (jump)   -> 64
  0012  GETTABUP  R5 = _ENV[K4('RewardApi')]
  0013  GETTABLE  R5 = R5[K5('AcquireRewardsLogic')]
  0014  MOVE      R6 = R0
  0015  GETTABUP  R7 = _ENV[K6('EPropertySource')]
  0016  GETTABLE  R7 = R7[K7('Buy')]
  0017  GETTABUP  R8 = _ENV[K8('EBIType')]
  0018  GETTABLE  R8 = R8[K9('ChainRestoreAfterFinish')]
  0019  GETTABUP  R9 = _ENV[K10('ERewardScene')]
  0020  GETTABLE  R9 = R9[K11('Bundle')]
  0021  LOADNIL   R10..R10 = nil
  0022  GETTABUP  R11 = _ENV[K12('CacheItemType')]
  0023  GETTABLE  R11 = R11[K13('Stack')]
  0024  CALL      R5 = call(R5, 0 args, 6 rets)
  0025  GETTABUP  R5 = _ENV[K4('RewardApi')]
  0026  GETTABLE  R5 = R5[K14('FilterRewards')]
  0027  MOVE      R6 = R0
  0028  GETTABUP  R7 = _ENV[K10('ERewardScene')]
  0029  GETTABLE  R7 = R7[K11('Bundle')]
  0030  CALL      R5 = call(R5, 1 args, 2 rets)
  0031  GETTABUP  R6 = _ENV[K2('Table')]
  0032  GETTABLE  R6 = R6[K3('IsEmpty')]
  0033  MOVE      R7 = R0
  0034  CALL      R6 = call(R6, 1 args, 1 rets)
  0035  TEST      if not R6 then   -> -131034
  0036  JMP       (jump)   -> 64
  0037  SELF      R7 = R0[K15('GetTitleText')] (self)
  0038  MOVE      R8 = R0
  0039  CALL      R6 = call(R6, 1 args, 2 rets)
  0040  TEST      if not R4 then   -> -131030
  0041  JMP       (jump)   -> 54
  0042  GETTABUP  R7 = _ENV[K16('GM')]
  0043  GETTABLE  R7 = R7[K17('UIManager')]
  0044  SELF      R8 = R7[K18('OpenView')] (self)
  0045  GETTABUP  R9 = _ENV[K19('UIPrefabConfigName')]
  0046  GETTABLE  R9 = R9[K20('BundleRewardWindow')]
  0047  MOVE      R10 = R0
  0048  MOVE      R11 = R0
  0049  LOADBOOL  R12 = true
  0050  GETTABUP  R13 = _ENV[K10('ERewardScene')]
  0051  GETTABLE  R13 = R13[K11('Bundle')]
  0052  CALL      R7 = call(R7, 0 args, 6 rets)
  0053  JMP       (jump)   -> 64
  0054  GETTABUP  R7 = _ENV[K21('BundlePopupHelper')]
  0055  GETTABLE  R7 = R7[K22('AddWindowToPopupChain')]
  0056  GETTABUP  R8 = _ENV[K19('UIPrefabConfigName')]
  0057  GETTABLE  R8 = R8[K20('BundleRewardWindow')]
  0058  MOVE      R9 = R0
  0059  MOVE      R10 = R0
  0060  LOADBOOL  R11 = true
  0061  GETTABUP  R12 = _ENV[K10('ERewardScene')]
  0062  GETTABLE  R12 = R12[K11('Bundle')]
  0063  CALL      R7 = call(R7, 0 args, 5 rets)
  0064  RETURN    return R0..R-1
; ---------- proto20 [OnRestoreIAPRewards] ----------
  ; fn ?  line 292-296 np=2 va=0 ms=5 code=5 consts=1 upvals=0 protos=0
  ;   K[0]='_OnRestoreIAPRewards'
  ;   locals: self(0-5), eIAPType(0-5), success(3-5)
  0000  SELF      R3 = R0[K0('_OnRestoreIAPRewards')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  RETURN    return R2..R1
  0004  RETURN    return R0..R-1
; ---------- proto21 [_OnRestoreIAPRewards] ----------
  ; fn ?  line 298-397 np=2 va=0 ms=17 code=237 consts=41 upvals=1 protos=0
  ;   K[0]='ipairs'
  ;   K[1]='m_dataGroups'
  ;   K[2]='_GetRecordPurchaseInfo'
  ;   K[3]='GetGroupId'
  ;   K[4]=nil
  ;   K[5]='purchaseId'
  ;   K[6]='Table'
  ;   K[7]='IsEmpty'
  ;   K[8]='rewards'
  ;   K[9]='_ReleasePurchaseInfo'
  ;   K[10]='GetCurStepBundleConfigData'
  ;   K[11]='GetPurchaseId'
  ;   K[12]='GetBundleState'
  ;   K[13]='EBundleState'
  ;   K[14]='Opening'
  ;   K[15]='_SetPaidThisRound'
  ;   K[16]='GetGoods'
  ;   K[17]='RewardApi'
  ;   K[18]='CryptRewards'
  ;   K[19]='GM'
  ;   K[20]='BundleManager'
  ;   K[21]='CheckNeedGiveGems'
  ;   K[22]='_AcquireRecoverRewards'
  ;   K[23]='uiCode'
  ;   K[24]='Log'
  ;   K[25]='Info'
  ;   K[26]='链式礼包补单，优先取存储的购买数据进行补发'
  ;   K[27]='_Set2NextStep'
  ;   K[28]='_OnBuyFinished'
  ;   K[29]='GetBundleId'
  ;   K[30]='EventDispatcher'
  ;   K[31]='DispatchEvent'
  ;   K[32]='EEventType'
  ;   K[33]='BundleIAPRestoreSuccess'
  ;   K[34]='GetConfigDataByPurchaseId'
  ;   K[35]='_GetRecordPurchaseRewards'
  ;   K[36]='_SetStep'
  ;   K[37]='GetBundleUIType'
  ;   K[38]='链式礼包补单，第二选择: 当前step与购买项正好相等的情况'
  ;   K[39]='GetStep'
  ;   K[40]='链式礼包补单，最终兜底就是任选一个相同支付项尝试补发'
  ;   upvals: _ENV
  ;   locals: self(0-237), eIAPType(0-237), purchaseInfo(1-237), curStepData(1-237), (for generator)(4-111), (for state)(4-111), (for control)(4-111), _(5-109), dataGroup(5-109), rewards(30-109), bToNextStep(31-109), samePayId(40-109), curBundleData(112-237), curDataGroup(112-237), backupBundleData(112-237), backupDataGroup(112-237), (for generator)(118-143), (for state)(118-143), (for control)(118-143), _(119-141), dataGroup(119-141), recoverRewards(146-196), rewards(168-173), step(168-173), rewards(206-234)
  0000  LOADNIL   R2..R2 = nil
  0001  GETTABUP  R4 = _ENV[K0('ipairs')]
  0002  GETTABLE  R5 = R0[K1('m_dataGroups')]
  0003  CALL      R4 = call(R4, 3 args, 1 rets)
  0004  JMP       (jump)   -> 109
  0005  SELF      R10 = R0[K2('_GetRecordPurchaseInfo')] (self)
  0006  SELF      R12 = R8[K3('GetGroupId')] (self)
  0007  CALL      R11 = call(R11, -1 args, 1 rets)
  0008  CALL      R9 = call(R9, 1 args, -1 rets)
  0009  MOVE      R2 = R0
  0010  EQ        if R1 eq K4(nil)   -> -129776
  0011  JMP       (jump)   -> 109
  0012  GETTABLE  R9 = R2[K5('purchaseId')]
  0013  EQ        if R0 eq R1   -> -126448
  0014  JMP       (jump)   -> 109
  0015  GETTABUP  R9 = _ENV[K6('Table')]
  0016  GETTABLE  R9 = R9[K7('IsEmpty')]
  0017  GETTABLE  R10 = R2[K8('rewards')]
  0018  CALL      R9 = call(R9, 1 args, 1 rets)
  0019  TEST      if not R9 then   -> -131050
  0020  JMP       (jump)   -> 109
  0021  SELF      R10 = R0[K9('_ReleasePurchaseInfo')] (self)
  0022  SELF      R12 = R8[K3('GetGroupId')] (self)
  0023  CALL      R11 = call(R11, -1 args, 1 rets)
  0024  CALL      R9 = call(R9, 0 args, -1 rets)
  0025  SELF      R10 = R0[K10('GetCurStepBundleConfigData')] (self)
  0026  MOVE      R11 = R0
  0027  CALL      R9 = call(R9, 1 args, 2 rets)
  0028  MOVE      R3 = R0
  0029  LOADNIL   R9..R9 = nil
  0030  LOADBOOL  R10 = false
  0031  TESTSET   if R0 then R11   -> -129503
  0032  JMP       (jump)   -> 40
  0033  SELF      R12 = R3[K11('GetPurchaseId')] (self)
  0034  CALL      R11 = call(R11, 1 args, 1 rets)
  0035  GETTABLE  R12 = R2[K5('purchaseId')]
  0036  EQ        if R1 eq R12   -> -125390
  0037  JMP       (jump)   -> 39
  0038  LOADBOOL  R11 = false
  0039  LOADBOOL  R11 = true
  0040  SELF      R13 = R0[K12('GetBundleState')] (self)
  0041  MOVE      R14 = R0
  0042  CALL      R12 = call(R12, 1 args, 2 rets)
  0043  GETTABUP  R13 = _ENV[K13('EBundleState')]
  0044  GETTABLE  R13 = R13[K14('Opening')]
  0045  EQ        if R0 eq R13   -> -124868
  0046  JMP       (jump)   -> 58
  0047  TEST      if not R11 then   -> -131023
  0048  JMP       (jump)   -> 58
  0049  SELF      R13 = R0[K15('_SetPaidThisRound')] (self)
  0050  MOVE      R14 = R0
  0051  LOADBOOL  R15 = true
  0052  CALL      R12 = call(R12, 0 args, 3 rets)
  0053  SELF      R13 = R3[K16('GetGoods')] (self)
  0054  CALL      R12 = call(R12, 1 args, 1 rets)
  0055  MOVE      R9 = R0
  0056  LOADBOOL  R10 = true
  0057  JMP       (jump)   -> 64
  0058  GETTABLE  R9 = R2[K8('rewards')]
  0059  GETTABUP  R12 = _ENV[K17('RewardApi')]
  0060  GETTABLE  R12 = R12[K18('CryptRewards')]
  0061  MOVE      R13 = R0
  0062  LOADBOOL  R14 = true
  0063  CALL      R12 = call(R12, 0 args, 2 rets)
  0064  GETTABUP  R12 = _ENV[K6('Table')]
  0065  GETTABLE  R12 = R12[K7('IsEmpty')]
  0066  MOVE      R13 = R0
  0067  CALL      R12 = call(R12, 1 args, 1 rets)
  0068  TEST      if not R12 then   -> -131001
  0069  JMP       (jump)   -> 107
  0070  GETTABUP  R12 = _ENV[K19('GM')]
  0071  GETTABLE  R12 = R12[K20('BundleManager')]
  0072  SELF      R13 = R12[K21('CheckNeedGiveGems')] (self)
  0073  MOVE      R14 = R0
  0074  CALL      R12 = call(R12, 1 args, 2 rets)
  0075  TEST      if not R12 then   -> -130994
  0076  JMP       (jump)   -> 107
  0077  SELF      R13 = R0[K22('_AcquireRecoverRewards')] (self)
  0078  MOVE      R14 = R0
  0079  MOVE      R15 = R0
  0080  GETTABLE  R16 = R2[K23('uiCode')]
  0081  CALL      R12 = call(R12, 0 args, 4 rets)
  0082  GETTABUP  R12 = _ENV[K24('Log')]
  0083  GETTABLE  R12 = R12[K25('Info')]
  0084  LOADK     R13 = K26 '链式礼包补单，优先取存储的购买数据进行补发'
  0085  CALL      R12 = call(R12, 0 args, 1 rets)
  0086  TEST      if not R10 then   -> -130984
  0087  JMP       (jump)   -> 96
  0088  SELF      R13 = R0[K27('_Set2NextStep')] (self)
  0089  MOVE      R14 = R0
  0090  CALL      R12 = call(R12, 0 args, 2 rets)
  0091  SELF      R13 = R0[K28('_OnBuyFinished')] (self)
  0092  MOVE      R14 = R0
  0093  SELF      R16 = R3[K29('GetBundleId')] (self)
  0094  CALL      R15 = call(R15, -1 args, 1 rets)
  0095  CALL      R12 = call(R12, 0 args, -1 rets)
  0096  GETTABUP  R12 = _ENV[K30('EventDispatcher')]
  0097  GETTABLE  R12 = R12[K31('DispatchEvent')]
  0098  GETTABUP  R13 = _ENV[K32('EEventType')]
  0099  GETTABLE  R13 = R13[K33('BundleIAPRestoreSuccess')]
  0100  SELF      R15 = R8[K3('GetGroupId')] (self)
  0101  CALL      R14 = call(R14, -1 args, 1 rets)
  0102  CALL      R12 = call(R12, 0 args, -1 rets)
  0103  LOADBOOL  R12 = true
  0104  MOVE      R13 = R0
  0105  MOVE      R14 = R0
  0106  RETURN    return R12..R11
  0107  LOADBOOL  R12 = false
  0108  RETURN    return R12..R11
  0109  TFORCALL  tforcall R4
  0110  TFORLOOP  tforloop R6(sBx=-106)   -> 5
  0111  LOADNIL   R4..R4 = nil
  0112  GETTABUP  R8 = _ENV[K0('ipairs')]
  0113  GETTABLE  R9 = R0[K1('m_dataGroups')]
  0114  TEST      if not R9 then   -> -130955
  0115  JMP       (jump)   -> 117
  0116  NEWTABLE  R9 = {} (0 items)
  0117  CALL      R8 = call(R8, 3 args, 1 rets)
  0118  JMP       (jump)   -> 141
  0119  SELF      R14 = R0[K10('GetCurStepBundleConfigData')] (self)
  0120  MOVE      R15 = R0
  0121  CALL      R13 = call(R13, 1 args, 2 rets)
  0122  MOVE      R4 = R0
  0123  TEST      if not R4 then   -> -130947
  0124  JMP       (jump)   -> 131
  0125  SELF      R14 = R4[K11('GetPurchaseId')] (self)
  0126  CALL      R13 = call(R13, 1 args, 1 rets)
  0127  EQ        if R0 eq R1   -> -124286
  0128  JMP       (jump)   -> 131
  0129  MOVE      R5 = R0
  0130  JMP       (jump)   -> 143
  0131  LOADNIL   R4..R4 = nil
  0132  EQ        if R0 eq K4(nil)   -> -127606
  0133  JMP       (jump)   -> 141
  0134  SELF      R14 = R12[K34('GetConfigDataByPurchaseId')] (self)
  0135  MOVE      R15 = R0
  0136  CALL      R13 = call(R13, 1 args, 2 rets)
  0137  MOVE      R6 = R0
  0138  EQ        if R1 eq K4(nil)   -> -127600
  0139  JMP       (jump)   -> 141
  0140  MOVE      R7 = R0
  0141  TFORCALL  tforcall R8
  0142  TFORLOOP  tforloop R10(sBx=-24)   -> 119
  0143  EQ        if R1 eq K4(nil)   -> -128107
  0144  JMP       (jump)   -> 196
  0145  LOADNIL   R8..R8 = nil
  0146  SELF      R10 = R0[K12('GetBundleState')] (self)
  0147  MOVE      R11 = R0
  0148  CALL      R9 = call(R9, 1 args, 2 rets)
  0149  GETTABUP  R10 = _ENV[K13('EBundleState')]
  0150  GETTABLE  R10 = R10[K14('Opening')]
  0151  EQ        if R0 eq R10   -> -126301
  0152  JMP       (jump)   -> 164
  0153  SELF      R10 = R0[K15('_SetPaidThisRound')] (self)
  0154  MOVE      R11 = R0
  0155  LOADBOOL  R12 = true
  0156  CALL      R9 = call(R9, 0 args, 3 rets)
  0157  SELF      R10 = R0[K27('_Set2NextStep')] (self)
  0158  MOVE      R11 = R0
  0159  CALL      R9 = call(R9, 0 args, 2 rets)
  0160  SELF      R10 = R4[K16('GetGoods')] (self)
  0161  CALL      R9 = call(R9, 1 args, 1 rets)
  0162  MOVE      R8 = R0
  0163  JMP       (jump)   -> 173
  0164  SELF      R10 = R0[K35('_GetRecordPurchaseRewards')] (self)
  0165  MOVE      R11 = R0
  0166  LOADBOOL  R12 = true
  0167  CALL      R9 = call(R9, 2 args, 3 rets)
  0168  MOVE      R8 = R0
  0169  SELF      R12 = R0[K36('_SetStep')] (self)
  0170  MOVE      R13 = R0
  0171  MOVE      R14 = R0
  0172  CALL      R11 = call(R11, 0 args, 3 rets)
  0173  GETTABUP  R9 = _ENV[K19('GM')]
  0174  GETTABLE  R9 = R9[K20('BundleManager')]
  0175  SELF      R10 = R9[K21('CheckNeedGiveGems')] (self)
  0176  MOVE      R11 = R0
  0177  CALL      R9 = call(R9, 1 args, 2 rets)
  0178  TEST      if not R9 then   -> -130891
  0179  JMP       (jump)   -> 194
  0180  SELF      R10 = R0[K22('_AcquireRecoverRewards')] (self)
  0181  MOVE      R11 = R0
  0182  MOVE      R12 = R0
  0183  SELF      R14 = R5[K37('GetBundleUIType')] (self)
  0184  CALL      R13 = call(R13, -1 args, 1 rets)
  0185  CALL      R9 = call(R9, 0 args, -1 rets)
  0186  GETTABUP  R9 = _ENV[K24('Log')]
  0187  GETTABLE  R9 = R9[K25('Info')]
  0188  LOADK     R10 = K38 '链式礼包补单，第二选择: 当前step与购买项正好相等的情况'
  0189  CALL      R9 = call(R9, 0 args, 1 rets)
  0190  LOADBOOL  R9 = true
  0191  MOVE      R10 = R0
  0192  LOADBOOL  R11 = true
  0193  RETURN    return R9..R8
  0194  LOADBOOL  R9 = false
  0195  RETURN    return R9..R8
  0196  EQ        if R1 eq K4(nil)   -> -127542
  0197  JMP       (jump)   -> 234
  0198  EQ        if R1 eq K4(nil)   -> -127028
  0199  JMP       (jump)   -> 234
  0200  SELF      R9 = R0[K35('_GetRecordPurchaseRewards')] (self)
  0201  MOVE      R10 = R0
  0202  LOADBOOL  R11 = true
  0203  SELF      R13 = R6[K39('GetStep')] (self)
  0204  CALL      R12 = call(R12, -1 args, 1 rets)
  0205  CALL      R8 = call(R8, 1 args, -1 rets)
  0206  GETTABUP  R9 = _ENV[K19('GM')]
  0207  GETTABLE  R9 = R9[K20('BundleManager')]
  0208  SELF      R10 = R9[K21('CheckNeedGiveGems')] (self)
  0209  MOVE      R11 = R0
  0210  CALL      R9 = call(R9, 1 args, 2 rets)
  0211  TEST      if not R9 then   -> -130858
  0212  JMP       (jump)   -> 234
  0213  SELF      R10 = R0[K22('_AcquireRecoverRewards')] (self)
  0214  MOVE      R11 = R0
  0215  MOVE      R12 = R0
  0216  SELF      R14 = R7[K37('GetBundleUIType')] (self)
  0217  CALL      R13 = call(R13, -1 args, 1 rets)
  0218  CALL      R9 = call(R9, 0 args, -1 rets)
  0219  GETTABUP  R9 = _ENV[K24('Log')]
  0220  GETTABLE  R9 = R9[K25('Info')]
  0221  LOADK     R10 = K40 '链式礼包补单，最终兜底就是任选一个相同支付项尝试补发'
  0222  CALL      R9 = call(R9, 0 args, 1 rets)
  0223  GETTABUP  R9 = _ENV[K30('EventDispatcher')]
  0224  GETTABLE  R9 = R9[K31('DispatchEvent')]
  0225  GETTABUP  R10 = _ENV[K32('EEventType')]
  0226  GETTABLE  R10 = R10[K33('BundleIAPRestoreSuccess')]
  0227  SELF      R12 = R7[K3('GetGroupId')] (self)
  0228  CALL      R11 = call(R11, -1 args, 1 rets)
  0229  CALL      R9 = call(R9, 0 args, -1 rets)
  0230  LOADBOOL  R9 = true
  0231  MOVE      R10 = R0
  0232  LOADBOOL  R11 = false
  0233  RETURN    return R9..R8
  0234  LOADBOOL  R8 = false
  0235  RETURN    return R8..R7
  0236  RETURN    return R0..R-1
; ---------- proto22 [_HasPaidThisRound] ----------
  ; fn ?  line 403-405 np=2 va=0 ms=6 code=11 consts=4 upvals=1 protos=0
  ;   K[0]='_GetBundleDBData'
  ;   K[1]='GetGroupId'
  ;   K[2]='HasPaidThisRound'
  ;   K[3]='1'
  ;   upvals: DBKey
  ;   locals: self(0-11), dataGroup(0-11)
  0000  SELF      R3 = R0[K0('_GetBundleDBData')] (self)
  0001  SELF      R5 = R1[K1('GetGroupId')] (self)
  0002  CALL      R4 = call(R4, 1 args, 1 rets)
  0003  GETTABUP  R5 = DBKey[K2('HasPaidThisRound')]
  0004  CALL      R2 = call(R2, 1 args, 3 rets)
  0005  EQ        if R1 eq K3('1')   -> -129782
  0006  JMP       (jump)   -> 8
  0007  LOADBOOL  R2 = false
  0008  LOADBOOL  R2 = true
  0009  RETURN    return R2..R1
  0010  RETURN    return R0..R-1
; ---------- proto23 [_SetPaidThisRound] ----------
  ; fn ?  line 407-414 np=3 va=0 ms=9 code=15 consts=5 upvals=1 protos=0
  ;   K[0]='GetGroupId'
  ;   K[1]='_RemoveBundleDBData'
  ;   K[2]='HasPaidThisRound'
  ;   K[3]='_SetBundleDBData'
  ;   K[4]='1'
  ;   upvals: DBKey
  ;   locals: self(0-15), dataGroup(0-15), paid(0-15), groupId(2-15)
  0000  SELF      R4 = R1[K0('GetGroupId')] (self)
  0001  CALL      R3 = call(R3, 1 args, 1 rets)
  0002  TEST      if not R2 then   -> -131067
  0003  JMP       (jump)   -> 9
  0004  SELF      R5 = R0[K1('_RemoveBundleDBData')] (self)
  0005  MOVE      R6 = R0
  0006  GETTABUP  R7 = DBKey[K2('HasPaidThisRound')]
  0007  CALL      R4 = call(R4, 0 args, 3 rets)
  0008  JMP       (jump)   -> 14
  0009  SELF      R5 = R0[K3('_SetBundleDBData')] (self)
  0010  MOVE      R6 = R0
  0011  GETTABUP  R7 = DBKey[K2('HasPaidThisRound')]
  0012  LOADK     R8 = K4 '1'
  0013  CALL      R4 = call(R4, 0 args, 4 rets)
  0014  RETURN    return R0..R-1
; ---------- proto24 [_Set2NextStep] ----------
  ; fn ?  line 416-425 np=2 va=0 ms=7 code=17 consts=4 upvals=0 protos=0
  ;   K[0]=nil
  ;   K[1]='_GetCurChainStep'
  ;   K[2]=1
  ;   K[3]='_SetStep'
  ;   locals: self(0-17), dataGroup(0-17), curStep(10-17)
  0000  EQ        if R0 eq K0(nil)   -> -130302
  0001  JMP       (jump)   -> 4
  0002  LOADBOOL  R2 = false
  0003  RETURN    return R2..R1
  0004  SELF      R3 = R0[K1('_GetCurChainStep')] (self)
  0005  MOVE      R4 = R0
  0006  CALL      R2 = call(R2, 1 args, 2 rets)
  0007  TEST      if not R2 then   -> -131062
  0008  JMP       (jump)   -> 10
  0009  LOADK     R2 = K2 1
  0010  SELF      R4 = R0[K3('_SetStep')] (self)
  0011  MOVE      R5 = R0
  0012  ADD       R6 = K2(1) add R2
  0013  CALL      R3 = call(R3, 0 args, 3 rets)
  0014  LOADBOOL  R3 = true
  0015  RETURN    return R3..R2
  0016  RETURN    return R0..R-1
; ---------- proto25 [_SetStep] ----------
  ; fn ?  line 427-429 np=3 va=0 ms=9 code=9 consts=4 upvals=2 protos=0
  ;   K[0]='_SetBundleDBData'
  ;   K[1]='GetGroupId'
  ;   K[2]='CurIndex'
  ;   K[3]='tostring'
  ;   upvals: DBKey, _ENV
  ;   locals: self(0-9), dataGroup(0-9), step(0-9)
  0000  SELF      R4 = R0[K0('_SetBundleDBData')] (self)
  0001  SELF      R6 = R1[K1('GetGroupId')] (self)
  0002  CALL      R5 = call(R5, 1 args, 1 rets)
  0003  GETTABUP  R6 = DBKey[K2('CurIndex')]
  0004  GETTABUP  R7 = _ENV[K3('tostring')]
  0005  MOVE      R8 = R0
  0006  CALL      R7 = call(R7, -1 args, 1 rets)
  0007  CALL      R3 = call(R3, 0 args, -1 rets)
  0008  RETURN    return R0..R-1
; ---------- proto26 [GetCurChainStep] ----------
  ; fn ?  line 431-433 np=2 va=0 ms=5 code=8 consts=2 upvals=0 protos=0
  ;   K[0]='_GetCurChainStep'
  ;   K[1]=1
  ;   locals: self(0-8), dataGroup(0-8)
  0000  SELF      R3 = R0[K0('_GetCurChainStep')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  TEST      if not R2 then   -> -131066
  0004  JMP       (jump)   -> 6
  0005  LOADK     R2 = K1 1
  0006  RETURN    return R2..R1
  0007  RETURN    return R0..R-1
; ---------- proto27 [_GetCurChainStep] ----------
  ; fn ?  line 435-437 np=2 va=0 ms=7 code=9 consts=4 upvals=2 protos=0
  ;   K[0]='tonumber'
  ;   K[1]='_GetBundleDBData'
  ;   K[2]='GetGroupId'
  ;   K[3]='CurIndex'
  ;   upvals: _ENV, DBKey
  ;   locals: self(0-9), dataGroup(0-9)
  0000  GETTABUP  R2 = _ENV[K0('tonumber')]
  0001  SELF      R4 = R0[K1('_GetBundleDBData')] (self)
  0002  SELF      R6 = R1[K2('GetGroupId')] (self)
  0003  CALL      R5 = call(R5, 1 args, 1 rets)
  0004  GETTABUP  R6 = DBKey[K3('CurIndex')]
  0005  CALL      R3 = call(R3, -1 args, 3 rets)
  0006  TAILCALL  tailcall(R2, 0)
  0007  RETURN    return R2..R1
  0008  RETURN    return R0..R-1
; ---------- proto28 [GetTitleText] ----------
  ; fn ?  line 441-445 np=2 va=0 ms=5 code=7 consts=3 upvals=1 protos=0
  ;   K[0]='GetBundleUIType'
  ;   K[1]='BundleUIType'
  ;   K[2]='titleText'
  ;   upvals: _ENV
  ;   locals: self(0-7), dataGroup(0-7), uiCode(2-7), uiDefinition(4-7)
  0000  SELF      R3 = R1[K0('GetBundleUIType')] (self)
  0001  CALL      R2 = call(R2, 1 args, 1 rets)
  0002  GETTABUP  R3 = _ENV[K1('BundleUIType')]
  0003  GETTABLE  R3 = R3[R2]
  0004  GETTABLE  R4 = R3[K2('titleText')]
  0005  RETURN    return R4..R3
  0006  RETURN    return R0..R-1
