# Model_InAppPurchase_InAppPurchaseModel_108.luac
; fn @InAppPurchaseModel.lua  line 0-0 np=0 va=1 ms=4 code=85 consts=32 upvals=1 protos=25
;   K[0]='InAppPurchaseModel'
;   K[1]='__index'
;   K[2]='UsdToGemRatio'
;   K[3]=40
;   K[4]=3
;   K[5]='status'
;   K[6]='Init'
;   K[7]='InitPurchase'
;   K[8]='_GeneratePurchaseInitParameters'
;   K[9]='UpdateInAppPurchaseData'
;   K[10]='StartPurchase'
;   K[11]='RestorePurchase'
;   K[12]='GetIAPTypeFromProductId'
;   K[13]='GetTotalRecharge'
;   K[14]='SetTotalRecharge'
;   K[15]='GetLocalizedPrice'
;   K[16]='GetProductData'
;   K[17]='GetLocalizedOriginPrice'
;   K[18]='_QueryPayServer4Info'
;   K[19]='_JNIPurchaseComplete'
;   K[20]='_ShowFailTip'
;   K[21]='_HideMask'
;   K[22]='_CloseTransaction'
;   K[23]='_VerifyPurchase'
;   K[24]='_OnVerifySuccess'
;   K[25]='_RecordPurchase'
;   K[26]='_RestoreRewards'
;   K[27]='InAppPurchaseModel'
;   K[28]='_CanAwardForOrderId'
;   K[29]='_SetOrderIdAwarded'
;   K[30]='PopPurchaseCloseTip'
;   K[31]='_LogPayAction'
;   upvals: _ENV
;   locals: IAP_QUERY_LIMIT(8-85), DBColumnOrderStatus(9-85)
0000  NEWTABLE  R0 = {} (0 items)
0001  SETTABUP  _ENV[K0('InAppPurchaseModel')] = R0
0002  GETTABUP  R0 = _ENV[K0('InAppPurchaseModel')]
0003  GETTABUP  R1 = _ENV[K0('InAppPurchaseModel')]
0004  SETTABLE  R0[K1('__index')] = R1
0005  GETTABUP  R0 = _ENV[K0('InAppPurchaseModel')]
0006  SETTABLE  R0[K2('UsdToGemRatio')] = K3(40)
0007  LOADK     R0 = K4 3
0008  LOADK     R1 = K5 'status'
0009  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0010  CLOSURE   R3 = closure proto0
0011  SETTABLE  R2[K6('Init')] = R3
0012  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0013  CLOSURE   R3 = closure proto1
0014  SETTABLE  R2[K7('InitPurchase')] = R3
0015  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0016  CLOSURE   R3 = closure proto2
0017  SETTABLE  R2[K8('_GeneratePurchaseInitParameters')] = R3
0018  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0019  CLOSURE   R3 = closure proto3
0020  SETTABLE  R2[K9('UpdateInAppPurchaseData')] = R3
0021  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0022  CLOSURE   R3 = closure proto4
0023  SETTABLE  R2[K10('StartPurchase')] = R3
0024  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0025  CLOSURE   R3 = closure proto5
0026  SETTABLE  R2[K11('RestorePurchase')] = R3
0027  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0028  CLOSURE   R3 = closure proto6
0029  SETTABLE  R2[K12('GetIAPTypeFromProductId')] = R3
0030  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0031  CLOSURE   R3 = closure proto7
0032  SETTABLE  R2[K13('GetTotalRecharge')] = R3
0033  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0034  CLOSURE   R3 = closure proto8
0035  SETTABLE  R2[K14('SetTotalRecharge')] = R3
0036  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0037  CLOSURE   R3 = closure proto9
0038  SETTABLE  R2[K15('GetLocalizedPrice')] = R3
0039  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0040  CLOSURE   R3 = closure proto10
0041  SETTABLE  R2[K16('GetProductData')] = R3
0042  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0043  CLOSURE   R3 = closure proto11
0044  SETTABLE  R2[K17('GetLocalizedOriginPrice')] = R3
0045  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0046  CLOSURE   R3 = closure proto12
0047  SETTABLE  R2[K18('_QueryPayServer4Info')] = R3
0048  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0049  CLOSURE   R3 = closure proto13
0050  SETTABLE  R2[K19('_JNIPurchaseComplete')] = R3
0051  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0052  CLOSURE   R3 = closure proto14
0053  SETTABLE  R2[K20('_ShowFailTip')] = R3
0054  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0055  CLOSURE   R3 = closure proto15
0056  SETTABLE  R2[K21('_HideMask')] = R3
0057  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0058  CLOSURE   R3 = closure proto16
0059  SETTABLE  R2[K22('_CloseTransaction')] = R3
0060  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0061  CLOSURE   R3 = closure proto17
0062  SETTABLE  R2[K23('_VerifyPurchase')] = R3
0063  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0064  CLOSURE   R3 = closure proto18
0065  SETTABLE  R2[K24('_OnVerifySuccess')] = R3
0066  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0067  CLOSURE   R3 = closure proto19
0068  SETTABLE  R2[K25('_RecordPurchase')] = R3
0069  GETTABUP  R2 = _ENV[K0('InAppPurchaseModel')]
0070  CLOSURE   R3 = closure proto20
0071  SETTABLE  R2[K26('_RestoreRewards')] = R3
0072  GETTABUP  R2 = _ENV[K27('InAppPurchaseModel')]
0073  CLOSURE   R3 = closure proto21
0074  SETTABLE  R2[K28('_CanAwardForOrderId')] = R3
0075  GETTABUP  R2 = _ENV[K27('InAppPurchaseModel')]
0076  CLOSURE   R3 = closure proto22
0077  SETTABLE  R2[K29('_SetOrderIdAwarded')] = R3
0078  GETTABUP  R2 = _ENV[K27('InAppPurchaseModel')]
0079  CLOSURE   R3 = closure proto23
0080  SETTABLE  R2[K30('PopPurchaseCloseTip')] = R3
0081  GETTABUP  R2 = _ENV[K27('InAppPurchaseModel')]
0082  CLOSURE   R3 = closure proto24
0083  SETTABLE  R2[K31('_LogPayAction')] = R3
0084  RETURN    return R0..R-1
; ---------- proto0 [Init] ----------
  ; fn ?  line 10-16 np=1 va=0 ms=4 code=13 consts=11 upvals=1 protos=0
  ;   K[0]='m_dbTable'
  ;   K[1]='GM'
  ;   K[2]='DBTableManager'
  ;   K[3]='GetTable'
  ;   K[4]='EDBTableConfigs'
  ;   K[5]='IAPOrder'
  ;   K[6]='m_mapProducts'
  ;   K[7]='IAPProduct'
  ;   K[8]='GetProducts'
  ;   K[9]='m_totalPay'
  ;   K[10]=0
  ;   upvals: _ENV
  ;   locals: self(0-13)
  0000  GETTABUP  R1 = _ENV[K1('GM')]
  0001  GETTABLE  R1 = R1[K2('DBTableManager')]
  0002  SELF      R2 = R1[K3('GetTable')] (self)
  0003  GETTABUP  R3 = _ENV[K4('EDBTableConfigs')]
  0004  GETTABLE  R3 = R3[K5('IAPOrder')]
  0005  CALL      R1 = call(R1, 1 args, 2 rets)
  0006  SETTABLE  R0[K0('m_dbTable')] = R1
  0007  GETTABUP  R1 = _ENV[K7('IAPProduct')]
  0008  GETTABLE  R1 = R1[K8('GetProducts')]
  0009  CALL      R1 = call(R1, 1 args, 0 rets)
  0010  SETTABLE  R0[K6('m_mapProducts')] = R1
  0011  SETTABLE  R0[K9('m_totalPay')] = K10(0)
  0012  RETURN    return R0..R-1
; ---------- proto1 [InitPurchase] ----------
  ; fn ?  line 18-20 np=1 va=0 ms=5 code=7 consts=4 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='SDKHelper'
  ;   K[2]='PurchaseInit'
  ;   K[3]='_GeneratePurchaseInitParameters'
  ;   upvals: _ENV
  ;   locals: self(0-7)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('SDKHelper')]
  0002  SELF      R2 = R1[K2('PurchaseInit')] (self)
  0003  SELF      R4 = R0[K3('_GeneratePurchaseInitParameters')] (self)
  0004  CALL      R3 = call(R3, -1 args, 1 rets)
  0005  CALL      R1 = call(R1, 0 args, -1 rets)
  0006  RETURN    return R0..R-1
; ---------- proto2 [_GeneratePurchaseInitParameters] ----------
  ; fn ?  line 22-28 np=1 va=0 ms=9 code=18 consts=7 upvals=1 protos=0
  ;   K[0]='pairs'
  ;   K[1]='m_mapProducts'
  ;   K[2]=1
  ;   K[3]='productId'
  ;   K[4]='table'
  ;   K[5]='concat'
  ;   K[6]=','
  ;   upvals: _ENV
  ;   locals: self(0-18), arrProductIds(1-18), (for generator)(4-11), (for state)(4-11), (for control)(4-11), k(5-9), v(5-9)
  0000  NEWTABLE  R1 = {} (0 items)
  0001  GETTABUP  R2 = _ENV[K0('pairs')]
  0002  GETTABLE  R3 = R0[K1('m_mapProducts')]
  0003  CALL      R2 = call(R2, 3 args, 1 rets)
  0004  JMP       (jump)   -> 9
  0005  LEN       R7 = len R0
  0006  ADD       R7 = K2(1) add R7
  0007  GETTABLE  R8 = R6[K3('productId')]
  0008  SETTABLE  R1[R7] = R8
  0009  TFORCALL  tforcall R2
  0010  TFORLOOP  tforloop R4(sBx=-6)   -> 5
  0011  GETTABUP  R2 = _ENV[K4('table')]
  0012  GETTABLE  R2 = R2[K5('concat')]
  0013  MOVE      R3 = R0
  0014  LOADK     R4 = K6 ','
  0015  TAILCALL  tailcall(R2, 0)
  0016  RETURN    return R2..R1
  0017  RETURN    return R0..R-1
; ---------- proto3 [UpdateInAppPurchaseData] ----------
  ; fn ?  line 30-60 np=2 va=0 ms=15 code=92 consts=26 upvals=1 protos=0
  ;   K[0]='json'
  ;   K[1]='decode'
  ;   K[2]='DeviceInfo'
  ;   K[3]='IsSystemIOS'
  ;   K[4]=1
  ;   K[5]='GetIAPTypeFromProductId'
  ;   K[6]='product'
  ;   K[7]=nil
  ;   K[8]='price'
  ;   K[9]='tonumber'
  ;   K[10]='symbol'
  ;   K[11]='locale'
  ;   K[12]='m_mapProducts'
  ;   K[13]='UpdateInfo'
  ;   K[14]=' '
  ;   K[15]='productId'
  ;   K[16]='GameConfig'
  ;   K[17]='CURRENT_PLATFORM'
  ;   K[18]='Channels'
  ;   K[19]='AMAZON'
  ;   K[20]='GetValue'
  ;   K[21]=0
  ;   K[22]='USD'
  ;   K[23]='price_amount_micros'
  ;   K[24]='price_currency_code'
  ;   K[25]=1000000
  ;   upvals: _ENV
  ;   locals: self(0-92), strInfo(0-92), infoTable(4-92), isIos(10-92), info(11-92), eIAPType(11-92), (for index)(14-91), (for limit)(14-91), (for step)(14-91), i(15-90)
  0000  GETTABUP  R2 = _ENV[K0('json')]
  0001  GETTABLE  R2 = R2[K1('decode')]
  0002  MOVE      R3 = R0
  0003  CALL      R2 = call(R2, 1 args, 1 rets)
  0004  TEST      if not R2 then   -> -131065
  0005  JMP       (jump)   -> 7
  0006  RETURN    return R0..R-1
  0007  GETTABUP  R3 = _ENV[K2('DeviceInfo')]
  0008  GETTABLE  R3 = R3[K3('IsSystemIOS')]
  0009  CALL      R3 = call(R3, 1 args, 0 rets)
  0010  LOADNIL   R4..R4 = nil
  0011  LOADK     R6 = K4 1
  0012  LEN       R7 = len R0
  0013  LOADK     R8 = K4 1
  0014  FORPREP   forprep R6(sBx=75)   -> 90
  0015  GETTABLE  R4 = R2[R9]
  0016  TEST      if not R3 then   -> -131054
  0017  JMP       (jump)   -> 51
  0018  SELF      R11 = R0[K5('GetIAPTypeFromProductId')] (self)
  0019  GETTABLE  R12 = R4[K6('product')]
  0020  CALL      R10 = call(R10, 1 args, 2 rets)
  0021  MOVE      R5 = R0
  0022  EQ        if R1 eq K7(nil)   -> -128225
  0023  JMP       (jump)   -> 90
  0024  GETTABLE  R10 = R4[K8('price')]
  0025  EQ        if R1 eq K7(nil)   -> -125662
  0026  JMP       (jump)   -> 90
  0027  GETTABUP  R10 = _ENV[K9('tonumber')]
  0028  GETTABLE  R11 = R4[K8('price')]
  0029  CALL      R10 = call(R10, 1 args, 1 rets)
  0030  EQ        if R1 eq K7(nil)   -> -125657
  0031  JMP       (jump)   -> 90
  0032  GETTABLE  R10 = R4[K10('symbol')]
  0033  EQ        if R1 eq K7(nil)   -> -125654
  0034  JMP       (jump)   -> 90
  0035  GETTABLE  R10 = R4[K11('locale')]
  0036  EQ        if R1 eq K7(nil)   -> -125651
  0037  JMP       (jump)   -> 90
  0038  GETTABLE  R10 = R0[K12('m_mapProducts')]
  0039  GETTABLE  R10 = R10[R5]
  0040  SELF      R11 = R10[K13('UpdateInfo')] (self)
  0041  GETTABLE  R12 = R4[K10('symbol')]
  0042  LOADK     R13 = K14 ' '
  0043  GETTABLE  R14 = R4[K8('price')]
  0044  CONCAT    R12 = concat(R12..R12)
  0045  GETTABUP  R13 = _ENV[K9('tonumber')]
  0046  GETTABLE  R14 = R4[K8('price')]
  0047  CALL      R13 = call(R13, 1 args, 1 rets)
  0048  GETTABLE  R14 = R4[K11('locale')]
  0049  CALL      R10 = call(R10, 0 args, 4 rets)
  0050  JMP       (jump)   -> 90
  0051  SELF      R11 = R0[K5('GetIAPTypeFromProductId')] (self)
  0052  GETTABLE  R12 = R4[K15('productId')]
  0053  CALL      R10 = call(R10, 1 args, 2 rets)
  0054  MOVE      R5 = R0
  0055  EQ        if R1 eq K7(nil)   -> -128192
  0056  JMP       (jump)   -> 90
  0057  GETTABLE  R10 = R4[K8('price')]
  0058  EQ        if R1 eq K7(nil)   -> -125629
  0059  JMP       (jump)   -> 90
  0060  GETTABUP  R10 = _ENV[K16('GameConfig')]
  0061  GETTABLE  R10 = R10[K17('CURRENT_PLATFORM')]
  0062  GETTABUP  R11 = _ENV[K18('Channels')]
  0063  GETTABLE  R11 = R11[K19('AMAZON')]
  0064  SELF      R12 = R11[K20('GetValue')] (self)
  0065  CALL      R11 = call(R11, 1 args, 1 rets)
  0066  EQ        if R0 eq R11   -> -125873
  0067  JMP       (jump)   -> 76
  0068  GETTABLE  R10 = R0[K12('m_mapProducts')]
  0069  GETTABLE  R10 = R10[R5]
  0070  SELF      R11 = R10[K13('UpdateInfo')] (self)
  0071  GETTABLE  R12 = R4[K8('price')]
  0072  LOADK     R13 = K21 0
  0073  LOADK     R14 = K22 'USD'
  0074  CALL      R10 = call(R10, 0 args, 4 rets)
  0075  JMP       (jump)   -> 90
  0076  GETTABLE  R10 = R4[K23('price_amount_micros')]
  0077  EQ        if R1 eq K7(nil)   -> -125610
  0078  JMP       (jump)   -> 90
  0079  GETTABLE  R10 = R4[K24('price_currency_code')]
  0080  EQ        if R1 eq K7(nil)   -> -125607
  0081  JMP       (jump)   -> 90
  0082  GETTABLE  R10 = R0[K12('m_mapProducts')]
  0083  GETTABLE  R10 = R10[R5]
  0084  SELF      R11 = R10[K13('UpdateInfo')] (self)
  0085  GETTABLE  R12 = R4[K8('price')]
  0086  GETTABLE  R13 = R4[K23('price_amount_micros')]
  0087  DIV       R13 = K25(1000000) div R13
  0088  GETTABLE  R14 = R4[K24('price_currency_code')]
  0089  CALL      R10 = call(R10, 0 args, 4 rets)
  0090  FORLOOP   forloop R6(sBx=-76)   -> 15
  0091  RETURN    return R0..R-1
; ---------- proto4 [StartPurchase] ----------
  ; fn ?  line 62-112 np=4 va=0 ms=11 code=121 consts=60 upvals=1 protos=2
  ;   K[0]='Log'
  ;   K[1]='Assert'
  ;   K[2]='type'
  ;   K[3]='string'
  ;   K[4]='InAppPurchaseModel:StartPurchase need scene'
  ;   K[5]='GameConfig'
  ;   K[6]='IsTestMode'
  ;   K[7]='DeviceInfo'
  ;   K[8]='IsUnityEditor'
  ;   K[9]='PlayerPrefs'
  ;   K[10]='GetInt'
  ;   K[11]='EPlayerPrefKey'
  ;   K[12]='TestUnityIAPFail'
  ;   K[13]=0
  ;   K[14]=1
  ;   K[15]='GM'
  ;   K[16]='UIManager'
  ;   K[17]='OpenView'
  ;   K[18]='UIPrefabConfigName'
  ;   K[19]='GeneralMsgWindow'
  ;   K[20]='Tip'
  ;   K[21]='模拟支付失败：'
  ;   K[22]='tostring'
  ;   K[23]='拷贝支付项'
  ;   K[24]='EventDispatcher'
  ;   K[25]='DispatchEvent'
  ;   K[26]='EEventType'
  ;   K[27]='IAPSuccess'
  ;   K[28]='m_mapProducts'
  ;   K[29]=nil
  ;   K[30]='Error'
  ;   K[31]='InAppPurchaseModel:StartPurchase no product info'
  ;   K[32]='OnEnteringThirdPartyApp'
  ;   K[33]='ShowMask'
  ;   K[34]='eIAPType'
  ;   K[35]='productId'
  ;   K[36]='funcSuccessCallback'
  ;   K[37]='strScene'
  ;   K[38]='_LogPayAction'
  ;   K[39]='EBIType'
  ;   K[40]='StartPurchase'
  ;   K[41]='m_startTime'
  ;   K[42]='NetTimeStamp'
  ;   K[43]='Create'
  ;   K[44]='pay'
  ;   K[45]='OperBIManager'
  ;   K[46]='TrackEvent'
  ;   K[47]='EOperBIEventType'
  ;   K[48]='start_purchase'
  ;   K[49]='Info'
  ;   K[50]='start purchase'
  ;   K[51]='LogTag'
  ;   K[52]='Purchase'
  ;   K[53]='CURRENT_PLATFORM'
  ;   K[54]=60
  ;   K[55]='SetInt'
  ;   K[56]='LastTimePurchaseTime'
  ;   K[57]='GameModel'
  ;   K[58]='GetServerTime'
  ;   K[59]='SDKHelper'
  ;   upvals: _ENV
  ;   locals: self(0-121), eIAPType(0-121), funcSuccessCallback(0-121), scene(0-121), productData(58-121), extraInfo(74-121)
  0000  GETTABUP  R4 = _ENV[K0('Log')]
  0001  GETTABLE  R4 = R4[K1('Assert')]
  0002  GETTABUP  R5 = _ENV[K2('type')]
  0003  MOVE      R6 = R0
  0004  CALL      R5 = call(R5, 1 args, 1 rets)
  0005  EQ        if R1 eq K3('string')   -> -128246
  0006  JMP       (jump)   -> 8
  0007  LOADBOOL  R5 = false
  0008  LOADBOOL  R5 = true
  0009  LOADK     R6 = K4 'InAppPurchaseModel:StartPurchase need scene'
  0010  CALL      R4 = call(R4, 0 args, 2 rets)
  0011  GETTABUP  R4 = _ENV[K5('GameConfig')]
  0012  GETTABLE  R4 = R4[K6('IsTestMode')]
  0013  CALL      R4 = call(R4, 1 args, 0 rets)
  0014  TEST      if not R4 then   -> -131056
  0015  JMP       (jump)   -> 56
  0016  GETTABUP  R4 = _ENV[K7('DeviceInfo')]
  0017  GETTABLE  R4 = R4[K8('IsUnityEditor')]
  0018  CALL      R4 = call(R4, 1 args, 0 rets)
  0019  TEST      if not R4 then   -> -131051
  0020  JMP       (jump)   -> 56
  0021  GETTABUP  R4 = _ENV[K9('PlayerPrefs')]
  0022  GETTABLE  R4 = R4[K10('GetInt')]
  0023  GETTABUP  R5 = _ENV[K11('EPlayerPrefKey')]
  0024  GETTABLE  R5 = R5[K12('TestUnityIAPFail')]
  0025  LOADK     R6 = K13 0
  0026  CALL      R4 = call(R4, 1 args, 2 rets)
  0027  EQ        if R0 eq K14(1)   -> -128725
  0028  JMP       (jump)   -> 45
  0029  GETTABUP  R4 = _ENV[K15('GM')]
  0030  GETTABLE  R4 = R4[K16('UIManager')]
  0031  SELF      R5 = R4[K17('OpenView')] (self)
  0032  GETTABUP  R6 = _ENV[K18('UIPrefabConfigName')]
  0033  GETTABLE  R6 = R6[K19('GeneralMsgWindow')]
  0034  LOADK     R7 = K20 'Tip'
  0035  LOADK     R8 = K21 '模拟支付失败：'
  0036  GETTABUP  R9 = _ENV[K22('tostring')]
  0037  MOVE      R10 = R0
  0038  CALL      R9 = call(R9, 1 args, 1 rets)
  0039  CONCAT    R8 = concat(R8..R8)
  0040  LOADK     R9 = K23 '拷贝支付项'
  0041  CLOSURE   R10 = closure proto0
  0042  CALL      R4 = call(R4, 0 args, 6 rets)
  0043  RETURN    return R0..R-1
  0044  JMP       (jump)   -> 49
  0045  TEST      if not R2 then   -> -131025
  0046  JMP       (jump)   -> 49
  0047  MOVE      R4 = R0
  0048  CALL      R4 = call(R4, 0 args, 0 rets)
  0049  GETTABUP  R4 = _ENV[K24('EventDispatcher')]
  0050  GETTABLE  R4 = R4[K25('DispatchEvent')]
  0051  GETTABUP  R5 = _ENV[K26('EEventType')]
  0052  GETTABLE  R5 = R5[K27('IAPSuccess')]
  0053  MOVE      R6 = R0
  0054  CALL      R4 = call(R4, 0 args, 2 rets)
  0055  RETURN    return R0..R-1
  0056  GETTABLE  R4 = R0[K28('m_mapProducts')]
  0057  GETTABLE  R4 = R4[R1]
  0058  EQ        if R0 eq K29(nil)   -> -128679
  0059  JMP       (jump)   -> 65
  0060  GETTABUP  R5 = _ENV[K0('Log')]
  0061  GETTABLE  R5 = R5[K30('Error')]
  0062  LOADK     R6 = K31 'InAppPurchaseModel:StartPurchase no product info'
  0063  CALL      R5 = call(R5, 0 args, 1 rets)
  0064  RETURN    return R0..R-1
  0065  GETTABUP  R5 = _ENV[K15('GM')]
  0066  SELF      R6 = R5[K32('OnEnteringThirdPartyApp')] (self)
  0067  LOADBOOL  R7 = false
  0068  CALL      R5 = call(R5, 0 args, 2 rets)
  0069  GETTABUP  R5 = _ENV[K15('GM')]
  0070  GETTABLE  R5 = R5[K16('UIManager')]
  0071  SELF      R6 = R5[K33('ShowMask')] (self)
  0072  CALL      R5 = call(R5, 0 args, 1 rets)
  0073  NEWTABLE  R5 = {} (0 items)
  0074  SETTABLE  R5[K34('eIAPType')] = R1
  0075  GETTABLE  R6 = R4[K35('productId')]
  0076  SETTABLE  R5[K35('productId')] = R6
  0077  SETTABLE  R5[K36('funcSuccessCallback')] = R2
  0078  SETTABLE  R5[K37('strScene')] = R3
  0079  SELF      R7 = R0[K38('_LogPayAction')] (self)
  0080  GETTABUP  R8 = _ENV[K39('EBIType')]
  0081  GETTABLE  R8 = R8[K40('StartPurchase')]
  0082  GETTABLE  R9 = R5[K34('eIAPType')]
  0083  CALL      R6 = call(R6, 0 args, 3 rets)
  0084  GETTABUP  R6 = _ENV[K42('NetTimeStamp')]
  0085  GETTABLE  R6 = R6[K43('Create')]
  0086  LOADK     R7 = K44 'pay'
  0087  CALL      R6 = call(R6, 1 args, 1 rets)
  0088  SETTABLE  R0[K41('m_startTime')] = R6
  0089  GETTABUP  R6 = _ENV[K15('GM')]
  0090  GETTABLE  R6 = R6[K45('OperBIManager')]
  0091  SELF      R7 = R6[K46('TrackEvent')] (self)
  0092  GETTABUP  R8 = _ENV[K47('EOperBIEventType')]
  0093  GETTABLE  R8 = R8[K48('start_purchase')]
  0094  CALL      R6 = call(R6, 0 args, 2 rets)
  0095  GETTABUP  R6 = _ENV[K0('Log')]
  0096  GETTABLE  R6 = R6[K49('Info')]
  0097  LOADK     R7 = K50 'start purchase'
  0098  GETTABUP  R8 = _ENV[K51('LogTag')]
  0099  GETTABLE  R8 = R8[K52('Purchase')]
  0100  CALL      R6 = call(R6, 0 args, 2 rets)
  0101  GETTABUP  R6 = _ENV[K5('GameConfig')]
  0102  GETTABLE  R6 = R6[K53('CURRENT_PLATFORM')]
  0103  EQ        if R0 eq K54(60)   -> -127585
  0104  JMP       (jump)   -> 114
  0105  GETTABUP  R6 = _ENV[K9('PlayerPrefs')]
  0106  GETTABLE  R6 = R6[K55('SetInt')]
  0107  GETTABUP  R7 = _ENV[K11('EPlayerPrefKey')]
  0108  GETTABLE  R7 = R7[K56('LastTimePurchaseTime')]
  0109  GETTABUP  R8 = _ENV[K15('GM')]
  0110  GETTABLE  R8 = R8[K57('GameModel')]
  0111  SELF      R9 = R8[K58('GetServerTime')] (self)
  0112  CALL      R8 = call(R8, -1 args, 1 rets)
  0113  CALL      R6 = call(R6, 0 args, -1 rets)
  0114  GETTABUP  R6 = _ENV[K15('GM')]
  0115  GETTABLE  R6 = R6[K59('SDKHelper')]
  0116  SELF      R7 = R6[K52('Purchase')] (self)
  0117  GETTABLE  R8 = R5[K35('productId')]
  0118  CLOSURE   R9 = closure proto1
  0119  CALL      R6 = call(R6, 0 args, 3 rets)
  0120  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 66-68 np=0 va=0 ms=2 code=5 consts=2 upvals=2 protos=0
    ;   K[0]='PlatformInterface'
    ;   K[1]='SetString2Clipboard'
    ;   upvals: _ENV, eIAPType
    0000  GETTABUP  R0 = _ENV[K0('PlatformInterface')]
    0001  GETTABLE  R0 = R0[K1('SetString2Clipboard')]
    0002  GETUPVAL  R1 = _ENV
    0003  CALL      R0 = call(R0, 0 args, 1 rets)
    0004  RETURN    return R0..R-1
  ; ---------- proto1 [] ----------
    ; fn ?  line 103-111 np=6 va=0 ms=16 code=35 consts=10 upvals=3 protos=0
    ;   K[0]='GM'
    ;   K[1]='OnBackFromThirdPartyApp'
    ;   K[2]='GameConfig'
    ;   K[3]='CURRENT_PLATFORM'
    ;   K[4]=60
    ;   K[5]='EPurchaseResultStatus'
    ;   K[6]='Success'
    ;   K[7]='_QueryPayServer4Info'
    ;   K[8]=1
    ;   K[9]='_JNIPurchaseComplete'
    ;   upvals: _ENV, self, extraInfo
    ;   locals: eStatus(0-35), productId(0-35), message(0-35), data(0-35), signature(0-35), orderId(0-35)
    0000  GETTABUP  R6 = _ENV[K0('GM')]
    0001  SELF      R7 = R6[K1('OnBackFromThirdPartyApp')] (self)
    0002  LOADBOOL  R8 = false
    0003  CALL      R6 = call(R6, 0 args, 2 rets)
    0004  GETTABUP  R6 = _ENV[K2('GameConfig')]
    0005  GETTABLE  R6 = R6[K3('CURRENT_PLATFORM')]
    0006  EQ        if R0 eq K4(60)   -> -127732
    0007  JMP       (jump)   -> 24
    0008  GETTABUP  R6 = _ENV[K5('EPurchaseResultStatus')]
    0009  GETTABLE  R6 = R6[K6('Success')]
    0010  EQ        if R1 eq R6   -> -131054
    0011  JMP       (jump)   -> 24
    0012  GETUPVAL  R6 = _ENV
    0013  SELF      R7 = R6[K7('_QueryPayServer4Info')] (self)
    0014  MOVE      R8 = R0
    0015  MOVE      R9 = R0
    0016  MOVE      R10 = R0
    0017  MOVE      R11 = R0
    0018  MOVE      R12 = R0
    0019  MOVE      R13 = R0
    0020  GETUPVAL  R14 = _ENV
    0021  LOADK     R15 = K8 1
    0022  CALL      R6 = call(R6, 0 args, 9 rets)
    0023  JMP       (jump)   -> 34
    0024  GETUPVAL  R6 = _ENV
    0025  SELF      R7 = R6[K9('_JNIPurchaseComplete')] (self)
    0026  MOVE      R8 = R0
    0027  MOVE      R9 = R0
    0028  MOVE      R10 = R0
    0029  MOVE      R11 = R0
    0030  MOVE      R12 = R0
    0031  MOVE      R13 = R0
    0032  GETUPVAL  R14 = _ENV
    0033  CALL      R6 = call(R6, 0 args, 8 rets)
    0034  RETURN    return R0..R-1
; ---------- proto5 [RestorePurchase] ----------
  ; fn ?  line 114-141 np=2 va=0 ms=6 code=27 consts=14 upvals=1 protos=1
  ;   K[0]='_LogPayAction'
  ;   K[1]='EBIType'
  ;   K[2]='RestorePurchase'
  ;   K[3]='user'
  ;   K[4]='m_startTime'
  ;   K[5]='NetTimeStamp'
  ;   K[6]='Create'
  ;   K[7]='pay'
  ;   K[8]='GM'
  ;   K[9]='OnEnteringThirdPartyApp'
  ;   K[10]='UIManager'
  ;   K[11]='ShowMask'
  ;   K[12]='SDKHelper'
  ;   K[13]='PurchaseRestore'
  ;   upvals: _ENV
  ;   locals: self(0-27), isUserTriggered(0-27)
  0000  TEST      if not R1 then   -> -131070
  0001  JMP       (jump)   -> 20
  0002  SELF      R3 = R0[K0('_LogPayAction')] (self)
  0003  GETTABUP  R4 = _ENV[K1('EBIType')]
  0004  GETTABLE  R4 = R4[K2('RestorePurchase')]
  0005  LOADK     R5 = K3 'user'
  0006  CALL      R2 = call(R2, 0 args, 3 rets)
  0007  GETTABUP  R2 = _ENV[K5('NetTimeStamp')]
  0008  GETTABLE  R2 = R2[K6('Create')]
  0009  LOADK     R3 = K7 'pay'
  0010  CALL      R2 = call(R2, 1 args, 1 rets)
  0011  SETTABLE  R0[K4('m_startTime')] = R2
  0012  GETTABUP  R2 = _ENV[K8('GM')]
  0013  SELF      R3 = R2[K9('OnEnteringThirdPartyApp')] (self)
  0014  LOADBOOL  R4 = false
  0015  CALL      R2 = call(R2, 0 args, 2 rets)
  0016  GETTABUP  R2 = _ENV[K8('GM')]
  0017  GETTABLE  R2 = R2[K10('UIManager')]
  0018  SELF      R3 = R2[K11('ShowMask')] (self)
  0019  CALL      R2 = call(R2, 0 args, 1 rets)
  0020  GETTABUP  R2 = _ENV[K8('GM')]
  0021  GETTABLE  R2 = R2[K12('SDKHelper')]
  0022  SELF      R3 = R2[K13('PurchaseRestore')] (self)
  0023  CLOSURE   R4 = closure proto0
  0024  MOVE      R5 = R0
  0025  CALL      R2 = call(R2, 0 args, 3 rets)
  0026  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 122-140 np=7 va=0 ms=20 code=54 consts=19 upvals=2 protos=0
    ;   K[0]='userTriggeredRestore'
    ;   K[1]='GM'
    ;   K[2]='OnBackFromThirdPartyApp'
    ;   K[3]='GameConfig'
    ;   K[4]='CURRENT_PLATFORM'
    ;   K[5]=60
    ;   K[6]='EPurchaseResultStatus'
    ;   K[7]='Success'
    ;   K[8]='PlayerPrefs'
    ;   K[9]='GetInt'
    ;   K[10]='EPlayerPrefKey'
    ;   K[11]='LastTimePurchaseTime'
    ;   K[12]=0
    ;   K[13]='GameModel'
    ;   K[14]='GetServerTime'
    ;   K[15]=259200
    ;   K[16]='_QueryPayServer4Info'
    ;   K[17]=1
    ;   K[18]='_JNIPurchaseComplete'
    ;   upvals: _ENV, self
    ;   locals: eStatus(0-54), productId(0-54), message(0-54), data(0-54), signature(0-54), orderId(0-54), tmpIsUserTriggered(0-54), extraInfo(1-54), lastPT(22-43), now(26-43)
    0000  NEWTABLE  R7 = {} (0 items)
    0001  SETTABLE  R7[K0('userTriggeredRestore')] = R6
    0002  TEST      if not R6 then   -> -131068
    0003  JMP       (jump)   -> 8
    0004  GETTABUP  R8 = _ENV[K1('GM')]
    0005  SELF      R9 = R8[K2('OnBackFromThirdPartyApp')] (self)
    0006  LOADBOOL  R10 = false
    0007  CALL      R8 = call(R8, 0 args, 2 rets)
    0008  GETTABUP  R8 = _ENV[K3('GameConfig')]
    0009  GETTABLE  R8 = R8[K4('CURRENT_PLATFORM')]
    0010  EQ        if R0 eq K5(60)   -> -126703
    0011  JMP       (jump)   -> 43
    0012  GETTABUP  R8 = _ENV[K6('EPurchaseResultStatus')]
    0013  GETTABLE  R8 = R8[K7('Success')]
    0014  EQ        if R1 eq R8   -> -131048
    0015  JMP       (jump)   -> 43
    0016  GETTABUP  R8 = _ENV[K8('PlayerPrefs')]
    0017  GETTABLE  R8 = R8[K9('GetInt')]
    0018  GETTABUP  R9 = _ENV[K10('EPlayerPrefKey')]
    0019  GETTABLE  R9 = R9[K11('LastTimePurchaseTime')]
    0020  LOADK     R10 = K12 0
    0021  CALL      R8 = call(R8, 1 args, 2 rets)
    0022  GETTABUP  R9 = _ENV[K1('GM')]
    0023  GETTABLE  R9 = R9[K13('GameModel')]
    0024  SELF      R10 = R9[K14('GetServerTime')] (self)
    0025  CALL      R9 = call(R9, 1 args, 1 rets)
    0026  LT        if R0 lt R8   -> 6180
    0027  JMP       (jump)   -> 43
    0028  SUB       R10 = R8 sub R9
    0029  LT        if R0 lt K15(259200)   -> -125650
    0030  JMP       (jump)   -> 43
    0031  GETUPVAL  R10 = _ENV
    0032  SELF      R11 = R10[K16('_QueryPayServer4Info')] (self)
    0033  MOVE      R12 = R0
    0034  MOVE      R13 = R0
    0035  MOVE      R14 = R0
    0036  MOVE      R15 = R0
    0037  MOVE      R16 = R0
    0038  MOVE      R17 = R0
    0039  MOVE      R18 = R0
    0040  LOADK     R19 = K17 1
    0041  CALL      R10 = call(R10, 0 args, 9 rets)
    0042  RETURN    return R0..R-1
    0043  GETUPVAL  R8 = _ENV
    0044  SELF      R9 = R8[K18('_JNIPurchaseComplete')] (self)
    0045  MOVE      R10 = R0
    0046  MOVE      R11 = R0
    0047  MOVE      R12 = R0
    0048  MOVE      R13 = R0
    0049  MOVE      R14 = R0
    0050  MOVE      R15 = R0
    0051  MOVE      R16 = R0
    0052  CALL      R8 = call(R8, 0 args, 8 rets)
    0053  RETURN    return R0..R-1
; ---------- proto6 [GetIAPTypeFromProductId] ----------
  ; fn ?  line 143-150 np=2 va=0 ms=8 code=17 consts=6 upvals=1 protos=0
  ;   K[0]='pairs'
  ;   K[1]='m_mapProducts'
  ;   K[2]='productId'
  ;   K[3]='Log'
  ;   K[4]='Error'
  ;   K[5]='InAppPurchaseModel:GetIAPTypeFromProductId no matching iap type '
  ;   upvals: _ENV
  ;   locals: self(0-17), productId(0-17), (for generator)(3-10), (for state)(3-10), (for control)(3-10), k(4-8), v(4-8)
  0000  GETTABUP  R2 = _ENV[K0('pairs')]
  0001  GETTABLE  R3 = R0[K1('m_mapProducts')]
  0002  CALL      R2 = call(R2, 3 args, 1 rets)
  0003  JMP       (jump)   -> 8
  0004  GETTABLE  R7 = R6[K2('productId')]
  0005  EQ        if R0 eq R1   -> -127480
  0006  JMP       (jump)   -> 8
  0007  RETURN    return R5..R4
  0008  TFORCALL  tforcall R2
  0009  TFORLOOP  tforloop R4(sBx=-6)   -> 4
  0010  GETTABUP  R2 = _ENV[K3('Log')]
  0011  GETTABLE  R2 = R2[K4('Error')]
  0012  LOADK     R3 = K5 'InAppPurchaseModel:GetIAPTypeFromProductId no matching iap type '
  0013  MOVE      R4 = R0
  0014  CONCAT    R3 = concat(R3..R3)
  0015  CALL      R2 = call(R2, 0 args, 1 rets)
  0016  RETURN    return R0..R-1
; ---------- proto7 [GetTotalRecharge] ----------
  ; fn ?  line 152-154 np=1 va=0 ms=2 code=3 consts=1 upvals=0 protos=0
  ;   K[0]='m_totalPay'
  ;   locals: self(0-3)
  0000  GETTABLE  R1 = R0[K0('m_totalPay')]
  0001  RETURN    return R1..R0
  0002  RETURN    return R0..R-1
; ---------- proto8 [SetTotalRecharge] ----------
  ; fn ?  line 156-158 np=2 va=0 ms=2 code=2 consts=1 upvals=0 protos=0
  ;   K[0]='m_totalPay'
  ;   locals: self(0-2), pay(0-2)
  0000  SETTABLE  R0[K0('m_totalPay')] = R1
  0001  RETURN    return R0..R-1
; ---------- proto9 [GetLocalizedPrice] ----------
  ; fn ?  line 160-168 np=2 va=0 ms=6 code=15 consts=6 upvals=1 protos=0
  ;   K[0]='m_mapProducts'
  ;   K[1]=nil
  ;   K[2]='Log'
  ;   K[3]='Error'
  ;   K[4]='InAppPurchaseModel:GetLocalizedPrice no product info, ErrType: '
  ;   K[5]='localizedPrice'
  ;   upvals: _ENV
  ;   locals: self(0-15), eIAPType(0-15), productData(2-15)
  0000  GETTABLE  R2 = R0[K0('m_mapProducts')]
  0001  GETTABLE  R2 = R2[R1]
  0002  EQ        if R0 eq K1(nil)   -> -129787
  0003  JMP       (jump)   -> 12
  0004  GETTABUP  R3 = _ENV[K2('Log')]
  0005  GETTABLE  R3 = R3[K3('Error')]
  0006  LOADK     R4 = K4 'InAppPurchaseModel:GetLocalizedPrice no product info, ErrType: '
  0007  MOVE      R5 = R0
  0008  CONCAT    R4 = concat(R4..R4)
  0009  CALL      R3 = call(R3, 0 args, 1 rets)
  0010  LOADNIL   R3..R3 = nil
  0011  RETURN    return R3..R2
  0012  GETTABLE  R3 = R2[K5('localizedPrice')]
  0013  RETURN    return R3..R2
  0014  RETURN    return R0..R-1
; ---------- proto10 [GetProductData] ----------
  ; fn ?  line 170-172 np=2 va=0 ms=3 code=4 consts=1 upvals=0 protos=0
  ;   K[0]='m_mapProducts'
  ;   locals: self(0-4), eIAPType(0-4)
  0000  GETTABLE  R2 = R0[K0('m_mapProducts')]
  0001  GETTABLE  R2 = R2[R1]
  0002  RETURN    return R2..R1
  0003  RETURN    return R0..R-1
; ---------- proto11 [GetLocalizedOriginPrice] ----------
  ; fn ?  line 174-208 np=3 va=0 ms=14 code=81 consts=28 upvals=1 protos=0
  ;   K[0]='GetLocalizedPrice'
  ;   K[1]='GetProductData'
  ;   K[2]='tonumber'
  ;   K[3]='fixedMoney'
  ;   K[4]='realMoney'
  ;   K[5]=''
  ;   K[6]=100
  ;   K[7]='math'
  ;   K[8]='ceil'
  ;   K[9]=1
  ;   K[10]=0.01
  ;   K[11]='string'
  ;   K[12]='find'
  ;   K[13]='%.%d+'
  ;   K[14]='format'
  ;   K[15]='%.2f'
  ;   K[16]='gsub'
  ;   K[17]='%d+[,%d]*%.?%d+'
  ;   K[18]='GM'
  ;   K[19]='BIManager'
  ;   K[20]='LogProject'
  ;   K[21]='glop'
  ;   K[22]='i'
  ;   K[23]='t'
  ;   K[24]='l'
  ;   K[25]='f'
  ;   K[26]='r'
  ;   K[27]='o'
  ;   upvals: _ENV
  ;   locals: self(0-81), EIAPType(0-81), originPrice(0-81), localPriceText(3-81), productData(6-81), fixedMoney(9-81), realMoney(12-81), originFixedMoney(15-81), originPriceText(16-81), originRealMoney(23-67), result(64-67), replaceTime(64-67)
  0000  SELF      R4 = R0[K0('GetLocalizedPrice')] (self)
  0001  MOVE      R5 = R0
  0002  CALL      R3 = call(R3, 1 args, 2 rets)
  0003  SELF      R5 = R0[K1('GetProductData')] (self)
  0004  MOVE      R6 = R0
  0005  CALL      R4 = call(R4, 1 args, 2 rets)
  0006  GETTABUP  R5 = _ENV[K2('tonumber')]
  0007  GETTABLE  R6 = R4[K3('fixedMoney')]
  0008  CALL      R5 = call(R5, 1 args, 1 rets)
  0009  GETTABUP  R6 = _ENV[K2('tonumber')]
  0010  GETTABLE  R7 = R4[K4('realMoney')]
  0011  CALL      R6 = call(R6, 1 args, 1 rets)
  0012  GETTABUP  R7 = _ENV[K2('tonumber')]
  0013  MOVE      R8 = R0
  0014  CALL      R7 = call(R7, 1 args, 1 rets)
  0015  LOADK     R8 = K5 ''
  0016  TEST      if not R7 then   -> -131054
  0017  JMP       (jump)   -> 67
  0018  TEST      if not R5 then   -> -131052
  0019  JMP       (jump)   -> 67
  0020  TEST      if not R6 then   -> -131050
  0021  JMP       (jump)   -> 67
  0022  MOVE      R9 = R0
  0023  EQ        if R1 eq R6   -> -128481
  0024  JMP       (jump)   -> 45
  0025  MUL       R10 = R6 mul R7
  0026  DIV       R9 = R5 div R10
  0027  LE        if R0 le R6   -> 3107
  0028  JMP       (jump)   -> 40
  0029  MUL       R10 = K6(100) mul R6
  0030  IDIV      R10 = K6(100) idiv R10
  0031  EQ        if R0 eq R6   -> -125913
  0032  JMP       (jump)   -> 40
  0033  GETTABUP  R10 = _ENV[K7('math')]
  0034  GETTABLE  R10 = R10[K8('ceil')]
  0035  DIV       R11 = K6(100) div R9
  0036  CALL      R10 = call(R10, 1 args, 1 rets)
  0037  MUL       R10 = K6(100) mul R10
  0038  SUB       R9 = K9(1) sub R10
  0039  JMP       (jump)   -> 45
  0040  GETTABUP  R10 = _ENV[K7('math')]
  0041  GETTABLE  R10 = R10[K8('ceil')]
  0042  MOVE      R11 = R0
  0043  CALL      R10 = call(R10, 1 args, 1 rets)
  0044  SUB       R9 = K10(0.01) sub R10
  0045  GETTABUP  R10 = _ENV[K11('string')]
  0046  GETTABLE  R10 = R10[K12('find')]
  0047  MOVE      R11 = R0
  0048  LOADK     R12 = K13 '%.%d+'
  0049  CALL      R10 = call(R10, 1 args, 2 rets)
  0050  TEST      if not R10 then   -> -131020
  0051  JMP       (jump)   -> 58
  0052  GETTABUP  R10 = _ENV[K11('string')]
  0053  GETTABLE  R10 = R10[K14('format')]
  0054  LOADK     R11 = K15 '%.2f'
  0055  MOVE      R12 = R0
  0056  CALL      R10 = call(R10, 1 args, 2 rets)
  0057  MOVE      R9 = R0
  0058  GETTABUP  R10 = _ENV[K11('string')]
  0059  GETTABLE  R10 = R10[K16('gsub')]
  0060  MOVE      R11 = R0
  0061  LOADK     R12 = K17 '%d+[,%d]*%.?%d+'
  0062  MOVE      R13 = R0
  0063  CALL      R10 = call(R10, 2 args, 3 rets)
  0064  EQ        if R0 eq K9(1)   -> -125109
  0065  JMP       (jump)   -> 67
  0066  MOVE      R8 = R0
  0067  GETTABUP  R9 = _ENV[K18('GM')]
  0068  GETTABLE  R9 = R9[K19('BIManager')]
  0069  SELF      R10 = R9[K20('LogProject')] (self)
  0070  LOADK     R11 = K21 'glop'
  0071  NEWTABLE  R12 = {} (0 items)
  0072  SETTABLE  R12[K22('i')] = R1
  0073  SETTABLE  R12[K23('t')] = R8
  0074  SETTABLE  R12[K24('l')] = R3
  0075  SETTABLE  R12[K25('f')] = R5
  0076  SETTABLE  R12[K26('r')] = R6
  0077  SETTABLE  R12[K27('o')] = R7
  0078  CALL      R9 = call(R9, 0 args, 3 rets)
  0079  RETURN    return R8..R7
  0080  RETURN    return R0..R-1
; ---------- proto12 [_QueryPayServer4Info] ----------
  ; fn ?  line 212-239 np=9 va=0 ms=16 code=21 consts=9 upvals=2 protos=1
  ;   K[0]=1
  ;   K[1]='Log'
  ;   K[2]='Info'
  ;   K[3]='_QueryPayServer4Info: retry='
  ;   K[4]='tostring'
  ;   K[5]=', delay='
  ;   K[6]='LogTag'
  ;   K[7]='Purchase'
  ;   K[8]='DelayExecuteFunc'
  ;   upvals: _ENV, IAP_QUERY_LIMIT
  ;   locals: self(0-21), eStatus(0-21), productId(0-21), message(0-21), data(0-21), signature(0-21), orderId(0-21), purchaseInfo(0-21), retry(0-21), delay(2-21)
  0000  MUL       R9 = R8 mul K0(1)
  0001  MUL       R9 = R8 mul R9
  0002  GETTABUP  R10 = _ENV[K1('Log')]
  0003  GETTABLE  R10 = R10[K2('Info')]
  0004  LOADK     R11 = K3 '_QueryPayServer4Info: retry='
  0005  GETTABUP  R12 = _ENV[K4('tostring')]
  0006  MOVE      R13 = R0
  0007  CALL      R12 = call(R12, 1 args, 1 rets)
  0008  LOADK     R13 = K5 ', delay='
  0009  GETTABUP  R14 = _ENV[K4('tostring')]
  0010  MOVE      R15 = R0
  0011  CALL      R14 = call(R14, 1 args, 1 rets)
  0012  CONCAT    R11 = concat(R11..R11)
  0013  GETTABUP  R12 = _ENV[K6('LogTag')]
  0014  GETTABLE  R12 = R12[K7('Purchase')]
  0015  CALL      R10 = call(R10, 0 args, 2 rets)
  0016  GETTABUP  R10 = _ENV[K8('DelayExecuteFunc')]
  0017  CLOSURE   R11 = closure proto0
  0018  MOVE      R12 = R0
  0019  CALL      R10 = call(R10, 0 args, 2 rets)
  0020  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 215-238 np=0 va=0 ms=7 code=31 consts=13 upvals=11 protos=1
    ;   K[0]='Log'
    ;   K[1]='Info'
    ;   K[2]='query payserver:'
    ;   K[3]='tostring'
    ;   K[4]='LogTag'
    ;   K[5]='Purchase'
    ;   K[6]='_LogPayAction'
    ;   K[7]='EBIType'
    ;   K[8]='QueryPurchase'
    ;   K[9]='q_'
    ;   K[10]=1
    ;   K[11]='PayMessage'
    ;   K[12]='Query'
    ;   upvals: _ENV, retry, self, purchaseInfo, message, data, signature, IAP_QUERY_LIMIT, eStatus, productId, orderId
    0000  GETTABUP  R0 = _ENV[K0('Log')]
    0001  GETTABLE  R0 = R0[K1('Info')]
    0002  LOADK     R1 = K2 'query payserver:'
    0003  GETTABUP  R2 = _ENV[K3('tostring')]
    0004  GETUPVAL  R3 = _ENV
    0005  CALL      R2 = call(R2, 1 args, 1 rets)
    0006  CONCAT    R1 = concat(R1..R1)
    0007  GETTABUP  R2 = _ENV[K4('LogTag')]
    0008  GETTABLE  R2 = R2[K5('Purchase')]
    0009  CALL      R0 = call(R0, 0 args, 2 rets)
    0010  GETUPVAL  R0 = _ENV
    0011  SELF      R1 = R0[K6('_LogPayAction')] (self)
    0012  GETTABUP  R2 = _ENV[K7('EBIType')]
    0013  GETTABLE  R2 = R2[K8('QueryPurchase')]
    0014  LOADK     R3 = K9 'q_'
    0015  GETTABUP  R4 = _ENV[K3('tostring')]
    0016  GETUPVAL  R5 = _ENV
    0017  CALL      R4 = call(R4, 1 args, 1 rets)
    0018  CONCAT    R3 = concat(R3..R3)
    0019  LOADNIL   R4..R4 = nil
    0020  LOADBOOL  R6 = true
    0021  CALL      R0 = call(R0, 0 args, 6 rets)
    0022  GETUPVAL  R0 = _ENV
    0023  ADD       R0 = K10(1) add R0
    0024  SETUPVAL  _ENV = R0
    0025  GETTABUP  R0 = _ENV[K11('PayMessage')]
    0026  GETTABLE  R0 = R0[K12('Query')]
    0027  GETUPVAL  R1 = _ENV
    0028  CLOSURE   R2 = closure proto0
    0029  CALL      R0 = call(R0, 0 args, 2 rets)
    0030  RETURN    return R0..R-1
    ; ---------- proto0 [] ----------
      ; fn ?  line 219-237 np=3 va=0 ms=15 code=73 consts=16 upvals=11 protos=0
      ;   K[0]='rcode'
      ;   K[1]=0
      ;   K[2]='product_id'
      ;   K[3]='order_id'
      ;   K[4]='_LogPayAction'
      ;   K[5]='EBIType'
      ;   K[6]='QueryPurchaseS'
      ;   K[7]='eIAPType'
      ;   K[8]='r'
      ;   K[9]='json'
      ;   K[10]='encode'
      ;   K[11]='_JNIPurchaseComplete'
      ;   K[12]='EPurchaseResultStatus'
      ;   K[13]='Success'
      ;   K[14]='FP_QueryFaild'
      ;   K[15]='_QueryPayServer4Info'
      ;   upvals: self, _ENV, purchaseInfo, message, data, signature, retry, IAP_QUERY_LIMIT, eStatus, productId, orderId
      ;   locals: result(0-73), tbData(0-73), reqCtx(0-73), pid(6-35), oid(7-35)
      0000  TEST      if not R0 then   -> -131070
      0001  JMP       (jump)   -> 35
      0002  GETTABLE  R3 = R1[K0('rcode')]
      0003  EQ        if R0 eq K1(0)   -> -129274
      0004  JMP       (jump)   -> 35
      0005  GETTABLE  R3 = R1[K2('product_id')]
      0006  GETTABLE  R4 = R1[K3('order_id')]
      0007  GETUPVAL  R5 = self
      0008  SELF      R6 = R5[K4('_LogPayAction')] (self)
      0009  GETTABUP  R7 = _ENV[K5('EBIType')]
      0010  GETTABLE  R7 = R7[K6('QueryPurchaseS')]
      0011  GETTABUP  R8 = purchaseInfo[K7('eIAPType')]
      0012  TEST      if not R8 then   -> -131057
      0013  JMP       (jump)   -> 15
      0014  LOADK     R8 = K8 'r'
      0015  MOVE      R9 = R0
      0016  GETTABUP  R10 = _ENV[K9('json')]
      0017  GETTABLE  R10 = R10[K10('encode')]
      0018  MOVE      R11 = R0
      0019  CALL      R10 = call(R10, 1 args, 1 rets)
      0020  LOADBOOL  R11 = true
      0021  CALL      R5 = call(R5, 0 args, 6 rets)
      0022  GETUPVAL  R5 = self
      0023  SELF      R6 = R5[K11('_JNIPurchaseComplete')] (self)
      0024  GETTABUP  R7 = _ENV[K12('EPurchaseResultStatus')]
      0025  GETTABLE  R7 = R7[K13('Success')]
      0026  MOVE      R8 = R0
      0027  GETUPVAL  R9 = self
      0028  GETUPVAL  R10 = self
      0029  GETUPVAL  R11 = self
      0030  MOVE      R12 = R0
      0031  GETUPVAL  R13 = self
      0032  LOADBOOL  R14 = true
      0033  CALL      R5 = call(R5, 0 args, 9 rets)
      0034  RETURN    return R0..R-1
      0035  GETUPVAL  R3 = self
      0036  GETUPVAL  R4 = self
      0037  LT        if R0 lt R3   -> -128982
      0038  JMP       (jump)   -> 61
      0039  GETUPVAL  R3 = self
      0040  SELF      R4 = R3[K4('_LogPayAction')] (self)
      0041  GETTABUP  R5 = _ENV[K5('EBIType')]
      0042  GETTABLE  R5 = R5[K14('FP_QueryFaild')]
      0043  GETTABUP  R6 = purchaseInfo[K7('eIAPType')]
      0044  TEST      if not R6 then   -> -131025
      0045  JMP       (jump)   -> 47
      0046  LOADK     R6 = K8 'r'
      0047  LOADNIL   R7..R7 = nil
      0048  LOADBOOL  R9 = true
      0049  CALL      R3 = call(R3, 0 args, 6 rets)
      0050  GETUPVAL  R3 = self
      0051  SELF      R4 = R3[K11('_JNIPurchaseComplete')] (self)
      0052  GETUPVAL  R5 = self
      0053  GETUPVAL  R6 = self
      0054  GETUPVAL  R7 = self
      0055  GETUPVAL  R8 = self
      0056  GETUPVAL  R9 = self
      0057  GETUPVAL  R10 = self
      0058  GETUPVAL  R11 = self
      0059  CALL      R3 = call(R3, 0 args, 8 rets)
      0060  JMP       (jump)   -> 72
      0061  GETUPVAL  R3 = self
      0062  SELF      R4 = R3[K15('_QueryPayServer4Info')] (self)
      0063  GETUPVAL  R5 = self
      0064  GETUPVAL  R6 = self
      0065  GETUPVAL  R7 = self
      0066  GETUPVAL  R8 = self
      0067  GETUPVAL  R9 = self
      0068  GETUPVAL  R10 = self
      0069  GETUPVAL  R11 = self
      0070  GETUPVAL  R12 = self
      0071  CALL      R3 = call(R3, 0 args, 9 rets)
      0072  RETURN    return R0..R-1
; ---------- proto13 [_JNIPurchaseComplete] ----------
  ; fn ?  line 242-331 np=9 va=0 ms=20 code=272 consts=64 upvals=1 protos=0
  ;   K[0]='isRestore'
  ;   K[1]='eIAPType'
  ;   K[2]=nil
  ;   K[3]='productId'
  ;   K[4]='StringUtil'
  ;   K[5]='IsNilOrEmpty'
  ;   K[6]='userTriggeredRestore'
  ;   K[7]='_ShowFailTip'
  ;   K[8]='_LogPayAction'
  ;   K[9]='EBIType'
  ;   K[10]='FP_NoPid'
  ;   K[11]='tostring'
  ;   K[12]=';'
  ;   K[13]=''
  ;   K[14]='GetIAPTypeFromProductId'
  ;   K[15]='FP_InvalidPid'
  ;   K[16]='json'
  ;   K[17]='decode'
  ;   K[18]='orderId'
  ;   K[19]='payResult'
  ;   K[20]='receiptData'
  ;   K[21]='receiptSignature'
  ;   K[22]='m_mapProducts'
  ;   K[23]='realMoney'
  ;   K[24]='currency'
  ;   K[25]='payChannelId'
  ;   K[26]='DeviceInfo'
  ;   K[27]='IsSystemIOS'
  ;   K[28]=100
  ;   K[29]=7
  ;   K[30]='purchaseToken'
  ;   K[31]='GameConfig'
  ;   K[32]='CURRENT_PLATFORM'
  ;   K[33]=60
  ;   K[34]='EPurchaseResultStatus'
  ;   K[35]='Success'
  ;   K[36]='MD5'
  ;   K[37]='Encode'
  ;   K[38]='Channels'
  ;   K[39]='AMAZON'
  ;   K[40]='GetValue'
  ;   K[41]=66
  ;   K[42]='strScene'
  ;   K[43]='UserRestore'
  ;   K[44]='Restore'
  ;   K[45]='Log'
  ;   K[46]='Error'
  ;   K[47]='InAppPurchaseModel:_JNIPurchaseComplete something unexpected happened'
  ;   K[48]='FP_UnexpectedType'
  ;   K[49]='_CanAwardForOrderId'
  ;   K[50]='_HideMask'
  ;   K[51]='_OnVerifySuccess'
  ;   K[52]='_VerifyPurchase'
  ;   K[53]='Cancelled'
  ;   K[54]='GM'
  ;   K[55]='UIManager'
  ;   K[56]='ShowPromptWithKey'
  ;   K[57]='purchase_cancel_tip'
  ;   K[58]='CancelPurchase'
  ;   K[59]='Info'
  ;   K[60]='cancel purchase'
  ;   K[61]='LogTag'
  ;   K[62]='Purchase'
  ;   K[63]='FP_CallbackFailed'
  ;   upvals: _ENV
  ;   locals: self(0-272), eStatus(0-272), productId(0-272), message(0-272), data(0-272), signature(0-272), orderId(0-272), purchaseInfo(0-272), skipVerify(0-272), eIAPType(63-272), tbData(90-272), iapData(105-272)
  0000  GETTABLE  R9 = R7[K1('eIAPType')]
  0001  EQ        if R1 eq K2(nil)   -> -126203
  0002  JMP       (jump)   -> 15
  0003  GETTABLE  R9 = R7[K3('productId')]
  0004  EQ        if R1 eq R9   -> -130033
  0005  JMP       (jump)   -> 12
  0006  GETTABUP  R9 = _ENV[K4('StringUtil')]
  0007  GETTABLE  R9 = R9[K5('IsNilOrEmpty')]
  0008  MOVE      R10 = R0
  0009  CALL      R9 = call(R9, 1 args, 1 rets)
  0010  TEST      if not R9 then   -> -131060
  0011  JMP       (jump)   -> 15
  0012  GETTABLE  R9 = R7[K6('userTriggeredRestore')]
  0013  JMP       (jump)   -> 16
  0014  LOADBOOL  R9 = false
  0015  LOADBOOL  R9 = true
  0016  SETTABLE  R7[K0('isRestore')] = R9
  0017  GETTABUP  R9 = _ENV[K4('StringUtil')]
  0018  GETTABLE  R9 = R9[K5('IsNilOrEmpty')]
  0019  MOVE      R10 = R0
  0020  CALL      R9 = call(R9, 1 args, 1 rets)
  0021  TEST      if not R9 then   -> -131049
  0022  JMP       (jump)   -> 53
  0023  GETTABUP  R9 = _ENV[K4('StringUtil')]
  0024  GETTABLE  R9 = R9[K5('IsNilOrEmpty')]
  0025  GETTABLE  R10 = R7[K3('productId')]
  0026  CALL      R9 = call(R9, 1 args, 1 rets)
  0027  TEST      if not R9 then   -> -131043
  0028  JMP       (jump)   -> 53
  0029  SELF      R10 = R0[K7('_ShowFailTip')] (self)
  0030  MOVE      R11 = R0
  0031  CALL      R9 = call(R9, 0 args, 2 rets)
  0032  GETTABLE  R9 = R7[K0('isRestore')]
  0033  TEST      if not R9 then   -> -131037
  0034  JMP       (jump)   -> 38
  0035  GETTABLE  R9 = R7[K6('userTriggeredRestore')]
  0036  TEST      if not R9 then   -> -131034
  0037  JMP       (jump)   -> 52
  0038  SELF      R10 = R0[K8('_LogPayAction')] (self)
  0039  GETTABUP  R11 = _ENV[K9('EBIType')]
  0040  GETTABLE  R11 = R11[K10('FP_NoPid')]
  0041  GETTABLE  R12 = R7[K1('eIAPType')]
  0042  MOVE      R13 = R0
  0043  GETTABUP  R14 = _ENV[K11('tostring')]
  0044  MOVE      R15 = R0
  0045  CALL      R14 = call(R14, 1 args, 1 rets)
  0046  LOADK     R15 = K12 ';'
  0047  TESTSET   if R1 then R16   -> -129486
  0048  JMP       (jump)   -> 50
  0049  LOADK     R16 = K13 ''
  0050  CONCAT    R14 = concat(R14..R14)
  0051  CALL      R9 = call(R9, 0 args, 5 rets)
  0052  RETURN    return R0..R-1
  0053  GETTABUP  R9 = _ENV[K4('StringUtil')]
  0054  GETTABLE  R9 = R9[K5('IsNilOrEmpty')]
  0055  MOVE      R10 = R0
  0056  CALL      R9 = call(R9, 1 args, 1 rets)
  0057  TEST      if not R9 then   -> -131013
  0058  JMP       (jump)   -> 60
  0059  GETTABLE  R2 = R7[K3('productId')]
  0060  SELF      R10 = R0[K14('GetIAPTypeFromProductId')] (self)
  0061  MOVE      R11 = R0
  0062  CALL      R9 = call(R9, 1 args, 2 rets)
  0063  EQ        if R0 eq K2(nil)   -> -126141
  0064  JMP       (jump)   -> 83
  0065  SELF      R11 = R0[K7('_ShowFailTip')] (self)
  0066  MOVE      R12 = R0
  0067  CALL      R10 = call(R10, 0 args, 2 rets)
  0068  SELF      R11 = R0[K8('_LogPayAction')] (self)
  0069  GETTABUP  R12 = _ENV[K9('EBIType')]
  0070  GETTABLE  R12 = R12[K15('FP_InvalidPid')]
  0071  MOVE      R13 = R0
  0072  MOVE      R14 = R0
  0073  GETTABUP  R15 = _ENV[K11('tostring')]
  0074  MOVE      R16 = R0
  0075  CALL      R15 = call(R15, 1 args, 1 rets)
  0076  LOADK     R16 = K12 ';'
  0077  TESTSET   if R1 then R17   -> -129456
  0078  JMP       (jump)   -> 80
  0079  LOADK     R17 = K13 ''
  0080  CONCAT    R15 = concat(R15..R15)
  0081  CALL      R10 = call(R10, 0 args, 5 rets)
  0082  RETURN    return R0..R-1
  0083  GETTABUP  R10 = _ENV[K16('json')]
  0084  GETTABLE  R10 = R10[K17('decode')]
  0085  MOVE      R11 = R0
  0086  CALL      R10 = call(R10, 1 args, 1 rets)
  0087  TEST      if not R10 then   -> -130982
  0088  JMP       (jump)   -> 90
  0089  NEWTABLE  R10 = {} (0 items)
  0090  GETTABLE  R11 = R10[K18('orderId')]
  0091  TEST      if not R11 then   -> -130978
  0092  JMP       (jump)   -> 96
  0093  TESTSET   if R1 then R11   -> -127904
  0094  JMP       (jump)   -> 96
  0095  LOADK     R11 = K13 ''
  0096  SETTABLE  R7[K18('orderId')] = R11
  0097  SETTABLE  R7[K19('payResult')] = R1
  0098  SETTABLE  R7[K20('receiptData')] = R4
  0099  TESTSET   if R1 then R11   -> -128410
  0100  JMP       (jump)   -> 102
  0101  LOADK     R11 = K13 ''
  0102  SETTABLE  R7[K21('receiptSignature')] = R11
  0103  GETTABLE  R11 = R0[K22('m_mapProducts')]
  0104  GETTABLE  R11 = R11[R9]
  0105  GETTABLE  R12 = R11[K23('realMoney')]
  0106  SETTABLE  R7[K23('realMoney')] = R12
  0107  GETTABLE  R12 = R11[K24('currency')]
  0108  SETTABLE  R7[K24('currency')] = R12
  0109  GETTABUP  R12 = _ENV[K26('DeviceInfo')]
  0110  GETTABLE  R12 = R12[K27('IsSystemIOS')]
  0111  CALL      R12 = call(R12, 1 args, 0 rets)
  0112  TEST      if not R12 then   -> -130958
  0113  JMP       (jump)   -> 117
  0114  LOADK     R12 = K28 100
  0115  TEST      if not R12 then   -> -130954
  0116  JMP       (jump)   -> 118
  0117  LOADK     R12 = K29 7
  0118  SETTABLE  R7[K25('payChannelId')] = R12
  0119  GETTABLE  R12 = R10[K30('purchaseToken')]
  0120  TEST      if not R12 then   -> -130949
  0121  JMP       (jump)   -> 123
  0122  LOADK     R12 = K13 ''
  0123  SETTABLE  R7[K30('purchaseToken')] = R12
  0124  GETTABUP  R12 = _ENV[K31('GameConfig')]
  0125  GETTABLE  R12 = R12[K32('CURRENT_PLATFORM')]
  0126  EQ        if R0 eq K33(60)   -> -124511
  0127  JMP       (jump)   -> 143
  0128  GETTABUP  R12 = _ENV[K34('EPurchaseResultStatus')]
  0129  GETTABLE  R12 = R12[K35('Success')]
  0130  EQ        if R0 eq R12   -> -130416
  0131  JMP       (jump)   -> 143
  0132  GETTABUP  R12 = _ENV[K4('StringUtil')]
  0133  GETTABLE  R12 = R12[K5('IsNilOrEmpty')]
  0134  GETTABLE  R13 = R7[K18('orderId')]
  0135  CALL      R12 = call(R12, 1 args, 1 rets)
  0136  TEST      if not R12 then   -> -130934
  0137  JMP       (jump)   -> 143
  0138  GETTABUP  R12 = _ENV[K36('MD5')]
  0139  GETTABLE  R12 = R12[K37('Encode')]
  0140  GETTABLE  R13 = R10[K30('purchaseToken')]
  0141  CALL      R12 = call(R12, 1 args, 1 rets)
  0142  SETTABLE  R7[K18('orderId')] = R12
  0143  GETTABUP  R12 = _ENV[K31('GameConfig')]
  0144  GETTABLE  R12 = R12[K32('CURRENT_PLATFORM')]
  0145  GETTABUP  R13 = _ENV[K38('Channels')]
  0146  GETTABLE  R13 = R13[K39('AMAZON')]
  0147  SELF      R14 = R13[K40('GetValue')] (self)
  0148  CALL      R13 = call(R13, 1 args, 1 rets)
  0149  EQ        if R0 eq R13   -> -124764
  0150  JMP       (jump)   -> 160
  0151  SETTABLE  R7[K25('payChannelId')] = K41(66)
  0152  TESTSET   if R1 then R12   -> -128357
  0153  JMP       (jump)   -> 155
  0154  LOADK     R12 = K13 ''
  0155  SETTABLE  R7[K18('orderId')] = R12
  0156  TESTSET   if R1 then R12   -> -129377
  0157  JMP       (jump)   -> 159
  0158  GETTABLE  R12 = R7[K18('orderId')]
  0159  SETTABLE  R7[K21('receiptSignature')] = R12
  0160  GETTABLE  R12 = R7[K0('isRestore')]
  0161  TEST      if not R12 then   -> -130909
  0162  JMP       (jump)   -> 176
  0163  SETTABLE  R7[K1('eIAPType')] = R9
  0164  SETTABLE  R7[K3('productId')] = R2
  0165  GETTABLE  R12 = R7[K6('userTriggeredRestore')]
  0166  TEST      if not R12 then   -> -130904
  0167  JMP       (jump)   -> 172
  0168  GETTABUP  R12 = _ENV[K9('EBIType')]
  0169  GETTABLE  R12 = R12[K43('UserRestore')]
  0170  TEST      if not R12 then   -> -130899
  0171  JMP       (jump)   -> 174
  0172  GETTABUP  R12 = _ENV[K9('EBIType')]
  0173  GETTABLE  R12 = R12[K44('Restore')]
  0174  SETTABLE  R7[K42('strScene')] = R12
  0175  JMP       (jump)   -> 201
  0176  GETTABLE  R12 = R7[K1('eIAPType')]
  0177  EQ        if R1 eq R9   -> -124740
  0178  JMP       (jump)   -> 201
  0179  GETTABUP  R12 = _ENV[K45('Log')]
  0180  GETTABLE  R12 = R12[K46('Error')]
  0181  LOADK     R13 = K47 'InAppPurchaseModel:_JNIPurchaseComplete something unexpected happened'
  0182  CALL      R12 = call(R12, 0 args, 1 rets)
  0183  SELF      R13 = R0[K7('_ShowFailTip')] (self)
  0184  MOVE      R14 = R0
  0185  CALL      R12 = call(R12, 0 args, 2 rets)
  0186  SELF      R13 = R0[K8('_LogPayAction')] (self)
  0187  GETTABUP  R14 = _ENV[K9('EBIType')]
  0188  GETTABLE  R14 = R14[K48('FP_UnexpectedType')]
  0189  GETTABLE  R15 = R7[K1('eIAPType')]
  0190  MOVE      R16 = R0
  0191  GETTABUP  R17 = _ENV[K11('tostring')]
  0192  MOVE      R18 = R0
  0193  CALL      R17 = call(R17, 1 args, 1 rets)
  0194  LOADK     R18 = K12 ';'
  0195  TESTSET   if R1 then R19   -> -129338
  0196  JMP       (jump)   -> 198
  0197  LOADK     R19 = K13 ''
  0198  CONCAT    R17 = concat(R17..R17)
  0199  CALL      R12 = call(R12, 0 args, 5 rets)
  0200  RETURN    return R0..R-1
  0201  GETTABUP  R12 = _ENV[K34('EPurchaseResultStatus')]
  0202  GETTABLE  R12 = R12[K35('Success')]
  0203  EQ        if R0 eq R12   -> -130343
  0204  JMP       (jump)   -> 223
  0205  TEST      if not R8 then   -> -130865
  0206  JMP       (jump)   -> 219
  0207  SELF      R13 = R0[K49('_CanAwardForOrderId')] (self)
  0208  MOVE      R14 = R0
  0209  CALL      R12 = call(R12, 1 args, 2 rets)
  0210  TEST      if not R12 then   -> -130860
  0211  JMP       (jump)   -> 219
  0212  SELF      R13 = R0[K50('_HideMask')] (self)
  0213  MOVE      R14 = R0
  0214  CALL      R12 = call(R12, 0 args, 2 rets)
  0215  SELF      R13 = R0[K51('_OnVerifySuccess')] (self)
  0216  MOVE      R14 = R0
  0217  CALL      R12 = call(R12, 0 args, 2 rets)
  0218  JMP       (jump)   -> 271
  0219  SELF      R13 = R0[K52('_VerifyPurchase')] (self)
  0220  MOVE      R14 = R0
  0221  CALL      R12 = call(R12, 0 args, 2 rets)
  0222  JMP       (jump)   -> 271
  0223  GETTABUP  R12 = _ENV[K34('EPurchaseResultStatus')]
  0224  GETTABLE  R12 = R12[K53('Cancelled')]
  0225  EQ        if R0 eq R12   -> -130321
  0226  JMP       (jump)   -> 254
  0227  SELF      R13 = R0[K50('_HideMask')] (self)
  0228  MOVE      R14 = R0
  0229  CALL      R12 = call(R12, 0 args, 2 rets)
  0230  GETTABLE  R12 = R7[K0('isRestore')]
  0231  TEST      if not R12 then   -> -130839
  0232  JMP       (jump)   -> 236
  0233  GETTABLE  R12 = R7[K6('userTriggeredRestore')]
  0234  TEST      if not R12 then   -> -130836
  0235  JMP       (jump)   -> 241
  0236  GETTABUP  R12 = _ENV[K54('GM')]
  0237  GETTABLE  R12 = R12[K55('UIManager')]
  0238  SELF      R13 = R12[K56('ShowPromptWithKey')] (self)
  0239  LOADK     R14 = K57 'purchase_cancel_tip'
  0240  CALL      R12 = call(R12, 0 args, 2 rets)
  0241  SELF      R13 = R0[K8('_LogPayAction')] (self)
  0242  GETTABUP  R14 = _ENV[K9('EBIType')]
  0243  GETTABLE  R14 = R14[K58('CancelPurchase')]
  0244  GETTABLE  R15 = R7[K1('eIAPType')]
  0245  MOVE      R16 = R0
  0246  CALL      R12 = call(R12, 0 args, 4 rets)
  0247  GETTABUP  R12 = _ENV[K45('Log')]
  0248  GETTABLE  R12 = R12[K59('Info')]
  0249  LOADK     R13 = K60 'cancel purchase'
  0250  GETTABUP  R14 = _ENV[K61('LogTag')]
  0251  GETTABLE  R14 = R14[K62('Purchase')]
  0252  CALL      R12 = call(R12, 0 args, 2 rets)
  0253  JMP       (jump)   -> 271
  0254  SELF      R13 = R0[K7('_ShowFailTip')] (self)
  0255  MOVE      R14 = R0
  0256  CALL      R12 = call(R12, 0 args, 2 rets)
  0257  SELF      R13 = R0[K8('_LogPayAction')] (self)
  0258  GETTABUP  R14 = _ENV[K9('EBIType')]
  0259  GETTABLE  R14 = R14[K63('FP_CallbackFailed')]
  0260  GETTABLE  R15 = R7[K1('eIAPType')]
  0261  MOVE      R16 = R0
  0262  GETTABUP  R17 = _ENV[K11('tostring')]
  0263  MOVE      R18 = R0
  0264  CALL      R17 = call(R17, 1 args, 1 rets)
  0265  LOADK     R18 = K12 ';'
  0266  TESTSET   if R1 then R19   -> -129267
  0267  JMP       (jump)   -> 269
  0268  LOADK     R19 = K13 ''
  0269  CONCAT    R17 = concat(R17..R17)
  0270  CALL      R12 = call(R12, 0 args, 5 rets)
  0271  RETURN    return R0..R-1
; ---------- proto14 [_ShowFailTip] ----------
  ; fn ?  line 333-346 np=3 va=0 ms=12 code=41 consts=19 upvals=1 protos=0
  ;   K[0]='_HideMask'
  ;   K[1]='isRestore'
  ;   K[2]='GM'
  ;   K[3]='UIManager'
  ;   K[4]='OpenView'
  ;   K[5]='UIPrefabConfigName'
  ;   K[6]='PurchaseFailWindow'
  ;   K[7]='userTriggeredRestore'
  ;   K[8]='GameTextModel'
  ;   K[9]='GeneralMsgWindow'
  ;   K[10]='GetText'
  ;   K[11]='no_purchase_need_restore_title'
  ;   K[12]='no_purchase_need_restore_desc'
  ;   K[13]='no_purchase_need_restore_button'
  ;   K[14]='Log'
  ;   K[15]='Info'
  ;   K[16]='fail purchase'
  ;   K[17]='LogTag'
  ;   K[18]='Purchase'
  ;   upvals: _ENV
  ;   locals: self(0-41), purchaseInfo(0-41), msgKey(0-41), gameTextModel(19-34)
  0000  SELF      R4 = R0[K0('_HideMask')] (self)
  0001  MOVE      R5 = R0
  0002  CALL      R3 = call(R3, 0 args, 2 rets)
  0003  GETTABLE  R3 = R1[K1('isRestore')]
  0004  TEST      if not R3 then   -> -131065
  0005  JMP       (jump)   -> 14
  0006  GETTABUP  R3 = _ENV[K2('GM')]
  0007  GETTABLE  R3 = R3[K3('UIManager')]
  0008  SELF      R4 = R3[K4('OpenView')] (self)
  0009  GETTABUP  R5 = _ENV[K5('UIPrefabConfigName')]
  0010  GETTABLE  R5 = R5[K6('PurchaseFailWindow')]
  0011  MOVE      R6 = R0
  0012  CALL      R3 = call(R3, 0 args, 3 rets)
  0013  JMP       (jump)   -> 34
  0014  GETTABLE  R3 = R1[K7('userTriggeredRestore')]
  0015  TEST      if not R3 then   -> -131055
  0016  JMP       (jump)   -> 34
  0017  GETTABUP  R3 = _ENV[K2('GM')]
  0018  GETTABLE  R3 = R3[K8('GameTextModel')]
  0019  GETTABUP  R4 = _ENV[K2('GM')]
  0020  GETTABLE  R4 = R4[K3('UIManager')]
  0021  SELF      R5 = R4[K4('OpenView')] (self)
  0022  GETTABUP  R6 = _ENV[K5('UIPrefabConfigName')]
  0023  GETTABLE  R6 = R6[K9('GeneralMsgWindow')]
  0024  SELF      R8 = R3[K10('GetText')] (self)
  0025  LOADK     R9 = K11 'no_purchase_need_restore_title'
  0026  CALL      R7 = call(R7, 1 args, 2 rets)
  0027  SELF      R9 = R3[K10('GetText')] (self)
  0028  LOADK     R10 = K12 'no_purchase_need_restore_desc'
  0029  CALL      R8 = call(R8, 1 args, 2 rets)
  0030  SELF      R10 = R3[K10('GetText')] (self)
  0031  LOADK     R11 = K13 'no_purchase_need_restore_button'
  0032  CALL      R9 = call(R9, -1 args, 2 rets)
  0033  CALL      R4 = call(R4, 0 args, -1 rets)
  0034  GETTABUP  R3 = _ENV[K14('Log')]
  0035  GETTABLE  R3 = R3[K15('Info')]
  0036  LOADK     R4 = K16 'fail purchase'
  0037  GETTABUP  R5 = _ENV[K17('LogTag')]
  0038  GETTABLE  R5 = R5[K18('Purchase')]
  0039  CALL      R3 = call(R3, 0 args, 2 rets)
  0040  RETURN    return R0..R-1
; ---------- proto15 [_HideMask] ----------
  ; fn ?  line 348-352 np=2 va=0 ms=4 code=11 consts=5 upvals=1 protos=0
  ;   K[0]='isRestore'
  ;   K[1]='userTriggeredRestore'
  ;   K[2]='GM'
  ;   K[3]='UIManager'
  ;   K[4]='HideMask'
  ;   upvals: _ENV
  ;   locals: self(0-11), purchaseInfo(0-11)
  0000  GETTABLE  R2 = R1[K0('isRestore')]
  0001  TEST      if not R2 then   -> -131069
  0002  JMP       (jump)   -> 6
  0003  GETTABLE  R2 = R1[K1('userTriggeredRestore')]
  0004  TEST      if not R2 then   -> -131066
  0005  JMP       (jump)   -> 10
  0006  GETTABUP  R2 = _ENV[K2('GM')]
  0007  GETTABLE  R2 = R2[K3('UIManager')]
  0008  SELF      R3 = R2[K4('HideMask')] (self)
  0009  CALL      R2 = call(R2, 0 args, 1 rets)
  0010  RETURN    return R0..R-1
; ---------- proto16 [_CloseTransaction] ----------
  ; fn ?  line 354-356 np=2 va=0 ms=5 code=9 consts=5 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='SDKHelper'
  ;   K[2]='PurchaseFinish'
  ;   K[3]='productId'
  ;   K[4]=''
  ;   upvals: _ENV
  ;   locals: self(0-9), purchaseInfo(0-9)
  0000  GETTABUP  R2 = _ENV[K0('GM')]
  0001  GETTABLE  R2 = R2[K1('SDKHelper')]
  0002  SELF      R3 = R2[K2('PurchaseFinish')] (self)
  0003  GETTABLE  R4 = R1[K3('productId')]
  0004  TEST      if not R4 then   -> -131065
  0005  JMP       (jump)   -> 7
  0006  LOADK     R4 = K4 ''
  0007  CALL      R2 = call(R2, 0 args, 2 rets)
  0008  RETURN    return R0..R-1
; ---------- proto17 [_VerifyPurchase] ----------
  ; fn ?  line 358-405 np=2 va=0 ms=7 code=24 consts=10 upvals=1 protos=1
  ;   K[0]='_CanAwardForOrderId'
  ;   K[1]='_ShowFailTip'
  ;   K[2]='_LogPayAction'
  ;   K[3]='EBIType'
  ;   K[4]='FP_RewardAlready'
  ;   K[5]='eIAPType'
  ;   K[6]='orderId'
  ;   K[7]='_CloseTransaction'
  ;   K[8]='PayMessage'
  ;   K[9]='PaidProof'
  ;   upvals: _ENV
  ;   locals: self(0-24), purchaseInfo(0-24)
  0000  SELF      R3 = R0[K0('_CanAwardForOrderId')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  TEST      if not R2 then   -> -131066
  0004  JMP       (jump)   -> 18
  0005  SELF      R3 = R0[K1('_ShowFailTip')] (self)
  0006  MOVE      R4 = R0
  0007  CALL      R2 = call(R2, 0 args, 2 rets)
  0008  SELF      R3 = R0[K2('_LogPayAction')] (self)
  0009  GETTABUP  R4 = _ENV[K3('EBIType')]
  0010  GETTABLE  R4 = R4[K4('FP_RewardAlready')]
  0011  GETTABLE  R5 = R1[K5('eIAPType')]
  0012  GETTABLE  R6 = R1[K6('orderId')]
  0013  CALL      R2 = call(R2, 0 args, 4 rets)
  0014  SELF      R3 = R0[K7('_CloseTransaction')] (self)
  0015  MOVE      R4 = R0
  0016  CALL      R2 = call(R2, 0 args, 2 rets)
  0017  RETURN    return R0..R-1
  0018  GETTABUP  R2 = _ENV[K8('PayMessage')]
  0019  GETTABLE  R2 = R2[K9('PaidProof')]
  0020  MOVE      R3 = R0
  0021  CLOSURE   R4 = closure proto0
  0022  CALL      R2 = call(R2, 0 args, 2 rets)
  0023  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 366-404 np=3 va=0 ms=14 code=139 consts=44 upvals=3 protos=0
    ;   K[0]='_CanAwardForOrderId'
    ;   K[1]='_ShowFailTip'
    ;   K[2]='_CloseTransaction'
    ;   K[3]='_HideMask'
    ;   K[4]='isRestore'
    ;   K[5]='userTriggeredRestore'
    ;   K[6]='GM'
    ;   K[7]='UIManager'
    ;   K[8]='OpenView'
    ;   K[9]='UIPrefabConfigName'
    ;   K[10]='GeneralMsgWindow'
    ;   K[11]='GameTextModel'
    ;   K[12]='GetText'
    ;   K[13]='bad_network_window_title'
    ;   K[14]='bad_network_window_desc'
    ;   K[15]='common_button_ok'
    ;   K[16]='_LogPayAction'
    ;   K[17]='EBIType'
    ;   K[18]='FP_NoNetwork'
    ;   K[19]='eIAPType'
    ;   K[20]='orderId'
    ;   K[21]='Log'
    ;   K[22]='Info'
    ;   K[23]='fail purchase, no network'
    ;   K[24]='LogTag'
    ;   K[25]='Purchase'
    ;   K[26]='rcode'
    ;   K[27]=7
    ;   K[28]='cheat_pay_remind_desc'
    ;   K[29]='FP_VerifyPending'
    ;   K[30]='pending purchase'
    ;   K[31]=0
    ;   K[32]='Host'
    ;   K[33]=''
    ;   K[34]='RealUrl'
    ;   K[35]='rcode: '
    ;   K[36]=', url: '
    ;   K[37]=', host: '
    ;   K[38]=', response: '
    ;   K[39]='json'
    ;   K[40]='encode'
    ;   K[41]='FP_VerifyFailed'
    ;   K[42]='fail purchase, server response code is '
    ;   K[43]='_OnVerifySuccess'
    ;   upvals: self, purchaseInfo, _ENV
    ;   locals: result(0-139), tbData(0-139), reqCtx(0-139), host(96-130), url(97-130), strInfo(109-130)
    0000  GETUPVAL  R3 = self
    0001  SELF      R4 = R3[K0('_CanAwardForOrderId')] (self)
    0002  GETUPVAL  R5 = self
    0003  CALL      R3 = call(R3, 1 args, 2 rets)
    0004  TEST      if not R3 then   -> -131065
    0005  JMP       (jump)   -> 15
    0006  GETUPVAL  R3 = self
    0007  SELF      R4 = R3[K1('_ShowFailTip')] (self)
    0008  GETUPVAL  R5 = self
    0009  CALL      R3 = call(R3, 0 args, 2 rets)
    0010  GETUPVAL  R3 = self
    0011  SELF      R4 = R3[K2('_CloseTransaction')] (self)
    0012  GETUPVAL  R5 = self
    0013  CALL      R3 = call(R3, 0 args, 2 rets)
    0014  RETURN    return R0..R-1
    0015  TEST      if not R0 then   -> -131054
    0016  JMP       (jump)   -> 62
    0017  GETUPVAL  R3 = self
    0018  SELF      R4 = R3[K3('_HideMask')] (self)
    0019  GETUPVAL  R5 = self
    0020  CALL      R3 = call(R3, 0 args, 2 rets)
    0021  GETTABUP  R3 = purchaseInfo[K4('isRestore')]
    0022  TEST      if not R3 then   -> -131048
    0023  JMP       (jump)   -> 27
    0024  GETTABUP  R3 = purchaseInfo[K5('userTriggeredRestore')]
    0025  TEST      if not R3 then   -> -131045
    0026  JMP       (jump)   -> 48
    0027  GETTABUP  R3 = _ENV[K6('GM')]
    0028  GETTABLE  R3 = R3[K7('UIManager')]
    0029  SELF      R4 = R3[K8('OpenView')] (self)
    0030  GETTABUP  R5 = _ENV[K9('UIPrefabConfigName')]
    0031  GETTABLE  R5 = R5[K10('GeneralMsgWindow')]
    0032  GETTABUP  R6 = _ENV[K6('GM')]
    0033  GETTABLE  R6 = R6[K11('GameTextModel')]
    0034  SELF      R7 = R6[K12('GetText')] (self)
    0035  LOADK     R8 = K13 'bad_network_window_title'
    0036  CALL      R6 = call(R6, 1 args, 2 rets)
    0037  GETTABUP  R7 = _ENV[K6('GM')]
    0038  GETTABLE  R7 = R7[K11('GameTextModel')]
    0039  SELF      R8 = R7[K12('GetText')] (self)
    0040  LOADK     R9 = K14 'bad_network_window_desc'
    0041  CALL      R7 = call(R7, 1 args, 2 rets)
    0042  GETTABUP  R8 = _ENV[K6('GM')]
    0043  GETTABLE  R8 = R8[K11('GameTextModel')]
    0044  SELF      R9 = R8[K12('GetText')] (self)
    0045  LOADK     R10 = K15 'common_button_ok'
    0046  CALL      R8 = call(R8, -1 args, 2 rets)
    0047  CALL      R3 = call(R3, 0 args, -1 rets)
    0048  GETUPVAL  R3 = self
    0049  SELF      R4 = R3[K16('_LogPayAction')] (self)
    0050  GETTABUP  R5 = _ENV[K17('EBIType')]
    0051  GETTABLE  R5 = R5[K18('FP_NoNetwork')]
    0052  GETTABUP  R6 = purchaseInfo[K19('eIAPType')]
    0053  GETTABUP  R7 = purchaseInfo[K20('orderId')]
    0054  CALL      R3 = call(R3, 0 args, 4 rets)
    0055  GETTABUP  R3 = _ENV[K21('Log')]
    0056  GETTABLE  R3 = R3[K22('Info')]
    0057  LOADK     R4 = K23 'fail purchase, no network'
    0058  GETTABUP  R5 = _ENV[K24('LogTag')]
    0059  GETTABLE  R5 = R5[K25('Purchase')]
    0060  CALL      R3 = call(R3, 0 args, 2 rets)
    0061  RETURN    return R0..R-1
    0062  GETTABLE  R3 = R1[K26('rcode')]
    0063  EQ        if R0 eq K27(7)   -> -129188
    0064  JMP       (jump)   -> 85
    0065  GETUPVAL  R3 = self
    0066  SELF      R4 = R3[K1('_ShowFailTip')] (self)
    0067  GETUPVAL  R5 = self
    0068  LOADK     R6 = K28 'cheat_pay_remind_desc'
    0069  CALL      R3 = call(R3, 0 args, 3 rets)
    0070  GETUPVAL  R3 = self
    0071  SELF      R4 = R3[K16('_LogPayAction')] (self)
    0072  GETTABUP  R5 = _ENV[K17('EBIType')]
    0073  GETTABLE  R5 = R5[K29('FP_VerifyPending')]
    0074  GETTABUP  R6 = purchaseInfo[K19('eIAPType')]
    0075  GETTABUP  R7 = purchaseInfo[K20('orderId')]
    0076  CALL      R3 = call(R3, 0 args, 4 rets)
    0077  GETTABUP  R3 = _ENV[K21('Log')]
    0078  GETTABLE  R3 = R3[K22('Info')]
    0079  LOADK     R4 = K30 'pending purchase'
    0080  GETTABUP  R5 = _ENV[K24('LogTag')]
    0081  GETTABLE  R5 = R5[K25('Purchase')]
    0082  CALL      R3 = call(R3, 0 args, 2 rets)
    0083  RETURN    return R0..R-1
    0084  JMP       (jump)   -> 130
    0085  GETTABLE  R3 = R1[K26('rcode')]
    0086  EQ        if R1 eq K31(0)   -> -129161
    0087  JMP       (jump)   -> 130
    0088  GETUPVAL  R3 = self
    0089  SELF      R4 = R3[K1('_ShowFailTip')] (self)
    0090  GETUPVAL  R5 = self
    0091  CALL      R3 = call(R3, 0 args, 2 rets)
    0092  GETTABLE  R3 = R2[K32('Host')]
    0093  TEST      if not R3 then   -> -130976
    0094  JMP       (jump)   -> 96
    0095  LOADK     R3 = K33 ''
    0096  GETTABLE  R4 = R2[K34('RealUrl')]
    0097  LOADK     R5 = K35 'rcode: '
    0098  GETTABLE  R6 = R1[K26('rcode')]
    0099  LOADK     R7 = K36 ', url: '
    0100  MOVE      R8 = R0
    0101  LOADK     R9 = K37 ', host: '
    0102  MOVE      R10 = R0
    0103  LOADK     R11 = K38 ', response: '
    0104  GETTABUP  R12 = _ENV[K39('json')]
    0105  GETTABLE  R12 = R12[K40('encode')]
    0106  MOVE      R13 = R0
    0107  CALL      R12 = call(R12, 1 args, 1 rets)
    0108  CONCAT    R5 = concat(R5..R5)
    0109  GETUPVAL  R6 = self
    0110  SELF      R7 = R6[K16('_LogPayAction')] (self)
    0111  GETTABUP  R8 = _ENV[K17('EBIType')]
    0112  GETTABLE  R8 = R8[K41('FP_VerifyFailed')]
    0113  GETTABUP  R9 = purchaseInfo[K19('eIAPType')]
    0114  GETTABUP  R10 = purchaseInfo[K20('orderId')]
    0115  MOVE      R11 = R0
    0116  CALL      R6 = call(R6, 0 args, 5 rets)
    0117  GETUPVAL  R6 = self
    0118  SELF      R7 = R6[K2('_CloseTransaction')] (self)
    0119  GETUPVAL  R8 = self
    0120  CALL      R6 = call(R6, 0 args, 2 rets)
    0121  GETTABUP  R6 = _ENV[K21('Log')]
    0122  GETTABLE  R6 = R6[K22('Info')]
    0123  LOADK     R7 = K42 'fail purchase, server response code is '
    0124  GETTABLE  R8 = R1[K26('rcode')]
    0125  CONCAT    R7 = concat(R7..R7)
    0126  GETTABUP  R8 = _ENV[K24('LogTag')]
    0127  GETTABLE  R8 = R8[K25('Purchase')]
    0128  CALL      R6 = call(R6, 0 args, 2 rets)
    0129  RETURN    return R0..R-1
    0130  GETUPVAL  R3 = self
    0131  SELF      R4 = R3[K3('_HideMask')] (self)
    0132  GETUPVAL  R5 = self
    0133  CALL      R3 = call(R3, 0 args, 2 rets)
    0134  GETUPVAL  R3 = self
    0135  SELF      R4 = R3[K43('_OnVerifySuccess')] (self)
    0136  GETUPVAL  R5 = self
    0137  CALL      R3 = call(R3, 0 args, 2 rets)
    0138  RETURN    return R0..R-1
; ---------- proto18 [_OnVerifySuccess] ----------
  ; fn ?  line 407-440 np=2 va=0 ms=8 code=87 consts=39 upvals=1 protos=0
  ;   K[0]='funcSuccessCallback'
  ;   K[1]='isRestore'
  ;   K[2]='_RestoreRewards'
  ;   K[3]='eIAPType'
  ;   K[4]='EventDispatcher'
  ;   K[5]='DispatchEvent'
  ;   K[6]='EEventType'
  ;   K[7]='IAPSuccess'
  ;   K[8]='GM'
  ;   K[9]='DBTableManager'
  ;   K[10]='SaveAllImmediately'
  ;   K[11]='SyncModel'
  ;   K[12]='CheckUpload'
  ;   K[13]='PayMessage'
  ;   K[14]='IAP'
  ;   K[15]='BIManager'
  ;   K[16]='LogPay'
  ;   K[17]='productId'
  ;   K[18]='orderId'
  ;   K[19]='strScene'
  ;   K[20]='_LogPayAction'
  ;   K[21]='EBIType'
  ;   K[22]='SuccessPurchase'
  ;   K[23]='OperBIManager'
  ;   K[24]='TrackClientPurchase'
  ;   K[25]='tostring'
  ;   K[26]='realMoney'
  ;   K[27]='currency'
  ;   K[28]='TrackIAPEvent'
  ;   K[29]='_SetOrderIdAwarded'
  ;   K[30]='m_totalPay'
  ;   K[31]=0
  ;   K[32]='TrackEvent'
  ;   K[33]='EOperBIEventType'
  ;   K[34]='first_pay'
  ;   K[35]='_RecordPurchase'
  ;   K[36]='m_mapProducts'
  ;   K[37]='fixedMoney'
  ;   K[38]='_CloseTransaction'
  ;   upvals: _ENV
  ;   locals: self(0-87), purchaseInfo(0-87), awarded(12-15)
  0000  GETTABLE  R2 = R1[K0('funcSuccessCallback')]
  0001  TEST      if not R2 then   -> -131069
  0002  JMP       (jump)   -> 6
  0003  GETTABLE  R2 = R1[K0('funcSuccessCallback')]
  0004  CALL      R2 = call(R2, 0 args, 0 rets)
  0005  JMP       (jump)   -> 17
  0006  GETTABLE  R2 = R1[K1('isRestore')]
  0007  TEST      if not R2 then   -> -131063
  0008  JMP       (jump)   -> 16
  0009  SELF      R3 = R0[K2('_RestoreRewards')] (self)
  0010  GETTABLE  R4 = R1[K3('eIAPType')]
  0011  CALL      R2 = call(R2, 1 args, 2 rets)
  0012  TEST      if not R2 then   -> -131057
  0013  JMP       (jump)   -> 17
  0014  RETURN    return R0..R-1
  0015  JMP       (jump)   -> 17
  0016  RETURN    return R0..R-1
  0017  GETTABUP  R2 = _ENV[K4('EventDispatcher')]
  0018  GETTABLE  R2 = R2[K5('DispatchEvent')]
  0019  GETTABUP  R3 = _ENV[K6('EEventType')]
  0020  GETTABLE  R3 = R3[K7('IAPSuccess')]
  0021  GETTABLE  R4 = R1[K3('eIAPType')]
  0022  CALL      R2 = call(R2, 0 args, 2 rets)
  0023  GETTABUP  R2 = _ENV[K8('GM')]
  0024  GETTABLE  R2 = R2[K9('DBTableManager')]
  0025  SELF      R3 = R2[K10('SaveAllImmediately')] (self)
  0026  CALL      R2 = call(R2, 0 args, 1 rets)
  0027  GETTABUP  R2 = _ENV[K8('GM')]
  0028  GETTABLE  R2 = R2[K11('SyncModel')]
  0029  SELF      R3 = R2[K12('CheckUpload')] (self)
  0030  LOADNIL   R4..R4 = nil
  0031  LOADBOOL  R6 = true
  0032  CALL      R2 = call(R2, 0 args, 4 rets)
  0033  GETTABUP  R2 = _ENV[K13('PayMessage')]
  0034  GETTABLE  R2 = R2[K14('IAP')]
  0035  MOVE      R3 = R0
  0036  CALL      R2 = call(R2, 0 args, 1 rets)
  0037  GETTABUP  R2 = _ENV[K8('GM')]
  0038  GETTABLE  R2 = R2[K15('BIManager')]
  0039  SELF      R3 = R2[K16('LogPay')] (self)
  0040  GETTABLE  R4 = R1[K17('productId')]
  0041  GETTABLE  R5 = R1[K18('orderId')]
  0042  GETTABLE  R6 = R1[K19('strScene')]
  0043  CALL      R2 = call(R2, 0 args, 4 rets)
  0044  SELF      R3 = R0[K20('_LogPayAction')] (self)
  0045  GETTABUP  R4 = _ENV[K21('EBIType')]
  0046  GETTABLE  R4 = R4[K22('SuccessPurchase')]
  0047  GETTABLE  R5 = R1[K3('eIAPType')]
  0048  GETTABLE  R6 = R1[K18('orderId')]
  0049  GETTABLE  R7 = R1[K19('strScene')]
  0050  CALL      R2 = call(R2, 0 args, 5 rets)
  0051  GETTABUP  R2 = _ENV[K8('GM')]
  0052  GETTABLE  R2 = R2[K23('OperBIManager')]
  0053  SELF      R3 = R2[K24('TrackClientPurchase')] (self)
  0054  GETTABUP  R4 = _ENV[K25('tostring')]
  0055  GETTABLE  R5 = R1[K26('realMoney')]
  0056  CALL      R4 = call(R4, 1 args, 1 rets)
  0057  GETTABLE  R5 = R1[K27('currency')]
  0058  GETTABLE  R6 = R1[K18('orderId')]
  0059  CALL      R2 = call(R2, 0 args, 4 rets)
  0060  GETTABUP  R2 = _ENV[K8('GM')]
  0061  GETTABLE  R2 = R2[K23('OperBIManager')]
  0062  SELF      R3 = R2[K28('TrackIAPEvent')] (self)
  0063  GETTABLE  R4 = R1[K3('eIAPType')]
  0064  CALL      R2 = call(R2, 0 args, 2 rets)
  0065  SELF      R3 = R0[K29('_SetOrderIdAwarded')] (self)
  0066  GETTABLE  R4 = R1[K18('orderId')]
  0067  CALL      R2 = call(R2, 0 args, 2 rets)
  0068  GETTABLE  R2 = R0[K30('m_totalPay')]
  0069  LE        if R0 le K31(0)   -> -129690
  0070  JMP       (jump)   -> 77
  0071  GETTABUP  R2 = _ENV[K8('GM')]
  0072  GETTABLE  R2 = R2[K23('OperBIManager')]
  0073  SELF      R3 = R2[K32('TrackEvent')] (self)
  0074  GETTABUP  R4 = _ENV[K33('EOperBIEventType')]
  0075  GETTABLE  R4 = R4[K34('first_pay')]
  0076  CALL      R2 = call(R2, 0 args, 2 rets)
  0077  SELF      R3 = R0[K35('_RecordPurchase')] (self)
  0078  GETTABLE  R4 = R0[K36('m_mapProducts')]
  0079  GETTABLE  R5 = R1[K3('eIAPType')]
  0080  GETTABLE  R4 = R4[R5]
  0081  GETTABLE  R4 = R4[K37('fixedMoney')]
  0082  CALL      R2 = call(R2, 0 args, 2 rets)
  0083  SELF      R3 = R0[K38('_CloseTransaction')] (self)
  0084  MOVE      R4 = R0
  0085  CALL      R2 = call(R2, 0 args, 2 rets)
  0086  RETURN    return R0..R-1
; ---------- proto19 [_RecordPurchase] ----------
  ; fn ?  line 443-445 np=2 va=0 ms=5 code=8 consts=4 upvals=1 protos=0
  ;   K[0]='m_totalPay'
  ;   K[1]='math'
  ;   K[2]='ceil'
  ;   K[3]=100
  ;   upvals: _ENV
  ;   locals: self(0-8), fixedMoney(0-8)
  0000  GETTABLE  R2 = R0[K0('m_totalPay')]
  0001  GETTABUP  R3 = _ENV[K1('math')]
  0002  GETTABLE  R3 = R3[K2('ceil')]
  0003  MUL       R4 = K3(100) mul R1
  0004  CALL      R3 = call(R3, 1 args, 1 rets)
  0005  ADD       R2 = R3 add R2
  0006  SETTABLE  R0[K0('m_totalPay')] = R2
  0007  RETURN    return R0..R-1
; ---------- proto20 [_RestoreRewards] ----------
  ; fn ?  line 447-492 np=2 va=0 ms=12 code=131 consts=54 upvals=1 protos=0
  ;   K[0]='EIAPType'
  ;   K[1]='getgem_1'
  ;   K[2]='getgem_2'
  ;   K[3]='getgem_3'
  ;   K[4]='getgem_4'
  ;   K[5]='getgem_5'
  ;   K[6]='getgem_6'
  ;   K[7]='GM'
  ;   K[8]='ShopDataModel'
  ;   K[9]='GetIAPConfigData'
  ;   K[10]='EShopType'
  ;   K[11]='Diamonds'
  ;   K[12]='PropertyDataManager'
  ;   K[13]='AcquireWithCollectAnimation'
  ;   K[14]='goods'
  ;   K[15]='EPropertySource'
  ;   K[16]='Buy'
  ;   K[17]='spriteKey'
  ;   K[18]='ShopSpriteKeyPrefix'
  ;   K[19]='icon'
  ;   K[20]=''
  ;   K[21]='EBIType'
  ;   K[22]='Restore'
  ;   K[23]='BundleManager'
  ;   K[24]='OnRestoreIAPRewards'
  ;   K[25]='ActivityManager'
  ;   K[26]='RestoreIapRewards'
  ;   K[27]='m_mapProducts'
  ;   K[28]=nil
  ;   K[29]='Log'
  ;   K[30]='Error'
  ;   K[31]='[InAppPurchaseModel:_RestoreRewards]: no product info with IAP type '
  ;   K[32]='PROPERTY_TYPE'
  ;   K[33]='EPropertyType'
  ;   K[34]='Gem'
  ;   K[35]='PROPERTY_COUNT'
  ;   K[36]='math'
  ;   K[37]='ceil'
  ;   K[38]='fixedMoney'
  ;   K[39]='InAppPurchaseModel'
  ;   K[40]='UsdToGemRatio'
  ;   K[41]='RewardApi'
  ;   K[42]='CryptRewards'
  ;   K[43]='AcquireRewards'
  ;   K[44]='ERewardScene'
  ;   K[45]='Other'
  ;   K[46]='EGameMode'
  ;   K[47]='Board'
  ;   K[48]='CacheItemType'
  ;   K[49]='Stack'
  ;   K[50]='BIManager'
  ;   K[51]='LogProject'
  ;   K[52]='EBIProjectType'
  ;   K[53]='IAPRestoreGem'
  ;   upvals: _ENV
  ;   locals: self(0-131), eIAPType(0-131), data(31-55), productData(76-130), formattedRewards(102-130)
  0000  GETTABUP  R2 = _ENV[K0('EIAPType')]
  0001  GETTABLE  R2 = R2[K1('getgem_1')]
  0002  EQ        if R1 eq R2   -> -130554
  0003  JMP       (jump)   -> 24
  0004  GETTABUP  R2 = _ENV[K0('EIAPType')]
  0005  GETTABLE  R2 = R2[K2('getgem_2')]
  0006  EQ        if R1 eq R2   -> -130550
  0007  JMP       (jump)   -> 24
  0008  GETTABUP  R2 = _ENV[K0('EIAPType')]
  0009  GETTABLE  R2 = R2[K3('getgem_3')]
  0010  EQ        if R1 eq R2   -> -130546
  0011  JMP       (jump)   -> 24
  0012  GETTABUP  R2 = _ENV[K0('EIAPType')]
  0013  GETTABLE  R2 = R2[K4('getgem_4')]
  0014  EQ        if R1 eq R2   -> -130542
  0015  JMP       (jump)   -> 24
  0016  GETTABUP  R2 = _ENV[K0('EIAPType')]
  0017  GETTABLE  R2 = R2[K5('getgem_5')]
  0018  EQ        if R1 eq R2   -> -130538
  0019  JMP       (jump)   -> 24
  0020  GETTABUP  R2 = _ENV[K0('EIAPType')]
  0021  GETTABLE  R2 = R2[K6('getgem_6')]
  0022  EQ        if R0 eq R2   -> -130534
  0023  JMP       (jump)   -> 56
  0024  GETTABUP  R2 = _ENV[K7('GM')]
  0025  GETTABLE  R2 = R2[K8('ShopDataModel')]
  0026  SELF      R3 = R2[K9('GetIAPConfigData')] (self)
  0027  GETTABUP  R4 = _ENV[K10('EShopType')]
  0028  GETTABLE  R4 = R4[K11('Diamonds')]
  0029  MOVE      R5 = R0
  0030  CALL      R2 = call(R2, 1 args, 3 rets)
  0031  TEST      if not R2 then   -> -131038
  0032  JMP       (jump)   -> 35
  0033  LOADBOOL  R3 = false
  0034  RETURN    return R3..R2
  0035  GETTABUP  R3 = _ENV[K7('GM')]
  0036  GETTABLE  R3 = R3[K12('PropertyDataManager')]
  0037  SELF      R4 = R3[K13('AcquireWithCollectAnimation')] (self)
  0038  GETTABLE  R5 = R2[K14('goods')]
  0039  GETTABUP  R6 = _ENV[K15('EPropertySource')]
  0040  GETTABLE  R6 = R6[K16('Buy')]
  0041  LOADNIL   R7..R7 = nil
  0042  NEWTABLE  R8 = {} (0 items)
  0043  GETTABUP  R9 = _ENV[K18('ShopSpriteKeyPrefix')]
  0044  GETTABLE  R10 = R2[K19('icon')]
  0045  TEST      if not R10 then   -> -131024
  0046  JMP       (jump)   -> 48
  0047  LOADK     R10 = K20 ''
  0048  CONCAT    R9 = concat(R9..R9)
  0049  SETTABLE  R8[K17('spriteKey')] = R9
  0050  GETTABUP  R9 = _ENV[K21('EBIType')]
  0051  GETTABLE  R9 = R9[K22('Restore')]
  0052  CALL      R3 = call(R3, 0 args, 6 rets)
  0053  LOADBOOL  R3 = true
  0054  RETURN    return R3..R2
  0055  JMP       (jump)   -> 130
  0056  GETTABUP  R2 = _ENV[K7('GM')]
  0057  GETTABLE  R2 = R2[K23('BundleManager')]
  0058  SELF      R3 = R2[K24('OnRestoreIAPRewards')] (self)
  0059  MOVE      R4 = R0
  0060  CALL      R2 = call(R2, 1 args, 2 rets)
  0061  TEST      if not R2 then   -> -131009
  0062  JMP       (jump)   -> 65
  0063  LOADBOOL  R2 = true
  0064  RETURN    return R2..R1
  0065  GETTABUP  R2 = _ENV[K7('GM')]
  0066  GETTABLE  R2 = R2[K25('ActivityManager')]
  0067  SELF      R3 = R2[K26('RestoreIapRewards')] (self)
  0068  MOVE      R4 = R0
  0069  CALL      R2 = call(R2, 1 args, 2 rets)
  0070  TEST      if not R2 then   -> -131000
  0071  JMP       (jump)   -> 74
  0072  LOADBOOL  R2 = true
  0073  RETURN    return R2..R1
  0074  GETTABLE  R2 = R0[K27('m_mapProducts')]
  0075  GETTABLE  R2 = R2[R1]
  0076  EQ        if R0 eq K28(nil)   -> -129686
  0077  JMP       (jump)   -> 86
  0078  GETTABUP  R3 = _ENV[K29('Log')]
  0079  GETTABLE  R3 = R3[K30('Error')]
  0080  LOADK     R4 = K31 '[InAppPurchaseModel:_RestoreRewards]: no product info with IAP type '
  0081  MOVE      R5 = R0
  0082  CONCAT    R4 = concat(R4..R4)
  0083  CALL      R3 = call(R3, 0 args, 1 rets)
  0084  LOADBOOL  R3 = false
  0085  RETURN    return R3..R2
  0086  NEWTABLE  R3 = {} (1 items)
  0087  NEWTABLE  R4 = {} (0 items)
  0088  GETTABUP  R5 = _ENV[K32('PROPERTY_TYPE')]
  0089  GETTABUP  R6 = _ENV[K33('EPropertyType')]
  0090  GETTABLE  R6 = R6[K34('Gem')]
  0091  SETTABLE  R4[R5] = R6
  0092  GETTABUP  R5 = _ENV[K35('PROPERTY_COUNT')]
  0093  GETTABUP  R6 = _ENV[K36('math')]
  0094  GETTABLE  R6 = R6[K37('ceil')]
  0095  GETTABLE  R7 = R2[K38('fixedMoney')]
  0096  GETTABUP  R8 = _ENV[K39('InAppPurchaseModel')]
  0097  GETTABLE  R8 = R8[K40('UsdToGemRatio')]
  0098  MUL       R7 = R8 mul R7
  0099  CALL      R6 = call(R6, 1 args, 1 rets)
  0100  SETTABLE  R4[R5] = R6
  0101  SETLIST   setlist R3[B=1,C=1]
  0102  GETTABUP  R4 = _ENV[K41('RewardApi')]
  0103  GETTABLE  R4 = R4[K42('CryptRewards')]
  0104  MOVE      R5 = R0
  0105  CALL      R4 = call(R4, 0 args, 1 rets)
  0106  GETTABUP  R4 = _ENV[K41('RewardApi')]
  0107  GETTABLE  R4 = R4[K43('AcquireRewards')]
  0108  MOVE      R5 = R0
  0109  GETTABUP  R6 = _ENV[K15('EPropertySource')]
  0110  GETTABLE  R6 = R6[K16('Buy')]
  0111  GETTABUP  R7 = _ENV[K21('EBIType')]
  0112  GETTABLE  R7 = R7[K22('Restore')]
  0113  GETTABUP  R8 = _ENV[K44('ERewardScene')]
  0114  GETTABLE  R8 = R8[K45('Other')]
  0115  LOADNIL   R9..R9 = nil
  0116  GETTABUP  R10 = _ENV[K46('EGameMode')]
  0117  GETTABLE  R10 = R10[K47('Board')]
  0118  GETTABUP  R11 = _ENV[K48('CacheItemType')]
  0119  GETTABLE  R11 = R11[K49('Stack')]
  0120  CALL      R4 = call(R4, 0 args, 7 rets)
  0121  GETTABUP  R4 = _ENV[K7('GM')]
  0122  GETTABLE  R4 = R4[K50('BIManager')]
  0123  SELF      R5 = R4[K51('LogProject')] (self)
  0124  GETTABUP  R6 = _ENV[K52('EBIProjectType')]
  0125  GETTABLE  R6 = R6[K53('IAPRestoreGem')]
  0126  MOVE      R7 = R0
  0127  CALL      R4 = call(R4, 0 args, 3 rets)
  0128  LOADBOOL  R4 = true
  0129  RETURN    return R4..R3
  0130  RETURN    return R0..R-1
; ---------- proto21 [_CanAwardForOrderId] ----------
  ; fn ?  line 494-510 np=2 va=0 ms=12 code=62 consts=19 upvals=2 protos=0
  ;   K[0]='orderId'
  ;   K[1]='StringUtil'
  ;   K[2]='IsNilOrEmpty'
  ;   K[3]='purchaseToken'
  ;   K[4]='MD5'
  ;   K[5]='Encode'
  ;   K[6]='m_dbTable'
  ;   K[7]='GetValue'
  ;   K[8]='1'
  ;   K[9]='GM'
  ;   K[10]='BIManager'
  ;   K[11]='LogErrorInfo'
  ;   K[12]='EBIType'
  ;   K[13]='NewGoogleIAPInfo'
  ;   K[14]='fakeId: '
  ;   K[15]=' info: '
  ;   K[16]='json'
  ;   K[17]='encode'
  ;   K[18]=1
  ;   upvals: _ENV, DBColumnOrderStatus
  ;   locals: self(0-62), purchaseInfo(0-62), orderId(1-62), fakeOrderId(19-51)
  0000  GETTABLE  R2 = R1[K0('orderId')]
  0001  GETTABUP  R3 = _ENV[K1('StringUtil')]
  0002  GETTABLE  R3 = R3[K2('IsNilOrEmpty')]
  0003  MOVE      R4 = R0
  0004  CALL      R3 = call(R3, 1 args, 1 rets)
  0005  TEST      if not R3 then   -> -131065
  0006  JMP       (jump)   -> 9
  0007  LOADBOOL  R3 = false
  0008  RETURN    return R3..R2
  0009  GETTABUP  R3 = _ENV[K1('StringUtil')]
  0010  GETTABLE  R3 = R3[K2('IsNilOrEmpty')]
  0011  GETTABLE  R4 = R1[K3('purchaseToken')]
  0012  CALL      R3 = call(R3, 1 args, 1 rets)
  0013  TEST      if not R3 then   -> -131056
  0014  JMP       (jump)   -> 51
  0015  GETTABUP  R3 = _ENV[K4('MD5')]
  0016  GETTABLE  R3 = R3[K5('Encode')]
  0017  GETTABLE  R4 = R1[K3('purchaseToken')]
  0018  CALL      R3 = call(R3, 1 args, 1 rets)
  0019  EQ        if R1 eq R3   -> -130024
  0020  JMP       (jump)   -> 51
  0021  GETTABLE  R4 = R0[K6('m_dbTable')]
  0022  SELF      R5 = R4[K7('GetValue')] (self)
  0023  MOVE      R6 = R0
  0024  GETUPVAL  R7 = _ENV
  0025  CALL      R4 = call(R4, 1 args, 3 rets)
  0026  EQ        if R0 eq K8('1')   -> -128732
  0027  JMP       (jump)   -> 51
  0028  GETTABUP  R4 = _ENV[K9('GM')]
  0029  TEST      if not R4 then   -> -131041
  0030  JMP       (jump)   -> 49
  0031  GETTABUP  R4 = _ENV[K9('GM')]
  0032  GETTABLE  R4 = R4[K10('BIManager')]
  0033  TEST      if not R4 then   -> -131037
  0034  JMP       (jump)   -> 49
  0035  GETTABUP  R4 = _ENV[K9('GM')]
  0036  GETTABLE  R4 = R4[K10('BIManager')]
  0037  SELF      R5 = R4[K11('LogErrorInfo')] (self)
  0038  GETTABUP  R6 = _ENV[K12('EBIType')]
  0039  GETTABLE  R6 = R6[K13('NewGoogleIAPInfo')]
  0040  LOADK     R7 = K14 'fakeId: '
  0041  MOVE      R8 = R0
  0042  LOADK     R9 = K15 ' info: '
  0043  GETTABUP  R10 = _ENV[K16('json')]
  0044  GETTABLE  R10 = R10[K17('encode')]
  0045  MOVE      R11 = R0
  0046  CALL      R10 = call(R10, 1 args, 1 rets)
  0047  CONCAT    R7 = concat(R7..R7)
  0048  CALL      R4 = call(R4, 0 args, 3 rets)
  0049  LOADBOOL  R4 = false
  0050  RETURN    return R4..R3
  0051  GETTABLE  R3 = R0[K6('m_dbTable')]
  0052  SELF      R4 = R3[K7('GetValue')] (self)
  0053  MOVE      R5 = R0
  0054  GETUPVAL  R6 = _ENV
  0055  CALL      R3 = call(R3, 1 args, 3 rets)
  0056  EQ        if R0 eq K18(1)   -> -129204
  0057  JMP       (jump)   -> 59
  0058  LOADBOOL  R3 = false
  0059  LOADBOOL  R3 = true
  0060  RETURN    return R3..R2
  0061  RETURN    return R0..R-1
; ---------- proto22 [_SetOrderIdAwarded] ----------
  ; fn ?  line 512-514 np=2 va=0 ms=7 code=7 consts=3 upvals=1 protos=0
  ;   K[0]='m_dbTable'
  ;   K[1]='Set'
  ;   K[2]=1
  ;   upvals: DBColumnOrderStatus
  ;   locals: self(0-7), orderId(0-7)
  0000  GETTABLE  R2 = R0[K0('m_dbTable')]
  0001  SELF      R3 = R2[K1('Set')] (self)
  0002  MOVE      R4 = R0
  0003  GETUPVAL  R5 = DBColumnOrderStatus
  0004  LOADK     R6 = K2 1
  0005  CALL      R2 = call(R2, 0 args, 4 rets)
  0006  RETURN    return R0..R-1
; ---------- proto23 [PopPurchaseCloseTip] ----------
  ; fn ?  line 516-521 np=1 va=0 ms=9 code=22 consts=10 upvals=1 protos=0
  ;   K[0]='GM'
  ;   K[1]='UIManager'
  ;   K[2]='OpenView'
  ;   K[3]='UIPrefabConfigName'
  ;   K[4]='GeneralMsgWindow'
  ;   K[5]='GameTextModel'
  ;   K[6]='GetText'
  ;   K[7]='purchase_close_title'
  ;   K[8]='purchase_close_desc'
  ;   K[9]='common_button_ok'
  ;   upvals: _ENV
  ;   locals: self(0-22)
  0000  GETTABUP  R1 = _ENV[K0('GM')]
  0001  GETTABLE  R1 = R1[K1('UIManager')]
  0002  SELF      R2 = R1[K2('OpenView')] (self)
  0003  GETTABUP  R3 = _ENV[K3('UIPrefabConfigName')]
  0004  GETTABLE  R3 = R3[K4('GeneralMsgWindow')]
  0005  GETTABUP  R4 = _ENV[K0('GM')]
  0006  GETTABLE  R4 = R4[K5('GameTextModel')]
  0007  SELF      R5 = R4[K6('GetText')] (self)
  0008  LOADK     R6 = K7 'purchase_close_title'
  0009  CALL      R4 = call(R4, 1 args, 2 rets)
  0010  GETTABUP  R5 = _ENV[K0('GM')]
  0011  GETTABLE  R5 = R5[K5('GameTextModel')]
  0012  SELF      R6 = R5[K6('GetText')] (self)
  0013  LOADK     R7 = K8 'purchase_close_desc'
  0014  CALL      R5 = call(R5, 1 args, 2 rets)
  0015  GETTABUP  R6 = _ENV[K0('GM')]
  0016  GETTABLE  R6 = R6[K5('GameTextModel')]
  0017  SELF      R7 = R6[K6('GetText')] (self)
  0018  LOADK     R8 = K9 'common_button_ok'
  0019  CALL      R6 = call(R6, -1 args, 2 rets)
  0020  CALL      R1 = call(R1, 0 args, -1 rets)
  0021  RETURN    return R0..R-1
; ---------- proto24 [_LogPayAction] ----------
  ; fn ?  line 524-531 np=6 va=0 ms=14 code=21 consts=7 upvals=1 protos=0
  ;   K[0]=true
  ;   K[1]='m_startTime'
  ;   K[2]=nil
  ;   K[3]='EndAndGetDur'
  ;   K[4]='GM'
  ;   K[5]='BIManager'
  ;   K[6]='LogPayAction'
  ;   upvals: _ENV
  ;   locals: self(0-21), stage(0-21), eIAPType(0-21), orderId(0-21), info(0-21), isMid(0-21), timeInterval(1-21)
  0000  LOADNIL   R6..R6 = nil
  0001  EQ        if R1 eq K0(true)   -> -128253
  0002  JMP       (jump)   -> 11
  0003  GETTABLE  R7 = R0[K1('m_startTime')]
  0004  EQ        if R1 eq K2(nil)   -> -127224
  0005  JMP       (jump)   -> 11
  0006  GETTABLE  R7 = R0[K1('m_startTime')]
  0007  SELF      R8 = R7[K3('EndAndGetDur')] (self)
  0008  CALL      R7 = call(R7, 1 args, 1 rets)
  0009  MOVE      R6 = R0
  0010  SETTABLE  R0[K1('m_startTime')] = K2(nil)
  0011  GETTABUP  R7 = _ENV[K4('GM')]
  0012  GETTABLE  R7 = R7[K5('BIManager')]
  0013  SELF      R8 = R7[K6('LogPayAction')] (self)
  0014  MOVE      R9 = R0
  0015  MOVE      R10 = R0
  0016  MOVE      R11 = R0
  0017  MOVE      R12 = R0
  0018  MOVE      R13 = R0
  0019  CALL      R7 = call(R7, 0 args, 6 rets)
  0020  RETURN    return R0..R-1
