Matter reduce memory usage (#18431)

This commit is contained in:
s-hadinger 2023-04-16 22:25:31 +02:00 committed by GitHub
parent 82e94108d4
commit 7f9f08fa87
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 944 additions and 889 deletions

View File

@ -216,6 +216,7 @@ class Matter_IM
# should return true if answered, false if passing to next handler # should return true if answered, false if passing to next handler
def read_single_attribute(ret, pi, ctx, direct) def read_single_attribute(ret, pi, ctx, direct)
import string import string
var TLV = matter.TLV
var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute)
attr_name = attr_name ? " (" + attr_name + ")" : "" attr_name = attr_name ? " (" + attr_name + ")" : ""
# Special case to report unsupported item, if pi==nil # Special case to report unsupported item, if pi==nil
@ -230,7 +231,12 @@ class Matter_IM
a1.attribute_data.path.attribute = ctx.attribute a1.attribute_data.path.attribute = ctx.attribute
a1.attribute_data.data = res a1.attribute_data.data = res
ret.attribute_reports.push(a1) var a1_tlv = a1.to_TLV()
var a1_len = a1_tlv.encode_len()
var a1_bytes = bytes(a1_len)
var a2 = TLV.create_TLV(TLV.RAW, a1_tlv.tlv2raw(a1_bytes))
ret.attribute_reports.push(a2)
if !no_log if !no_log
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - %s", session.local_session_id, str(ctx), attr_name, str(res)), 2) tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - %s", session.local_session_id, str(ctx), attr_name, str(res)), 2)
end end
@ -246,7 +252,12 @@ class Matter_IM
a1.attribute_status.path.attribute = ctx.attribute a1.attribute_status.path.attribute = ctx.attribute
a1.attribute_status.status.status = ctx.status a1.attribute_status.status.status = ctx.status
ret.attribute_reports.push(a1) var a1_tlv = a1.to_TLV()
var a1_len = a1_tlv.encode_len()
var a1_bytes = bytes(a1_len)
var a2 = TLV.create_TLV(TLV.RAW, a1_tlv.tlv2raw(a1_bytes))
ret.attribute_reports.push(a2)
tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 2) tasmota.log(string.format("MTR: >Read_Attr (%6i) %s%s - STATUS: 0x%02X %s", session.local_session_id, str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 2)
return true return true
end end

View File

@ -86,6 +86,7 @@ class Matter_TLV
static var ARRAY = 0x16 static var ARRAY = 0x16
static var LIST = 0x17 static var LIST = 0x17
static var EOC = 0x18 static var EOC = 0x18
static var RAW = 0xFF # encodes an anonymous raw value (already encoded in TLV to save memory)
################################################################################# #################################################################################
# Matter_TLV_item class # Matter_TLV_item class
@ -224,6 +225,8 @@ class Matter_TLV
var TLV = self.TLV var TLV = self.TLV
if b == nil b = bytes() end # start new buffer if none passed if b == nil b = bytes() end # start new buffer if none passed
if self.typ == TLV.RAW b..self.val return b end
# special case for bool # special case for bool
# we need to change the type according to the value # we need to change the type according to the value
if self.typ == TLV.BFALSE || self.typ == TLV.BTRUE if self.typ == TLV.BFALSE || self.typ == TLV.BTRUE
@ -320,6 +323,8 @@ class Matter_TLV
var TLV = self.TLV var TLV = self.TLV
var len = 0 var len = 0
if self.typ == TLV.RAW return size(self.val) end
# special case for bool # special case for bool
# we need to change the type according to the value # we need to change the type according to the value
if self.typ == TLV.BFALSE || self.typ == TLV.BTRUE if self.typ == TLV.BFALSE || self.typ == TLV.BTRUE

View File

@ -1371,7 +1371,7 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */
1, /* has sup protos */ 1, /* has sup protos */
( &(const struct bproto*[ 2]) { ( &(const struct bproto*[ 2]) {
be_nested_proto( be_nested_proto(
19, /* nstack */ 23, /* nstack */
4, /* argc */ 4, /* argc */
0, /* varg */ 0, /* varg */
1, /* has upvals */ 1, /* has upvals */
@ -1382,204 +1382,225 @@ be_local_closure(Matter_IM__inner_process_read_request, /* name */
0, /* has sup protos */ 0, /* has sup protos */
NULL, /* no sub protos */ NULL, /* no sub protos */
1, /* has constants */ 1, /* has constants */
( &(const bvalue[33]) { /* constants */ ( &(const bvalue[39]) { /* constants */
/* K0 */ be_nested_str_weak(string), /* K0 */ be_nested_str_weak(string),
/* K1 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(matter),
/* K2 */ be_nested_str_weak(get_attribute_name), /* K2 */ be_nested_str_weak(TLV),
/* K3 */ be_nested_str_weak(cluster), /* K3 */ be_nested_str_weak(get_attribute_name),
/* K4 */ be_nested_str_weak(attribute), /* K4 */ be_nested_str_weak(cluster),
/* K5 */ be_nested_str_weak(_X20_X28), /* K5 */ be_nested_str_weak(attribute),
/* K6 */ be_nested_str_weak(_X29), /* K6 */ be_nested_str_weak(_X20_X28),
/* K7 */ be_nested_str_weak(), /* K7 */ be_nested_str_weak(_X29),
/* K8 */ be_nested_str_weak(read_attribute), /* K8 */ be_nested_str_weak(),
/* K9 */ be_nested_str_weak(AttributeReportIB), /* K9 */ be_nested_str_weak(read_attribute),
/* K10 */ be_nested_str_weak(attribute_data), /* K10 */ be_nested_str_weak(AttributeReportIB),
/* K11 */ be_nested_str_weak(AttributeDataIB), /* K11 */ be_nested_str_weak(attribute_data),
/* K12 */ be_nested_str_weak(data_version), /* K12 */ be_nested_str_weak(AttributeDataIB),
/* K13 */ be_const_int(1), /* K13 */ be_nested_str_weak(data_version),
/* K14 */ be_nested_str_weak(path), /* K14 */ be_const_int(1),
/* K15 */ be_nested_str_weak(AttributePathIB), /* K15 */ be_nested_str_weak(path),
/* K16 */ be_nested_str_weak(endpoint), /* K16 */ be_nested_str_weak(AttributePathIB),
/* K17 */ be_nested_str_weak(data), /* K17 */ be_nested_str_weak(endpoint),
/* K18 */ be_nested_str_weak(attribute_reports), /* K18 */ be_nested_str_weak(data),
/* K19 */ be_nested_str_weak(push), /* K19 */ be_nested_str_weak(to_TLV),
/* K20 */ be_nested_str_weak(tasmota), /* K20 */ be_nested_str_weak(encode_len),
/* K21 */ be_nested_str_weak(log), /* K21 */ be_nested_str_weak(create_TLV),
/* K22 */ be_nested_str_weak(format), /* K22 */ be_nested_str_weak(RAW),
/* K23 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s), /* K23 */ be_nested_str_weak(tlv2raw),
/* K24 */ be_nested_str_weak(local_session_id), /* K24 */ be_nested_str_weak(attribute_reports),
/* K25 */ be_const_int(2), /* K25 */ be_nested_str_weak(push),
/* K26 */ be_nested_str_weak(status), /* K26 */ be_nested_str_weak(tasmota),
/* K27 */ be_nested_str_weak(attribute_status), /* K27 */ be_nested_str_weak(log),
/* K28 */ be_nested_str_weak(AttributeStatusIB), /* K28 */ be_nested_str_weak(format),
/* K29 */ be_nested_str_weak(StatusIB), /* K29 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20_X25s),
/* K30 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), /* K30 */ be_nested_str_weak(local_session_id),
/* K31 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), /* K31 */ be_const_int(2),
/* K32 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED), /* K32 */ be_nested_str_weak(status),
/* K33 */ be_nested_str_weak(attribute_status),
/* K34 */ be_nested_str_weak(AttributeStatusIB),
/* K35 */ be_nested_str_weak(StatusIB),
/* K36 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s),
/* K37 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE),
/* K38 */ be_nested_str_weak(MTR_X3A_X20_X3ERead_Attr_X20_X28_X256i_X29_X20_X25s_X25s_X20_X2D_X20IGNORED),
}), }),
be_str_weak(read_single_attribute), be_str_weak(read_single_attribute),
&be_const_str_solidified, &be_const_str_solidified,
( &(const binstruction[160]) { /* code */ ( &(const binstruction[175]) { /* code */
0xA4120000, // 0000 IMPORT R4 K0 0xA4120000, // 0000 IMPORT R4 K0
0xB8160200, // 0001 GETNGBL R5 K1 0xB8160200, // 0001 GETNGBL R5 K1
0x8C140B02, // 0002 GETMET R5 R5 K2 0x88140B02, // 0002 GETMBR R5 R5 K2
0x881C0503, // 0003 GETMBR R7 R2 K3 0xB81A0200, // 0003 GETNGBL R6 K1
0x88200504, // 0004 GETMBR R8 R2 K4 0x8C180D03, // 0004 GETMET R6 R6 K3
0x7C140600, // 0005 CALL R5 3 0x88200504, // 0005 GETMBR R8 R2 K4
0x78160002, // 0006 JMPF R5 #000A 0x88240505, // 0006 GETMBR R9 R2 K5
0x001A0A05, // 0007 ADD R6 K5 R5 0x7C180600, // 0007 CALL R6 3
0x00180D06, // 0008 ADD R6 R6 K6 0x781A0002, // 0008 JMPF R6 #000C
0x70020000, // 0009 JMP #000B 0x001E0C06, // 0009 ADD R7 K6 R6
0x58180007, // 000A LDCONST R6 K7 0x001C0F07, // 000A ADD R7 R7 K7
0x5C140C00, // 000B MOVE R5 R6 0x70020000, // 000B JMP #000D
0x4C180000, // 000C LDNIL R6 0x581C0008, // 000C LDCONST R7 K8
0x20180206, // 000D NE R6 R1 R6 0x5C180E00, // 000D MOVE R6 R7
0x781A0004, // 000E JMPF R6 #0014 0x4C1C0000, // 000E LDNIL R7
0x8C180308, // 000F GETMET R6 R1 K8 0x201C0207, // 000F NE R7 R1 R7
0x68200000, // 0010 GETUPV R8 U0 0x781E0004, // 0010 JMPF R7 #0016
0x5C240400, // 0011 MOVE R9 R2 0x8C1C0309, // 0011 GETMET R7 R1 K9
0x7C180600, // 0012 CALL R6 3 0x68240000, // 0012 GETUPV R9 U0
0x70020000, // 0013 JMP #0015 0x5C280400, // 0013 MOVE R10 R2
0x4C180000, // 0014 LDNIL R6 0x7C1C0600, // 0014 CALL R7 3
0x4C1C0000, // 0015 LDNIL R7 0x70020000, // 0015 JMP #0017
0x201C0C07, // 0016 NE R7 R6 R7 0x4C1C0000, // 0016 LDNIL R7
0x781E0034, // 0017 JMPF R7 #004D 0x4C200000, // 0017 LDNIL R8
0xB81E0200, // 0018 GETNGBL R7 K1 0x20200E08, // 0018 NE R8 R7 R8
0x8C1C0F09, // 0019 GETMET R7 R7 K9 0x78220041, // 0019 JMPF R8 #005C
0x7C1C0200, // 001A CALL R7 1 0xB8220200, // 001A GETNGBL R8 K1
0xB8220200, // 001B GETNGBL R8 K1 0x8C20110A, // 001B GETMET R8 R8 K10
0x8C20110B, // 001C GETMET R8 R8 K11 0x7C200200, // 001C CALL R8 1
0x7C200200, // 001D CALL R8 1 0xB8260200, // 001D GETNGBL R9 K1
0x901E1408, // 001E SETMBR R7 K10 R8 0x8C24130C, // 001E GETMET R9 R9 K12
0x88200F0A, // 001F GETMBR R8 R7 K10 0x7C240200, // 001F CALL R9 1
0x9022190D, // 0020 SETMBR R8 K12 K13 0x90221609, // 0020 SETMBR R8 K11 R9
0x88200F0A, // 0021 GETMBR R8 R7 K10 0x8824110B, // 0021 GETMBR R9 R8 K11
0xB8260200, // 0022 GETNGBL R9 K1 0x90261B0E, // 0022 SETMBR R9 K13 K14
0x8C24130F, // 0023 GETMET R9 R9 K15 0x8824110B, // 0023 GETMBR R9 R8 K11
0x7C240200, // 0024 CALL R9 1 0xB82A0200, // 0024 GETNGBL R10 K1
0x90221C09, // 0025 SETMBR R8 K14 R9 0x8C281510, // 0025 GETMET R10 R10 K16
0x88200F0A, // 0026 GETMBR R8 R7 K10 0x7C280200, // 0026 CALL R10 1
0x8820110E, // 0027 GETMBR R8 R8 K14 0x90261E0A, // 0027 SETMBR R9 K15 R10
0x88240510, // 0028 GETMBR R9 R2 K16 0x8824110B, // 0028 GETMBR R9 R8 K11
0x90222009, // 0029 SETMBR R8 K16 R9 0x8824130F, // 0029 GETMBR R9 R9 K15
0x88200F0A, // 002A GETMBR R8 R7 K10 0x88280511, // 002A GETMBR R10 R2 K17
0x8820110E, // 002B GETMBR R8 R8 K14 0x9026220A, // 002B SETMBR R9 K17 R10
0x88240503, // 002C GETMBR R9 R2 K3 0x8824110B, // 002C GETMBR R9 R8 K11
0x90220609, // 002D SETMBR R8 K3 R9 0x8824130F, // 002D GETMBR R9 R9 K15
0x88200F0A, // 002E GETMBR R8 R7 K10 0x88280504, // 002E GETMBR R10 R2 K4
0x8820110E, // 002F GETMBR R8 R8 K14 0x9026080A, // 002F SETMBR R9 K4 R10
0x88240504, // 0030 GETMBR R9 R2 K4 0x8824110B, // 0030 GETMBR R9 R8 K11
0x90220809, // 0031 SETMBR R8 K4 R9 0x8824130F, // 0031 GETMBR R9 R9 K15
0x88200F0A, // 0032 GETMBR R8 R7 K10 0x88280505, // 0032 GETMBR R10 R2 K5
0x90222206, // 0033 SETMBR R8 K17 R6 0x90260A0A, // 0033 SETMBR R9 K5 R10
0x88200112, // 0034 GETMBR R8 R0 K18 0x8824110B, // 0034 GETMBR R9 R8 K11
0x8C201113, // 0035 GETMET R8 R8 K19 0x90262407, // 0035 SETMBR R9 K18 R7
0x5C280E00, // 0036 MOVE R10 R7 0x8C241113, // 0036 GETMET R9 R8 K19
0x7C200400, // 0037 CALL R8 2 0x7C240200, // 0037 CALL R9 1
0x68200001, // 0038 GETUPV R8 U1 0x8C281314, // 0038 GETMET R10 R9 K20
0x7422000F, // 0039 JMPT R8 #004A 0x7C280200, // 0039 CALL R10 1
0xB8222800, // 003A GETNGBL R8 K20 0x602C0015, // 003A GETGBL R11 G21
0x8C201115, // 003B GETMET R8 R8 K21 0x5C301400, // 003B MOVE R12 R10
0x8C280916, // 003C GETMET R10 R4 K22 0x7C2C0200, // 003C CALL R11 1
0x58300017, // 003D LDCONST R12 K23 0x8C300B15, // 003D GETMET R12 R5 K21
0x68340000, // 003E GETUPV R13 U0 0x88380B16, // 003E GETMBR R14 R5 K22
0x88341B18, // 003F GETMBR R13 R13 K24 0x8C3C1317, // 003F GETMET R15 R9 K23
0x60380008, // 0040 GETGBL R14 G8 0x5C441600, // 0040 MOVE R17 R11
0x5C3C0400, // 0041 MOVE R15 R2 0x7C3C0400, // 0041 CALL R15 2
0x7C380200, // 0042 CALL R14 1 0x7C300600, // 0042 CALL R12 3
0x5C3C0A00, // 0043 MOVE R15 R5 0x88340118, // 0043 GETMBR R13 R0 K24
0x60400008, // 0044 GETGBL R16 G8 0x8C341B19, // 0044 GETMET R13 R13 K25
0x5C440C00, // 0045 MOVE R17 R6 0x5C3C1800, // 0045 MOVE R15 R12
0x7C400200, // 0046 CALL R16 1 0x7C340400, // 0046 CALL R13 2
0x7C280C00, // 0047 CALL R10 6 0x68340001, // 0047 GETUPV R13 U1
0x582C0019, // 0048 LDCONST R11 K25 0x7436000F, // 0048 JMPT R13 #0059
0x7C200600, // 0049 CALL R8 3 0xB8363400, // 0049 GETNGBL R13 K26
0x50200200, // 004A LDBOOL R8 1 0 0x8C341B1B, // 004A GETMET R13 R13 K27
0x80041000, // 004B RET 1 R8 0x8C3C091C, // 004B GETMET R15 R4 K28
0x70020051, // 004C JMP #009F 0x5844001D, // 004C LDCONST R17 K29
0x881C051A, // 004D GETMBR R7 R2 K26 0x68480000, // 004D GETUPV R18 U0
0x4C200000, // 004E LDNIL R8 0x8848251E, // 004E GETMBR R18 R18 K30
0x201C0E08, // 004F NE R7 R7 R8 0x604C0008, // 004F GETGBL R19 G8
0x781E003E, // 0050 JMPF R7 #0090 0x5C500400, // 0050 MOVE R20 R2
0x780E003C, // 0051 JMPF R3 #008F 0x7C4C0200, // 0051 CALL R19 1
0xB81E0200, // 0052 GETNGBL R7 K1 0x5C500C00, // 0052 MOVE R20 R6
0x8C1C0F09, // 0053 GETMET R7 R7 K9 0x60540008, // 0053 GETGBL R21 G8
0x7C1C0200, // 0054 CALL R7 1 0x5C580E00, // 0054 MOVE R22 R7
0xB8220200, // 0055 GETNGBL R8 K1 0x7C540200, // 0055 CALL R21 1
0x8C20111C, // 0056 GETMET R8 R8 K28 0x7C3C0C00, // 0056 CALL R15 6
0x7C200200, // 0057 CALL R8 1 0x5840001F, // 0057 LDCONST R16 K31
0x901E3608, // 0058 SETMBR R7 K27 R8 0x7C340600, // 0058 CALL R13 3
0x88200F1B, // 0059 GETMBR R8 R7 K27 0x50340200, // 0059 LDBOOL R13 1 0
0xB8260200, // 005A GETNGBL R9 K1 0x80041A00, // 005A RET 1 R13
0x8C24130F, // 005B GETMET R9 R9 K15 0x70020051, // 005B JMP #00AE
0x7C240200, // 005C CALL R9 1 0x88200520, // 005C GETMBR R8 R2 K32
0x90221C09, // 005D SETMBR R8 K14 R9 0x4C240000, // 005D LDNIL R9
0x88200F1B, // 005E GETMBR R8 R7 K27 0x20201009, // 005E NE R8 R8 R9
0xB8260200, // 005F GETNGBL R9 K1 0x7822003E, // 005F JMPF R8 #009F
0x8C24131D, // 0060 GETMET R9 R9 K29 0x780E003C, // 0060 JMPF R3 #009E
0x7C240200, // 0061 CALL R9 1 0xB8220200, // 0061 GETNGBL R8 K1
0x90223409, // 0062 SETMBR R8 K26 R9 0x8C20110A, // 0062 GETMET R8 R8 K10
0x88200F1B, // 0063 GETMBR R8 R7 K27 0x7C200200, // 0063 CALL R8 1
0x8820110E, // 0064 GETMBR R8 R8 K14 0xB8260200, // 0064 GETNGBL R9 K1
0x88240510, // 0065 GETMBR R9 R2 K16 0x8C241322, // 0065 GETMET R9 R9 K34
0x90222009, // 0066 SETMBR R8 K16 R9 0x7C240200, // 0066 CALL R9 1
0x88200F1B, // 0067 GETMBR R8 R7 K27 0x90224209, // 0067 SETMBR R8 K33 R9
0x8820110E, // 0068 GETMBR R8 R8 K14 0x88241121, // 0068 GETMBR R9 R8 K33
0x88240503, // 0069 GETMBR R9 R2 K3 0xB82A0200, // 0069 GETNGBL R10 K1
0x90220609, // 006A SETMBR R8 K3 R9 0x8C281510, // 006A GETMET R10 R10 K16
0x88200F1B, // 006B GETMBR R8 R7 K27 0x7C280200, // 006B CALL R10 1
0x8820110E, // 006C GETMBR R8 R8 K14 0x90261E0A, // 006C SETMBR R9 K15 R10
0x88240504, // 006D GETMBR R9 R2 K4 0x88241121, // 006D GETMBR R9 R8 K33
0x90220809, // 006E SETMBR R8 K4 R9 0xB82A0200, // 006E GETNGBL R10 K1
0x88200F1B, // 006F GETMBR R8 R7 K27 0x8C281523, // 006F GETMET R10 R10 K35
0x8820111A, // 0070 GETMBR R8 R8 K26 0x7C280200, // 0070 CALL R10 1
0x8824051A, // 0071 GETMBR R9 R2 K26 0x9026400A, // 0071 SETMBR R9 K32 R10
0x90223409, // 0072 SETMBR R8 K26 R9 0x88241121, // 0072 GETMBR R9 R8 K33
0x88200112, // 0073 GETMBR R8 R0 K18 0x8824130F, // 0073 GETMBR R9 R9 K15
0x8C201113, // 0074 GETMET R8 R8 K19 0x88280511, // 0074 GETMBR R10 R2 K17
0x5C280E00, // 0075 MOVE R10 R7 0x9026220A, // 0075 SETMBR R9 K17 R10
0x7C200400, // 0076 CALL R8 2 0x88241121, // 0076 GETMBR R9 R8 K33
0xB8222800, // 0077 GETNGBL R8 K20 0x8824130F, // 0077 GETMBR R9 R9 K15
0x8C201115, // 0078 GETMET R8 R8 K21 0x88280504, // 0078 GETMBR R10 R2 K4
0x8C280916, // 0079 GETMET R10 R4 K22 0x9026080A, // 0079 SETMBR R9 K4 R10
0x5830001E, // 007A LDCONST R12 K30 0x88241121, // 007A GETMBR R9 R8 K33
0x68340000, // 007B GETUPV R13 U0 0x8824130F, // 007B GETMBR R9 R9 K15
0x88341B18, // 007C GETMBR R13 R13 K24 0x88280505, // 007C GETMBR R10 R2 K5
0x60380008, // 007D GETGBL R14 G8 0x90260A0A, // 007D SETMBR R9 K5 R10
0x5C3C0400, // 007E MOVE R15 R2 0x88241121, // 007E GETMBR R9 R8 K33
0x7C380200, // 007F CALL R14 1 0x88241320, // 007F GETMBR R9 R9 K32
0x5C3C0A00, // 0080 MOVE R15 R5 0x88280520, // 0080 GETMBR R10 R2 K32
0x8840051A, // 0081 GETMBR R16 R2 K26 0x9026400A, // 0081 SETMBR R9 K32 R10
0x8844051A, // 0082 GETMBR R17 R2 K26 0x88240118, // 0082 GETMBR R9 R0 K24
0xB84A0200, // 0083 GETNGBL R18 K1 0x8C241319, // 0083 GETMET R9 R9 K25
0x8848251F, // 0084 GETMBR R18 R18 K31 0x5C2C1000, // 0084 MOVE R11 R8
0x1C442212, // 0085 EQ R17 R17 R18 0x7C240400, // 0085 CALL R9 2
0x78460001, // 0086 JMPF R17 #0089 0xB8263400, // 0086 GETNGBL R9 K26
0x5844001F, // 0087 LDCONST R17 K31 0x8C24131B, // 0087 GETMET R9 R9 K27
0x70020000, // 0088 JMP #008A 0x8C2C091C, // 0088 GETMET R11 R4 K28
0x58440007, // 0089 LDCONST R17 K7 0x58340024, // 0089 LDCONST R13 K36
0x7C280E00, // 008A CALL R10 7 0x68380000, // 008A GETUPV R14 U0
0x582C0019, // 008B LDCONST R11 K25 0x88381D1E, // 008B GETMBR R14 R14 K30
0x7C200600, // 008C CALL R8 3 0x603C0008, // 008C GETGBL R15 G8
0x50200200, // 008D LDBOOL R8 1 0 0x5C400400, // 008D MOVE R16 R2
0x80041000, // 008E RET 1 R8 0x7C3C0200, // 008E CALL R15 1
0x7002000E, // 008F JMP #009F 0x5C400C00, // 008F MOVE R16 R6
0xB81E2800, // 0090 GETNGBL R7 K20 0x88440520, // 0090 GETMBR R17 R2 K32
0x8C1C0F15, // 0091 GETMET R7 R7 K21 0x88480520, // 0091 GETMBR R18 R2 K32
0x8C240916, // 0092 GETMET R9 R4 K22 0xB84E0200, // 0092 GETNGBL R19 K1
0x582C0020, // 0093 LDCONST R11 K32 0x884C2725, // 0093 GETMBR R19 R19 K37
0x68300000, // 0094 GETUPV R12 U0 0x1C482413, // 0094 EQ R18 R18 R19
0x88301918, // 0095 GETMBR R12 R12 K24 0x784A0001, // 0095 JMPF R18 #0098
0x60340008, // 0096 GETGBL R13 G8 0x58480025, // 0096 LDCONST R18 K37
0x5C380400, // 0097 MOVE R14 R2 0x70020000, // 0097 JMP #0099
0x7C340200, // 0098 CALL R13 1 0x58480008, // 0098 LDCONST R18 K8
0x5C380A00, // 0099 MOVE R14 R5 0x7C2C0E00, // 0099 CALL R11 7
0x7C240A00, // 009A CALL R9 5 0x5830001F, // 009A LDCONST R12 K31
0x58280019, // 009B LDCONST R10 K25 0x7C240600, // 009B CALL R9 3
0x7C1C0600, // 009C CALL R7 3 0x50240200, // 009C LDBOOL R9 1 0
0x501C0000, // 009D LDBOOL R7 0 0 0x80041200, // 009D RET 1 R9
0x80040E00, // 009E RET 1 R7 0x7002000E, // 009E JMP #00AE
0x80000000, // 009F RET 0 0xB8223400, // 009F GETNGBL R8 K26
0x8C20111B, // 00A0 GETMET R8 R8 K27
0x8C28091C, // 00A1 GETMET R10 R4 K28
0x58300026, // 00A2 LDCONST R12 K38
0x68340000, // 00A3 GETUPV R13 U0
0x88341B1E, // 00A4 GETMBR R13 R13 K30
0x60380008, // 00A5 GETGBL R14 G8
0x5C3C0400, // 00A6 MOVE R15 R2
0x7C380200, // 00A7 CALL R14 1
0x5C3C0C00, // 00A8 MOVE R15 R6
0x7C280A00, // 00A9 CALL R10 5
0x582C001F, // 00AA LDCONST R11 K31
0x7C200600, // 00AB CALL R8 3
0x50200000, // 00AC LDBOOL R8 0 0
0x80041000, // 00AD RET 1 R8
0x80000000, // 00AE RET 0
}) })
), ),
be_nested_proto( be_nested_proto(

File diff suppressed because it is too large Load Diff