# Model_Audio_AudioModel_7.luac
; fn @AudioModel.lua  line 0-0 np=0 va=1 ms=7 code=167 consts=63 upvals=1 protos=34
;   K[0]='AudioModel'
;   K[1]='__index'
;   K[2]='AudioType'
;   K[3]='Music'
;   K[4]=1
;   K[5]='Effect'
;   K[6]=2
;   K[7]='CookEffect'
;   K[8]=3
;   K[9]='BgEffect'
;   K[10]=4
;   K[11]='None'
;   K[12]='FadeIn'
;   K[13]='FadeOut'
;   K[14]='AudioClipCacheTable'
;   K[15]='AudioSourceCacheTable'
;   K[16]='AudioLoopEffectDataMap'
;   K[17]='AudioVolumeTable'
;   K[18]=0.75
;   K[19]='AudioMuteTable'
;   K[20]=false
;   K[21]='PrefsMuteKeys'
;   K[22]='MUSIC_MUTE'
;   K[23]='EFFECT_MUTE'
;   K[24]='AudioSourcePool'
;   K[25]='PoolCount'
;   K[26]=0
;   K[27]='UsedAudioSourceList'
;   K[28]='UnusedAudioSourceList'
;   K[29]='Init'
;   K[30]='Acquire'
;   K[31]='Release'
;   K[32]='GetAudioSource'
;   K[33]='Destroy'
;   K[34]='Update'
;   K[35]='PlayBGM'
;   K[36]='PlayEffect'
;   K[37]='StopBGM'
;   K[38]='ReplayBGM'
;   K[39]='PlayEffectLoop'
;   K[40]='StopEffectLoop'
;   K[41]='PlayEffectWithFrameLimit'
;   K[42]='StopAudio'
;   K[43]='StopAllAudio'
;   K[44]='PauseAudio'
;   K[45]='PauseAllAudio'
;   K[46]='UnPauseAudio'
;   K[47]='UnPauseAllAudio'
;   K[48]='SetAudioMute'
;   K[49]='GetAudioMute'
;   K[50]='GetAudioVolume'
;   K[51]='_PlayAudio2D'
;   K[52]='_GetDataFromPrefs'
;   K[53]='_LoadAudioClipAsync'
;   K[54]='_GetAudioSourceByType'
;   K[55]='_GetPrefsMuteKeysByType'
;   K[56]='_PlayAudioClip'
;   K[57]='AudioModel'
;   K[58]='_ClearLoopEffect'
;   K[59]='PlayCookEffect'
;   K[60]='StopCookEffect'
;   K[61]='PlayLoopBgEffect'
;   K[62]='StopLoopBgEffect'
;   upvals: _ENV
;   locals: _AudioRoot(6-167), _ClipPlayStartTimeTable(7-167), AudioType(14-167), EAudioFadeType(18-167)
0000  NEWTABLE  R0 = {} (0 items)
0001  SETTABUP  _ENV[K0('AudioModel')] = R0
0002  GETTABUP  R0 = _ENV[K0('AudioModel')]
0003  GETTABUP  R1 = _ENV[K0('AudioModel')]
0004  SETTABLE  R0[K1('__index')] = R1
0005  LOADNIL   R0..R0 = nil
0006  NEWTABLE  R1 = {} (0 items)
0007  NEWTABLE  R2 = {} (0 items)
0008  SETTABLE  R2[K3('Music')] = K4(1)
0009  SETTABLE  R2[K5('Effect')] = K6(2)
0010  SETTABLE  R2[K7('CookEffect')] = K8(3)
0011  SETTABLE  R2[K9('BgEffect')] = K10(4)
0012  SETTABUP  _ENV[K2('AudioType')] = R2
0013  GETTABUP  R2 = _ENV[K2('AudioType')]
0014  NEWTABLE  R3 = {} (0 items)
0015  SETTABLE  R3[K11('None')] = K4(1)
0016  SETTABLE  R3[K12('FadeIn')] = K6(2)
0017  SETTABLE  R3[K13('FadeOut')] = K8(3)
0018  GETTABUP  R4 = _ENV[K0('AudioModel')]
0019  NEWTABLE  R5 = {} (0 items)
0020  SETTABLE  R4[K14('AudioClipCacheTable')] = R5
0021  GETTABUP  R4 = _ENV[K0('AudioModel')]
0022  NEWTABLE  R5 = {} (0 items)
0023  SETTABLE  R4[K15('AudioSourceCacheTable')] = R5
0024  GETTABUP  R4 = _ENV[K0('AudioModel')]
0025  NEWTABLE  R5 = {} (0 items)
0026  SETTABLE  R4[K16('AudioLoopEffectDataMap')] = R5
0027  GETTABUP  R4 = _ENV[K0('AudioModel')]
0028  NEWTABLE  R5 = {} (0 items)
0029  GETTABLE  R6 = R2[K3('Music')]
0030  SETTABLE  R5[R6] = K18(0.75)
0031  GETTABLE  R6 = R2[K5('Effect')]
0032  SETTABLE  R5[R6] = K4(1)
0033  GETTABLE  R6 = R2[K7('CookEffect')]
0034  SETTABLE  R5[R6] = K4(1)
0035  GETTABLE  R6 = R2[K9('BgEffect')]
0036  SETTABLE  R5[R6] = K4(1)
0037  SETTABLE  R4[K17('AudioVolumeTable')] = R5
0038  GETTABUP  R4 = _ENV[K0('AudioModel')]
0039  NEWTABLE  R5 = {} (0 items)
0040  GETTABLE  R6 = R2[K3('Music')]
0041  SETTABLE  R5[R6] = K20(false)
0042  GETTABLE  R6 = R2[K5('Effect')]
0043  SETTABLE  R5[R6] = K20(false)
0044  GETTABLE  R6 = R2[K7('CookEffect')]
0045  SETTABLE  R5[R6] = K20(false)
0046  GETTABLE  R6 = R2[K9('BgEffect')]
0047  SETTABLE  R5[R6] = K20(false)
0048  SETTABLE  R4[K19('AudioMuteTable')] = R5
0049  GETTABUP  R4 = _ENV[K0('AudioModel')]
0050  NEWTABLE  R5 = {} (0 items)
0051  GETTABLE  R6 = R2[K3('Music')]
0052  SETTABLE  R5[R6] = K22('MUSIC_MUTE')
0053  GETTABLE  R6 = R2[K5('Effect')]
0054  SETTABLE  R5[R6] = K23('EFFECT_MUTE')
0055  GETTABLE  R6 = R2[K7('CookEffect')]
0056  SETTABLE  R5[R6] = K23('EFFECT_MUTE')
0057  GETTABLE  R6 = R2[K9('BgEffect')]
0058  SETTABLE  R5[R6] = K22('MUSIC_MUTE')
0059  SETTABLE  R4[K21('PrefsMuteKeys')] = R5
0060  GETTABUP  R4 = _ENV[K0('AudioModel')]
0061  NEWTABLE  R5 = {} (0 items)
0062  SETTABLE  R5[K25('PoolCount')] = K26(0)
0063  NEWTABLE  R6 = {} (0 items)
0064  SETTABLE  R5[K27('UsedAudioSourceList')] = R6
0065  NEWTABLE  R6 = {} (0 items)
0066  SETTABLE  R5[K28('UnusedAudioSourceList')] = R6
0067  CLOSURE   R6 = closure proto0
0068  SETTABLE  R5[K29('Init')] = R6
0069  CLOSURE   R6 = closure proto1
0070  SETTABLE  R5[K30('Acquire')] = R6
0071  CLOSURE   R6 = closure proto2
0072  SETTABLE  R5[K31('Release')] = R6
0073  CLOSURE   R6 = closure proto3
0074  SETTABLE  R5[K32('GetAudioSource')] = R6
0075  SETTABLE  R4[K24('AudioSourcePool')] = R5
0076  GETTABUP  R4 = _ENV[K0('AudioModel')]
0077  CLOSURE   R5 = closure proto4
0078  SETTABLE  R4[K29('Init')] = R5
0079  GETTABUP  R4 = _ENV[K0('AudioModel')]
0080  CLOSURE   R5 = closure proto5
0081  SETTABLE  R4[K33('Destroy')] = R5
0082  GETTABUP  R4 = _ENV[K0('AudioModel')]
0083  CLOSURE   R5 = closure proto6
0084  SETTABLE  R4[K34('Update')] = R5
0085  GETTABUP  R4 = _ENV[K0('AudioModel')]
0086  CLOSURE   R5 = closure proto7
0087  SETTABLE  R4[K35('PlayBGM')] = R5
0088  GETTABUP  R4 = _ENV[K0('AudioModel')]
0089  CLOSURE   R5 = closure proto8
0090  SETTABLE  R4[K36('PlayEffect')] = R5
0091  GETTABUP  R4 = _ENV[K0('AudioModel')]
0092  CLOSURE   R5 = closure proto9
0093  SETTABLE  R4[K37('StopBGM')] = R5
0094  GETTABUP  R4 = _ENV[K0('AudioModel')]
0095  CLOSURE   R5 = closure proto10
0096  SETTABLE  R4[K38('ReplayBGM')] = R5
0097  GETTABUP  R4 = _ENV[K0('AudioModel')]
0098  CLOSURE   R5 = closure proto11
0099  SETTABLE  R4[K39('PlayEffectLoop')] = R5
0100  GETTABUP  R4 = _ENV[K0('AudioModel')]
0101  CLOSURE   R5 = closure proto12
0102  SETTABLE  R4[K40('StopEffectLoop')] = R5
0103  GETTABUP  R4 = _ENV[K0('AudioModel')]
0104  CLOSURE   R5 = closure proto13
0105  SETTABLE  R4[K41('PlayEffectWithFrameLimit')] = R5
0106  GETTABUP  R4 = _ENV[K0('AudioModel')]
0107  CLOSURE   R5 = closure proto14
0108  SETTABLE  R4[K42('StopAudio')] = R5
0109  GETTABUP  R4 = _ENV[K0('AudioModel')]
0110  CLOSURE   R5 = closure proto15
0111  SETTABLE  R4[K43('StopAllAudio')] = R5
0112  GETTABUP  R4 = _ENV[K0('AudioModel')]
0113  CLOSURE   R5 = closure proto16
0114  SETTABLE  R4[K44('PauseAudio')] = R5
0115  GETTABUP  R4 = _ENV[K0('AudioModel')]
0116  CLOSURE   R5 = closure proto17
0117  SETTABLE  R4[K45('PauseAllAudio')] = R5
0118  GETTABUP  R4 = _ENV[K0('AudioModel')]
0119  CLOSURE   R5 = closure proto18
0120  SETTABLE  R4[K46('UnPauseAudio')] = R5
0121  GETTABUP  R4 = _ENV[K0('AudioModel')]
0122  CLOSURE   R5 = closure proto19
0123  SETTABLE  R4[K47('UnPauseAllAudio')] = R5
0124  GETTABUP  R4 = _ENV[K0('AudioModel')]
0125  CLOSURE   R5 = closure proto20
0126  SETTABLE  R4[K48('SetAudioMute')] = R5
0127  GETTABUP  R4 = _ENV[K0('AudioModel')]
0128  CLOSURE   R5 = closure proto21
0129  SETTABLE  R4[K49('GetAudioMute')] = R5
0130  GETTABUP  R4 = _ENV[K0('AudioModel')]
0131  CLOSURE   R5 = closure proto22
0132  SETTABLE  R4[K50('GetAudioVolume')] = R5
0133  GETTABUP  R4 = _ENV[K0('AudioModel')]
0134  CLOSURE   R5 = closure proto23
0135  SETTABLE  R4[K51('_PlayAudio2D')] = R5
0136  GETTABUP  R4 = _ENV[K0('AudioModel')]
0137  CLOSURE   R5 = closure proto24
0138  SETTABLE  R4[K52('_GetDataFromPrefs')] = R5
0139  GETTABUP  R4 = _ENV[K0('AudioModel')]
0140  CLOSURE   R5 = closure proto25
0141  SETTABLE  R4[K53('_LoadAudioClipAsync')] = R5
0142  GETTABUP  R4 = _ENV[K0('AudioModel')]
0143  CLOSURE   R5 = closure proto26
0144  SETTABLE  R4[K54('_GetAudioSourceByType')] = R5
0145  GETTABUP  R4 = _ENV[K0('AudioModel')]
0146  CLOSURE   R5 = closure proto27
0147  SETTABLE  R4[K55('_GetPrefsMuteKeysByType')] = R5
0148  GETTABUP  R4 = _ENV[K0('AudioModel')]
0149  CLOSURE   R5 = closure proto28
0150  SETTABLE  R4[K56('_PlayAudioClip')] = R5
0151  GETTABUP  R4 = _ENV[K57('AudioModel')]
0152  CLOSURE   R5 = closure proto29
0153  SETTABLE  R4[K58('_ClearLoopEffect')] = R5
0154  GETTABUP  R4 = _ENV[K57('AudioModel')]
0155  CLOSURE   R5 = closure proto30
0156  SETTABLE  R4[K59('PlayCookEffect')] = R5
0157  GETTABUP  R4 = _ENV[K57('AudioModel')]
0158  CLOSURE   R5 = closure proto31
0159  SETTABLE  R4[K60('StopCookEffect')] = R5
0160  GETTABUP  R4 = _ENV[K57('AudioModel')]
0161  CLOSURE   R5 = closure proto32
0162  SETTABLE  R4[K61('PlayLoopBgEffect')] = R5
0163  GETTABUP  R4 = _ENV[K57('AudioModel')]
0164  CLOSURE   R5 = closure proto33
0165  SETTABLE  R4[K62('StopLoopBgEffect')] = R5
0166  RETURN    return R0..R-1
; ---------- proto0 [Init] ----------
  ; fn ?  line 51-62 np=1 va=0 ms=11 code=36 consts=18 upvals=2 protos=0
  ;   K[0]=1
  ;   K[1]=5
  ;   K[2]='GameObject'
  ;   K[3]='name'
  ;   K[4]='AudioSource_'
  ;   K[5]='transform'
  ;   K[6]='SetParent'
  ;   K[7]='AddComponent'
  ;   K[8]='typeof'
  ;   K[9]='CS'
  ;   K[10]='UnityEngine'
  ;   K[11]='AudioSource'
  ;   K[12]='enabled'
  ;   K[13]=false
  ;   K[14]='table'
  ;   K[15]='insert'
  ;   K[16]='UnusedAudioSourceList'
  ;   K[17]='PoolCount'
  ;   upvals: _ENV, _AudioRoot
  ;   locals: self(0-36), go(1-36), audioSource(1-36), (for index)(4-35), (for limit)(4-35), (for step)(4-35), i(5-34)
  0000  LOADNIL   R1..R1 = nil
  0001  LOADK     R3 = K0 1
  0002  LOADK     R4 = K1 5
  0003  LOADK     R5 = K0 1
  0004  FORPREP   forprep R3(sBx=29)   -> 34
  0005  GETTABUP  R7 = _ENV[K2('GameObject')]
  0006  CALL      R7 = call(R7, 1 args, 0 rets)
  0007  MOVE      R1 = R0
  0008  LOADK     R7 = K4 'AudioSource_'
  0009  MOVE      R8 = R0
  0010  CONCAT    R7 = concat(R7..R7)
  0011  SETTABLE  R1[K3('name')] = R7
  0012  GETTABLE  R7 = R1[K5('transform')]
  0013  SELF      R8 = R7[K6('SetParent')] (self)
  0014  GETTABUP  R9 = _AudioRoot[K5('transform')]
  0015  LOADBOOL  R10 = false
  0016  CALL      R7 = call(R7, 0 args, 3 rets)
  0017  SELF      R8 = R1[K7('AddComponent')] (self)
  0018  GETTABUP  R9 = _ENV[K8('typeof')]
  0019  GETTABUP  R10 = _ENV[K9('CS')]
  0020  GETTABLE  R10 = R10[K10('UnityEngine')]
  0021  GETTABLE  R10 = R10[K11('AudioSource')]
  0022  CALL      R9 = call(R9, -1 args, 1 rets)
  0023  CALL      R7 = call(R7, 1 args, -1 rets)
  0024  MOVE      R2 = R0
  0025  SETTABLE  R2[K12('enabled')] = K13(false)
  0026  GETTABUP  R7 = _ENV[K14('table')]
  0027  GETTABLE  R7 = R7[K15('insert')]
  0028  GETTABLE  R8 = R0[K16('UnusedAudioSourceList')]
  0029  MOVE      R9 = R0
  0030  CALL      R7 = call(R7, 0 args, 2 rets)
  0031  GETTABLE  R7 = R0[K17('PoolCount')]
  0032  ADD       R7 = K0(1) add R7
  0033  SETTABLE  R0[K17('PoolCount')] = R7
  0034  FORLOOP   forloop R3(sBx=-30)   -> 5
  0035  RETURN    return R0..R-1
; ---------- proto1 [Acquire] ----------
  ; fn ?  line 63-80 np=2 va=0 ms=9 code=38 consts=17 upvals=2 protos=0
  ;   K[0]='UnusedAudioSourceList'
  ;   K[1]=0
  ;   K[2]='table'
  ;   K[3]='remove'
  ;   K[4]='GameObject'
  ;   K[5]='PoolCount'
  ;   K[6]=1
  ;   K[7]='name'
  ;   K[8]='AudioSource_'
  ;   K[9]='transform'
  ;   K[10]='SetParent'
  ;   K[11]='AddComponent'
  ;   K[12]='typeof'
  ;   K[13]='AudioSource'
  ;   K[14]='enabled'
  ;   K[15]=false
  ;   K[16]='UsedAudioSourceList'
  ;   upvals: _ENV, _AudioRoot
  ;   locals: self(0-38), uniqueKey(0-38), audioSource(1-38), cnt(3-38), go(15-34)
  0000  LOADNIL   R2..R2 = nil
  0001  GETTABLE  R3 = R0[K0('UnusedAudioSourceList')]
  0002  LEN       R3 = len R0
  0003  LT        if R0 lt R3   -> 520
  0004  JMP       (jump)   -> 13
  0005  GETTABLE  R4 = R0[K0('UnusedAudioSourceList')]
  0006  GETTABLE  R2 = R4[R3]
  0007  GETTABUP  R4 = _ENV[K2('table')]
  0008  GETTABLE  R4 = R4[K3('remove')]
  0009  GETTABLE  R5 = R0[K0('UnusedAudioSourceList')]
  0010  MOVE      R6 = R0
  0011  CALL      R4 = call(R4, 0 args, 2 rets)
  0012  JMP       (jump)   -> 34
  0013  GETTABUP  R4 = _ENV[K4('GameObject')]
  0014  CALL      R4 = call(R4, 1 args, 0 rets)
  0015  GETTABLE  R5 = R0[K5('PoolCount')]
  0016  ADD       R5 = K6(1) add R5
  0017  SETTABLE  R0[K5('PoolCount')] = R5
  0018  LOADK     R5 = K8 'AudioSource_'
  0019  GETTABLE  R6 = R0[K5('PoolCount')]
  0020  CONCAT    R5 = concat(R5..R5)
  0021  SETTABLE  R4[K7('name')] = R5
  0022  GETTABLE  R5 = R4[K9('transform')]
  0023  SELF      R6 = R5[K10('SetParent')] (self)
  0024  GETTABUP  R7 = _AudioRoot[K9('transform')]
  0025  LOADBOOL  R8 = false
  0026  CALL      R5 = call(R5, 0 args, 3 rets)
  0027  SELF      R6 = R4[K11('AddComponent')] (self)
  0028  GETTABUP  R7 = _ENV[K12('typeof')]
  0029  GETTABUP  R8 = _ENV[K13('AudioSource')]
  0030  CALL      R7 = call(R7, -1 args, 1 rets)
  0031  CALL      R5 = call(R5, 1 args, -1 rets)
  0032  MOVE      R2 = R0
  0033  SETTABLE  R2[K14('enabled')] = K15(false)
  0034  GETTABLE  R4 = R0[K16('UsedAudioSourceList')]
  0035  SETTABLE  R4[R1] = R2
  0036  RETURN    return R2..R1
  0037  RETURN    return R0..R-1
; ---------- proto2 [Release] ----------
  ; fn ?  line 81-88 np=2 va=0 ms=6 code=17 consts=8 upvals=1 protos=0
  ;   K[0]='UsedAudioSourceList'
  ;   K[1]=nil
  ;   K[2]='IsNull'
  ;   K[3]='enabled'
  ;   K[4]=false
  ;   K[5]='table'
  ;   K[6]='insert'
  ;   K[7]='UnusedAudioSourceList'
  ;   upvals: _ENV
  ;   locals: self(0-17), uniqueKey(0-17), audioSource(2-17)
  0000  GETTABLE  R2 = R0[K0('UsedAudioSourceList')]
  0001  GETTABLE  R2 = R2[R1]
  0002  GETTABLE  R3 = R0[K0('UsedAudioSourceList')]
  0003  SETTABLE  R3[R1] = K1(nil)
  0004  TEST      if not R2 then   -> -131066
  0005  JMP       (jump)   -> 16
  0006  SELF      R4 = R2[K2('IsNull')] (self)
  0007  CALL      R3 = call(R3, 1 args, 1 rets)
  0008  TEST      if not R3 then   -> -131061
  0009  JMP       (jump)   -> 16
  0010  SETTABLE  R2[K3('enabled')] = K4(false)
  0011  GETTABUP  R3 = _ENV[K5('table')]
  0012  GETTABLE  R3 = R3[K6('insert')]
  0013  GETTABLE  R4 = R0[K7('UnusedAudioSourceList')]
  0014  MOVE      R5 = R0
  0015  CALL      R3 = call(R3, 0 args, 2 rets)
  0016  RETURN    return R0..R-1
; ---------- proto3 [GetAudioSource] ----------
  ; fn ?  line 89-91 np=2 va=0 ms=3 code=4 consts=1 upvals=0 protos=0
  ;   K[0]='UsedAudioSourceList'
  ;   locals: self(0-4), uniqueKey(0-4)
  0000  GETTABLE  R2 = R0[K0('UsedAudioSourceList')]
  0001  GETTABLE  R2 = R2[R1]
  0002  RETURN    return R2..R1
  0003  RETURN    return R0..R-1
; ---------- proto4 [Init] ----------
  ; fn ?  line 95-118 np=1 va=0 ms=6 code=86 consts=28 upvals=3 protos=0
  ;   K[0]='m_frameId'
  ;   K[1]=0
  ;   K[2]='GameObject'
  ;   K[3]='name'
  ;   K[4]='AudioRoot'
  ;   K[5]='m_audioFader'
  ;   K[6]='AddComponent'
  ;   K[7]='typeof'
  ;   K[8]='CS'
  ;   K[9]='AudioSourceFader'
  ;   K[10]='DontDestroyOnLoad'
  ;   K[11]='Log'
  ;   K[12]='Assert'
  ;   K[13]='_AudioRoot is nil, AudioModel init failed'
  ;   K[14]='AudioSourcePool'
  ;   K[15]='Init'
  ;   K[16]='AudioSourceCacheTable'
  ;   K[17]='Music'
  ;   K[18]='Acquire'
  ;   K[19]='Effect'
  ;   K[20]='CookEffect'
  ;   K[21]='BgEffect'
  ;   K[22]='_ClearLoopEffect'
  ;   K[23]='self.AudioSourcePool:Acquire Music failed'
  ;   K[24]='self.AudioSourcePool:Acquire Effect failed'
  ;   K[25]='self.AudioSourcePool:Acquire CookEffect failed'
  ;   K[26]='self.AudioSourcePool:Acquire BgEffect failed'
  ;   K[27]='_GetDataFromPrefs'
  ;   upvals: _AudioRoot, _ENV, AudioType
  ;   locals: self(0-86)
  0000  SETTABLE  R0[K0('m_frameId')] = K1(0)
  0001  GETTABUP  R1 = _ENV[K2('GameObject')]
  0002  CALL      R1 = call(R1, 1 args, 0 rets)
  0003  SETUPVAL  _ENV = R0
  0004  SETTABUP  _AudioRoot[K3('name')] = K4('AudioRoot')
  0005  GETUPVAL  R1 = _AudioRoot
  0006  SELF      R2 = R1[K6('AddComponent')] (self)
  0007  GETTABUP  R3 = _ENV[K7('typeof')]
  0008  GETTABUP  R4 = _ENV[K8('CS')]
  0009  GETTABLE  R4 = R4[K9('AudioSourceFader')]
  0010  CALL      R3 = call(R3, -1 args, 1 rets)
  0011  CALL      R1 = call(R1, 1 args, -1 rets)
  0012  SETTABLE  R0[K5('m_audioFader')] = R1
  0013  GETTABUP  R1 = _ENV[K2('GameObject')]
  0014  GETTABLE  R1 = R1[K10('DontDestroyOnLoad')]
  0015  GETUPVAL  R2 = _AudioRoot
  0016  CALL      R1 = call(R1, 0 args, 1 rets)
  0017  GETTABUP  R1 = _ENV[K11('Log')]
  0018  GETTABLE  R1 = R1[K12('Assert')]
  0019  GETUPVAL  R2 = _AudioRoot
  0020  LOADK     R3 = K13 '_AudioRoot is nil, AudioModel init failed'
  0021  CALL      R1 = call(R1, 0 args, 2 rets)
  0022  GETTABLE  R1 = R0[K14('AudioSourcePool')]
  0023  SELF      R2 = R1[K15('Init')] (self)
  0024  CALL      R1 = call(R1, 0 args, 1 rets)
  0025  GETTABLE  R1 = R0[K16('AudioSourceCacheTable')]
  0026  GETTABUP  R2 = AudioType[K17('Music')]
  0027  GETTABLE  R3 = R0[K14('AudioSourcePool')]
  0028  SELF      R4 = R3[K18('Acquire')] (self)
  0029  GETTABUP  R5 = AudioType[K17('Music')]
  0030  CALL      R3 = call(R3, 1 args, 2 rets)
  0031  SETTABLE  R1[R2] = R3
  0032  GETTABLE  R1 = R0[K16('AudioSourceCacheTable')]
  0033  GETTABUP  R2 = AudioType[K19('Effect')]
  0034  GETTABLE  R3 = R0[K14('AudioSourcePool')]
  0035  SELF      R4 = R3[K18('Acquire')] (self)
  0036  GETTABUP  R5 = AudioType[K19('Effect')]
  0037  CALL      R3 = call(R3, 1 args, 2 rets)
  0038  SETTABLE  R1[R2] = R3
  0039  GETTABLE  R1 = R0[K16('AudioSourceCacheTable')]
  0040  GETTABUP  R2 = AudioType[K20('CookEffect')]
  0041  GETTABLE  R3 = R0[K14('AudioSourcePool')]
  0042  SELF      R4 = R3[K18('Acquire')] (self)
  0043  GETTABUP  R5 = AudioType[K20('CookEffect')]
  0044  CALL      R3 = call(R3, 1 args, 2 rets)
  0045  SETTABLE  R1[R2] = R3
  0046  GETTABLE  R1 = R0[K16('AudioSourceCacheTable')]
  0047  GETTABUP  R2 = AudioType[K21('BgEffect')]
  0048  GETTABLE  R3 = R0[K14('AudioSourcePool')]
  0049  SELF      R4 = R3[K18('Acquire')] (self)
  0050  GETTABUP  R5 = AudioType[K21('BgEffect')]
  0051  CALL      R3 = call(R3, 1 args, 2 rets)
  0052  SETTABLE  R1[R2] = R3
  0053  SELF      R2 = R0[K22('_ClearLoopEffect')] (self)
  0054  CALL      R1 = call(R1, 0 args, 1 rets)
  0055  GETTABUP  R1 = _ENV[K11('Log')]
  0056  GETTABLE  R1 = R1[K12('Assert')]
  0057  GETTABLE  R2 = R0[K16('AudioSourceCacheTable')]
  0058  GETTABUP  R3 = AudioType[K17('Music')]
  0059  GETTABLE  R2 = R2[R3]
  0060  LOADK     R3 = K23 'self.AudioSourcePool:Acquire Music failed'
  0061  CALL      R1 = call(R1, 0 args, 2 rets)
  0062  GETTABUP  R1 = _ENV[K11('Log')]
  0063  GETTABLE  R1 = R1[K12('Assert')]
  0064  GETTABLE  R2 = R0[K16('AudioSourceCacheTable')]
  0065  GETTABUP  R3 = AudioType[K19('Effect')]
  0066  GETTABLE  R2 = R2[R3]
  0067  LOADK     R3 = K24 'self.AudioSourcePool:Acquire Effect failed'
  0068  CALL      R1 = call(R1, 0 args, 2 rets)
  0069  GETTABUP  R1 = _ENV[K11('Log')]
  0070  GETTABLE  R1 = R1[K12('Assert')]
  0071  GETTABLE  R2 = R0[K16('AudioSourceCacheTable')]
  0072  GETTABUP  R3 = AudioType[K20('CookEffect')]
  0073  GETTABLE  R2 = R2[R3]
  0074  LOADK     R3 = K25 'self.AudioSourcePool:Acquire CookEffect failed'
  0075  CALL      R1 = call(R1, 0 args, 2 rets)
  0076  GETTABUP  R1 = _ENV[K11('Log')]
  0077  GETTABLE  R1 = R1[K12('Assert')]
  0078  GETTABLE  R2 = R0[K16('AudioSourceCacheTable')]
  0079  GETTABUP  R3 = AudioType[K21('BgEffect')]
  0080  GETTABLE  R2 = R2[R3]
  0081  LOADK     R3 = K26 'self.AudioSourcePool:Acquire BgEffect failed'
  0082  CALL      R1 = call(R1, 0 args, 2 rets)
  0083  SELF      R2 = R0[K27('_GetDataFromPrefs')] (self)
  0084  CALL      R1 = call(R1, 0 args, 1 rets)
  0085  RETURN    return R0..R-1
; ---------- proto5 [Destroy] ----------
  ; fn ?  line 120-125 np=1 va=0 ms=3 code=9 consts=1 upvals=1 protos=0
  ;   K[0]='RemoveSelf'
  ;   upvals: _AudioRoot
  ;   locals: self(0-9)
  0000  GETUPVAL  R1 = _AudioRoot
  0001  TEST      if not R1 then   -> -131069
  0002  JMP       (jump)   -> 8
  0003  GETUPVAL  R1 = _AudioRoot
  0004  SELF      R2 = R1[K0('RemoveSelf')] (self)
  0005  CALL      R1 = call(R1, 0 args, 1 rets)
  0006  LOADNIL   R1..R1 = nil
  0007  SETUPVAL  UP1 = R0
  0008  RETURN    return R0..R-1
; ---------- proto6 [Update] ----------
  ; fn ?  line 127-131 np=1 va=0 ms=2 code=7 consts=2 upvals=0 protos=0
  ;   K[0]='m_frameId'
  ;   K[1]=1
  ;   locals: self(0-7)
  0000  GETTABLE  R1 = R0[K0('m_frameId')]
  0001  TEST      if not R1 then   -> -131069
  0002  JMP       (jump)   -> 6
  0003  GETTABLE  R1 = R0[K0('m_frameId')]
  0004  ADD       R1 = K1(1) add R1
  0005  SETTABLE  R0[K0('m_frameId')] = R1
  0006  RETURN    return R0..R-1
; ---------- proto7 [PlayBGM] ----------
  ; fn ?  line 134-138 np=3 va=0 ms=10 code=13 consts=5 upvals=1 protos=0
  ;   K[0]=nil
  ;   K[1]='_PlayAudio2D'
  ;   K[2]='Music'
  ;   K[3]='m_bPlayingBGM'
  ;   K[4]=true
  ;   upvals: AudioType
  ;   locals: self(0-13), url(0-13), loop(0-13)
  0000  EQ        if R0 eq K0(nil)   -> -129790
  0001  JMP       (jump)   -> 5
  0002  LOADBOOL  R3 = true
  0003  TESTSET   if R1 then R2   -> -129530
  0004  JMP       (jump)   -> 5
  0005  SELF      R4 = R0[K1('_PlayAudio2D')] (self)
  0006  MOVE      R5 = R0
  0007  GETTABUP  R6 = AudioType[K2('Music')]
  0008  MOVE      R7 = R0
  0009  LOADNIL   R8..R8 = nil
  0010  CALL      R3 = call(R3, 0 args, 6 rets)
  0011  SETTABLE  R0[K3('m_bPlayingBGM')] = K4(true)
  0012  RETURN    return R0..R-1
; ---------- proto8 [PlayEffect] ----------
  ; fn ?  line 140-142 np=2 va=0 ms=9 code=7 consts=2 upvals=1 protos=0
  ;   K[0]='_PlayAudio2D'
  ;   K[1]='Effect'
  ;   upvals: AudioType
  ;   locals: self(0-7), url(0-7)
  0000  SELF      R3 = R0[K0('_PlayAudio2D')] (self)
  0001  MOVE      R4 = R0
  0002  GETTABUP  R5 = AudioType[K1('Effect')]
  0003  LOADBOOL  R6 = false
  0004  LOADNIL   R7..R7 = nil
  0005  CALL      R2 = call(R2, 0 args, 6 rets)
  0006  RETURN    return R0..R-1
; ---------- proto9 [StopBGM] ----------
  ; fn ?  line 144-150 np=1 va=0 ms=4 code=12 consts=7 upvals=1 protos=0
  ;   K[0]='m_bPlayingBGM'
  ;   K[1]=false
  ;   K[2]='_GetAudioSourceByType'
  ;   K[3]='Music'
  ;   K[4]='Stop'
  ;   K[5]='clip'
  ;   K[6]=nil
  ;   upvals: AudioType
  ;   locals: self(0-12), source(8-12)
  0000  GETTABLE  R1 = R0[K0('m_bPlayingBGM')]
  0001  TEST      if not R1 then   -> -131068
  0002  JMP       (jump)   -> 4
  0003  RETURN    return R0..R-1
  0004  SETTABLE  R0[K0('m_bPlayingBGM')] = K1(false)
  0005  SELF      R2 = R0[K2('_GetAudioSourceByType')] (self)
  0006  GETTABUP  R3 = AudioType[K3('Music')]
  0007  CALL      R1 = call(R1, 1 args, 2 rets)
  0008  SELF      R3 = R1[K4('Stop')] (self)
  0009  CALL      R2 = call(R2, 0 args, 1 rets)
  0010  SETTABLE  R1[K5('clip')] = K6(nil)
  0011  RETURN    return R0..R-1
; ---------- proto10 [ReplayBGM] ----------
  ; fn ?  line 152-157 np=1 va=0 ms=4 code=11 consts=5 upvals=1 protos=0
  ;   K[0]='m_bPlayingBGM'
  ;   K[1]=true
  ;   K[2]='_GetAudioSourceByType'
  ;   K[3]='Music'
  ;   K[4]='Play'
  ;   upvals: AudioType
  ;   locals: self(0-11), source(8-11)
  0000  GETTABLE  R1 = R0[K0('m_bPlayingBGM')]
  0001  TEST      if not R1 then   -> -131069
  0002  JMP       (jump)   -> 4
  0003  RETURN    return R0..R-1
  0004  SETTABLE  R0[K0('m_bPlayingBGM')] = K1(true)
  0005  SELF      R2 = R0[K2('_GetAudioSourceByType')] (self)
  0006  GETTABUP  R3 = AudioType[K3('Music')]
  0007  CALL      R1 = call(R1, 1 args, 2 rets)
  0008  SELF      R3 = R1[K4('Play')] (self)
  0009  CALL      R2 = call(R2, 0 args, 1 rets)
  0010  RETURN    return R0..R-1
; ---------- proto11 [PlayEffectLoop] ----------
  ; fn ?  line 163-209 np=4 va=0 ms=12 code=52 consts=20 upvals=3 protos=2
  ;   K[0]='AudioLoopEffectDataMap'
  ;   K[1]=nil
  ;   K[2]=0.1
  ;   K[3]='AudioSourcePool'
  ;   K[4]='Acquire'
  ;   K[5]='playOnAwake'
  ;   K[6]=true
  ;   K[7]='spatialBlend'
  ;   K[8]=0
  ;   K[9]='enabled'
  ;   K[10]='mute'
  ;   K[11]='AudioMuteTable'
  ;   K[12]='Effect'
  ;   K[13]='volume'
  ;   K[14]='AudioVolumeTable'
  ;   K[15]=1
  ;   K[16]='AudioClipCacheTable'
  ;   K[17]='audioSource'
  ;   K[18]='IsNull'
  ;   K[19]='_LoadAudioClipAsync'
  ;   upvals: AudioType, EAudioFadeType, _ENV
  ;   locals: self(0-52), url(0-52), ownedObject(0-52), mixInterval(0-52), audioSource(12-52), firstLoop(30-52), loopPlay(31-52), ac(33-52)
  0000  GETTABLE  R4 = R0[K0('AudioLoopEffectDataMap')]
  0001  GETTABLE  R4 = R4[R2]
  0002  EQ        if R1 eq K1(nil)   -> -128763
  0003  JMP       (jump)   -> 5
  0004  RETURN    return R0..R-1
  0005  TEST      if not R3 then   -> -131064
  0006  JMP       (jump)   -> 8
  0007  LOADK     R3 = K2 0.1
  0008  GETTABLE  R4 = R0[K3('AudioSourcePool')]
  0009  SELF      R5 = R4[K4('Acquire')] (self)
  0010  MOVE      R6 = R0
  0011  CALL      R4 = call(R4, 1 args, 2 rets)
  0012  SETTABLE  R4[K5('playOnAwake')] = K6(true)
  0013  SETTABLE  R4[K7('spatialBlend')] = K8(0)
  0014  SETTABLE  R4[K9('enabled')] = K6(true)
  0015  GETTABLE  R5 = R0[K11('AudioMuteTable')]
  0016  GETTABUP  R6 = AudioType[K12('Effect')]
  0017  GETTABLE  R5 = R5[R6]
  0018  TEST      if not R5 then   -> -131051
  0019  JMP       (jump)   -> 21
  0020  LOADBOOL  R5 = false
  0021  SETTABLE  R4[K10('mute')] = R5
  0022  GETTABLE  R5 = R0[K14('AudioVolumeTable')]
  0023  GETTABUP  R6 = AudioType[K12('Effect')]
  0024  GETTABLE  R5 = R5[R6]
  0025  TEST      if not R5 then   -> -131044
  0026  JMP       (jump)   -> 28
  0027  LOADK     R5 = K15 1
  0028  SETTABLE  R4[K13('volume')] = R5
  0029  LOADBOOL  R5 = true
  0030  CLOSURE   R6 = closure proto0
  0031  GETTABLE  R7 = R0[K16('AudioClipCacheTable')]
  0032  GETTABLE  R7 = R7[R1]
  0033  GETTABLE  R8 = R0[K0('AudioLoopEffectDataMap')]
  0034  NEWTABLE  R9 = {} (0 items)
  0035  SETTABLE  R9[K17('audioSource')] = R4
  0036  SETTABLE  R8[R2] = R9
  0037  TEST      if not R7 then   -> -131033
  0038  JMP       (jump)   -> 47
  0039  SELF      R9 = R7[K18('IsNull')] (self)
  0040  CALL      R8 = call(R8, 1 args, 1 rets)
  0041  TEST      if not R8 then   -> -131028
  0042  JMP       (jump)   -> 47
  0043  MOVE      R8 = R0
  0044  MOVE      R9 = R0
  0045  CALL      R8 = call(R8, 0 args, 1 rets)
  0046  JMP       (jump)   -> 51
  0047  SELF      R9 = R0[K19('_LoadAudioClipAsync')] (self)
  0048  MOVE      R10 = R0
  0049  CLOSURE   R11 = closure proto1
  0050  CALL      R8 = call(R8, 0 args, 3 rets)
  0051  RETURN    return R0..R-1
  ; ---------- proto0 [audioSource] ----------
    ; fn ?  line 178-194 np=1 va=0 ms=8 code=26 consts=9 upvals=9 protos=1
    ;   K[0]='AudioLoopEffectDataMap'
    ;   K[1]=nil
    ;   K[2]='Scheduler'
    ;   K[3]='Schedule'
    ;   K[4]='length'
    ;   K[5]='RepeatForever'
    ;   K[6]=0
    ;   K[7]='audioSource'
    ;   K[8]='scheduler'
    ;   upvals: self, ownedObject, firstLoop, EAudioFadeType, AudioType, audioSource, url, _ENV, mixInterval
    ;   locals: ac(0-26), playCallback(7-26)
    0000  GETTABUP  R1 = self[K0('AudioLoopEffectDataMap')]
    0001  GETUPVAL  R2 = self
    0002  GETTABLE  R1 = R1[R2]
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 6
    0005  RETURN    return R0..R-1
    0006  CLOSURE   R1 = closure proto0
    0007  GETTABUP  R2 = _ENV[K2('Scheduler')]
    0008  GETTABLE  R2 = R2[K3('Schedule')]
    0009  MOVE      R3 = R0
    0010  GETUPVAL  R4 = self
    0011  GETTABLE  R5 = R0[K4('length')]
    0012  GETUPVAL  R6 = self
    0013  SUB       R5 = R6 sub R5
    0014  GETTABUP  R6 = _ENV[K2('Scheduler')]
    0015  GETTABLE  R6 = R6[K5('RepeatForever')]
    0016  LOADK     R7 = K6 0
    0017  CALL      R2 = call(R2, 0 args, 5 rets)
    0018  GETTABUP  R2 = self[K0('AudioLoopEffectDataMap')]
    0019  GETUPVAL  R3 = self
    0020  NEWTABLE  R4 = {} (0 items)
    0021  GETUPVAL  R5 = self
    0022  SETTABLE  R4[K7('audioSource')] = R5
    0023  SETTABLE  R4[K8('scheduler')] = R1
    0024  SETTABLE  R2[R3] = R4
    0025  RETURN    return R0..R-1
    ; ---------- proto0 [] ----------
      ; fn ?  line 184-188 np=0 va=0 ms=9 code=19 consts=4 upvals=7 protos=0
      ;   K[0]='FadeIn'
      ;   K[1]='None'
      ;   K[2]='_PlayAudioClip'
      ;   K[3]='Effect'
      ;   upvals: firstLoop, EAudioFadeType, self, AudioType, audioSource, ac, url
      ;   locals: eFadeType(7-19)
      0000  GETUPVAL  R0 = firstLoop
      0001  TEST      if not R0 then   -> -131069
      0002  JMP       (jump)   -> 6
      0003  GETTABUP  R0 = EAudioFadeType[K0('FadeIn')]
      0004  TEST      if not R0 then   -> -131065
      0005  JMP       (jump)   -> 7
      0006  GETTABUP  R0 = EAudioFadeType[K1('None')]
      0007  GETUPVAL  R1 = firstLoop
      0008  SELF      R2 = R1[K2('_PlayAudioClip')] (self)
      0009  GETTABUP  R3 = AudioType[K3('Effect')]
      0010  GETUPVAL  R4 = firstLoop
      0011  GETUPVAL  R5 = firstLoop
      0012  GETUPVAL  R6 = firstLoop
      0013  LOADNIL   R7..R7 = nil
      0014  MOVE      R8 = R0
      0015  CALL      R1 = call(R1, 0 args, 7 rets)
      0016  LOADBOOL  R1 = false
      0017  SETUPVAL  EAudioFadeType = R0
      0018  RETURN    return R0..R-1
  ; ---------- proto1 [] ----------
    ; fn ?  line 205-207 np=1 va=0 ms=3 code=4 consts=0 upvals=1 protos=0
    ;   upvals: loopPlay
    ;   locals: ac(0-4)
    0000  GETUPVAL  R1 = loopPlay
    0001  MOVE      R2 = R0
    0002  CALL      R1 = call(R1, 0 args, 1 rets)
    0003  RETURN    return R0..R-1
; ---------- proto12 [StopEffectLoop] ----------
  ; fn ?  line 211-224 np=2 va=0 ms=6 code=32 consts=10 upvals=1 protos=0
  ;   K[0]='AudioLoopEffectDataMap'
  ;   K[1]=nil
  ;   K[2]='audioSource'
  ;   K[3]='IsNull'
  ;   K[4]='Stop'
  ;   K[5]='scheduler'
  ;   K[6]='Scheduler'
  ;   K[7]='Unschedule'
  ;   K[8]='AudioSourcePool'
  ;   K[9]='Release'
  ;   upvals: _ENV
  ;   locals: self(0-32), ownedObject(0-32), data(6-31)
  0000  GETTABLE  R2 = R0[K0('AudioLoopEffectDataMap')]
  0001  GETTABLE  R2 = R2[R1]
  0002  EQ        if R1 eq K1(nil)   -> -129787
  0003  JMP       (jump)   -> 31
  0004  GETTABLE  R2 = R0[K0('AudioLoopEffectDataMap')]
  0005  GETTABLE  R2 = R2[R1]
  0006  GETTABLE  R3 = R2[K2('audioSource')]
  0007  TEST      if not R3 then   -> -131063
  0008  JMP       (jump)   -> 17
  0009  GETTABLE  R3 = R2[K2('audioSource')]
  0010  SELF      R4 = R3[K3('IsNull')] (self)
  0011  CALL      R3 = call(R3, 1 args, 1 rets)
  0012  TEST      if not R3 then   -> -131057
  0013  JMP       (jump)   -> 17
  0014  GETTABLE  R3 = R2[K2('audioSource')]
  0015  SELF      R4 = R3[K4('Stop')] (self)
  0016  CALL      R3 = call(R3, 0 args, 1 rets)
  0017  GETTABLE  R3 = R2[K5('scheduler')]
  0018  TEST      if not R3 then   -> -131052
  0019  JMP       (jump)   -> 25
  0020  GETTABUP  R3 = _ENV[K6('Scheduler')]
  0021  GETTABLE  R3 = R3[K7('Unschedule')]
  0022  GETTABLE  R4 = R2[K5('scheduler')]
  0023  MOVE      R5 = R0
  0024  CALL      R3 = call(R3, 0 args, 2 rets)
  0025  GETTABLE  R3 = R0[K8('AudioSourcePool')]
  0026  SELF      R4 = R3[K9('Release')] (self)
  0027  MOVE      R5 = R0
  0028  CALL      R3 = call(R3, 0 args, 2 rets)
  0029  GETTABLE  R3 = R0[K0('AudioLoopEffectDataMap')]
  0030  SETTABLE  R3[R1] = K1(nil)
  0031  RETURN    return R0..R-1
; ---------- proto13 [PlayEffectWithFrameLimit] ----------
  ; fn ?  line 226-234 np=3 va=0 ms=9 code=19 consts=5 upvals=2 protos=0
  ;   K[0]='IsString'
  ;   K[1]='tonumber'
  ;   K[2]=1
  ;   K[3]='_PlayAudio2D'
  ;   K[4]='Effect'
  ;   upvals: _ENV, AudioType
  ;   locals: self(0-19), url(0-19), numLimit(0-19)
  0000  GETTABUP  R3 = _ENV[K0('IsString')]
  0001  MOVE      R4 = R0
  0002  CALL      R3 = call(R3, 1 args, 1 rets)
  0003  TEST      if not R3 then   -> -131067
  0004  JMP       (jump)   -> 9
  0005  GETTABUP  R3 = _ENV[K1('tonumber')]
  0006  MOVE      R4 = R0
  0007  CALL      R3 = call(R3, 1 args, 1 rets)
  0008  MOVE      R2 = R0
  0009  TEST      if not R2 then   -> -131060
  0010  JMP       (jump)   -> 12
  0011  LOADK     R2 = K2 1
  0012  SELF      R4 = R0[K3('_PlayAudio2D')] (self)
  0013  MOVE      R5 = R0
  0014  GETTABUP  R6 = AudioType[K4('Effect')]
  0015  LOADBOOL  R7 = false
  0016  MOVE      R8 = R0
  0017  CALL      R3 = call(R3, 0 args, 5 rets)
  0018  RETURN    return R0..R-1
; ---------- proto14 [StopAudio] ----------
  ; fn ?  line 236-243 np=2 va=0 ms=5 code=11 consts=4 upvals=1 protos=0
  ;   K[0]='_GetAudioSourceByType'
  ;   K[1]='Stop'
  ;   K[2]='Effect'
  ;   K[3]='_ClearLoopEffect'
  ;   upvals: AudioType
  ;   locals: self(0-11), audioType(0-11), audioSource(3-11)
  0000  SELF      R3 = R0[K0('_GetAudioSourceByType')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  SELF      R4 = R2[K1('Stop')] (self)
  0004  CALL      R3 = call(R3, 0 args, 1 rets)
  0005  GETTABUP  R3 = AudioType[K2('Effect')]
  0006  EQ        if R0 eq R3   -> -130549
  0007  JMP       (jump)   -> 10
  0008  SELF      R4 = R0[K3('_ClearLoopEffect')] (self)
  0009  CALL      R3 = call(R3, 0 args, 1 rets)
  0010  RETURN    return R0..R-1
; ---------- proto15 [StopAllAudio] ----------
  ; fn ?  line 245-251 np=1 va=0 ms=8 code=11 consts=4 upvals=1 protos=0
  ;   K[0]='pairs'
  ;   K[1]='AudioSourceCacheTable'
  ;   K[2]='Stop'
  ;   K[3]='_ClearLoopEffect'
  ;   upvals: _ENV
  ;   locals: self(0-11), (for generator)(3-8), (for state)(3-8), (for control)(3-8), _(4-6), audioSource(4-6)
  0000  GETTABUP  R1 = _ENV[K0('pairs')]
  0001  GETTABLE  R2 = R0[K1('AudioSourceCacheTable')]
  0002  CALL      R1 = call(R1, 3 args, 1 rets)
  0003  JMP       (jump)   -> 6
  0004  SELF      R7 = R5[K2('Stop')] (self)
  0005  CALL      R6 = call(R6, 0 args, 1 rets)
  0006  TFORCALL  tforcall R1
  0007  TFORLOOP  tforloop R3(sBx=-4)   -> 4
  0008  SELF      R2 = R0[K3('_ClearLoopEffect')] (self)
  0009  CALL      R1 = call(R1, 0 args, 1 rets)
  0010  RETURN    return R0..R-1
; ---------- proto16 [PauseAudio] ----------
  ; fn ?  line 253-263 np=2 va=0 ms=10 code=22 consts=8 upvals=2 protos=0
  ;   K[0]='_GetAudioSourceByType'
  ;   K[1]='Pause'
  ;   K[2]='Effect'
  ;   K[3]='pairs'
  ;   K[4]='AudioLoopEffectDataMap'
  ;   K[5]='audioSource'
  ;   K[6]='Scheduler'
  ;   K[7]='PauseTarget'
  ;   upvals: AudioType, _ENV
  ;   locals: self(0-22), audioType(0-22), audioSource(3-22), (for generator)(11-17), (for state)(11-17), (for control)(11-17), object(12-15), data(12-15)
  0000  SELF      R3 = R0[K0('_GetAudioSourceByType')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  SELF      R4 = R2[K1('Pause')] (self)
  0004  CALL      R3 = call(R3, 0 args, 1 rets)
  0005  GETTABUP  R3 = AudioType[K2('Effect')]
  0006  EQ        if R0 eq R3   -> -130549
  0007  JMP       (jump)   -> 21
  0008  GETTABUP  R3 = _ENV[K3('pairs')]
  0009  GETTABLE  R4 = R0[K4('AudioLoopEffectDataMap')]
  0010  CALL      R3 = call(R3, 3 args, 1 rets)
  0011  JMP       (jump)   -> 15
  0012  GETTABLE  R8 = R7[K5('audioSource')]
  0013  SELF      R9 = R8[K1('Pause')] (self)
  0014  CALL      R8 = call(R8, 0 args, 1 rets)
  0015  TFORCALL  tforcall R3
  0016  TFORLOOP  tforloop R5(sBx=-5)   -> 12
  0017  GETTABUP  R3 = _ENV[K6('Scheduler')]
  0018  GETTABLE  R3 = R3[K7('PauseTarget')]
  0019  MOVE      R4 = R0
  0020  CALL      R3 = call(R3, 0 args, 1 rets)
  0021  RETURN    return R0..R-1
; ---------- proto17 [PauseAllAudio] ----------
  ; fn ?  line 265-275 np=1 va=0 ms=8 code=22 consts=7 upvals=1 protos=0
  ;   K[0]='pairs'
  ;   K[1]='AudioSourceCacheTable'
  ;   K[2]='Pause'
  ;   K[3]='AudioLoopEffectDataMap'
  ;   K[4]='audioSource'
  ;   K[5]='Scheduler'
  ;   K[6]='PauseTarget'
  ;   upvals: _ENV
  ;   locals: self(0-22), (for generator)(3-8), (for state)(3-8), (for control)(3-8), _(4-6), audioSource(4-6), (for generator)(11-17), (for state)(11-17), (for control)(11-17), object(12-15), data(12-15)
  0000  GETTABUP  R1 = _ENV[K0('pairs')]
  0001  GETTABLE  R2 = R0[K1('AudioSourceCacheTable')]
  0002  CALL      R1 = call(R1, 3 args, 1 rets)
  0003  JMP       (jump)   -> 6
  0004  SELF      R7 = R5[K2('Pause')] (self)
  0005  CALL      R6 = call(R6, 0 args, 1 rets)
  0006  TFORCALL  tforcall R1
  0007  TFORLOOP  tforloop R3(sBx=-4)   -> 4
  0008  GETTABUP  R1 = _ENV[K0('pairs')]
  0009  GETTABLE  R2 = R0[K3('AudioLoopEffectDataMap')]
  0010  CALL      R1 = call(R1, 3 args, 1 rets)
  0011  JMP       (jump)   -> 15
  0012  GETTABLE  R6 = R5[K4('audioSource')]
  0013  SELF      R7 = R6[K2('Pause')] (self)
  0014  CALL      R6 = call(R6, 0 args, 1 rets)
  0015  TFORCALL  tforcall R1
  0016  TFORLOOP  tforloop R3(sBx=-5)   -> 12
  0017  GETTABUP  R1 = _ENV[K5('Scheduler')]
  0018  GETTABLE  R1 = R1[K6('PauseTarget')]
  0019  MOVE      R2 = R0
  0020  CALL      R1 = call(R1, 0 args, 1 rets)
  0021  RETURN    return R0..R-1
; ---------- proto18 [UnPauseAudio] ----------
  ; fn ?  line 277-286 np=2 va=0 ms=9 code=22 consts=8 upvals=2 protos=0
  ;   K[0]='_GetAudioSourceByType'
  ;   K[1]='UnPause'
  ;   K[2]='Effect'
  ;   K[3]='pairs'
  ;   K[4]='AudioLoopEffectDataMap'
  ;   K[5]='audioSource'
  ;   K[6]='Scheduler'
  ;   K[7]='ResumeTarget'
  ;   upvals: AudioType, _ENV
  ;   locals: self(0-22), audioType(0-22), (for generator)(11-17), (for state)(11-17), (for control)(11-17), object(12-15), data(12-15)
  0000  SELF      R3 = R0[K0('_GetAudioSourceByType')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  SELF      R3 = R2[K1('UnPause')] (self)
  0004  CALL      R2 = call(R2, 0 args, 1 rets)
  0005  GETTABUP  R2 = AudioType[K2('Effect')]
  0006  EQ        if R0 eq R2   -> -130550
  0007  JMP       (jump)   -> 21
  0008  GETTABUP  R2 = _ENV[K3('pairs')]
  0009  GETTABLE  R3 = R0[K4('AudioLoopEffectDataMap')]
  0010  CALL      R2 = call(R2, 3 args, 1 rets)
  0011  JMP       (jump)   -> 15
  0012  GETTABLE  R7 = R6[K5('audioSource')]
  0013  SELF      R8 = R7[K1('UnPause')] (self)
  0014  CALL      R7 = call(R7, 0 args, 1 rets)
  0015  TFORCALL  tforcall R2
  0016  TFORLOOP  tforloop R4(sBx=-5)   -> 12
  0017  GETTABUP  R2 = _ENV[K6('Scheduler')]
  0018  GETTABLE  R2 = R2[K7('ResumeTarget')]
  0019  MOVE      R3 = R0
  0020  CALL      R2 = call(R2, 0 args, 1 rets)
  0021  RETURN    return R0..R-1
; ---------- proto19 [UnPauseAllAudio] ----------
  ; fn ?  line 288-298 np=1 va=0 ms=8 code=22 consts=7 upvals=1 protos=0
  ;   K[0]='pairs'
  ;   K[1]='AudioSourceCacheTable'
  ;   K[2]='UnPause'
  ;   K[3]='AudioLoopEffectDataMap'
  ;   K[4]='audioSource'
  ;   K[5]='Scheduler'
  ;   K[6]='ResumeTarget'
  ;   upvals: _ENV
  ;   locals: self(0-22), (for generator)(3-8), (for state)(3-8), (for control)(3-8), _(4-6), audioSource(4-6), (for generator)(11-17), (for state)(11-17), (for control)(11-17), object(12-15), data(12-15)
  0000  GETTABUP  R1 = _ENV[K0('pairs')]
  0001  GETTABLE  R2 = R0[K1('AudioSourceCacheTable')]
  0002  CALL      R1 = call(R1, 3 args, 1 rets)
  0003  JMP       (jump)   -> 6
  0004  SELF      R7 = R5[K2('UnPause')] (self)
  0005  CALL      R6 = call(R6, 0 args, 1 rets)
  0006  TFORCALL  tforcall R1
  0007  TFORLOOP  tforloop R3(sBx=-4)   -> 4
  0008  GETTABUP  R1 = _ENV[K0('pairs')]
  0009  GETTABLE  R2 = R0[K3('AudioLoopEffectDataMap')]
  0010  CALL      R1 = call(R1, 3 args, 1 rets)
  0011  JMP       (jump)   -> 15
  0012  GETTABLE  R6 = R5[K4('audioSource')]
  0013  SELF      R7 = R6[K2('UnPause')] (self)
  0014  CALL      R6 = call(R6, 0 args, 1 rets)
  0015  TFORCALL  tforcall R1
  0016  TFORLOOP  tforloop R3(sBx=-5)   -> 12
  0017  GETTABUP  R1 = _ENV[K5('Scheduler')]
  0018  GETTABLE  R1 = R1[K6('ResumeTarget')]
  0019  MOVE      R2 = R0
  0020  CALL      R1 = call(R1, 0 args, 1 rets)
  0021  RETURN    return R0..R-1
; ---------- proto20 [SetAudioMute] ----------
  ; fn ?  line 300-319 np=4 va=0 ms=11 code=50 consts=15 upvals=2 protos=0
  ;   K[0]='_GetAudioSourceByType'
  ;   K[1]='mute'
  ;   K[2]='Effect'
  ;   K[3]='pairs'
  ;   K[4]='AudioLoopEffectDataMap'
  ;   K[5]='audioSource'
  ;   K[6]='CookEffect'
  ;   K[7]='AudioMuteTable'
  ;   K[8]='Music'
  ;   K[9]='BgEffect'
  ;   K[10]='PlayerPrefs'
  ;   K[11]='SetInt'
  ;   K[12]='_GetPrefsMuteKeysByType'
  ;   K[13]=1
  ;   K[14]=0
  ;   upvals: AudioType, _ENV
  ;   locals: self(0-50), audioType(0-50), isMute(0-50), isSave(0-50), audioSource(3-50), (for generator)(10-15), (for state)(10-15), (for control)(10-15), object(11-13), data(11-13)
  0000  SELF      R5 = R0[K0('_GetAudioSourceByType')] (self)
  0001  MOVE      R6 = R0
  0002  CALL      R4 = call(R4, 1 args, 2 rets)
  0003  SETTABLE  R4[K1('mute')] = R2
  0004  GETTABUP  R5 = AudioType[K2('Effect')]
  0005  EQ        if R0 eq R5   -> -130548
  0006  JMP       (jump)   -> 23
  0007  GETTABUP  R5 = _ENV[K3('pairs')]
  0008  GETTABLE  R6 = R0[K4('AudioLoopEffectDataMap')]
  0009  CALL      R5 = call(R5, 3 args, 1 rets)
  0010  JMP       (jump)   -> 13
  0011  GETTABLE  R10 = R9[K5('audioSource')]
  0012  SETTABLE  R10[K1('mute')] = R2
  0013  TFORCALL  tforcall R5
  0014  TFORLOOP  tforloop R7(sBx=-4)   -> 11
  0015  SELF      R6 = R0[K0('_GetAudioSourceByType')] (self)
  0016  GETTABUP  R7 = AudioType[K6('CookEffect')]
  0017  CALL      R5 = call(R5, 1 args, 2 rets)
  0018  SETTABLE  R5[K1('mute')] = R2
  0019  GETTABLE  R5 = R0[K7('AudioMuteTable')]
  0020  GETTABUP  R6 = AudioType[K6('CookEffect')]
  0021  SETTABLE  R5[R6] = R2
  0022  JMP       (jump)   -> 33
  0023  GETTABUP  R5 = AudioType[K8('Music')]
  0024  EQ        if R0 eq R5   -> -130529
  0025  JMP       (jump)   -> 33
  0026  SELF      R6 = R0[K0('_GetAudioSourceByType')] (self)
  0027  GETTABUP  R7 = AudioType[K9('BgEffect')]
  0028  CALL      R5 = call(R5, 1 args, 2 rets)
  0029  SETTABLE  R5[K1('mute')] = R2
  0030  GETTABLE  R5 = R0[K7('AudioMuteTable')]
  0031  GETTABUP  R6 = AudioType[K9('BgEffect')]
  0032  SETTABLE  R5[R6] = R2
  0033  GETTABLE  R5 = R0[K7('AudioMuteTable')]
  0034  SETTABLE  R5[R1] = R2
  0035  TEST      if not R3 then   -> -131035
  0036  JMP       (jump)   -> 49
  0037  GETTABUP  R5 = _ENV[K10('PlayerPrefs')]
  0038  GETTABLE  R5 = R5[K11('SetInt')]
  0039  SELF      R7 = R0[K12('_GetPrefsMuteKeysByType')] (self)
  0040  MOVE      R8 = R0
  0041  CALL      R6 = call(R6, 1 args, 2 rets)
  0042  TEST      if not R2 then   -> -131028
  0043  JMP       (jump)   -> 47
  0044  LOADK     R7 = K13 1
  0045  TEST      if not R7 then   -> -131024
  0046  JMP       (jump)   -> 48
  0047  LOADK     R7 = K14 0
  0048  CALL      R5 = call(R5, 0 args, 2 rets)
  0049  RETURN    return R0..R-1
; ---------- proto21 [GetAudioMute] ----------
  ; fn ?  line 321-324 np=2 va=0 ms=5 code=6 consts=2 upvals=0 protos=0
  ;   K[0]='_GetAudioSourceByType'
  ;   K[1]='mute'
  ;   locals: self(0-6), audioType(0-6), audioSource(3-6)
  0000  SELF      R3 = R0[K0('_GetAudioSourceByType')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  GETTABLE  R3 = R2[K1('mute')]
  0004  RETURN    return R3..R2
  0005  RETURN    return R0..R-1
; ---------- proto22 [GetAudioVolume] ----------
  ; fn ?  line 326-329 np=2 va=0 ms=5 code=6 consts=2 upvals=0 protos=0
  ;   K[0]='_GetAudioSourceByType'
  ;   K[1]='volume'
  ;   locals: self(0-6), audioType(0-6), audioSource(3-6)
  0000  SELF      R3 = R0[K0('_GetAudioSourceByType')] (self)
  0001  MOVE      R4 = R0
  0002  CALL      R2 = call(R2, 1 args, 2 rets)
  0003  GETTABLE  R3 = R2[K1('volume')]
  0004  RETURN    return R3..R2
  0005  RETURN    return R0..R-1
; ---------- proto23 [_PlayAudio2D] ----------
  ; fn ?  line 333-352 np=6 va=0 ms=16 code=47 consts=16 upvals=0 protos=1
  ;   K[0]='_GetAudioSourceByType'
  ;   K[1]='IsNull'
  ;   K[2]='loop'
  ;   K[3]='playOnAwake'
  ;   K[4]=true
  ;   K[5]='spatialBlend'
  ;   K[6]=0
  ;   K[7]='enabled'
  ;   K[8]='mute'
  ;   K[9]='AudioMuteTable'
  ;   K[10]='volume'
  ;   K[11]='AudioVolumeTable'
  ;   K[12]=1
  ;   K[13]='AudioClipCacheTable'
  ;   K[14]='_PlayAudioClip'
  ;   K[15]='_LoadAudioClipAsync'
  ;   locals: self(0-47), url(0-47), audioType(0-47), isLoop(0-47), numLimit(0-47), eFadeType(0-47), audioSource(4-47), ac(27-47)
  0000  SELF      R7 = R0[K0('_GetAudioSourceByType')] (self)
  0001  MOVE      R8 = R0
  0002  MOVE      R9 = R0
  0003  CALL      R6 = call(R6, 1 args, 3 rets)
  0004  SELF      R8 = R6[K1('IsNull')] (self)
  0005  CALL      R7 = call(R7, 1 args, 1 rets)
  0006  TEST      if not R7 then   -> -131064
  0007  JMP       (jump)   -> 9
  0008  RETURN    return R0..R-1
  0009  SETTABLE  R6[K2('loop')] = R3
  0010  SETTABLE  R6[K3('playOnAwake')] = K4(true)
  0011  SETTABLE  R6[K5('spatialBlend')] = K6(0)
  0012  SETTABLE  R6[K7('enabled')] = K4(true)
  0013  GETTABLE  R7 = R0[K9('AudioMuteTable')]
  0014  GETTABLE  R7 = R7[R2]
  0015  TEST      if not R7 then   -> -131054
  0016  JMP       (jump)   -> 18
  0017  LOADBOOL  R7 = false
  0018  SETTABLE  R6[K8('mute')] = R7
  0019  GETTABLE  R7 = R0[K11('AudioVolumeTable')]
  0020  GETTABLE  R7 = R7[R2]
  0021  TEST      if not R7 then   -> -131048
  0022  JMP       (jump)   -> 24
  0023  LOADK     R7 = K12 1
  0024  SETTABLE  R6[K10('volume')] = R7
  0025  GETTABLE  R7 = R0[K13('AudioClipCacheTable')]
  0026  GETTABLE  R7 = R7[R1]
  0027  TEST      if not R7 then   -> -131043
  0028  JMP       (jump)   -> 42
  0029  SELF      R9 = R7[K1('IsNull')] (self)
  0030  CALL      R8 = call(R8, 1 args, 1 rets)
  0031  TEST      if not R8 then   -> -131038
  0032  JMP       (jump)   -> 42
  0033  SELF      R9 = R0[K14('_PlayAudioClip')] (self)
  0034  MOVE      R10 = R0
  0035  MOVE      R11 = R0
  0036  MOVE      R12 = R0
  0037  MOVE      R13 = R0
  0038  MOVE      R14 = R0
  0039  MOVE      R15 = R0
  0040  CALL      R8 = call(R8, 0 args, 7 rets)
  0041  JMP       (jump)   -> 46
  0042  SELF      R9 = R0[K15('_LoadAudioClipAsync')] (self)
  0043  MOVE      R10 = R0
  0044  CLOSURE   R11 = closure proto0
  0045  CALL      R8 = call(R8, 0 args, 3 rets)
  0046  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 348-350 np=1 va=0 ms=9 code=10 consts=1 upvals=6 protos=0
    ;   K[0]='_PlayAudioClip'
    ;   upvals: self, audioType, audioSource, url, numLimit, eFadeType
    ;   locals: ac(0-10)
    0000  GETUPVAL  R1 = self
    0001  SELF      R2 = R1[K0('_PlayAudioClip')] (self)
    0002  GETUPVAL  R3 = self
    0003  GETUPVAL  R4 = self
    0004  MOVE      R5 = R0
    0005  GETUPVAL  R6 = self
    0006  GETUPVAL  R7 = self
    0007  GETUPVAL  R8 = self
    0008  CALL      R1 = call(R1, 0 args, 7 rets)
    0009  RETURN    return R0..R-1
; ---------- proto24 [_GetDataFromPrefs] ----------
  ; fn ?  line 354-372 np=1 va=0 ms=15 code=49 consts=15 upvals=2 protos=0
  ;   K[0]='pairs'
  ;   K[1]='PlayerPrefs'
  ;   K[2]='GetInt'
  ;   K[3]='_GetPrefsMuteKeysByType'
  ;   K[4]=0
  ;   K[5]='AudioMuteTable'
  ;   K[6]=1
  ;   K[7]='_GetAudioSourceByType'
  ;   K[8]=nil
  ;   K[9]='volume'
  ;   K[10]='AudioVolumeTable'
  ;   K[11]='mute'
  ;   K[12]='Effect'
  ;   K[13]='AudioLoopEffectDataMap'
  ;   K[14]='audioSource'
  ;   upvals: _ENV, AudioType
  ;   locals: self(0-49), (for generator)(3-48), (for state)(3-48), (for control)(3-48), k(4-46), audioType(4-46), nMute(11-46), source(22-46), (for generator)(39-46), (for state)(39-46), (for control)(39-46), object(40-44), data(40-44)
  0000  GETTABUP  R1 = _ENV[K0('pairs')]
  0001  GETUPVAL  R2 = _ENV
  0002  CALL      R1 = call(R1, 3 args, 1 rets)
  0003  JMP       (jump)   -> 46
  0004  GETTABUP  R6 = _ENV[K1('PlayerPrefs')]
  0005  GETTABLE  R6 = R6[K2('GetInt')]
  0006  SELF      R8 = R0[K3('_GetPrefsMuteKeysByType')] (self)
  0007  MOVE      R9 = R0
  0008  CALL      R7 = call(R7, 1 args, 2 rets)
  0009  LOADK     R8 = K4 0
  0010  CALL      R6 = call(R6, 1 args, 2 rets)
  0011  GETTABLE  R7 = R0[K5('AudioMuteTable')]
  0012  EQ        if R0 eq K6(1)   -> -127724
  0013  JMP       (jump)   -> 17
  0014  LOADBOOL  R8 = true
  0015  TEST      if not R8 then   -> -131054
  0016  JMP       (jump)   -> 18
  0017  LOADBOOL  R8 = false
  0018  SETTABLE  R7[R5] = R8
  0019  SELF      R8 = R0[K7('_GetAudioSourceByType')] (self)
  0020  MOVE      R9 = R0
  0021  CALL      R7 = call(R7, 1 args, 2 rets)
  0022  EQ        if R1 eq K8(nil)   -> -127200
  0023  JMP       (jump)   -> 33
  0024  GETTABLE  R8 = R0[K10('AudioVolumeTable')]
  0025  GETTABLE  R8 = R8[R5]
  0026  TEST      if not R8 then   -> -131043
  0027  JMP       (jump)   -> 29
  0028  LOADK     R8 = K6 1
  0029  SETTABLE  R7[K9('volume')] = R8
  0030  GETTABLE  R8 = R0[K5('AudioMuteTable')]
  0031  GETTABLE  R8 = R8[R5]
  0032  SETTABLE  R7[K11('mute')] = R8
  0033  GETTABUP  R8 = AudioType[K12('Effect')]
  0034  EQ        if R0 eq R8   -> -128468
  0035  JMP       (jump)   -> 46
  0036  GETTABUP  R8 = _ENV[K0('pairs')]
  0037  GETTABLE  R9 = R0[K13('AudioLoopEffectDataMap')]
  0038  CALL      R8 = call(R8, 3 args, 1 rets)
  0039  JMP       (jump)   -> 44
  0040  GETTABLE  R13 = R12[K14('audioSource')]
  0041  GETTABLE  R14 = R0[K5('AudioMuteTable')]
  0042  GETTABLE  R14 = R14[R5]
  0043  SETTABLE  R13[K11('mute')] = R14
  0044  TFORCALL  tforcall R8
  0045  TFORLOOP  tforloop R10(sBx=-6)   -> 40
  0046  TFORCALL  tforcall R1
  0047  TFORLOOP  tforloop R3(sBx=-44)   -> 4
  0048  RETURN    return R0..R-1
; ---------- proto25 [_LoadAudioClipAsync] ----------
  ; fn ?  line 374-386 np=3 va=0 ms=9 code=13 consts=6 upvals=1 protos=1
  ;   K[0]='GM'
  ;   K[1]='ResourceLoader'
  ;   K[2]='LoadLatestFile'
  ;   K[3]='DataResource'
  ;   K[4]='AudioFileConfig'
  ;   K[5]='GetConfig'
  ;   upvals: _ENV
  ;   locals: self(0-13), url(0-13), callback(0-13), func(1-13)
  0000  CLOSURE   R3 = closure proto0
  0001  GETTABUP  R4 = _ENV[K0('GM')]
  0002  GETTABLE  R4 = R4[K1('ResourceLoader')]
  0003  SELF      R5 = R4[K2('LoadLatestFile')] (self)
  0004  GETTABUP  R6 = _ENV[K0('GM')]
  0005  GETTABLE  R6 = R6[K3('DataResource')]
  0006  GETTABLE  R6 = R6[K4('AudioFileConfig')]
  0007  SELF      R7 = R6[K5('GetConfig')] (self)
  0008  MOVE      R8 = R0
  0009  CALL      R6 = call(R6, 1 args, 2 rets)
  0010  MOVE      R7 = R0
  0011  CALL      R4 = call(R4, 0 args, 3 rets)
  0012  RETURN    return R0..R-1
  ; ---------- proto0 [] ----------
    ; fn ?  line 375-384 np=1 va=0 ms=5 code=23 consts=7 upvals=4 protos=0
    ;   K[0]=nil
    ;   K[1]='Log'
    ;   K[2]='Error'
    ;   K[3]='LoadAudioClip failed, AudioClipName = ['
    ;   K[4]='nil'
    ;   K[5]=']'
    ;   K[6]='AudioClipCacheTable'
    ;   upvals: _ENV, url, self, callback
    ;   locals: AudioClip(0-23)
    0000  EQ        if R0 eq K0(nil)   -> -130814
    0001  JMP       (jump)   -> 13
    0002  GETTABUP  R1 = _ENV[K1('Log')]
    0003  GETTABLE  R1 = R1[K2('Error')]
    0004  LOADK     R2 = K3 'LoadAudioClip failed, AudioClipName = ['
    0005  GETUPVAL  R3 = _ENV
    0006  TEST      if not R3 then   -> -131063
    0007  JMP       (jump)   -> 9
    0008  LOADK     R3 = K4 'nil'
    0009  LOADK     R4 = K5 ']'
    0010  CONCAT    R2 = concat(R2..R2)
    0011  CALL      R1 = call(R1, 0 args, 1 rets)
    0012  RETURN    return R0..R-1
    0013  GETTABUP  R1 = self[K6('AudioClipCacheTable')]
    0014  GETUPVAL  R2 = _ENV
    0015  SETTABLE  R1[R2] = R0
    0016  GETUPVAL  R1 = _ENV
    0017  TEST      if not R1 then   -> -131053
    0018  JMP       (jump)   -> 22
    0019  GETUPVAL  R1 = _ENV
    0020  MOVE      R2 = R0
    0021  CALL      R1 = call(R1, 0 args, 1 rets)
    0022  RETURN    return R0..R-1
; ---------- proto26 [_GetAudioSourceByType] ----------
  ; fn ?  line 388-392 np=2 va=0 ms=8 code=14 consts=6 upvals=1 protos=0
  ;   K[0]='AudioSourceCacheTable'
  ;   K[1]='Log'
  ;   K[2]='Assert'
  ;   K[3]='_GetAudioSourceByType failed, type = ['
  ;   K[4]='nil'
  ;   K[5]=']'
  ;   upvals: _ENV
  ;   locals: self(0-14), audioType(0-14), audioSource(2-14)
  0000  GETTABLE  R2 = R0[K0('AudioSourceCacheTable')]
  0001  GETTABLE  R2 = R2[R1]
  0002  GETTABUP  R3 = _ENV[K1('Log')]
  0003  GETTABLE  R3 = R3[K2('Assert')]
  0004  MOVE      R4 = R0
  0005  LOADK     R5 = K3 '_GetAudioSourceByType failed, type = ['
  0006  TESTSET   if R1 then R6   -> -130551
  0007  JMP       (jump)   -> 9
  0008  LOADK     R6 = K4 'nil'
  0009  LOADK     R7 = K5 ']'
  0010  CONCAT    R5 = concat(R5..R5)
  0011  CALL      R3 = call(R3, 0 args, 2 rets)
  0012  RETURN    return R2..R1
  0013  RETURN    return R0..R-1
; ---------- proto27 [_GetPrefsMuteKeysByType] ----------
  ; fn ?  line 394-398 np=2 va=0 ms=8 code=19 consts=7 upvals=1 protos=0
  ;   K[0]='PrefsMuteKeys'
  ;   K[1]='Log'
  ;   K[2]='Assert'
  ;   K[3]=''
  ;   K[4]='_GetPrefsMuteKeysByType key not found,Type = ['
  ;   K[5]='nil'
  ;   K[6]=']'
  ;   upvals: _ENV
  ;   locals: self(0-19), audioType(0-19), key(2-19)
  0000  GETTABLE  R2 = R0[K0('PrefsMuteKeys')]
  0001  GETTABLE  R2 = R2[R1]
  0002  GETTABUP  R3 = _ENV[K1('Log')]
  0003  GETTABLE  R3 = R3[K2('Assert')]
  0004  TESTSET   if R0 then R4   -> -130042
  0005  JMP       (jump)   -> 10
  0006  EQ        if R0 eq K3('')   -> -129781
  0007  JMP       (jump)   -> 9
  0008  LOADBOOL  R4 = false
  0009  LOADBOOL  R4 = true
  0010  LOADK     R5 = K4 '_GetPrefsMuteKeysByType key not found,Type = ['
  0011  TESTSET   if R1 then R6   -> -130546
  0012  JMP       (jump)   -> 14
  0013  LOADK     R6 = K5 'nil'
  0014  LOADK     R7 = K6 ']'
  0015  CONCAT    R5 = concat(R5..R5)
  0016  CALL      R3 = call(R3, 0 args, 2 rets)
  0017  RETURN    return R2..R1
  0018  RETURN    return R0..R-1
; ---------- proto28 [_PlayAudioClip] ----------
  ; fn ?  line 400-458 np=7 va=0 ms=17 code=128 consts=35 upvals=3 protos=1
  ;   K[0]='IsNull'
  ;   K[1]=0
  ;   K[2]=1
  ;   K[3]=-1
  ;   K[4]='m_frameId'
  ;   K[5]='table'
  ;   K[6]='remove'
  ;   K[7]='Log'
  ;   K[8]='Info'
  ;   K[9]='[Audio]limit '
  ;   K[10]=' '
  ;   K[11]='LogTag'
  ;   K[12]='Audio'
  ;   K[13]='insert'
  ;   K[14]='loop'
  ;   K[15]='clip'
  ;   K[16]='isPlaying'
  ;   K[17]='Play'
  ;   K[18]='m_audioFader'
  ;   K[19]='IsFading'
  ;   K[20]='StartFade'
  ;   K[21]=0.5
  ;   K[22]='clip'
  ;   K[23]='Play'
  ;   K[24]='PlayOneShot'
  ;   K[25]='FadeIn'
  ;   K[26]='volume'
  ;   K[27]='m_audioFader'
  ;   K[28]='StartFade'
  ;   K[29]=0.4
  ;   K[30]='AudioModel'
  ;   K[31]='AudioVolumeTable'
  ;   K[32]='FadeOut'
  ;   K[33]=0.3
  ;   K[34]='Audio: '
  ;   upvals: _ClipPlayStartTimeTable, _ENV, EAudioFadeType
  ;   locals: self(0-128), audioType(0-128), audioSource(0-128), audioClip(0-128), url(0-128), numLimit(0-128), eFadeType(0-128), cnt(16-128), num(17-128), tmpFrameId(18-128), (for index)(23-37), (for limit)(23-37), (for step)(23-37), i(24-36)
  0000  TEST      if not R2 then   -> -131070
  0001  JMP       (jump)   -> 8
  0002  SELF      R8 = R2[K0('IsNull')] (self)
  0003  CALL      R7 = call(R7, 1 args, 1 rets)
  0004  TEST      if not R7 then   -> -131065
  0005  JMP       (jump)   -> 8
  0006  TEST      if not R3 then   -> -131063
  0007  JMP       (jump)   -> 9
  0008  RETURN    return R0..R-1
  0009  GETTABUP  R7 = _ClipPlayStartTimeTable[R4]
  0010  TEST      if not R7 then   -> -131059
  0011  JMP       (jump)   -> 14
  0012  NEWTABLE  R7 = {} (0 items)
  0013  SETTABUP  _ClipPlayStartTimeTable[R4] = R7
  0014  GETTABUP  R7 = _ClipPlayStartTimeTable[R4]
  0015  LEN       R7 = len R0
  0016  LOADK     R8 = K1 0
  0017  LOADK     R9 = K1 0
  0018  LT        if R0 lt R7   -> 539
  0019  JMP       (jump)   -> 37
  0020  MOVE      R10 = R0
  0021  LOADK     R11 = K2 1
  0022  LOADK     R12 = K3 -1
  0023  FORPREP   forprep R10(sBx=12)   -> 36
  0024  GETTABUP  R14 = _ClipPlayStartTimeTable[R4]
  0025  GETTABLE  R9 = R14[R13]
  0026  GETTABLE  R14 = R0[K4('m_frameId')]
  0027  LT        if R0 lt R14   -> -126421
  0028  JMP       (jump)   -> 35
  0029  GETTABUP  R14 = _ENV[K5('table')]
  0030  GETTABLE  R14 = R14[K6('remove')]
  0031  GETTABUP  R15 = _ClipPlayStartTimeTable[R4]
  0032  MOVE      R16 = R0
  0033  CALL      R14 = call(R14, 0 args, 2 rets)
  0034  JMP       (jump)   -> 36
  0035  ADD       R8 = K2(1) add R8
  0036  FORLOOP   forloop R10(sBx=-13)   -> 24
  0037  TEST      if not R5 then   -> -131033
  0038  JMP       (jump)   -> 52
  0039  LT        if R0 lt R8   -> -128463
  0040  JMP       (jump)   -> 52
  0041  GETTABUP  R10 = _ENV[K7('Log')]
  0042  GETTABLE  R10 = R10[K8('Info')]
  0043  LOADK     R11 = K9 '[Audio]limit '
  0044  MOVE      R12 = R0
  0045  LOADK     R13 = K10 ' '
  0046  MOVE      R14 = R0
  0047  CONCAT    R11 = concat(R11..R11)
  0048  GETTABUP  R12 = _ENV[K11('LogTag')]
  0049  GETTABLE  R12 = R12[K12('Audio')]
  0050  CALL      R10 = call(R10, 0 args, 2 rets)
  0051  RETURN    return R0..R-1
  0052  GETTABUP  R10 = _ENV[K5('table')]
  0053  GETTABLE  R10 = R10[K13('insert')]
  0054  GETTABUP  R11 = _ClipPlayStartTimeTable[R4]
  0055  LOADK     R12 = K2 1
  0056  GETTABLE  R13 = R0[K4('m_frameId')]
  0057  CALL      R10 = call(R10, 0 args, 3 rets)
  0058  GETTABLE  R10 = R2[K14('loop')]
  0059  TEST      if not R10 then   -> -131011
  0060  JMP       (jump)   -> 94
  0061  GETTABLE  R10 = R2[K15('clip')]
  0062  EQ        if R0 eq R3   -> -125885
  0063  JMP       (jump)   -> 70
  0064  GETTABLE  R10 = R2[K16('isPlaying')]
  0065  TEST      if not R10 then   -> -131004
  0066  JMP       (jump)   -> 70
  0067  SELF      R11 = R2[K17('Play')] (self)
  0068  CALL      R10 = call(R10, 0 args, 1 rets)
  0069  JMP       (jump)   -> 119
  0070  GETTABLE  R10 = R2[K15('clip')]
  0071  EQ        if R0 eq R3   -> -125876
  0072  JMP       (jump)   -> 79
  0073  GETTABLE  R10 = R0[K18('m_audioFader')]
  0074  SELF      R11 = R10[K19('IsFading')] (self)
  0075  MOVE      R12 = R0
  0076  CALL      R10 = call(R10, 1 args, 2 rets)
  0077  TEST      if not R10 then   -> -130993
  0078  JMP       (jump)   -> 119
  0079  GETTABLE  R10 = R2[K15('clip')]
  0080  TEST      if not R10 then   -> -130990
  0081  JMP       (jump)   -> 90
  0082  GETTABLE  R10 = R0[K18('m_audioFader')]
  0083  SELF      R11 = R10[K20('StartFade')] (self)
  0084  MOVE      R12 = R0
  0085  LOADK     R13 = K21 0.5
  0086  LOADK     R14 = K1 0
  0087  CLOSURE   R15 = closure proto0
  0088  CALL      R10 = call(R10, 0 args, 5 rets)
  0089  JMP       (jump)   -> 119
  0090  SETTABLE  R2[K22('clip')] = R3
  0091  SELF      R11 = R2[K23('Play')] (self)
  0092  CALL      R10 = call(R10, 0 args, 1 rets)
  0093  JMP       (jump)   -> 119
  0094  SELF      R11 = R2[K24('PlayOneShot')] (self)
  0095  MOVE      R12 = R0
  0096  CALL      R10 = call(R10, 0 args, 2 rets)
  0097  GETTABUP  R10 = EAudioFadeType[K25('FadeIn')]
  0098  EQ        if R0 eq R10   -> -127890
  0099  JMP       (jump)   -> 110
  0100  SETTABLE  R2[K26('volume')] = K1(0)
  0101  GETTABLE  R10 = R0[K27('m_audioFader')]
  0102  SELF      R11 = R10[K28('StartFade')] (self)
  0103  MOVE      R12 = R0
  0104  LOADK     R13 = K29 0.4
  0105  GETTABUP  R14 = _ENV[K30('AudioModel')]
  0106  GETTABLE  R14 = R14[K31('AudioVolumeTable')]
  0107  GETTABLE  R14 = R14[R1]
  0108  CALL      R10 = call(R10, 0 args, 4 rets)
  0109  JMP       (jump)   -> 119
  0110  GETTABUP  R10 = EAudioFadeType[K32('FadeOut')]
  0111  EQ        if R0 eq R10   -> -127877
  0112  JMP       (jump)   -> 119
  0113  GETTABLE  R10 = R0[K27('m_audioFader')]
  0114  SELF      R11 = R10[K28('StartFade')] (self)
  0115  MOVE      R12 = R0
  0116  LOADK     R13 = K33 0.3
  0117  LOADK     R14 = K1 0
  0118  CALL      R10 = call(R10, 0 args, 4 rets)
  0119  GETTABUP  R10 = _ENV[K7('Log')]
  0120  GETTABLE  R10 = R10[K8('Info')]
  0121  LOADK     R11 = K34 'Audio: '
  0122  MOVE      R12 = R0
  0123  CONCAT    R11 = concat(R11..R11)
  0124  GETTABUP  R12 = _ENV[K11('LogTag')]
  0125  GETTABLE  R12 = R12[K12('Audio')]
  0126  CALL      R10 = call(R10, 0 args, 2 rets)
  0127  RETURN    return R0..R-1
  ; ---------- proto0 [clip] ----------
    ; fn ?  line 436-441 np=0 va=0 ms=6 code=15 consts=7 upvals=5 protos=0
    ;   K[0]='clip'
    ;   K[1]='Play'
    ;   K[2]='m_audioFader'
    ;   K[3]='StartFade'
    ;   K[4]=0.6
    ;   K[5]='AudioModel'
    ;   K[6]='AudioVolumeTable'
    ;   upvals: audioSource, audioClip, self, _ENV, audioType
    0000  GETUPVAL  R0 = audioSource
    0001  SETTABUP  audioSource[K0('clip')] = R0
    0002  GETUPVAL  R0 = audioSource
    0003  SELF      R1 = R0[K1('Play')] (self)
    0004  CALL      R0 = call(R0, 0 args, 1 rets)
    0005  GETTABUP  R0 = self[K2('m_audioFader')]
    0006  SELF      R1 = R0[K3('StartFade')] (self)
    0007  GETUPVAL  R2 = audioSource
    0008  LOADK     R3 = K4 0.6
    0009  GETTABUP  R4 = _ENV[K5('AudioModel')]
    0010  GETTABLE  R4 = R4[K6('AudioVolumeTable')]
    0011  GETUPVAL  R5 = audioSource
    0012  GETTABLE  R4 = R4[R5]
    0013  CALL      R0 = call(R0, 0 args, 4 rets)
    0014  RETURN    return R0..R-1
; ---------- proto29 [_ClearLoopEffect] ----------
  ; fn ?  line 460-467 np=1 va=0 ms=9 code=21 consts=9 upvals=1 protos=0
  ;   K[0]='pairs'
  ;   K[1]='AudioLoopEffectDataMap'
  ;   K[2]='audioSource'
  ;   K[3]='Stop'
  ;   K[4]='Scheduler'
  ;   K[5]='Unschedule'
  ;   K[6]='scheduler'
  ;   K[7]='AudioSourcePool'
  ;   K[8]='Release'
  ;   upvals: _ENV
  ;   locals: self(0-21), (for generator)(3-18), (for state)(3-18), (for control)(3-18), object(4-16), data(4-16)
  0000  GETTABUP  R1 = _ENV[K0('pairs')]
  0001  GETTABLE  R2 = R0[K1('AudioLoopEffectDataMap')]
  0002  CALL      R1 = call(R1, 3 args, 1 rets)
  0003  JMP       (jump)   -> 16
  0004  GETTABLE  R6 = R5[K2('audioSource')]
  0005  SELF      R7 = R6[K3('Stop')] (self)
  0006  CALL      R6 = call(R6, 0 args, 1 rets)
  0007  GETTABUP  R6 = _ENV[K4('Scheduler')]
  0008  GETTABLE  R6 = R6[K5('Unschedule')]
  0009  GETTABLE  R7 = R5[K6('scheduler')]
  0010  MOVE      R8 = R0
  0011  CALL      R6 = call(R6, 0 args, 2 rets)
  0012  GETTABLE  R6 = R0[K7('AudioSourcePool')]
  0013  SELF      R7 = R6[K8('Release')] (self)
  0014  MOVE      R8 = R0
  0015  CALL      R6 = call(R6, 0 args, 2 rets)
  0016  TFORCALL  tforcall R1
  0017  TFORLOOP  tforloop R3(sBx=-14)   -> 4
  0018  NEWTABLE  R1 = {} (0 items)
  0019  SETTABLE  R0[K1('AudioLoopEffectDataMap')] = R1
  0020  RETURN    return R0..R-1
; ---------- proto30 [PlayCookEffect] ----------
  ; fn ?  line 469-471 np=2 va=0 ms=9 code=7 consts=2 upvals=1 protos=0
  ;   K[0]='_PlayAudio2D'
  ;   K[1]='CookEffect'
  ;   upvals: AudioType
  ;   locals: self(0-7), url(0-7)
  0000  SELF      R3 = R0[K0('_PlayAudio2D')] (self)
  0001  MOVE      R4 = R0
  0002  GETTABUP  R5 = AudioType[K1('CookEffect')]
  0003  LOADBOOL  R6 = false
  0004  LOADNIL   R7..R7 = nil
  0005  CALL      R2 = call(R2, 0 args, 6 rets)
  0006  RETURN    return R0..R-1
; ---------- proto31 [StopCookEffect] ----------
  ; fn ?  line 473-480 np=1 va=0 ms=4 code=13 consts=4 upvals=1 protos=0
  ;   K[0]='_GetAudioSourceByType'
  ;   K[1]='CookEffect'
  ;   K[2]='IsNull'
  ;   K[3]='Stop'
  ;   upvals: AudioType
  ;   locals: self(0-13), audioSource(3-13)
  0000  SELF      R2 = R0[K0('_GetAudioSourceByType')] (self)
  0001  GETTABUP  R3 = AudioType[K1('CookEffect')]
  0002  CALL      R1 = call(R1, 1 args, 2 rets)
  0003  TEST      if not R1 then   -> -131067
  0004  JMP       (jump)   -> 9
  0005  SELF      R3 = R1[K2('IsNull')] (self)
  0006  CALL      R2 = call(R2, 1 args, 1 rets)
  0007  TEST      if not R2 then   -> -131063
  0008  JMP       (jump)   -> 10
  0009  RETURN    return R0..R-1
  0010  SELF      R3 = R1[K3('Stop')] (self)
  0011  CALL      R2 = call(R2, 0 args, 1 rets)
  0012  RETURN    return R0..R-1
; ---------- proto32 [PlayLoopBgEffect] ----------
  ; fn ?  line 482-484 np=2 va=0 ms=9 code=7 consts=2 upvals=1 protos=0
  ;   K[0]='_PlayAudio2D'
  ;   K[1]='BgEffect'
  ;   upvals: AudioType
  ;   locals: self(0-7), url(0-7)
  0000  SELF      R3 = R0[K0('_PlayAudio2D')] (self)
  0001  MOVE      R4 = R0
  0002  GETTABUP  R5 = AudioType[K1('BgEffect')]
  0003  LOADBOOL  R6 = true
  0004  LOADNIL   R7..R7 = nil
  0005  CALL      R2 = call(R2, 0 args, 6 rets)
  0006  RETURN    return R0..R-1
; ---------- proto33 [StopLoopBgEffect] ----------
  ; fn ?  line 486-488 np=1 va=0 ms=4 code=6 consts=3 upvals=1 protos=0
  ;   K[0]='_GetAudioSourceByType'
  ;   K[1]='BgEffect'
  ;   K[2]='Stop'
  ;   upvals: AudioType
  ;   locals: self(0-6)
  0000  SELF      R2 = R0[K0('_GetAudioSourceByType')] (self)
  0001  GETTABUP  R3 = AudioType[K1('BgEffect')]
  0002  CALL      R1 = call(R1, 1 args, 2 rets)
  0003  SELF      R2 = R1[K2('Stop')] (self)
  0004  CALL      R1 = call(R1, 0 args, 1 rets)
  0005  RETURN    return R0..R-1
