mirror of
https://github.com/arendst/Tasmota.git
synced 2025-07-20 17:26:30 +00:00
Matter implement counter_snd persistance (#18259)
This commit is contained in:
parent
ebe308acfc
commit
a04c771386
@ -69,6 +69,12 @@ static void mc_deinit(bvm *vm, matter_counter_t *c) {
|
||||
}
|
||||
BE_FUNC_CTYPE_DECLARE(mc_deinit, "", "@.")
|
||||
|
||||
// do a unisgned int32 comparison
|
||||
bbool mc_is_greater(uint32_t a, uint32_t b) {
|
||||
return a > b;
|
||||
}
|
||||
BE_FUNC_CTYPE_DECLARE(mc_is_greater, "b", "ii")
|
||||
|
||||
static void mc_reset(matter_counter_t *c, int32_t val) {
|
||||
c->counter = val;
|
||||
c->window.reset();
|
||||
@ -185,6 +191,8 @@ class be_class_Matter_Counter (scope: global, name: Matter_Counter, strings: wea
|
||||
val, ctype_func(mc_val)
|
||||
next, ctype_func(mc_next)
|
||||
validate, ctype_func(mc_validate)
|
||||
|
||||
is_greater, static_ctype_func(mc_is_greater) // compare two numbers as unsigned 32 bits
|
||||
}
|
||||
@const_object_info_end */
|
||||
|
||||
|
@ -275,6 +275,7 @@ class Matter_Device
|
||||
def trigger_read_sensors()
|
||||
import json
|
||||
var rs_json = tasmota.read_sensors()
|
||||
if rs_json == nil return end
|
||||
var rs = json.load(rs_json)
|
||||
if rs != nil
|
||||
|
||||
@ -286,7 +287,7 @@ class Matter_Device
|
||||
end
|
||||
|
||||
else
|
||||
tasmota.log("MTR: unable to parse read_sensors: "+rs_json, 3)
|
||||
tasmota.log("MTR: unable to parse read_sensors: "+str(rs_json), 3)
|
||||
end
|
||||
|
||||
end
|
||||
|
@ -244,7 +244,7 @@ class Matter_Frame
|
||||
end
|
||||
resp.session = self.session # also copy the session object
|
||||
# message counter
|
||||
resp.message_counter = self.session.counter_snd.next()
|
||||
resp.message_counter = self.session.counter_snd_next()
|
||||
resp.local_session_id = self.session.initiator_session_id
|
||||
|
||||
resp.x_flag_i = (self.x_flag_i ? 0 : 1) # invert the initiator flag
|
||||
@ -284,7 +284,7 @@ class Matter_Frame
|
||||
# message counter
|
||||
# if self.session && self.session.initiator_session_id != 0
|
||||
if self.local_session_id != 0 && self.session && self.session.initiator_session_id != 0
|
||||
resp.message_counter = self.session.counter_snd.next()
|
||||
resp.message_counter = self.session.counter_snd_next()
|
||||
resp.local_session_id = self.session.initiator_session_id
|
||||
else
|
||||
resp.message_counter = self.session._counter_insecure_snd.next()
|
||||
@ -327,7 +327,7 @@ class Matter_Frame
|
||||
resp.session = session # also copy the session object
|
||||
# message counter
|
||||
if session && session.initiator_session_id != 0
|
||||
resp.message_counter = session.counter_snd.next()
|
||||
resp.message_counter = session.counter_snd_next()
|
||||
resp.local_session_id = session.initiator_session_id
|
||||
else
|
||||
resp.message_counter = session._counter_insecure_snd.next()
|
||||
|
@ -96,8 +96,8 @@ class Matter_MessageHandler
|
||||
frame.session = session # keep a pointer of the session in the message
|
||||
|
||||
# check if it's a duplicate
|
||||
if !session.counter_rcv.validate(frame.message_counter, true)
|
||||
tasmota.log("MTR: rejected duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv.val()), 3)
|
||||
if !session.counter_rcv_validate(frame.message_counter, true)
|
||||
tasmota.log("MTR: rejected duplicate encrypted message = " + str(frame.message_counter) + " counter=" + str(session.counter_rcv), 3)
|
||||
return false
|
||||
end
|
||||
|
||||
|
@ -228,6 +228,7 @@ matter.Fabric = Matter_Fabric
|
||||
class Matter_Session : Matter_Expirable
|
||||
static var _PASE = 1 # PASE authentication in progress
|
||||
static var _CASE = 2 # CASE authentication in progress
|
||||
static var _COUNTER_SND_INCR = 1024 # counter increased when persisting
|
||||
var _store # reference back to session store
|
||||
# mode for Session. Can be PASE=1, CASE=2, Established=10 none=0
|
||||
var mode
|
||||
@ -244,7 +245,9 @@ class Matter_Session : Matter_Expirable
|
||||
var __future_local_session_id
|
||||
# counters
|
||||
var counter_rcv # counter for incoming messages
|
||||
var counter_snd # counter for outgoing messages
|
||||
var counter_snd # persisted last highest known counter_snd (it is in advance or equal to the actual last used counter_snd)
|
||||
var _counter_rcv_impl # implementation of counter_rcv by matter.Counter()
|
||||
var _counter_snd_impl # implementation of counter_snd by matter.Counter()
|
||||
var _exchange_id # exchange id for locally initiated transaction, non-persistent
|
||||
# keep track of last known IP/Port of the fabric
|
||||
var _ip # IP of the last received packet
|
||||
@ -280,8 +283,13 @@ class Matter_Session : Matter_Expirable
|
||||
self.mode = 0
|
||||
self.local_session_id = local_session_id
|
||||
self.initiator_session_id = initiator_session_id
|
||||
self.counter_rcv = matter.Counter()
|
||||
self.counter_snd = matter.Counter()
|
||||
# self.counter_rcv = matter.Counter()
|
||||
# self.counter_snd = matter.Counter()
|
||||
self._counter_snd_impl = matter.Counter()
|
||||
self._counter_rcv_impl = matter.Counter()
|
||||
self.counter_rcv = 0 # avoid nil values
|
||||
self.counter_snd = self._counter_snd_impl.next() + self._COUNTER_SND_INCR
|
||||
# print(">>>> INIT", "counter_rcv=", self.counter_rcv, "counter_snd=", self.counter_snd)
|
||||
self._counter_insecure_rcv = matter.Counter()
|
||||
self._counter_insecure_snd = matter.Counter()
|
||||
self._breadcrumb = 0
|
||||
@ -291,6 +299,49 @@ class Matter_Session : Matter_Expirable
|
||||
self.update()
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Management of security counters
|
||||
#############################################################
|
||||
# Provide the next counter value, and update the last know persisted if needed
|
||||
#
|
||||
def counter_snd_next()
|
||||
var next = self._counter_snd_impl.next()
|
||||
# print(">>> NEXT counter_snd=", self.counter_snd, "_impl=", self._counter_snd_impl.val())
|
||||
if matter.Counter.is_greater(next, self.counter_snd)
|
||||
if self.does_persist()
|
||||
# the persisted counter is behind the actual counter
|
||||
self.counter_snd = next + self._COUNTER_SND_INCR
|
||||
self.save()
|
||||
else
|
||||
self.counter_snd = next # if no persistance, just keep track
|
||||
end
|
||||
end
|
||||
return next
|
||||
end
|
||||
# #############################################################
|
||||
# # Before savind
|
||||
# def persist_pre()
|
||||
# end
|
||||
|
||||
#############################################################
|
||||
# When hydrating from persistance, update counters
|
||||
def hydrate_post()
|
||||
# reset counter_snd to highest known.
|
||||
# We advance it only in case it is actually used
|
||||
# This avoids updaing counters on dead sessions
|
||||
self._counter_snd_impl.reset(self.counter_snd)
|
||||
self._counter_rcv_impl.reset(self.counter_rcv)
|
||||
self.counter_snd = self._counter_snd_impl.val()
|
||||
self.counter_rcv = self._counter_rcv_impl.val()
|
||||
end
|
||||
#############################################################
|
||||
# Validate received counter
|
||||
def counter_rcv_validate(v, t)
|
||||
var ret = self._counter_rcv_impl.validate(v, t)
|
||||
if ret self.counter_rcv = self._counter_rcv_impl.val() end # update the validated counter
|
||||
return ret
|
||||
end
|
||||
|
||||
#############################################################
|
||||
# Update the timestamp or any other information
|
||||
def update()
|
||||
@ -334,8 +385,10 @@ class Matter_Session : Matter_Expirable
|
||||
# close the PASE session, it will be re-opened with a CASE session
|
||||
self.local_session_id = self.__future_local_session_id
|
||||
self.initiator_session_id = self.__future_initiator_session_id
|
||||
self.counter_rcv.reset()
|
||||
self.counter_snd.reset()
|
||||
self._counter_rcv_impl.reset()
|
||||
self._counter_snd_impl.reset()
|
||||
self.counter_rcv = 0
|
||||
self.counter_snd = self._counter_snd_impl.next()
|
||||
self.i2rkey = nil
|
||||
self._i2r_privacy = nil
|
||||
self.r2ikey = nil
|
||||
@ -470,9 +523,7 @@ class Matter_Session : Matter_Expirable
|
||||
var v = introspect.get(self, k)
|
||||
if v == nil continue end
|
||||
|
||||
if k == "counter_rcv" v = v.val()
|
||||
elif k == "counter_snd" v = v.next() + 256 # take a margin to avoid reusing the same counter
|
||||
elif isinstance(v, bytes) v = "$$" + v.tob64() # bytes
|
||||
if isinstance(v, bytes) v = "$$" + v.tob64() # bytes
|
||||
elif type(v) == 'instance' continue # skip any other instance
|
||||
end
|
||||
|
||||
@ -495,21 +546,17 @@ class Matter_Session : Matter_Expirable
|
||||
|
||||
for k:values.keys()
|
||||
var v = values[k]
|
||||
if k == "counter_rcv" self.counter_rcv.reset(int(v))
|
||||
elif k == "counter_snd" self.counter_snd.reset(int(v))
|
||||
else
|
||||
# standard values
|
||||
if type(v) == 'string'
|
||||
if string.find(v, "0x") == 0 # treat as bytes
|
||||
introspect.set(self, k, bytes().fromhex(v[2..]))
|
||||
elif string.find(v, "$$") == 0 # treat as bytes
|
||||
introspect.set(self, k, bytes().fromb64(v[2..]))
|
||||
else
|
||||
introspect.set(self, k, v)
|
||||
end
|
||||
# standard values
|
||||
if type(v) == 'string'
|
||||
if string.find(v, "0x") == 0 # treat as bytes
|
||||
introspect.set(self, k, bytes().fromhex(v[2..]))
|
||||
elif string.find(v, "$$") == 0 # treat as bytes
|
||||
introspect.set(self, k, bytes().fromb64(v[2..]))
|
||||
else
|
||||
introspect.set(self, k, v)
|
||||
end
|
||||
else
|
||||
introspect.set(self, k, v)
|
||||
end
|
||||
end
|
||||
self.hydrate_post()
|
||||
|
@ -2961,37 +2961,44 @@ be_local_closure(Matter_Device_trigger_read_sensors, /* name */
|
||||
}),
|
||||
be_str_weak(trigger_read_sensors),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[30]) { /* code */
|
||||
( &(const binstruction[37]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0xB80A0200, // 0001 GETNGBL R2 K1
|
||||
0x8C080502, // 0002 GETMET R2 R2 K2
|
||||
0x7C080200, // 0003 CALL R2 1
|
||||
0x8C0C0303, // 0004 GETMET R3 R1 K3
|
||||
0x5C140400, // 0005 MOVE R5 R2
|
||||
0x7C0C0400, // 0006 CALL R3 2
|
||||
0x4C100000, // 0007 LDNIL R4
|
||||
0x20100604, // 0008 NE R4 R3 R4
|
||||
0x7812000D, // 0009 JMPF R4 #0018
|
||||
0x58100004, // 000A LDCONST R4 K4
|
||||
0x6014000C, // 000B GETGBL R5 G12
|
||||
0x88180105, // 000C GETMBR R6 R0 K5
|
||||
0x7C140200, // 000D CALL R5 1
|
||||
0x14140805, // 000E LT R5 R4 R5
|
||||
0x78160006, // 000F JMPF R5 #0017
|
||||
0x88140105, // 0010 GETMBR R5 R0 K5
|
||||
0x94140A04, // 0011 GETIDX R5 R5 R4
|
||||
0x8C140B06, // 0012 GETMET R5 R5 K6
|
||||
0x5C1C0600, // 0013 MOVE R7 R3
|
||||
0x7C140400, // 0014 CALL R5 2
|
||||
0x00100907, // 0015 ADD R4 R4 K7
|
||||
0x7001FFF3, // 0016 JMP #000B
|
||||
0x70020004, // 0017 JMP #001D
|
||||
0xB8120200, // 0018 GETNGBL R4 K1
|
||||
0x8C100908, // 0019 GETMET R4 R4 K8
|
||||
0x001A1202, // 001A ADD R6 K9 R2
|
||||
0x581C000A, // 001B LDCONST R7 K10
|
||||
0x7C100600, // 001C CALL R4 3
|
||||
0x80000000, // 001D RET 0
|
||||
0x4C0C0000, // 0004 LDNIL R3
|
||||
0x1C0C0403, // 0005 EQ R3 R2 R3
|
||||
0x780E0000, // 0006 JMPF R3 #0008
|
||||
0x80000600, // 0007 RET 0
|
||||
0x8C0C0303, // 0008 GETMET R3 R1 K3
|
||||
0x5C140400, // 0009 MOVE R5 R2
|
||||
0x7C0C0400, // 000A CALL R3 2
|
||||
0x4C100000, // 000B LDNIL R4
|
||||
0x20100604, // 000C NE R4 R3 R4
|
||||
0x7812000D, // 000D JMPF R4 #001C
|
||||
0x58100004, // 000E LDCONST R4 K4
|
||||
0x6014000C, // 000F GETGBL R5 G12
|
||||
0x88180105, // 0010 GETMBR R6 R0 K5
|
||||
0x7C140200, // 0011 CALL R5 1
|
||||
0x14140805, // 0012 LT R5 R4 R5
|
||||
0x78160006, // 0013 JMPF R5 #001B
|
||||
0x88140105, // 0014 GETMBR R5 R0 K5
|
||||
0x94140A04, // 0015 GETIDX R5 R5 R4
|
||||
0x8C140B06, // 0016 GETMET R5 R5 K6
|
||||
0x5C1C0600, // 0017 MOVE R7 R3
|
||||
0x7C140400, // 0018 CALL R5 2
|
||||
0x00100907, // 0019 ADD R4 R4 K7
|
||||
0x7001FFF3, // 001A JMP #000F
|
||||
0x70020007, // 001B JMP #0024
|
||||
0xB8120200, // 001C GETNGBL R4 K1
|
||||
0x8C100908, // 001D GETMET R4 R4 K8
|
||||
0x60180008, // 001E GETGBL R6 G8
|
||||
0x5C1C0400, // 001F MOVE R7 R2
|
||||
0x7C180200, // 0020 CALL R6 1
|
||||
0x001A1206, // 0021 ADD R6 K9 R6
|
||||
0x581C000A, // 0022 LDCONST R7 K10
|
||||
0x7C100600, // 0023 CALL R4 3
|
||||
0x80000000, // 0024 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -446,7 +446,7 @@ be_local_closure(Matter_Frame_build_standalone_ack, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[30]) { /* constants */
|
||||
( &(const bvalue[29]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(string),
|
||||
/* K1 */ be_nested_str_weak(message_handler),
|
||||
/* K2 */ be_nested_str_weak(remote_ip),
|
||||
@ -459,28 +459,27 @@ be_local_closure(Matter_Frame_build_standalone_ack, /* name */
|
||||
/* K9 */ be_const_int(0),
|
||||
/* K10 */ be_nested_str_weak(session),
|
||||
/* K11 */ be_nested_str_weak(message_counter),
|
||||
/* K12 */ be_nested_str_weak(counter_snd),
|
||||
/* K13 */ be_nested_str_weak(next),
|
||||
/* K14 */ be_nested_str_weak(local_session_id),
|
||||
/* K15 */ be_nested_str_weak(initiator_session_id),
|
||||
/* K16 */ be_nested_str_weak(x_flag_i),
|
||||
/* K17 */ be_nested_str_weak(opcode),
|
||||
/* K18 */ be_nested_str_weak(exchange_id),
|
||||
/* K19 */ be_nested_str_weak(protocol_id),
|
||||
/* K20 */ be_nested_str_weak(x_flag_a),
|
||||
/* K21 */ be_nested_str_weak(ack_message_counter),
|
||||
/* K22 */ be_nested_str_weak(x_flag_r),
|
||||
/* K23 */ be_nested_str_weak(tasmota),
|
||||
/* K24 */ be_nested_str_weak(log),
|
||||
/* K25 */ be_nested_str_weak(format),
|
||||
/* K26 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X25s),
|
||||
/* K27 */ be_nested_str_weak(matter),
|
||||
/* K28 */ be_nested_str_weak(get_opcode_name),
|
||||
/* K29 */ be_const_int(3),
|
||||
/* K12 */ be_nested_str_weak(counter_snd_next),
|
||||
/* K13 */ be_nested_str_weak(local_session_id),
|
||||
/* K14 */ be_nested_str_weak(initiator_session_id),
|
||||
/* K15 */ be_nested_str_weak(x_flag_i),
|
||||
/* K16 */ be_nested_str_weak(opcode),
|
||||
/* K17 */ be_nested_str_weak(exchange_id),
|
||||
/* K18 */ be_nested_str_weak(protocol_id),
|
||||
/* K19 */ be_nested_str_weak(x_flag_a),
|
||||
/* K20 */ be_nested_str_weak(ack_message_counter),
|
||||
/* K21 */ be_nested_str_weak(x_flag_r),
|
||||
/* K22 */ be_nested_str_weak(tasmota),
|
||||
/* K23 */ be_nested_str_weak(log),
|
||||
/* K24 */ be_nested_str_weak(format),
|
||||
/* K25 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X25s),
|
||||
/* K26 */ be_nested_str_weak(matter),
|
||||
/* K27 */ be_nested_str_weak(get_opcode_name),
|
||||
/* K28 */ be_const_int(3),
|
||||
}),
|
||||
be_str_weak(build_standalone_ack),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[54]) { /* code */
|
||||
( &(const binstruction[53]) { /* code */
|
||||
0xA4060000, // 0000 IMPORT R1 K0
|
||||
0x60080006, // 0001 GETGBL R2 G6
|
||||
0x5C0C0000, // 0002 MOVE R3 R0
|
||||
@ -501,40 +500,39 @@ be_local_closure(Matter_Frame_build_standalone_ack, /* name */
|
||||
0x880C010A, // 0011 GETMBR R3 R0 K10
|
||||
0x900A1403, // 0012 SETMBR R2 K10 R3
|
||||
0x880C010A, // 0013 GETMBR R3 R0 K10
|
||||
0x880C070C, // 0014 GETMBR R3 R3 K12
|
||||
0x8C0C070D, // 0015 GETMET R3 R3 K13
|
||||
0x7C0C0200, // 0016 CALL R3 1
|
||||
0x900A1603, // 0017 SETMBR R2 K11 R3
|
||||
0x880C010A, // 0018 GETMBR R3 R0 K10
|
||||
0x880C070F, // 0019 GETMBR R3 R3 K15
|
||||
0x900A1C03, // 001A SETMBR R2 K14 R3
|
||||
0x880C0110, // 001B GETMBR R3 R0 K16
|
||||
0x780E0001, // 001C JMPF R3 #001F
|
||||
0x580C0009, // 001D LDCONST R3 K9
|
||||
0x70020000, // 001E JMP #0020
|
||||
0x580C0006, // 001F LDCONST R3 K6
|
||||
0x900A2003, // 0020 SETMBR R2 K16 R3
|
||||
0x540E000F, // 0021 LDINT R3 16
|
||||
0x900A2203, // 0022 SETMBR R2 K17 R3
|
||||
0x880C0112, // 0023 GETMBR R3 R0 K18
|
||||
0x900A2403, // 0024 SETMBR R2 K18 R3
|
||||
0x900A2709, // 0025 SETMBR R2 K19 K9
|
||||
0x900A2906, // 0026 SETMBR R2 K20 K6
|
||||
0x880C010B, // 0027 GETMBR R3 R0 K11
|
||||
0x900A2A03, // 0028 SETMBR R2 K21 R3
|
||||
0x900A2D06, // 0029 SETMBR R2 K22 K6
|
||||
0xB80E2E00, // 002A GETNGBL R3 K23
|
||||
0x8C0C0718, // 002B GETMET R3 R3 K24
|
||||
0x8C140319, // 002C GETMET R5 R1 K25
|
||||
0x581C001A, // 002D LDCONST R7 K26
|
||||
0xB8223600, // 002E GETNGBL R8 K27
|
||||
0x8C20111C, // 002F GETMET R8 R8 K28
|
||||
0x88280511, // 0030 GETMBR R10 R2 K17
|
||||
0x7C200400, // 0031 CALL R8 2
|
||||
0x7C140600, // 0032 CALL R5 3
|
||||
0x5818001D, // 0033 LDCONST R6 K29
|
||||
0x7C0C0600, // 0034 CALL R3 3
|
||||
0x80040400, // 0035 RET 1 R2
|
||||
0x8C0C070C, // 0014 GETMET R3 R3 K12
|
||||
0x7C0C0200, // 0015 CALL R3 1
|
||||
0x900A1603, // 0016 SETMBR R2 K11 R3
|
||||
0x880C010A, // 0017 GETMBR R3 R0 K10
|
||||
0x880C070E, // 0018 GETMBR R3 R3 K14
|
||||
0x900A1A03, // 0019 SETMBR R2 K13 R3
|
||||
0x880C010F, // 001A GETMBR R3 R0 K15
|
||||
0x780E0001, // 001B JMPF R3 #001E
|
||||
0x580C0009, // 001C LDCONST R3 K9
|
||||
0x70020000, // 001D JMP #001F
|
||||
0x580C0006, // 001E LDCONST R3 K6
|
||||
0x900A1E03, // 001F SETMBR R2 K15 R3
|
||||
0x540E000F, // 0020 LDINT R3 16
|
||||
0x900A2003, // 0021 SETMBR R2 K16 R3
|
||||
0x880C0111, // 0022 GETMBR R3 R0 K17
|
||||
0x900A2203, // 0023 SETMBR R2 K17 R3
|
||||
0x900A2509, // 0024 SETMBR R2 K18 K9
|
||||
0x900A2706, // 0025 SETMBR R2 K19 K6
|
||||
0x880C010B, // 0026 GETMBR R3 R0 K11
|
||||
0x900A2803, // 0027 SETMBR R2 K20 R3
|
||||
0x900A2B06, // 0028 SETMBR R2 K21 K6
|
||||
0xB80E2C00, // 0029 GETNGBL R3 K22
|
||||
0x8C0C0717, // 002A GETMET R3 R3 K23
|
||||
0x8C140318, // 002B GETMET R5 R1 K24
|
||||
0x581C0019, // 002C LDCONST R7 K25
|
||||
0xB8223400, // 002D GETNGBL R8 K26
|
||||
0x8C20111B, // 002E GETMET R8 R8 K27
|
||||
0x88280510, // 002F GETMBR R10 R2 K16
|
||||
0x7C200400, // 0030 CALL R8 2
|
||||
0x7C140600, // 0031 CALL R5 3
|
||||
0x5818001C, // 0032 LDCONST R6 K28
|
||||
0x7C0C0600, // 0033 CALL R3 3
|
||||
0x80040400, // 0034 RET 1 R2
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -569,9 +567,9 @@ be_local_closure(Matter_Frame_build_response, /* name */
|
||||
/* K11 */ be_nested_str_weak(local_session_id),
|
||||
/* K12 */ be_nested_str_weak(initiator_session_id),
|
||||
/* K13 */ be_nested_str_weak(message_counter),
|
||||
/* K14 */ be_nested_str_weak(counter_snd),
|
||||
/* K15 */ be_nested_str_weak(next),
|
||||
/* K16 */ be_nested_str_weak(_counter_insecure_snd),
|
||||
/* K14 */ be_nested_str_weak(counter_snd_next),
|
||||
/* K15 */ be_nested_str_weak(_counter_insecure_snd),
|
||||
/* K16 */ be_nested_str_weak(next),
|
||||
/* K17 */ be_nested_str_weak(x_flag_i),
|
||||
/* K18 */ be_nested_str_weak(opcode),
|
||||
/* K19 */ be_nested_str_weak(exchange_id),
|
||||
@ -590,7 +588,7 @@ be_local_closure(Matter_Frame_build_response, /* name */
|
||||
}),
|
||||
be_str_weak(build_response),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[91]) { /* code */
|
||||
( &(const binstruction[90]) { /* code */
|
||||
0xA4120000, // 0000 IMPORT R4 K0
|
||||
0x4C140000, // 0001 LDNIL R5
|
||||
0x1C140605, // 0002 EQ R5 R3 R5
|
||||
@ -616,72 +614,71 @@ be_local_closure(Matter_Frame_build_response, /* name */
|
||||
0x900E1405, // 0016 SETMBR R3 K10 R5
|
||||
0x8814010B, // 0017 GETMBR R5 R0 K11
|
||||
0x20140B09, // 0018 NE R5 R5 K9
|
||||
0x7816000E, // 0019 JMPF R5 #0029
|
||||
0x7816000D, // 0019 JMPF R5 #0028
|
||||
0x8814010A, // 001A GETMBR R5 R0 K10
|
||||
0x7816000C, // 001B JMPF R5 #0029
|
||||
0x7816000B, // 001B JMPF R5 #0028
|
||||
0x8814010A, // 001C GETMBR R5 R0 K10
|
||||
0x88140B0C, // 001D GETMBR R5 R5 K12
|
||||
0x20140B09, // 001E NE R5 R5 K9
|
||||
0x78160008, // 001F JMPF R5 #0029
|
||||
0x78160007, // 001F JMPF R5 #0028
|
||||
0x8814010A, // 0020 GETMBR R5 R0 K10
|
||||
0x88140B0E, // 0021 GETMBR R5 R5 K14
|
||||
0x8C140B0F, // 0022 GETMET R5 R5 K15
|
||||
0x7C140200, // 0023 CALL R5 1
|
||||
0x900E1A05, // 0024 SETMBR R3 K13 R5
|
||||
0x8814010A, // 0025 GETMBR R5 R0 K10
|
||||
0x88140B0C, // 0026 GETMBR R5 R5 K12
|
||||
0x900E1605, // 0027 SETMBR R3 K11 R5
|
||||
0x70020005, // 0028 JMP #002F
|
||||
0x8814010A, // 0029 GETMBR R5 R0 K10
|
||||
0x88140B10, // 002A GETMBR R5 R5 K16
|
||||
0x8C140B0F, // 002B GETMET R5 R5 K15
|
||||
0x7C140200, // 002C CALL R5 1
|
||||
0x900E1A05, // 002D SETMBR R3 K13 R5
|
||||
0x900E1709, // 002E SETMBR R3 K11 K9
|
||||
0x88140111, // 002F GETMBR R5 R0 K17
|
||||
0x78160001, // 0030 JMPF R5 #0033
|
||||
0x58140009, // 0031 LDCONST R5 K9
|
||||
0x70020000, // 0032 JMP #0034
|
||||
0x58140006, // 0033 LDCONST R5 K6
|
||||
0x900E2205, // 0034 SETMBR R3 K17 R5
|
||||
0x900E2401, // 0035 SETMBR R3 K18 R1
|
||||
0x88140113, // 0036 GETMBR R5 R0 K19
|
||||
0x900E2605, // 0037 SETMBR R3 K19 R5
|
||||
0x88140114, // 0038 GETMBR R5 R0 K20
|
||||
0x900E2805, // 0039 SETMBR R3 K20 R5
|
||||
0x88140115, // 003A GETMBR R5 R0 K21
|
||||
0x78160002, // 003B JMPF R5 #003F
|
||||
0x900E2D06, // 003C SETMBR R3 K22 K6
|
||||
0x8814010D, // 003D GETMBR R5 R0 K13
|
||||
0x900E2E05, // 003E SETMBR R3 K23 R5
|
||||
0x780A0001, // 003F JMPF R2 #0042
|
||||
0x58140006, // 0040 LDCONST R5 K6
|
||||
0x70020000, // 0041 JMP #0043
|
||||
0x58140009, // 0042 LDCONST R5 K9
|
||||
0x900E2A05, // 0043 SETMBR R3 K21 R5
|
||||
0x8814070B, // 0044 GETMBR R5 R3 K11
|
||||
0x1C140B09, // 0045 EQ R5 R5 K9
|
||||
0x78160012, // 0046 JMPF R5 #005A
|
||||
0xB8163000, // 0047 GETNGBL R5 K24
|
||||
0x8C140B19, // 0048 GETMET R5 R5 K25
|
||||
0x881C0712, // 0049 GETMBR R7 R3 K18
|
||||
0x7C140400, // 004A CALL R5 2
|
||||
0x5C180A00, // 004B MOVE R6 R5
|
||||
0x741A0004, // 004C JMPT R6 #0052
|
||||
0x8C18091A, // 004D GETMET R6 R4 K26
|
||||
0x5820001B, // 004E LDCONST R8 K27
|
||||
0x88240712, // 004F GETMBR R9 R3 K18
|
||||
0x7C180600, // 0050 CALL R6 3
|
||||
0x5C140C00, // 0051 MOVE R5 R6
|
||||
0xB81A3800, // 0052 GETNGBL R6 K28
|
||||
0x8C180D1D, // 0053 GETMET R6 R6 K29
|
||||
0x8C20091A, // 0054 GETMET R8 R4 K26
|
||||
0x5828001E, // 0055 LDCONST R10 K30
|
||||
0x5C2C0A00, // 0056 MOVE R11 R5
|
||||
0x7C200600, // 0057 CALL R8 3
|
||||
0x5824001F, // 0058 LDCONST R9 K31
|
||||
0x7C180600, // 0059 CALL R6 3
|
||||
0x80040600, // 005A RET 1 R3
|
||||
0x8C140B0E, // 0021 GETMET R5 R5 K14
|
||||
0x7C140200, // 0022 CALL R5 1
|
||||
0x900E1A05, // 0023 SETMBR R3 K13 R5
|
||||
0x8814010A, // 0024 GETMBR R5 R0 K10
|
||||
0x88140B0C, // 0025 GETMBR R5 R5 K12
|
||||
0x900E1605, // 0026 SETMBR R3 K11 R5
|
||||
0x70020005, // 0027 JMP #002E
|
||||
0x8814010A, // 0028 GETMBR R5 R0 K10
|
||||
0x88140B0F, // 0029 GETMBR R5 R5 K15
|
||||
0x8C140B10, // 002A GETMET R5 R5 K16
|
||||
0x7C140200, // 002B CALL R5 1
|
||||
0x900E1A05, // 002C SETMBR R3 K13 R5
|
||||
0x900E1709, // 002D SETMBR R3 K11 K9
|
||||
0x88140111, // 002E GETMBR R5 R0 K17
|
||||
0x78160001, // 002F JMPF R5 #0032
|
||||
0x58140009, // 0030 LDCONST R5 K9
|
||||
0x70020000, // 0031 JMP #0033
|
||||
0x58140006, // 0032 LDCONST R5 K6
|
||||
0x900E2205, // 0033 SETMBR R3 K17 R5
|
||||
0x900E2401, // 0034 SETMBR R3 K18 R1
|
||||
0x88140113, // 0035 GETMBR R5 R0 K19
|
||||
0x900E2605, // 0036 SETMBR R3 K19 R5
|
||||
0x88140114, // 0037 GETMBR R5 R0 K20
|
||||
0x900E2805, // 0038 SETMBR R3 K20 R5
|
||||
0x88140115, // 0039 GETMBR R5 R0 K21
|
||||
0x78160002, // 003A JMPF R5 #003E
|
||||
0x900E2D06, // 003B SETMBR R3 K22 K6
|
||||
0x8814010D, // 003C GETMBR R5 R0 K13
|
||||
0x900E2E05, // 003D SETMBR R3 K23 R5
|
||||
0x780A0001, // 003E JMPF R2 #0041
|
||||
0x58140006, // 003F LDCONST R5 K6
|
||||
0x70020000, // 0040 JMP #0042
|
||||
0x58140009, // 0041 LDCONST R5 K9
|
||||
0x900E2A05, // 0042 SETMBR R3 K21 R5
|
||||
0x8814070B, // 0043 GETMBR R5 R3 K11
|
||||
0x1C140B09, // 0044 EQ R5 R5 K9
|
||||
0x78160012, // 0045 JMPF R5 #0059
|
||||
0xB8163000, // 0046 GETNGBL R5 K24
|
||||
0x8C140B19, // 0047 GETMET R5 R5 K25
|
||||
0x881C0712, // 0048 GETMBR R7 R3 K18
|
||||
0x7C140400, // 0049 CALL R5 2
|
||||
0x5C180A00, // 004A MOVE R6 R5
|
||||
0x741A0004, // 004B JMPT R6 #0051
|
||||
0x8C18091A, // 004C GETMET R6 R4 K26
|
||||
0x5820001B, // 004D LDCONST R8 K27
|
||||
0x88240712, // 004E GETMBR R9 R3 K18
|
||||
0x7C180600, // 004F CALL R6 3
|
||||
0x5C140C00, // 0050 MOVE R5 R6
|
||||
0xB81A3800, // 0051 GETNGBL R6 K28
|
||||
0x8C180D1D, // 0052 GETMET R6 R6 K29
|
||||
0x8C20091A, // 0053 GETMET R8 R4 K26
|
||||
0x5828001E, // 0054 LDCONST R10 K30
|
||||
0x5C2C0A00, // 0055 MOVE R11 R5
|
||||
0x7C200600, // 0056 CALL R8 3
|
||||
0x5824001F, // 0057 LDCONST R9 K31
|
||||
0x7C180600, // 0058 CALL R6 3
|
||||
0x80040600, // 0059 RET 1 R3
|
||||
})
|
||||
)
|
||||
);
|
||||
@ -715,10 +712,10 @@ be_local_closure(Matter_Frame_initiate_response, /* name */
|
||||
/* K10 */ be_nested_str_weak(session),
|
||||
/* K11 */ be_nested_str_weak(initiator_session_id),
|
||||
/* K12 */ be_nested_str_weak(message_counter),
|
||||
/* K13 */ be_nested_str_weak(counter_snd),
|
||||
/* K14 */ be_nested_str_weak(next),
|
||||
/* K15 */ be_nested_str_weak(local_session_id),
|
||||
/* K16 */ be_nested_str_weak(_counter_insecure_snd),
|
||||
/* K13 */ be_nested_str_weak(counter_snd_next),
|
||||
/* K14 */ be_nested_str_weak(local_session_id),
|
||||
/* K15 */ be_nested_str_weak(_counter_insecure_snd),
|
||||
/* K16 */ be_nested_str_weak(next),
|
||||
/* K17 */ be_nested_str_weak(x_flag_i),
|
||||
/* K18 */ be_const_int(1),
|
||||
/* K19 */ be_nested_str_weak(opcode),
|
||||
@ -729,7 +726,7 @@ be_local_closure(Matter_Frame_initiate_response, /* name */
|
||||
}),
|
||||
be_str_weak(initiate_response),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[48]) { /* code */
|
||||
( &(const binstruction[47]) { /* code */
|
||||
0x58140000, // 0000 LDCONST R5 K0
|
||||
0xA41A0200, // 0001 IMPORT R6 K1
|
||||
0x4C1C0000, // 0002 LDNIL R7
|
||||
@ -746,38 +743,37 @@ be_local_closure(Matter_Frame_initiate_response, /* name */
|
||||
0x90120C07, // 000D SETMBR R4 K6 R7
|
||||
0x90121109, // 000E SETMBR R4 K8 K9
|
||||
0x90121401, // 000F SETMBR R4 K10 R1
|
||||
0x78060009, // 0010 JMPF R1 #001B
|
||||
0x78060008, // 0010 JMPF R1 #001A
|
||||
0x881C030B, // 0011 GETMBR R7 R1 K11
|
||||
0x201C0F09, // 0012 NE R7 R7 K9
|
||||
0x781E0006, // 0013 JMPF R7 #001B
|
||||
0x881C030D, // 0014 GETMBR R7 R1 K13
|
||||
0x8C1C0F0E, // 0015 GETMET R7 R7 K14
|
||||
0x7C1C0200, // 0016 CALL R7 1
|
||||
0x90121807, // 0017 SETMBR R4 K12 R7
|
||||
0x881C030B, // 0018 GETMBR R7 R1 K11
|
||||
0x90121E07, // 0019 SETMBR R4 K15 R7
|
||||
0x70020004, // 001A JMP #0020
|
||||
0x881C0310, // 001B GETMBR R7 R1 K16
|
||||
0x8C1C0F0E, // 001C GETMET R7 R7 K14
|
||||
0x7C1C0200, // 001D CALL R7 1
|
||||
0x90121807, // 001E SETMBR R4 K12 R7
|
||||
0x90121F09, // 001F SETMBR R4 K15 K9
|
||||
0x90122312, // 0020 SETMBR R4 K17 K18
|
||||
0x90122602, // 0021 SETMBR R4 K19 R2
|
||||
0x881C0314, // 0022 GETMBR R7 R1 K20
|
||||
0x001C0F12, // 0023 ADD R7 R7 K18
|
||||
0x90062807, // 0024 SETMBR R1 K20 R7
|
||||
0x881C0314, // 0025 GETMBR R7 R1 K20
|
||||
0x5422FFFF, // 0026 LDINT R8 65536
|
||||
0x301C0E08, // 0027 OR R7 R7 R8
|
||||
0x90122A07, // 0028 SETMBR R4 K21 R7
|
||||
0x90122D12, // 0029 SETMBR R4 K22 K18
|
||||
0x780E0001, // 002A JMPF R3 #002D
|
||||
0x581C0012, // 002B LDCONST R7 K18
|
||||
0x70020000, // 002C JMP #002E
|
||||
0x581C0009, // 002D LDCONST R7 K9
|
||||
0x90122E07, // 002E SETMBR R4 K23 R7
|
||||
0x80040800, // 002F RET 1 R4
|
||||
0x781E0005, // 0013 JMPF R7 #001A
|
||||
0x8C1C030D, // 0014 GETMET R7 R1 K13
|
||||
0x7C1C0200, // 0015 CALL R7 1
|
||||
0x90121807, // 0016 SETMBR R4 K12 R7
|
||||
0x881C030B, // 0017 GETMBR R7 R1 K11
|
||||
0x90121C07, // 0018 SETMBR R4 K14 R7
|
||||
0x70020004, // 0019 JMP #001F
|
||||
0x881C030F, // 001A GETMBR R7 R1 K15
|
||||
0x8C1C0F10, // 001B GETMET R7 R7 K16
|
||||
0x7C1C0200, // 001C CALL R7 1
|
||||
0x90121807, // 001D SETMBR R4 K12 R7
|
||||
0x90121D09, // 001E SETMBR R4 K14 K9
|
||||
0x90122312, // 001F SETMBR R4 K17 K18
|
||||
0x90122602, // 0020 SETMBR R4 K19 R2
|
||||
0x881C0314, // 0021 GETMBR R7 R1 K20
|
||||
0x001C0F12, // 0022 ADD R7 R7 K18
|
||||
0x90062807, // 0023 SETMBR R1 K20 R7
|
||||
0x881C0314, // 0024 GETMBR R7 R1 K20
|
||||
0x5422FFFF, // 0025 LDINT R8 65536
|
||||
0x301C0E08, // 0026 OR R7 R7 R8
|
||||
0x90122A07, // 0027 SETMBR R4 K21 R7
|
||||
0x90122D12, // 0028 SETMBR R4 K22 K18
|
||||
0x780E0001, // 0029 JMPF R3 #002C
|
||||
0x581C0012, // 002A LDCONST R7 K18
|
||||
0x70020000, // 002B JMP #002D
|
||||
0x581C0009, // 002C LDCONST R7 K9
|
||||
0x90122E07, // 002D SETMBR R4 K23 R7
|
||||
0x80040800, // 002E RET 1 R4
|
||||
})
|
||||
)
|
||||
);
|
||||
|
@ -19,7 +19,7 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */
|
||||
0, /* has sup protos */
|
||||
NULL, /* no sub protos */
|
||||
1, /* has constants */
|
||||
( &(const bvalue[72]) { /* constants */
|
||||
( &(const bvalue[73]) { /* constants */
|
||||
/* K0 */ be_nested_str_weak(string),
|
||||
/* K1 */ be_nested_str_weak(tasmota),
|
||||
/* K2 */ be_nested_str_weak(log),
|
||||
@ -63,42 +63,43 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */
|
||||
/* K40 */ be_nested_str_weak(MTR_X3A_X20unknown_X20local_session_id_X3D),
|
||||
/* K41 */ be_nested_str_weak(MTR_X3A_X20frame_X3D),
|
||||
/* K42 */ be_nested_str_weak(inspect),
|
||||
/* K43 */ be_nested_str_weak(counter_rcv),
|
||||
/* K43 */ be_nested_str_weak(counter_rcv_validate),
|
||||
/* K44 */ be_nested_str_weak(MTR_X3A_X20rejected_X20duplicate_X20encrypted_X20message_X20_X3D_X20),
|
||||
/* K45 */ be_nested_str_weak(_X20counter_X3D),
|
||||
/* K46 */ be_nested_str_weak(decrypt),
|
||||
/* K47 */ be_nested_str_weak(raw),
|
||||
/* K48 */ be_nested_str_weak(payload_idx),
|
||||
/* K49 */ be_const_int(1),
|
||||
/* K50 */ be_nested_str_weak(MTR_X3A_X20idx_X3D_X25i_X20clear_X3D_X25s),
|
||||
/* K51 */ be_nested_str_weak(MTR_X3A_X20decrypted_X20message_X3A_X20protocol_id_X3A),
|
||||
/* K52 */ be_nested_str_weak(protocol_id),
|
||||
/* K53 */ be_nested_str_weak(_X20opcode_X3D),
|
||||
/* K54 */ be_nested_str_weak(_X20exchange_id_X3D),
|
||||
/* K55 */ be_nested_str_weak(exchange_id),
|
||||
/* K56 */ be_nested_str_weak(MTR_X3A_X20PROTOCOL_ID_SECURE_CHANNEL_X20),
|
||||
/* K57 */ be_nested_str_weak(im),
|
||||
/* K58 */ be_nested_str_weak(process_incoming_ack),
|
||||
/* K59 */ be_nested_str_weak(send_enqueued),
|
||||
/* K60 */ be_nested_str_weak(x_flag_r),
|
||||
/* K61 */ be_nested_str_weak(build_standalone_ack),
|
||||
/* K62 */ be_nested_str_weak(encode_frame),
|
||||
/* K63 */ be_nested_str_weak(encrypt),
|
||||
/* K64 */ be_nested_str_weak(send_response),
|
||||
/* K65 */ be_nested_str_weak(remote_ip),
|
||||
/* K66 */ be_nested_str_weak(remote_port),
|
||||
/* K67 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A),
|
||||
/* K68 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20),
|
||||
/* K69 */ be_nested_str_weak(_X3B),
|
||||
/* K70 */ be_nested_str_weak(debug),
|
||||
/* K71 */ be_nested_str_weak(traceback),
|
||||
/* K46 */ be_nested_str_weak(counter_rcv),
|
||||
/* K47 */ be_nested_str_weak(decrypt),
|
||||
/* K48 */ be_nested_str_weak(raw),
|
||||
/* K49 */ be_nested_str_weak(payload_idx),
|
||||
/* K50 */ be_const_int(1),
|
||||
/* K51 */ be_nested_str_weak(MTR_X3A_X20idx_X3D_X25i_X20clear_X3D_X25s),
|
||||
/* K52 */ be_nested_str_weak(MTR_X3A_X20decrypted_X20message_X3A_X20protocol_id_X3A),
|
||||
/* K53 */ be_nested_str_weak(protocol_id),
|
||||
/* K54 */ be_nested_str_weak(_X20opcode_X3D),
|
||||
/* K55 */ be_nested_str_weak(_X20exchange_id_X3D),
|
||||
/* K56 */ be_nested_str_weak(exchange_id),
|
||||
/* K57 */ be_nested_str_weak(MTR_X3A_X20PROTOCOL_ID_SECURE_CHANNEL_X20),
|
||||
/* K58 */ be_nested_str_weak(im),
|
||||
/* K59 */ be_nested_str_weak(process_incoming_ack),
|
||||
/* K60 */ be_nested_str_weak(send_enqueued),
|
||||
/* K61 */ be_nested_str_weak(x_flag_r),
|
||||
/* K62 */ be_nested_str_weak(build_standalone_ack),
|
||||
/* K63 */ be_nested_str_weak(encode_frame),
|
||||
/* K64 */ be_nested_str_weak(encrypt),
|
||||
/* K65 */ be_nested_str_weak(send_response),
|
||||
/* K66 */ be_nested_str_weak(remote_ip),
|
||||
/* K67 */ be_nested_str_weak(remote_port),
|
||||
/* K68 */ be_nested_str_weak(MTR_X3A_X20ignoring_X20unhandled_X20protocol_id_X3A),
|
||||
/* K69 */ be_nested_str_weak(MTR_X3A_X20MessageHandler_X3A_X3Amsg_received_X20exception_X3A_X20),
|
||||
/* K70 */ be_nested_str_weak(_X3B),
|
||||
/* K71 */ be_nested_str_weak(debug),
|
||||
/* K72 */ be_nested_str_weak(traceback),
|
||||
}),
|
||||
be_str_weak(msg_received),
|
||||
&be_const_str_solidified,
|
||||
( &(const binstruction[328]) { /* code */
|
||||
( &(const binstruction[325]) { /* code */
|
||||
0xA4120000, // 0000 IMPORT R4 K0
|
||||
0x50140000, // 0001 LDBOOL R5 0 0
|
||||
0xA802012E, // 0002 EXBLK 0 #0132
|
||||
0xA802012B, // 0002 EXBLK 0 #012F
|
||||
0xB81A0200, // 0003 GETNGBL R6 K1
|
||||
0x8C180D02, // 0004 GETMET R6 R6 K2
|
||||
0x8C200304, // 0005 GETMET R8 R1 K4
|
||||
@ -213,7 +214,7 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */
|
||||
0x50240200, // 0072 LDBOOL R9 1 0
|
||||
0xA8040001, // 0073 EXBLK 1 1
|
||||
0x80041200, // 0074 RET 1 R9
|
||||
0x700200B7, // 0075 JMP #012E
|
||||
0x700200B4, // 0075 JMP #012B
|
||||
0xB8220200, // 0076 GETNGBL R8 K1
|
||||
0x8C201102, // 0077 GETMET R8 R8 K2
|
||||
0x8C280919, // 0078 GETMET R10 R4 K25
|
||||
@ -257,173 +258,170 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */
|
||||
0x90222603, // 009E SETMBR R8 K19 R3
|
||||
0x90222800, // 009F SETMBR R8 K20 R0
|
||||
0x901A2A08, // 00A0 SETMBR R6 K21 R8
|
||||
0x8824112B, // 00A1 GETMBR R9 R8 K43
|
||||
0x8C241317, // 00A2 GETMET R9 R9 K23
|
||||
0x882C0D18, // 00A3 GETMBR R11 R6 K24
|
||||
0x50300200, // 00A4 LDBOOL R12 1 0
|
||||
0x7C240600, // 00A5 CALL R9 3
|
||||
0x74260011, // 00A6 JMPT R9 #00B9
|
||||
0xB8260200, // 00A7 GETNGBL R9 K1
|
||||
0x8C241302, // 00A8 GETMET R9 R9 K2
|
||||
0x602C0008, // 00A9 GETGBL R11 G8
|
||||
0x88300D18, // 00AA GETMBR R12 R6 K24
|
||||
0x7C2C0200, // 00AB CALL R11 1
|
||||
0x002E580B, // 00AC ADD R11 K44 R11
|
||||
0x002C172D, // 00AD ADD R11 R11 K45
|
||||
0x60300008, // 00AE GETGBL R12 G8
|
||||
0x8834112B, // 00AF GETMBR R13 R8 K43
|
||||
0x8C341B1B, // 00B0 GETMET R13 R13 K27
|
||||
0x7C340200, // 00B1 CALL R13 1
|
||||
0x7C300200, // 00B2 CALL R12 1
|
||||
0x002C160C, // 00B3 ADD R11 R11 R12
|
||||
0x58300011, // 00B4 LDCONST R12 K17
|
||||
0x7C240600, // 00B5 CALL R9 3
|
||||
0x50240000, // 00B6 LDBOOL R9 0 0
|
||||
0xA8040001, // 00B7 EXBLK 1 1
|
||||
0x80041200, // 00B8 RET 1 R9
|
||||
0x8C240D2E, // 00B9 GETMET R9 R6 K46
|
||||
0x7C240200, // 00BA CALL R9 1
|
||||
0x5C281200, // 00BB MOVE R10 R9
|
||||
0x742A0002, // 00BC JMPT R10 #00C0
|
||||
0x50280000, // 00BD LDBOOL R10 0 0
|
||||
0xA8040001, // 00BE EXBLK 1 1
|
||||
0x80041400, // 00BF RET 1 R10
|
||||
0x88280D30, // 00C0 GETMBR R10 R6 K48
|
||||
0x04281531, // 00C1 SUB R10 R10 K49
|
||||
0x402A120A, // 00C2 CONNECT R10 K9 R10
|
||||
0x882C0D2F, // 00C3 GETMBR R11 R6 K47
|
||||
0x9428160A, // 00C4 GETIDX R10 R11 R10
|
||||
0x901A5E0A, // 00C5 SETMBR R6 K47 R10
|
||||
0x88280D2F, // 00C6 GETMBR R10 R6 K47
|
||||
0x40281409, // 00C7 CONNECT R10 R10 R9
|
||||
0xB82A0200, // 00C8 GETNGBL R10 K1
|
||||
0x8C281502, // 00C9 GETMET R10 R10 K2
|
||||
0x8C300919, // 00CA GETMET R12 R4 K25
|
||||
0x58380032, // 00CB LDCONST R14 K50
|
||||
0x883C0D30, // 00CC GETMBR R15 R6 K48
|
||||
0x88400D2F, // 00CD GETMBR R16 R6 K47
|
||||
0x8C402104, // 00CE GETMET R16 R16 K4
|
||||
0x7C400200, // 00CF CALL R16 1
|
||||
0x7C300800, // 00D0 CALL R12 4
|
||||
0x54360003, // 00D1 LDINT R13 4
|
||||
0x7C280600, // 00D2 CALL R10 3
|
||||
0x8C280D1C, // 00D3 GETMET R10 R6 K28
|
||||
0x7C280200, // 00D4 CALL R10 1
|
||||
0xB82A0200, // 00D5 GETNGBL R10 K1
|
||||
0x8C281502, // 00D6 GETMET R10 R10 K2
|
||||
0x60300008, // 00D7 GETGBL R12 G8
|
||||
0x88340D34, // 00D8 GETMBR R13 R6 K52
|
||||
0x7C300200, // 00D9 CALL R12 1
|
||||
0x0032660C, // 00DA ADD R12 K51 R12
|
||||
0x00301935, // 00DB ADD R12 R12 K53
|
||||
0x60340008, // 00DC GETGBL R13 G8
|
||||
0x88380D1F, // 00DD GETMBR R14 R6 K31
|
||||
0x7C340200, // 00DE CALL R13 1
|
||||
0x0030180D, // 00DF ADD R12 R12 R13
|
||||
0x00301936, // 00E0 ADD R12 R12 K54
|
||||
0x60340008, // 00E1 GETGBL R13 G8
|
||||
0x88380D37, // 00E2 GETMBR R14 R6 K55
|
||||
0x543EFFFE, // 00E3 LDINT R15 65535
|
||||
0x2C381C0F, // 00E4 AND R14 R14 R15
|
||||
0x7C340200, // 00E5 CALL R13 1
|
||||
0x0030180D, // 00E6 ADD R12 R12 R13
|
||||
0x58340011, // 00E7 LDCONST R13 K17
|
||||
0x7C280600, // 00E8 CALL R10 3
|
||||
0x8828010B, // 00E9 GETMBR R10 R0 K11
|
||||
0x8C28151D, // 00EA GETMET R10 R10 K29
|
||||
0x88300D1E, // 00EB GETMBR R12 R6 K30
|
||||
0x7C280400, // 00EC CALL R10 2
|
||||
0x88280D34, // 00ED GETMBR R10 R6 K52
|
||||
0x1C2C1509, // 00EE EQ R11 R10 K9
|
||||
0x782E0018, // 00EF JMPF R11 #0109
|
||||
0xB82E0200, // 00F0 GETNGBL R11 K1
|
||||
0x8C2C1702, // 00F1 GETMET R11 R11 K2
|
||||
0xB8360A00, // 00F2 GETNGBL R13 K5
|
||||
0x8C341B2A, // 00F3 GETMET R13 R13 K42
|
||||
0x5C3C0C00, // 00F4 MOVE R15 R6
|
||||
0x7C340400, // 00F5 CALL R13 2
|
||||
0x0036700D, // 00F6 ADD R13 K56 R13
|
||||
0x58380011, // 00F7 LDCONST R14 K17
|
||||
0x7C2C0600, // 00F8 CALL R11 3
|
||||
0x882C0D1F, // 00F9 GETMBR R11 R6 K31
|
||||
0x5432000F, // 00FA LDINT R12 16
|
||||
0x1C2C160C, // 00FB EQ R11 R11 R12
|
||||
0x782E0009, // 00FC JMPF R11 #0107
|
||||
0x882C0139, // 00FD GETMBR R11 R0 K57
|
||||
0x8C2C173A, // 00FE GETMET R11 R11 K58
|
||||
0x5C340C00, // 00FF MOVE R13 R6
|
||||
0x7C2C0400, // 0100 CALL R11 2
|
||||
0x5C141600, // 0101 MOVE R5 R11
|
||||
0x78160003, // 0102 JMPF R5 #0107
|
||||
0x882C0139, // 0103 GETMBR R11 R0 K57
|
||||
0x8C2C173B, // 0104 GETMET R11 R11 K59
|
||||
0x5C340000, // 0105 MOVE R13 R0
|
||||
0x7C2C0400, // 0106 CALL R11 2
|
||||
0x50140200, // 0107 LDBOOL R5 1 0
|
||||
0x70020024, // 0108 JMP #012E
|
||||
0x1C2C1531, // 0109 EQ R11 R10 K49
|
||||
0x782E001A, // 010A JMPF R11 #0126
|
||||
0x882C0139, // 010B GETMBR R11 R0 K57
|
||||
0x8C2C1725, // 010C GETMET R11 R11 K37
|
||||
0x5C340C00, // 010D MOVE R13 R6
|
||||
0x7C2C0400, // 010E CALL R11 2
|
||||
0x5C141600, // 010F MOVE R5 R11
|
||||
0x78160004, // 0110 JMPF R5 #0116
|
||||
0x882C0139, // 0111 GETMBR R11 R0 K57
|
||||
0x8C2C173B, // 0112 GETMET R11 R11 K59
|
||||
0x5C340000, // 0113 MOVE R13 R0
|
||||
0x7C2C0400, // 0114 CALL R11 2
|
||||
0x7002000D, // 0115 JMP #0124
|
||||
0x882C0D3C, // 0116 GETMBR R11 R6 K60
|
||||
0x782E000B, // 0117 JMPF R11 #0124
|
||||
0x8C2C0D3D, // 0118 GETMET R11 R6 K61
|
||||
0x7C2C0200, // 0119 CALL R11 1
|
||||
0x8C30173E, // 011A GETMET R12 R11 K62
|
||||
0x7C300200, // 011B CALL R12 1
|
||||
0x8C30173F, // 011C GETMET R12 R11 K63
|
||||
0x7C300200, // 011D CALL R12 1
|
||||
0x8C300140, // 011E GETMET R12 R0 K64
|
||||
0x8838172F, // 011F GETMBR R14 R11 K47
|
||||
0x883C1741, // 0120 GETMBR R15 R11 K65
|
||||
0x88401742, // 0121 GETMBR R16 R11 K66
|
||||
0x88441718, // 0122 GETMBR R17 R11 K24
|
||||
0x7C300A00, // 0123 CALL R12 5
|
||||
0x50140200, // 0124 LDBOOL R5 1 0
|
||||
0x70020007, // 0125 JMP #012E
|
||||
0xB82E0200, // 0126 GETNGBL R11 K1
|
||||
0x8C2C1702, // 0127 GETMET R11 R11 K2
|
||||
0x60340008, // 0128 GETGBL R13 G8
|
||||
0x5C381400, // 0129 MOVE R14 R10
|
||||
0x7C340200, // 012A CALL R13 1
|
||||
0x0036860D, // 012B ADD R13 K67 R13
|
||||
0x58380011, // 012C LDCONST R14 K17
|
||||
0x7C2C0600, // 012D CALL R11 3
|
||||
0xA8040001, // 012E EXBLK 1 1
|
||||
0x80040A00, // 012F RET 1 R5
|
||||
0xA8040001, // 0130 EXBLK 1 1
|
||||
0x70020014, // 0131 JMP #0147
|
||||
0xAC180002, // 0132 CATCH R6 0 2
|
||||
0x70020011, // 0133 JMP #0146
|
||||
0xB8220200, // 0134 GETNGBL R8 K1
|
||||
0x8C201102, // 0135 GETMET R8 R8 K2
|
||||
0x60280008, // 0136 GETGBL R10 G8
|
||||
0x5C2C0C00, // 0137 MOVE R11 R6
|
||||
0x7C280200, // 0138 CALL R10 1
|
||||
0x002A880A, // 0139 ADD R10 K68 R10
|
||||
0x00281545, // 013A ADD R10 R10 K69
|
||||
0x602C0008, // 013B GETGBL R11 G8
|
||||
0x5C300E00, // 013C MOVE R12 R7
|
||||
0x7C2C0200, // 013D CALL R11 1
|
||||
0x0028140B, // 013E ADD R10 R10 R11
|
||||
0x7C200400, // 013F CALL R8 2
|
||||
0xA4228C00, // 0140 IMPORT R8 K70
|
||||
0x8C241147, // 0141 GETMET R9 R8 K71
|
||||
0x7C240200, // 0142 CALL R9 1
|
||||
0x50240000, // 0143 LDBOOL R9 0 0
|
||||
0x80041200, // 0144 RET 1 R9
|
||||
0x70020000, // 0145 JMP #0147
|
||||
0xB0080000, // 0146 RAISE 2 R0 R0
|
||||
0x80000000, // 0147 RET 0
|
||||
0x8C24112B, // 00A1 GETMET R9 R8 K43
|
||||
0x882C0D18, // 00A2 GETMBR R11 R6 K24
|
||||
0x50300200, // 00A3 LDBOOL R12 1 0
|
||||
0x7C240600, // 00A4 CALL R9 3
|
||||
0x7426000F, // 00A5 JMPT R9 #00B6
|
||||
0xB8260200, // 00A6 GETNGBL R9 K1
|
||||
0x8C241302, // 00A7 GETMET R9 R9 K2
|
||||
0x602C0008, // 00A8 GETGBL R11 G8
|
||||
0x88300D18, // 00A9 GETMBR R12 R6 K24
|
||||
0x7C2C0200, // 00AA CALL R11 1
|
||||
0x002E580B, // 00AB ADD R11 K44 R11
|
||||
0x002C172D, // 00AC ADD R11 R11 K45
|
||||
0x60300008, // 00AD GETGBL R12 G8
|
||||
0x8834112E, // 00AE GETMBR R13 R8 K46
|
||||
0x7C300200, // 00AF CALL R12 1
|
||||
0x002C160C, // 00B0 ADD R11 R11 R12
|
||||
0x58300011, // 00B1 LDCONST R12 K17
|
||||
0x7C240600, // 00B2 CALL R9 3
|
||||
0x50240000, // 00B3 LDBOOL R9 0 0
|
||||
0xA8040001, // 00B4 EXBLK 1 1
|
||||
0x80041200, // 00B5 RET 1 R9
|
||||
0x8C240D2F, // 00B6 GETMET R9 R6 K47
|
||||
0x7C240200, // 00B7 CALL R9 1
|
||||
0x5C281200, // 00B8 MOVE R10 R9
|
||||
0x742A0002, // 00B9 JMPT R10 #00BD
|
||||
0x50280000, // 00BA LDBOOL R10 0 0
|
||||
0xA8040001, // 00BB EXBLK 1 1
|
||||
0x80041400, // 00BC RET 1 R10
|
||||
0x88280D31, // 00BD GETMBR R10 R6 K49
|
||||
0x04281532, // 00BE SUB R10 R10 K50
|
||||
0x402A120A, // 00BF CONNECT R10 K9 R10
|
||||
0x882C0D30, // 00C0 GETMBR R11 R6 K48
|
||||
0x9428160A, // 00C1 GETIDX R10 R11 R10
|
||||
0x901A600A, // 00C2 SETMBR R6 K48 R10
|
||||
0x88280D30, // 00C3 GETMBR R10 R6 K48
|
||||
0x40281409, // 00C4 CONNECT R10 R10 R9
|
||||
0xB82A0200, // 00C5 GETNGBL R10 K1
|
||||
0x8C281502, // 00C6 GETMET R10 R10 K2
|
||||
0x8C300919, // 00C7 GETMET R12 R4 K25
|
||||
0x58380033, // 00C8 LDCONST R14 K51
|
||||
0x883C0D31, // 00C9 GETMBR R15 R6 K49
|
||||
0x88400D30, // 00CA GETMBR R16 R6 K48
|
||||
0x8C402104, // 00CB GETMET R16 R16 K4
|
||||
0x7C400200, // 00CC CALL R16 1
|
||||
0x7C300800, // 00CD CALL R12 4
|
||||
0x54360003, // 00CE LDINT R13 4
|
||||
0x7C280600, // 00CF CALL R10 3
|
||||
0x8C280D1C, // 00D0 GETMET R10 R6 K28
|
||||
0x7C280200, // 00D1 CALL R10 1
|
||||
0xB82A0200, // 00D2 GETNGBL R10 K1
|
||||
0x8C281502, // 00D3 GETMET R10 R10 K2
|
||||
0x60300008, // 00D4 GETGBL R12 G8
|
||||
0x88340D35, // 00D5 GETMBR R13 R6 K53
|
||||
0x7C300200, // 00D6 CALL R12 1
|
||||
0x0032680C, // 00D7 ADD R12 K52 R12
|
||||
0x00301936, // 00D8 ADD R12 R12 K54
|
||||
0x60340008, // 00D9 GETGBL R13 G8
|
||||
0x88380D1F, // 00DA GETMBR R14 R6 K31
|
||||
0x7C340200, // 00DB CALL R13 1
|
||||
0x0030180D, // 00DC ADD R12 R12 R13
|
||||
0x00301937, // 00DD ADD R12 R12 K55
|
||||
0x60340008, // 00DE GETGBL R13 G8
|
||||
0x88380D38, // 00DF GETMBR R14 R6 K56
|
||||
0x543EFFFE, // 00E0 LDINT R15 65535
|
||||
0x2C381C0F, // 00E1 AND R14 R14 R15
|
||||
0x7C340200, // 00E2 CALL R13 1
|
||||
0x0030180D, // 00E3 ADD R12 R12 R13
|
||||
0x58340011, // 00E4 LDCONST R13 K17
|
||||
0x7C280600, // 00E5 CALL R10 3
|
||||
0x8828010B, // 00E6 GETMBR R10 R0 K11
|
||||
0x8C28151D, // 00E7 GETMET R10 R10 K29
|
||||
0x88300D1E, // 00E8 GETMBR R12 R6 K30
|
||||
0x7C280400, // 00E9 CALL R10 2
|
||||
0x88280D35, // 00EA GETMBR R10 R6 K53
|
||||
0x1C2C1509, // 00EB EQ R11 R10 K9
|
||||
0x782E0018, // 00EC JMPF R11 #0106
|
||||
0xB82E0200, // 00ED GETNGBL R11 K1
|
||||
0x8C2C1702, // 00EE GETMET R11 R11 K2
|
||||
0xB8360A00, // 00EF GETNGBL R13 K5
|
||||
0x8C341B2A, // 00F0 GETMET R13 R13 K42
|
||||
0x5C3C0C00, // 00F1 MOVE R15 R6
|
||||
0x7C340400, // 00F2 CALL R13 2
|
||||
0x0036720D, // 00F3 ADD R13 K57 R13
|
||||
0x58380011, // 00F4 LDCONST R14 K17
|
||||
0x7C2C0600, // 00F5 CALL R11 3
|
||||
0x882C0D1F, // 00F6 GETMBR R11 R6 K31
|
||||
0x5432000F, // 00F7 LDINT R12 16
|
||||
0x1C2C160C, // 00F8 EQ R11 R11 R12
|
||||
0x782E0009, // 00F9 JMPF R11 #0104
|
||||
0x882C013A, // 00FA GETMBR R11 R0 K58
|
||||
0x8C2C173B, // 00FB GETMET R11 R11 K59
|
||||
0x5C340C00, // 00FC MOVE R13 R6
|
||||
0x7C2C0400, // 00FD CALL R11 2
|
||||
0x5C141600, // 00FE MOVE R5 R11
|
||||
0x78160003, // 00FF JMPF R5 #0104
|
||||
0x882C013A, // 0100 GETMBR R11 R0 K58
|
||||
0x8C2C173C, // 0101 GETMET R11 R11 K60
|
||||
0x5C340000, // 0102 MOVE R13 R0
|
||||
0x7C2C0400, // 0103 CALL R11 2
|
||||
0x50140200, // 0104 LDBOOL R5 1 0
|
||||
0x70020024, // 0105 JMP #012B
|
||||
0x1C2C1532, // 0106 EQ R11 R10 K50
|
||||
0x782E001A, // 0107 JMPF R11 #0123
|
||||
0x882C013A, // 0108 GETMBR R11 R0 K58
|
||||
0x8C2C1725, // 0109 GETMET R11 R11 K37
|
||||
0x5C340C00, // 010A MOVE R13 R6
|
||||
0x7C2C0400, // 010B CALL R11 2
|
||||
0x5C141600, // 010C MOVE R5 R11
|
||||
0x78160004, // 010D JMPF R5 #0113
|
||||
0x882C013A, // 010E GETMBR R11 R0 K58
|
||||
0x8C2C173C, // 010F GETMET R11 R11 K60
|
||||
0x5C340000, // 0110 MOVE R13 R0
|
||||
0x7C2C0400, // 0111 CALL R11 2
|
||||
0x7002000D, // 0112 JMP #0121
|
||||
0x882C0D3D, // 0113 GETMBR R11 R6 K61
|
||||
0x782E000B, // 0114 JMPF R11 #0121
|
||||
0x8C2C0D3E, // 0115 GETMET R11 R6 K62
|
||||
0x7C2C0200, // 0116 CALL R11 1
|
||||
0x8C30173F, // 0117 GETMET R12 R11 K63
|
||||
0x7C300200, // 0118 CALL R12 1
|
||||
0x8C301740, // 0119 GETMET R12 R11 K64
|
||||
0x7C300200, // 011A CALL R12 1
|
||||
0x8C300141, // 011B GETMET R12 R0 K65
|
||||
0x88381730, // 011C GETMBR R14 R11 K48
|
||||
0x883C1742, // 011D GETMBR R15 R11 K66
|
||||
0x88401743, // 011E GETMBR R16 R11 K67
|
||||
0x88441718, // 011F GETMBR R17 R11 K24
|
||||
0x7C300A00, // 0120 CALL R12 5
|
||||
0x50140200, // 0121 LDBOOL R5 1 0
|
||||
0x70020007, // 0122 JMP #012B
|
||||
0xB82E0200, // 0123 GETNGBL R11 K1
|
||||
0x8C2C1702, // 0124 GETMET R11 R11 K2
|
||||
0x60340008, // 0125 GETGBL R13 G8
|
||||
0x5C381400, // 0126 MOVE R14 R10
|
||||
0x7C340200, // 0127 CALL R13 1
|
||||
0x0036880D, // 0128 ADD R13 K68 R13
|
||||
0x58380011, // 0129 LDCONST R14 K17
|
||||
0x7C2C0600, // 012A CALL R11 3
|
||||
0xA8040001, // 012B EXBLK 1 1
|
||||
0x80040A00, // 012C RET 1 R5
|
||||
0xA8040001, // 012D EXBLK 1 1
|
||||
0x70020014, // 012E JMP #0144
|
||||
0xAC180002, // 012F CATCH R6 0 2
|
||||
0x70020011, // 0130 JMP #0143
|
||||
0xB8220200, // 0131 GETNGBL R8 K1
|
||||
0x8C201102, // 0132 GETMET R8 R8 K2
|
||||
0x60280008, // 0133 GETGBL R10 G8
|
||||
0x5C2C0C00, // 0134 MOVE R11 R6
|
||||
0x7C280200, // 0135 CALL R10 1
|
||||
0x002A8A0A, // 0136 ADD R10 K69 R10
|
||||
0x00281546, // 0137 ADD R10 R10 K70
|
||||
0x602C0008, // 0138 GETGBL R11 G8
|
||||
0x5C300E00, // 0139 MOVE R12 R7
|
||||
0x7C2C0200, // 013A CALL R11 1
|
||||
0x0028140B, // 013B ADD R10 R10 R11
|
||||
0x7C200400, // 013C CALL R8 2
|
||||
0xA4228E00, // 013D IMPORT R8 K71
|
||||
0x8C241148, // 013E GETMET R9 R8 K72
|
||||
0x7C240200, // 013F CALL R9 1
|
||||
0x50240000, // 0140 LDBOOL R9 0 0
|
||||
0x80041200, // 0141 RET 1 R9
|
||||
0x70020000, // 0142 JMP #0144
|
||||
0xB0080000, // 0143 RAISE 2 R0 R0
|
||||
0x80000000, // 0144 RET 0
|
||||
})
|
||||
)
|
||||
);
|
||||
|
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user