# Model_Task_TaskManager_210.luac
; fn @TaskManager.lua  line 0-0 np=0 va=1 ms=4 code=198 consts=77 upvals=1 protos=60
;   K[0]='TaskManager'
;   K[1]='__index'
;   K[2]='OngoingTaskIds'
;   K[3]='OngoingChapterName'
;   K[4]='OngoingChapterId'
;   K[5]='TaskProgress'
;   K[6]='TaskCleanGold'
;   K[7]='CleanGoldCost'
;   K[8]='ChapterFinishWin'
;   K[9]='TASK_ID_SEPARATOR'
;   K[10]=';'
;   K[11]='#'
;   K[12]='TASK_CHAPTER_ID'
;   K[13]='ChapterId'
;   K[14]='TASK_COUNT'
;   K[15]='TaskCount'
;   K[16]='Init'
;   K[17]='GetMetaData'
;   K[18]='GetFinishedTaskData'
;   K[19]='OnLoadFileConfigFinished'
;   K[20]='_LoadOngoingData'
;   K[21]='_LoadData'
;   K[22]='_TryFixFinishRecord'
;   K[23]='FromSyncData'
;   K[24]='OnSyncDataFinished'
;   K[25]='LateInit'
;   K[26]='GetOngoingChapterName'
;   K[27]='GetOngoingChapterId'
;   K[28]='GetOngoingTasks'
;   K[29]='GetOngoingTask'
;   K[30]='GetOngoingTasksString'
;   K[31]='IsTaskFinished'
;   K[32]='IsOngoingTasksAllFinished'
;   K[33]='IsOngoingChapterProgressFinished'
;   K[34]='IsAllFinished'
;   K[35]='IsChapterFinished'
;   K[36]='GetChapterFinishedCount'
;   K[37]='IsChapterLocked'
;   K[38]='CanFinishOngoingTask'
;   K[39]='GetCurGoldCanFinishTaskCount'
;   K[40]='GetTaskCost'
;   K[41]='GetTaskRewards'
;   K[42]='GetExpRewardCount'
;   K[43]='GetOngoingChapterProgressCount'
;   K[44]='GetTaskProgress'
;   K[45]='GoFinishTask'
;   K[46]='TaskManager'
;   K[47]='OnTaskFinished'
;   K[48]='SaveSlotsChanges'
;   K[49]='GetTaskSlotsChanges'
;   K[50]='_CalculateTaskProgress'
;   K[51]='_SaveTaskProgress'
;   K[52]='IsVersionRevert'
;   K[53]='_SaveOngoingData'
;   K[54]='_BuildArrayDataString'
;   K[55]='GetCanBeTriggeredNewTasks'
;   K[56]='_TriggerNewTasks'
;   K[57]='TryStartNewTasks'
;   K[58]='TryStartNewChapter'
;   K[59]='IsLastChapter'
;   K[60]='SetAutoChangingChapter'
;   K[61]='IsAutoChangingChapter'
;   K[62]='GetOngoingGroupId'
;   K[63]='CanClaimProgressReward'
;   K[64]='TryClaimProgressReward'
;   K[65]='GetProgressRewardProgress'
;   K[66]='GetProgressReward'
;   K[67]='_GenerateCleanGoldCost'
;   K[68]='GetTaskCleanGoldCost'
;   K[69]='ConsumeTaskCleanGold'
;   K[70]='AddTaskCleanGold'
;   K[71]='GetCleanGoldCount'
;   K[72]='TryBalanceTaskCost'
;   K[73]='GetCurChapterRemainTaskCosts'
;   K[74]='HasPopedChapterFinishWin'
;   K[75]='SetPopedChapterFinishWin'
;   K[76]='GetCurChapterFinishedTaskRewards'
;   upvals: _ENV
;   locals: EMetaDBKey(13-198), CLEAN_COST_SEPARATOR(15-198)
0000  NEWTABLE  R0 = {} (0 items)
0001  SETTABUP  _ENV[K0('TaskManager')] = R0
0002  GETTABUP  R0 = _ENV[K0('TaskManager')]
0003  GETTABUP  R1 = _ENV[K0('TaskManager')]
0004  SETTABLE  R0[K1('__index')] = R1
0005  NEWTABLE  R0 = {} (0 items)
0006  SETTABLE  R0[K2('OngoingTaskIds')] = K2('OngoingTaskIds')
0007  SETTABLE  R0[K3('OngoingChapterName')] = K3('OngoingChapterName')
0008  SETTABLE  R0[K4('OngoingChapterId')] = K4('OngoingChapterId')
0009  SETTABLE  R0[K5('TaskProgress')] = K5('TaskProgress')
0010  SETTABLE  R0[K6('TaskCleanGold')] = K6('TaskCleanGold')
0011  SETTABLE  R0[K7('CleanGoldCost')] = K7('CleanGoldCost')
0012  SETTABLE  R0[K8('ChapterFinishWin')] = K8('ChapterFinishWin')
0013  SETTABUP  _ENV[K9('TASK_ID_SEPARATOR')] = K10(';')
0014  LOADK     R1 = K11 '#'
0015  SETTABUP  _ENV[K12('TASK_CHAPTER_ID')] = K13('ChapterId')
0016  SETTABUP  _ENV[K14('TASK_COUNT')] = K15('TaskCount')
0017  GETTABUP  R2 = _ENV[K0('TaskManager')]
0018  CLOSURE   R3 = closure proto0
0019  SETTABLE  R2[K16('Init')] = R3
0020  GETTABUP  R2 = _ENV[K0('TaskManager')]
0021  CLOSURE   R3 = closure proto1
0022  SETTABLE  R2[K17('GetMetaData')] = R3
0023  GETTABUP  R2 = _ENV[K0('TaskManager')]
0024  CLOSURE   R3 = closure proto2
0025  SETTABLE  R2[K18('GetFinishedTaskData')] = R3
0026  GETTABUP  R2 = _ENV[K0('TaskManager')]
0027  CLOSURE   R3 = closure proto3
0028  SETTABLE  R2[K19('OnLoadFileConfigFinished')] = R3
0029  GETTABUP  R2 = _ENV[K0('TaskManager')]
0030  CLOSURE   R3 = closure proto4
0031  SETTABLE  R2[K20('_LoadOngoingData')] = R3
0032  GETTABUP  R2 = _ENV[K0('TaskManager')]
0033  CLOSURE   R3 = closure proto5
0034  SETTABLE  R2[K21('_LoadData')] = R3
0035  GETTABUP  R2 = _ENV[K0('TaskManager')]
0036  CLOSURE   R3 = closure proto6
0037  SETTABLE  R2[K22('_TryFixFinishRecord')] = R3
0038  GETTABUP  R2 = _ENV[K0('TaskManager')]
0039  CLOSURE   R3 = closure proto7
0040  SETTABLE  R2[K23('FromSyncData')] = R3
0041  GETTABUP  R2 = _ENV[K0('TaskManager')]
0042  CLOSURE   R3 = closure proto8
0043  SETTABLE  R2[K24('OnSyncDataFinished')] = R3
0044  GETTABUP  R2 = _ENV[K0('TaskManager')]
0045  CLOSURE   R3 = closure proto9
0046  SETTABLE  R2[K25('LateInit')] = R3
0047  GETTABUP  R2 = _ENV[K0('TaskManager')]
0048  CLOSURE   R3 = closure proto10
0049  SETTABLE  R2[K26('GetOngoingChapterName')] = R3
0050  GETTABUP  R2 = _ENV[K0('TaskManager')]
0051  CLOSURE   R3 = closure proto11
0052  SETTABLE  R2[K27('GetOngoingChapterId')] = R3
0053  GETTABUP  R2 = _ENV[K0('TaskManager')]
0054  CLOSURE   R3 = closure proto12
0055  SETTABLE  R2[K28('GetOngoingTasks')] = R3
0056  GETTABUP  R2 = _ENV[K0('TaskManager')]
0057  CLOSURE   R3 = closure proto13
0058  SETTABLE  R2[K29('GetOngoingTask')] = R3
0059  GETTABUP  R2 = _ENV[K0('TaskManager')]
0060  CLOSURE   R3 = closure proto14
0061  SETTABLE  R2[K30('GetOngoingTasksString')] = R3
0062  GETTABUP  R2 = _ENV[K0('TaskManager')]
0063  CLOSURE   R3 = closure proto15
0064  SETTABLE  R2[K31('IsTaskFinished')] = R3
0065  GETTABUP  R2 = _ENV[K0('TaskManager')]
0066  CLOSURE   R3 = closure proto16
0067  SETTABLE  R2[K32('IsOngoingTasksAllFinished')] = R3
0068  GETTABUP  R2 = _ENV[K0('TaskManager')]
0069  CLOSURE   R3 = closure proto17
0070  SETTABLE  R2[K33('IsOngoingChapterProgressFinished')] = R3
0071  GETTABUP  R2 = _ENV[K0('TaskManager')]
0072  CLOSURE   R3 = closure proto18
0073  SETTABLE  R2[K34('IsAllFinished')] = R3
0074  GETTABUP  R2 = _ENV[K0('TaskManager')]
0075  CLOSURE   R3 = closure proto19
0076  SETTABLE  R2[K35('IsChapterFinished')] = R3
0077  GETTABUP  R2 = _ENV[K0('TaskManager')]
0078  CLOSURE   R3 = closure proto20
0079  SETTABLE  R2[K36('GetChapterFinishedCount')] = R3
0080  GETTABUP  R2 = _ENV[K0('TaskManager')]
0081  CLOSURE   R3 = closure proto21
0082  SETTABLE  R2[K37('IsChapterLocked')] = R3
0083  GETTABUP  R2 = _ENV[K0('TaskManager')]
0084  CLOSURE   R3 = closure proto22
0085  SETTABLE  R2[K38('CanFinishOngoingTask')] = R3
0086  GETTABUP  R2 = _ENV[K0('TaskManager')]
0087  CLOSURE   R3 = closure proto23
0088  SETTABLE  R2[K39('GetCurGoldCanFinishTaskCount')] = R3
0089  GETTABUP  R2 = _ENV[K0('TaskManager')]
0090  CLOSURE   R3 = closure proto24
0091  SETTABLE  R2[K40('GetTaskCost')] = R3
0092  GETTABUP  R2 = _ENV[K0('TaskManager')]
0093  CLOSURE   R3 = closure proto25
0094  SETTABLE  R2[K41('GetTaskRewards')] = R3
0095  GETTABUP  R2 = _ENV[K0('TaskManager')]
0096  CLOSURE   R3 = closure proto26
0097  SETTABLE  R2[K42('GetExpRewardCount')] = R3
0098  GETTABUP  R2 = _ENV[K0('TaskManager')]
0099  CLOSURE   R3 = closure proto27
0100  SETTABLE  R2[K43('GetOngoingChapterProgressCount')] = R3
0101  GETTABUP  R2 = _ENV[K0('TaskManager')]
0102  CLOSURE   R3 = closure proto28
0103  SETTABLE  R2[K44('GetTaskProgress')] = R3
0104  GETTABUP  R2 = _ENV[K0('TaskManager')]
0105  CLOSURE   R3 = closure proto29
0106  SETTABLE  R2[K45('GoFinishTask')] = R3
0107  GETTABUP  R2 = _ENV[K46('TaskManager')]
0108  CLOSURE   R3 = closure proto30
0109  SETTABLE  R2[K47('OnTaskFinished')] = R3
0110  GETTABUP  R2 = _ENV[K46('TaskManager')]
0111  CLOSURE   R3 = closure proto31
0112  SETTABLE  R2[K48('SaveSlotsChanges')] = R3
0113  GETTABUP  R2 = _ENV[K46('TaskManager')]
0114  CLOSURE   R3 = closure proto32
0115  SETTABLE  R2[K49('GetTaskSlotsChanges')] = R3
0116  GETTABUP  R2 = _ENV[K46('TaskManager')]
0117  CLOSURE   R3 = closure proto33
0118  SETTABLE  R2[K50('_CalculateTaskProgress')] = R3
0119  GETTABUP  R2 = _ENV[K46('TaskManager')]
0120  CLOSURE   R3 = closure proto34
0121  SETTABLE  R2[K51('_SaveTaskProgress')] = R3
0122  GETTABUP  R2 = _ENV[K46('TaskManager')]
0123  CLOSURE   R3 = closure proto35
0124  SETTABLE  R2[K52('IsVersionRevert')] = R3
0125  GETTABUP  R2 = _ENV[K46('TaskManager')]
0126  CLOSURE   R3 = closure proto36
0127  SETTABLE  R2[K53('_SaveOngoingData')] = R3
0128  GETTABUP  R2 = _ENV[K46('TaskManager')]
0129  CLOSURE   R3 = closure proto37
0130  SETTABLE  R2[K54('_BuildArrayDataString')] = R3
0131  GETTABUP  R2 = _ENV[K46('TaskManager')]
0132  CLOSURE   R3 = closure proto38
0133  SETTABLE  R2[K55('GetCanBeTriggeredNewTasks')] = R3
0134  GETTABUP  R2 = _ENV[K46('TaskManager')]
0135  CLOSURE   R3 = closure proto39
0136  SETTABLE  R2[K56('_TriggerNewTasks')] = R3
0137  GETTABUP  R2 = _ENV[K46('TaskManager')]
0138  CLOSURE   R3 = closure proto40
0139  SETTABLE  R2[K57('TryStartNewTasks')] = R3
0140  GETTABUP  R2 = _ENV[K46('TaskManager')]
0141  CLOSURE   R3 = closure proto41
0142  SETTABLE  R2[K58('TryStartNewChapter')] = R3
0143  GETTABUP  R2 = _ENV[K46('TaskManager')]
0144  CLOSURE   R3 = closure proto42
0145  SETTABLE  R2[K59('IsLastChapter')] = R3
0146  GETTABUP  R2 = _ENV[K46('TaskManager')]
0147  CLOSURE   R3 = closure proto43
0148  SETTABLE  R2[K60('SetAutoChangingChapter')] = R3
0149  GETTABUP  R2 = _ENV[K46('TaskManager')]
0150  CLOSURE   R3 = closure proto44
0151  SETTABLE  R2[K61('IsAutoChangingChapter')] = R3
0152  GETTABUP  R2 = _ENV[K46('TaskManager')]
0153  CLOSURE   R3 = closure proto45
0154  SETTABLE  R2[K62('GetOngoingGroupId')] = R3
0155  GETTABUP  R2 = _ENV[K46('TaskManager')]
0156  CLOSURE   R3 = closure proto46
0157  SETTABLE  R2[K63('CanClaimProgressReward')] = R3
0158  GETTABUP  R2 = _ENV[K46('TaskManager')]
0159  CLOSURE   R3 = closure proto47
0160  SETTABLE  R2[K64('TryClaimProgressReward')] = R3
0161  GETTABUP  R2 = _ENV[K46('TaskManager')]
0162  CLOSURE   R3 = closure proto48
0163  SETTABLE  R2[K65('GetProgressRewardProgress')] = R3
0164  GETTABUP  R2 = _ENV[K46('TaskManager')]
0165  CLOSURE   R3 = closure proto49
0166  SETTABLE  R2[K66('GetProgressReward')] = R3
0167  GETTABUP  R2 = _ENV[K46('TaskManager')]
0168  CLOSURE   R3 = closure proto50
0169  SETTABLE  R2[K67('_GenerateCleanGoldCost')] = R3
0170  GETTABUP  R2 = _ENV[K46('TaskManager')]
0171  CLOSURE   R3 = closure proto51
0172  SETTABLE  R2[K68('GetTaskCleanGoldCost')] = R3
0173  GETTABUP  R2 = _ENV[K46('TaskManager')]
0174  CLOSURE   R3 = closure proto52
0175  SETTABLE  R2[K69('ConsumeTaskCleanGold')] = R3
0176  GETTABUP  R2 = _ENV[K46('TaskManager')]
0177  CLOSURE   R3 = closure proto53
0178  SETTABLE  R2[K70('AddTaskCleanGold')] = R3
0179  GETTABUP  R2 = _ENV[K46('TaskManager')]
0180  CLOSURE   R3 = closure proto54
0181  SETTABLE  R2[K71('GetCleanGoldCount')] = R3
0182  GETTABUP  R2 = _ENV[K46('TaskManager')]
0183  CLOSURE   R3 = closure proto55
0184  SETTABLE  R2[K72('TryBalanceTaskCost')] = R3
0185  GETTABUP  R2 = _ENV[K46('TaskManager')]
0186  CLOSURE   R3 = closure proto56
0187  SETTABLE  R2[K73('GetCurChapterRemainTaskCosts')] = R3
0188  GETTABUP  R2 = _ENV[K46('TaskManager')]
0189  CLOSURE   R3 = closure proto57
0190  SETTABLE  R2[K74('HasPopedChapterFinishWin')] = R3
0191  GETTABUP  R2 = _ENV[K46('TaskManager')]
0192  CLOSURE   R3 = closure proto58
0193  SETTABLE  R2[K75('SetPopedChapterFinishWin')] = R3
0194  GETTABUP  R2 = _ENV[K46('TaskManager')]
0195  CLOSURE   R3 = closure proto59
0196  SETTABLE  R2[K76('GetCurChapterFinishedTaskRewards')] = R3
0197  RETURN    return R0..R-1
; ---------- proto0 [Init] ----------
  ; fn ?  line 41-52 np=1 va=0 ms=4 code=21 consts=11 upvals=1 protos=0
  ;   K[0]='m_arrOngoingTaskIds'
  ;   K[1]='m_mapChapterFinishedTaskIds'
  ;   K[2]='m_metaDBTable'
  ;   K[3]='GM'
  ;   K[4]='DBTableManager'
  ;   K[5]='GetTable'
  ;   K[6]='EDBTableConfigs'
  ;   K[7]='TaskMetaData'
  ;   K[8]='m_finishedTasksDBTable'
  ;   K[9]='FinishedTasks'
  ;   K[10]='_LoadOngoingData'
  ;   upvals: _ENV
  ;   locals: self(0-21)
  0000  NEWTABLE  R1 = {} (0 items)
  0001  SETTABLE  R0[K0('m_arrOngoingTaskIds')] = R1
  0002  NEWTABLE  R1 = {} (0 items)
  0003  SETTABLE  R0[K1('m_mapChapterFinishedTaskIds')] = R1
  0004  GETTABUP  R1 = _ENV[K3('GM')]
  0005  GETTABLE  R1 = R1[K4('DBTableManager')]
  0006  SELF      R2 = R1[K5('GetTable')] (self)
  0007  GETTABUP  R3 = _ENV[K6('EDBTableConfigs')]
  0008  GETTABLE  R3 = R3[K7('TaskMetaData')]
  0009  CALL      R1 = call(R1, 1 args, 2 rets)
  0010  SETTABLE  R0[K2('m_metaDBTable')] = R1
  0011  GETTABUP  R1 = _ENV[K3('GM')]
  0012  GETTABLE  R1 = R1[K4('DBTableManager')]
  0013  SELF      R2 = R1[K5('GetTable')] (self)
  0014  GETTABUP  R3 = _ENV[K6('EDBTableConfigs')]
  0015  GETTABLE  R3 = R3[K9('FinishedTasks')]
  0016  CALL      R1 = call(R1, 1 args, 2 rets)
  0017  SETTABLE  R0[K8('m_finishedTasksDBTable')] = R1
  0018  SELF      R2 = R0[K10('_LoadOngoingData')] (self)
  0019  CALL      R1 = call(R1, 0 args, 1 rets)
  0020  RETURN    return R0..R-1
; ---------- proto1 [GetMetaData] ----------
  ; fn ?  line 54-56 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_metaDBTable'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_metaDBTable')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto2 [GetFinishedTaskData] ----------
  ; fn ?  line 58-60 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_finishedTasksDBTable'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_finishedTasksDBTable')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto3 [OnLoadFileConfigFinished] ----------
  ; fn ?  line 62-64 np=1 va=0 ms=3 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='_LoadData'
  ;   locals: self(0-3)
  0000  SELF      R2 = R0[K0('_LoadData')] (self)
  0001  CALL      R1 = call(R1, 0 args, 1 rets)
  0002  RETURN    return R0..R-1
; ---------- proto4 [_LoadOngoingData] ----------
  ; fn ?  line 66-88 np=1 va=0 ms=14 code=70 consts=25 upvals=3 protos=0
  ;   K[0]='m_nOngoingChapterId'
  ;   K[1]='m_metaDBTable'
  ;   K[2]='GetInNumber'
  ;   K[3]='OngoingChapterId'
  ;   K[4]='DB_VALUE_KEY'
  ;   K[5]='math'
  ;   K[6]='max'
  ;   K[7]=1
  ;   K[8]='GetValue'
  ;   K[9]='OngoingTaskIds'
  ;   K[10]='m_arrOngoingTaskIds'
  ;   K[11]='StringUtil'
  ;   K[12]='SplitToNum'
  ;   K[13]='TASK_ID_SEPARATOR'
  ;   K[14]=0
  ;   K[15]='m_nCleanGoldCount'
  ;   K[16]='TaskCleanGold'
  ;   K[17]='CleanGoldCost'
  ;   K[18]='Split'
  ;   K[19]='ipairs'
  ;   K[20]=2
  ;   K[21]='Log'
  ;   K[22]='Error'
  ;   K[23]='load task clean cost error!'
  ;   K[24]='m_mapCleanGoldCost'
  ;   upvals: EMetaDBKey, _ENV, CLEAN_COST_SEPARATOR
  ;   locals: self(0-70), strOngoingData(17-70), strCleanGoldCost(35-70), arrCleanGoldCost(40-70), mapCleanGoldCost(41-70), arr(42-70), (for generator)(45-68), (for state)(45-68), (for control)(45-68), _(46-66), strCost(46-66)
  0000  GETTABLE  R1 = R0[K1('m_metaDBTable')]
  0001  SELF      R2 = R1[K2('GetInNumber')] (self)
  0002  GETTABUP  R3 = EMetaDBKey[K3('OngoingChapterId')]
  0003  GETTABUP  R4 = _ENV[K4('DB_VALUE_KEY')]
  0004  CALL      R1 = call(R1, 1 args, 3 rets)
  0005  SETTABLE  R0[K0('m_nOngoingChapterId')] = R1
  0006  GETTABUP  R1 = _ENV[K5('math')]
  0007  GETTABLE  R1 = R1[K6('max')]
  0008  LOADK     R2 = K7 1
  0009  GETTABLE  R3 = R0[K0('m_nOngoingChapterId')]
  0010  CALL      R1 = call(R1, 1 args, 2 rets)
  0011  SETTABLE  R0[K0('m_nOngoingChapterId')] = R1
  0012  GETTABLE  R1 = R0[K1('m_metaDBTable')]
  0013  SELF      R2 = R1[K8('GetValue')] (self)
  0014  GETTABUP  R3 = EMetaDBKey[K9('OngoingTaskIds')]
  0015  GETTABUP  R4 = _ENV[K4('DB_VALUE_KEY')]
  0016  CALL      R1 = call(R1, 1 args, 3 rets)
  0017  GETTABUP  R2 = _ENV[K11('StringUtil')]
  0018  GETTABLE  R2 = R2[K12('SplitToNum')]
  0019  MOVE      R3 = R0
  0020  GETTABUP  R4 = _ENV[K13('TASK_ID_SEPARATOR')]
  0021  LOADK     R5 = K14 0
  0022  CALL      R2 = call(R2, 1 args, 3 rets)
  0023  SETTABLE  R0[K10('m_arrOngoingTaskIds')] = R2
  0024  GETTABLE  R2 = R0[K1('m_metaDBTable')]
  0025  SELF      R3 = R2[K2('GetInNumber')] (self)
  0026  GETTABUP  R4 = EMetaDBKey[K16('TaskCleanGold')]
  0027  GETTABUP  R5 = _ENV[K4('DB_VALUE_KEY')]
  0028  CALL      R2 = call(R2, 1 args, 3 rets)
  0029  SETTABLE  R0[K15('m_nCleanGoldCount')] = R2
  0030  GETTABLE  R2 = R0[K1('m_metaDBTable')]
  0031  SELF      R3 = R2[K8('GetValue')] (self)
  0032  GETTABUP  R4 = EMetaDBKey[K17('CleanGoldCost')]
  0033  GETTABUP  R5 = _ENV[K4('DB_VALUE_KEY')]
  0034  CALL      R2 = call(R2, 1 args, 3 rets)
  0035  GETTABUP  R3 = _ENV[K11('StringUtil')]
  0036  GETTABLE  R3 = R3[K18('Split')]
  0037  MOVE      R4 = R0
  0038  GETTABUP  R5 = _ENV[K13('TASK_ID_SEPARATOR')]
  0039  CALL      R3 = call(R3, 1 args, 2 rets)
  0040  NEWTABLE  R4 = {} (0 items)
  0041  LOADNIL   R5..R5 = nil
  0042  GETTABUP  R6 = _ENV[K19('ipairs')]
  0043  MOVE      R7 = R0
  0044  CALL      R6 = call(R6, 3 args, 1 rets)
  0045  JMP       (jump)   -> 66
  0046  GETTABUP  R11 = _ENV[K11('StringUtil')]
  0047  GETTABLE  R11 = R11[K12('SplitToNum')]
  0048  MOVE      R12 = R0
  0049  GETUPVAL  R13 = EMetaDBKey
  0050  CALL      R11 = call(R11, 1 args, 2 rets)
  0051  MOVE      R5 = R0
  0052  GETTABLE  R11 = R5[K20(2)]
  0053  TEST      if not R11 then   -> -131017
  0054  JMP       (jump)   -> 59
  0055  GETTABLE  R11 = R5[K7(1)]
  0056  GETTABLE  R11 = R4[R11]
  0057  TEST      if not R11 then   -> -131013
  0058  JMP       (jump)   -> 63
  0059  GETTABUP  R11 = _ENV[K21('Log')]
  0060  GETTABLE  R11 = R11[K22('Error')]
  0061  LOADK     R12 = K23 'load task clean cost error!'
  0062  CALL      R11 = call(R11, 0 args, 1 rets)
  0063  GETTABLE  R11 = R5[K7(1)]
  0064  GETTABLE  R12 = R5[K20(2)]
  0065  SETTABLE  R4[R11] = R12
  0066  TFORCALL  tforcall R6
  0067  TFORLOOP  tforloop R8(sBx=-22)   -> 46
  0068  SETTABLE  R0[K24('m_mapCleanGoldCost')] = R4
  0069  RETURN    return R0..R-1
; ---------- proto5 [_LoadData] ----------
  ; fn ?  line 90-133 np=1 va=0 ms=12 code=94 consts=33 upvals=1 protos=0
  ;   K[0]='_LoadOngoingData'
  ;   K[1]='GM'
  ;   K[2]='ChapterDataModel'
  ;   K[3]='ConsiderTaskChapter'
  ;   K[4]='m_nOngoingChapterId'
  ;   K[5]='GetChapterCount'
  ;   K[6]=0
  ;   K[7]='m_arrOngoingTaskIds'
  ;   K[8]='m_strOngoingChapterName'
  ;   K[9]='GetChapterNameById'
  ;   K[10]='m_mapChapterFinishedTaskIds'
  ;   K[11]='m_finishedTasksDBTable'
  ;   K[12]='GetValues'
  ;   K[13]='ipairs'
  ;   K[14]='IsTaskFinished'
  ;   K[15]='Table'
  ;   K[16]='ListRemove'
  ;   K[17]='Log'
  ;   K[18]='Error'
  ;   K[19]='任务进度异常，已自动删除：'
  ;   K[20]='_SaveOngoingData'
  ;   K[21]='m_ongoingChapterTotalCount'
  ;   K[22]='TaskDataModel'
  ;   K[23]='GetChapterTaskCount'
  ;   K[24]='m_ongoingChapterFinishCount'
  ;   K[25]='GetKeys'
  ;   K[26]='ChapterManager'
  ;   K[27]='curActiveChapterName'
  ;   K[28]='_CalculateTaskProgress'
  ;   K[29]='GetTaskProgress'
  ;   K[30]='m_dataLoaded'
  ;   K[31]=true
  ;   K[32]='_SaveTaskProgress'
  ;   upvals: _ENV
  ;   locals: self(0-94), chapterCount(11-94), bAutoFixed(30-94), (for generator)(33-54), (for state)(33-54), (for control)(33-54), _(34-52), taskId(34-52), mapOngoingChapterFinishedTaskIds(70-94), noProgressRecord(88-94)
  0000  SELF      R2 = R0[K0('_LoadOngoingData')] (self)
  0001  CALL      R1 = call(R1, 0 args, 1 rets)
  0002  GETTABUP  R1 = _ENV[K1('GM')]
  0003  GETTABLE  R1 = R1[K2('ChapterDataModel')]
  0004  SELF      R2 = R1[K3('ConsiderTaskChapter')] (self)
  0005  GETTABLE  R3 = R0[K4('m_nOngoingChapterId')]
  0006  CALL      R1 = call(R1, 0 args, 2 rets)
  0007  GETTABUP  R1 = _ENV[K1('GM')]
  0008  GETTABLE  R1 = R1[K2('ChapterDataModel')]
  0009  SELF      R2 = R1[K5('GetChapterCount')] (self)
  0010  CALL      R1 = call(R1, 1 args, 1 rets)
  0011  LT        if R0 lt R1   -> 3086
  0012  JMP       (jump)   -> 19
  0013  GETTABLE  R2 = R0[K4('m_nOngoingChapterId')]
  0014  LT        if R0 lt R2   -> -130542
  0015  JMP       (jump)   -> 19
  0016  SETTABLE  R0[K4('m_nOngoingChapterId')] = R1
  0017  NEWTABLE  R2 = {} (0 items)
  0018  SETTABLE  R0[K7('m_arrOngoingTaskIds')] = R2
  0019  GETTABUP  R2 = _ENV[K1('GM')]
  0020  GETTABLE  R2 = R2[K2('ChapterDataModel')]
  0021  SELF      R3 = R2[K9('GetChapterNameById')] (self)
  0022  GETTABLE  R4 = R0[K4('m_nOngoingChapterId')]
  0023  CALL      R2 = call(R2, 1 args, 2 rets)
  0024  SETTABLE  R0[K8('m_strOngoingChapterName')] = R2
  0025  GETTABLE  R2 = R0[K11('m_finishedTasksDBTable')]
  0026  SELF      R3 = R2[K12('GetValues')] (self)
  0027  CALL      R2 = call(R2, 1 args, 1 rets)
  0028  SETTABLE  R0[K10('m_mapChapterFinishedTaskIds')] = R2
  0029  LOADBOOL  R2 = false
  0030  GETTABUP  R3 = _ENV[K13('ipairs')]
  0031  GETTABLE  R4 = R0[K7('m_arrOngoingTaskIds')]
  0032  CALL      R3 = call(R3, 3 args, 1 rets)
  0033  JMP       (jump)   -> 52
  0034  SELF      R9 = R0[K14('IsTaskFinished')] (self)
  0035  GETTABLE  R10 = R0[K4('m_nOngoingChapterId')]
  0036  MOVE      R11 = R0
  0037  CALL      R8 = call(R8, 1 args, 3 rets)
  0038  TEST      if not R8 then   -> -131032
  0039  JMP       (jump)   -> 52
  0040  LOADBOOL  R2 = true
  0041  GETTABUP  R8 = _ENV[K15('Table')]
  0042  GETTABLE  R8 = R8[K16('ListRemove')]
  0043  GETTABLE  R9 = R0[K7('m_arrOngoingTaskIds')]
  0044  MOVE      R10 = R0
  0045  CALL      R8 = call(R8, 0 args, 2 rets)
  0046  GETTABUP  R8 = _ENV[K17('Log')]
  0047  GETTABLE  R8 = R8[K18('Error')]
  0048  LOADK     R9 = K19 '任务进度异常，已自动删除：'
  0049  MOVE      R10 = R0
  0050  CONCAT    R9 = concat(R9..R9)
  0051  CALL      R8 = call(R8, 0 args, 1 rets)
  0052  TFORCALL  tforcall R3
  0053  TFORLOOP  tforloop R5(sBx=-20)   -> 34
  0054  TEST      if not R2 then   -> -131016
  0055  JMP       (jump)   -> 58
  0056  SELF      R4 = R0[K20('_SaveOngoingData')] (self)
  0057  CALL      R3 = call(R3, 0 args, 1 rets)
  0058  GETTABUP  R3 = _ENV[K1('GM')]
  0059  GETTABLE  R3 = R3[K22('TaskDataModel')]
  0060  SELF      R4 = R3[K23('GetChapterTaskCount')] (self)
  0061  GETTABLE  R5 = R0[K8('m_strOngoingChapterName')]
  0062  CALL      R3 = call(R3, 1 args, 2 rets)
  0063  SETTABLE  R0[K21('m_ongoingChapterTotalCount')] = R3
  0064  GETTABLE  R3 = R0[K10('m_mapChapterFinishedTaskIds')]
  0065  GETTABLE  R4 = R0[K4('m_nOngoingChapterId')]
  0066  GETTABLE  R3 = R3[R4]
  0067  TEST      if not R3 then   -> -131002
  0068  JMP       (jump)   -> 70
  0069  NEWTABLE  R3 = {} (0 items)
  0070  GETTABUP  R4 = _ENV[K15('Table')]
  0071  GETTABLE  R4 = R4[K25('GetKeys')]
  0072  MOVE      R5 = R0
  0073  CALL      R4 = call(R4, 1 args, 1 rets)
  0074  LEN       R4 = len R0
  0075  SETTABLE  R0[K24('m_ongoingChapterFinishCount')] = R4
  0076  GETTABUP  R4 = _ENV[K1('GM')]
  0077  GETTABLE  R4 = R4[K26('ChapterManager')]
  0078  GETTABLE  R5 = R0[K8('m_strOngoingChapterName')]
  0079  SETTABLE  R4[K27('curActiveChapterName')] = R5
  0080  SELF      R5 = R0[K28('_CalculateTaskProgress')] (self)
  0081  CALL      R4 = call(R4, 0 args, 1 rets)
  0082  SELF      R5 = R0[K29('GetTaskProgress')] (self)
  0083  CALL      R4 = call(R4, 1 args, 1 rets)
  0084  EQ        if R1 eq K6(0)   -> -128676
  0085  JMP       (jump)   -> 87
  0086  LOADBOOL  R4 = false
  0087  LOADBOOL  R4 = true
  0088  SETTABLE  R0[K30('m_dataLoaded')] = K31(true)
  0089  TEST      if not R4 then   -> -130981
  0090  JMP       (jump)   -> 93
  0091  SELF      R6 = R0[K32('_SaveTaskProgress')] (self)
  0092  CALL      R5 = call(R5, 0 args, 1 rets)
  0093  RETURN    return R0..R-1
; ---------- proto6 [_TryFixFinishRecord] ----------
  ; fn ?  line 135-185 np=1 va=0 ms=18 code=74 consts=23 upvals=1 protos=1
  ;   K[0]='m_mapChapterFinishedTaskIds'
  ;   K[1]='m_nOngoingChapterId'
  ;   K[2]='next'
  ;   K[3]=nil
  ;   K[4]='GM'
  ;   K[5]='TaskDataModel'
  ;   K[6]='GetTaskPreIdsByChapter'
  ;   K[7]='m_strOngoingChapterName'
  ;   K[8]='pairs'
  ;   K[9]='GetTaskCost'
  ;   K[10]='m_ongoingChapterFinishCount'
  ;   K[11]=1
  ;   K[12]='m_finishedTasksDBTable'
  ;   K[13]='Set'
  ;   K[14]='DB_VALUE_KEY'
  ;   K[15]='Table'
  ;   K[16]='ListRemove'
  ;   K[17]='m_arrOngoingTaskIds'
  ;   K[18]='Log'
  ;   K[19]='Error'
  ;   K[20]='任务进度丢失，已找回：'
  ;   K[21]='TryStartNewTasks'
  ;   K[22]='_SaveOngoingData'
  ;   upvals: _ENV
  ;   locals: self(0-74), mapRecordFinishedTaskIds(6-74), mapPreTaskIds(17-74), fixedTaskIds(18-74), mapNewFinishedTaskIds(19-74), funcGetAllPreTaskIds(20-74), (for generator)(25-31), (for state)(25-31), (for control)(25-31), taskId(26-29), _(26-29), (for generator)(40-69), (for state)(40-69), (for control)(40-69), fixedTaskId(41-67), _(41-67), cost(45-67)
  0000  GETTABLE  R1 = R0[K0('m_mapChapterFinishedTaskIds')]
  0001  GETTABLE  R2 = R0[K1('m_nOngoingChapterId')]
  0002  GETTABLE  R1 = R1[R2]
  0003  TEST      if not R1 then   -> -131066
  0004  JMP       (jump)   -> 6
  0005  NEWTABLE  R1 = {} (0 items)
  0006  GETTABUP  R2 = _ENV[K2('next')]
  0007  MOVE      R3 = R0
  0008  CALL      R2 = call(R2, 1 args, 1 rets)
  0009  EQ        if R0 eq K3(nil)   -> -129778
  0010  JMP       (jump)   -> 12
  0011  RETURN    return R0..R-1
  0012  GETTABUP  R2 = _ENV[K4('GM')]
  0013  GETTABLE  R2 = R2[K5('TaskDataModel')]
  0014  SELF      R3 = R2[K6('GetTaskPreIdsByChapter')] (self)
  0015  GETTABLE  R4 = R0[K7('m_strOngoingChapterName')]
  0016  CALL      R2 = call(R2, 1 args, 2 rets)
  0017  NEWTABLE  R3 = {} (0 items)
  0018  NEWTABLE  R4 = {} (0 items)
  0019  LOADNIL   R5..R5 = nil
  0020  CLOSURE   R6 = closure proto0
  0021  MOVE      R5 = R0
  0022  GETTABUP  R6 = _ENV[K8('pairs')]
  0023  MOVE      R7 = R0
  0024  CALL      R6 = call(R6, 3 args, 1 rets)
  0025  JMP       (jump)   -> 29
  0026  MOVE      R11 = R0
  0027  MOVE      R12 = R0
  0028  CALL      R11 = call(R11, 0 args, 1 rets)
  0029  TFORCALL  tforcall R6
  0030  TFORLOOP  tforloop R8(sBx=-5)   -> 26
  0031  GETTABUP  R6 = _ENV[K2('next')]
  0032  MOVE      R7 = R0
  0033  CALL      R6 = call(R6, 1 args, 1 rets)
  0034  EQ        if R0 eq K3(nil)   -> -127705
  0035  JMP       (jump)   -> 37
  0036  RETURN    return R0..R-1
  0037  GETTABUP  R6 = _ENV[K8('pairs')]
  0038  MOVE      R7 = R0
  0039  CALL      R6 = call(R6, 3 args, 1 rets)
  0040  JMP       (jump)   -> 67
  0041  SELF      R12 = R0[K9('GetTaskCost')] (self)
  0042  MOVE      R13 = R0
  0043  GETTABLE  R14 = R0[K7('m_strOngoingChapterName')]
  0044  CALL      R11 = call(R11, 1 args, 3 rets)
  0045  SETTABLE  R1[R9] = R11
  0046  GETTABLE  R12 = R0[K10('m_ongoingChapterFinishCount')]
  0047  ADD       R12 = K11(1) add R12
  0048  SETTABLE  R0[K10('m_ongoingChapterFinishCount')] = R12
  0049  GETTABLE  R12 = R0[K12('m_finishedTasksDBTable')]
  0050  SELF      R13 = R12[K13('Set')] (self)
  0051  GETTABLE  R14 = R0[K1('m_nOngoingChapterId')]
  0052  MOVE      R15 = R0
  0053  GETTABUP  R16 = _ENV[K14('DB_VALUE_KEY')]
  0054  MOVE      R17 = R0
  0055  CALL      R12 = call(R12, 0 args, 5 rets)
  0056  GETTABUP  R12 = _ENV[K15('Table')]
  0057  GETTABLE  R12 = R12[K16('ListRemove')]
  0058  GETTABLE  R13 = R0[K17('m_arrOngoingTaskIds')]
  0059  MOVE      R14 = R0
  0060  CALL      R12 = call(R12, 0 args, 2 rets)
  0061  GETTABUP  R12 = _ENV[K18('Log')]
  0062  GETTABLE  R12 = R12[K19('Error')]
  0063  LOADK     R13 = K20 '任务进度丢失，已找回：'
  0064  MOVE      R14 = R0
  0065  CONCAT    R13 = concat(R13..R13)
  0066  CALL      R12 = call(R12, 0 args, 1 rets)
  0067  TFORCALL  tforcall R6
  0068  TFORLOOP  tforloop R8(sBx=-28)   -> 41
  0069  SELF      R7 = R0[K21('TryStartNewTasks')] (self)
  0070  CALL      R6 = call(R6, 0 args, 1 rets)
  0071  SELF      R7 = R0[K22('_SaveOngoingData')] (self)
  0072  CALL      R6 = call(R6, 0 args, 1 rets)
  0073  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 148-158 np=1 va=0 ms=8 code=21 consts=2 upvals=6 protos=0
    ;   K[0]='ipairs'
    ;   K[1]=true
    ;   upvals: _ENV, mapPreTaskIds, mapNewFinishedTaskIds, funcGetAllPreTaskIds, mapRecordFinishedTaskIds, fixedTaskIds
    ;   locals: taskId(0-21), (for generator)(6-15), (for state)(6-15), (for control)(6-15), _(7-13), preTaskId(7-13)
    0000  GETTABUP  R1 = _ENV[K0('ipairs')]
    0001  GETTABUP  R2 = mapPreTaskIds[R0]
    0002  TEST      if not R2 then   -> -131067
    0003  JMP       (jump)   -> 5
    0004  NEWTABLE  R2 = {} (0 items)
    0005  CALL      R1 = call(R1, 3 args, 1 rets)
    0006  JMP       (jump)   -> 13
    0007  GETTABUP  R6 = mapNewFinishedTaskIds[R5]
    0008  TEST      if not R6 then   -> -131061
    0009  JMP       (jump)   -> 13
    0010  GETUPVAL  R6 = _ENV
    0011  MOVE      R7 = R0
    0012  CALL      R6 = call(R6, 0 args, 1 rets)
    0013  TFORCALL  tforcall R1
    0014  TFORLOOP  tforloop R3(sBx=-8)   -> 7
    0015  SETTABUP  mapNewFinishedTaskIds[R0] = K1(true)
    0016  GETTABUP  R1 = mapRecordFinishedTaskIds[R0]
    0017  TEST      if not R1 then   -> -131052
    0018  JMP       (jump)   -> 20
    0019  SETTABUP  fixedTaskIds[R0] = K1(true)
    0020  RETURN    return R0..R-1
; ---------- proto7 [FromSyncData] ----------
  ; fn ?  line 187-192 np=3 va=0 ms=6 code=10 consts=5 upvals=0 protos=0
  ;   K[0]='m_metaDBTable'
  ;   K[1]='FromArr'
  ;   K[2]='m_finishedTasksDBTable'
  ;   K[3]='m_bFromSyncData'
  ;   K[4]=true
  ;   locals: self(0-10), metaDataArr(0-10), dataArr(0-10)
  0000  GETTABLE  R3 = R0[K0('m_metaDBTable')]
  0001  SELF      R4 = R3[K1('FromArr')] (self)
  0002  MOVE      R5 = R0
  0003  CALL      R3 = call(R3, 0 args, 2 rets)
  0004  GETTABLE  R3 = R0[K2('m_finishedTasksDBTable')]
  0005  SELF      R4 = R3[K1('FromArr')] (self)
  0006  MOVE      R5 = R0
  0007  CALL      R3 = call(R3, 0 args, 2 rets)
  0008  SETTABLE  R0[K3('m_bFromSyncData')] = K4(true)
  0009  RETURN    return R0..R-1
; ---------- proto8 [OnSyncDataFinished] ----------
  ; fn ?  line 194-203 np=1 va=0 ms=3 code=8 consts=3 upvals=0 protos=0
  ;   K[0]='m_bFromSyncData'
  ;   K[1]='_LoadData'
  ;   K[2]=nil
  ;   locals: self(0-8)
  0000  GETTABLE  R1 = R0[K0('m_bFromSyncData')]
  0001  TEST      if not R1 then   -> -131068
  0002  JMP       (jump)   -> 4
  0003  RETURN    return R0..R-1
  0004  SELF      R2 = R0[K1('_LoadData')] (self)
  0005  CALL      R1 = call(R1, 0 args, 1 rets)
  0006  SETTABLE  R0[K0('m_bFromSyncData')] = K2(nil)
  0007  RETURN    return R0..R-1
; ---------- proto9 [LateInit] ----------
  ; fn ?  line 205-212 np=1 va=0 ms=3 code=7 consts=3 upvals=0 protos=0
  ;   K[0]='TryStartNewTasks'
  ;   K[1]='_TryFixFinishRecord'
  ;   K[2]='TryBalanceTaskCost'
  ;   locals: self(0-7)
  0000  SELF      R2 = R0[K0('TryStartNewTasks')] (self)
  0001  CALL      R1 = call(R1, 0 args, 1 rets)
  0002  SELF      R2 = R0[K1('_TryFixFinishRecord')] (self)
  0003  CALL      R1 = call(R1, 0 args, 1 rets)
  0004  SELF      R2 = R0[K2('TryBalanceTaskCost')] (self)
  0005  CALL      R1 = call(R1, 0 args, 1 rets)
  0006  RETURN    return R0..R-1
; ---------- proto10 [GetOngoingChapterName] ----------
  ; fn ?  line 215-217 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_strOngoingChapterName'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_strOngoingChapterName')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto11 [GetOngoingChapterId] ----------
  ; fn ?  line 220-222 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_nOngoingChapterId'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_nOngoingChapterId')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto12 [GetOngoingTasks] ----------
  ; fn ?  line 225-227 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_arrOngoingTaskIds'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_arrOngoingTaskIds')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto13 [GetOngoingTask] ----------
  ; fn ?  line 230-232 np=1 va=0 ms=2 code=4 consts=2 upvals=0 protos=0
  ;   K[0]='m_arrOngoingTaskIds'
  ;   K[1]=1
  ;   locals: self(0-4)
  0000  GETTABLE  R1 = R0[K0('m_arrOngoingTaskIds')]
  0001  GETTABLE  R1 = R1[K1(1)]
  0002  RETURN    return R1..R0
  0003  RETURN    return R0..R-1
; ---------- proto14 [GetOngoingTasksString] ----------
  ; fn ?  line 234-246 np=1 va=0 ms=10 code=20 consts=4 upvals=1 protos=0
  ;   K[0]=''
  ;   K[1]='ipairs'
  ;   K[2]='m_arrOngoingTaskIds'
  ;   K[3]='TASK_ID_SEPARATOR'
  ;   upvals: _ENV
  ;   locals: self(0-20), str(1-20), first(2-20), (for generator)(5-18), (for state)(5-18), (for control)(5-18), _(6-16), taskId(6-16)
  0000  LOADK     R1 = K0 ''
  0001  LOADBOOL  R2 = true
  0002  GETTABUP  R3 = _ENV[K1('ipairs')]
  0003  GETTABLE  R4 = R0[K2('m_arrOngoingTaskIds')]
  0004  CALL      R3 = call(R3, 3 args, 1 rets)
  0005  JMP       (jump)   -> 16
  0006  TEST      if not R2 then   -> -131064
  0007  JMP       (jump)   -> 10
  0008  LOADBOOL  R2 = false
  0009  JMP       (jump)   -> 13
  0010  MOVE      R8 = R0
  0011  GETTABUP  R9 = _ENV[K3('TASK_ID_SEPARATOR')]
  0012  CONCAT    R1 = concat(R1..R8)
  0013  MOVE      R8 = R0
  0014  MOVE      R9 = R0
  0015  CONCAT    R1 = concat(R1..R8)
  0016  TFORCALL  tforcall R3
  0017  TFORLOOP  tforloop R5(sBx=-12)   -> 6
  0018  RETURN    return R1..R0
  0019  RETURN    return R0..R-1
; ---------- proto15 [IsTaskFinished] ----------
  ; fn ?  line 248-256 np=3 va=0 ms=6 code=14 consts=2 upvals=0 protos=0
  ;   K[0]='IsChapterFinished'
  ;   K[1]='m_mapChapterFinishedTaskIds'
  ;   locals: self(0-14), chapterId(0-14), taskId(0-14), mapChapterFinishedTaskIds(9-14)
  0000  SELF      R4 = R0[K0('IsChapterFinished')] (self)
  0001  MOVE      R5 = R0
  0002  CALL      R3 = call(R3, 1 args, 2 rets)
  0003  TEST      if not R3 then   -> -131067
  0004  JMP       (jump)   -> 7
  0005  LOADBOOL  R3 = true
  0006  RETURN    return R3..R2
  0007  GETTABLE  R3 = R0[K1('m_mapChapterFinishedTaskIds')]
  0008  GETTABLE  R3 = R3[R1]
  0009  TESTSET   if R0 then R4   -> -129525
  0010  JMP       (jump)   -> 12
  0011  GETTABLE  R4 = R3[R2]
  0012  RETURN    return R4..R3
  0013  RETURN    return R0..R-1
; ---------- proto16 [IsOngoingTasksAllFinished] ----------
  ; fn ?  line 258-260 np=1 va=0 ms=2 code=8 consts=3 upvals=0 protos=0
  ;   K[0]='m_arrOngoingTaskIds'
  ;   K[1]=1
  ;   K[2]=nil
  ;   locals: self(0-8)
  0000  GETTABLE  R1 = R0[K0('m_arrOngoingTaskIds')]
  0001  GETTABLE  R1 = R1[K1(1)]
  0002  EQ        if R1 eq K2(nil)   -> -130298
  0003  JMP       (jump)   -> 5
  0004  LOADBOOL  R1 = false
  0005  LOADBOOL  R1 = true
  0006  RETURN    return R1..R0
  0007  RETURN    return R0..R-1
; ---------- proto17 [IsOngoingChapterProgressFinished] ----------
  ; fn ?  line 262-264 np=1 va=0 ms=3 code=8 consts=2 upvals=0 protos=0
  ;   K[0]='m_ongoingChapterFinishCount'
  ;   K[1]='m_ongoingChapterTotalCount'
  ;   locals: self(0-8)
  0000  GETTABLE  R1 = R0[K0('m_ongoingChapterFinishCount')]
  0001  GETTABLE  R2 = R0[K1('m_ongoingChapterTotalCount')]
  0002  EQ        if R1 eq R2   -> -130554
  0003  JMP       (jump)   -> 5
  0004  LOADBOOL  R1 = false
  0005  LOADBOOL  R1 = true
  0006  RETURN    return R1..R0
  0007  RETURN    return R0..R-1
; ---------- proto18 [IsAllFinished] ----------
  ; fn ?  line 267-276 np=1 va=0 ms=4 code=23 consts=6 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='ChapterDataModel'
  ;   K[2]='GetChapterCount'
  ;   K[3]='m_nOngoingChapterId'
  ;   K[4]='IsOngoingTasksAllFinished'
  ;   K[5]='IsOngoingChapterProgressFinished'
  ;   upvals: _ENV
  ;   locals: self(0-23), chapterCount(4-23)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('ChapterDataModel')]
  0002  SELF      R2 = R1[K2('GetChapterCount')] (self)
  0003  CALL      R1 = call(R1, 1 args, 1 rets)
  0004  GETTABLE  R2 = R0[K3('m_nOngoingChapterId')]
  0005  LT        if R0 lt R2   -> -130551
  0006  JMP       (jump)   -> 10
  0007  LOADBOOL  R2 = true
  0008  RETURN    return R2..R1
  0009  JMP       (jump)   -> 15
  0010  GETTABLE  R2 = R0[K3('m_nOngoingChapterId')]
  0011  LT        if R0 lt R1   -> -130034
  0012  JMP       (jump)   -> 15
  0013  LOADBOOL  R2 = false
  0014  RETURN    return R2..R1
  0015  SELF      R3 = R0[K4('IsOngoingTasksAllFinished')] (self)
  0016  CALL      R2 = call(R2, 1 args, 1 rets)
  0017  TEST      if not R2 then   -> -131053
  0018  JMP       (jump)   -> 21
  0019  SELF      R3 = R0[K5('IsOngoingChapterProgressFinished')] (self)
  0020  CALL      R2 = call(R2, 1 args, 1 rets)
  0021  RETURN    return R2..R1
  0022  RETURN    return R0..R-1
; ---------- proto19 [IsChapterFinished] ----------
  ; fn ?  line 278-287 np=2 va=0 ms=4 code=24 consts=6 upvals=0 protos=0
  ;   K[0]='m_nOngoingChapterId'
  ;   K[1]='IsOngoingTasksAllFinished'
  ;   K[2]='IsOngoingChapterProgressFinished'
  ;   K[3]=0
  ;   K[4]='m_mapChapterFinishedTaskIds'
  ;   K[5]=nil
  ;   locals: self(0-24), chapterId(0-24)
  0000  GETTABLE  R2 = R0[K0('m_nOngoingChapterId')]
  0001  EQ        if R0 eq R2   -> -130555
  0002  JMP       (jump)   -> 11
  0003  SELF      R3 = R0[K1('IsOngoingTasksAllFinished')] (self)
  0004  CALL      R2 = call(R2, 1 args, 1 rets)
  0005  TEST      if not R2 then   -> -131065
  0006  JMP       (jump)   -> 9
  0007  SELF      R3 = R0[K2('IsOngoingChapterProgressFinished')] (self)
  0008  CALL      R2 = call(R2, 1 args, 1 rets)
  0009  RETURN    return R2..R1
  0010  JMP       (jump)   -> 23
  0011  EQ        if R0 eq K3(0)   -> -130288
  0012  JMP       (jump)   -> 16
  0013  LOADBOOL  R2 = true
  0014  RETURN    return R2..R1
  0015  JMP       (jump)   -> 23
  0016  GETTABLE  R2 = R0[K4('m_mapChapterFinishedTaskIds')]
  0017  GETTABLE  R2 = R2[R1]
  0018  EQ        if R0 eq K5(nil)   -> -129767
  0019  JMP       (jump)   -> 21
  0020  LOADBOOL  R2 = false
  0021  LOADBOOL  R2 = true
  0022  RETURN    return R2..R1
  0023  RETURN    return R0..R-1
; ---------- proto20 [GetChapterFinishedCount] ----------
  ; fn ?  line 289-292 np=2 va=0 ms=5 code=14 consts=4 upvals=1 protos=0
  ;   K[0]='m_mapChapterFinishedTaskIds'
  ;   K[1]='Table'
  ;   K[2]='GetKeys'
  ;   K[3]=0
  ;   upvals: _ENV
  ;   locals: self(0-14), chapterId(0-14), mapChapterFinishedTaskIds(2-14)
  0000  GETTABLE  R2 = R0[K0('m_mapChapterFinishedTaskIds')]
  0001  GETTABLE  R2 = R2[R1]
  0002  TEST      if not R2 then   -> -131068
  0003  JMP       (jump)   -> 11
  0004  GETTABUP  R3 = _ENV[K1('Table')]
  0005  GETTABLE  R3 = R3[K2('GetKeys')]
  0006  MOVE      R4 = R0
  0007  CALL      R3 = call(R3, 1 args, 1 rets)
  0008  LEN       R3 = len R0
  0009  TEST      if not R3 then   -> -131060
  0010  JMP       (jump)   -> 12
  0011  LOADK     R3 = K3 0
  0012  RETURN    return R3..R2
  0013  RETURN    return R0..R-1
; ---------- proto21 [IsChapterLocked] ----------
  ; fn ?  line 294-298 np=2 va=0 ms=6 code=24 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='ChapterDataModel'
  ;   K[2]='GetChapterCount'
  ;   K[3]='IsChapterFinished'
  ;   K[4]='m_nOngoingChapterId'
  ;   upvals: _ENV
  ;   locals: self(0-24), chapterId(0-24), valid(10-24), isChapterFinished(13-24)
  0000  TESTSET   if R0 then R2   -> -130558
  0001  JMP       (jump)   -> 10
  0002  GETTABUP  R2 = _ENV[K0('GM')]
  0003  GETTABLE  R2 = R2[K1('ChapterDataModel')]
  0004  SELF      R3 = R2[K2('GetChapterCount')] (self)
  0005  CALL      R2 = call(R2, 1 args, 1 rets)
  0006  LE        if R1 le R2   -> -130550
  0007  JMP       (jump)   -> 9
  0008  LOADBOOL  R2 = false
  0009  LOADBOOL  R2 = true
  0010  SELF      R4 = R0[K3('IsChapterFinished')] (self)
  0011  MOVE      R5 = R0
  0012  CALL      R3 = call(R3, 1 args, 2 rets)
  0013  TEST      if not R2 then   -> -131057
  0014  JMP       (jump)   -> 21
  0015  GETTABLE  R4 = R0[K4('m_nOngoingChapterId')]
  0016  EQ        if R1 eq R4   -> -130538
  0017  JMP       (jump)   -> 20
  0018  NOT       R4 = not R0
  0019  JMP       (jump)   -> 22
  0020  LOADBOOL  R4 = false
  0021  LOADBOOL  R4 = true
  0022  RETURN    return R4..R3
  0023  RETURN    return R0..R-1
; ---------- proto22 [CanFinishOngoingTask] ----------
  ; fn ?  line 301-319 np=1 va=0 ms=12 code=32 consts=10 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='PropertyDataManager'
  ;   K[2]='GetPropertyNum'
  ;   K[3]='EPropertyType'
  ;   K[4]='Gold'
  ;   K[5]=0
  ;   K[6]='ipairs'
  ;   K[7]='m_arrOngoingTaskIds'
  ;   K[8]='GetTaskCost'
  ;   K[9]=1
  ;   upvals: _ENV
  ;   locals: self(0-32), myGold(6-32), satisfiedCount(7-32), firstSatisfiedTaskId(8-32), (for generator)(11-23), (for state)(11-23), (for control)(11-23), _(12-21), taskId(12-21)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('PropertyDataManager')]
  0002  SELF      R2 = R1[K2('GetPropertyNum')] (self)
  0003  GETTABUP  R3 = _ENV[K3('EPropertyType')]
  0004  GETTABLE  R3 = R3[K4('Gold')]
  0005  CALL      R1 = call(R1, 1 args, 2 rets)
  0006  LOADK     R2 = K5 0
  0007  LOADNIL   R3..R3 = nil
  0008  GETTABUP  R4 = _ENV[K6('ipairs')]
  0009  GETTABLE  R5 = R0[K7('m_arrOngoingTaskIds')]
  0010  CALL      R4 = call(R4, 3 args, 1 rets)
  0011  JMP       (jump)   -> 21
  0012  SELF      R10 = R0[K8('GetTaskCost')] (self)
  0013  MOVE      R11 = R0
  0014  CALL      R9 = call(R9, 1 args, 2 rets)
  0015  LE        if R0 le R1   -> -126446
  0016  JMP       (jump)   -> 21
  0017  ADD       R2 = K9(1) add R2
  0018  TEST      if not R3 then   -> -131051
  0019  JMP       (jump)   -> 21
  0020  MOVE      R3 = R0
  0021  TFORCALL  tforcall R4
  0022  TFORLOOP  tforloop R6(sBx=-11)   -> 12
  0023  LT        if R0 lt R2   -> 2587
  0024  JMP       (jump)   -> 29
  0025  LOADBOOL  R4 = true
  0026  MOVE      R5 = R0
  0027  MOVE      R6 = R0
  0028  RETURN    return R4..R3
  0029  LOADBOOL  R4 = false
  0030  RETURN    return R4..R3
  0031  RETURN    return R0..R-1
; ---------- proto23 [GetCurGoldCanFinishTaskCount] ----------
  ; fn ?  line 321-343 np=1 va=0 ms=15 code=48 consts=15 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='PropertyDataManager'
  ;   K[2]='GetPropertyNum'
  ;   K[3]='EPropertyType'
  ;   K[4]='Gold'
  ;   K[5]='m_arrOngoingTaskIds'
  ;   K[6]='TaskDataModel'
  ;   K[7]='GetTaskNextIdsByChapter'
  ;   K[8]='m_strOngoingChapterName'
  ;   K[9]=0
  ;   K[10]='ipairs'
  ;   K[11]='GetTaskCost'
  ;   K[12]=1
  ;   K[13]='Table'
  ;   K[14]='ListAppend'
  ;   upvals: _ENV
  ;   locals: self(0-48), curGold(6-48), curTasks(7-48), nextTaskDatas(12-48), nextTasks(13-48), taskCount(14-48), taskCost(15-48), (for generator)(23-42), (for state)(23-42), (for control)(23-42), _(24-40), taskId(24-40)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('PropertyDataManager')]
  0002  SELF      R2 = R1[K2('GetPropertyNum')] (self)
  0003  GETTABUP  R3 = _ENV[K3('EPropertyType')]
  0004  GETTABLE  R3 = R3[K4('Gold')]
  0005  CALL      R1 = call(R1, 1 args, 2 rets)
  0006  GETTABLE  R2 = R0[K5('m_arrOngoingTaskIds')]
  0007  GETTABUP  R3 = _ENV[K0('GM')]
  0008  GETTABLE  R3 = R3[K6('TaskDataModel')]
  0009  SELF      R4 = R3[K7('GetTaskNextIdsByChapter')] (self)
  0010  GETTABLE  R5 = R0[K8('m_strOngoingChapterName')]
  0011  CALL      R3 = call(R3, 1 args, 2 rets)
  0012  NEWTABLE  R4 = {} (0 items)
  0013  LOADK     R5 = K9 0
  0014  LOADNIL   R6..R6 = nil
  0015  LE        if R0 le R1   -> 4626
  0016  JMP       (jump)   -> 46
  0017  LEN       R7 = len R0
  0018  LT        if R0 lt R7   -> 4635
  0019  JMP       (jump)   -> 46
  0020  GETTABUP  R7 = _ENV[K10('ipairs')]
  0021  MOVE      R8 = R0
  0022  CALL      R7 = call(R7, 3 args, 1 rets)
  0023  JMP       (jump)   -> 40
  0024  SELF      R13 = R0[K11('GetTaskCost')] (self)
  0025  MOVE      R14 = R0
  0026  CALL      R12 = call(R12, 1 args, 2 rets)
  0027  MOVE      R6 = R0
  0028  LE        if R0 le R1   -> -127969
  0029  JMP       (jump)   -> 40
  0030  ADD       R5 = K12(1) add R5
  0031  SUB       R1 = R6 sub R1
  0032  GETTABLE  R12 = R3[R11]
  0033  TEST      if not R12 then   -> -131037
  0034  JMP       (jump)   -> 40
  0035  GETTABUP  R12 = _ENV[K13('Table')]
  0036  GETTABLE  R12 = R12[K14('ListAppend')]
  0037  MOVE      R13 = R0
  0038  GETTABLE  R14 = R3[R11]
  0039  CALL      R12 = call(R12, 0 args, 2 rets)
  0040  TFORCALL  tforcall R7
  0041  TFORLOOP  tforloop R9(sBx=-18)   -> 24
  0042  MOVE      R2 = R0
  0043  NEWTABLE  R7 = {} (0 items)
  0044  MOVE      R4 = R0
  0045  JMP       (jump)   -> 15
  0046  RETURN    return R5..R4
  0047  RETURN    return R0..R-1
; ---------- proto24 [GetTaskCost] ----------
  ; fn ?  line 346-350 np=3 va=0 ms=7 code=18 consts=7 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='TaskDataModel'
  ;   K[2]='GetTaskData'
  ;   K[3]='m_strOngoingChapterName'
  ;   K[4]='Cost'
  ;   K[5]=0
  ;   K[6]='GetTaskCleanGoldCost'
  ;   upvals: _ENV
  ;   locals: self(0-18), taskId(0-18), chapterName(0-18), cost(12-18), cleanCost(15-18)
  0000  GETTABUP  R3 = _ENV[K0('GM')]
  0001  GETTABLE  R3 = R3[K1('TaskDataModel')]
  0002  SELF      R4 = R3[K2('GetTaskData')] (self)
  0003  TESTSET   if R1 then R5   -> -130042
  0004  JMP       (jump)   -> 6
  0005  GETTABLE  R5 = R0[K3('m_strOngoingChapterName')]
  0006  MOVE      R6 = R0
  0007  CALL      R3 = call(R3, 1 args, 3 rets)
  0008  GETTABLE  R3 = R3[K4('Cost')]
  0009  TEST      if not R3 then   -> -131060
  0010  JMP       (jump)   -> 12
  0011  LOADK     R3 = K5 0
  0012  SELF      R5 = R0[K6('GetTaskCleanGoldCost')] (self)
  0013  MOVE      R6 = R0
  0014  CALL      R4 = call(R4, 1 args, 2 rets)
  0015  ADD       R5 = R4 add R3
  0016  RETURN    return R5..R4
  0017  RETURN    return R0..R-1
; ---------- proto25 [GetTaskRewards] ----------
  ; fn ?  line 353-365 np=3 va=0 ms=12 code=31 consts=10 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='TaskDataModel'
  ;   K[2]='GetTaskData'
  ;   K[3]='m_strOngoingChapterName'
  ;   K[4]='Rewards'
  ;   K[5]='ipairs'
  ;   K[6]='PROPERTY_TYPE'
  ;   K[7]='EPropertyType'
  ;   K[8]='Experience'
  ;   K[9]=1
  ;   upvals: _ENV
  ;   locals: self(0-31), taskId(0-31), excludeExp(0-31), rewards(10-31), newRewards(13-29), (for generator)(16-28), (for state)(16-28), (for control)(16-28), _(17-26), value(17-26)
  0000  GETTABUP  R3 = _ENV[K0('GM')]
  0001  GETTABLE  R3 = R3[K1('TaskDataModel')]
  0002  SELF      R4 = R3[K2('GetTaskData')] (self)
  0003  GETTABLE  R5 = R0[K3('m_strOngoingChapterName')]
  0004  MOVE      R6 = R0
  0005  CALL      R3 = call(R3, 1 args, 3 rets)
  0006  GETTABLE  R3 = R3[K4('Rewards')]
  0007  TEST      if not R3 then   -> -131062
  0008  JMP       (jump)   -> 10
  0009  NEWTABLE  R3 = {} (0 items)
  0010  TEST      if not R2 then   -> -131060
  0011  JMP       (jump)   -> 29
  0012  NEWTABLE  R4 = {} (0 items)
  0013  GETTABUP  R5 = _ENV[K5('ipairs')]
  0014  MOVE      R6 = R0
  0015  CALL      R5 = call(R5, 3 args, 1 rets)
  0016  JMP       (jump)   -> 26
  0017  GETTABUP  R10 = _ENV[K6('PROPERTY_TYPE')]
  0018  GETTABLE  R10 = R9[R10]
  0019  GETTABUP  R11 = _ENV[K7('EPropertyType')]
  0020  GETTABLE  R11 = R11[K8('Experience')]
  0021  EQ        if R1 eq R11   -> -125918
  0022  JMP       (jump)   -> 26
  0023  LEN       R10 = len R0
  0024  ADD       R10 = K9(1) add R10
  0025  SETTABLE  R4[R10] = R9
  0026  TFORCALL  tforcall R5
  0027  TFORLOOP  tforloop R7(sBx=-11)   -> 17
  0028  RETURN    return R4..R3
  0029  RETURN    return R3..R2
  0030  RETURN    return R0..R-1
; ---------- proto26 [GetExpRewardCount] ----------
  ; fn ?  line 367-375 np=2 va=0 ms=10 code=28 consts=11 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='TaskDataModel'
  ;   K[2]='GetTaskData'
  ;   K[3]='m_strOngoingChapterName'
  ;   K[4]='Rewards'
  ;   K[5]='ipairs'
  ;   K[6]='PROPERTY_TYPE'
  ;   K[7]='EPropertyType'
  ;   K[8]='Experience'
  ;   K[9]='PROPERTY_COUNT'
  ;   K[10]=0
  ;   upvals: _ENV
  ;   locals: self(0-28), taskId(0-28), rewards(10-28), (for generator)(13-25), (for state)(13-25), (for control)(13-25), _(14-23), value(14-23)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('TaskDataModel')]
  0002  SELF      R3 = R2[K2('GetTaskData')] (self)
  0003  GETTABLE  R4 = R0[K3('m_strOngoingChapterName')]
  0004  MOVE      R5 = R0
  0005  CALL      R2 = call(R2, 1 args, 3 rets)
  0006  GETTABLE  R2 = R2[K4('Rewards')]
  0007  TEST      if not R2 then   -> -131062
  0008  JMP       (jump)   -> 10
  0009  NEWTABLE  R2 = {} (0 items)
  0010  GETTABUP  R3 = _ENV[K5('ipairs')]
  0011  MOVE      R4 = R0
  0012  CALL      R3 = call(R3, 3 args, 1 rets)
  0013  JMP       (jump)   -> 23
  0014  GETTABUP  R8 = _ENV[K6('PROPERTY_TYPE')]
  0015  GETTABLE  R8 = R7[R8]
  0016  GETTABUP  R9 = _ENV[K7('EPropertyType')]
  0017  GETTABLE  R9 = R9[K8('Experience')]
  0018  EQ        if R0 eq R9   -> -126947
  0019  JMP       (jump)   -> 23
  0020  GETTABUP  R8 = _ENV[K9('PROPERTY_COUNT')]
  0021  GETTABLE  R8 = R7[R8]
  0022  RETURN    return R8..R7
  0023  TFORCALL  tforcall R3
  0024  TFORLOOP  tforloop R5(sBx=-11)   -> 14
  0025  LOADK     R3 = K10 0
  0026  RETURN    return R3..R2
  0027  RETURN    return R0..R-1
; ---------- proto27 [GetOngoingChapterProgressCount] ----------
  ; fn ?  line 377-379 np=1 va=0 ms=3 code=4 consts=2 upvals=0 protos=0
  ;   K[0]='m_ongoingChapterFinishCount'
  ;   K[1]='m_ongoingChapterTotalCount'
  ;   locals: self(0-4)
  0000  GETTABLE  R1 = R0[K0('m_ongoingChapterFinishCount')]
  0001  GETTABLE  R2 = R0[K1('m_ongoingChapterTotalCount')]
  0002  RETURN    return R1..R0
  0003  RETURN    return R0..R-1
; ---------- proto28 [GetTaskProgress] ----------
  ; fn ?  line 381-387 np=1 va=0 ms=5 code=17 consts=8 upvals=2 protos=0
  ;   K[0]='m_dataLoaded'
  ;   K[1]='m_metaDBTable'
  ;   K[2]='GetInNumber'
  ;   K[3]='TaskProgress'
  ;   K[4]='DB_VALUE_KEY'
  ;   K[5]='m_nOngoingChapterId'
  ;   K[6]=1000
  ;   K[7]='GetChapterFinishedCount'
  ;   upvals: EMetaDBKey, _ENV
  ;   locals: self(0-17)
  0000  GETTABLE  R1 = R0[K0('m_dataLoaded')]
  0001  TEST      if not R1 then   -> -131068
  0002  JMP       (jump)   -> 9
  0003  GETTABLE  R1 = R0[K1('m_metaDBTable')]
  0004  SELF      R2 = R1[K2('GetInNumber')] (self)
  0005  GETTABUP  R3 = EMetaDBKey[K3('TaskProgress')]
  0006  GETTABUP  R4 = _ENV[K4('DB_VALUE_KEY')]
  0007  TAILCALL  tailcall(R1, 0)
  0008  RETURN    return R1..R0
  0009  GETTABLE  R1 = R0[K5('m_nOngoingChapterId')]
  0010  MUL       R1 = K6(1000) mul R1
  0011  SELF      R3 = R0[K7('GetChapterFinishedCount')] (self)
  0012  GETTABLE  R4 = R0[K5('m_nOngoingChapterId')]
  0013  CALL      R2 = call(R2, 1 args, 2 rets)
  0014  ADD       R1 = R2 add R1
  0015  RETURN    return R1..R0
  0016  RETURN    return R0..R-1
; ---------- proto29 [GoFinishTask] ----------
  ; fn ?  line 389-403 np=2 va=0 ms=10 code=31 consts=13 upvals=1 protos=1
  ;   K[0]='GetTaskCost'
  ;   K[1]='GM'
  ;   K[2]='PropertyDataManager'
  ;   K[3]='GetPropertyNum'
  ;   K[4]='EPropertyType'
  ;   K[5]='Gold'
  ;   K[6]='Log'
  ;   K[7]='Error'
  ;   K[8]='不应该出现这种情况。'
  ;   K[9]='TaskManager'
  ;   K[10]='GetOngoingChapterName'
  ;   K[11]='TimelineManager'
  ;   K[12]='PlayTimeline'
  ;   upvals: _ENV
  ;   locals: self(0-31), taskId(0-31), cost(3-31), myGold(9-31), ongoingChapterName(21-31)
  0000  SELF      R3 = R0[K0('GetTaskCost')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  GETTABUP  R3 = _ENV[K1('GM')]
  0004  GETTABLE  R3 = R3[K2('PropertyDataManager')]
  0005  SELF      R4 = R3[K3('GetPropertyNum')] (self)
  0006  GETTABUP  R5 = _ENV[K4('EPropertyType')]
  0007  GETTABLE  R5 = R5[K5('Gold')]
  0008  CALL      R3 = call(R3, 1 args, 2 rets)
  0009  LT        if R0 lt R2   -> -129523
  0010  JMP       (jump)   -> 17
  0011  GETTABUP  R4 = _ENV[K6('Log')]
  0012  GETTABLE  R4 = R4[K7('Error')]
  0013  LOADK     R5 = K8 '不应该出现这种情况。'
  0014  CALL      R4 = call(R4, 0 args, 1 rets)
  0015  LOADBOOL  R4 = false
  0016  RETURN    return R4..R3
  0017  GETTABUP  R4 = _ENV[K1('GM')]
  0018  GETTABLE  R4 = R4[K9('TaskManager')]
  0019  SELF      R5 = R4[K10('GetOngoingChapterName')] (self)
  0020  CALL      R4 = call(R4, 1 args, 1 rets)
  0021  GETTABUP  R5 = _ENV[K1('GM')]
  0022  GETTABLE  R5 = R5[K11('TimelineManager')]
  0023  SELF      R6 = R5[K12('PlayTimeline')] (self)
  0024  MOVE      R7 = R0
  0025  MOVE      R8 = R0
  0026  CLOSURE   R9 = closure proto0
  0027  CALL      R5 = call(R5, 0 args, 4 rets)
  0028  LOADBOOL  R5 = true
  0029  RETURN    return R5..R4
  0030  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 399-401 np=0 va=0 ms=3 code=5 consts=1 upvals=2 protos=0
    ;   K[0]='OnTaskFinished'
    ;   upvals: self, taskId
    0000  GETUPVAL  R0 = self
    0001  SELF      R1 = R0[K0('OnTaskFinished')] (self)
    0002  GETUPVAL  R2 = self
    0003  CALL      R0 = call(R0, 0 args, 2 rets)
    0004  RETURN    return R0..R-1
; ---------- proto30 [OnTaskFinished] ----------
  ; fn ?  line 405-468 np=2 va=0 ms=16 code=155 consts=62 upvals=1 protos=0
  ;   K[0]='GetTaskCost'
  ;   K[1]='GM'
  ;   K[2]='PropertyDataManager'
  ;   K[3]='Consume'
  ;   K[4]='EPropertyType'
  ;   K[5]='Gold'
  ;   K[6]='EBIType'
  ;   K[7]='TaskFinish'
  ;   K[8]='GetTaskCleanGoldCost'
  ;   K[9]='ConsumeTaskCleanGold'
  ;   K[10]='GetTaskRewards'
  ;   K[11]=1
  ;   K[12]='LevelModel'
  ;   K[13]='GetCurrentLevel'
  ;   K[14]='RewardApi'
  ;   K[15]='AcquireRewardsLogic'
  ;   K[16]='EPropertySource'
  ;   K[17]='Give'
  ;   K[18]='ERewardScene'
  ;   K[19]='Other'
  ;   K[20]='EGameMode'
  ;   K[21]='Board'
  ;   K[22]='CacheItemType'
  ;   K[23]='Stack'
  ;   K[24]='AcquireRewardsInView'
  ;   K[25]='UIManager'
  ;   K[26]='SetEventLockUntilNextPopup'
  ;   K[27]='SaveSlotsChanges'
  ;   K[28]='m_mapChapterFinishedTaskIds'
  ;   K[29]='m_nOngoingChapterId'
  ;   K[30]='Log'
  ;   K[31]='Assert'
  ;   K[32]=nil
  ;   K[33]='Task can only be finished once:'
  ;   K[34]='tostring'
  ;   K[35]='m_strOngoingChapterName'
  ;   K[36]=', '
  ;   K[37]='m_ongoingChapterFinishCount'
  ;   K[38]='m_finishedTasksDBTable'
  ;   K[39]='Set'
  ;   K[40]='DB_VALUE_KEY'
  ;   K[41]='m_progressTaskFinishCount'
  ;   K[42]='Table'
  ;   K[43]='ListRemove'
  ;   K[44]='m_arrOngoingTaskIds'
  ;   K[45]='TryStartNewTasks'
  ;   K[46]='_SaveOngoingData'
  ;   K[47]='IsTestSkipping'
  ;   K[48]='EventDispatcher'
  ;   K[49]='DispatchEvent'
  ;   K[50]='EEventType'
  ;   K[51]='MainTaskFinished'
  ;   K[52]='taskId'
  ;   K[53]='BIManager'
  ;   K[54]='LogTask'
  ;   K[55]='GetOngoingChapterName'
  ;   K[56]='ChapterDataModel'
  ;   K[57]='GetChapterIdByName'
  ;   K[58]='EBITaskType'
  ;   K[59]='Mainline'
  ;   K[60]=''
  ;   K[61]='TryClaimProgressReward'
  ;   upvals: _ENV
  ;   locals: self(0-155), taskId(0-155), cost(3-155), cleanCost(17-155), rewards(23-155), userLevel(30-64), mapOngoingChapterFinishedTaskIds(79-155), biCost(134-155)
  0000  SELF      R3 = R0[K0('GetTaskCost')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  GETTABUP  R3 = _ENV[K1('GM')]
  0004  GETTABLE  R3 = R3[K2('PropertyDataManager')]
  0005  SELF      R4 = R3[K3('Consume')] (self)
  0006  GETTABUP  R5 = _ENV[K4('EPropertyType')]
  0007  GETTABLE  R5 = R5[K5('Gold')]
  0008  MOVE      R6 = R0
  0009  GETTABUP  R7 = _ENV[K6('EBIType')]
  0010  GETTABLE  R7 = R7[K7('TaskFinish')]
  0011  LOADBOOL  R8 = true
  0012  MOVE      R9 = R0
  0013  CALL      R3 = call(R3, 0 args, 6 rets)
  0014  SELF      R4 = R0[K8('GetTaskCleanGoldCost')] (self)
  0015  MOVE      R5 = R0
  0016  CALL      R3 = call(R3, 1 args, 2 rets)
  0017  SELF      R5 = R0[K9('ConsumeTaskCleanGold')] (self)
  0018  MOVE      R6 = R0
  0019  CALL      R4 = call(R4, 0 args, 2 rets)
  0020  SELF      R5 = R0[K10('GetTaskRewards')] (self)
  0021  MOVE      R6 = R0
  0022  CALL      R4 = call(R4, 1 args, 2 rets)
  0023  GETTABLE  R5 = R4[K11(1)]
  0024  TEST      if not R5 then   -> -131046
  0025  JMP       (jump)   -> 64
  0026  GETTABUP  R5 = _ENV[K1('GM')]
  0027  GETTABLE  R5 = R5[K12('LevelModel')]
  0028  SELF      R6 = R5[K13('GetCurrentLevel')] (self)
  0029  CALL      R5 = call(R5, 1 args, 1 rets)
  0030  GETTABUP  R6 = _ENV[K14('RewardApi')]
  0031  GETTABLE  R6 = R6[K15('AcquireRewardsLogic')]
  0032  MOVE      R7 = R0
  0033  GETTABUP  R8 = _ENV[K16('EPropertySource')]
  0034  GETTABLE  R8 = R8[K17('Give')]
  0035  GETTABUP  R9 = _ENV[K6('EBIType')]
  0036  GETTABLE  R9 = R9[K7('TaskFinish')]
  0037  GETTABUP  R10 = _ENV[K18('ERewardScene')]
  0038  GETTABLE  R10 = R10[K19('Other')]
  0039  GETTABUP  R11 = _ENV[K20('EGameMode')]
  0040  GETTABLE  R11 = R11[K21('Board')]
  0041  GETTABUP  R12 = _ENV[K22('CacheItemType')]
  0042  GETTABLE  R12 = R12[K23('Stack')]
  0043  CALL      R6 = call(R6, 0 args, 6 rets)
  0044  GETTABUP  R6 = _ENV[K14('RewardApi')]
  0045  GETTABLE  R6 = R6[K24('AcquireRewardsInView')]
  0046  SELF      R8 = R0[K10('GetTaskRewards')] (self)
  0047  MOVE      R9 = R0
  0048  LOADBOOL  R10 = true
  0049  CALL      R7 = call(R7, 1 args, 3 rets)
  0050  LOADNIL   R8..R8 = nil
  0051  GETTABUP  R9 = _ENV[K18('ERewardScene')]
  0052  GETTABLE  R9 = R9[K19('Other')]
  0053  CALL      R6 = call(R6, 0 args, 3 rets)
  0054  GETTABUP  R6 = _ENV[K1('GM')]
  0055  GETTABLE  R6 = R6[K12('LevelModel')]
  0056  SELF      R7 = R6[K13('GetCurrentLevel')] (self)
  0057  CALL      R6 = call(R6, 1 args, 1 rets)
  0058  LT        if R0 lt R6   -> -128446
  0059  JMP       (jump)   -> 64
  0060  GETTABUP  R6 = _ENV[K1('GM')]
  0061  GETTABLE  R6 = R6[K25('UIManager')]
  0062  SELF      R7 = R6[K26('SetEventLockUntilNextPopup')] (self)
  0063  CALL      R6 = call(R6, 0 args, 1 rets)
  0064  SELF      R6 = R0[K27('SaveSlotsChanges')] (self)
  0065  MOVE      R7 = R0
  0066  CALL      R5 = call(R5, 0 args, 2 rets)
  0067  GETTABLE  R5 = R0[K28('m_mapChapterFinishedTaskIds')]
  0068  GETTABLE  R6 = R0[K29('m_nOngoingChapterId')]
  0069  GETTABLE  R5 = R5[R6]
  0070  TEST      if not R5 then   -> -130999
  0071  JMP       (jump)   -> 76
  0072  GETTABLE  R5 = R0[K28('m_mapChapterFinishedTaskIds')]
  0073  GETTABLE  R6 = R0[K29('m_nOngoingChapterId')]
  0074  NEWTABLE  R7 = {} (0 items)
  0075  SETTABLE  R5[R6] = R7
  0076  GETTABLE  R5 = R0[K28('m_mapChapterFinishedTaskIds')]
  0077  GETTABLE  R6 = R0[K29('m_nOngoingChapterId')]
  0078  GETTABLE  R5 = R5[R6]
  0079  GETTABUP  R6 = _ENV[K30('Log')]
  0080  GETTABLE  R6 = R6[K31('Assert')]
  0081  GETTABLE  R7 = R5[R1]
  0082  EQ        if R1 eq K32(nil)   -> -127116
  0083  JMP       (jump)   -> 85
  0084  LOADBOOL  R7 = false
  0085  LOADBOOL  R7 = true
  0086  LOADK     R8 = K33 'Task can only be finished once:'
  0087  GETTABUP  R9 = _ENV[K34('tostring')]
  0088  GETTABLE  R10 = R0[K35('m_strOngoingChapterName')]
  0089  CALL      R9 = call(R9, 1 args, 1 rets)
  0090  LOADK     R10 = K36 ', '
  0091  GETTABUP  R11 = _ENV[K34('tostring')]
  0092  MOVE      R12 = R0
  0093  CALL      R11 = call(R11, 1 args, 1 rets)
  0094  CONCAT    R8 = concat(R8..R8)
  0095  CALL      R6 = call(R6, 0 args, 2 rets)
  0096  SETTABLE  R5[R1] = R2
  0097  GETTABLE  R6 = R0[K37('m_ongoingChapterFinishCount')]
  0098  ADD       R6 = K11(1) add R6
  0099  SETTABLE  R0[K37('m_ongoingChapterFinishCount')] = R6
  0100  GETTABLE  R6 = R0[K38('m_finishedTasksDBTable')]
  0101  SELF      R7 = R6[K39('Set')] (self)
  0102  GETTABLE  R8 = R0[K29('m_nOngoingChapterId')]
  0103  MOVE      R9 = R0
  0104  GETTABUP  R10 = _ENV[K40('DB_VALUE_KEY')]
  0105  MOVE      R11 = R0
  0106  CALL      R6 = call(R6, 0 args, 5 rets)
  0107  GETTABLE  R6 = R0[K41('m_progressTaskFinishCount')]
  0108  ADD       R6 = K11(1) add R6
  0109  SETTABLE  R0[K41('m_progressTaskFinishCount')] = R6
  0110  GETTABUP  R6 = _ENV[K42('Table')]
  0111  GETTABLE  R6 = R6[K43('ListRemove')]
  0112  GETTABLE  R7 = R0[K44('m_arrOngoingTaskIds')]
  0113  MOVE      R8 = R0
  0114  CALL      R6 = call(R6, 0 args, 2 rets)
  0115  SELF      R7 = R0[K45('TryStartNewTasks')] (self)
  0116  CALL      R6 = call(R6, 0 args, 1 rets)
  0117  SELF      R7 = R0[K46('_SaveOngoingData')] (self)
  0118  CALL      R6 = call(R6, 0 args, 1 rets)
  0119  GETTABUP  R6 = _ENV[K47('IsTestSkipping')]
  0120  CALL      R6 = call(R6, 1 args, 0 rets)
  0121  TEST      if not R6 then   -> -130948
  0122  JMP       (jump)   -> 130
  0123  GETTABUP  R6 = _ENV[K48('EventDispatcher')]
  0124  GETTABLE  R6 = R6[K49('DispatchEvent')]
  0125  GETTABUP  R7 = _ENV[K50('EEventType')]
  0126  GETTABLE  R7 = R7[K51('MainTaskFinished')]
  0127  NEWTABLE  R8 = {} (0 items)
  0128  SETTABLE  R8[K52('taskId')] = R1
  0129  CALL      R6 = call(R6, 0 args, 2 rets)
  0130  NEWTABLE  R6 = {} (0 items)
  0131  GETTABUP  R7 = _ENV[K4('EPropertyType')]
  0132  GETTABLE  R7 = R7[K5('Gold')]
  0133  SETTABLE  R6[R7] = R2
  0134  GETTABUP  R7 = _ENV[K1('GM')]
  0135  GETTABLE  R7 = R7[K53('BIManager')]
  0136  SELF      R8 = R7[K54('LogTask')] (self)
  0137  SELF      R10 = R0[K55('GetOngoingChapterName')] (self)
  0138  CALL      R9 = call(R9, 1 args, 1 rets)
  0139  GETTABUP  R10 = _ENV[K1('GM')]
  0140  GETTABLE  R10 = R10[K56('ChapterDataModel')]
  0141  SELF      R11 = R10[K57('GetChapterIdByName')] (self)
  0142  SELF      R13 = R0[K55('GetOngoingChapterName')] (self)
  0143  CALL      R12 = call(R12, -1 args, 1 rets)
  0144  CALL      R10 = call(R10, 1 args, -1 rets)
  0145  MOVE      R11 = R0
  0146  MOVE      R12 = R0
  0147  MOVE      R13 = R0
  0148  GETTABUP  R14 = _ENV[K58('EBITaskType')]
  0149  GETTABLE  R14 = R14[K59('Mainline')]
  0150  LOADK     R15 = K60 ''
  0151  CALL      R7 = call(R7, 0 args, 8 rets)
  0152  SELF      R8 = R0[K61('TryClaimProgressReward')] (self)
  0153  CALL      R7 = call(R7, 0 args, 1 rets)
  0154  RETURN    return R0..R-1
; ---------- proto31 [SaveSlotsChanges] ----------
  ; fn ?  line 470-477 np=2 va=0 ms=14 code=19 consts=8 upvals=1 protos=0
  ;   K[0]='GetTaskSlotsChanges'
  ;   K[1]='ipairs'
  ;   K[2]='Slot'
  ;   K[3]='State'
  ;   K[4]='GM'
  ;   K[5]='ChapterManager'
  ;   K[6]='roomModel'
  ;   K[7]='SetState'
  ;   upvals: _ENV
  ;   locals: self(0-19), taskId(0-19), slotChanges(3-19), (for generator)(6-18), (for state)(6-18), (for control)(6-18), _(7-16), changeData(7-16), slotId(8-16), state(9-16)
  0000  SELF      R3 = R0[K0('GetTaskSlotsChanges')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  GETTABUP  R3 = _ENV[K1('ipairs')]
  0004  MOVE      R4 = R0
  0005  CALL      R3 = call(R3, 3 args, 1 rets)
  0006  JMP       (jump)   -> 16
  0007  GETTABLE  R8 = R7[K2('Slot')]
  0008  GETTABLE  R9 = R7[K3('State')]
  0009  GETTABUP  R10 = _ENV[K4('GM')]
  0010  GETTABLE  R10 = R10[K5('ChapterManager')]
  0011  GETTABLE  R10 = R10[K6('roomModel')]
  0012  SELF      R11 = R10[K7('SetState')] (self)
  0013  MOVE      R12 = R0
  0014  MOVE      R13 = R0
  0015  CALL      R10 = call(R10, 0 args, 3 rets)
  0016  TFORCALL  tforcall R3
  0017  TFORLOOP  tforloop R5(sBx=-11)   -> 7
  0018  RETURN    return R0..R-1
; ---------- proto32 [GetTaskSlotsChanges] ----------
  ; fn ?  line 479-481 np=3 va=0 ms=7 code=14 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='TaskDataModel'
  ;   K[2]='GetTaskData'
  ;   K[3]='m_strOngoingChapterName'
  ;   K[4]='SlotState'
  ;   upvals: _ENV
  ;   locals: self(0-14), taskId(0-14), chapterName(0-14)
  0000  GETTABUP  R3 = _ENV[K0('GM')]
  0001  GETTABLE  R3 = R3[K1('TaskDataModel')]
  0002  SELF      R4 = R3[K2('GetTaskData')] (self)
  0003  TESTSET   if R1 then R5   -> -130042
  0004  JMP       (jump)   -> 6
  0005  GETTABLE  R5 = R0[K3('m_strOngoingChapterName')]
  0006  MOVE      R6 = R0
  0007  CALL      R3 = call(R3, 1 args, 3 rets)
  0008  GETTABLE  R3 = R3[K4('SlotState')]
  0009  TEST      if not R3 then   -> -131060
  0010  JMP       (jump)   -> 12
  0011  NEWTABLE  R3 = {} (0 items)
  0012  RETURN    return R3..R2
  0013  RETURN    return R0..R-1
; ---------- proto33 [_CalculateTaskProgress] ----------
  ; fn ?  line 483-508 np=1 va=0 ms=12 code=40 consts=12 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='TaskDataModel'
  ;   K[2]='ChapterDataModel'
  ;   K[3]='m_ongoingChapterFinishCount'
  ;   K[4]=1
  ;   K[5]='m_nOngoingChapterId'
  ;   K[6]='GetChapterNameById'
  ;   K[7]='GetChapterTaskCount'
  ;   K[8]='GetTaskGroupCount'
  ;   K[9]='GetTaskGroupNeedNum'
  ;   K[10]='m_ongoingProgressId'
  ;   K[11]='m_progressTaskFinishCount'
  ;   upvals: _ENV
  ;   locals: self(0-40), dataModel(2-40), chapterDataModel(4-40), accTaskCount(5-40), chapterName(6-40), (for index)(10-20), (for limit)(10-20), (for step)(10-20), chapterId(11-19), groupTaskNum(21-40), groupId(22-40), groupCount(24-40)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('TaskDataModel')]
  0002  GETTABUP  R2 = _ENV[K0('GM')]
  0003  GETTABLE  R2 = R2[K2('ChapterDataModel')]
  0004  GETTABLE  R3 = R0[K3('m_ongoingChapterFinishCount')]
  0005  LOADNIL   R4..R4 = nil
  0006  LOADK     R5 = K4 1
  0007  GETTABLE  R6 = R0[K5('m_nOngoingChapterId')]
  0008  SUB       R6 = K4(1) sub R6
  0009  LOADK     R7 = K4 1
  0010  FORPREP   forprep R5(sBx=8)   -> 19
  0011  SELF      R10 = R2[K6('GetChapterNameById')] (self)
  0012  MOVE      R11 = R0
  0013  CALL      R9 = call(R9, 1 args, 2 rets)
  0014  MOVE      R4 = R0
  0015  SELF      R10 = R1[K7('GetChapterTaskCount')] (self)
  0016  MOVE      R11 = R0
  0017  CALL      R9 = call(R9, 1 args, 2 rets)
  0018  ADD       R3 = R9 add R3
  0019  FORLOOP   forloop R5(sBx=-9)   -> 11
  0020  LOADNIL   R5..R5 = nil
  0021  LOADK     R6 = K4 1
  0022  SELF      R8 = R1[K8('GetTaskGroupCount')] (self)
  0023  CALL      R7 = call(R7, 1 args, 1 rets)
  0024  LE        if R0 le R7   -> -127967
  0025  JMP       (jump)   -> 37
  0026  SELF      R9 = R1[K9('GetTaskGroupNeedNum')] (self)
  0027  MOVE      R10 = R0
  0028  CALL      R8 = call(R8, 1 args, 2 rets)
  0029  MOVE      R5 = R0
  0030  LE        if R0 le R3   -> -128477
  0031  JMP       (jump)   -> 37
  0032  ADD       R6 = K4(1) add R6
  0033  SUB       R3 = R5 sub R3
  0034  JMP       (jump)   -> 24
  0035  JMP       (jump)   -> 37
  0036  JMP       (jump)   -> 24
  0037  SETTABLE  R0[K10('m_ongoingProgressId')] = R6
  0038  SETTABLE  R0[K11('m_progressTaskFinishCount')] = R3
  0039  RETURN    return R0..R-1
; ---------- proto34 [_SaveTaskProgress] ----------
  ; fn ?  line 510-512 np=1 va=0 ms=7 code=8 consts=5 upvals=2 protos=0
  ;   K[0]='m_metaDBTable'
  ;   K[1]='Set'
  ;   K[2]='TaskProgress'
  ;   K[3]='DB_VALUE_KEY'
  ;   K[4]='GetTaskProgress'
  ;   upvals: EMetaDBKey, _ENV
  ;   locals: self(0-8)
  0000  GETTABLE  R1 = R0[K0('m_metaDBTable')]
  0001  SELF      R2 = R1[K1('Set')] (self)
  0002  GETTABUP  R3 = EMetaDBKey[K2('TaskProgress')]
  0003  GETTABUP  R4 = _ENV[K3('DB_VALUE_KEY')]
  0004  SELF      R6 = R0[K4('GetTaskProgress')] (self)
  0005  CALL      R5 = call(R5, -1 args, 1 rets)
  0006  CALL      R1 = call(R1, 0 args, -1 rets)
  0007  RETURN    return R0..R-1
; ---------- proto35 [IsVersionRevert] ----------
  ; fn ?  line 514-520 np=1 va=0 ms=5 code=18 consts=7 upvals=2 protos=0
  ;   K[0]='m_metaDBTable'
  ;   K[1]='GetInNumber'
  ;   K[2]='OngoingChapterId'
  ;   K[3]='DB_VALUE_KEY'
  ;   K[4]='GM'
  ;   K[5]='ChapterDataModel'
  ;   K[6]='GetChapterCount'
  ;   upvals: EMetaDBKey, _ENV
  ;   locals: self(0-18), nDBOngoingChapterId(5-18)
  0000  GETTABLE  R1 = R0[K0('m_metaDBTable')]
  0001  SELF      R2 = R1[K1('GetInNumber')] (self)
  0002  GETTABUP  R3 = EMetaDBKey[K2('OngoingChapterId')]
  0003  GETTABUP  R4 = _ENV[K3('DB_VALUE_KEY')]
  0004  CALL      R1 = call(R1, 1 args, 3 rets)
  0005  TEST      if not R1 then   -> -131065
  0006  JMP       (jump)   -> 15
  0007  GETTABUP  R2 = _ENV[K4('GM')]
  0008  GETTABLE  R2 = R2[K5('ChapterDataModel')]
  0009  SELF      R3 = R2[K6('GetChapterCount')] (self)
  0010  CALL      R2 = call(R2, 1 args, 1 rets)
  0011  LT        if R0 lt R1   -> -130034
  0012  JMP       (jump)   -> 15
  0013  LOADBOOL  R2 = true
  0014  RETURN    return R2..R1
  0015  LOADBOOL  R2 = false
  0016  RETURN    return R2..R1
  0017  RETURN    return R0..R-1
; ---------- proto36 [_SaveOngoingData] ----------
  ; fn ?  line 522-545 np=1 va=0 ms=13 code=70 consts=22 upvals=2 protos=0
  ;   K[0]='IsVersionRevert'
  ;   K[1]='_BuildArrayDataString'
  ;   K[2]='m_arrOngoingTaskIds'
  ;   K[3]='Log'
  ;   K[4]='Assert'
  ;   K[5]=1
  ;   K[6]='当前同时进行的任务数量为：'
  ;   K[7]='m_metaDBTable'
  ;   K[8]='Set'
  ;   K[9]='OngoingTaskIds'
  ;   K[10]='DB_VALUE_KEY'
  ;   K[11]='TaskCleanGold'
  ;   K[12]='m_nCleanGoldCount'
  ;   K[13]='pairs'
  ;   K[14]='m_mapCleanGoldCost'
  ;   K[15]='#'
  ;   K[16]='CleanGoldCost'
  ;   K[17]='OngoingChapterId'
  ;   K[18]='m_nOngoingChapterId'
  ;   K[19]='OngoingChapterName'
  ;   K[20]='m_strOngoingChapterName'
  ;   K[21]='_SaveTaskProgress'
  ;   upvals: _ENV, EMetaDBKey
  ;   locals: self(0-70), strOngoingIds(8-70), ongoingCount(10-70), arrCleanGoldCost(33-70), (for generator)(36-46), (for state)(36-46), (for control)(36-46), taskId(37-44), cleanCost(37-44), strCleanGoldCost(49-70)
  0000  SELF      R2 = R0[K0('IsVersionRevert')] (self)
  0001  CALL      R1 = call(R1, 1 args, 1 rets)
  0002  TEST      if not R1 then   -> -131068
  0003  JMP       (jump)   -> 5
  0004  RETURN    return R0..R-1
  0005  SELF      R2 = R0[K1('_BuildArrayDataString')] (self)
  0006  GETTABLE  R3 = R0[K2('m_arrOngoingTaskIds')]
  0007  CALL      R1 = call(R1, 1 args, 2 rets)
  0008  GETTABLE  R2 = R0[K2('m_arrOngoingTaskIds')]
  0009  LEN       R2 = len R0
  0010  GETTABUP  R3 = _ENV[K3('Log')]
  0011  GETTABLE  R3 = R3[K4('Assert')]
  0012  LE        if R1 le K5(1)   -> -129773
  0013  JMP       (jump)   -> 15
  0014  LOADBOOL  R4 = false
  0015  LOADBOOL  R4 = true
  0016  LOADK     R5 = K6 '当前同时进行的任务数量为：'
  0017  MOVE      R6 = R0
  0018  CONCAT    R5 = concat(R5..R5)
  0019  CALL      R3 = call(R3, 0 args, 2 rets)
  0020  GETTABLE  R3 = R0[K7('m_metaDBTable')]
  0021  SELF      R4 = R3[K8('Set')] (self)
  0022  GETTABUP  R5 = EMetaDBKey[K9('OngoingTaskIds')]
  0023  GETTABUP  R6 = _ENV[K10('DB_VALUE_KEY')]
  0024  MOVE      R7 = R0
  0025  CALL      R3 = call(R3, 0 args, 4 rets)
  0026  GETTABLE  R3 = R0[K7('m_metaDBTable')]
  0027  SELF      R4 = R3[K8('Set')] (self)
  0028  GETTABUP  R5 = EMetaDBKey[K11('TaskCleanGold')]
  0029  GETTABUP  R6 = _ENV[K10('DB_VALUE_KEY')]
  0030  GETTABLE  R7 = R0[K12('m_nCleanGoldCount')]
  0031  CALL      R3 = call(R3, 0 args, 4 rets)
  0032  NEWTABLE  R3 = {} (0 items)
  0033  GETTABUP  R4 = _ENV[K13('pairs')]
  0034  GETTABLE  R5 = R0[K14('m_mapCleanGoldCost')]
  0035  CALL      R4 = call(R4, 3 args, 1 rets)
  0036  JMP       (jump)   -> 44
  0037  LEN       R9 = len R0
  0038  ADD       R9 = K5(1) add R9
  0039  MOVE      R10 = R0
  0040  LOADK     R11 = K15 '#'
  0041  MOVE      R12 = R0
  0042  CONCAT    R10 = concat(R10..R10)
  0043  SETTABLE  R3[R9] = R10
  0044  TFORCALL  tforcall R4
  0045  TFORLOOP  tforloop R6(sBx=-9)   -> 37
  0046  SELF      R5 = R0[K1('_BuildArrayDataString')] (self)
  0047  MOVE      R6 = R0
  0048  CALL      R4 = call(R4, 1 args, 2 rets)
  0049  GETTABLE  R5 = R0[K7('m_metaDBTable')]
  0050  SELF      R6 = R5[K8('Set')] (self)
  0051  GETTABUP  R7 = EMetaDBKey[K16('CleanGoldCost')]
  0052  GETTABUP  R8 = _ENV[K10('DB_VALUE_KEY')]
  0053  MOVE      R9 = R0
  0054  CALL      R5 = call(R5, 0 args, 4 rets)
  0055  GETTABLE  R5 = R0[K7('m_metaDBTable')]
  0056  SELF      R6 = R5[K8('Set')] (self)
  0057  GETTABUP  R7 = EMetaDBKey[K17('OngoingChapterId')]
  0058  GETTABUP  R8 = _ENV[K10('DB_VALUE_KEY')]
  0059  GETTABLE  R9 = R0[K18('m_nOngoingChapterId')]
  0060  CALL      R5 = call(R5, 0 args, 4 rets)
  0061  GETTABLE  R5 = R0[K7('m_metaDBTable')]
  0062  SELF      R6 = R5[K8('Set')] (self)
  0063  GETTABUP  R7 = EMetaDBKey[K19('OngoingChapterName')]
  0064  GETTABUP  R8 = _ENV[K10('DB_VALUE_KEY')]
  0065  GETTABLE  R9 = R0[K20('m_strOngoingChapterName')]
  0066  CALL      R5 = call(R5, 0 args, 4 rets)
  0067  SELF      R6 = R0[K21('_SaveTaskProgress')] (self)
  0068  CALL      R5 = call(R5, 0 args, 1 rets)
  0069  RETURN    return R0..R-1
; ---------- proto37 [_BuildArrayDataString] ----------
  ; fn ?  line 547-557 np=2 va=0 ms=11 code=19 consts=4 upvals=1 protos=0
  ;   K[0]=''
  ;   K[1]=1
  ;   K[2]='tostring'
  ;   K[3]='TASK_ID_SEPARATOR'
  ;   upvals: _ENV
  ;   locals: self(0-19), arrArray(0-19), str(1-19), count(2-19), (for index)(5-17), (for limit)(5-17), (for step)(5-17), i(6-16)
  0000  LOADK     R2 = K0 ''
  0001  LEN       R3 = len R0
  0002  LOADK     R4 = K1 1
  0003  MOVE      R5 = R0
  0004  LOADK     R6 = K1 1
  0005  FORPREP   forprep R4(sBx=10)   -> 16
  0006  MOVE      R8 = R0
  0007  GETTABUP  R9 = _ENV[K2('tostring')]
  0008  GETTABLE  R10 = R1[R7]
  0009  CALL      R9 = call(R9, 1 args, 1 rets)
  0010  CONCAT    R2 = concat(R2..R8)
  0011  LT        if R0 lt R3   -> -127472
  0012  JMP       (jump)   -> 16
  0013  MOVE      R8 = R0
  0014  GETTABUP  R9 = _ENV[K3('TASK_ID_SEPARATOR')]
  0015  CONCAT    R2 = concat(R2..R8)
  0016  FORLOOP   forloop R4(sBx=-11)   -> 6
  0017  RETURN    return R2..R1
  0018  RETURN    return R0..R-1
; ---------- proto38 [GetCanBeTriggeredNewTasks] ----------
  ; fn ?  line 559-581 np=2 va=0 ms=15 code=49 consts=13 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='TaskDataModel'
  ;   K[2]='GetTaskStartersByChapter'
  ;   K[3]='ipairs'
  ;   K[4]='m_arrOngoingTaskIds'
  ;   K[5]=true
  ;   K[6]='ChapterDataModel'
  ;   K[7]='GetChapterIdByName'
  ;   K[8]='m_mapChapterFinishedTaskIds'
  ;   K[9]='pairs'
  ;   K[10]='GetTaskId'
  ;   K[11]='IsAllConditionSatisfied'
  ;   K[12]=1
  ;   upvals: _ENV
  ;   locals: self(0-49), chapterName(0-49), arrTaskStarters(5-49), mapOngoingTaskIds(6-49), (for generator)(9-13), (for state)(9-13), (for control)(9-13), _(10-11), ongoingTaskId(10-11), arrTasksTriggered(14-49), taskId(15-49), chapterId(20-49), mapFinishedTaskIds(25-49), (for generator)(28-47), (for state)(28-47), (for control)(28-47), _(29-45), starter(29-45)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('TaskDataModel')]
  0002  SELF      R3 = R2[K2('GetTaskStartersByChapter')] (self)
  0003  MOVE      R4 = R0
  0004  CALL      R2 = call(R2, 1 args, 2 rets)
  0005  NEWTABLE  R3 = {} (0 items)
  0006  GETTABUP  R4 = _ENV[K3('ipairs')]
  0007  GETTABLE  R5 = R0[K4('m_arrOngoingTaskIds')]
  0008  CALL      R4 = call(R4, 3 args, 1 rets)
  0009  JMP       (jump)   -> 11
  0010  SETTABLE  R3[R8] = K5(true)
  0011  TFORCALL  tforcall R4
  0012  TFORLOOP  tforloop R6(sBx=-3)   -> 10
  0013  NEWTABLE  R4 = {} (0 items)
  0014  LOADNIL   R5..R5 = nil
  0015  GETTABUP  R6 = _ENV[K0('GM')]
  0016  GETTABLE  R6 = R6[K6('ChapterDataModel')]
  0017  SELF      R7 = R6[K7('GetChapterIdByName')] (self)
  0018  MOVE      R8 = R0
  0019  CALL      R6 = call(R6, 1 args, 2 rets)
  0020  GETTABLE  R7 = R0[K8('m_mapChapterFinishedTaskIds')]
  0021  GETTABLE  R7 = R7[R6]
  0022  TEST      if not R7 then   -> -131047
  0023  JMP       (jump)   -> 25
  0024  NEWTABLE  R7 = {} (0 items)
  0025  GETTABUP  R8 = _ENV[K9('pairs')]
  0026  MOVE      R9 = R0
  0027  CALL      R8 = call(R8, 3 args, 1 rets)
  0028  JMP       (jump)   -> 45
  0029  SELF      R14 = R12[K10('GetTaskId')] (self)
  0030  CALL      R13 = call(R13, 1 args, 1 rets)
  0031  MOVE      R5 = R0
  0032  GETTABLE  R13 = R7[R5]
  0033  TEST      if not R13 then   -> -131036
  0034  JMP       (jump)   -> 45
  0035  GETTABLE  R13 = R3[R5]
  0036  TEST      if not R13 then   -> -131033
  0037  JMP       (jump)   -> 45
  0038  SELF      R14 = R12[K11('IsAllConditionSatisfied')] (self)
  0039  CALL      R13 = call(R13, 1 args, 1 rets)
  0040  TEST      if not R13 then   -> -131030
  0041  JMP       (jump)   -> 45
  0042  LEN       R13 = len R0
  0043  ADD       R13 = K12(1) add R13
  0044  SETTABLE  R4[R13] = R5
  0045  TFORCALL  tforcall R8
  0046  TFORLOOP  tforloop R10(sBx=-18)   -> 29
  0047  RETURN    return R4..R3
  0048  RETURN    return R0..R-1
; ---------- proto39 [_TriggerNewTasks] ----------
  ; fn ?  line 584-595 np=2 va=0 ms=6 code=27 consts=12 upvals=1 protos=0
  ;   K[0]='GetCanBeTriggeredNewTasks'
  ;   K[1]='next'
  ;   K[2]='Table'
  ;   K[3]='ListAppend'
  ;   K[4]='m_arrOngoingTaskIds'
  ;   K[5]='_SaveOngoingData'
  ;   K[6]='IsTestSkipping'
  ;   K[7]='EventDispatcher'
  ;   K[8]='DispatchEvent'
  ;   K[9]='EEventType'
  ;   K[10]='NewTasksUnlocked'
  ;   K[11]='newTaskIds'
  ;   upvals: _ENV
  ;   locals: self(0-27), chapterName(0-27), arrTasksTriggered(3-27)
  0000  SELF      R3 = R0[K0('GetCanBeTriggeredNewTasks')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  GETTABUP  R3 = _ENV[K1('next')]
  0004  MOVE      R4 = R0
  0005  CALL      R3 = call(R3, 1 args, 1 rets)
  0006  TEST      if not R3 then   -> -131064
  0007  JMP       (jump)   -> 26
  0008  GETTABUP  R3 = _ENV[K2('Table')]
  0009  GETTABLE  R3 = R3[K3('ListAppend')]
  0010  GETTABLE  R4 = R0[K4('m_arrOngoingTaskIds')]
  0011  MOVE      R5 = R0
  0012  CALL      R3 = call(R3, 0 args, 2 rets)
  0013  SELF      R4 = R0[K5('_SaveOngoingData')] (self)
  0014  CALL      R3 = call(R3, 0 args, 1 rets)
  0015  GETTABUP  R3 = _ENV[K6('IsTestSkipping')]
  0016  CALL      R3 = call(R3, 1 args, 0 rets)
  0017  TEST      if not R3 then   -> -131052
  0018  JMP       (jump)   -> 26
  0019  GETTABUP  R3 = _ENV[K7('EventDispatcher')]
  0020  GETTABLE  R3 = R3[K8('DispatchEvent')]
  0021  GETTABUP  R4 = _ENV[K9('EEventType')]
  0022  GETTABLE  R4 = R4[K10('NewTasksUnlocked')]
  0023  NEWTABLE  R5 = {} (0 items)
  0024  SETTABLE  R5[K11('newTaskIds')] = R2
  0025  CALL      R3 = call(R3, 0 args, 2 rets)
  0026  RETURN    return R0..R-1
; ---------- proto40 [TryStartNewTasks] ----------
  ; fn ?  line 597-600 np=1 va=0 ms=4 code=4 consts=2 upvals=0 protos=0
  ;   K[0]='_TriggerNewTasks'
  ;   K[1]='m_strOngoingChapterName'
  ;   locals: self(0-4)
  0000  SELF      R2 = R0[K0('_TriggerNewTasks')] (self)
  0001  GETTABLE  R3 = R0[K1('m_strOngoingChapterName')]
  0002  CALL      R1 = call(R1, 0 args, 2 rets)
  0003  RETURN    return R0..R-1
; ---------- proto41 [TryStartNewChapter] ----------
  ; fn ?  line 602-634 np=1 va=0 ms=10 code=61 consts=31 upvals=1 protos=0
  ;   K[0]='IsOngoingChapterProgressFinished'
  ;   K[1]='GM'
  ;   K[2]='ChapterDataModel'
  ;   K[3]='GetNextChapterNameById'
  ;   K[4]='m_nOngoingChapterId'
  ;   K[5]='m_strOngoingChapterName'
  ;   K[6]=1
  ;   K[7]='m_ongoingChapterFinishCount'
  ;   K[8]=0
  ;   K[9]='m_ongoingChapterTotalCount'
  ;   K[10]='TaskDataModel'
  ;   K[11]='GetChapterTaskCount'
  ;   K[12]='_TriggerNewTasks'
  ;   K[13]='_GenerateCleanGoldCost'
  ;   K[14]='GetChapterUnlockRewards'
  ;   K[15]='RewardApi'
  ;   K[16]='AcquireRewardsLogic'
  ;   K[17]='EPropertySource'
  ;   K[18]='Give'
  ;   K[19]='EBIType'
  ;   K[20]='ChapterUnlock'
  ;   K[21]='ERewardScene'
  ;   K[22]='Other'
  ;   K[23]='EGameMode'
  ;   K[24]='Board'
  ;   K[25]='CacheItemType'
  ;   K[26]='Stack'
  ;   K[27]='EventDispatcher'
  ;   K[28]='DispatchEvent'
  ;   K[29]='EEventType'
  ;   K[30]='NewChapterUnlocked'
  ;   upvals: _ENV
  ;   locals: self(0-61), nextChapterName(11-61), arrChapterUnlockRewards(36-61)
  0000  SELF      R2 = R0[K0('IsOngoingChapterProgressFinished')] (self)
  0001  CALL      R1 = call(R1, 1 args, 1 rets)
  0002  TEST      if not R1 then   -> -131067
  0003  JMP       (jump)   -> 6
  0004  LOADBOOL  R1 = false
  0005  RETURN    return R1..R0
  0006  GETTABUP  R1 = _ENV[K1('GM')]
  0007  GETTABLE  R1 = R1[K2('ChapterDataModel')]
  0008  SELF      R2 = R1[K3('GetNextChapterNameById')] (self)
  0009  GETTABLE  R3 = R0[K4('m_nOngoingChapterId')]
  0010  CALL      R1 = call(R1, 1 args, 2 rets)
  0011  TEST      if not R1 then   -> -131058
  0012  JMP       (jump)   -> 15
  0013  LOADBOOL  R2 = false
  0014  RETURN    return R2..R1
  0015  SETTABLE  R0[K5('m_strOngoingChapterName')] = R1
  0016  GETTABLE  R2 = R0[K4('m_nOngoingChapterId')]
  0017  ADD       R2 = K6(1) add R2
  0018  SETTABLE  R0[K4('m_nOngoingChapterId')] = R2
  0019  SETTABLE  R0[K7('m_ongoingChapterFinishCount')] = K8(0)
  0020  GETTABUP  R2 = _ENV[K1('GM')]
  0021  GETTABLE  R2 = R2[K10('TaskDataModel')]
  0022  SELF      R3 = R2[K11('GetChapterTaskCount')] (self)
  0023  GETTABLE  R4 = R0[K5('m_strOngoingChapterName')]
  0024  CALL      R2 = call(R2, 1 args, 2 rets)
  0025  SETTABLE  R0[K9('m_ongoingChapterTotalCount')] = R2
  0026  SELF      R3 = R0[K12('_TriggerNewTasks')] (self)
  0027  MOVE      R4 = R0
  0028  CALL      R2 = call(R2, 0 args, 2 rets)
  0029  SELF      R3 = R0[K13('_GenerateCleanGoldCost')] (self)
  0030  CALL      R2 = call(R2, 0 args, 1 rets)
  0031  GETTABUP  R2 = _ENV[K1('GM')]
  0032  GETTABLE  R2 = R2[K2('ChapterDataModel')]
  0033  SELF      R3 = R2[K14('GetChapterUnlockRewards')] (self)
  0034  GETTABLE  R4 = R0[K4('m_nOngoingChapterId')]
  0035  CALL      R2 = call(R2, 1 args, 2 rets)
  0036  TEST      if not R2 then   -> -131034
  0037  JMP       (jump)   -> 52
  0038  GETTABUP  R3 = _ENV[K15('RewardApi')]
  0039  GETTABLE  R3 = R3[K16('AcquireRewardsLogic')]
  0040  MOVE      R4 = R0
  0041  GETTABUP  R5 = _ENV[K17('EPropertySource')]
  0042  GETTABLE  R5 = R5[K18('Give')]
  0043  GETTABUP  R6 = _ENV[K19('EBIType')]
  0044  GETTABLE  R6 = R6[K20('ChapterUnlock')]
  0045  GETTABUP  R7 = _ENV[K21('ERewardScene')]
  0046  GETTABLE  R7 = R7[K22('Other')]
  0047  GETTABUP  R8 = _ENV[K23('EGameMode')]
  0048  GETTABLE  R8 = R8[K24('Board')]
  0049  GETTABUP  R9 = _ENV[K25('CacheItemType')]
  0050  GETTABLE  R9 = R9[K26('Stack')]
  0051  CALL      R3 = call(R3, 0 args, 6 rets)
  0052  GETTABUP  R3 = _ENV[K27('EventDispatcher')]
  0053  GETTABLE  R3 = R3[K28('DispatchEvent')]
  0054  GETTABUP  R4 = _ENV[K29('EEventType')]
  0055  GETTABLE  R4 = R4[K30('NewChapterUnlocked')]
  0056  CALL      R3 = call(R3, 0 args, 1 rets)
  0057  LOADBOOL  R3 = true
  0058  MOVE      R4 = R0
  0059  RETURN    return R3..R2
  0060  RETURN    return R0..R-1
; ---------- proto42 [IsLastChapter] ----------
  ; fn ?  line 636-639 np=1 va=0 ms=4 code=11 consts=4 upvals=1 protos=0
  ;   K[0]='m_nOngoingChapterId'
  ;   K[1]='GM'
  ;   K[2]='ChapterDataModel'
  ;   K[3]='GetChapterCount'
  ;   upvals: _ENV
  ;   locals: self(0-11), index(1-11)
  0000  GETTABLE  R1 = R0[K0('m_nOngoingChapterId')]
  0001  GETTABUP  R2 = _ENV[K1('GM')]
  0002  GETTABLE  R2 = R2[K2('ChapterDataModel')]
  0003  SELF      R3 = R2[K3('GetChapterCount')] (self)
  0004  CALL      R2 = call(R2, 1 args, 1 rets)
  0005  EQ        if R1 eq R2   -> -130551
  0006  JMP       (jump)   -> 8
  0007  LOADBOOL  R2 = false
  0008  LOADBOOL  R2 = true
  0009  RETURN    return R2..R1
  0010  RETURN    return R0..R-1
; ---------- proto43 [SetAutoChangingChapter] ----------
  ; fn ?  line 641-643 np=2 va=0 ms=2 code=2 consts=1 upvals=0 protos=0
  ;   K[0]='m_bAutoChangingChapter'
  ;   locals: self(0-2), auto(0-2)
  0000  SETTABLE  R0[K0('m_bAutoChangingChapter')] = R1
  0001  RETURN    return R0..R-1
; ---------- proto44 [IsAutoChangingChapter] ----------
  ; fn ?  line 645-647 np=1 va=0 ms=2 code=7 consts=2 upvals=0 protos=0
  ;   K[0]='m_bAutoChangingChapter'
  ;   K[1]=true
  ;   locals: self(0-7)
  0000  GETTABLE  R1 = R0[K0('m_bAutoChangingChapter')]
  0001  EQ        if R1 eq K1(true)   -> -130300
  0002  JMP       (jump)   -> 4
  0003  LOADBOOL  R1 = false
  0004  LOADBOOL  R1 = true
  0005  RETURN    return R1..R0
  0006  RETURN    return R0..R-1
; ---------- proto45 [GetOngoingGroupId] ----------
  ; fn ?  line 649-651 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_ongoingProgressId'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_ongoingProgressId')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto46 [CanClaimProgressReward] ----------
  ; fn ?  line 653-656 np=1 va=0 ms=4 code=10 consts=2 upvals=0 protos=0
  ;   K[0]='GetProgressRewardProgress'
  ;   K[1]=0
  ;   locals: self(0-10), finished(2-10), total(2-10)
  0000  SELF      R2 = R0[K0('GetProgressRewardProgress')] (self)
  0001  CALL      R1 = call(R1, 2 args, 1 rets)
  0002  LT        if R0 lt R2   -> 518
  0003  JMP       (jump)   -> 6
  0004  LE        if R1 le R1   -> -130041
  0005  JMP       (jump)   -> 7
  0006  LOADBOOL  R3 = false
  0007  LOADBOOL  R3 = true
  0008  RETURN    return R3..R2
  0009  RETURN    return R0..R-1
; ---------- proto47 [TryClaimProgressReward] ----------
  ; fn ?  line 658-669 np=1 va=0 ms=9 code=28 consts=19 upvals=1 protos=0
  ;   K[0]='CanClaimProgressReward'
  ;   K[1]='GetProgressReward'
  ;   K[2]='RewardApi'
  ;   K[3]='AcquireRewardsLogic'
  ;   K[4]='EPropertySource'
  ;   K[5]='Give'
  ;   K[6]='EBIType'
  ;   K[7]='TaskGroup'
  ;   K[8]='ERewardScene'
  ;   K[9]='Other'
  ;   K[10]='EGameMode'
  ;   K[11]='Board'
  ;   K[12]='CacheItemType'
  ;   K[13]='Stack'
  ;   K[14]='m_ongoingProgressId'
  ;   K[15]=1
  ;   K[16]='m_progressTaskFinishCount'
  ;   K[17]=0
  ;   K[18]='_SaveTaskProgress'
  ;   upvals: _ENV
  ;   locals: self(0-28), rewards(7-28)
  0000  SELF      R2 = R0[K0('CanClaimProgressReward')] (self)
  0001  CALL      R1 = call(R1, 1 args, 1 rets)
  0002  TEST      if not R1 then   -> -131067
  0003  JMP       (jump)   -> 5
  0004  RETURN    return R0..R-1
  0005  SELF      R2 = R0[K1('GetProgressReward')] (self)
  0006  CALL      R1 = call(R1, 1 args, 1 rets)
  0007  GETTABUP  R2 = _ENV[K2('RewardApi')]
  0008  GETTABLE  R2 = R2[K3('AcquireRewardsLogic')]
  0009  MOVE      R3 = R0
  0010  GETTABUP  R4 = _ENV[K4('EPropertySource')]
  0011  GETTABLE  R4 = R4[K5('Give')]
  0012  GETTABUP  R5 = _ENV[K6('EBIType')]
  0013  GETTABLE  R5 = R5[K7('TaskGroup')]
  0014  GETTABUP  R6 = _ENV[K8('ERewardScene')]
  0015  GETTABLE  R6 = R6[K9('Other')]
  0016  GETTABUP  R7 = _ENV[K10('EGameMode')]
  0017  GETTABLE  R7 = R7[K11('Board')]
  0018  GETTABUP  R8 = _ENV[K12('CacheItemType')]
  0019  GETTABLE  R8 = R8[K13('Stack')]
  0020  CALL      R2 = call(R2, 0 args, 6 rets)
  0021  GETTABLE  R2 = R0[K14('m_ongoingProgressId')]
  0022  ADD       R2 = K15(1) add R2
  0023  SETTABLE  R0[K14('m_ongoingProgressId')] = R2
  0024  SETTABLE  R0[K16('m_progressTaskFinishCount')] = K17(0)
  0025  SELF      R3 = R0[K18('_SaveTaskProgress')] (self)
  0026  CALL      R2 = call(R2, 0 args, 1 rets)
  0027  RETURN    return R0..R-1
; ---------- proto48 [GetProgressRewardProgress] ----------
  ; fn ?  line 671-673 np=1 va=0 ms=5 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='m_progressTaskFinishCount'
  ;   K[1]='GM'
  ;   K[2]='TaskDataModel'
  ;   K[3]='GetTaskGroupNeedNum'
  ;   K[4]='m_ongoingProgressId'
  ;   upvals: _ENV
  ;   locals: self(0-8)
  0000  GETTABLE  R1 = R0[K0('m_progressTaskFinishCount')]
  0001  GETTABUP  R2 = _ENV[K1('GM')]
  0002  GETTABLE  R2 = R2[K2('TaskDataModel')]
  0003  SELF      R3 = R2[K3('GetTaskGroupNeedNum')] (self)
  0004  GETTABLE  R4 = R0[K4('m_ongoingProgressId')]
  0005  CALL      R2 = call(R2, -1 args, 2 rets)
  0006  RETURN    return R1..R0
  0007  RETURN    return R0..R-1
; ---------- proto49 [GetProgressReward] ----------
  ; fn ?  line 675-677 np=2 va=0 ms=5 code=9 consts=4 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='TaskDataModel'
  ;   K[2]='GetTaskGroupRewards'
  ;   K[3]='m_ongoingProgressId'
  ;   upvals: _ENV
  ;   locals: self(0-9), progressId(0-9)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('TaskDataModel')]
  0002  SELF      R3 = R2[K2('GetTaskGroupRewards')] (self)
  0003  TESTSET   if R1 then R4   -> -130554
  0004  JMP       (jump)   -> 6
  0005  GETTABLE  R4 = R0[K3('m_ongoingProgressId')]
  0006  TAILCALL  tailcall(R2, 0)
  0007  RETURN    return R2..R1
  0008  RETURN    return R0..R-1
; ---------- proto50 [_GenerateCleanGoldCost] ----------
  ; fn ?  line 680-735 np=1 va=0 ms=14 code=61 consts=21 upvals=1 protos=1
  ;   K[0]='m_nCleanGoldCount'
  ;   K[1]='GetCurChapterRemainTaskCosts'
  ;   K[2]=0
  ;   K[3]='Log'
  ;   K[4]='Error'
  ;   K[5]='计算清场消耗错误1'
  ;   K[6]='table'
  ;   K[7]='sort'
  ;   K[8]='ipairs'
  ;   K[9]='Cost'
  ;   K[10]='math'
  ;   K[11]='ceil'
  ;   K[12]='Id'
  ;   K[13]='m_mapCleanGoldCost'
  ;   K[14]='_SaveOngoingData'
  ;   K[15]='GameConfig'
  ;   K[16]='IsTestMode'
  ;   K[17]='TestAccumulatedLogInfo'
  ;   K[18]='Start'
  ;   K[19]='TestPrintCleanTaskCost'
  ;   K[20]='LogNow'
  ;   upvals: _ENV
  ;   locals: self(0-61), totalCleanGold(1-61), leftCleanGold(2-61), totalConfigCost(4-61), arrUnfinishedTasks(4-61), mapCleanGoldCost(17-61), (for generator)(20-41), (for state)(20-41), (for control)(20-41), _(21-39), taskData(21-39), cleanCost(24-39)
  0000  GETTABLE  R1 = R0[K0('m_nCleanGoldCount')]
  0001  MOVE      R2 = R0
  0002  SELF      R4 = R0[K1('GetCurChapterRemainTaskCosts')] (self)
  0003  CALL      R3 = call(R3, 2 args, 1 rets)
  0004  LE        if R0 le K2(0)   -> -129272
  0005  JMP       (jump)   -> 11
  0006  GETTABUP  R5 = _ENV[K3('Log')]
  0007  GETTABLE  R5 = R5[K4('Error')]
  0008  LOADK     R6 = K5 '计算清场消耗错误1'
  0009  CALL      R5 = call(R5, 0 args, 1 rets)
  0010  RETURN    return R0..R-1
  0011  GETTABUP  R5 = _ENV[K6('table')]
  0012  GETTABLE  R5 = R5[K7('sort')]
  0013  MOVE      R6 = R0
  0014  CLOSURE   R7 = closure proto0
  0015  CALL      R5 = call(R5, 0 args, 2 rets)
  0016  NEWTABLE  R5 = {} (0 items)
  0017  GETTABUP  R6 = _ENV[K8('ipairs')]
  0018  MOVE      R7 = R0
  0019  CALL      R6 = call(R6, 3 args, 1 rets)
  0020  JMP       (jump)   -> 39
  0021  GETTABLE  R11 = R10[K9('Cost')]
  0022  DIV       R11 = R3 div R11
  0023  MUL       R11 = R1 mul R11
  0024  GETTABUP  R12 = _ENV[K10('math')]
  0025  GETTABLE  R12 = R12[K11('ceil')]
  0026  MOVE      R13 = R0
  0027  CALL      R12 = call(R12, 1 args, 1 rets)
  0028  MOVE      R11 = R0
  0029  LT        if R0 lt R2   -> -125407
  0030  JMP       (jump)   -> 35
  0031  GETTABLE  R12 = R10[K12('Id')]
  0032  SETTABLE  R5[R12] = R11
  0033  SUB       R2 = R11 sub R2
  0034  JMP       (jump)   -> 39
  0035  GETTABLE  R12 = R10[K12('Id')]
  0036  SETTABLE  R5[R12] = R2
  0037  LOADK     R2 = K2 0
  0038  JMP       (jump)   -> 41
  0039  TFORCALL  tforcall R6
  0040  TFORLOOP  tforloop R8(sBx=-20)   -> 21
  0041  SETTABLE  R0[K13('m_mapCleanGoldCost')] = R5
  0042  SELF      R7 = R0[K14('_SaveOngoingData')] (self)
  0043  CALL      R6 = call(R6, 0 args, 1 rets)
  0044  GETTABUP  R6 = _ENV[K15('GameConfig')]
  0045  GETTABLE  R6 = R6[K16('IsTestMode')]
  0046  CALL      R6 = call(R6, 1 args, 0 rets)
  0047  TEST      if not R6 then   -> -131023
  0048  JMP       (jump)   -> 60
  0049  GETTABUP  R6 = _ENV[K17('TestAccumulatedLogInfo')]
  0050  GETTABLE  R6 = R6[K18('Start')]
  0051  CALL      R6 = call(R6, 0 args, 0 rets)
  0052  GETTABUP  R6 = _ENV[K17('TestAccumulatedLogInfo')]
  0053  GETTABLE  R6 = R6[K19('TestPrintCleanTaskCost')]
  0054  MOVE      R7 = R0
  0055  MOVE      R8 = R0
  0056  CALL      R6 = call(R6, 0 args, 2 rets)
  0057  GETTABUP  R6 = _ENV[K17('TestAccumulatedLogInfo')]
  0058  GETTABLE  R6 = R6[K20('LogNow')]
  0059  CALL      R6 = call(R6, 0 args, 0 rets)
  0060  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 708-710 np=2 va=0 ms=4 code=8 consts=1 upvals=0 protos=0
    ;   K[0]='Id'
    ;   locals: taskData1(0-8), taskData2(0-8)
    0000  GETTABLE  R2 = R0[K0('Id')]
    0001  GETTABLE  R3 = R1[K0('Id')]
    0002  LT        if R1 lt R3   -> -130041
    0003  JMP       (jump)   -> 5
    0004  LOADBOOL  R2 = false
    0005  LOADBOOL  R2 = true
    0006  RETURN    return R2..R1
    0007  RETURN    return R0..R-1
; ---------- proto51 [GetTaskCleanGoldCost] ----------
  ; fn ?  line 738-740 np=2 va=0 ms=3 code=7 consts=2 upvals=0 protos=0
  ;   K[0]='m_mapCleanGoldCost'
  ;   K[1]=0
  ;   locals: self(0-7), taskId(0-7)
  0000  GETTABLE  R2 = R0[K0('m_mapCleanGoldCost')]
  0001  GETTABLE  R2 = R2[R1]
  0002  TEST      if not R2 then   -> -131067
  0003  JMP       (jump)   -> 5
  0004  LOADK     R2 = K1 0
  0005  RETURN    return R2..R1
  0006  RETURN    return R0..R-1
; ---------- proto52 [ConsumeTaskCleanGold] ----------
  ; fn ?  line 743-758 np=2 va=0 ms=6 code=28 consts=12 upvals=1 protos=0
  ;   K[0]=0
  ;   K[1]='Log'
  ;   K[2]='Error'
  ;   K[3]='消耗清场金币错误'
  ;   K[4]='m_nCleanGoldCount'
  ;   K[5]='清场金币不够'
  ;   K[6]='_SaveOngoingData'
  ;   K[7]='GM'
  ;   K[8]='BIManager'
  ;   K[9]='LogProject'
  ;   K[10]='EBIProjectType'
  ;   K[11]='ConsumeCleanGold'
  ;   upvals: _ENV
  ;   locals: self(0-28), count(0-28)
  0000  LT        if R0 lt K0(0)   -> -130302
  0001  JMP       (jump)   -> 7
  0002  GETTABUP  R2 = _ENV[K1('Log')]
  0003  GETTABLE  R2 = R2[K2('Error')]
  0004  LOADK     R3 = K3 '消耗清场金币错误'
  0005  CALL      R2 = call(R2, 0 args, 1 rets)
  0006  RETURN    return R0..R-1
  0007  GETTABLE  R2 = R0[K4('m_nCleanGoldCount')]
  0008  LT        if R0 lt R1   -> -130037
  0009  JMP       (jump)   -> 15
  0010  GETTABUP  R2 = _ENV[K1('Log')]
  0011  GETTABLE  R2 = R2[K2('Error')]
  0012  LOADK     R3 = K5 '清场金币不够'
  0013  CALL      R2 = call(R2, 0 args, 1 rets)
  0014  GETTABLE  R1 = R0[K4('m_nCleanGoldCount')]
  0015  GETTABLE  R2 = R0[K4('m_nCleanGoldCount')]
  0016  SUB       R2 = R1 sub R2
  0017  SETTABLE  R0[K4('m_nCleanGoldCount')] = R2
  0018  SELF      R3 = R0[K6('_SaveOngoingData')] (self)
  0019  CALL      R2 = call(R2, 0 args, 1 rets)
  0020  GETTABUP  R2 = _ENV[K7('GM')]
  0021  GETTABLE  R2 = R2[K8('BIManager')]
  0022  SELF      R3 = R2[K9('LogProject')] (self)
  0023  GETTABUP  R4 = _ENV[K10('EBIProjectType')]
  0024  GETTABLE  R4 = R4[K11('ConsumeCleanGold')]
  0025  MOVE      R5 = R0
  0026  CALL      R2 = call(R2, 0 args, 3 rets)
  0027  RETURN    return R0..R-1
; ---------- proto53 [AddTaskCleanGold] ----------
  ; fn ?  line 761-765 np=2 va=0 ms=6 code=13 consts=7 upvals=1 protos=0
  ;   K[0]='m_nCleanGoldCount'
  ;   K[1]='_SaveOngoingData'
  ;   K[2]='GM'
  ;   K[3]='BIManager'
  ;   K[4]='LogProject'
  ;   K[5]='EBIProjectType'
  ;   K[6]='AcquireCleanGold'
  ;   upvals: _ENV
  ;   locals: self(0-13), count(0-13)
  0000  GETTABLE  R2 = R0[K0('m_nCleanGoldCount')]
  0001  ADD       R2 = R1 add R2
  0002  SETTABLE  R0[K0('m_nCleanGoldCount')] = R2
  0003  SELF      R3 = R0[K1('_SaveOngoingData')] (self)
  0004  CALL      R2 = call(R2, 0 args, 1 rets)
  0005  GETTABUP  R2 = _ENV[K2('GM')]
  0006  GETTABLE  R2 = R2[K3('BIManager')]
  0007  SELF      R3 = R2[K4('LogProject')] (self)
  0008  GETTABUP  R4 = _ENV[K5('EBIProjectType')]
  0009  GETTABLE  R4 = R4[K6('AcquireCleanGold')]
  0010  MOVE      R5 = R0
  0011  CALL      R2 = call(R2, 0 args, 3 rets)
  0012  RETURN    return R0..R-1
; ---------- proto54 [GetCleanGoldCount] ----------
  ; fn ?  line 769-771 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_nCleanGoldCount'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_nCleanGoldCount')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto55 [TryBalanceTaskCost] ----------
  ; fn ?  line 776-830 np=1 va=0 ms=23 code=160 consts=40 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MainBoardModel'
  ;   K[2]='GetOrderModel'
  ;   K[3]='ConfigModel'
  ;   K[4]='IsServerControlOpen'
  ;   K[5]='EGeneralConfType'
  ;   K[6]='BalanceGold'
  ;   K[7]='IsGuideGroup'
  ;   K[8]='IsSameChapterWithTask'
  ;   K[9]='IsAllFinished'
  ;   K[10]='GetChapterCanGetGolds'
  ;   K[11]='ChapterDataModel'
  ;   K[12]='GetChapterRemainGold'
  ;   K[13]='m_nOngoingChapterId'
  ;   K[14]='GetCurChapterRemainTaskCosts'
  ;   K[15]=0
  ;   K[16]='Log'
  ;   K[17]='Info'
  ;   K[18]='金币平衡：开始 canGet '
  ;   K[19]=', remainCost '
  ;   K[20]=', delta '
  ;   K[21]='BIManager'
  ;   K[22]='LogAction'
  ;   K[23]='EBIType'
  ;   K[24]='GoldBalance'
  ;   K[25]='math'
  ;   K[26]='min'
  ;   K[27]=2
  ;   K[28]='金币平衡：金币过多，增加消耗，增加 '
  ;   K[29]=', 平均每个增加 '
  ;   K[30]='ipairs'
  ;   K[31]='Cost'
  ;   K[32]='ceil'
  ;   K[33]='金币平衡：金币过多，增加消耗，id '
  ;   K[34]='Id'
  ;   K[35]=', 之前 '
  ;   K[36]='，现在 '
  ;   K[37]='金币平衡：金币过少，减少消耗，减少 '
  ;   K[38]=', 平均每个减少 '
  ;   K[39]='金币平衡：金币过少，减少消耗，id '
  ;   upvals: _ENV
  ;   locals: self(0-160), orderModel(4-160), canGet(27-160), allowRemain(32-160), remainCost(34-160), arrUnfinishedTasks(34-160), delta(39-160), totalAdjustCount(65-104), oneAdjustCount(66-104), (for generator)(77-104), (for state)(77-104), (for control)(77-104), _(78-102), task(78-102), oriCost(79-102), adjustCount(83-102), totalAdjustCount(112-157), oneAdjustCount(113-157), (for generator)(124-157), (for state)(124-157), (for control)(124-157), _(125-155), task(125-155), oriCost(126-155), adjustCount(130-155)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('MainBoardModel')]
  0002  SELF      R2 = R1[K2('GetOrderModel')] (self)
  0003  CALL      R1 = call(R1, 1 args, 1 rets)
  0004  GETTABUP  R2 = _ENV[K0('GM')]
  0005  GETTABLE  R2 = R2[K3('ConfigModel')]
  0006  SELF      R3 = R2[K4('IsServerControlOpen')] (self)
  0007  GETTABUP  R4 = _ENV[K5('EGeneralConfType')]
  0008  GETTABLE  R4 = R4[K6('BalanceGold')]
  0009  CALL      R2 = call(R2, 1 args, 2 rets)
  0010  TEST      if not R2 then   -> -131060
  0011  JMP       (jump)   -> 24
  0012  SELF      R3 = R1[K7('IsGuideGroup')] (self)
  0013  CALL      R2 = call(R2, 1 args, 1 rets)
  0014  TEST      if not R2 then   -> -131055
  0015  JMP       (jump)   -> 24
  0016  SELF      R3 = R1[K8('IsSameChapterWithTask')] (self)
  0017  CALL      R2 = call(R2, 1 args, 1 rets)
  0018  TEST      if not R2 then   -> -131052
  0019  JMP       (jump)   -> 24
  0020  SELF      R3 = R0[K9('IsAllFinished')] (self)
  0021  CALL      R2 = call(R2, 1 args, 1 rets)
  0022  TEST      if not R2 then   -> -131048
  0023  JMP       (jump)   -> 25
  0024  RETURN    return R0..R-1
  0025  SELF      R3 = R1[K10('GetChapterCanGetGolds')] (self)
  0026  CALL      R2 = call(R2, 1 args, 1 rets)
  0027  GETTABUP  R3 = _ENV[K0('GM')]
  0028  GETTABLE  R3 = R3[K11('ChapterDataModel')]
  0029  SELF      R4 = R3[K12('GetChapterRemainGold')] (self)
  0030  GETTABLE  R5 = R0[K13('m_nOngoingChapterId')]
  0031  CALL      R3 = call(R3, 1 args, 2 rets)
  0032  SELF      R5 = R0[K14('GetCurChapterRemainTaskCosts')] (self)
  0033  CALL      R4 = call(R4, 2 args, 1 rets)
  0034  EQ        if R0 eq K15(0)   -> -128717
  0035  JMP       (jump)   -> 37
  0036  RETURN    return R0..R-1
  0037  SUB       R6 = R4 sub R2
  0038  SUB       R6 = R3 sub R6
  0039  GETTABUP  R7 = _ENV[K16('Log')]
  0040  GETTABLE  R7 = R7[K17('Info')]
  0041  LOADK     R8 = K18 '金币平衡：开始 canGet '
  0042  MOVE      R9 = R0
  0043  LOADK     R10 = K19 ', remainCost '
  0044  MOVE      R11 = R0
  0045  LOADK     R12 = K20 ', delta '
  0046  MOVE      R13 = R0
  0047  CONCAT    R8 = concat(R8..R8)
  0048  CALL      R7 = call(R7, 0 args, 1 rets)
  0049  EQ        if R1 eq K15(0)   -> -127678
  0050  JMP       (jump)   -> 58
  0051  GETTABUP  R7 = _ENV[K0('GM')]
  0052  GETTABLE  R7 = R7[K21('BIManager')]
  0053  SELF      R8 = R7[K22('LogAction')] (self)
  0054  GETTABUP  R9 = _ENV[K23('EBIType')]
  0055  GETTABLE  R9 = R9[K24('GoldBalance')]
  0056  MOVE      R10 = R0
  0057  CALL      R7 = call(R7, 0 args, 3 rets)
  0058  LT        if R0 lt R6   -> 7746
  0059  JMP       (jump)   -> 105
  0060  GETTABUP  R7 = _ENV[K25('math')]
  0061  GETTABLE  R7 = R7[K26('min')]
  0062  MUL       R8 = K27(2) mul R4
  0063  MOVE      R9 = R0
  0064  CALL      R7 = call(R7, 1 args, 2 rets)
  0065  DIV       R8 = R4 div R7
  0066  GETTABUP  R9 = _ENV[K16('Log')]
  0067  GETTABLE  R9 = R9[K17('Info')]
  0068  LOADK     R10 = K28 '金币平衡：金币过多，增加消耗，增加 '
  0069  MOVE      R11 = R0
  0070  LOADK     R12 = K29 ', 平均每个增加 '
  0071  MOVE      R13 = R0
  0072  CONCAT    R10 = concat(R10..R10)
  0073  CALL      R9 = call(R9, 0 args, 1 rets)
  0074  GETTABUP  R9 = _ENV[K30('ipairs')]
  0075  MOVE      R10 = R0
  0076  CALL      R9 = call(R9, 3 args, 1 rets)
  0077  JMP       (jump)   -> 102
  0078  GETTABLE  R14 = R13[K31('Cost')]
  0079  GETTABUP  R15 = _ENV[K25('math')]
  0080  GETTABLE  R15 = R15[K32('ceil')]
  0081  MUL       R16 = R8 mul R14
  0082  CALL      R15 = call(R15, 1 args, 1 rets)
  0083  GETTABUP  R16 = _ENV[K25('math')]
  0084  GETTABLE  R16 = R16[K26('min')]
  0085  MOVE      R17 = R0
  0086  MOVE      R18 = R0
  0087  CALL      R16 = call(R16, 1 args, 2 rets)
  0088  MOVE      R15 = R0
  0089  ADD       R16 = R15 add R14
  0090  SETTABLE  R13[K31('Cost')] = R16
  0091  SUB       R7 = R15 sub R7
  0092  GETTABUP  R16 = _ENV[K16('Log')]
  0093  GETTABLE  R16 = R16[K17('Info')]
  0094  LOADK     R17 = K33 '金币平衡：金币过多，增加消耗，id '
  0095  GETTABLE  R18 = R13[K34('Id')]
  0096  LOADK     R19 = K35 ', 之前 '
  0097  MOVE      R20 = R0
  0098  LOADK     R21 = K36 '，现在 '
  0099  GETTABLE  R22 = R13[K31('Cost')]
  0100  CONCAT    R17 = concat(R17..R17)
  0101  CALL      R16 = call(R16, 0 args, 1 rets)
  0102  TFORCALL  tforcall R9
  0103  TFORLOOP  tforloop R11(sBx=-26)   -> 78
  0104  JMP       (jump)   -> 159
  0105  LT        if R0 lt K15(0)   -> -127622
  0106  JMP       (jump)   -> 158
  0107  GETTABUP  R7 = _ENV[K25('math')]
  0108  GETTABLE  R7 = R7[K26('min')]
  0109  MOVE      R8 = R0
  0110  UNM       R9 = unm R0
  0111  CALL      R7 = call(R7, 1 args, 2 rets)
  0112  DIV       R8 = R4 div R7
  0113  GETTABUP  R9 = _ENV[K16('Log')]
  0114  GETTABLE  R9 = R9[K17('Info')]
  0115  LOADK     R10 = K37 '金币平衡：金币过少，减少消耗，减少 '
  0116  MOVE      R11 = R0
  0117  LOADK     R12 = K38 ', 平均每个减少 '
  0118  MOVE      R13 = R0
  0119  CONCAT    R10 = concat(R10..R10)
  0120  CALL      R9 = call(R9, 0 args, 1 rets)
  0121  GETTABUP  R9 = _ENV[K30('ipairs')]
  0122  MOVE      R10 = R0
  0123  CALL      R9 = call(R9, 3 args, 1 rets)
  0124  JMP       (jump)   -> 155
  0125  GETTABLE  R14 = R13[K31('Cost')]
  0126  GETTABUP  R15 = _ENV[K25('math')]
  0127  GETTABLE  R15 = R15[K32('ceil')]
  0128  MUL       R16 = R8 mul R14
  0129  CALL      R15 = call(R15, 1 args, 1 rets)
  0130  GETTABUP  R16 = _ENV[K25('math')]
  0131  GETTABLE  R16 = R16[K26('min')]
  0132  MOVE      R17 = R0
  0133  MOVE      R18 = R0
  0134  CALL      R16 = call(R16, 1 args, 2 rets)
  0135  MOVE      R15 = R0
  0136  GETTABUP  R16 = _ENV[K25('math')]
  0137  GETTABLE  R16 = R16[K26('min')]
  0138  MOVE      R17 = R0
  0139  MOVE      R18 = R0
  0140  CALL      R16 = call(R16, 1 args, 2 rets)
  0141  MOVE      R15 = R0
  0142  SUB       R16 = R15 sub R14
  0143  SETTABLE  R13[K31('Cost')] = R16
  0144  SUB       R7 = R15 sub R7
  0145  GETTABUP  R16 = _ENV[K16('Log')]
  0146  GETTABLE  R16 = R16[K17('Info')]
  0147  LOADK     R17 = K39 '金币平衡：金币过少，减少消耗，id '
  0148  GETTABLE  R18 = R13[K34('Id')]
  0149  LOADK     R19 = K35 ', 之前 '
  0150  MOVE      R20 = R0
  0151  LOADK     R21 = K36 '，现在 '
  0152  GETTABLE  R22 = R13[K31('Cost')]
  0153  CONCAT    R17 = concat(R17..R17)
  0154  CALL      R16 = call(R16, 0 args, 1 rets)
  0155  TFORCALL  tforcall R9
  0156  TFORLOOP  tforloop R11(sBx=-32)   -> 125
  0157  JMP       (jump)   -> 159
  0158  RETURN    return R0..R-1
  0159  RETURN    return R0..R-1
; ---------- proto56 [GetCurChapterRemainTaskCosts] ----------
  ; fn ?  line 832-844 np=1 va=0 ms=11 code=31 consts=10 upvals=1 protos=0
  ;   K[0]='m_mapChapterFinishedTaskIds'
  ;   K[1]='m_nOngoingChapterId'
  ;   K[2]='GM'
  ;   K[3]='TaskDataModel'
  ;   K[4]='GetTaskDatasByChapter'
  ;   K[5]='m_strOngoingChapterName'
  ;   K[6]=0
  ;   K[7]='pairs'
  ;   K[8]=1
  ;   K[9]='Cost'
  ;   upvals: _ENV
  ;   locals: self(0-31), arrUnfinishedTasks(1-31), mapFinishedTaskIds(7-31), mapTaskData(12-31), cost(13-31), (for generator)(16-27), (for state)(16-27), (for control)(16-27), taskId(17-25), task(17-25)
  0000  NEWTABLE  R1 = {} (0 items)
  0001  GETTABLE  R2 = R0[K0('m_mapChapterFinishedTaskIds')]
  0002  GETTABLE  R3 = R0[K1('m_nOngoingChapterId')]
  0003  GETTABLE  R2 = R2[R3]
  0004  TEST      if not R2 then   -> -131065
  0005  JMP       (jump)   -> 7
  0006  NEWTABLE  R2 = {} (0 items)
  0007  GETTABUP  R3 = _ENV[K2('GM')]
  0008  GETTABLE  R3 = R3[K3('TaskDataModel')]
  0009  SELF      R4 = R3[K4('GetTaskDatasByChapter')] (self)
  0010  GETTABLE  R5 = R0[K5('m_strOngoingChapterName')]
  0011  CALL      R3 = call(R3, 1 args, 2 rets)
  0012  LOADK     R4 = K6 0
  0013  GETTABUP  R5 = _ENV[K7('pairs')]
  0014  MOVE      R6 = R0
  0015  CALL      R5 = call(R5, 3 args, 1 rets)
  0016  JMP       (jump)   -> 25
  0017  GETTABLE  R10 = R2[R8]
  0018  TEST      if not R10 then   -> -131051
  0019  JMP       (jump)   -> 25
  0020  LEN       R10 = len R0
  0021  ADD       R10 = K8(1) add R10
  0022  SETTABLE  R1[R10] = R9
  0023  GETTABLE  R10 = R9[K9('Cost')]
  0024  ADD       R4 = R10 add R4
  0025  TFORCALL  tforcall R5
  0026  TFORLOOP  tforloop R7(sBx=-10)   -> 17
  0027  MOVE      R5 = R0
  0028  MOVE      R6 = R0
  0029  RETURN    return R5..R4
  0030  RETURN    return R0..R-1
; ---------- proto57 [HasPopedChapterFinishWin] ----------
  ; fn ?  line 847-850 np=1 va=0 ms=5 code=12 consts=5 upvals=2 protos=0
  ;   K[0]='m_metaDBTable'
  ;   K[1]='GetInNumber'
  ;   K[2]='ChapterFinishWin'
  ;   K[3]='DB_VALUE_KEY'
  ;   K[4]='m_nOngoingChapterId'
  ;   upvals: EMetaDBKey, _ENV
  ;   locals: self(0-12), chapterId(5-12)
  0000  GETTABLE  R1 = R0[K0('m_metaDBTable')]
  0001  SELF      R2 = R1[K1('GetInNumber')] (self)
  0002  GETTABUP  R3 = EMetaDBKey[K2('ChapterFinishWin')]
  0003  GETTABUP  R4 = _ENV[K3('DB_VALUE_KEY')]
  0004  CALL      R1 = call(R1, 1 args, 3 rets)
  0005  GETTABLE  R2 = R0[K4('m_nOngoingChapterId')]
  0006  LE        if R1 le R1   -> -130039
  0007  JMP       (jump)   -> 9
  0008  LOADBOOL  R2 = false
  0009  LOADBOOL  R2 = true
  0010  RETURN    return R2..R1
  0011  RETURN    return R0..R-1
; ---------- proto58 [SetPopedChapterFinishWin] ----------
  ; fn ?  line 852-854 np=1 va=0 ms=6 code=7 consts=5 upvals=2 protos=0
  ;   K[0]='m_metaDBTable'
  ;   K[1]='Set'
  ;   K[2]='ChapterFinishWin'
  ;   K[3]='DB_VALUE_KEY'
  ;   K[4]='m_nOngoingChapterId'
  ;   upvals: EMetaDBKey, _ENV
  ;   locals: self(0-7)
  0000  GETTABLE  R1 = R0[K0('m_metaDBTable')]
  0001  SELF      R2 = R1[K1('Set')] (self)
  0002  GETTABUP  R3 = EMetaDBKey[K2('ChapterFinishWin')]
  0003  GETTABUP  R4 = _ENV[K3('DB_VALUE_KEY')]
  0004  GETTABLE  R5 = R0[K4('m_nOngoingChapterId')]
  0005  CALL      R1 = call(R1, 0 args, 4 rets)
  0006  RETURN    return R0..R-1
; ---------- proto59 [GetCurChapterFinishedTaskRewards] ----------
  ; fn ?  line 856-865 np=1 va=0 ms=12 code=25 consts=6 upvals=1 protos=0
  ;   K[0]='m_mapChapterFinishedTaskIds'
  ;   K[1]='m_nOngoingChapterId'
  ;   K[2]='pairs'
  ;   K[3]='GetTaskRewards'
  ;   K[4]='Table'
  ;   K[5]='ListAppend'
  ;   upvals: _ENV
  ;   locals: self(0-25), totalRewards(1-25), mapFinishedTaskIds(7-25), rewards(8-25), (for generator)(11-23), (for state)(11-23), (for control)(11-23), taskId(12-21), _(12-21)
  0000  NEWTABLE  R1 = {} (0 items)
  0001  GETTABLE  R2 = R0[K0('m_mapChapterFinishedTaskIds')]
  0002  GETTABLE  R3 = R0[K1('m_nOngoingChapterId')]
  0003  GETTABLE  R2 = R2[R3]
  0004  TEST      if not R2 then   -> -131065
  0005  JMP       (jump)   -> 7
  0006  NEWTABLE  R2 = {} (0 items)
  0007  LOADNIL   R3..R3 = nil
  0008  GETTABUP  R4 = _ENV[K2('pairs')]
  0009  MOVE      R5 = R0
  0010  CALL      R4 = call(R4, 3 args, 1 rets)
  0011  JMP       (jump)   -> 21
  0012  SELF      R10 = R0[K3('GetTaskRewards')] (self)
  0013  MOVE      R11 = R0
  0014  CALL      R9 = call(R9, 1 args, 2 rets)
  0015  MOVE      R3 = R0
  0016  GETTABUP  R9 = _ENV[K4('Table')]
  0017  GETTABLE  R9 = R9[K5('ListAppend')]
  0018  MOVE      R10 = R0
  0019  MOVE      R11 = R0
  0020  CALL      R9 = call(R9, 0 args, 2 rets)
  0021  TFORCALL  tforcall R4
  0022  TFORLOOP  tforloop R6(sBx=-11)   -> 12
  0023  RETURN    return R1..R0
  0024  RETURN    return R0..R-1
