# Model_EqBubbleModel_195.luac
; fn @EqBubbleModel.lua  line 0-0 np=0 va=1 ms=2 code=138 consts=46 upvals=1 protos=44
;   K[0]='EqBubbleModel'
;   K[1]='__index'
;   K[2]='Init'
;   K[3]='Destroy'
;   K[4]='_IsConfigReleased'
;   K[5]='LoadServerConfig'
;   K[6]='_CheckConfigValid'
;   K[7]='LateInit'
;   K[8]='_CheckConfigReleased'
;   K[9]='UpdatePerSecond'
;   K[10]='_OnItemStored'
;   K[11]='TryEndTriggerItem'
;   K[12]='TryEndTrigger'
;   K[13]='IsEqHasBubble'
;   K[14]='CalculatePrice'
;   K[15]='GetEqBubbleLeftDuration'
;   K[16]='OnEqBubbleExpired'
;   K[17]='_UpdateItemCookView'
;   K[18]='ClearEqBubble'
;   K[19]='OnEqBubbleBought'
;   K[20]='GetCDDuration'
;   K[21]='GetCDEndTimestamp'
;   K[22]='IsInCD'
;   K[23]='_IsTriggered'
;   K[24]='EnterCD'
;   K[25]='_Log'
;   K[26]='_LogError'
;   K[27]='_IsTriggerStateValid'
;   K[28]='IsRecipePriceValid'
;   K[29]='IsRecipeMeetsCostRequirement'
;   K[30]='CalculateAllLackMaterials'
;   K[31]='IsInCookDishMaterialExist'
;   K[32]='CalculateOnlyRecipe'
;   K[33]='_CanTriggerEqBubble'
;   K[34]='TryTriggerEqBubble'
;   K[35]='_OnEqBubbleTriggered'
;   K[36]='GetTriggeredItemId'
;   K[37]='SetTriggeredItemId'
;   K[38]='GetTriggeredTimestamp'
;   K[39]='SetTriggeredTimestamp'
;   K[40]='GetTriggeredRecipe'
;   K[41]='SetTriggeredRecipe'
;   K[42]='GetStartCDTimestamp'
;   K[43]='SetStartCDTimestamp'
;   K[44]='IsLastBuy'
;   K[45]='SetLastBuy'
;   upvals: _ENV
0000  NEWTABLE  R0 = {} (0 items)
0001  SETTABUP  _ENV[K0('EqBubbleModel')] = R0
0002  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0003  GETTABUP  R1 = _ENV[K0('EqBubbleModel')]
0004  SETTABLE  R0[K1('__index')] = R1
0005  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0006  CLOSURE   R1 = closure proto0
0007  SETTABLE  R0[K2('Init')] = R1
0008  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0009  CLOSURE   R1 = closure proto1
0010  SETTABLE  R0[K3('Destroy')] = R1
0011  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0012  CLOSURE   R1 = closure proto2
0013  SETTABLE  R0[K4('_IsConfigReleased')] = R1
0014  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0015  CLOSURE   R1 = closure proto3
0016  SETTABLE  R0[K5('LoadServerConfig')] = R1
0017  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0018  CLOSURE   R1 = closure proto4
0019  SETTABLE  R0[K6('_CheckConfigValid')] = R1
0020  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0021  CLOSURE   R1 = closure proto5
0022  SETTABLE  R0[K7('LateInit')] = R1
0023  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0024  CLOSURE   R1 = closure proto6
0025  SETTABLE  R0[K8('_CheckConfigReleased')] = R1
0026  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0027  CLOSURE   R1 = closure proto7
0028  SETTABLE  R0[K9('UpdatePerSecond')] = R1
0029  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0030  CLOSURE   R1 = closure proto8
0031  SETTABLE  R0[K10('_OnItemStored')] = R1
0032  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0033  CLOSURE   R1 = closure proto9
0034  SETTABLE  R0[K11('TryEndTriggerItem')] = R1
0035  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0036  CLOSURE   R1 = closure proto10
0037  SETTABLE  R0[K12('TryEndTrigger')] = R1
0038  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0039  CLOSURE   R1 = closure proto11
0040  SETTABLE  R0[K13('IsEqHasBubble')] = R1
0041  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0042  CLOSURE   R1 = closure proto12
0043  SETTABLE  R0[K14('CalculatePrice')] = R1
0044  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0045  CLOSURE   R1 = closure proto13
0046  SETTABLE  R0[K15('GetEqBubbleLeftDuration')] = R1
0047  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0048  CLOSURE   R1 = closure proto14
0049  SETTABLE  R0[K16('OnEqBubbleExpired')] = R1
0050  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0051  CLOSURE   R1 = closure proto15
0052  SETTABLE  R0[K17('_UpdateItemCookView')] = R1
0053  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0054  CLOSURE   R1 = closure proto16
0055  SETTABLE  R0[K18('ClearEqBubble')] = R1
0056  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0057  CLOSURE   R1 = closure proto17
0058  SETTABLE  R0[K19('OnEqBubbleBought')] = R1
0059  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0060  CLOSURE   R1 = closure proto18
0061  SETTABLE  R0[K20('GetCDDuration')] = R1
0062  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0063  CLOSURE   R1 = closure proto19
0064  SETTABLE  R0[K21('GetCDEndTimestamp')] = R1
0065  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0066  CLOSURE   R1 = closure proto20
0067  SETTABLE  R0[K22('IsInCD')] = R1
0068  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0069  CLOSURE   R1 = closure proto21
0070  SETTABLE  R0[K23('_IsTriggered')] = R1
0071  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0072  CLOSURE   R1 = closure proto22
0073  SETTABLE  R0[K24('EnterCD')] = R1
0074  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0075  CLOSURE   R1 = closure proto23
0076  SETTABLE  R0[K25('_Log')] = R1
0077  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0078  CLOSURE   R1 = closure proto24
0079  SETTABLE  R0[K26('_LogError')] = R1
0080  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0081  CLOSURE   R1 = closure proto25
0082  SETTABLE  R0[K27('_IsTriggerStateValid')] = R1
0083  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0084  CLOSURE   R1 = closure proto26
0085  SETTABLE  R0[K28('IsRecipePriceValid')] = R1
0086  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0087  CLOSURE   R1 = closure proto27
0088  SETTABLE  R0[K29('IsRecipeMeetsCostRequirement')] = R1
0089  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0090  CLOSURE   R1 = closure proto28
0091  SETTABLE  R0[K30('CalculateAllLackMaterials')] = R1
0092  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0093  CLOSURE   R1 = closure proto29
0094  SETTABLE  R0[K31('IsInCookDishMaterialExist')] = R1
0095  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0096  CLOSURE   R1 = closure proto30
0097  SETTABLE  R0[K32('CalculateOnlyRecipe')] = R1
0098  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0099  CLOSURE   R1 = closure proto31
0100  SETTABLE  R0[K33('_CanTriggerEqBubble')] = R1
0101  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0102  CLOSURE   R1 = closure proto32
0103  SETTABLE  R0[K34('TryTriggerEqBubble')] = R1
0104  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0105  CLOSURE   R1 = closure proto33
0106  SETTABLE  R0[K35('_OnEqBubbleTriggered')] = R1
0107  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0108  CLOSURE   R1 = closure proto34
0109  SETTABLE  R0[K36('GetTriggeredItemId')] = R1
0110  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0111  CLOSURE   R1 = closure proto35
0112  SETTABLE  R0[K37('SetTriggeredItemId')] = R1
0113  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0114  CLOSURE   R1 = closure proto36
0115  SETTABLE  R0[K38('GetTriggeredTimestamp')] = R1
0116  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0117  CLOSURE   R1 = closure proto37
0118  SETTABLE  R0[K39('SetTriggeredTimestamp')] = R1
0119  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0120  CLOSURE   R1 = closure proto38
0121  SETTABLE  R0[K40('GetTriggeredRecipe')] = R1
0122  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0123  CLOSURE   R1 = closure proto39
0124  SETTABLE  R0[K41('SetTriggeredRecipe')] = R1
0125  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0126  CLOSURE   R1 = closure proto40
0127  SETTABLE  R0[K42('GetStartCDTimestamp')] = R1
0128  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0129  CLOSURE   R1 = closure proto41
0130  SETTABLE  R0[K43('SetStartCDTimestamp')] = R1
0131  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0132  CLOSURE   R1 = closure proto42
0133  SETTABLE  R0[K44('IsLastBuy')] = R1
0134  GETTABUP  R0 = _ENV[K0('EqBubbleModel')]
0135  CLOSURE   R1 = closure proto43
0136  SETTABLE  R0[K45('SetLastBuy')] = R1
0137  RETURN    return R0..R-1
; ---------- proto0 [Init] ----------
  ; fn ?  line 17-19 np=1 va=0 ms=5 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='EventDispatcher'
  ;   K[1]='AddListener'
  ;   K[2]='EEventType'
  ;   K[3]='ItemStored'
  ;   K[4]='_OnItemStored'
  ;   upvals: _ENV
  ;   locals: self(0-8)
  0000  GETTABUP  R1 = _ENV[K0('EventDispatcher')]
  0001  GETTABLE  R1 = R1[K1('AddListener')]
  0002  GETTABUP  R2 = _ENV[K2('EEventType')]
  0003  GETTABLE  R2 = R2[K3('ItemStored')]
  0004  MOVE      R3 = R0
  0005  GETTABLE  R4 = R0[K4('_OnItemStored')]
  0006  CALL      R1 = call(R1, 0 args, 3 rets)
  0007  RETURN    return R0..R-1
; ---------- proto1 [Destroy] ----------
  ; fn ?  line 21-23 np=1 va=0 ms=3 code=5 consts=2 upvals=1 protos=0
  ;   K[0]='EventDispatcher'
  ;   K[1]='RemoveTarget'
  ;   upvals: _ENV
  ;   locals: self(0-5)
  0000  GETTABUP  R1 = _ENV[K0('EventDispatcher')]
  0001  GETTABLE  R1 = R1[K1('RemoveTarget')]
  0002  MOVE      R2 = R0
  0003  CALL      R1 = call(R1, 0 args, 1 rets)
  0004  RETURN    return R0..R-1
; ---------- proto2 [_IsConfigReleased] ----------
  ; fn ?  line 25-31 np=1 va=0 ms=3 code=21 consts=5 upvals=1 protos=0
  ;   K[0]='m_config'
  ;   K[1]='rTime'
  ;   K[2]='GM'
  ;   K[3]='GameModel'
  ;   K[4]='GetServerTime'
  ;   upvals: _ENV
  ;   locals: self(0-21)
  0000  GETTABLE  R1 = R0[K0('m_config')]
  0001  TEST      if not R1 then   -> -131068
  0002  JMP       (jump)   -> 5
  0003  LOADBOOL  R1 = true
  0004  RETURN    return R1..R0
  0005  GETTABLE  R1 = R0[K0('m_config')]
  0006  GETTABLE  R1 = R1[K1('rTime')]
  0007  TEST      if not R1 then   -> -131063
  0008  JMP       (jump)   -> 19
  0009  GETTABUP  R1 = _ENV[K2('GM')]
  0010  GETTABLE  R1 = R1[K3('GameModel')]
  0011  SELF      R2 = R1[K4('GetServerTime')] (self)
  0012  CALL      R1 = call(R1, 1 args, 1 rets)
  0013  GETTABLE  R2 = R0[K0('m_config')]
  0014  GETTABLE  R2 = R2[K1('rTime')]
  0015  LE        if R1 le R1   -> -130030
  0016  JMP       (jump)   -> 18
  0017  LOADBOOL  R1 = false
  0018  LOADBOOL  R1 = true
  0019  RETURN    return R1..R0
  0020  RETURN    return R0..R-1
; ---------- proto3 [LoadServerConfig] ----------
  ; fn ?  line 33-71 np=1 va=0 ms=14 code=112 consts=38 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='ConfigModel'
  ;   K[2]='GetServerConfigMD5'
  ;   K[3]='ServerConfigKey'
  ;   K[4]='EqBubble'
  ;   K[5]='m_md5'
  ;   K[6]='GetServerConfig'
  ;   K[7]='m_config'
  ;   K[8]='eq_bubble'
  ;   K[9]=1
  ;   K[10]='m_bEnabled'
  ;   K[11]='Table'
  ;   K[12]='IsEmpty'
  ;   K[13]='_IsConfigReleased'
  ;   K[14]='math'
  ;   K[15]='maxinteger'
  ;   K[16]='m_passCdInSeconds'
  ;   K[17]='pass_cd'
  ;   K[18]='m_buyCdInSeconds'
  ;   K[19]='buy_cd'
  ;   K[20]='m_minTriggerGemCount'
  ;   K[21]='gem_min'
  ;   K[22]='m_maxTriggerGemCount'
  ;   K[23]='gem_max'
  ;   K[24]=0
  ;   K[25]='m_bubbleDurationInSeconds'
  ;   K[26]='duration'
  ;   K[27]='item_trig_rate'
  ;   K[28]='m_arrTriggerConfig'
  ;   K[29]='ipairs'
  ;   K[30]='minMaterialCount'
  ;   K[31]='ternion_entry'
  ;   K[32]='maxMaterialCount'
  ;   K[33]=2
  ;   K[34]='rate'
  ;   K[35]=3
  ;   K[36]='_CheckConfigValid'
  ;   K[37]='_CheckConfigReleased'
  ;   upvals: _ENV
  ;   locals: self(0-112), md5(6-112), config(20-112), maxInteger(46-112), triggerConfig(75-112), (for generator)(80-107), (for state)(80-107), (for control)(80-107), _(81-105), tc(81-105)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('ConfigModel')]
  0002  SELF      R2 = R1[K2('GetServerConfigMD5')] (self)
  0003  GETTABUP  R3 = _ENV[K3('ServerConfigKey')]
  0004  GETTABLE  R3 = R3[K4('EqBubble')]
  0005  CALL      R1 = call(R1, 1 args, 2 rets)
  0006  GETTABLE  R2 = R0[K5('m_md5')]
  0007  EQ        if R0 eq R1   -> -130038
  0008  JMP       (jump)   -> 10
  0009  RETURN    return R0..R-1
  0010  SETTABLE  R0[K5('m_md5')] = R1
  0011  GETTABUP  R2 = _ENV[K0('GM')]
  0012  GETTABLE  R2 = R2[K1('ConfigModel')]
  0013  SELF      R3 = R2[K6('GetServerConfig')] (self)
  0014  GETTABUP  R4 = _ENV[K3('ServerConfigKey')]
  0015  GETTABLE  R4 = R4[K4('EqBubble')]
  0016  CALL      R2 = call(R2, 1 args, 2 rets)
  0017  TEST      if not R2 then   -> -131052
  0018  JMP       (jump)   -> 20
  0019  NEWTABLE  R2 = {} (0 items)
  0020  SETTABLE  R0[K7('m_config')] = R2
  0021  GETTABLE  R3 = R2[K8('eq_bubble')]
  0022  TESTSET   if R1 then R2   -> -129511
  0023  JMP       (jump)   -> 26
  0024  NEWTABLE  R3 = {} (0 items)
  0025  MOVE      R2 = R0
  0026  GETTABLE  R3 = R2[K9(1)]
  0027  TESTSET   if R1 then R2   -> -129506
  0028  JMP       (jump)   -> 31
  0029  NEWTABLE  R3 = {} (0 items)
  0030  MOVE      R2 = R0
  0031  GETTABUP  R3 = _ENV[K11('Table')]
  0032  GETTABLE  R3 = R3[K12('IsEmpty')]
  0033  MOVE      R4 = R0
  0034  CALL      R3 = call(R3, 1 args, 1 rets)
  0035  TEST      if not R3 then   -> -131034
  0036  JMP       (jump)   -> 41
  0037  SELF      R4 = R0[K13('_IsConfigReleased')] (self)
  0038  CALL      R3 = call(R3, 1 args, 1 rets)
  0039  NOT       R3 = not R0
  0040  JMP       (jump)   -> 43
  0041  LOADBOOL  R3 = false
  0042  LOADBOOL  R3 = true
  0043  SETTABLE  R0[K10('m_bEnabled')] = R3
  0044  GETTABUP  R3 = _ENV[K14('math')]
  0045  GETTABLE  R3 = R3[K15('maxinteger')]
  0046  GETTABLE  R4 = R2[K17('pass_cd')]
  0047  TEST      if not R4 then   -> -131022
  0048  JMP       (jump)   -> 50
  0049  MOVE      R4 = R0
  0050  SETTABLE  R0[K16('m_passCdInSeconds')] = R4
  0051  GETTABLE  R4 = R2[K19('buy_cd')]
  0052  TEST      if not R4 then   -> -131017
  0053  JMP       (jump)   -> 55
  0054  MOVE      R4 = R0
  0055  SETTABLE  R0[K18('m_buyCdInSeconds')] = R4
  0056  GETTABLE  R4 = R2[K21('gem_min')]
  0057  TEST      if not R4 then   -> -131012
  0058  JMP       (jump)   -> 60
  0059  MOVE      R4 = R0
  0060  SETTABLE  R0[K20('m_minTriggerGemCount')] = R4
  0061  GETTABLE  R4 = R2[K23('gem_max')]
  0062  TEST      if not R4 then   -> -131007
  0063  JMP       (jump)   -> 65
  0064  LOADK     R4 = K24 0
  0065  SETTABLE  R0[K22('m_maxTriggerGemCount')] = R4
  0066  GETTABLE  R4 = R2[K26('duration')]
  0067  TEST      if not R4 then   -> -131002
  0068  JMP       (jump)   -> 70
  0069  LOADK     R4 = K24 0
  0070  SETTABLE  R0[K25('m_bubbleDurationInSeconds')] = R4
  0071  GETTABLE  R4 = R2[K27('item_trig_rate')]
  0072  TEST      if not R4 then   -> -130997
  0073  JMP       (jump)   -> 75
  0074  NEWTABLE  R4 = {} (0 items)
  0075  NEWTABLE  R5 = {} (0 items)
  0076  SETTABLE  R0[K28('m_arrTriggerConfig')] = R5
  0077  GETTABUP  R5 = _ENV[K29('ipairs')]
  0078  MOVE      R6 = R0
  0079  CALL      R5 = call(R5, 3 args, 1 rets)
  0080  JMP       (jump)   -> 105
  0081  GETTABLE  R10 = R0[K28('m_arrTriggerConfig')]
  0082  GETTABLE  R11 = R0[K28('m_arrTriggerConfig')]
  0083  LEN       R11 = len R0
  0084  ADD       R11 = K9(1) add R11
  0085  NEWTABLE  R12 = {} (0 items)
  0086  GETTABLE  R13 = R9[K31('ternion_entry')]
  0087  GETTABLE  R13 = R13[K9(1)]
  0088  TEST      if not R13 then   -> -130981
  0089  JMP       (jump)   -> 91
  0090  LOADK     R13 = K24 0
  0091  SETTABLE  R12[K30('minMaterialCount')] = R13
  0092  GETTABLE  R13 = R9[K31('ternion_entry')]
  0093  GETTABLE  R13 = R13[K33(2)]
  0094  TEST      if not R13 then   -> -130975
  0095  JMP       (jump)   -> 97
  0096  MOVE      R13 = R0
  0097  SETTABLE  R12[K32('maxMaterialCount')] = R13
  0098  GETTABLE  R13 = R9[K31('ternion_entry')]
  0099  GETTABLE  R13 = R13[K35(3)]
  0100  TEST      if not R13 then   -> -130969
  0101  JMP       (jump)   -> 103
  0102  LOADK     R13 = K24 0
  0103  SETTABLE  R12[K34('rate')] = R13
  0104  SETTABLE  R10[R11] = R12
  0105  TFORCALL  tforcall R5
  0106  TFORLOOP  tforloop R7(sBx=-26)   -> 81
  0107  SELF      R6 = R0[K36('_CheckConfigValid')] (self)
  0108  CALL      R5 = call(R5, 0 args, 1 rets)
  0109  SELF      R6 = R0[K37('_CheckConfigReleased')] (self)
  0110  CALL      R5 = call(R5, 0 args, 1 rets)
  0111  RETURN    return R0..R-1
; ---------- proto4 [_CheckConfigValid] ----------
  ; fn ?  line 73-103 np=1 va=0 ms=18 code=80 consts=20 upvals=1 protos=0
  ;   K[0]='m_config'
  ;   K[1]='eq_bubble'
  ;   K[2]=2
  ;   K[3]='_LogError'
  ;   K[4]='配置不止一条！'
  ;   K[5]='m_arrTriggerConfig'
  ;   K[6]=1
  ;   K[7]='minMaterialCount'
  ;   K[8]='maxMaterialCount'
  ;   K[9]='string'
  ;   K[10]='format'
  ;   K[11]='区间重叠: [%d,%d] 与 [%d,%d]'
  ;   K[12]=0
  ;   K[13]='rate'
  ;   K[14]='不缺食材的触发概率不为 0'
  ;   K[15]='m_minTriggerGemCount'
  ;   K[16]='gem_min < 1'
  ;   K[17]='m_bEnabled'
  ;   K[18]='m_maxTriggerGemCount'
  ;   K[19]='gem_max <= gem_min'
  ;   upvals: _ENV
  ;   locals: self(0-80), arr(16-80), (for index)(19-63), (for limit)(19-63), (for step)(19-63), i(20-62), (for index)(23-51), (for limit)(23-51), (for step)(23-51), j(24-50)
  0000  GETTABLE  R1 = R0[K0('m_config')]
  0001  TEST      if not R1 then   -> -131069
  0002  JMP       (jump)   -> 15
  0003  GETTABLE  R1 = R0[K0('m_config')]
  0004  GETTABLE  R1 = R1[K1('eq_bubble')]
  0005  TEST      if not R1 then   -> -131065
  0006  JMP       (jump)   -> 15
  0007  GETTABLE  R1 = R0[K0('m_config')]
  0008  GETTABLE  R1 = R1[K1('eq_bubble')]
  0009  GETTABLE  R1 = R1[K2(2)]
  0010  TEST      if not R1 then   -> -131060
  0011  JMP       (jump)   -> 15
  0012  SELF      R2 = R0[K3('_LogError')] (self)
  0013  LOADK     R3 = K4 '配置不止一条！'
  0014  CALL      R1 = call(R1, 0 args, 2 rets)
  0015  GETTABLE  R1 = R0[K5('m_arrTriggerConfig')]
  0016  LOADK     R2 = K6 1
  0017  LEN       R3 = len R0
  0018  LOADK     R4 = K6 1
  0019  FORPREP   forprep R2(sBx=42)   -> 62
  0020  ADD       R6 = K6(1) add R5
  0021  LEN       R7 = len R0
  0022  LOADK     R8 = K6 1
  0023  FORPREP   forprep R6(sBx=26)   -> 50
  0024  GETTABLE  R10 = R1[R5]
  0025  GETTABLE  R10 = R10[K7('minMaterialCount')]
  0026  GETTABLE  R11 = R1[R9]
  0027  GETTABLE  R11 = R11[K8('maxMaterialCount')]
  0028  LE        if R0 le R11   -> -125911
  0029  JMP       (jump)   -> 50
  0030  GETTABLE  R10 = R1[R9]
  0031  GETTABLE  R10 = R10[K7('minMaterialCount')]
  0032  GETTABLE  R11 = R1[R5]
  0033  GETTABLE  R11 = R11[K8('maxMaterialCount')]
  0034  LE        if R0 le R11   -> -125905
  0035  JMP       (jump)   -> 50
  0036  SELF      R11 = R0[K3('_LogError')] (self)
  0037  GETTABUP  R12 = _ENV[K9('string')]
  0038  GETTABLE  R12 = R12[K10('format')]
  0039  LOADK     R13 = K11 '区间重叠: [%d,%d] 与 [%d,%d]'
  0040  GETTABLE  R14 = R1[R5]
  0041  GETTABLE  R14 = R14[K7('minMaterialCount')]
  0042  GETTABLE  R15 = R1[R5]
  0043  GETTABLE  R15 = R15[K8('maxMaterialCount')]
  0044  GETTABLE  R16 = R1[R9]
  0045  GETTABLE  R16 = R16[K7('minMaterialCount')]
  0046  GETTABLE  R17 = R1[R9]
  0047  GETTABLE  R17 = R17[K8('maxMaterialCount')]
  0048  CALL      R12 = call(R12, -1 args, 5 rets)
  0049  CALL      R10 = call(R10, 0 args, -1 rets)
  0050  FORLOOP   forloop R6(sBx=-27)   -> 24
  0051  GETTABLE  R6 = R1[R5]
  0052  GETTABLE  R6 = R6[K7('minMaterialCount')]
  0053  EQ        if R0 eq K12(0)   -> -127677
  0054  JMP       (jump)   -> 62
  0055  GETTABLE  R6 = R1[R5]
  0056  GETTABLE  R6 = R6[K13('rate')]
  0057  EQ        if R1 eq K12(0)   -> -127673
  0058  JMP       (jump)   -> 62
  0059  SELF      R7 = R0[K3('_LogError')] (self)
  0060  LOADK     R8 = K14 '不缺食材的触发概率不为 0'
  0061  CALL      R6 = call(R6, 0 args, 2 rets)
  0062  FORLOOP   forloop R2(sBx=-43)   -> 20
  0063  GETTABLE  R2 = R0[K15('m_minTriggerGemCount')]
  0064  LT        if R0 lt K6(1)   -> -129720
  0065  JMP       (jump)   -> 69
  0066  SELF      R3 = R0[K3('_LogError')] (self)
  0067  LOADK     R4 = K16 'gem_min < 1'
  0068  CALL      R2 = call(R2, 0 args, 2 rets)
  0069  GETTABLE  R2 = R0[K17('m_bEnabled')]
  0070  TEST      if not R2 then   -> -131000
  0071  JMP       (jump)   -> 79
  0072  GETTABLE  R2 = R0[K18('m_maxTriggerGemCount')]
  0073  GETTABLE  R3 = R0[K15('m_minTriggerGemCount')]
  0074  LE        if R0 le R3   -> -129969
  0075  JMP       (jump)   -> 79
  0076  SELF      R3 = R0[K3('_LogError')] (self)
  0077  LOADK     R4 = K19 'gem_max <= gem_min'
  0078  CALL      R2 = call(R2, 0 args, 2 rets)
  0079  RETURN    return R0..R-1
; ---------- proto5 [LateInit] ----------
  ; fn ?  line 105-108 np=1 va=0 ms=3 code=4 consts=3 upvals=0 protos=0
  ;   K[0]='m_bLateInited'
  ;   K[1]=true
  ;   K[2]='UpdatePerSecond'
  ;   locals: self(0-4)
  0000  SETTABLE  R0[K0('m_bLateInited')] = K1(true)
  0001  SELF      R2 = R0[K2('UpdatePerSecond')] (self)
  0002  CALL      R1 = call(R1, 0 args, 1 rets)
  0003  RETURN    return R0..R-1
; ---------- proto6 [_CheckConfigReleased] ----------
  ; fn ?  line 110-117 np=1 va=0 ms=4 code=19 consts=10 upvals=1 protos=0
  ;   K[0]='m_bEnabled'
  ;   K[1]='_IsTriggered'
  ;   K[2]='_Log'
  ;   K[3]='已过 rTime'
  ;   K[4]='GM'
  ;   K[5]='UIManager'
  ;   K[6]='CloseView'
  ;   K[7]='UIPrefabConfigName'
  ;   K[8]='EqBubbleConfirmWindow'
  ;   K[9]='ClearEqBubble'
  ;   upvals: _ENV
  ;   locals: self(0-19)
  0000  GETTABLE  R1 = R0[K0('m_bEnabled')]
  0001  TEST      if not R1 then   -> -131068
  0002  JMP       (jump)   -> 18
  0003  SELF      R2 = R0[K1('_IsTriggered')] (self)
  0004  CALL      R1 = call(R1, 1 args, 1 rets)
  0005  TEST      if not R1 then   -> -131065
  0006  JMP       (jump)   -> 18
  0007  SELF      R2 = R0[K2('_Log')] (self)
  0008  LOADK     R3 = K3 '已过 rTime'
  0009  CALL      R1 = call(R1, 0 args, 2 rets)
  0010  GETTABUP  R1 = _ENV[K4('GM')]
  0011  GETTABLE  R1 = R1[K5('UIManager')]
  0012  SELF      R2 = R1[K6('CloseView')] (self)
  0013  GETTABUP  R3 = _ENV[K7('UIPrefabConfigName')]
  0014  GETTABLE  R3 = R3[K8('EqBubbleConfirmWindow')]
  0015  CALL      R1 = call(R1, 0 args, 2 rets)
  0016  SELF      R2 = R0[K9('ClearEqBubble')] (self)
  0017  CALL      R1 = call(R1, 0 args, 1 rets)
  0018  RETURN    return R0..R-1
; ---------- proto7 [UpdatePerSecond] ----------
  ; fn ?  line 119-134 np=1 va=0 ms=3 code=25 consts=9 upvals=0 protos=0
  ;   K[0]='m_bLateInited'
  ;   K[1]='m_bEnabled'
  ;   K[2]='_IsConfigReleased'
  ;   K[3]=false
  ;   K[4]='_CheckConfigReleased'
  ;   K[5]='_IsTriggered'
  ;   K[6]='GetEqBubbleLeftDuration'
  ;   K[7]=0
  ;   K[8]='OnEqBubbleExpired'
  ;   locals: self(0-25)
  0000  GETTABLE  R1 = R0[K0('m_bLateInited')]
  0001  TEST      if not R1 then   -> -131068
  0002  JMP       (jump)   -> 4
  0003  RETURN    return R0..R-1
  0004  GETTABLE  R1 = R0[K1('m_bEnabled')]
  0005  TEST      if not R1 then   -> -131065
  0006  JMP       (jump)   -> 14
  0007  SELF      R2 = R0[K2('_IsConfigReleased')] (self)
  0008  CALL      R1 = call(R1, 1 args, 1 rets)
  0009  TEST      if not R1 then   -> -131061
  0010  JMP       (jump)   -> 14
  0011  SETTABLE  R0[K1('m_bEnabled')] = K3(false)
  0012  SELF      R2 = R0[K4('_CheckConfigReleased')] (self)
  0013  CALL      R1 = call(R1, 0 args, 1 rets)
  0014  SELF      R2 = R0[K5('_IsTriggered')] (self)
  0015  CALL      R1 = call(R1, 1 args, 1 rets)
  0016  TEST      if not R1 then   -> -131054
  0017  JMP       (jump)   -> 24
  0018  SELF      R2 = R0[K6('GetEqBubbleLeftDuration')] (self)
  0019  CALL      R1 = call(R1, 1 args, 1 rets)
  0020  LE        if R0 le K7(0)   -> -130275
  0021  JMP       (jump)   -> 24
  0022  SELF      R2 = R0[K8('OnEqBubbleExpired')] (self)
  0023  CALL      R1 = call(R1, 0 args, 1 rets)
  0024  RETURN    return R0..R-1
; ---------- proto8 [_OnItemStored] ----------
  ; fn ?  line 137-139 np=2 va=0 ms=5 code=4 consts=1 upvals=0 protos=0
  ;   K[0]='TryEndTriggerItem'
  ;   locals: self(0-4), itemModel(0-4)
  0000  SELF      R3 = R0[K0('TryEndTriggerItem')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 0 args, 2 rets)
  0003  RETURN    return R0..R-1
; ---------- proto9 [TryEndTriggerItem] ----------
  ; fn ?  line 143-148 np=2 va=0 ms=5 code=14 consts=5 upvals=0 protos=0
  ;   K[0]='GetId'
  ;   K[1]='GetTriggeredItemId'
  ;   K[2]='_Log'
  ;   K[3]='提前结束气泡'
  ;   K[4]='ClearEqBubble'
  ;   locals: self(0-14), itemModel(0-14)
  0000  TEST      if not R1 then   -> -131070
  0001  JMP       (jump)   -> 13
  0002  SELF      R3 = R1[K0('GetId')] (self)
  0003  CALL      R2 = call(R2, 1 args, 1 rets)
  0004  SELF      R4 = R0[K1('GetTriggeredItemId')] (self)
  0005  CALL      R3 = call(R3, 1 args, 1 rets)
  0006  EQ        if R0 eq R3   -> -130037
  0007  JMP       (jump)   -> 13
  0008  SELF      R3 = R0[K2('_Log')] (self)
  0009  LOADK     R4 = K3 '提前结束气泡'
  0010  CALL      R2 = call(R2, 0 args, 2 rets)
  0011  SELF      R3 = R0[K4('ClearEqBubble')] (self)
  0012  CALL      R2 = call(R2, 0 args, 1 rets)
  0013  RETURN    return R0..R-1
; ---------- proto10 [TryEndTrigger] ----------
  ; fn ?  line 153-160 np=2 va=0 ms=5 code=16 consts=4 upvals=0 protos=0
  ;   K[0]='_IsTriggerStateValid'
  ;   K[1]='_Log'
  ;   K[2]='状态不符，提前结束气泡'
  ;   K[3]='ClearEqBubble'
  ;   locals: self(0-16), cookCmp(0-16)
  0000  SELF      R3 = R0[K0('_IsTriggerStateValid')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  TEST      if not R2 then   -> -131066
  0004  JMP       (jump)   -> 13
  0005  SELF      R3 = R0[K1('_Log')] (self)
  0006  LOADK     R4 = K2 '状态不符，提前结束气泡'
  0007  CALL      R2 = call(R2, 0 args, 2 rets)
  0008  SELF      R3 = R0[K3('ClearEqBubble')] (self)
  0009  LOADBOOL  R4 = false
  0010  CALL      R2 = call(R2, 0 args, 2 rets)
  0011  LOADBOOL  R2 = true
  0012  RETURN    return R2..R1
  0013  LOADBOOL  R2 = false
  0014  RETURN    return R2..R1
  0015  RETURN    return R0..R-1
; ---------- proto11 [IsEqHasBubble] ----------
  ; fn ?  line 165-187 np=2 va=0 ms=5 code=34 consts=7 upvals=0 protos=0
  ;   K[0]='m_bEnabled'
  ;   K[1]='_IsTriggered'
  ;   K[2]='GetTriggeredItemId'
  ;   K[3]='GetItemModel'
  ;   K[4]='GetId'
  ;   K[5]='GetEqBubbleLeftDuration'
  ;   K[6]=0
  ;   locals: self(0-34), cookCmp(0-34)
  0000  TEST      if not R1 then   -> -131069
  0001  JMP       (jump)   -> 4
  0002  LOADBOOL  R2 = false
  0003  RETURN    return R2..R1
  0004  GETTABLE  R2 = R0[K0('m_bEnabled')]
  0005  TEST      if not R2 then   -> -131064
  0006  JMP       (jump)   -> 9
  0007  LOADBOOL  R2 = false
  0008  RETURN    return R2..R1
  0009  SELF      R3 = R0[K1('_IsTriggered')] (self)
  0010  CALL      R2 = call(R2, 1 args, 1 rets)
  0011  TEST      if not R2 then   -> -131058
  0012  JMP       (jump)   -> 15
  0013  LOADBOOL  R2 = false
  0014  RETURN    return R2..R1
  0015  SELF      R3 = R0[K2('GetTriggeredItemId')] (self)
  0016  CALL      R2 = call(R2, 1 args, 1 rets)
  0017  SELF      R4 = R1[K3('GetItemModel')] (self)
  0018  CALL      R3 = call(R3, 1 args, 1 rets)
  0019  SELF      R4 = R3[K4('GetId')] (self)
  0020  CALL      R3 = call(R3, 1 args, 1 rets)
  0021  EQ        if R1 eq R3   -> -130022
  0022  JMP       (jump)   -> 25
  0023  LOADBOOL  R2 = false
  0024  RETURN    return R2..R1
  0025  SELF      R3 = R0[K5('GetEqBubbleLeftDuration')] (self)
  0026  CALL      R2 = call(R2, 1 args, 1 rets)
  0027  LE        if R0 le K6(0)   -> -129757
  0028  JMP       (jump)   -> 31
  0029  LOADBOOL  R2 = false
  0030  RETURN    return R2..R1
  0031  LOADBOOL  R2 = true
  0032  RETURN    return R2..R1
  0033  RETURN    return R0..R-1
; ---------- proto12 [CalculatePrice] ----------
  ; fn ?  line 193-203 np=3 va=0 ms=13 code=32 consts=9 upvals=1 protos=0
  ;   K[0]='GetTriggeredRecipe'
  ;   K[1]='GM'
  ;   K[2]='ShopDataModel'
  ;   K[3]='GetGemCostForItemType'
  ;   K[4]='ipairs'
  ;   K[5]='GetCurMaterialsArray'
  ;   K[6]='math'
  ;   K[7]='max'
  ;   K[8]=0
  ;   upvals: _ENV
  ;   locals: self(0-32), cookCmp(0-32), recipe(0-32), totalCost(10-32), cost(11-32), (for generator)(15-24), (for state)(15-24), (for control)(15-24), _(16-22), mat(16-22)
  0000  TEST      if not R2 then   -> -131069
  0001  JMP       (jump)   -> 5
  0002  SELF      R4 = R0[K0('GetTriggeredRecipe')] (self)
  0003  CALL      R3 = call(R3, 1 args, 1 rets)
  0004  MOVE      R2 = R0
  0005  GETTABUP  R3 = _ENV[K1('GM')]
  0006  GETTABLE  R3 = R3[K2('ShopDataModel')]
  0007  SELF      R4 = R3[K3('GetGemCostForItemType')] (self)
  0008  MOVE      R5 = R0
  0009  CALL      R3 = call(R3, 1 args, 2 rets)
  0010  MOVE      R4 = R0
  0011  GETTABUP  R5 = _ENV[K4('ipairs')]
  0012  SELF      R7 = R1[K5('GetCurMaterialsArray')] (self)
  0013  CALL      R6 = call(R6, -1 args, 1 rets)
  0014  CALL      R5 = call(R5, 3 args, -1 rets)
  0015  JMP       (jump)   -> 22
  0016  GETTABUP  R10 = _ENV[K1('GM')]
  0017  GETTABLE  R10 = R10[K2('ShopDataModel')]
  0018  SELF      R11 = R10[K3('GetGemCostForItemType')] (self)
  0019  MOVE      R12 = R0
  0020  CALL      R10 = call(R10, 1 args, 2 rets)
  0021  SUB       R4 = R10 sub R4
  0022  TFORCALL  tforcall R5
  0023  TFORLOOP  tforloop R7(sBx=-8)   -> 16
  0024  GETTABUP  R5 = _ENV[K6('math')]
  0025  GETTABLE  R5 = R5[K7('max')]
  0026  MOVE      R6 = R0
  0027  LOADK     R7 = K8 0
  0028  CALL      R5 = call(R5, 1 args, 2 rets)
  0029  MOVE      R4 = R0
  0030  RETURN    return R4..R3
  0031  RETURN    return R0..R-1
; ---------- proto13 [GetEqBubbleLeftDuration] ----------
  ; fn ?  line 207-209 np=1 va=0 ms=6 code=15 consts=8 upvals=1 protos=0
  ;   K[0]='math'
  ;   K[1]='max'
  ;   K[2]=0
  ;   K[3]='m_bubbleDurationInSeconds'
  ;   K[4]='GetTriggeredTimestamp'
  ;   K[5]='GM'
  ;   K[6]='GameModel'
  ;   K[7]='GetServerTime'
  ;   upvals: _ENV
  ;   locals: self(0-15)
  0000  GETTABUP  R1 = _ENV[K0('math')]
  0001  GETTABLE  R1 = R1[K1('max')]
  0002  LOADK     R2 = K2 0
  0003  GETTABLE  R3 = R0[K3('m_bubbleDurationInSeconds')]
  0004  SELF      R5 = R0[K4('GetTriggeredTimestamp')] (self)
  0005  CALL      R4 = call(R4, 1 args, 1 rets)
  0006  ADD       R3 = R4 add R3
  0007  GETTABUP  R4 = _ENV[K5('GM')]
  0008  GETTABLE  R4 = R4[K6('GameModel')]
  0009  SELF      R5 = R4[K7('GetServerTime')] (self)
  0010  CALL      R4 = call(R4, 1 args, 1 rets)
  0011  SUB       R3 = R4 sub R3
  0012  TAILCALL  tailcall(R1, 0)
  0013  RETURN    return R1..R0
  0014  RETURN    return R0..R-1
; ---------- proto14 [OnEqBubbleExpired] ----------
  ; fn ?  line 212-220 np=1 va=0 ms=4 code=15 consts=8 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='UIManager'
  ;   K[2]='IsViewExisting'
  ;   K[3]='UIPrefabConfigName'
  ;   K[4]='EqBubbleConfirmWindow'
  ;   K[5]='_Log'
  ;   K[6]='气泡已过期'
  ;   K[7]='ClearEqBubble'
  ;   upvals: _ENV
  ;   locals: self(0-15)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('UIManager')]
  0002  SELF      R2 = R1[K2('IsViewExisting')] (self)
  0003  GETTABUP  R3 = _ENV[K3('UIPrefabConfigName')]
  0004  GETTABLE  R3 = R3[K4('EqBubbleConfirmWindow')]
  0005  CALL      R1 = call(R1, 1 args, 2 rets)
  0006  TEST      if not R1 then   -> -131064
  0007  JMP       (jump)   -> 9
  0008  RETURN    return R0..R-1
  0009  SELF      R2 = R0[K5('_Log')] (self)
  0010  LOADK     R3 = K6 '气泡已过期'
  0011  CALL      R1 = call(R1, 0 args, 2 rets)
  0012  SELF      R2 = R0[K7('ClearEqBubble')] (self)
  0013  CALL      R1 = call(R1, 0 args, 1 rets)
  0014  RETURN    return R0..R-1
; ---------- proto15 [_UpdateItemCookView] ----------
  ; fn ?  line 222-229 np=2 va=0 ms=6 code=13 consts=6 upvals=1 protos=0
  ;   K[0]='GetComponent'
  ;   K[1]='ItemCook'
  ;   K[2]='event'
  ;   K[3]='Call'
  ;   K[4]='ItemCookEventType'
  ;   K[5]='StateChanged'
  ;   upvals: _ENV
  ;   locals: self(0-13), itemModel(0-13), itemCook(5-12)
  0000  TEST      if not R1 then   -> -131070
  0001  JMP       (jump)   -> 12
  0002  SELF      R3 = R1[K0('GetComponent')] (self)
  0003  GETTABUP  R4 = _ENV[K1('ItemCook')]
  0004  CALL      R2 = call(R2, 1 args, 2 rets)
  0005  TEST      if not R2 then   -> -131065
  0006  JMP       (jump)   -> 12
  0007  GETTABLE  R3 = R2[K2('event')]
  0008  SELF      R4 = R3[K3('Call')] (self)
  0009  GETTABUP  R5 = _ENV[K4('ItemCookEventType')]
  0010  GETTABLE  R5 = R5[K5('StateChanged')]
  0011  CALL      R3 = call(R3, 0 args, 2 rets)
  0012  RETURN    return R0..R-1
; ---------- proto16 [ClearEqBubble] ----------
  ; fn ?  line 233-255 np=2 va=0 ms=8 code=43 consts=18 upvals=1 protos=0
  ;   K[0]='StringUtil'
  ;   K[1]='IsNilOrEmpty'
  ;   K[2]='GetTriggeredItemId'
  ;   K[3]='GM'
  ;   K[4]='MainBoardModel'
  ;   K[5]='GetItemById'
  ;   K[6]='SetTriggeredItemId'
  ;   K[7]='SetTriggeredRecipe'
  ;   K[8]='SetTriggeredTimestamp'
  ;   K[9]=0
  ;   K[10]='_UpdateItemCookView'
  ;   K[11]='_Log'
  ;   K[12]='清除气泡数据'
  ;   K[13]='MainBoardView'
  ;   K[14]='GetInstance'
  ;   K[15]=false
  ;   K[16]='UpdateBoardInfoBar'
  ;   K[17]='GetSelectedItemModel'
  ;   upvals: _ENV
  ;   locals: self(0-43), updateInfoBar(0-43), itemModel(14-43), mainBoardView(32-43)
  0000  GETTABUP  R2 = _ENV[K0('StringUtil')]
  0001  GETTABLE  R2 = R2[K1('IsNilOrEmpty')]
  0002  SELF      R4 = R0[K2('GetTriggeredItemId')] (self)
  0003  CALL      R3 = call(R3, -1 args, 1 rets)
  0004  CALL      R2 = call(R2, 1 args, -1 rets)
  0005  TEST      if not R2 then   -> -131065
  0006  JMP       (jump)   -> 8
  0007  RETURN    return R0..R-1
  0008  GETTABUP  R2 = _ENV[K3('GM')]
  0009  GETTABLE  R2 = R2[K4('MainBoardModel')]
  0010  SELF      R3 = R2[K5('GetItemById')] (self)
  0011  SELF      R5 = R0[K2('GetTriggeredItemId')] (self)
  0012  CALL      R4 = call(R4, -1 args, 1 rets)
  0013  CALL      R2 = call(R2, 1 args, -1 rets)
  0014  SELF      R4 = R0[K6('SetTriggeredItemId')] (self)
  0015  LOADNIL   R5..R5 = nil
  0016  CALL      R3 = call(R3, 0 args, 2 rets)
  0017  SELF      R4 = R0[K7('SetTriggeredRecipe')] (self)
  0018  LOADNIL   R5..R5 = nil
  0019  CALL      R3 = call(R3, 0 args, 2 rets)
  0020  SELF      R4 = R0[K8('SetTriggeredTimestamp')] (self)
  0021  LOADK     R5 = K9 0
  0022  CALL      R3 = call(R3, 0 args, 2 rets)
  0023  SELF      R4 = R0[K10('_UpdateItemCookView')] (self)
  0024  MOVE      R5 = R0
  0025  CALL      R3 = call(R3, 0 args, 2 rets)
  0026  SELF      R4 = R0[K11('_Log')] (self)
  0027  LOADK     R5 = K12 '清除气泡数据'
  0028  CALL      R3 = call(R3, 0 args, 2 rets)
  0029  GETTABUP  R3 = _ENV[K13('MainBoardView')]
  0030  GETTABLE  R3 = R3[K14('GetInstance')]
  0031  CALL      R3 = call(R3, 1 args, 0 rets)
  0032  TEST      if not R3 then   -> -131038
  0033  JMP       (jump)   -> 36
  0034  EQ        if R0 eq K15(false)   -> -130253
  0035  JMP       (jump)   -> 37
  0036  RETURN    return R0..R-1
  0037  SELF      R5 = R3[K16('UpdateBoardInfoBar')] (self)
  0038  SELF      R7 = R3[K17('GetSelectedItemModel')] (self)
  0039  CALL      R6 = call(R6, 1 args, 1 rets)
  0040  LOADBOOL  R7 = true
  0041  CALL      R4 = call(R4, 0 args, 3 rets)
  0042  RETURN    return R0..R-1
; ---------- proto17 [OnEqBubbleBought] ----------
  ; fn ?  line 259-305 np=2 va=0 ms=19 code=123 consts=40 upvals=1 protos=0
  ;   K[0]='_IsTriggered'
  ;   K[1]='CalculatePrice'
  ;   K[2]='GM'
  ;   K[3]='PropertyDataManager'
  ;   K[4]='GetPropertyNum'
  ;   K[5]='EPropertyType'
  ;   K[6]='Gem'
  ;   K[7]=0
  ;   K[8]='ShopModel'
  ;   K[9]='OnLackOfGem'
  ;   K[10]='EBIType'
  ;   K[11]='EqBubble'
  ;   K[12]='GetTriggeredRecipe'
  ;   K[13]='CanCook'
  ;   K[14]='Log'
  ;   K[15]='Error'
  ;   K[16]='逻辑错误'
  ;   K[17]='Consume'
  ;   K[18]='GetItemModel'
  ;   K[19]='GetCode'
  ;   K[20]='BIManager'
  ;   K[21]='LogStore'
  ;   K[22]=1
  ;   K[23]='EShopType'
  ;   K[24]='ipairs'
  ;   K[25]='MainBoardModel'
  ;   K[26]='GenerateItem'
  ;   K[27]='AddMaterial'
  ;   K[28]='LogAcquire'
  ;   K[29]='StartCook'
  ;   K[30]='OnSpeedUp'
  ;   K[31]='PlaySpeedAnim'
  ;   K[32]='ItemCookEventType'
  ;   K[33]='SpeedUpAnim2'
  ;   K[34]='OnPlaySpeedAnimFinish'
  ;   K[35]='ItemDataModel'
  ;   K[36]='GetAllMaterials'
  ;   K[37]='SetUnlocked'
  ;   K[38]='ClearEqBubble'
  ;   K[39]='EnterCD'
  ;   upvals: _ENV
  ;   locals: self(0-123), cookCmp(0-123), cost(8-123), gemCount(14-123), recipe(28-123), bCanCook(31-123), lackMat(31-123), (for generator)(66-87), (for state)(66-87), (for control)(66-87), _(67-85), mat(67-85), item(73-85), allMaterials(106-123), (for generator)(109-117), (for state)(109-117), (for control)(109-117), _(110-115), mat(110-115)
  0000  SELF      R3 = R0[K0('_IsTriggered')] (self)
  0001  CALL      R2 = call(R2, 1 args, 1 rets)
  0002  TEST      if not R2 then   -> -131067
  0003  JMP       (jump)   -> 5
  0004  RETURN    return R0..R-1
  0005  SELF      R3 = R0[K1('CalculatePrice')] (self)
  0006  MOVE      R4 = R0
  0007  CALL      R2 = call(R2, 1 args, 2 rets)
  0008  GETTABUP  R3 = _ENV[K2('GM')]
  0009  GETTABLE  R3 = R3[K3('PropertyDataManager')]
  0010  SELF      R4 = R3[K4('GetPropertyNum')] (self)
  0011  GETTABUP  R5 = _ENV[K5('EPropertyType')]
  0012  GETTABLE  R5 = R5[K6('Gem')]
  0013  CALL      R3 = call(R3, 1 args, 2 rets)
  0014  LE        if R1 le K7(0)   -> -129769
  0015  JMP       (jump)   -> 18
  0016  LT        if R0 lt R2   -> -129516
  0017  JMP       (jump)   -> 26
  0018  GETTABUP  R4 = _ENV[K2('GM')]
  0019  GETTABLE  R4 = R4[K8('ShopModel')]
  0020  SELF      R5 = R4[K9('OnLackOfGem')] (self)
  0021  SUB       R6 = R3 sub R2
  0022  GETTABUP  R7 = _ENV[K10('EBIType')]
  0023  GETTABLE  R7 = R7[K11('EqBubble')]
  0024  CALL      R4 = call(R4, 0 args, 3 rets)
  0025  RETURN    return R0..R-1
  0026  SELF      R5 = R0[K12('GetTriggeredRecipe')] (self)
  0027  CALL      R4 = call(R4, 1 args, 1 rets)
  0028  SELF      R6 = R1[K13('CanCook')] (self)
  0029  MOVE      R7 = R0
  0030  CALL      R5 = call(R5, 2 args, 2 rets)
  0031  TEST      if not R5 then   -> -131038
  0032  JMP       (jump)   -> 38
  0033  GETTABUP  R7 = _ENV[K14('Log')]
  0034  GETTABLE  R7 = R7[K15('Error')]
  0035  LOADK     R8 = K16 '逻辑错误'
  0036  CALL      R7 = call(R7, 0 args, 1 rets)
  0037  RETURN    return R0..R-1
  0038  GETTABUP  R7 = _ENV[K2('GM')]
  0039  GETTABLE  R7 = R7[K3('PropertyDataManager')]
  0040  SELF      R8 = R7[K17('Consume')] (self)
  0041  GETTABUP  R9 = _ENV[K5('EPropertyType')]
  0042  GETTABLE  R9 = R9[K6('Gem')]
  0043  MOVE      R10 = R0
  0044  GETTABUP  R11 = _ENV[K10('EBIType')]
  0045  GETTABLE  R11 = R11[K11('EqBubble')]
  0046  LOADBOOL  R12 = false
  0047  SELF      R14 = R1[K18('GetItemModel')] (self)
  0048  CALL      R13 = call(R13, 1 args, 1 rets)
  0049  SELF      R14 = R13[K19('GetCode')] (self)
  0050  CALL      R13 = call(R13, -1 args, 1 rets)
  0051  CALL      R7 = call(R7, 0 args, -1 rets)
  0052  GETTABUP  R7 = _ENV[K2('GM')]
  0053  GETTABLE  R7 = R7[K20('BIManager')]
  0054  SELF      R8 = R7[K21('LogStore')] (self)
  0055  GETTABUP  R9 = _ENV[K5('EPropertyType')]
  0056  GETTABLE  R9 = R9[K6('Gem')]
  0057  MOVE      R10 = R0
  0058  MOVE      R11 = R0
  0059  LOADK     R12 = K22 1
  0060  GETTABUP  R13 = _ENV[K23('EShopType')]
  0061  GETTABLE  R13 = R13[K11('EqBubble')]
  0062  CALL      R7 = call(R7, 0 args, 6 rets)
  0063  GETTABUP  R7 = _ENV[K24('ipairs')]
  0064  MOVE      R8 = R0
  0065  CALL      R7 = call(R7, 3 args, 1 rets)
  0066  JMP       (jump)   -> 85
  0067  GETTABUP  R12 = _ENV[K2('GM')]
  0068  GETTABLE  R12 = R12[K25('MainBoardModel')]
  0069  SELF      R13 = R12[K26('GenerateItem')] (self)
  0070  LOADNIL   R14..R14 = nil
  0071  MOVE      R15 = R0
  0072  CALL      R12 = call(R12, 1 args, 3 rets)
  0073  SELF      R14 = R1[K27('AddMaterial')] (self)
  0074  MOVE      R15 = R0
  0075  CALL      R13 = call(R13, 0 args, 2 rets)
  0076  GETTABUP  R13 = _ENV[K2('GM')]
  0077  GETTABLE  R13 = R13[K20('BIManager')]
  0078  SELF      R14 = R13[K28('LogAcquire')] (self)
  0079  MOVE      R15 = R0
  0080  LOADK     R16 = K22 1
  0081  GETTABUP  R17 = _ENV[K10('EBIType')]
  0082  GETTABLE  R17 = R17[K11('EqBubble')]
  0083  LOADBOOL  R18 = false
  0084  CALL      R13 = call(R13, 0 args, 5 rets)
  0085  TFORCALL  tforcall R7
  0086  TFORLOOP  tforloop R9(sBx=-20)   -> 67
  0087  SELF      R8 = R1[K29('StartCook')] (self)
  0088  CALL      R7 = call(R7, 0 args, 1 rets)
  0089  SELF      R8 = R1[K30('OnSpeedUp')] (self)
  0090  LOADBOOL  R9 = true
  0091  GETTABUP  R10 = _ENV[K10('EBIType')]
  0092  GETTABLE  R10 = R10[K11('EqBubble')]
  0093  LOADBOOL  R11 = false
  0094  CALL      R7 = call(R7, 0 args, 4 rets)
  0095  SELF      R8 = R1[K31('PlaySpeedAnim')] (self)
  0096  GETTABUP  R9 = _ENV[K32('ItemCookEventType')]
  0097  GETTABLE  R9 = R9[K33('SpeedUpAnim2')]
  0098  CALL      R7 = call(R7, 0 args, 2 rets)
  0099  SELF      R8 = R1[K34('OnPlaySpeedAnimFinish')] (self)
  0100  CALL      R7 = call(R7, 0 args, 1 rets)
  0101  GETTABUP  R7 = _ENV[K2('GM')]
  0102  GETTABLE  R7 = R7[K35('ItemDataModel')]
  0103  SELF      R8 = R7[K36('GetAllMaterials')] (self)
  0104  MOVE      R9 = R0
  0105  CALL      R7 = call(R7, 1 args, 2 rets)
  0106  GETTABUP  R8 = _ENV[K24('ipairs')]
  0107  MOVE      R9 = R0
  0108  CALL      R8 = call(R8, 3 args, 1 rets)
  0109  JMP       (jump)   -> 115
  0110  GETTABUP  R13 = _ENV[K2('GM')]
  0111  GETTABLE  R13 = R13[K35('ItemDataModel')]
  0112  SELF      R14 = R13[K37('SetUnlocked')] (self)
  0113  MOVE      R15 = R0
  0114  CALL      R13 = call(R13, 0 args, 2 rets)
  0115  TFORCALL  tforcall R8
  0116  TFORLOOP  tforloop R10(sBx=-7)   -> 110
  0117  SELF      R9 = R0[K38('ClearEqBubble')] (self)
  0118  CALL      R8 = call(R8, 0 args, 1 rets)
  0119  SELF      R9 = R0[K39('EnterCD')] (self)
  0120  LOADBOOL  R10 = true
  0121  CALL      R8 = call(R8, 0 args, 2 rets)
  0122  RETURN    return R0..R-1
; ---------- proto18 [GetCDDuration] ----------
  ; fn ?  line 308-310 np=1 va=0 ms=3 code=10 consts=3 upvals=0 protos=0
  ;   K[0]='IsLastBuy'
  ;   K[1]='m_buyCdInSeconds'
  ;   K[2]='m_passCdInSeconds'
  ;   locals: self(0-10)
  0000  SELF      R2 = R0[K0('IsLastBuy')] (self)
  0001  CALL      R1 = call(R1, 1 args, 1 rets)
  0002  TEST      if not R1 then   -> -131068
  0003  JMP       (jump)   -> 7
  0004  GETTABLE  R1 = R0[K1('m_buyCdInSeconds')]
  0005  TEST      if not R1 then   -> -131064
  0006  JMP       (jump)   -> 8
  0007  GETTABLE  R1 = R0[K2('m_passCdInSeconds')]
  0008  RETURN    return R1..R0
  0009  RETURN    return R0..R-1
; ---------- proto19 [GetCDEndTimestamp] ----------
  ; fn ?  line 312-314 np=1 va=0 ms=4 code=7 consts=2 upvals=0 protos=0
  ;   K[0]='GetStartCDTimestamp'
  ;   K[1]='GetCDDuration'
  ;   locals: self(0-7)
  0000  SELF      R2 = R0[K0('GetStartCDTimestamp')] (self)
  0001  CALL      R1 = call(R1, 1 args, 1 rets)
  0002  SELF      R3 = R0[K1('GetCDDuration')] (self)
  0003  CALL      R2 = call(R2, 1 args, 1 rets)
  0004  ADD       R1 = R2 add R1
  0005  RETURN    return R1..R0
  0006  RETURN    return R0..R-1
; ---------- proto20 [IsInCD] ----------
  ; fn ?  line 317-319 np=1 va=0 ms=4 code=12 consts=4 upvals=1 protos=0
  ;   K[0]='GetCDEndTimestamp'
  ;   K[1]='GM'
  ;   K[2]='GameModel'
  ;   K[3]='GetServerTime'
  ;   upvals: _ENV
  ;   locals: self(0-12)
  0000  SELF      R2 = R0[K0('GetCDEndTimestamp')] (self)
  0001  CALL      R1 = call(R1, 1 args, 1 rets)
  0002  GETTABUP  R2 = _ENV[K1('GM')]
  0003  GETTABLE  R2 = R2[K2('GameModel')]
  0004  SELF      R3 = R2[K3('GetServerTime')] (self)
  0005  CALL      R2 = call(R2, 1 args, 1 rets)
  0006  LE        if R1 le R1   -> -130039
  0007  JMP       (jump)   -> 9
  0008  LOADBOOL  R1 = false
  0009  LOADBOOL  R1 = true
  0010  RETURN    return R1..R0
  0011  RETURN    return R0..R-1
; ---------- proto21 [_IsTriggered] ----------
  ; fn ?  line 323-335 np=1 va=0 ms=5 code=29 consts=7 upvals=1 protos=0
  ;   K[0]='StringUtil'
  ;   K[1]='IsNilOrEmpty'
  ;   K[2]='GetTriggeredItemId'
  ;   K[3]='GetTriggeredRecipe'
  ;   K[4]='GM'
  ;   K[5]='ItemDataModel'
  ;   K[6]='IsItemExist'
  ;   upvals: _ENV
  ;   locals: self(0-29)
  0000  GETTABUP  R1 = _ENV[K0('StringUtil')]
  0001  GETTABLE  R1 = R1[K1('IsNilOrEmpty')]
  0002  SELF      R3 = R0[K2('GetTriggeredItemId')] (self)
  0003  CALL      R2 = call(R2, -1 args, 1 rets)
  0004  CALL      R1 = call(R1, 1 args, -1 rets)
  0005  TEST      if not R1 then   -> -131064
  0006  JMP       (jump)   -> 14
  0007  GETTABUP  R1 = _ENV[K0('StringUtil')]
  0008  GETTABLE  R1 = R1[K1('IsNilOrEmpty')]
  0009  SELF      R3 = R0[K3('GetTriggeredRecipe')] (self)
  0010  CALL      R2 = call(R2, -1 args, 1 rets)
  0011  CALL      R1 = call(R1, 1 args, -1 rets)
  0012  TEST      if not R1 then   -> -131058
  0013  JMP       (jump)   -> 16
  0014  LOADBOOL  R1 = false
  0015  RETURN    return R1..R0
  0016  GETTABUP  R1 = _ENV[K4('GM')]
  0017  GETTABLE  R1 = R1[K5('ItemDataModel')]
  0018  SELF      R2 = R1[K6('IsItemExist')] (self)
  0019  SELF      R4 = R0[K3('GetTriggeredRecipe')] (self)
  0020  CALL      R3 = call(R3, -1 args, 1 rets)
  0021  CALL      R1 = call(R1, 1 args, -1 rets)
  0022  TEST      if not R1 then   -> -131047
  0023  JMP       (jump)   -> 26
  0024  LOADBOOL  R1 = false
  0025  RETURN    return R1..R0
  0026  LOADBOOL  R1 = true
  0027  RETURN    return R1..R0
  0028  RETURN    return R0..R-1
; ---------- proto22 [EnterCD] ----------
  ; fn ?  line 339-345 np=2 va=0 ms=10 code=24 consts=11 upvals=1 protos=0
  ;   K[0]='SetLastBuy'
  ;   K[1]='GM'
  ;   K[2]='GameModel'
  ;   K[3]='GetServerTime'
  ;   K[4]='SetStartCDTimestamp'
  ;   K[5]='_Log'
  ;   K[6]='进入 CD，是否购买？'
  ;   K[7]='是'
  ;   K[8]='否'
  ;   K[9]='，CD 剩余：'
  ;   K[10]='GetCDDuration'
  ;   upvals: _ENV
  ;   locals: self(0-24), bBought(0-24), cdStartTime(7-24)
  0000  SELF      R3 = R0[K0('SetLastBuy')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 0 args, 2 rets)
  0003  GETTABUP  R2 = _ENV[K1('GM')]
  0004  GETTABLE  R2 = R2[K2('GameModel')]
  0005  SELF      R3 = R2[K3('GetServerTime')] (self)
  0006  CALL      R2 = call(R2, 1 args, 1 rets)
  0007  SELF      R4 = R0[K4('SetStartCDTimestamp')] (self)
  0008  MOVE      R5 = R0
  0009  CALL      R3 = call(R3, 0 args, 2 rets)
  0010  SELF      R4 = R0[K5('_Log')] (self)
  0011  LOADK     R5 = K6 '进入 CD，是否购买？'
  0012  TEST      if not R1 then   -> -131058
  0013  JMP       (jump)   -> 17
  0014  LOADK     R6 = K7 '是'
  0015  TEST      if not R6 then   -> -131054
  0016  JMP       (jump)   -> 18
  0017  LOADK     R6 = K8 '否'
  0018  LOADK     R7 = K9 '，CD 剩余：'
  0019  SELF      R9 = R0[K10('GetCDDuration')] (self)
  0020  CALL      R8 = call(R8, 1 args, 1 rets)
  0021  CONCAT    R5 = concat(R5..R5)
  0022  CALL      R3 = call(R3, 0 args, 2 rets)
  0023  RETURN    return R0..R-1
; ---------- proto23 [_Log] ----------
  ; fn ?  line 347-349 np=2 va=0 ms=5 code=6 consts=3 upvals=1 protos=0
  ;   K[0]='Log'
  ;   K[1]='Info'
  ;   K[2]='eqBubble'
  ;   upvals: _ENV
  ;   locals: self(0-6), info(0-6)
  0000  GETTABUP  R2 = _ENV[K0('Log')]
  0001  GETTABLE  R2 = R2[K1('Info')]
  0002  MOVE      R3 = R0
  0003  LOADK     R4 = K2 'eqBubble'
  0004  CALL      R2 = call(R2, 0 args, 2 rets)
  0005  RETURN    return R0..R-1
; ---------- proto24 [_LogError] ----------
  ; fn ?  line 351-353 np=2 va=0 ms=5 code=6 consts=3 upvals=1 protos=0
  ;   K[0]='Log'
  ;   K[1]='Error'
  ;   K[2]='eqBubble'
  ;   upvals: _ENV
  ;   locals: self(0-6), info(0-6)
  0000  GETTABUP  R2 = _ENV[K0('Log')]
  0001  GETTABLE  R2 = R2[K1('Error')]
  0002  MOVE      R3 = R0
  0003  LOADK     R4 = K2 'eqBubble'
  0004  CALL      R2 = call(R2, 0 args, 2 rets)
  0005  RETURN    return R0..R-1
; ---------- proto25 [_IsTriggerStateValid] ----------
  ; fn ?  line 357-410 np=2 va=0 ms=15 code=89 consts=22 upvals=1 protos=0
  ;   K[0]='m_bEnabled'
  ;   K[1]='_Log'
  ;   K[2]='状态不符，已过 rTime'
  ;   K[3]='GetTriggeredRecipe'
  ;   K[4]='GM'
  ;   K[5]='MainBoardModel'
  ;   K[6]='GetUnfilledDirectOrderRequirements'
  ;   K[7]='状态不符，菜品已不再需求'
  ;   K[8]='IsRecipePriceValid'
  ;   K[9]='IsRecipeMeetsCostRequirement'
  ;   K[10]='状态不符，钻石不在区间'
  ;   K[11]='CanCook'
  ;   K[12]='状态不符，无法做需求的菜'
  ;   K[13]='CalculateAllLackMaterials'
  ;   K[14]='IsInCookDishMaterialExist'
  ;   K[15]='状态不符，中间菜不符要求'
  ;   K[16]='GetCurMaterialsCount'
  ;   K[17]=0
  ;   K[18]='CalculateOnlyRecipe'
  ;   K[19]='StringUtil'
  ;   K[20]='IsNilOrEmpty'
  ;   K[21]='状态不符，无法确定唯一菜品'
  ;   upvals: _ENV
  ;   locals: self(0-89), cookCmp(0-89), recipe(10-89), unfilledDirectResult(15-89), codeCountMap(15-89), filledResult(15-89), canCook(44-89), lackMaterials(44-89), arrLackNonDishMaterials(54-89), arrLackDishMaterials(54-89), onlyRecipe(73-89), lackMaterials(73-89)
  0000  GETTABLE  R2 = R0[K0('m_bEnabled')]
  0001  TEST      if not R2 then   -> -131068
  0002  JMP       (jump)   -> 8
  0003  SELF      R3 = R0[K1('_Log')] (self)
  0004  LOADK     R4 = K2 '状态不符，已过 rTime'
  0005  CALL      R2 = call(R2, 0 args, 2 rets)
  0006  LOADBOOL  R2 = false
  0007  RETURN    return R2..R1
  0008  SELF      R3 = R0[K3('GetTriggeredRecipe')] (self)
  0009  CALL      R2 = call(R2, 1 args, 1 rets)
  0010  GETTABUP  R3 = _ENV[K4('GM')]
  0011  GETTABLE  R3 = R3[K5('MainBoardModel')]
  0012  SELF      R4 = R3[K6('GetUnfilledDirectOrderRequirements')] (self)
  0013  LOADBOOL  R5 = false
  0014  CALL      R3 = call(R3, 3 args, 2 rets)
  0015  GETTABLE  R6 = R3[R2]
  0016  TEST      if not R6 then   -> -131053
  0017  JMP       (jump)   -> 23
  0018  SELF      R7 = R0[K1('_Log')] (self)
  0019  LOADK     R8 = K7 '状态不符，菜品已不再需求'
  0020  CALL      R6 = call(R6, 0 args, 2 rets)
  0021  LOADBOOL  R6 = false
  0022  RETURN    return R6..R5
  0023  SELF      R7 = R0[K8('IsRecipePriceValid')] (self)
  0024  MOVE      R8 = R0
  0025  CALL      R6 = call(R6, 1 args, 2 rets)
  0026  TEST      if not R6 then   -> -131043
  0027  JMP       (jump)   -> 30
  0028  LOADBOOL  R6 = false
  0029  RETURN    return R6..R5
  0030  SELF      R7 = R0[K9('IsRecipeMeetsCostRequirement')] (self)
  0031  MOVE      R8 = R0
  0032  MOVE      R9 = R0
  0033  CALL      R6 = call(R6, 1 args, 3 rets)
  0034  TEST      if not R6 then   -> -131035
  0035  JMP       (jump)   -> 41
  0036  SELF      R7 = R0[K1('_Log')] (self)
  0037  LOADK     R8 = K10 '状态不符，钻石不在区间'
  0038  CALL      R6 = call(R6, 0 args, 2 rets)
  0039  LOADBOOL  R6 = false
  0040  RETURN    return R6..R5
  0041  SELF      R7 = R1[K11('CanCook')] (self)
  0042  MOVE      R8 = R0
  0043  CALL      R6 = call(R6, 2 args, 2 rets)
  0044  TEST      if not R6 then   -> -131025
  0045  JMP       (jump)   -> 51
  0046  SELF      R9 = R0[K1('_Log')] (self)
  0047  LOADK     R10 = K12 '状态不符，无法做需求的菜'
  0048  CALL      R8 = call(R8, 0 args, 2 rets)
  0049  LOADBOOL  R8 = false
  0050  RETURN    return R8..R7
  0051  SELF      R9 = R0[K13('CalculateAllLackMaterials')] (self)
  0052  MOVE      R10 = R0
  0053  CALL      R8 = call(R8, 2 args, 2 rets)
  0054  SELF      R11 = R0[K14('IsInCookDishMaterialExist')] (self)
  0055  MOVE      R12 = R0
  0056  CALL      R10 = call(R10, 1 args, 2 rets)
  0057  TEST      if not R10 then   -> -131013
  0058  JMP       (jump)   -> 64
  0059  SELF      R11 = R0[K1('_Log')] (self)
  0060  LOADK     R12 = K15 '状态不符，中间菜不符要求'
  0061  CALL      R10 = call(R10, 0 args, 2 rets)
  0062  LOADBOOL  R10 = false
  0063  RETURN    return R10..R9
  0064  SELF      R11 = R1[K16('GetCurMaterialsCount')] (self)
  0065  CALL      R10 = call(R10, 1 args, 1 rets)
  0066  EQ        if R0 eq K17(0)   -> -125611
  0067  JMP       (jump)   -> 70
  0068  LOADBOOL  R10 = true
  0069  RETURN    return R10..R9
  0070  SELF      R11 = R0[K18('CalculateOnlyRecipe')] (self)
  0071  MOVE      R12 = R0
  0072  CALL      R10 = call(R10, 2 args, 2 rets)
  0073  GETTABUP  R12 = _ENV[K19('StringUtil')]
  0074  GETTABLE  R12 = R12[K20('IsNilOrEmpty')]
  0075  MOVE      R13 = R0
  0076  CALL      R12 = call(R12, 1 args, 1 rets)
  0077  TEST      if not R12 then   -> -130992
  0078  JMP       (jump)   -> 81
  0079  EQ        if R1 eq R10   -> -129957
  0080  JMP       (jump)   -> 86
  0081  SELF      R13 = R0[K1('_Log')] (self)
  0082  LOADK     R14 = K21 '状态不符，无法确定唯一菜品'
  0083  CALL      R12 = call(R12, 0 args, 2 rets)
  0084  LOADBOOL  R12 = false
  0085  RETURN    return R12..R11
  0086  LOADBOOL  R12 = true
  0087  RETURN    return R12..R11
  0088  RETURN    return R0..R-1
; ---------- proto26 [IsRecipePriceValid] ----------
  ; fn ?  line 415-424 np=2 va=0 ms=13 code=38 consts=10 upvals=1 protos=0
  ;   K[0]='ipairs'
  ;   K[1]='GM'
  ;   K[2]='ItemDataModel'
  ;   K[3]='GetAllMaterials'
  ;   K[4]='GetChainLevel'
  ;   K[5]=5
  ;   K[6]='ShopDataModel'
  ;   K[7]='GetConfigGemCostForItemType'
  ;   K[8]='_Log'
  ;   K[9]=' 有未配置价格的高级食材：'
  ;   upvals: _ENV
  ;   locals: self(0-38), recipe(0-38), (for generator)(10-35), (for state)(10-35), (for control)(10-35), _(11-33), mat(11-33), level(16-33)
  0000  GETTABUP  R2 = _ENV[K0('ipairs')]
  0001  GETTABUP  R3 = _ENV[K1('GM')]
  0002  GETTABLE  R3 = R3[K2('ItemDataModel')]
  0003  SELF      R4 = R3[K3('GetAllMaterials')] (self)
  0004  MOVE      R5 = R0
  0005  CALL      R3 = call(R3, 1 args, 2 rets)
  0006  TEST      if not R3 then   -> -131063
  0007  JMP       (jump)   -> 9
  0008  NEWTABLE  R3 = {} (0 items)
  0009  CALL      R2 = call(R2, 3 args, 1 rets)
  0010  JMP       (jump)   -> 33
  0011  GETTABUP  R7 = _ENV[K1('GM')]
  0012  GETTABLE  R7 = R7[K2('ItemDataModel')]
  0013  SELF      R8 = R7[K4('GetChainLevel')] (self)
  0014  MOVE      R9 = R0
  0015  CALL      R7 = call(R7, 1 args, 2 rets)
  0016  LT        if R0 lt R7   -> 2585
  0017  JMP       (jump)   -> 33
  0018  GETTABUP  R8 = _ENV[K1('GM')]
  0019  GETTABLE  R8 = R8[K6('ShopDataModel')]
  0020  SELF      R9 = R8[K7('GetConfigGemCostForItemType')] (self)
  0021  MOVE      R10 = R0
  0022  CALL      R8 = call(R8, 1 args, 2 rets)
  0023  TEST      if not R8 then   -> -131046
  0024  JMP       (jump)   -> 33
  0025  SELF      R9 = R0[K8('_Log')] (self)
  0026  MOVE      R10 = R0
  0027  LOADK     R11 = K9 ' 有未配置价格的高级食材：'
  0028  MOVE      R12 = R0
  0029  CONCAT    R10 = concat(R10..R10)
  0030  CALL      R8 = call(R8, 0 args, 2 rets)
  0031  LOADBOOL  R8 = false
  0032  RETURN    return R8..R7
  0033  TFORCALL  tforcall R2
  0034  TFORLOOP  tforloop R4(sBx=-24)   -> 11
  0035  LOADBOOL  R2 = true
  0036  RETURN    return R2..R1
  0037  RETURN    return R0..R-1
; ---------- proto27 [IsRecipeMeetsCostRequirement] ----------
  ; fn ?  line 430-437 np=3 va=0 ms=12 code=24 consts=7 upvals=0 protos=0
  ;   K[0]='CalculatePrice'
  ;   K[1]='m_minTriggerGemCount'
  ;   K[2]='m_maxTriggerGemCount'
  ;   K[3]='_Log'
  ;   K[4]='费用不符合要求：'
  ;   K[5]=', 区间为：'
  ;   K[6]=', '
  ;   locals: self(0-24), cookCmp(0-24), recipe(0-24), cost(4-24)
  0000  SELF      R4 = R0[K0('CalculatePrice')] (self)
  0001  MOVE      R5 = R0
  0002  MOVE      R6 = R0
  0003  CALL      R3 = call(R3, 1 args, 3 rets)
  0004  GETTABLE  R4 = R0[K1('m_minTriggerGemCount')]
  0005  LT        if R1 lt R4   -> -129525
  0006  JMP       (jump)   -> 10
  0007  GETTABLE  R4 = R0[K2('m_maxTriggerGemCount')]
  0008  LT        if R0 lt R3   -> -129011
  0009  JMP       (jump)   -> 21
  0010  SELF      R5 = R0[K3('_Log')] (self)
  0011  LOADK     R6 = K4 '费用不符合要求：'
  0012  MOVE      R7 = R0
  0013  LOADK     R8 = K5 ', 区间为：'
  0014  GETTABLE  R9 = R0[K1('m_minTriggerGemCount')]
  0015  LOADK     R10 = K6 ', '
  0016  GETTABLE  R11 = R0[K2('m_maxTriggerGemCount')]
  0017  CONCAT    R6 = concat(R6..R6)
  0018  CALL      R4 = call(R4, 0 args, 2 rets)
  0019  LOADBOOL  R4 = false
  0020  RETURN    return R4..R3
  0021  LOADBOOL  R4 = true
  0022  RETURN    return R4..R3
  0023  RETURN    return R0..R-1
; ---------- proto28 [CalculateAllLackMaterials] ----------
  ; fn ?  line 443-458 np=2 va=0 ms=14 code=36 consts=7 upvals=1 protos=0
  ;   K[0]='ipairs'
  ;   K[1]='GM'
  ;   K[2]='ItemDataModel'
  ;   K[3]='GetAllMaterials'
  ;   K[4]=1
  ;   K[5]='Table'
  ;   K[6]='ListAppend'
  ;   upvals: _ENV
  ;   locals: self(0-36), lackMaterials(0-36), arrLackNonDishMaterials(1-36), arrLackDishMaterials(2-36), (for generator)(5-32), (for state)(5-32), (for control)(5-32), _(6-30), lackMat(6-30), arrNonDishMaterials(11-30), arrDishMaterials(11-30)
  0000  NEWTABLE  R2 = {} (0 items)
  0001  NEWTABLE  R3 = {} (0 items)
  0002  GETTABUP  R4 = _ENV[K0('ipairs')]
  0003  MOVE      R5 = R0
  0004  CALL      R4 = call(R4, 3 args, 1 rets)
  0005  JMP       (jump)   -> 30
  0006  GETTABUP  R9 = _ENV[K1('GM')]
  0007  GETTABLE  R9 = R9[K2('ItemDataModel')]
  0008  SELF      R10 = R9[K3('GetAllMaterials')] (self)
  0009  MOVE      R11 = R0
  0010  CALL      R9 = call(R9, 2 args, 2 rets)
  0011  TEST      if not R9 then   -> -131059
  0012  JMP       (jump)   -> 27
  0013  LEN       R11 = len R0
  0014  ADD       R11 = K4(1) add R11
  0015  SETTABLE  R3[R11] = R8
  0016  GETTABUP  R11 = _ENV[K5('Table')]
  0017  GETTABLE  R11 = R11[K6('ListAppend')]
  0018  MOVE      R12 = R0
  0019  MOVE      R13 = R0
  0020  CALL      R11 = call(R11, 0 args, 2 rets)
  0021  GETTABUP  R11 = _ENV[K5('Table')]
  0022  GETTABLE  R11 = R11[K6('ListAppend')]
  0023  MOVE      R12 = R0
  0024  MOVE      R13 = R0
  0025  CALL      R11 = call(R11, 0 args, 2 rets)
  0026  JMP       (jump)   -> 30
  0027  LEN       R11 = len R0
  0028  ADD       R11 = K4(1) add R11
  0029  SETTABLE  R2[R11] = R8
  0030  TFORCALL  tforcall R4
  0031  TFORLOOP  tforloop R6(sBx=-26)   -> 6
  0032  MOVE      R4 = R0
  0033  MOVE      R5 = R0
  0034  RETURN    return R4..R3
  0035  RETURN    return R0..R-1
; ---------- proto29 [IsInCookDishMaterialExist] ----------
  ; fn ?  line 463-492 np=2 va=0 ms=20 code=84 consts=18 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MainBoardModel'
  ;   K[2]='GetAllItemCookCmp'
  ;   K[3]='ipairs'
  ;   K[4]='GetBoardItemCountByType'
  ;   K[5]=0
  ;   K[6]='_Log'
  ;   K[7]='棋盘存在所缺中间菜'
  ;   K[8]='GetStoredCountByCode'
  ;   K[9]='仓库中有中间菜'
  ;   K[10]='GetItemModel'
  ;   K[11]='GetCode'
  ;   K[12]='GetRecipe'
  ;   K[13]='厨具'
  ;   K[14]='中有中间菜'
  ;   K[15]='GetCurMaterialsCount'
  ;   K[16]='CanCook'
  ;   K[17]='可做中间菜'
  ;   upvals: _ENV
  ;   locals: self(0-84), arrLackDishMaterials(0-84), arrCookCmps(6-84), (for generator)(9-81), (for state)(9-81), (for control)(9-81), _(10-79), dishMat(10-79), (for generator)(41-79), (for state)(41-79), (for control)(41-79), _(42-77), cookCmp(42-77), cookItemCode(46-77)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('MainBoardModel')]
  0002  SELF      R3 = R2[K2('GetAllItemCookCmp')] (self)
  0003  LOADBOOL  R4 = true
  0004  LOADBOOL  R5 = true
  0005  CALL      R2 = call(R2, 1 args, 3 rets)
  0006  GETTABUP  R3 = _ENV[K3('ipairs')]
  0007  MOVE      R4 = R0
  0008  CALL      R3 = call(R3, 3 args, 1 rets)
  0009  JMP       (jump)   -> 79
  0010  GETTABUP  R8 = _ENV[K0('GM')]
  0011  GETTABLE  R8 = R8[K1('MainBoardModel')]
  0012  SELF      R9 = R8[K4('GetBoardItemCountByType')] (self)
  0013  MOVE      R10 = R0
  0014  CALL      R8 = call(R8, 1 args, 2 rets)
  0015  LT        if R0 lt R8   -> 2585
  0016  JMP       (jump)   -> 24
  0017  SELF      R9 = R0[K6('_Log')] (self)
  0018  LOADK     R10 = K7 '棋盘存在所缺中间菜'
  0019  MOVE      R11 = R0
  0020  CONCAT    R10 = concat(R10..R10)
  0021  CALL      R8 = call(R8, 0 args, 2 rets)
  0022  LOADBOOL  R8 = true
  0023  RETURN    return R8..R7
  0024  GETTABUP  R8 = _ENV[K0('GM')]
  0025  GETTABLE  R8 = R8[K1('MainBoardModel')]
  0026  SELF      R9 = R8[K8('GetStoredCountByCode')] (self)
  0027  MOVE      R10 = R0
  0028  CALL      R8 = call(R8, 1 args, 2 rets)
  0029  LT        if R0 lt R8   -> 2599
  0030  JMP       (jump)   -> 38
  0031  SELF      R9 = R0[K6('_Log')] (self)
  0032  LOADK     R10 = K9 '仓库中有中间菜'
  0033  MOVE      R11 = R0
  0034  CONCAT    R10 = concat(R10..R10)
  0035  CALL      R8 = call(R8, 0 args, 2 rets)
  0036  LOADBOOL  R8 = true
  0037  RETURN    return R8..R7
  0038  GETTABUP  R8 = _ENV[K3('ipairs')]
  0039  MOVE      R9 = R0
  0040  CALL      R8 = call(R8, 3 args, 1 rets)
  0041  JMP       (jump)   -> 77
  0042  SELF      R14 = R12[K10('GetItemModel')] (self)
  0043  CALL      R13 = call(R13, 1 args, 1 rets)
  0044  SELF      R14 = R13[K11('GetCode')] (self)
  0045  CALL      R13 = call(R13, 1 args, 1 rets)
  0046  SELF      R15 = R12[K12('GetRecipe')] (self)
  0047  CALL      R14 = call(R14, 1 args, 1 rets)
  0048  EQ        if R0 eq R7   -> -123847
  0049  JMP       (jump)   -> 59
  0050  SELF      R15 = R0[K6('_Log')] (self)
  0051  LOADK     R16 = K13 '厨具'
  0052  MOVE      R17 = R0
  0053  LOADK     R18 = K14 '中有中间菜'
  0054  MOVE      R19 = R0
  0055  CONCAT    R16 = concat(R16..R16)
  0056  CALL      R14 = call(R14, 0 args, 2 rets)
  0057  LOADBOOL  R14 = true
  0058  RETURN    return R14..R13
  0059  SELF      R15 = R12[K15('GetCurMaterialsCount')] (self)
  0060  CALL      R14 = call(R14, 1 args, 1 rets)
  0061  LT        if R0 lt R14   -> 2637
  0062  JMP       (jump)   -> 77
  0063  SELF      R15 = R12[K16('CanCook')] (self)
  0064  MOVE      R16 = R0
  0065  CALL      R14 = call(R14, 1 args, 2 rets)
  0066  TEST      if not R14 then   -> -131004
  0067  JMP       (jump)   -> 77
  0068  SELF      R15 = R0[K6('_Log')] (self)
  0069  LOADK     R16 = K13 '厨具'
  0070  MOVE      R17 = R0
  0071  LOADK     R18 = K17 '可做中间菜'
  0072  MOVE      R19 = R0
  0073  CONCAT    R16 = concat(R16..R16)
  0074  CALL      R14 = call(R14, 0 args, 2 rets)
  0075  LOADBOOL  R14 = true
  0076  RETURN    return R14..R13
  0077  TFORCALL  tforcall R8
  0078  TFORLOOP  tforloop R10(sBx=-37)   -> 42
  0079  TFORCALL  tforcall R3
  0080  TFORLOOP  tforloop R5(sBx=-71)   -> 10
  0081  LOADBOOL  R3 = false
  0082  RETURN    return R3..R2
  0083  RETURN    return R0..R-1
; ---------- proto30 [CalculateOnlyRecipe] ----------
  ; fn ?  line 498-513 np=2 va=0 ms=15 code=27 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MainBoardModel'
  ;   K[2]='GetUnfilledDirectOrderRequirements'
  ;   K[3]='pairs'
  ;   K[4]='CanCook'
  ;   upvals: _ENV
  ;   locals: self(0-27), cookCmp(0-27), unfilledDirectResult(5-27), codeCountMap(5-27), filledResult(5-27), recipe(6-27), lackMaterials(6-27), (for generator)(9-23), (for state)(9-23), (for control)(9-23), unfilled(10-21), _(10-21), canCook(13-21), lacked(13-21)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('MainBoardModel')]
  0002  SELF      R3 = R2[K2('GetUnfilledDirectOrderRequirements')] (self)
  0003  LOADBOOL  R4 = false
  0004  CALL      R2 = call(R2, 3 args, 2 rets)
  0005  LOADNIL   R5..R5 = nil
  0006  GETTABUP  R7 = _ENV[K3('pairs')]
  0007  MOVE      R8 = R0
  0008  CALL      R7 = call(R7, 3 args, 1 rets)
  0009  JMP       (jump)   -> 21
  0010  SELF      R13 = R1[K4('CanCook')] (self)
  0011  MOVE      R14 = R0
  0012  CALL      R12 = call(R12, 2 args, 2 rets)
  0013  TEST      if not R12 then   -> -131057
  0014  JMP       (jump)   -> 21
  0015  TEST      if not R5 then   -> -131055
  0016  JMP       (jump)   -> 19
  0017  LOADNIL   R14..R14 = nil
  0018  RETURN    return R14..R13
  0019  MOVE      R5 = R0
  0020  MOVE      R6 = R0
  0021  TFORCALL  tforcall R7
  0022  TFORLOOP  tforloop R9(sBx=-13)   -> 10
  0023  MOVE      R7 = R0
  0024  MOVE      R8 = R0
  0025  RETURN    return R7..R6
  0026  RETURN    return R0..R-1
; ---------- proto31 [_CanTriggerEqBubble] ----------
  ; fn ?  line 518-617 np=2 va=0 ms=24 code=227 consts=46 upvals=1 protos=1
  ;   K[0]='m_bEnabled'
  ;   K[1]='_Log'
  ;   K[2]='功能未开启'
  ;   K[3]='m_config'
  ;   K[4]='eTime'
  ;   K[5]='GM'
  ;   K[6]='GameModel'
  ;   K[7]='GetServerTime'
  ;   K[8]='已过 eTime'
  ;   K[9]='IsDisposable'
  ;   K[10]='一次性厨具不生效'
  ;   K[11]='CalculateOnlyRecipe'
  ;   K[12]='StringUtil'
  ;   K[13]='IsNilOrEmpty'
  ;   K[14]='未找到匹配菜品'
  ;   K[15]='IsRecipePriceValid'
  ;   K[16]='IsRecipeMeetsCostRequirement'
  ;   K[17]='CalculateAllLackMaterials'
  ;   K[18]=2
  ;   K[19]='缺的复杂度 N 为：'
  ;   K[20]=0
  ;   K[21]='ipairs'
  ;   K[22]='m_arrTriggerConfig'
  ;   K[23]='minMaterialCount'
  ;   K[24]='maxMaterialCount'
  ;   K[25]='rate'
  ;   K[26]='MathUtil'
  ;   K[27]='Random'
  ;   K[28]=100
  ;   K[29]='未抽中，配置上抽中的概率为百分之'
  ;   K[30]='MainBoardModel'
  ;   K[31]='GetBoardItemCountByType'
  ;   K[32]='ItemDataModel'
  ;   K[33]='IsDisposableInstrument'
  ;   K[34]='FilterItemsByType'
  ;   K[35]=1
  ;   K[36]='棋盘存在所缺食材'
  ;   K[37]='GetChainId'
  ;   K[38]='IsTransformedChain'
  ;   K[39]='GetChainLevel'
  ;   K[40]='_'
  ;   K[41]='棋盘存在低级转化后棋子'
  ;   K[42]='IsUnlocked'
  ;   K[43]='所缺中间菜品还未解锁'
  ;   K[44]='IsInCookDishMaterialExist'
  ;   K[45]='触发成功：'
  ;   upvals: _ENV
  ;   locals: self(0-227), cookCmp(0-227), recipe(39-227), lackMaterials(39-227), arrLackNonDishMaterials(68-227), arrLackDishMaterials(68-227), N(72-227), rate(78-227), (for generator)(81-92), (for state)(81-92), (for control)(81-92), _(82-90), triggerConfig(82-90), (for generator)(110-193), (for state)(110-193), (for control)(110-193), _(111-191), nonDishMat(111-191), arrEmptyInstru(133-143), chainId(156-191), chainLevel(168-191), (for index)(171-191), (for limit)(171-191), (for step)(171-191), level(172-190), lowLevelSideProductType(176-190), (for generator)(196-213), (for state)(196-213), (for control)(196-213), _(197-211), dishMat(197-211)
  0000  GETTABLE  R2 = R0[K0('m_bEnabled')]
  0001  TEST      if not R2 then   -> -131068
  0002  JMP       (jump)   -> 8
  0003  SELF      R3 = R0[K1('_Log')] (self)
  0004  LOADK     R4 = K2 '功能未开启'
  0005  CALL      R2 = call(R2, 0 args, 2 rets)
  0006  LOADBOOL  R2 = false
  0007  RETURN    return R2..R1
  0008  GETTABLE  R2 = R0[K3('m_config')]
  0009  GETTABLE  R2 = R2[K4('eTime')]
  0010  TEST      if not R2 then   -> -131060
  0011  JMP       (jump)   -> 25
  0012  GETTABUP  R2 = _ENV[K5('GM')]
  0013  GETTABLE  R2 = R2[K6('GameModel')]
  0014  SELF      R3 = R2[K7('GetServerTime')] (self)
  0015  CALL      R2 = call(R2, 1 args, 1 rets)
  0016  GETTABLE  R3 = R0[K3('m_config')]
  0017  GETTABLE  R3 = R3[K4('eTime')]
  0018  LE        if R0 le R2   -> -129514
  0019  JMP       (jump)   -> 25
  0020  SELF      R3 = R0[K1('_Log')] (self)
  0021  LOADK     R4 = K8 '已过 eTime'
  0022  CALL      R2 = call(R2, 0 args, 2 rets)
  0023  LOADBOOL  R2 = false
  0024  RETURN    return R2..R1
  0025  TEST      if not R1 then   -> -131045
  0026  JMP       (jump)   -> 31
  0027  SELF      R3 = R1[K9('IsDisposable')] (self)
  0028  CALL      R2 = call(R2, 1 args, 1 rets)
  0029  TEST      if not R2 then   -> -131041
  0030  JMP       (jump)   -> 36
  0031  SELF      R3 = R0[K1('_Log')] (self)
  0032  LOADK     R4 = K10 '一次性厨具不生效'
  0033  CALL      R2 = call(R2, 0 args, 2 rets)
  0034  LOADBOOL  R2 = false
  0035  RETURN    return R2..R1
  0036  SELF      R3 = R0[K11('CalculateOnlyRecipe')] (self)
  0037  MOVE      R4 = R0
  0038  CALL      R2 = call(R2, 2 args, 2 rets)
  0039  GETTABUP  R4 = _ENV[K12('StringUtil')]
  0040  GETTABLE  R4 = R4[K13('IsNilOrEmpty')]
  0041  MOVE      R5 = R0
  0042  CALL      R4 = call(R4, 1 args, 1 rets)
  0043  TEST      if not R4 then   -> -131027
  0044  JMP       (jump)   -> 50
  0045  SELF      R5 = R0[K1('_Log')] (self)
  0046  LOADK     R6 = K14 '未找到匹配菜品'
  0047  CALL      R4 = call(R4, 0 args, 2 rets)
  0048  LOADBOOL  R4 = false
  0049  RETURN    return R4..R3
  0050  SELF      R5 = R0[K15('IsRecipePriceValid')] (self)
  0051  MOVE      R6 = R0
  0052  CALL      R4 = call(R4, 1 args, 2 rets)
  0053  TEST      if not R4 then   -> -131016
  0054  JMP       (jump)   -> 57
  0055  LOADBOOL  R4 = false
  0056  RETURN    return R4..R3
  0057  SELF      R5 = R0[K16('IsRecipeMeetsCostRequirement')] (self)
  0058  MOVE      R6 = R0
  0059  MOVE      R7 = R0
  0060  CALL      R4 = call(R4, 1 args, 3 rets)
  0061  TEST      if not R4 then   -> -131008
  0062  JMP       (jump)   -> 65
  0063  LOADBOOL  R4 = false
  0064  RETURN    return R4..R3
  0065  SELF      R5 = R0[K17('CalculateAllLackMaterials')] (self)
  0066  MOVE      R6 = R0
  0067  CALL      R4 = call(R4, 2 args, 2 rets)
  0068  LEN       R6 = len R0
  0069  LEN       R7 = len R0
  0070  MUL       R7 = K18(2) mul R7
  0071  ADD       R6 = R7 add R6
  0072  SELF      R8 = R0[K1('_Log')] (self)
  0073  LOADK     R9 = K19 '缺的复杂度 N 为：'
  0074  MOVE      R10 = R0
  0075  CONCAT    R9 = concat(R9..R9)
  0076  CALL      R7 = call(R7, 0 args, 2 rets)
  0077  LOADK     R7 = K20 0
  0078  GETTABUP  R8 = _ENV[K21('ipairs')]
  0079  GETTABLE  R9 = R0[K22('m_arrTriggerConfig')]
  0080  CALL      R8 = call(R8, 3 args, 1 rets)
  0081  JMP       (jump)   -> 90
  0082  GETTABLE  R13 = R12[K23('minMaterialCount')]
  0083  LE        if R0 le R6   -> -124325
  0084  JMP       (jump)   -> 90
  0085  GETTABLE  R13 = R12[K24('maxMaterialCount')]
  0086  LE        if R0 le R13   -> -127899
  0087  JMP       (jump)   -> 90
  0088  GETTABLE  R7 = R12[K25('rate')]
  0089  JMP       (jump)   -> 92
  0090  TFORCALL  tforcall R8
  0091  TFORLOOP  tforloop R10(sBx=-10)   -> 82
  0092  LE        if R1 le K20(0)   -> -127118
  0093  JMP       (jump)   -> 100
  0094  GETTABUP  R8 = _ENV[K26('MathUtil')]
  0095  GETTABLE  R8 = R8[K27('Random')]
  0096  LOADK     R9 = K28 100
  0097  CALL      R8 = call(R8, 1 args, 1 rets)
  0098  LT        if R0 lt R8   -> -127380
  0099  JMP       (jump)   -> 107
  0100  SELF      R9 = R0[K1('_Log')] (self)
  0101  LOADK     R10 = K29 '未抽中，配置上抽中的概率为百分之'
  0102  MOVE      R11 = R0
  0103  CONCAT    R10 = concat(R10..R10)
  0104  CALL      R8 = call(R8, 0 args, 2 rets)
  0105  LOADBOOL  R8 = false
  0106  RETURN    return R8..R7
  0107  GETTABUP  R8 = _ENV[K21('ipairs')]
  0108  MOVE      R9 = R0
  0109  CALL      R8 = call(R8, 3 args, 1 rets)
  0110  JMP       (jump)   -> 191
  0111  GETTABUP  R13 = _ENV[K5('GM')]
  0112  GETTABLE  R13 = R13[K30('MainBoardModel')]
  0113  SELF      R14 = R13[K31('GetBoardItemCountByType')] (self)
  0114  MOVE      R15 = R0
  0115  CALL      R13 = call(R13, 1 args, 2 rets)
  0116  LT        if R0 lt R13   -> 10371
  0117  JMP       (jump)   -> 151
  0118  GETTABUP  R13 = _ENV[K5('GM')]
  0119  GETTABLE  R13 = R13[K32('ItemDataModel')]
  0120  SELF      R14 = R13[K33('IsDisposableInstrument')] (self)
  0121  MOVE      R15 = R0
  0122  CALL      R13 = call(R13, 1 args, 2 rets)
  0123  TEST      if not R13 then   -> -130947
  0124  JMP       (jump)   -> 144
  0125  GETTABUP  R13 = _ENV[K5('GM')]
  0126  GETTABLE  R13 = R13[K30('MainBoardModel')]
  0127  SELF      R14 = R13[K34('FilterItemsByType')] (self)
  0128  MOVE      R15 = R0
  0129  CLOSURE   R16 = closure proto0
  0130  LOADK     R17 = K35 1
  0131  LOADBOOL  R18 = false
  0132  CALL      R13 = call(R13, 1 args, 5 rets)
  0133  GETTABLE  R14 = R13[K35(1)]
  0134  TEST      if not R14 then   -> -130936
  0135  JMP       (jump)   -> 151
  0136  SELF      R15 = R0[K1('_Log')] (self)
  0137  LOADK     R16 = K36 '棋盘存在所缺食材'
  0138  MOVE      R17 = R0
  0139  CONCAT    R16 = concat(R16..R16)
  0140  CALL      R14 = call(R14, 0 args, 2 rets)
  0141  LOADBOOL  R14 = false
  0142  RETURN    return R14..R13
  0143  JMP       (jump)   -> 151
  0144  SELF      R14 = R0[K1('_Log')] (self)
  0145  LOADK     R15 = K36 '棋盘存在所缺食材'
  0146  MOVE      R16 = R0
  0147  CONCAT    R15 = concat(R15..R15)
  0148  CALL      R13 = call(R13, 0 args, 2 rets)
  0149  LOADBOOL  R13 = false
  0150  RETURN    return R13..R12
  0151  GETTABUP  R13 = _ENV[K5('GM')]
  0152  GETTABLE  R13 = R13[K32('ItemDataModel')]
  0153  SELF      R14 = R13[K37('GetChainId')] (self)
  0154  MOVE      R15 = R0
  0155  CALL      R13 = call(R13, 1 args, 2 rets)
  0156  GETTABUP  R14 = _ENV[K5('GM')]
  0157  GETTABLE  R14 = R14[K32('ItemDataModel')]
  0158  SELF      R15 = R14[K38('IsTransformedChain')] (self)
  0159  MOVE      R16 = R0
  0160  CALL      R14 = call(R14, 1 args, 2 rets)
  0161  TEST      if not R14 then   -> -130909
  0162  JMP       (jump)   -> 191
  0163  GETTABUP  R14 = _ENV[K5('GM')]
  0164  GETTABLE  R14 = R14[K32('ItemDataModel')]
  0165  SELF      R15 = R14[K39('GetChainLevel')] (self)
  0166  MOVE      R16 = R0
  0167  CALL      R14 = call(R14, 1 args, 2 rets)
  0168  LOADK     R15 = K35 1
  0169  SUB       R16 = K35(1) sub R14
  0170  LOADK     R17 = K35 1
  0171  FORPREP   forprep R15(sBx=18)   -> 190
  0172  MOVE      R19 = R0
  0173  LOADK     R20 = K40 '_'
  0174  MOVE      R21 = R0
  0175  CONCAT    R19 = concat(R19..R19)
  0176  GETTABUP  R20 = _ENV[K5('GM')]
  0177  GETTABLE  R20 = R20[K30('MainBoardModel')]
  0178  SELF      R21 = R20[K31('GetBoardItemCountByType')] (self)
  0179  MOVE      R22 = R0
  0180  CALL      R20 = call(R20, 1 args, 2 rets)
  0181  LT        if R0 lt R20   -> 10443
  0182  JMP       (jump)   -> 190
  0183  SELF      R21 = R0[K1('_Log')] (self)
  0184  LOADK     R22 = K41 '棋盘存在低级转化后棋子'
  0185  MOVE      R23 = R0
  0186  CONCAT    R22 = concat(R22..R22)
  0187  CALL      R20 = call(R20, 0 args, 2 rets)
  0188  LOADBOOL  R20 = false
  0189  RETURN    return R20..R19
  0190  FORLOOP   forloop R15(sBx=-19)   -> 172
  0191  TFORCALL  tforcall R8
  0192  TFORLOOP  tforloop R10(sBx=-82)   -> 111
  0193  GETTABUP  R8 = _ENV[K21('ipairs')]
  0194  MOVE      R9 = R0
  0195  CALL      R8 = call(R8, 3 args, 1 rets)
  0196  JMP       (jump)   -> 211
  0197  GETTABUP  R13 = _ENV[K5('GM')]
  0198  GETTABLE  R13 = R13[K32('ItemDataModel')]
  0199  SELF      R14 = R13[K42('IsUnlocked')] (self)
  0200  MOVE      R15 = R0
  0201  CALL      R13 = call(R13, 1 args, 2 rets)
  0202  TEST      if not R13 then   -> -130867
  0203  JMP       (jump)   -> 211
  0204  SELF      R14 = R0[K1('_Log')] (self)
  0205  LOADK     R15 = K43 '所缺中间菜品还未解锁'
  0206  MOVE      R16 = R0
  0207  CONCAT    R15 = concat(R15..R15)
  0208  CALL      R13 = call(R13, 0 args, 2 rets)
  0209  LOADBOOL  R13 = false
  0210  RETURN    return R13..R12
  0211  TFORCALL  tforcall R8
  0212  TFORLOOP  tforloop R10(sBx=-16)   -> 197
  0213  SELF      R9 = R0[K44('IsInCookDishMaterialExist')] (self)
  0214  MOVE      R10 = R0
  0215  CALL      R8 = call(R8, 1 args, 2 rets)
  0216  TEST      if not R8 then   -> -130854
  0217  JMP       (jump)   -> 220
  0218  LOADBOOL  R8 = false
  0219  RETURN    return R8..R7
  0220  SELF      R9 = R0[K1('_Log')] (self)
  0221  LOADK     R10 = K45 '触发成功：'
  0222  MOVE      R11 = R0
  0223  CONCAT    R10 = concat(R10..R10)
  0224  CALL      R8 = call(R8, 0 args, 2 rets)
  0225  RETURN    return R2..R1
  0226  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 575-577 np=1 va=0 ms=3 code=4 consts=1 upvals=0 protos=0
    ;   K[0]='IsEmptyInstrument'
    ;   locals: item(0-4)
    0000  SELF      R2 = R0[K0('IsEmptyInstrument')] (self)
    0001  TAILCALL  tailcall(R1, 0)
    0002  RETURN    return R1..R0
    0003  RETURN    return R0..R-1
; ---------- proto32 [TryTriggerEqBubble] ----------
  ; fn ?  line 622-644 np=2 va=0 ms=9 code=57 consts=17 upvals=1 protos=0
  ;   K[0]='_IsTriggered'
  ;   K[1]='GetEqBubbleLeftDuration'
  ;   K[2]=0
  ;   K[3]='_Log'
  ;   K[4]='当前已有触发中'
  ;   K[5]='IsInCD'
  ;   K[6]='正在 CD 中，剩余时间：'
  ;   K[7]='GetCDEndTimestamp'
  ;   K[8]='GM'
  ;   K[9]='GameModel'
  ;   K[10]='GetServerTime'
  ;   K[11]=', 上一次购买？'
  ;   K[12]='IsLastBuy'
  ;   K[13]='是'
  ;   K[14]='否'
  ;   K[15]='_CanTriggerEqBubble'
  ;   K[16]='_OnEqBubbleTriggered'
  ;   upvals: _ENV
  ;   locals: self(0-57), cookCmp(0-57), recipe(46-57)
  0000  TEST      if not R1 then   -> -131069
  0001  JMP       (jump)   -> 4
  0002  LOADBOOL  R2 = false
  0003  RETURN    return R2..R1
  0004  SELF      R3 = R0[K0('_IsTriggered')] (self)
  0005  CALL      R2 = call(R2, 1 args, 1 rets)
  0006  TEST      if not R2 then   -> -131064
  0007  JMP       (jump)   -> 17
  0008  SELF      R3 = R0[K1('GetEqBubbleLeftDuration')] (self)
  0009  CALL      R2 = call(R2, 1 args, 1 rets)
  0010  LT        if R0 lt R2   -> 1038
  0011  JMP       (jump)   -> 17
  0012  SELF      R3 = R0[K3('_Log')] (self)
  0013  LOADK     R4 = K4 '当前已有触发中'
  0014  CALL      R2 = call(R2, 0 args, 2 rets)
  0015  LOADBOOL  R2 = false
  0016  RETURN    return R2..R1
  0017  SELF      R3 = R0[K5('IsInCD')] (self)
  0018  CALL      R2 = call(R2, 1 args, 1 rets)
  0019  TEST      if not R2 then   -> -131051
  0020  JMP       (jump)   -> 43
  0021  SELF      R3 = R0[K3('_Log')] (self)
  0022  LOADK     R4 = K6 '正在 CD 中，剩余时间：'
  0023  SELF      R6 = R0[K7('GetCDEndTimestamp')] (self)
  0024  CALL      R5 = call(R5, 1 args, 1 rets)
  0025  GETTABUP  R6 = _ENV[K8('GM')]
  0026  GETTABLE  R6 = R6[K9('GameModel')]
  0027  SELF      R7 = R6[K10('GetServerTime')] (self)
  0028  CALL      R6 = call(R6, 1 args, 1 rets)
  0029  SUB       R5 = R6 sub R5
  0030  LOADK     R6 = K11 ', 上一次购买？'
  0031  SELF      R8 = R0[K12('IsLastBuy')] (self)
  0032  CALL      R7 = call(R7, 1 args, 1 rets)
  0033  TEST      if not R7 then   -> -131037
  0034  JMP       (jump)   -> 38
  0035  LOADK     R7 = K13 '是'
  0036  TEST      if not R7 then   -> -131033
  0037  JMP       (jump)   -> 39
  0038  LOADK     R7 = K14 '否'
  0039  CONCAT    R4 = concat(R4..R4)
  0040  CALL      R2 = call(R2, 0 args, 2 rets)
  0041  LOADBOOL  R2 = false
  0042  RETURN    return R2..R1
  0043  SELF      R3 = R0[K15('_CanTriggerEqBubble')] (self)
  0044  MOVE      R4 = R0
  0045  CALL      R2 = call(R2, 1 args, 2 rets)
  0046  TEST      if not R2 then   -> -131023
  0047  JMP       (jump)   -> 50
  0048  LOADBOOL  R3 = false
  0049  RETURN    return R3..R2
  0050  SELF      R4 = R0[K16('_OnEqBubbleTriggered')] (self)
  0051  MOVE      R5 = R0
  0052  MOVE      R6 = R0
  0053  CALL      R3 = call(R3, 0 args, 3 rets)
  0054  LOADBOOL  R3 = true
  0055  RETURN    return R3..R2
  0056  RETURN    return R0..R-1
; ---------- proto33 [_OnEqBubbleTriggered] ----------
  ; fn ?  line 648-667 np=3 va=0 ms=13 code=42 consts=21 upvals=1 protos=0
  ;   K[0]='GetItemModel'
  ;   K[1]='SetTriggeredItemId'
  ;   K[2]='GetId'
  ;   K[3]='SetTriggeredRecipe'
  ;   K[4]='SetTriggeredTimestamp'
  ;   K[5]='GM'
  ;   K[6]='GameModel'
  ;   K[7]='GetServerTime'
  ;   K[8]='EnterCD'
  ;   K[9]='_UpdateItemCookView'
  ;   K[10]='CanCook'
  ;   K[11]='CalculatePrice'
  ;   K[12]='BIManager'
  ;   K[13]='LogAction'
  ;   K[14]='EBIType'
  ;   K[15]='EqBubble'
  ;   K[16]='eq'
  ;   K[17]='GetCode'
  ;   K[18]='recipe'
  ;   K[19]='lacks'
  ;   K[20]='cost'
  ;   upvals: _ENV
  ;   locals: self(0-42), cookCmp(0-42), recipe(0-42), itemModel(2-42), _(24-42), lacks(24-42), cost(28-42)
  0000  SELF      R4 = R1[K0('GetItemModel')] (self)
  0001  CALL      R3 = call(R3, 1 args, 1 rets)
  0002  SELF      R5 = R0[K1('SetTriggeredItemId')] (self)
  0003  SELF      R7 = R3[K2('GetId')] (self)
  0004  CALL      R6 = call(R6, -1 args, 1 rets)
  0005  CALL      R4 = call(R4, 0 args, -1 rets)
  0006  SELF      R5 = R0[K3('SetTriggeredRecipe')] (self)
  0007  MOVE      R6 = R0
  0008  CALL      R4 = call(R4, 0 args, 2 rets)
  0009  SELF      R5 = R0[K4('SetTriggeredTimestamp')] (self)
  0010  GETTABUP  R6 = _ENV[K5('GM')]
  0011  GETTABLE  R6 = R6[K6('GameModel')]
  0012  SELF      R7 = R6[K7('GetServerTime')] (self)
  0013  CALL      R6 = call(R6, -1 args, 1 rets)
  0014  CALL      R4 = call(R4, 0 args, -1 rets)
  0015  SELF      R5 = R0[K8('EnterCD')] (self)
  0016  LOADBOOL  R6 = false
  0017  CALL      R4 = call(R4, 0 args, 2 rets)
  0018  SELF      R5 = R0[K9('_UpdateItemCookView')] (self)
  0019  MOVE      R6 = R0
  0020  CALL      R4 = call(R4, 0 args, 2 rets)
  0021  SELF      R5 = R1[K10('CanCook')] (self)
  0022  MOVE      R6 = R0
  0023  CALL      R4 = call(R4, 2 args, 2 rets)
  0024  SELF      R7 = R0[K11('CalculatePrice')] (self)
  0025  MOVE      R8 = R0
  0026  MOVE      R9 = R0
  0027  CALL      R6 = call(R6, 1 args, 3 rets)
  0028  GETTABUP  R7 = _ENV[K5('GM')]
  0029  GETTABLE  R7 = R7[K12('BIManager')]
  0030  SELF      R8 = R7[K13('LogAction')] (self)
  0031  GETTABUP  R9 = _ENV[K14('EBIType')]
  0032  GETTABLE  R9 = R9[K15('EqBubble')]
  0033  NEWTABLE  R10 = {} (0 items)
  0034  SELF      R12 = R3[K17('GetCode')] (self)
  0035  CALL      R11 = call(R11, 1 args, 1 rets)
  0036  SETTABLE  R10[K16('eq')] = R11
  0037  SETTABLE  R10[K18('recipe')] = R2
  0038  SETTABLE  R10[K19('lacks')] = R5
  0039  SETTABLE  R10[K20('cost')] = R6
  0040  CALL      R7 = call(R7, 0 args, 3 rets)
  0041  RETURN    return R0..R-1
; ---------- proto34 [GetTriggeredItemId] ----------
  ; fn ?  line 673-675 np=1 va=0 ms=4 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='Get'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleTriggerItemId'
  ;   upvals: _ENV
  ;   locals: self(0-8)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('MiscModel')]
  0002  SELF      R2 = R1[K2('Get')] (self)
  0003  GETTABUP  R3 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R3 = R3[K4('EqBubbleTriggerItemId')]
  0005  TAILCALL  tailcall(R1, 0)
  0006  RETURN    return R1..R0
  0007  RETURN    return R0..R-1
; ---------- proto35 [SetTriggeredItemId] ----------
  ; fn ?  line 677-679 np=2 va=0 ms=6 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='Set'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleTriggerItemId'
  ;   upvals: _ENV
  ;   locals: self(0-8), itemId(0-8)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('MiscModel')]
  0002  SELF      R3 = R2[K2('Set')] (self)
  0003  GETTABUP  R4 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R4 = R4[K4('EqBubbleTriggerItemId')]
  0005  MOVE      R5 = R0
  0006  CALL      R2 = call(R2, 0 args, 3 rets)
  0007  RETURN    return R0..R-1
; ---------- proto36 [GetTriggeredTimestamp] ----------
  ; fn ?  line 683-685 np=1 va=0 ms=4 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='GetInNumber'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleTriggeredTimestamp'
  ;   upvals: _ENV
  ;   locals: self(0-8)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('MiscModel')]
  0002  SELF      R2 = R1[K2('GetInNumber')] (self)
  0003  GETTABUP  R3 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R3 = R3[K4('EqBubbleTriggeredTimestamp')]
  0005  TAILCALL  tailcall(R1, 0)
  0006  RETURN    return R1..R0
  0007  RETURN    return R0..R-1
; ---------- proto37 [SetTriggeredTimestamp] ----------
  ; fn ?  line 687-689 np=2 va=0 ms=6 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='Set'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleTriggeredTimestamp'
  ;   upvals: _ENV
  ;   locals: self(0-8), triggerTimestamp(0-8)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('MiscModel')]
  0002  SELF      R3 = R2[K2('Set')] (self)
  0003  GETTABUP  R4 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R4 = R4[K4('EqBubbleTriggeredTimestamp')]
  0005  MOVE      R5 = R0
  0006  CALL      R2 = call(R2, 0 args, 3 rets)
  0007  RETURN    return R0..R-1
; ---------- proto38 [GetTriggeredRecipe] ----------
  ; fn ?  line 693-695 np=1 va=0 ms=4 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='Get'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleTriggerRecipe'
  ;   upvals: _ENV
  ;   locals: self(0-8)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('MiscModel')]
  0002  SELF      R2 = R1[K2('Get')] (self)
  0003  GETTABUP  R3 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R3 = R3[K4('EqBubbleTriggerRecipe')]
  0005  TAILCALL  tailcall(R1, 0)
  0006  RETURN    return R1..R0
  0007  RETURN    return R0..R-1
; ---------- proto39 [SetTriggeredRecipe] ----------
  ; fn ?  line 697-699 np=2 va=0 ms=6 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='Set'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleTriggerRecipe'
  ;   upvals: _ENV
  ;   locals: self(0-8), recipeId(0-8)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('MiscModel')]
  0002  SELF      R3 = R2[K2('Set')] (self)
  0003  GETTABUP  R4 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R4 = R4[K4('EqBubbleTriggerRecipe')]
  0005  MOVE      R5 = R0
  0006  CALL      R2 = call(R2, 0 args, 3 rets)
  0007  RETURN    return R0..R-1
; ---------- proto40 [GetStartCDTimestamp] ----------
  ; fn ?  line 703-705 np=1 va=0 ms=4 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='GetInNumber'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleStartCDTimestamp'
  ;   upvals: _ENV
  ;   locals: self(0-8)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('MiscModel')]
  0002  SELF      R2 = R1[K2('GetInNumber')] (self)
  0003  GETTABUP  R3 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R3 = R3[K4('EqBubbleStartCDTimestamp')]
  0005  TAILCALL  tailcall(R1, 0)
  0006  RETURN    return R1..R0
  0007  RETURN    return R0..R-1
; ---------- proto41 [SetStartCDTimestamp] ----------
  ; fn ?  line 707-709 np=2 va=0 ms=6 code=8 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='Set'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleStartCDTimestamp'
  ;   upvals: _ENV
  ;   locals: self(0-8), time(0-8)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('MiscModel')]
  0002  SELF      R3 = R2[K2('Set')] (self)
  0003  GETTABUP  R4 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R4 = R4[K4('EqBubbleStartCDTimestamp')]
  0005  MOVE      R5 = R0
  0006  CALL      R2 = call(R2, 0 args, 3 rets)
  0007  RETURN    return R0..R-1
; ---------- proto42 [IsLastBuy] ----------
  ; fn ?  line 713-715 np=1 va=0 ms=4 code=12 consts=6 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='GetInNumber'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleIsLastBuy'
  ;   K[5]=1
  ;   upvals: _ENV
  ;   locals: self(0-12)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('MiscModel')]
  0002  SELF      R2 = R1[K2('GetInNumber')] (self)
  0003  GETTABUP  R3 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R3 = R3[K4('EqBubbleIsLastBuy')]
  0005  CALL      R1 = call(R1, 1 args, 2 rets)
  0006  EQ        if R1 eq K5(1)   -> -130291
  0007  JMP       (jump)   -> 9
  0008  LOADBOOL  R1 = false
  0009  LOADBOOL  R1 = true
  0010  RETURN    return R1..R0
  0011  RETURN    return R0..R-1
; ---------- proto43 [SetLastBuy] ----------
  ; fn ?  line 717-719 np=2 va=0 ms=6 code=13 consts=7 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='MiscModel'
  ;   K[2]='Set'
  ;   K[3]='EMiscKey'
  ;   K[4]='EqBubbleIsLastBuy'
  ;   K[5]=1
  ;   K[6]=0
  ;   upvals: _ENV
  ;   locals: self(0-13), bBought(0-13)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('MiscModel')]
  0002  SELF      R3 = R2[K2('Set')] (self)
  0003  GETTABUP  R4 = _ENV[K3('EMiscKey')]
  0004  GETTABLE  R4 = R4[K4('EqBubbleIsLastBuy')]
  0005  TEST      if not R1 then   -> -131065
  0006  JMP       (jump)   -> 10
  0007  LOADK     R5 = K5 1
  0008  TEST      if not R5 then   -> -131061
  0009  JMP       (jump)   -> 11
  0010  LOADK     R5 = K6 0
  0011  CALL      R2 = call(R2, 0 args, 3 rets)
  0012  RETURN    return R0..R-1
