# Model_Network_Serialization_30.luac
; fn @Serialization.lua  line 0-0 np=0 va=1 ms=2 code=3 consts=0 upvals=1 protos=1
;   upvals: _ENV
0000  CLOSURE   R0 = closure proto0
0001  RETURN    return R0..R-1
0002  RETURN    return R0..R-1
; ---------- proto0 [] ----------
  ; fn ?  line 1-458 np=0 va=0 ms=29 code=201 consts=45 upvals=1 protos=37
  ;   K[0]='<'
  ;   K[1]='B'
  ;   K[2]=1
  ;   K[3]='b'
  ;   K[4]='i2'
  ;   K[5]=2
  ;   K[6]='i4'
  ;   K[7]=4
  ;   K[8]='i8'
  ;   K[9]=8
  ;   K[10]='I1'
  ;   K[11]='I2'
  ;   K[12]='I4'
  ;   K[13]='I8'
  ;   K[14]='f'
  ;   K[15]='d'
  ;   K[16]='s2'
  ;   K[17]='MessageHeader'
  ;   K[18]='Serialize'
  ;   K[19]='Deserialize'
  ;   K[20]='Byte'
  ;   K[21]='Serialize'
  ;   K[22]='Deserialize'
  ;   K[23]='UInt8'
  ;   K[24]='UInt16'
  ;   K[25]='UInt32'
  ;   K[26]='UInt64'
  ;   K[27]='SByte'
  ;   K[28]='Int16'
  ;   K[29]='Int32'
  ;   K[30]='Int64'
  ;   K[31]='Single'
  ;   K[32]='Double'
  ;   K[33]='Boolean'
  ;   K[34]='DateTime'
  ;   K[35]='String'
  ;   K[36]='Serialize'
  ;   K[37]='Deserialize'
  ;   K[38]='B2String'
  ;   K[39]='Serialize'
  ;   K[40]='Deserialize'
  ;   K[41]='VarUInt64'
  ;   K[42]='Deserialize'
  ;   K[43]='VarInt64'
  ;   K[44]='Array'
  ;   upvals: _ENV
  ;   locals: Serialization(1-201), ENDIAN_MODE(2-201), BOOLEAN_PACK_OPTION(5-201), BOOLEAN_SIZE(6-201), SBYTE_PACK_OPTION(9-201), SBYTE_SIZE(10-201), INT16_PACK_OPTION(13-201), INT16_SIZE(14-201), INT32_PACK_OPTION(17-201), INT32_SIZE(18-201), INT64_PACK_OPTION(21-201), INT64_SIZE(22-201), BYTE_PACK_OPTION(25-201), BYTE_SIZE(26-201), UINT8_PACK_OPTION(29-201), UINT8_SIZE(30-201), UINT16_PACK_OPTION(33-201), UINT16_SIZE(34-201), UINT32_PACK_OPTION(37-201), UINT32_SIZE(38-201), UINT64_PACK_OPTION(41-201), UINT64_SIZE(42-201), SINGLE_PACK_OPTION(45-201), SINGLE_SIZE(46-201), DOUBLE_PACK_OPTION(49-201), DOUBLE_SIZE(50-201), BYTE2STRING_PACK_OPTION(53-201)
  0000  NEWTABLE  R0 = {} (0 items)
  0001  LOADK     R1 = K0 '<'
  0002  MOVE      R2 = R0
  0003  LOADK     R3 = K1 'B'
  0004  CONCAT    R2 = concat(R2..R2)
  0005  LOADK     R3 = K2 1
  0006  MOVE      R4 = R0
  0007  LOADK     R5 = K3 'b'
  0008  CONCAT    R4 = concat(R4..R4)
  0009  LOADK     R5 = K2 1
  0010  MOVE      R6 = R0
  0011  LOADK     R7 = K4 'i2'
  0012  CONCAT    R6 = concat(R6..R6)
  0013  LOADK     R7 = K5 2
  0014  MOVE      R8 = R0
  0015  LOADK     R9 = K6 'i4'
  0016  CONCAT    R8 = concat(R8..R8)
  0017  LOADK     R9 = K7 4
  0018  MOVE      R10 = R0
  0019  LOADK     R11 = K8 'i8'
  0020  CONCAT    R10 = concat(R10..R10)
  0021  LOADK     R11 = K9 8
  0022  MOVE      R12 = R0
  0023  LOADK     R13 = K1 'B'
  0024  CONCAT    R12 = concat(R12..R12)
  0025  LOADK     R13 = K2 1
  0026  MOVE      R14 = R0
  0027  LOADK     R15 = K10 'I1'
  0028  CONCAT    R14 = concat(R14..R14)
  0029  LOADK     R15 = K2 1
  0030  MOVE      R16 = R0
  0031  LOADK     R17 = K11 'I2'
  0032  CONCAT    R16 = concat(R16..R16)
  0033  LOADK     R17 = K5 2
  0034  MOVE      R18 = R0
  0035  LOADK     R19 = K12 'I4'
  0036  CONCAT    R18 = concat(R18..R18)
  0037  LOADK     R19 = K7 4
  0038  MOVE      R20 = R0
  0039  LOADK     R21 = K13 'I8'
  0040  CONCAT    R20 = concat(R20..R20)
  0041  LOADK     R21 = K9 8
  0042  MOVE      R22 = R0
  0043  LOADK     R23 = K14 'f'
  0044  CONCAT    R22 = concat(R22..R22)
  0045  LOADK     R23 = K7 4
  0046  MOVE      R24 = R0
  0047  LOADK     R25 = K15 'd'
  0048  CONCAT    R24 = concat(R24..R24)
  0049  LOADK     R25 = K9 8
  0050  MOVE      R26 = R0
  0051  LOADK     R27 = K16 's2'
  0052  CONCAT    R26 = concat(R26..R26)
  0053  NEWTABLE  R27 = {} (0 items)
  0054  SETTABLE  R0[K17('MessageHeader')] = R27
  0055  GETTABLE  R27 = R0[K17('MessageHeader')]
  0056  CLOSURE   R28 = closure proto0
  0057  SETTABLE  R27[K18('Serialize')] = R28
  0058  GETTABLE  R27 = R0[K17('MessageHeader')]
  0059  CLOSURE   R28 = closure proto1
  0060  SETTABLE  R27[K19('Deserialize')] = R28
  0061  NEWTABLE  R27 = {} (0 items)
  0062  SETTABLE  R0[K20('Byte')] = R27
  0063  GETTABLE  R27 = R0[K20('Byte')]
  0064  CLOSURE   R28 = closure proto2
  0065  SETTABLE  R27[K21('Serialize')] = R28
  0066  GETTABLE  R27 = R0[K20('Byte')]
  0067  CLOSURE   R28 = closure proto3
  0068  SETTABLE  R27[K22('Deserialize')] = R28
  0069  NEWTABLE  R27 = {} (0 items)
  0070  SETTABLE  R0[K23('UInt8')] = R27
  0071  GETTABLE  R27 = R0[K23('UInt8')]
  0072  CLOSURE   R28 = closure proto4
  0073  SETTABLE  R27[K21('Serialize')] = R28
  0074  GETTABLE  R27 = R0[K23('UInt8')]
  0075  CLOSURE   R28 = closure proto5
  0076  SETTABLE  R27[K22('Deserialize')] = R28
  0077  NEWTABLE  R27 = {} (0 items)
  0078  SETTABLE  R0[K24('UInt16')] = R27
  0079  GETTABLE  R27 = R0[K24('UInt16')]
  0080  CLOSURE   R28 = closure proto6
  0081  SETTABLE  R27[K21('Serialize')] = R28
  0082  GETTABLE  R27 = R0[K24('UInt16')]
  0083  CLOSURE   R28 = closure proto7
  0084  SETTABLE  R27[K22('Deserialize')] = R28
  0085  NEWTABLE  R27 = {} (0 items)
  0086  SETTABLE  R0[K25('UInt32')] = R27
  0087  GETTABLE  R27 = R0[K25('UInt32')]
  0088  CLOSURE   R28 = closure proto8
  0089  SETTABLE  R27[K21('Serialize')] = R28
  0090  GETTABLE  R27 = R0[K25('UInt32')]
  0091  CLOSURE   R28 = closure proto9
  0092  SETTABLE  R27[K22('Deserialize')] = R28
  0093  NEWTABLE  R27 = {} (0 items)
  0094  SETTABLE  R0[K26('UInt64')] = R27
  0095  GETTABLE  R27 = R0[K26('UInt64')]
  0096  CLOSURE   R28 = closure proto10
  0097  SETTABLE  R27[K21('Serialize')] = R28
  0098  GETTABLE  R27 = R0[K26('UInt64')]
  0099  CLOSURE   R28 = closure proto11
  0100  SETTABLE  R27[K22('Deserialize')] = R28
  0101  NEWTABLE  R27 = {} (0 items)
  0102  SETTABLE  R0[K27('SByte')] = R27
  0103  GETTABLE  R27 = R0[K27('SByte')]
  0104  CLOSURE   R28 = closure proto12
  0105  SETTABLE  R27[K21('Serialize')] = R28
  0106  GETTABLE  R27 = R0[K27('SByte')]
  0107  CLOSURE   R28 = closure proto13
  0108  SETTABLE  R27[K22('Deserialize')] = R28
  0109  NEWTABLE  R27 = {} (0 items)
  0110  SETTABLE  R0[K28('Int16')] = R27
  0111  GETTABLE  R27 = R0[K28('Int16')]
  0112  CLOSURE   R28 = closure proto14
  0113  SETTABLE  R27[K21('Serialize')] = R28
  0114  GETTABLE  R27 = R0[K28('Int16')]
  0115  CLOSURE   R28 = closure proto15
  0116  SETTABLE  R27[K22('Deserialize')] = R28
  0117  NEWTABLE  R27 = {} (0 items)
  0118  SETTABLE  R0[K29('Int32')] = R27
  0119  GETTABLE  R27 = R0[K29('Int32')]
  0120  CLOSURE   R28 = closure proto16
  0121  SETTABLE  R27[K21('Serialize')] = R28
  0122  GETTABLE  R27 = R0[K29('Int32')]
  0123  CLOSURE   R28 = closure proto17
  0124  SETTABLE  R27[K22('Deserialize')] = R28
  0125  NEWTABLE  R27 = {} (0 items)
  0126  SETTABLE  R0[K30('Int64')] = R27
  0127  GETTABLE  R27 = R0[K30('Int64')]
  0128  CLOSURE   R28 = closure proto18
  0129  SETTABLE  R27[K21('Serialize')] = R28
  0130  GETTABLE  R27 = R0[K30('Int64')]
  0131  CLOSURE   R28 = closure proto19
  0132  SETTABLE  R27[K22('Deserialize')] = R28
  0133  NEWTABLE  R27 = {} (0 items)
  0134  SETTABLE  R0[K31('Single')] = R27
  0135  GETTABLE  R27 = R0[K31('Single')]
  0136  CLOSURE   R28 = closure proto20
  0137  SETTABLE  R27[K21('Serialize')] = R28
  0138  GETTABLE  R27 = R0[K31('Single')]
  0139  CLOSURE   R28 = closure proto21
  0140  SETTABLE  R27[K22('Deserialize')] = R28
  0141  NEWTABLE  R27 = {} (0 items)
  0142  SETTABLE  R0[K32('Double')] = R27
  0143  GETTABLE  R27 = R0[K32('Double')]
  0144  CLOSURE   R28 = closure proto22
  0145  SETTABLE  R27[K21('Serialize')] = R28
  0146  GETTABLE  R27 = R0[K32('Double')]
  0147  CLOSURE   R28 = closure proto23
  0148  SETTABLE  R27[K22('Deserialize')] = R28
  0149  NEWTABLE  R27 = {} (0 items)
  0150  SETTABLE  R0[K33('Boolean')] = R27
  0151  GETTABLE  R27 = R0[K33('Boolean')]
  0152  CLOSURE   R28 = closure proto24
  0153  SETTABLE  R27[K21('Serialize')] = R28
  0154  GETTABLE  R27 = R0[K33('Boolean')]
  0155  CLOSURE   R28 = closure proto25
  0156  SETTABLE  R27[K22('Deserialize')] = R28
  0157  NEWTABLE  R27 = {} (0 items)
  0158  SETTABLE  R0[K34('DateTime')] = R27
  0159  GETTABLE  R27 = R0[K34('DateTime')]
  0160  CLOSURE   R28 = closure proto26
  0161  SETTABLE  R27[K21('Serialize')] = R28
  0162  GETTABLE  R27 = R0[K34('DateTime')]
  0163  CLOSURE   R28 = closure proto27
  0164  SETTABLE  R27[K22('Deserialize')] = R28
  0165  NEWTABLE  R27 = {} (0 items)
  0166  SETTABLE  R0[K35('String')] = R27
  0167  GETTABLE  R27 = R0[K35('String')]
  0168  CLOSURE   R28 = closure proto28
  0169  SETTABLE  R27[K36('Serialize')] = R28
  0170  GETTABLE  R27 = R0[K35('String')]
  0171  CLOSURE   R28 = closure proto29
  0172  SETTABLE  R27[K37('Deserialize')] = R28
  0173  NEWTABLE  R27 = {} (0 items)
  0174  SETTABLE  R0[K38('B2String')] = R27
  0175  GETTABLE  R27 = R0[K38('B2String')]
  0176  CLOSURE   R28 = closure proto30
  0177  SETTABLE  R27[K39('Serialize')] = R28
  0178  GETTABLE  R27 = R0[K38('B2String')]
  0179  CLOSURE   R28 = closure proto31
  0180  SETTABLE  R27[K40('Deserialize')] = R28
  0181  NEWTABLE  R27 = {} (0 items)
  0182  SETTABLE  R0[K41('VarUInt64')] = R27
  0183  GETTABLE  R27 = R0[K41('VarUInt64')]
  0184  CLOSURE   R28 = closure proto32
  0185  SETTABLE  R27[K39('Serialize')] = R28
  0186  GETTABLE  R27 = R0[K41('VarUInt64')]
  0187  CLOSURE   R28 = closure proto33
  0188  SETTABLE  R27[K42('Deserialize')] = R28
  0189  NEWTABLE  R27 = {} (0 items)
  0190  SETTABLE  R0[K43('VarInt64')] = R27
  0191  GETTABLE  R27 = R0[K43('VarInt64')]
  0192  CLOSURE   R28 = closure proto34
  0193  SETTABLE  R27[K39('Serialize')] = R28
  0194  GETTABLE  R27 = R0[K43('VarInt64')]
  0195  CLOSURE   R28 = closure proto35
  0196  SETTABLE  R27[K42('Deserialize')] = R28
  0197  CLOSURE   R27 = closure proto36
  0198  SETTABLE  R0[K44('Array')] = R27
  0199  RETURN    return R0..R-1
  0200  RETURN    return R0..R-1
  ; ---------- proto0 [Serialize] ----------
    ; fn ?  line 35-60 np=2 va=0 ms=10 code=57 consts=10 upvals=2 protos=0
    ;   K[0]='assert'
    ;   K[1]='ProtocolMd5'
    ;   K[2]='MessageId'
    ;   K[3]='Operation'
    ;   K[4]=16
    ;   K[5]=1
    ;   K[6]='Byte'
    ;   K[7]='Serialize'
    ;   K[8]='VarUInt64'
    ;   K[9]='String'
    ;   upvals: _ENV, Serialization
    ;   locals: writer(0-57), message_header(0-57), bRet(18-57), (for index)(21-34), (for limit)(21-34), (for step)(21-34), i(22-33)
    0000  GETTABUP  R2 = _ENV[K0('assert')]
    0001  GETTABLE  R3 = R1[K1('ProtocolMd5')]
    0002  CALL      R2 = call(R2, 0 args, 1 rets)
    0003  GETTABUP  R2 = _ENV[K0('assert')]
    0004  GETTABLE  R3 = R1[K2('MessageId')]
    0005  CALL      R2 = call(R2, 0 args, 1 rets)
    0006  GETTABUP  R2 = _ENV[K0('assert')]
    0007  GETTABLE  R3 = R1[K3('Operation')]
    0008  CALL      R2 = call(R2, 0 args, 1 rets)
    0009  GETTABUP  R2 = _ENV[K0('assert')]
    0010  GETTABLE  R3 = R1[K1('ProtocolMd5')]
    0011  LEN       R3 = len R0
    0012  EQ        if R1 eq K4(16)   -> -129262
    0013  JMP       (jump)   -> 15
    0014  LOADBOOL  R3 = false
    0015  LOADBOOL  R3 = true
    0016  CALL      R2 = call(R2, 0 args, 1 rets)
    0017  LOADNIL   R2..R2 = nil
    0018  LOADK     R3 = K5 1
    0019  LOADK     R4 = K4 16
    0020  LOADK     R5 = K5 1
    0021  FORPREP   forprep R3(sBx=11)   -> 33
    0022  GETTABUP  R7 = Serialization[K6('Byte')]
    0023  GETTABLE  R7 = R7[K7('Serialize')]
    0024  MOVE      R8 = R0
    0025  GETTABLE  R9 = R1[K1('ProtocolMd5')]
    0026  GETTABLE  R9 = R9[R6]
    0027  CALL      R7 = call(R7, 1 args, 2 rets)
    0028  MOVE      R2 = R0
    0029  TEST      if not R2 then   -> -131040
    0030  JMP       (jump)   -> 33
    0031  LOADBOOL  R7 = false
    0032  RETURN    return R7..R6
    0033  FORLOOP   forloop R3(sBx=-12)   -> 22
    0034  GETTABUP  R3 = Serialization[K8('VarUInt64')]
    0035  GETTABLE  R3 = R3[K7('Serialize')]
    0036  MOVE      R4 = R0
    0037  GETTABLE  R5 = R1[K2('MessageId')]
    0038  CALL      R3 = call(R3, 1 args, 2 rets)
    0039  MOVE      R2 = R0
    0040  TEST      if not R2 then   -> -131029
    0041  JMP       (jump)   -> 44
    0042  LOADBOOL  R3 = false
    0043  RETURN    return R3..R2
    0044  GETTABUP  R3 = Serialization[K9('String')]
    0045  GETTABLE  R3 = R3[K7('Serialize')]
    0046  MOVE      R4 = R0
    0047  GETTABLE  R5 = R1[K3('Operation')]
    0048  CALL      R3 = call(R3, 1 args, 2 rets)
    0049  MOVE      R2 = R0
    0050  TEST      if not R2 then   -> -131019
    0051  JMP       (jump)   -> 54
    0052  LOADBOOL  R3 = false
    0053  RETURN    return R3..R2
    0054  LOADBOOL  R3 = true
    0055  RETURN    return R3..R2
    0056  RETURN    return R0..R-1
  ; ---------- proto1 [Deserialize] ----------
    ; fn ?  line 62-85 np=1 va=0 ms=10 code=44 consts=9 upvals=1 protos=0
    ;   K[0]='ProtocolMd5'
    ;   K[1]=1
    ;   K[2]=16
    ;   K[3]='Byte'
    ;   K[4]='Deserialize'
    ;   K[5]='MessageId'
    ;   K[6]='VarUInt64'
    ;   K[7]='Operation'
    ;   K[8]='String'
    ;   upvals: Serialization
    ;   locals: reader(0-44), message_header(1-44), bRet(4-44), (for index)(7-20), (for limit)(7-20), (for step)(7-20), i(8-19)
    0000  NEWTABLE  R1 = {} (0 items)
    0001  NEWTABLE  R2 = {} (0 items)
    0002  SETTABLE  R1[K0('ProtocolMd5')] = R2
    0003  LOADNIL   R2..R2 = nil
    0004  LOADK     R3 = K1 1
    0005  LOADK     R4 = K2 16
    0006  LOADK     R5 = K1 1
    0007  FORPREP   forprep R3(sBx=11)   -> 19
    0008  GETTABLE  R7 = R1[K0('ProtocolMd5')]
    0009  GETTABUP  R8 = Serialization[K3('Byte')]
    0010  GETTABLE  R8 = R8[K4('Deserialize')]
    0011  MOVE      R9 = R0
    0012  CALL      R8 = call(R8, 2 args, 1 rets)
    0013  SETTABLE  R7[R6] = R9
    0014  MOVE      R2 = R0
    0015  TEST      if not R2 then   -> -131054
    0016  JMP       (jump)   -> 19
    0017  LOADBOOL  R7 = false
    0018  RETURN    return R7..R6
    0019  FORLOOP   forloop R3(sBx=-12)   -> 8
    0020  GETTABUP  R3 = Serialization[K6('VarUInt64')]
    0021  GETTABLE  R3 = R3[K4('Deserialize')]
    0022  MOVE      R4 = R0
    0023  CALL      R3 = call(R3, 2 args, 1 rets)
    0024  SETTABLE  R1[K5('MessageId')] = R4
    0025  MOVE      R2 = R0
    0026  TEST      if not R2 then   -> -131043
    0027  JMP       (jump)   -> 30
    0028  LOADBOOL  R3 = false
    0029  RETURN    return R3..R2
    0030  GETTABUP  R3 = Serialization[K8('String')]
    0031  GETTABLE  R3 = R3[K4('Deserialize')]
    0032  MOVE      R4 = R0
    0033  CALL      R3 = call(R3, 2 args, 1 rets)
    0034  SETTABLE  R1[K7('Operation')] = R4
    0035  MOVE      R2 = R0
    0036  TEST      if not R2 then   -> -131033
    0037  JMP       (jump)   -> 40
    0038  LOADBOOL  R3 = false
    0039  RETURN    return R3..R2
    0040  LOADBOOL  R3 = true
    0041  MOVE      R4 = R0
    0042  RETURN    return R3..R2
    0043  RETURN    return R0..R-1
  ; ---------- proto2 [Serialize] ----------
    ; fn ?  line 88-91 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, BYTE_PACK_OPTION
    ;   locals: writer(0-14), byte_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto3 [Deserialize] ----------
    ; fn ?  line 93-100 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: BYTE_SIZE, _ENV, BYTE_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = BYTE_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = BYTE_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto4 [Serialize] ----------
    ; fn ?  line 103-106 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, UINT8_PACK_OPTION
    ;   locals: writer(0-14), uint8_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto5 [Deserialize] ----------
    ; fn ?  line 108-115 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: UINT8_SIZE, _ENV, UINT8_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = UINT8_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = UINT8_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto6 [Serialize] ----------
    ; fn ?  line 118-121 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, UINT16_PACK_OPTION
    ;   locals: writer(0-14), uint16_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto7 [Deserialize] ----------
    ; fn ?  line 123-130 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: UINT16_SIZE, _ENV, UINT16_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = UINT16_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = UINT16_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto8 [Serialize] ----------
    ; fn ?  line 133-136 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, UINT32_PACK_OPTION
    ;   locals: writer(0-14), uint32_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto9 [Deserialize] ----------
    ; fn ?  line 138-145 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: UINT32_SIZE, _ENV, UINT32_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = UINT32_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = UINT32_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto10 [Serialize] ----------
    ; fn ?  line 148-151 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, UINT64_PACK_OPTION
    ;   locals: writer(0-14), uint64_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto11 [Deserialize] ----------
    ; fn ?  line 153-160 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: UINT64_SIZE, _ENV, UINT64_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = UINT64_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = UINT64_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto12 [Serialize] ----------
    ; fn ?  line 163-166 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, SBYTE_PACK_OPTION
    ;   locals: writer(0-14), sbyte_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto13 [Deserialize] ----------
    ; fn ?  line 168-175 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: SBYTE_SIZE, _ENV, SBYTE_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = SBYTE_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = SBYTE_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto14 [Serialize] ----------
    ; fn ?  line 178-181 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, INT16_PACK_OPTION
    ;   locals: writer(0-14), int16_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto15 [Deserialize] ----------
    ; fn ?  line 183-190 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: INT16_SIZE, _ENV, INT16_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = INT16_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = INT16_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto16 [Serialize] ----------
    ; fn ?  line 193-196 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, INT32_PACK_OPTION
    ;   locals: writer(0-14), int32_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto17 [Deserialize] ----------
    ; fn ?  line 198-205 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: INT32_SIZE, _ENV, INT32_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = INT32_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = INT32_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto18 [Serialize] ----------
    ; fn ?  line 208-211 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, INT64_PACK_OPTION
    ;   locals: writer(0-14), int64_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto19 [Deserialize] ----------
    ; fn ?  line 213-220 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: INT64_SIZE, _ENV, INT64_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = INT64_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = INT64_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto20 [Serialize] ----------
    ; fn ?  line 223-226 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, SINGLE_PACK_OPTION
    ;   locals: writer(0-14), single_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto21 [Deserialize] ----------
    ; fn ?  line 228-235 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: SINGLE_SIZE, _ENV, SINGLE_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = SINGLE_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = SINGLE_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto22 [Serialize] ----------
    ; fn ?  line 238-241 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, DOUBLE_PACK_OPTION
    ;   locals: writer(0-14), double_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto23 [Deserialize] ----------
    ; fn ?  line 243-250 np=1 va=0 ms=6 code=15 consts=4 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   upvals: DOUBLE_SIZE, _ENV, DOUBLE_PACK_OPTION
    ;   locals: reader(0-15), val(3-15)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = DOUBLE_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = DOUBLE_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, -1 args, 2 rets)
    0013  RETURN    return R2..R1
    0014  RETURN    return R0..R-1
  ; ---------- proto24 [Serialize] ----------
    ; fn ?  line 253-261 np=2 va=0 ms=8 code=15 consts=5 upvals=2 protos=0
    ;   K[0]=1
    ;   K[1]=0
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, BOOLEAN_PACK_OPTION
    ;   locals: writer(0-15), boolean_value(0-15), value(1-15)
    0000  LOADNIL   R2..R2 = nil
    0001  TEST      if not R1 then   -> -131069
    0002  JMP       (jump)   -> 5
    0003  LOADK     R2 = K0 1
    0004  JMP       (jump)   -> 6
    0005  LOADK     R2 = K1 0
    0006  SELF      R4 = R0[K2('write')] (self)
    0007  GETTABUP  R5 = _ENV[K3('string')]
    0008  GETTABLE  R5 = R5[K4('pack')]
    0009  GETUPVAL  R6 = _ENV
    0010  MOVE      R7 = R0
    0011  CALL      R5 = call(R5, -1 args, 2 rets)
    0012  TAILCALL  tailcall(R3, 0)
    0013  RETURN    return R3..R2
    0014  RETURN    return R0..R-1
  ; ---------- proto25 [Deserialize] ----------
    ; fn ?  line 263-270 np=1 va=0 ms=6 code=19 consts=5 upvals=3 protos=0
    ;   K[0]='read'
    ;   K[1]=nil
    ;   K[2]='string'
    ;   K[3]='unpack'
    ;   K[4]=0
    ;   upvals: BOOLEAN_SIZE, _ENV, BOOLEAN_PACK_OPTION
    ;   locals: reader(0-19), val(3-19)
    0000  SELF      R2 = R0[K0('read')] (self)
    0001  GETUPVAL  R3 = BOOLEAN_SIZE
    0002  CALL      R1 = call(R1, 1 args, 2 rets)
    0003  EQ        if R0 eq K1(nil)   -> -130298
    0004  JMP       (jump)   -> 7
    0005  LOADBOOL  R2 = false
    0006  RETURN    return R2..R1
    0007  LOADBOOL  R2 = true
    0008  GETTABUP  R3 = _ENV[K2('string')]
    0009  GETTABLE  R3 = R3[K3('unpack')]
    0010  GETUPVAL  R4 = BOOLEAN_SIZE
    0011  MOVE      R5 = R0
    0012  CALL      R3 = call(R3, 1 args, 2 rets)
    0013  EQ        if R0 eq K4(0)   -> -129261
    0014  JMP       (jump)   -> 16
    0015  LOADBOOL  R3 = false
    0016  LOADBOOL  R3 = true
    0017  RETURN    return R2..R1
    0018  RETURN    return R0..R-1
  ; ---------- proto26 [Serialize] ----------
    ; fn ?  line 273-276 np=2 va=0 ms=5 code=12 consts=4 upvals=1 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]='VarInt64'
    ;   K[3]='Serialize'
    ;   upvals: Serialization
    ;   locals: writer(0-12), datetime_value(0-12)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  GETTABUP  R2 = Serialization[K2('VarInt64')]
    0006  GETTABLE  R2 = R2[K3('Serialize')]
    0007  MOVE      R3 = R0
    0008  MOVE      R4 = R0
    0009  TAILCALL  tailcall(R2, 0)
    0010  RETURN    return R2..R1
    0011  RETURN    return R0..R-1
  ; ---------- proto27 [Deserialize] ----------
    ; fn ?  line 278-280 np=1 va=0 ms=3 code=6 consts=2 upvals=1 protos=0
    ;   K[0]='VarInt64'
    ;   K[1]='Deserialize'
    ;   upvals: Serialization
    ;   locals: reader(0-6)
    0000  GETTABUP  R1 = Serialization[K0('VarInt64')]
    0001  GETTABLE  R1 = R1[K1('Deserialize')]
    0002  MOVE      R2 = R0
    0003  TAILCALL  tailcall(R1, 0)
    0004  RETURN    return R1..R0
    0005  RETURN    return R0..R-1
  ; ---------- proto28 [Serialize] ----------
    ; fn ?  line 283-300 np=2 va=0 ms=7 code=31 consts=7 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=''
    ;   K[2]='string'
    ;   K[3]='len'
    ;   K[4]='VarUInt64'
    ;   K[5]='Serialize'
    ;   K[6]='write'
    ;   upvals: _ENV, Serialization
    ;   locals: writer(0-31), string_value(0-31), string_length(9-31), bRet(10-31)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 ''
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  GETTABUP  R2 = _ENV[K2('string')]
    0006  GETTABLE  R2 = R2[K3('len')]
    0007  MOVE      R3 = R0
    0008  CALL      R2 = call(R2, 1 args, 1 rets)
    0009  LOADNIL   R3..R3 = nil
    0010  GETTABUP  R4 = Serialization[K4('VarUInt64')]
    0011  GETTABLE  R4 = R4[K5('Serialize')]
    0012  MOVE      R5 = R0
    0013  MOVE      R6 = R0
    0014  CALL      R4 = call(R4, 1 args, 2 rets)
    0015  MOVE      R3 = R0
    0016  TEST      if not R3 then   -> -131053
    0017  JMP       (jump)   -> 20
    0018  LOADBOOL  R4 = false
    0019  RETURN    return R4..R3
    0020  SELF      R5 = R0[K6('write')] (self)
    0021  MOVE      R6 = R0
    0022  CALL      R4 = call(R4, 1 args, 2 rets)
    0023  MOVE      R3 = R0
    0024  TEST      if not R3 then   -> -131045
    0025  JMP       (jump)   -> 28
    0026  LOADBOOL  R4 = false
    0027  RETURN    return R4..R3
    0028  LOADBOOL  R4 = true
    0029  RETURN    return R4..R3
    0030  RETURN    return R0..R-1
  ; ---------- proto29 [Deserialize] ----------
    ; fn ?  line 302-316 np=1 va=0 ms=6 code=22 consts=4 upvals=1 protos=0
    ;   K[0]='VarUInt64'
    ;   K[1]='Deserialize'
    ;   K[2]='read'
    ;   K[3]=nil
    ;   upvals: Serialization
    ;   locals: reader(0-22), bRet(1-22), string_length(1-22), val(14-22)
    0000  LOADNIL   R1..R1 = nil
    0001  GETTABUP  R3 = Serialization[K0('VarUInt64')]
    0002  GETTABLE  R3 = R3[K1('Deserialize')]
    0003  MOVE      R4 = R0
    0004  CALL      R3 = call(R3, 2 args, 1 rets)
    0005  MOVE      R2 = R0
    0006  MOVE      R1 = R0
    0007  TEST      if not R1 then   -> -131062
    0008  JMP       (jump)   -> 11
    0009  LOADBOOL  R3 = false
    0010  RETURN    return R3..R2
    0011  SELF      R4 = R0[K2('read')] (self)
    0012  MOVE      R5 = R0
    0013  CALL      R3 = call(R3, 1 args, 2 rets)
    0014  EQ        if R0 eq K3(nil)   -> -129261
    0015  JMP       (jump)   -> 18
    0016  LOADBOOL  R4 = false
    0017  RETURN    return R4..R3
    0018  LOADBOOL  R4 = true
    0019  MOVE      R5 = R0
    0020  RETURN    return R4..R3
    0021  RETURN    return R0..R-1
  ; ---------- proto30 [Serialize] ----------
    ; fn ?  line 320-323 np=2 va=0 ms=7 code=14 consts=5 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=''
    ;   K[2]='write'
    ;   K[3]='string'
    ;   K[4]='pack'
    ;   upvals: _ENV, BYTE2STRING_PACK_OPTION
    ;   locals: writer(0-14), string_value(0-14)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 ''
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  SELF      R3 = R0[K2('write')] (self)
    0006  GETTABUP  R4 = _ENV[K3('string')]
    0007  GETTABLE  R4 = R4[K4('pack')]
    0008  GETUPVAL  R5 = _ENV
    0009  MOVE      R6 = R0
    0010  CALL      R4 = call(R4, -1 args, 2 rets)
    0011  TAILCALL  tailcall(R2, 0)
    0012  RETURN    return R2..R1
    0013  RETURN    return R0..R-1
  ; ---------- proto31 [Deserialize] ----------
    ; fn ?  line 325-339 np=1 va=0 ms=6 code=22 consts=4 upvals=1 protos=0
    ;   K[0]='UInt16'
    ;   K[1]='Deserialize'
    ;   K[2]='read'
    ;   K[3]=nil
    ;   upvals: Serialization
    ;   locals: reader(0-22), bRet(1-22), string_length(1-22), val(14-22)
    0000  LOADNIL   R1..R1 = nil
    0001  GETTABUP  R3 = Serialization[K0('UInt16')]
    0002  GETTABLE  R3 = R3[K1('Deserialize')]
    0003  MOVE      R4 = R0
    0004  CALL      R3 = call(R3, 2 args, 1 rets)
    0005  MOVE      R2 = R0
    0006  MOVE      R1 = R0
    0007  TEST      if not R1 then   -> -131062
    0008  JMP       (jump)   -> 11
    0009  LOADBOOL  R3 = false
    0010  RETURN    return R3..R2
    0011  SELF      R4 = R0[K2('read')] (self)
    0012  MOVE      R5 = R0
    0013  CALL      R3 = call(R3, 1 args, 2 rets)
    0014  EQ        if R0 eq K3(nil)   -> -129261
    0015  JMP       (jump)   -> 18
    0016  LOADBOOL  R4 = false
    0017  RETURN    return R4..R3
    0018  LOADBOOL  R4 = true
    0019  MOVE      R5 = R0
    0020  RETURN    return R4..R3
    0021  RETURN    return R0..R-1
  ; ---------- proto32 [Serialize] ----------
    ; fn ?  line 342-363 np=2 va=0 ms=13 code=41 consts=10 upvals=2 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]=1
    ;   K[3]=8
    ;   K[4]=127
    ;   K[5]=7
    ;   K[6]=128
    ;   K[7]='write'
    ;   K[8]='string'
    ;   K[9]='pack'
    ;   upvals: _ENV, BYTE_PACK_OPTION
    ;   locals: writer(0-41), uint64_value(0-41), bRet(6-41), (for index)(9-32), (for limit)(9-32), (for step)(9-32), nLen(10-31), ucCode(11-31)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  LOADNIL   R2..R2 = nil
    0006  LOADK     R3 = K2 1
    0007  LOADK     R4 = K3 8
    0008  LOADK     R5 = K2 1
    0009  FORPREP   forprep R3(sBx=21)   -> 31
    0010  BAND      R7 = K4(127) band R1
    0011  SHR       R1 = K5(7) shr R1
    0012  EQ        if R1 eq K1(0)   -> -130289
    0013  JMP       (jump)   -> 15
    0014  BOR       R7 = K6(128) bor R7
    0015  SELF      R9 = R0[K7('write')] (self)
    0016  GETTABUP  R10 = _ENV[K8('string')]
    0017  GETTABLE  R10 = R10[K9('pack')]
    0018  GETUPVAL  R11 = _ENV
    0019  MOVE      R12 = R0
    0020  CALL      R10 = call(R10, -1 args, 2 rets)
    0021  CALL      R8 = call(R8, 1 args, -1 rets)
    0022  MOVE      R2 = R0
    0023  TEST      if not R2 then   -> -131046
    0024  JMP       (jump)   -> 27
    0025  LOADBOOL  R8 = false
    0026  RETURN    return R8..R7
    0027  EQ        if R0 eq K1(0)   -> -130274
    0028  JMP       (jump)   -> 31
    0029  LOADBOOL  R8 = true
    0030  RETURN    return R8..R7
    0031  FORLOOP   forloop R3(sBx=-22)   -> 10
    0032  SELF      R4 = R0[K7('write')] (self)
    0033  GETTABUP  R5 = _ENV[K8('string')]
    0034  GETTABLE  R5 = R5[K9('pack')]
    0035  GETUPVAL  R6 = _ENV
    0036  MOVE      R7 = R0
    0037  CALL      R5 = call(R5, -1 args, 2 rets)
    0038  TAILCALL  tailcall(R3, 0)
    0039  RETURN    return R3..R2
    0040  RETURN    return R0..R-1
  ; ---------- proto33 [Deserialize] ----------
    ; fn ?  line 365-389 np=1 va=0 ms=10 code=51 consts=11 upvals=3 protos=0
    ;   K[0]=0
    ;   K[1]=1
    ;   K[2]=8
    ;   K[3]='read'
    ;   K[4]=nil
    ;   K[5]='string'
    ;   K[6]='unpack'
    ;   K[7]=127
    ;   K[8]=7
    ;   K[9]=128
    ;   K[10]=56
    ;   upvals: BYTE_SIZE, _ENV, BYTE_PACK_OPTION
    ;   locals: reader(0-51), ullVal(1-51), val(2-51), (for index)(5-31), (for limit)(5-31), (for step)(5-31), i(6-30), ucCode(19-30), ucCode(44-51)
    0000  LOADK     R1 = K0 0
    0001  LOADNIL   R2..R2 = nil
    0002  LOADK     R3 = K1 1
    0003  LOADK     R4 = K2 8
    0004  LOADK     R5 = K1 1
    0005  FORPREP   forprep R3(sBx=24)   -> 30
    0006  SELF      R8 = R0[K3('read')] (self)
    0007  GETUPVAL  R9 = BYTE_SIZE
    0008  CALL      R7 = call(R7, 1 args, 2 rets)
    0009  MOVE      R2 = R0
    0010  EQ        if R0 eq K4(nil)   -> -129776
    0011  JMP       (jump)   -> 14
    0012  LOADBOOL  R7 = false
    0013  RETURN    return R7..R6
    0014  GETTABUP  R7 = _ENV[K5('string')]
    0015  GETTABLE  R7 = R7[K6('unpack')]
    0016  GETUPVAL  R8 = BYTE_SIZE
    0017  MOVE      R9 = R0
    0018  CALL      R7 = call(R7, 1 args, 2 rets)
    0019  BAND      R8 = K7(127) band R7
    0020  SUB       R9 = K1(1) sub R6
    0021  MUL       R9 = K8(7) mul R9
    0022  SHL       R8 = R9 shl R8
    0023  BOR       R1 = R8 bor R1
    0024  BAND      R8 = K9(128) band R7
    0025  EQ        if R0 eq K0(0)   -> -126693
    0026  JMP       (jump)   -> 30
    0027  LOADBOOL  R8 = true
    0028  MOVE      R9 = R0
    0029  RETURN    return R8..R7
    0030  FORLOOP   forloop R3(sBx=-25)   -> 6
    0031  SELF      R4 = R0[K3('read')] (self)
    0032  GETUPVAL  R5 = BYTE_SIZE
    0033  CALL      R3 = call(R3, 1 args, 2 rets)
    0034  MOVE      R2 = R0
    0035  EQ        if R0 eq K4(nil)   -> -129751
    0036  JMP       (jump)   -> 39
    0037  LOADBOOL  R3 = false
    0038  RETURN    return R3..R2
    0039  GETTABUP  R3 = _ENV[K5('string')]
    0040  GETTABLE  R3 = R3[K6('unpack')]
    0041  GETUPVAL  R4 = BYTE_SIZE
    0042  MOVE      R5 = R0
    0043  CALL      R3 = call(R3, 1 args, 2 rets)
    0044  BAND      R4 = K7(127) band R3
    0045  SHL       R4 = K10(56) shl R4
    0046  BOR       R1 = R4 bor R1
    0047  LOADBOOL  R4 = true
    0048  MOVE      R5 = R0
    0049  RETURN    return R4..R3
    0050  RETURN    return R0..R-1
  ; ---------- proto34 [Serialize] ----------
    ; fn ?  line 392-396 np=2 va=0 ms=6 code=31 consts=5 upvals=1 protos=0
    ;   K[0]=nil
    ;   K[1]=0
    ;   K[2]=1
    ;   K[3]='VarUInt64'
    ;   K[4]='Serialize'
    ;   upvals: Serialization
    ;   locals: writer(0-31), int64_value(0-31), ullVal(24-31)
    0000  EQ        if R0 eq K0(nil)   -> -130302
    0001  JMP       (jump)   -> 5
    0002  LOADK     R2 = K1 0
    0003  TESTSET   if R1 then R1   -> -130042
    0004  JMP       (jump)   -> 5
    0005  LT        if R0 lt K1(0)   -> -130296
    0006  JMP       (jump)   -> 12
    0007  NEWTABLE  R2 = {} (1 items)
    0008  UNM       R3 = unm R0
    0009  SETLIST   setlist R2[B=1,C=1]
    0010  TEST      if not R2 then   -> -131059
    0011  JMP       (jump)   -> 15
    0012  NEWTABLE  R2 = {} (1 items)
    0013  MOVE      R3 = R0
    0014  SETLIST   setlist R2[B=1,C=1]
    0015  GETTABLE  R2 = R2[K2(1)]
    0016  SHL       R2 = K2(1) shl R2
    0017  LT        if R0 lt K1(0)   -> -130284
    0018  JMP       (jump)   -> 22
    0019  LOADK     R3 = K2 1
    0020  TEST      if not R3 then   -> -131049
    0021  JMP       (jump)   -> 23
    0022  LOADK     R3 = K1 0
    0023  BOR       R2 = R3 bor R2
    0024  GETTABUP  R3 = Serialization[K3('VarUInt64')]
    0025  GETTABLE  R3 = R3[K4('Serialize')]
    0026  MOVE      R4 = R0
    0027  MOVE      R5 = R0
    0028  TAILCALL  tailcall(R3, 0)
    0029  RETURN    return R3..R2
    0030  RETURN    return R0..R-1
  ; ---------- proto35 [Deserialize] ----------
    ; fn ?  line 398-410 np=1 va=0 ms=7 code=31 consts=4 upvals=1 protos=0
    ;   K[0]='VarUInt64'
    ;   K[1]='Deserialize'
    ;   K[2]=1
    ;   K[3]=0
    ;   upvals: Serialization
    ;   locals: reader(0-31), bRet(1-31), ullVal(1-31), isSigned(16-31)
    0000  LOADNIL   R1..R1 = nil
    0001  GETTABUP  R3 = Serialization[K0('VarUInt64')]
    0002  GETTABLE  R3 = R3[K1('Deserialize')]
    0003  MOVE      R4 = R0
    0004  CALL      R3 = call(R3, 2 args, 1 rets)
    0005  MOVE      R2 = R0
    0006  MOVE      R1 = R0
    0007  TEST      if not R1 then   -> -131062
    0008  JMP       (jump)   -> 11
    0009  LOADBOOL  R3 = false
    0010  RETURN    return R3..R2
    0011  BAND      R3 = K2(1) band R2
    0012  EQ        if R0 eq K3(0)   -> -129263
    0013  JMP       (jump)   -> 15
    0014  LOADBOOL  R3 = false
    0015  LOADBOOL  R3 = true
    0016  SHR       R2 = K2(1) shr R2
    0017  LOADBOOL  R4 = true
    0018  TEST      if not R3 then   -> -131052
    0019  JMP       (jump)   -> 25
    0020  NEWTABLE  R5 = {} (1 items)
    0021  UNM       R6 = unm R0
    0022  SETLIST   setlist R5[B=1,C=1]
    0023  TEST      if not R5 then   -> -131046
    0024  JMP       (jump)   -> 28
    0025  NEWTABLE  R5 = {} (1 items)
    0026  MOVE      R6 = R0
    0027  SETLIST   setlist R5[B=1,C=1]
    0028  GETTABLE  R5 = R5[K2(1)]
    0029  RETURN    return R4..R3
    0030  RETURN    return R0..R-1
  ; ---------- proto36 [Array] ----------
    ; fn ?  line 412-454 np=1 va=0 ms=3 code=7 consts=2 upvals=2 protos=2
    ;   K[0]='Serialize'
    ;   K[1]='Deserialize'
    ;   upvals: Serialization, _ENV
    ;   locals: object_serializer(0-7), array_serializer(1-7)
    0000  NEWTABLE  R1 = {} (0 items)
    0001  CLOSURE   R2 = closure proto0
    0002  SETTABLE  R1[K0('Serialize')] = R2
    0003  CLOSURE   R2 = closure proto1
    0004  SETTABLE  R1[K1('Deserialize')] = R2
    0005  RETURN    return R1..R0
    0006  RETURN    return R0..R-1
    ; ---------- proto0 [Serialize] ----------
      ; fn ?  line 414-431 np=2 va=0 ms=12 code=30 consts=3 upvals=3 protos=0
      ;   K[0]='VarUInt64'
      ;   K[1]='Serialize'
      ;   K[2]='ipairs'
      ;   upvals: Serialization, _ENV, object_serializer
      ;   locals: writer(0-30), array_value(0-30), bRet(1-30), array_length(2-30), (for generator)(15-27), (for state)(15-27), (for control)(15-27), k(16-25), v(16-25)
      0000  LOADNIL   R2..R2 = nil
      0001  LEN       R3 = len R0
      0002  GETTABUP  R4 = Serialization[K0('VarUInt64')]
      0003  GETTABLE  R4 = R4[K1('Serialize')]
      0004  MOVE      R5 = R0
      0005  MOVE      R6 = R0
      0006  CALL      R4 = call(R4, 1 args, 2 rets)
      0007  MOVE      R2 = R0
      0008  TEST      if not R2 then   -> -131061
      0009  JMP       (jump)   -> 12
      0010  LOADBOOL  R4 = false
      0011  RETURN    return R4..R3
      0012  GETTABUP  R4 = _ENV[K2('ipairs')]
      0013  MOVE      R5 = R0
      0014  CALL      R4 = call(R4, 3 args, 1 rets)
      0015  JMP       (jump)   -> 25
      0016  GETTABUP  R9 = object_serializer[K1('Serialize')]
      0017  MOVE      R10 = R0
      0018  MOVE      R11 = R0
      0019  CALL      R9 = call(R9, 1 args, 2 rets)
      0020  MOVE      R2 = R0
      0021  TEST      if not R2 then   -> -131048
      0022  JMP       (jump)   -> 25
      0023  LOADBOOL  R9 = false
      0024  RETURN    return R9..R8
      0025  TFORCALL  tforcall R4
      0026  TFORLOOP  tforloop R6(sBx=-11)   -> 16
      0027  LOADBOOL  R4 = true
      0028  RETURN    return R4..R3
      0029  RETURN    return R0..R-1
    ; ---------- proto1 [Deserialize] ----------
      ; fn ?  line 433-451 np=1 va=0 ms=10 code=30 consts=3 upvals=2 protos=0
      ;   K[0]='VarUInt64'
      ;   K[1]='Deserialize'
      ;   K[2]=1
      ;   upvals: Serialization, object_serializer
      ;   locals: reader(0-30), array_value(1-30), bRet(2-30), array_length(2-30), (for index)(15-26), (for limit)(15-26), (for step)(15-26), i(16-25)
      0000  NEWTABLE  R1 = {} (0 items)
      0001  LOADNIL   R2..R2 = nil
      0002  GETTABUP  R4 = Serialization[K0('VarUInt64')]
      0003  GETTABLE  R4 = R4[K1('Deserialize')]
      0004  MOVE      R5 = R0
      0005  CALL      R4 = call(R4, 2 args, 1 rets)
      0006  MOVE      R3 = R0
      0007  MOVE      R2 = R0
      0008  TEST      if not R2 then   -> -131061
      0009  JMP       (jump)   -> 12
      0010  LOADBOOL  R4 = false
      0011  RETURN    return R4..R3
      0012  LOADK     R4 = K2 1
      0013  MOVE      R5 = R0
      0014  LOADK     R6 = K2 1
      0015  FORPREP   forprep R4(sBx=9)   -> 25
      0016  GETTABUP  R8 = object_serializer[K1('Deserialize')]
      0017  MOVE      R9 = R0
      0018  CALL      R8 = call(R8, 2 args, 1 rets)
      0019  SETTABLE  R1[R7] = R9
      0020  MOVE      R2 = R0
      0021  TEST      if not R2 then   -> -131048
      0022  JMP       (jump)   -> 25
      0023  LOADBOOL  R8 = false
      0024  RETURN    return R8..R7
      0025  FORLOOP   forloop R4(sBx=-10)   -> 16
      0026  LOADBOOL  R4 = true
      0027  MOVE      R5 = R0
      0028  RETURN    return R4..R3
      0029  RETURN    return R0..R-1
