# Model_Bundle_BundleOnePlusNModel_131.luac
; fn @BundleOnePlusNModel.lua  line 0-0 np=0 va=1 ms=4 code=57 consts=22 upvals=1 protos=15
;   K[0]='BundleOnePlusNModel'
;   K[1]='setmetatable'
;   K[2]='BundleChainModel'
;   K[3]='__index'
;   K[4]='ClaimedIndexes'
;   K[5]='clmd_i'
;   K[6]='_LoadLocalConfigs'
;   K[7]='GetNCount'
;   K[8]='_IsGroupDataEligible'
;   K[9]='BuyBundle'
;   K[10]='_OnBuyFinished'
;   K[11]='_OnRestoreIAPRewards'
;   K[12]='_OnBundleTriggered'
;   K[13]='_RemoveLocalConfig'
;   K[14]='_GetRecordPurchaseRewards'
;   K[15]='TryRecoverFreeRewards'
;   K[16]=','
;   K[17]='_ClaimIndex'
;   K[18]='_GetClaimedIndexes'
;   K[19]='_ClearClaim'
;   K[20]='IsIndexClaimed'
;   K[21]='GetTitleText'
;   upvals: _ENV
;   locals: DBKey(10-57), CLAIM_INDEX_SEPARATOR(41-57)
0000  GETTABUP  R0 = _ENV[K1('setmetatable')]
0001  NEWTABLE  R1 = {} (0 items)
0002  GETTABUP  R2 = _ENV[K2('BundleChainModel')]
0003  CALL      R0 = call(R0, 1 args, 2 rets)
0004  SETTABUP  _ENV[K0('BundleOnePlusNModel')] = R0
0005  GETTABUP  R0 = _ENV[K0('BundleOnePlusNModel')]
0006  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0007  SETTABLE  R0[K3('__index')] = R1
0008  NEWTABLE  R0 = {} (0 items)
0009  SETTABLE  R0[K4('ClaimedIndexes')] = K5('clmd_i')
0010  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0011  CLOSURE   R2 = closure proto0
0012  SETTABLE  R1[K6('_LoadLocalConfigs')] = R2
0013  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0014  CLOSURE   R2 = closure proto1
0015  SETTABLE  R1[K7('GetNCount')] = R2
0016  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0017  CLOSURE   R2 = closure proto2
0018  SETTABLE  R1[K8('_IsGroupDataEligible')] = R2
0019  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0020  CLOSURE   R2 = closure proto3
0021  SETTABLE  R1[K9('BuyBundle')] = R2
0022  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0023  CLOSURE   R2 = closure proto4
0024  SETTABLE  R1[K10('_OnBuyFinished')] = R2
0025  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0026  CLOSURE   R2 = closure proto5
0027  SETTABLE  R1[K11('_OnRestoreIAPRewards')] = R2
0028  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0029  CLOSURE   R2 = closure proto6
0030  SETTABLE  R1[K12('_OnBundleTriggered')] = R2
0031  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0032  CLOSURE   R2 = closure proto7
0033  SETTABLE  R1[K13('_RemoveLocalConfig')] = R2
0034  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0035  CLOSURE   R2 = closure proto8
0036  SETTABLE  R1[K14('_GetRecordPurchaseRewards')] = R2
0037  GETTABUP  R1 = _ENV[K0('BundleOnePlusNModel')]
0038  CLOSURE   R2 = closure proto9
0039  SETTABLE  R1[K15('TryRecoverFreeRewards')] = R2
0040  LOADK     R1 = K16 ','
0041  GETTABUP  R2 = _ENV[K0('BundleOnePlusNModel')]
0042  CLOSURE   R3 = closure proto10
0043  SETTABLE  R2[K17('_ClaimIndex')] = R3
0044  GETTABUP  R2 = _ENV[K0('BundleOnePlusNModel')]
0045  CLOSURE   R3 = closure proto11
0046  SETTABLE  R2[K18('_GetClaimedIndexes')] = R3
0047  GETTABUP  R2 = _ENV[K0('BundleOnePlusNModel')]
0048  CLOSURE   R3 = closure proto12
0049  SETTABLE  R2[K19('_ClearClaim')] = R3
0050  GETTABUP  R2 = _ENV[K0('BundleOnePlusNModel')]
0051  CLOSURE   R3 = closure proto13
0052  SETTABLE  R2[K20('IsIndexClaimed')] = R3
0053  GETTABUP  R2 = _ENV[K0('BundleOnePlusNModel')]
0054  CLOSURE   R3 = closure proto14
0055  SETTABLE  R2[K21('GetTitleText')] = R3
0056  RETURN    return R0..R-1
; ---------- proto0 [_LoadLocalConfigs] ----------
  ; fn ?  line 15-37 np=1 va=1 ms=16 code=59 consts=17 upvals=1 protos=0
  ;   K[0]='BundleChainModel'
  ;   K[1]='_LoadLocalConfigs'
  ;   K[2]='ipairs'
  ;   K[3]='m_dataGroups'
  ;   K[4]=1
  ;   K[5]='GetBundleIds'
  ;   K[6]='GetConfigDataByIndex'
  ;   K[7]='Log'
  ;   K[8]='Assert'
  ;   K[9]='IsFree'
  ;   K[10]='1+N礼包 '
  ;   K[11]='GetBundleId'
  ;   K[12]=' 第一项必须为付费！'
  ;   K[13]=' 非第一项必须为免费！'
  ;   K[14]='IsCircle'
  ;   K[15]='Error'
  ;   K[16]='1+N礼包禁止配置循环！'
  ;   upvals: _ENV
  ;   locals: self(0-59), data(6-59), (for generator)(9-58), (for state)(9-58), (for control)(9-58), _(10-56), dataGroup(10-56), (for index)(15-56), (for limit)(15-56), (for step)(15-56), index(16-55)
  0000  GETTABUP  R1 = _ENV[K0('BundleChainModel')]
  0001  GETTABLE  R1 = R1[K1('_LoadLocalConfigs')]
  0002  MOVE      R2 = R0
  0003  VARARG    R3 = vararg(0)
  0004  CALL      R1 = call(R1, 0 args, -1 rets)
  0005  LOADNIL   R1..R1 = nil
  0006  GETTABUP  R2 = _ENV[K2('ipairs')]
  0007  GETTABLE  R3 = R0[K3('m_dataGroups')]
  0008  CALL      R2 = call(R2, 3 args, 1 rets)
  0009  JMP       (jump)   -> 56
  0010  LOADK     R7 = K4 1
  0011  SELF      R9 = R6[K5('GetBundleIds')] (self)
  0012  CALL      R8 = call(R8, 1 args, 1 rets)
  0013  LEN       R8 = len R0
  0014  LOADK     R9 = K4 1
  0015  FORPREP   forprep R7(sBx=39)   -> 55
  0016  SELF      R12 = R6[K6('GetConfigDataByIndex')] (self)
  0017  MOVE      R13 = R0
  0018  CALL      R11 = call(R11, 1 args, 2 rets)
  0019  MOVE      R1 = R0
  0020  EQ        if R0 eq K4(1)   -> -125670
  0021  JMP       (jump)   -> 34
  0022  GETTABUP  R11 = _ENV[K7('Log')]
  0023  GETTABLE  R11 = R11[K8('Assert')]
  0024  SELF      R13 = R1[K9('IsFree')] (self)
  0025  CALL      R12 = call(R12, 1 args, 1 rets)
  0026  NOT       R12 = not R0
  0027  LOADK     R13 = K10 '1+N礼包 '
  0028  SELF      R15 = R1[K11('GetBundleId')] (self)
  0029  CALL      R14 = call(R14, 1 args, 1 rets)
  0030  LOADK     R15 = K12 ' 第一项必须为付费！'
  0031  CONCAT    R13 = concat(R13..R13)
  0032  CALL      R11 = call(R11, 0 args, 2 rets)
  0033  JMP       (jump)   -> 44
  0034  GETTABUP  R11 = _ENV[K7('Log')]
  0035  GETTABLE  R11 = R11[K8('Assert')]
  0036  SELF      R13 = R1[K9('IsFree')] (self)
  0037  CALL      R12 = call(R12, 1 args, 1 rets)
  0038  LOADK     R13 = K10 '1+N礼包 '
  0039  SELF      R15 = R1[K11('GetBundleId')] (self)
  0040  CALL      R14 = call(R14, 1 args, 1 rets)
  0041  LOADK     R15 = K13 ' 非第一项必须为免费！'
  0042  CONCAT    R13 = concat(R13..R13)
  0043  CALL      R11 = call(R11, 0 args, 2 rets)
  0044  SELF      R12 = R1[K14('IsCircle')] (self)
  0045  CALL      R11 = call(R11, 1 args, 1 rets)
  0046  TEST      if not R11 then   -> -131024
  0047  JMP       (jump)   -> 55
  0048  GETTABUP  R11 = _ENV[K7('Log')]
  0049  GETTABLE  R11 = R11[K15('Error')]
  0050  LOADK     R12 = K16 '1+N礼包禁止配置循环！'
  0051  SELF      R14 = R1[K11('GetBundleId')] (self)
  0052  CALL      R13 = call(R13, 1 args, 1 rets)
  0053  CONCAT    R12 = concat(R12..R12)
  0054  CALL      R11 = call(R11, 0 args, 1 rets)
  0055  FORLOOP   forloop R7(sBx=-40)   -> 16
  0056  TFORCALL  tforcall R2
  0057  TFORLOOP  tforloop R4(sBx=-48)   -> 10
  0058  RETURN    return R0..R-1
; ---------- proto1 [GetNCount] ----------
  ; fn ?  line 40-46 np=2 va=0 ms=4 code=14 consts=5 upvals=1 protos=0
  ;   K[0]='Log'
  ;   K[1]='Error'
  ;   K[2]='礼包逻辑错误'
  ;   K[3]=1
  ;   K[4]='GetBundleIds'
  ;   upvals: _ENV
  ;   locals: self(0-14), dataGroup(0-14)
  0000  TEST      if not R1 then   -> -131069
  0001  JMP       (jump)   -> 8
  0002  GETTABUP  R2 = _ENV[K0('Log')]
  0003  GETTABLE  R2 = R2[K1('Error')]
  0004  LOADK     R3 = K2 '礼包逻辑错误'
  0005  CALL      R2 = call(R2, 0 args, 1 rets)
  0006  LOADK     R2 = K3 1
  0007  RETURN    return R2..R1
  0008  SELF      R3 = R1[K4('GetBundleIds')] (self)
  0009  CALL      R2 = call(R2, 1 args, 1 rets)
  0010  LEN       R2 = len R0
  0011  SUB       R2 = K3(1) sub R2
  0012  RETURN    return R2..R1
  0013  RETURN    return R0..R-1
; ---------- proto2 [_IsGroupDataEligible] ----------
  ; fn ?  line 48-64 np=2 va=0 ms=12 code=34 consts=8 upvals=1 protos=0
  ;   K[0]='GetRestDuration'
  ;   K[1]=0
  ;   K[2]='ipairs'
  ;   K[3]='GetBundleIds'
  ;   K[4]='GetConfigDataIndexByBundleId'
  ;   K[5]='IsIndexClaimed'
  ;   K[6]='BundleChainModel'
  ;   K[7]='_IsGroupDataEligible'
  ;   upvals: _ENV
  ;   locals: self(0-34), dataGroup(0-34), (for generator)(13-27), (for state)(13-27), (for control)(13-27), _(14-25), bundleId(14-25), index(17-25)
  0000  TEST      if not R1 then   -> -131069
  0001  JMP       (jump)   -> 4
  0002  LOADBOOL  R2 = false
  0003  RETURN    return R2..R1
  0004  SELF      R3 = R0[K0('GetRestDuration')] (self)
  0005  MOVE      R4 = R0
  0006  CALL      R2 = call(R2, 1 args, 2 rets)
  0007  LE        if R0 le R2   -> 523
  0008  JMP       (jump)   -> 27
  0009  GETTABUP  R2 = _ENV[K2('ipairs')]
  0010  SELF      R4 = R1[K3('GetBundleIds')] (self)
  0011  CALL      R3 = call(R3, -1 args, 1 rets)
  0012  CALL      R2 = call(R2, 3 args, -1 rets)
  0013  JMP       (jump)   -> 25
  0014  SELF      R8 = R1[K4('GetConfigDataIndexByBundleId')] (self)
  0015  MOVE      R9 = R0
  0016  CALL      R7 = call(R7, 1 args, 2 rets)
  0017  SELF      R9 = R0[K5('IsIndexClaimed')] (self)
  0018  MOVE      R10 = R0
  0019  MOVE      R11 = R0
  0020  CALL      R8 = call(R8, 1 args, 3 rets)
  0021  TEST      if not R8 then   -> -131048
  0022  JMP       (jump)   -> 25
  0023  LOADBOOL  R8 = true
  0024  RETURN    return R8..R7
  0025  TFORCALL  tforcall R2
  0026  TFORLOOP  tforloop R4(sBx=-13)   -> 14
  0027  GETTABUP  R2 = _ENV[K6('BundleChainModel')]
  0028  GETTABLE  R2 = R2[K7('_IsGroupDataEligible')]
  0029  MOVE      R3 = R0
  0030  MOVE      R4 = R0
  0031  TAILCALL  tailcall(R2, 0)
  0032  RETURN    return R2..R1
  0033  RETURN    return R0..R-1
; ---------- proto3 [BuyBundle] ----------
  ; fn ?  line 67-70 np=4 va=0 ms=10 code=9 consts=2 upvals=0 protos=0
  ;   K[0]='GetConfigDataByIndex'
  ;   K[1]='_BuyBundle'
  ;   locals: self(0-9), dataGroup(0-9), index(0-9), callback(0-9), bundleData(3-9)
  0000  SELF      R5 = R1[K0('GetConfigDataByIndex')] (self)
  0001  MOVE      R6 = R0
  0002  CALL      R4 = call(R4, 1 args, 2 rets)
  0003  SELF      R6 = R0[K1('_BuyBundle')] (self)
  0004  MOVE      R7 = R0
  0005  MOVE      R8 = R0
  0006  MOVE      R9 = R0
  0007  CALL      R5 = call(R5, 0 args, 4 rets)
  0008  RETURN    return R0..R-1
; ---------- proto4 [_OnBuyFinished] ----------
  ; fn ?  line 72-89 np=3 va=0 ms=8 code=29 consts=9 upvals=0 protos=0
  ;   K[0]='GetConfigDataIndexByBundleId'
  ;   K[1]=0
  ;   K[2]='_ClaimIndex'
  ;   K[3]='GetCurChainStep'
  ;   K[4]=2
  ;   K[5]='_RecordBuyNumData'
  ;   K[6]='HasPurchaseFinished'
  ;   K[7]='OnBundleStateChanged'
  ;   K[8]='_FinishAndEnterBuyCD'
  ;   locals: self(0-29), dataGroup(0-29), bundleId(0-29), index(3-29)
  0000  SELF      R4 = R1[K0('GetConfigDataIndexByBundleId')] (self)
  0001  MOVE      R5 = R0
  0002  CALL      R3 = call(R3, 1 args, 2 rets)
  0003  LT        if R0 lt R3   -> 520
  0004  JMP       (jump)   -> 9
  0005  SELF      R5 = R0[K2('_ClaimIndex')] (self)
  0006  MOVE      R6 = R0
  0007  MOVE      R7 = R0
  0008  CALL      R4 = call(R4, 0 args, 3 rets)
  0009  SELF      R5 = R0[K3('GetCurChainStep')] (self)
  0010  MOVE      R6 = R0
  0011  CALL      R4 = call(R4, 1 args, 2 rets)
  0012  EQ        if R0 eq K4(2)   -> -128750
  0013  JMP       (jump)   -> 17
  0014  SELF      R5 = R0[K5('_RecordBuyNumData')] (self)
  0015  MOVE      R6 = R0
  0016  CALL      R4 = call(R4, 0 args, 2 rets)
  0017  SELF      R5 = R0[K6('HasPurchaseFinished')] (self)
  0018  MOVE      R6 = R0
  0019  CALL      R4 = call(R4, 1 args, 2 rets)
  0020  TEST      if not R4 then   -> -131050
  0021  JMP       (jump)   -> 28
  0022  SELF      R5 = R0[K7('OnBundleStateChanged')] (self)
  0023  MOVE      R6 = R0
  0024  CALL      R4 = call(R4, 0 args, 2 rets)
  0025  SELF      R5 = R0[K8('_FinishAndEnterBuyCD')] (self)
  0026  MOVE      R6 = R0
  0027  CALL      R4 = call(R4, 0 args, 2 rets)
  0028  RETURN    return R0..R-1
; ---------- proto5 [_OnRestoreIAPRewards] ----------
  ; fn ?  line 91-105 np=2 va=0 ms=15 code=40 consts=10 upvals=1 protos=0
  ;   K[0]='BundleChainModel'
  ;   K[1]='_OnRestoreIAPRewards'
  ;   K[2]='_ClaimIndex'
  ;   K[3]=1
  ;   K[4]='GetCurChainStep'
  ;   K[5]='Log'
  ;   K[6]='Info'
  ;   K[7]='1+N礼包补单 step:'
  ;   K[8]=2
  ;   K[9]='GetBundleIds'
  ;   upvals: _ENV
  ;   locals: self(0-40), eIAPType(0-40), success(5-40), dataGroup(5-40), samePayId(5-40), step(18-38), bundleCount(29-38), (for index)(32-38), (for limit)(32-38), (for step)(32-38), index(33-37)
  0000  GETTABUP  R2 = _ENV[K0('BundleChainModel')]
  0001  GETTABLE  R2 = R2[K1('_OnRestoreIAPRewards')]
  0002  MOVE      R3 = R0
  0003  MOVE      R4 = R0
  0004  CALL      R2 = call(R2, 3 args, 2 rets)
  0005  TEST      if not R2 then   -> -131065
  0006  JMP       (jump)   -> 38
  0007  TEST      if not R3 then   -> -131063
  0008  JMP       (jump)   -> 38
  0009  TEST      if not R4 then   -> -131061
  0010  JMP       (jump)   -> 38
  0011  SELF      R6 = R0[K2('_ClaimIndex')] (self)
  0012  MOVE      R7 = R0
  0013  LOADK     R8 = K3 1
  0014  CALL      R5 = call(R5, 0 args, 3 rets)
  0015  SELF      R6 = R0[K4('GetCurChainStep')] (self)
  0016  MOVE      R7 = R0
  0017  CALL      R5 = call(R5, 1 args, 2 rets)
  0018  GETTABUP  R6 = _ENV[K5('Log')]
  0019  GETTABLE  R6 = R6[K6('Info')]
  0020  LOADK     R7 = K7 '1+N礼包补单 step:'
  0021  MOVE      R8 = R0
  0022  CONCAT    R7 = concat(R7..R7)
  0023  CALL      R6 = call(R6, 0 args, 1 rets)
  0024  LT        if R0 lt R5   -> 4127
  0025  JMP       (jump)   -> 38
  0026  SELF      R7 = R3[K9('GetBundleIds')] (self)
  0027  CALL      R6 = call(R6, 1 args, 1 rets)
  0028  LEN       R6 = len R0
  0029  LOADK     R7 = K8 2
  0030  MOVE      R8 = R0
  0031  LOADK     R9 = K3 1
  0032  FORPREP   forprep R7(sBx=4)   -> 37
  0033  SELF      R12 = R0[K2('_ClaimIndex')] (self)
  0034  MOVE      R13 = R0
  0035  MOVE      R14 = R0
  0036  CALL      R11 = call(R11, 0 args, 3 rets)
  0037  FORLOOP   forloop R7(sBx=-5)   -> 33
  0038  RETURN    return R2..R1
  0039  RETURN    return R0..R-1
; ---------- proto6 [_OnBundleTriggered] ----------
  ; fn ?  line 107-110 np=2 va=0 ms=5 code=9 consts=3 upvals=1 protos=0
  ;   K[0]='BundleChainModel'
  ;   K[1]='_OnBundleTriggered'
  ;   K[2]='_ClearClaim'
  ;   upvals: _ENV
  ;   locals: self(0-9), dataGroup(0-9)
  0000  GETTABUP  R2 = _ENV[K0('BundleChainModel')]
  0001  GETTABLE  R2 = R2[K1('_OnBundleTriggered')]
  0002  MOVE      R3 = R0
  0003  MOVE      R4 = R0
  0004  CALL      R2 = call(R2, 0 args, 2 rets)
  0005  SELF      R3 = R0[K2('_ClearClaim')] (self)
  0006  MOVE      R4 = R0
  0007  CALL      R2 = call(R2, 0 args, 2 rets)
  0008  RETURN    return R0..R-1
; ---------- proto7 [_RemoveLocalConfig] ----------
  ; fn ?  line 112-116 np=2 va=0 ms=6 code=10 consts=4 upvals=2 protos=0
  ;   K[0]='BundleChainModel'
  ;   K[1]='_RemoveLocalConfig'
  ;   K[2]='_RemoveBundleDBData'
  ;   K[3]='ClaimedIndexes'
  ;   upvals: _ENV, DBKey
  ;   locals: self(0-10), groupId(0-10)
  0000  GETTABUP  R2 = _ENV[K0('BundleChainModel')]
  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('ClaimedIndexes')]
  0008  CALL      R2 = call(R2, 0 args, 3 rets)
  0009  RETURN    return R0..R-1
; ---------- proto8 [_GetRecordPurchaseRewards] ----------
  ; fn ?  line 121-139 np=4 va=0 ms=17 code=34 consts=8 upvals=1 protos=0
  ;   K[0]='_GetClaimedIndexes'
  ;   K[1]='GetBundleIds'
  ;   K[2]=1
  ;   K[3]=2
  ;   K[4]='GetConfigDataByIndex'
  ;   K[5]='Table'
  ;   K[6]='ListAppend'
  ;   K[7]='GetGoods'
  ;   upvals: _ENV
  ;   locals: self(0-34), dataGroup(0-34), bIAPBefore(0-34), step(0-34), rewards(1-34), mapClaimedIndexes(4-34), bundleCount(7-34), startIndex(8-34), (for index)(16-30), (for limit)(16-30), (for step)(16-30), index(17-29), data(20-29)
  0000  NEWTABLE  R4 = {} (0 items)
  0001  SELF      R6 = R0[K0('_GetClaimedIndexes')] (self)
  0002  MOVE      R7 = R0
  0003  CALL      R5 = call(R5, 1 args, 2 rets)
  0004  SELF      R7 = R1[K1('GetBundleIds')] (self)
  0005  CALL      R6 = call(R6, 1 args, 1 rets)
  0006  LEN       R6 = len R0
  0007  LOADK     R7 = K2 1
  0008  TEST      if not R3 then   -> -131062
  0009  JMP       (jump)   -> 13
  0010  LE        if R0 le R3   -> 1551
  0011  JMP       (jump)   -> 13
  0012  LOADK     R7 = K3 2
  0013  MOVE      R8 = R0
  0014  MOVE      R9 = R0
  0015  LOADK     R10 = K2 1
  0016  FORPREP   forprep R8(sBx=12)   -> 29
  0017  SELF      R13 = R1[K4('GetConfigDataByIndex')] (self)
  0018  MOVE      R14 = R0
  0019  CALL      R12 = call(R12, 1 args, 2 rets)
  0020  GETTABLE  R13 = R5[R11]
  0021  TEST      if not R13 then   -> -131048
  0022  JMP       (jump)   -> 29
  0023  GETTABUP  R13 = _ENV[K5('Table')]
  0024  GETTABLE  R13 = R13[K6('ListAppend')]
  0025  MOVE      R14 = R0
  0026  SELF      R16 = R12[K7('GetGoods')] (self)
  0027  CALL      R15 = call(R15, -1 args, 1 rets)
  0028  CALL      R13 = call(R13, 0 args, -1 rets)
  0029  FORLOOP   forloop R8(sBx=-13)   -> 17
  0030  MOVE      R8 = R0
  0031  ADD       R9 = K2(1) add R6
  0032  RETURN    return R8..R7
  0033  RETURN    return R0..R-1
; ---------- proto9 [TryRecoverFreeRewards] ----------
  ; fn ?  line 141-148 np=3 va=0 ms=12 code=21 consts=5 upvals=1 protos=0
  ;   K[0]='BundleChainModel'
  ;   K[1]='TryRecoverFreeRewards'
  ;   K[2]='GetBundleIds'
  ;   K[3]=1
  ;   K[4]='_ClaimIndex'
  ;   upvals: _ENV
  ;   locals: self(0-21), dataGroup(0-21), bImmediately(0-21), bundleCount(11-20), (for index)(14-20), (for limit)(14-20), (for step)(14-20), index(15-19)
  0000  GETTABUP  R3 = _ENV[K0('BundleChainModel')]
  0001  GETTABLE  R3 = R3[K1('TryRecoverFreeRewards')]
  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)   -> 20
  0008  SELF      R4 = R1[K2('GetBundleIds')] (self)
  0009  CALL      R3 = call(R3, 1 args, 1 rets)
  0010  LEN       R3 = len R0
  0011  LOADK     R4 = K3 1
  0012  MOVE      R5 = R0
  0013  LOADK     R6 = K3 1
  0014  FORPREP   forprep R4(sBx=4)   -> 19
  0015  SELF      R9 = R0[K4('_ClaimIndex')] (self)
  0016  MOVE      R10 = R0
  0017  MOVE      R11 = R0
  0018  CALL      R8 = call(R8, 0 args, 3 rets)
  0019  FORLOOP   forloop R4(sBx=-5)   -> 15
  0020  RETURN    return R0..R-1
; ---------- proto10 [_ClaimIndex] ----------
  ; fn ?  line 151-158 np=3 va=0 ms=11 code=24 consts=10 upvals=3 protos=0
  ;   K[0]='_GetClaimedIndexes'
  ;   K[1]=true
  ;   K[2]='Table'
  ;   K[3]='GetKeys'
  ;   K[4]='table'
  ;   K[5]='sort'
  ;   K[6]='concat'
  ;   K[7]='_SetBundleDBData'
  ;   K[8]='GetGroupId'
  ;   K[9]='ClaimedIndexes'
  ;   upvals: _ENV, CLAIM_INDEX_SEPARATOR, DBKey
  ;   locals: self(0-24), dataGroup(0-24), index(0-24), mapClaimedIndexes(3-24), arr(8-24), str(17-24)
  0000  SELF      R4 = R0[K0('_GetClaimedIndexes')] (self)
  0001  MOVE      R5 = R0
  0002  CALL      R3 = call(R3, 1 args, 2 rets)
  0003  SETTABLE  R3[R2] = K1(true)
  0004  GETTABUP  R4 = _ENV[K2('Table')]
  0005  GETTABLE  R4 = R4[K3('GetKeys')]
  0006  MOVE      R5 = R0
  0007  CALL      R4 = call(R4, 1 args, 1 rets)
  0008  GETTABUP  R5 = _ENV[K4('table')]
  0009  GETTABLE  R5 = R5[K5('sort')]
  0010  MOVE      R6 = R0
  0011  CALL      R5 = call(R5, 0 args, 1 rets)
  0012  GETTABUP  R5 = _ENV[K4('table')]
  0013  GETTABLE  R5 = R5[K6('concat')]
  0014  MOVE      R6 = R0
  0015  GETUPVAL  R7 = _ENV
  0016  CALL      R5 = call(R5, 1 args, 2 rets)
  0017  SELF      R7 = R0[K7('_SetBundleDBData')] (self)
  0018  SELF      R9 = R1[K8('GetGroupId')] (self)
  0019  CALL      R8 = call(R8, 1 args, 1 rets)
  0020  GETTABUP  R9 = DBKey[K9('ClaimedIndexes')]
  0021  MOVE      R10 = R0
  0022  CALL      R6 = call(R6, 0 args, 4 rets)
  0023  RETURN    return R0..R-1
; ---------- proto11 [_GetClaimedIndexes] ----------
  ; fn ?  line 160-168 np=2 va=0 ms=11 code=23 consts=8 upvals=3 protos=0
  ;   K[0]='_GetBundleDBData'
  ;   K[1]='GetGroupId'
  ;   K[2]='ClaimedIndexes'
  ;   K[3]=''
  ;   K[4]='StringUtil'
  ;   K[5]='SplitToNum'
  ;   K[6]='ipairs'
  ;   K[7]=true
  ;   upvals: DBKey, _ENV, CLAIM_INDEX_SEPARATOR
  ;   locals: self(0-23), dataGroup(0-23), str(8-23), arrIndexes(13-23), mapClaimedIndexes(14-23), (for generator)(17-21), (for state)(17-21), (for control)(17-21), _(18-19), index(18-19)
  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('ClaimedIndexes')]
  0004  CALL      R2 = call(R2, 1 args, 3 rets)
  0005  TEST      if not R2 then   -> -131064
  0006  JMP       (jump)   -> 8
  0007  LOADK     R2 = K3 ''
  0008  GETTABUP  R3 = _ENV[K4('StringUtil')]
  0009  GETTABLE  R3 = R3[K5('SplitToNum')]
  0010  MOVE      R4 = R0
  0011  GETUPVAL  R5 = DBKey
  0012  CALL      R3 = call(R3, 1 args, 2 rets)
  0013  NEWTABLE  R4 = {} (0 items)
  0014  GETTABUP  R5 = _ENV[K6('ipairs')]
  0015  MOVE      R6 = R0
  0016  CALL      R5 = call(R5, 3 args, 1 rets)
  0017  JMP       (jump)   -> 19
  0018  SETTABLE  R4[R9] = K7(true)
  0019  TFORCALL  tforcall R5
  0020  TFORLOOP  tforloop R7(sBx=-3)   -> 18
  0021  RETURN    return R4..R3
  0022  RETURN    return R0..R-1
; ---------- proto12 [_ClearClaim] ----------
  ; fn ?  line 170-172 np=2 va=0 ms=7 code=7 consts=4 upvals=1 protos=0
  ;   K[0]='_SetBundleDBData'
  ;   K[1]='GetGroupId'
  ;   K[2]='ClaimedIndexes'
  ;   K[3]=''
  ;   upvals: DBKey
  ;   locals: self(0-7), dataGroup(0-7)
  0000  SELF      R3 = R0[K0('_SetBundleDBData')] (self)
  0001  SELF      R5 = R1[K1('GetGroupId')] (self)
  0002  CALL      R4 = call(R4, 1 args, 1 rets)
  0003  GETTABUP  R5 = DBKey[K2('ClaimedIndexes')]
  0004  LOADK     R6 = K3 ''
  0005  CALL      R2 = call(R2, 0 args, 4 rets)
  0006  RETURN    return R0..R-1
; ---------- proto13 [IsIndexClaimed] ----------
  ; fn ?  line 174-177 np=3 va=0 ms=6 code=10 consts=2 upvals=0 protos=0
  ;   K[0]='_GetClaimedIndexes'
  ;   K[1]=true
  ;   locals: self(0-10), dataGroup(0-10), index(0-10), mapClaimedIndexes(3-10)
  0000  SELF      R4 = R0[K0('_GetClaimedIndexes')] (self)
  0001  MOVE      R5 = R0
  0002  CALL      R3 = call(R3, 1 args, 2 rets)
  0003  GETTABLE  R4 = R3[R2]
  0004  EQ        if R1 eq K1(true)   -> -128761
  0005  JMP       (jump)   -> 7
  0006  LOADBOOL  R4 = false
  0007  LOADBOOL  R4 = true
  0008  RETURN    return R4..R3
  0009  RETURN    return R0..R-1
; ---------- proto14 [GetTitleText] ----------
  ; fn ?  line 179-189 np=2 va=0 ms=9 code=18 consts=6 upvals=1 protos=0
  ;   K[0]='GetBundleUIType'
  ;   K[1]='BundleUIType'
  ;   K[2]='titleText'
  ;   K[3]='exclusiveTitle'
  ;   K[4]='GetNCount'
  ;   K[5]='_'
  ;   upvals: _ENV
  ;   locals: self(0-18), dataGroup(0-18), uiCode(2-18), uiDefinition(4-18), titleTextKey(5-18), n(12-18)
  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  GETTABLE  R5 = R3[K3('exclusiveTitle')]
  0006  TEST      if not R5 then   -> -131063
  0007  JMP       (jump)   -> 9
  0008  RETURN    return R4..R3
  0009  SELF      R6 = R0[K4('GetNCount')] (self)
  0010  MOVE      R7 = R0
  0011  CALL      R5 = call(R5, 1 args, 2 rets)
  0012  MOVE      R6 = R0
  0013  LOADK     R7 = K5 '_'
  0014  MOVE      R8 = R0
  0015  CONCAT    R6 = concat(R6..R6)
  0016  RETURN    return R6..R5
  0017  RETURN    return R0..R-1
