diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be index 0a027affd..d2a5a0fa9 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Commissioning.be @@ -63,7 +63,7 @@ class Matter_Commisioning_Context self.window_open = true # auto-commissioning for now end - def process_incoming(msg, remote_ip, remote_port) + def process_incoming(msg) # if !self.window_open tasmota.log("MTR: commissioning not open", 2) @@ -72,21 +72,21 @@ class Matter_Commisioning_Context tasmota.log("MTR: received message " + matter.inspect(msg), 3) if msg.opcode == 0x20 - return self.parse_PBKDFParamRequest(msg, remote_ip, remote_port) + return self.parse_PBKDFParamRequest(msg) elif msg.opcode == 0x22 - return self.parse_Pake1(msg, remote_ip, remote_port) + return self.parse_Pake1(msg) elif msg.opcode == 0x24 - return self.parse_Pake3(msg, remote_ip, remote_port) + return self.parse_Pake3(msg) elif msg.opcode == 0x30 - return self.parse_Sigma1(msg, remote_ip, remote_port) + return self.parse_Sigma1(msg) elif msg.opcode == 0x32 - return self.parse_Sigma3(msg, remote_ip, remote_port) + return self.parse_Sigma3(msg) end return false end - def parse_PBKDFParamRequest(msg, addr, port) + def parse_PBKDFParamRequest(msg) import crypto # sanity checks if msg.opcode != 0x20 || msg.local_session_id != 0 || msg.protocol_id != 0 @@ -122,10 +122,10 @@ class Matter_Commisioning_Context var resp = msg.build_response(0x21 #-PBKDR Response-#, true) var raw = resp.encode(pbkdfparamresp_raw) - self.responder.send_response(raw, addr, port, resp.message_counter) + self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter) end - def parse_Pake1(msg, addr, port) + def parse_Pake1(msg) import crypto # sanity checks if msg.opcode != 0x22 || msg.local_session_id != 0 || msg.protocol_id != 0 @@ -200,10 +200,10 @@ class Matter_Commisioning_Context var resp = msg.build_response(0x23 #-pake-2-#, true) # no reliable flag var raw = resp.encode(pake2_raw) - self.responder.send_response(raw, addr, port, resp.message_counter) + self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter) end - def parse_Pake3(msg, addr, port) + def parse_Pake3(msg) import crypto # sanity checks if msg.opcode != 0x24 || msg.local_session_id != 0 || msg.protocol_id != 0 @@ -241,7 +241,7 @@ class Matter_Commisioning_Context var raw = resp.encode(status_raw) - self.responder.send_response(raw, addr, port, nil) + self.responder.send_response(raw, msg.remote_ip, msg.remote_port, nil) self.responder.add_session(self.future_local_session_id, self.future_initiator_session_id, self.I2RKey, self.R2IKey, self.AttestationChallenge, self.session_timestamp) end @@ -268,7 +268,7 @@ class Matter_Commisioning_Context return nil end - def parse_Sigma1(msg, addr, port) + def parse_Sigma1(msg) import crypto # sanity checks if msg.opcode != 0x30 || msg.local_session_id != 0 || msg.protocol_id != 0 @@ -279,7 +279,15 @@ class Matter_Commisioning_Context self.initiatorEph_pub = sigma1.initiatorEphPubKey # find session - var session = self.find_session_by_destination_id(sigma1.destinationId, sigma1.initiatorRandom) + var is_resumption = (sigma1.resumptionID != nil && sigma1.initiatorResumeMIC != nil) + + # Check that it's a resumption + var session + if is_resumption + session = self.device.sessions.find_session_by_resumption_id(sigma1.resumptionID) + else + session = self.find_session_by_destination_id(sigma1.destinationId, sigma1.initiatorRandom) + end if session == nil raise "valuer_error", "StatusReport(GeneralCode: FAILURE, ProtocolId: SECURE_CHANNEL, ProtocolCode: NO_SHARED_TRUST_ROOTS)" end session.source_node_id = msg.source_node_id session.set_mode(matter.Session.__CASE) @@ -294,8 +302,7 @@ class Matter_Commisioning_Context # Check that it's a resumption - if sigma1.resumptionID != nil && sigma1.initiatorResumeMIC != nil && - session.shared_secret != nil + if is_resumption && session.shared_secret != nil # Resumption p.169 var s1rk_salt = sigma1.initiatorRandom + sigma1.resumptionID var s1rk_info = bytes().fromstring("Sigma1_Resume") @@ -356,7 +363,7 @@ class Matter_Commisioning_Context var resp = msg.build_response(0x33 #-sigma-2-resume-#, true) var raw = resp.encode(sigma2resume_raw) - self.responder.send_response(raw, addr, port, resp.message_counter) + self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter) session.close() session.set_keys(i2r, r2i, ac, session_timestamp) @@ -431,14 +438,14 @@ class Matter_Commisioning_Context var resp = msg.build_response(0x31 #-sigma-2-#, true) # no reliable flag var raw = resp.encode(sigma2_raw) - self.responder.send_response(raw, addr, port, resp.message_counter) + self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter) return true end return true end - def parse_Sigma3(msg, addr, port) + def parse_Sigma3(msg) import crypto # sanity checks if msg.opcode != 0x32 || msg.local_session_id != 0 || msg.protocol_id != 0 @@ -546,7 +553,7 @@ class Matter_Commisioning_Context var raw = resp.encode(status_raw) - self.responder.send_response(raw, addr, port, resp.message_counter) + self.responder.send_response(raw, msg.remote_ip, msg.remote_port, resp.message_counter) session.close() session.set_keys(i2r, r2i, ac, session_timestamp) diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be index 96463cac2..39ba91160 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Device.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Device.be @@ -70,6 +70,7 @@ class Matter_Device # add the default plugin self.plugins.push(matter.Plugin_core(self)) + self.plugins.push(matter.Plugin_Relay(self)) self.start_mdns_announce_hostnames() @@ -267,21 +268,134 @@ class Matter_Device ############################################################# # read an attribute # - def read_attribute(msg, endpoint, cluster, attribute) - var idx = 0 - while idx < size(self.plugins) - var plugin = self.plugins[idx] + # def read_attribute(msg, ctx) + # # dispatch only to plugins that support this endpoint and cluster + # var endpoint = ctx.endpoint + # var cluster = ctx.cluster - var ret = plugin.read_attribute(msg, endpoint, cluster, attribute) - if ret != nil - return ret + # var idx = 0 + # while idx < size(self.plugins) + # var plugin = self.plugins[idx] + + # if plugin.has(cluster, endpoint) + # var ret = plugin.read_attribute(msg, ctx) + # if ret != nil + # return ret + # end + # end + + # idx += 1 + # end + # end + + ############################################################# + # expand attribute list based + # + # called only when expansion is needed, + # so we don't need to report any error since they are ignored + def process_attribute_expansion(ctx, cb) + import string + var endpoint = ctx.endpoint + var endpoint_mono = [ endpoint ] + var endpoint_found = false # did any endpoint match + var cluster = ctx.cluster + var cluster_mono = [ cluster ] + var cluster_found = false + var attribute = ctx.attribute + var attribute_mono = [ attribute ] + var attribute_found = false + + var direct = (ctx.endpoint != nil) && (ctx.cluster != nil) && (ctx.attribute != nil) # true if the target is a precise attribute, false if it results from an expansion and error are ignored + + tasmota.log(string.format("MTR: process_attribute_expansion %s", str(ctx)), 3) + for pi: self.plugins + var ep_list = pi.get_endpoints() # get supported endpoints for this plugin + tasmota.log(string.format("MTR: ep_list %s %s", str(pi), str(ep_list)), 3) + if endpoint != nil + # we have a specific endpoint, make sure it's in the list + if ep_list.find(endpoint) != nil + ep_list = endpoint_mono + endpoint_found = true + else + continue + end end + # ep_list is the actual list of candidate endpoints for this plugin + # iterate on endpoints + for ep: ep_list + # now filter on clusters + var cluster_list = pi.get_cluster_list(ep) + tasmota.log(string.format("MTR: cluster_list %s %s", str(ep), str(cluster_list)), 3) + if cluster != nil + # we have a specific cluster, make sure it's in the list + if cluster_list.find(cluster) != nil + cluster_list = cluster_mono + cluster_found = true + else + continue + end + end + # cluster_list is the actual list of candidate cluster for this pluging and endpoint + for cl: cluster_list + # now filter on attribute + var attr_list = pi.get_attribute_list(ep, cluster) + tasmota.log(string.format("MTR: attr_list %s %s", str(cl), str(attr_list)), 3) + if attribute != nil + # we have a specific attribute, make sure it's in the list + if attr_list.find(attribute) != nil + attr_list = attribute_mono + attribute_found = true + else + continue + end + for at: attr_list + # we now have the complete candidate: ep/cl/at + tasmota.log(string.format("MTR: expansion [%02X]%04X/%04X", ep, cl, at), 3) + ctx.endpoint = ep + ctx.cluster = cl + ctx.attribute = at + var finished = cb(pi, ctx, direct) # call the callback with the plugin and the context + if finished return end + end + end + end + end + end - idx += 1 + # we didn't have any successful match, report an error if direct (non-expansion request) + if direct + # since it's a direct request, ctx has already the correct endpoint/cluster/attribute + if !endpoint_found ctx.status = matter.UNSUPPORTED_ENDPOINT + elif !cluster_found ctx.status = matter.UNSUPPORTED_CLUSTER + elif !attribute_found ctx.status = matter.UNSUPPORTED_ATTRIBUTE + else ctx.status = matter.UNREPORTABLE_ATTRIBUTE + end + cb(nil, ctx, true) end end + # def process_read_attribute(ctx) + # self.process_attribute_expansion(ctx, + # / pi, ctx, direct -> pi.read_attribute(ctx)) + # end + ############################################################# + # get active endpoints + # + # return the list of endpoints from all plugins (distinct) + def get_active_endpoints(exclude_zero) + var ret = [] + for p:self.plugins + var e = p.get_endpoints() + for elt:e + if exclude_zero && elt == 0 continue end + if ret.find(elt) == nil + ret.push(elt) + end + end + end + return ret + end ############################################################# # Persistance of Matter Device parameters diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be index 35fdb74d7..e03f17aeb 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM.be @@ -33,6 +33,21 @@ class Matter_Response_container var attribute var command var status + + def tostring() + try + import string + var s = "" + s += (self.endpoint != nil ? string.format("[%02X]", self.endpoint) : "[**]") + s += (self.cluster != nil ? string.format("%04X/", self.cluster) : "****/") + s += (self.attribute != nil ? string.format("%04X", self.attribute) : "") + s += (self.command != nil ? string.format("%04X", self.attribute) : "") + return s + except .. as e, m + return "Exception> " + str(e) + ", " + str(m) + end + end + end matter.Response_container = Matter_Response_container @@ -40,13 +55,17 @@ matter.Response_container = Matter_Response_container # Matter_IM class ################################################################################# class Matter_IM + static var MAX_MESSAGE = 1200 + static var MSG_TIMEOUT = 10000 # 10s var responder + var device - def init(responder) + def init(responder, device) self.responder = responder + self.device = device end - def process_incoming(msg, remote_ip, remote_port) + def process_incoming(msg) # messages are always TLV, decode payload tasmota.log("MTR: received IM message " + matter.inspect(msg), 3) @@ -59,25 +78,25 @@ class Matter_IM var opcode = msg.opcode if opcode == 0x01 # Status Response - return self.process_status_response(msg, val, remote_ip, remote_port) + return self.process_status_response(msg, val) elif opcode == 0x02 # Read Request - return self.process_read_request(msg, val, remote_ip, remote_port) + return self.process_read_request(msg, val) elif opcode == 0x03 # Subscribe Request - return self.subscribe_request(msg, val, remote_ip, remote_port) + return self.subscribe_request(msg, val) elif opcode == 0x04 # Subscribe Response - return self.subscribe_response(msg, val, remote_ip, remote_port) + return self.subscribe_response(msg, val) elif opcode == 0x05 # Report Data - return self.report_data(msg, val, remote_ip, remote_port) + return self.report_data(msg, val) elif opcode == 0x06 # Write Request - return self.process_write_request(msg, val, remote_ip, remote_port) + return self.process_write_request(msg, val) elif opcode == 0x07 # Write Response - return self.process_write_response(msg, val, remote_ip, remote_port) + return self.process_write_response(msg, val) elif opcode == 0x08 # Invoke Request - return self.process_invoke_request(msg, val, remote_ip, remote_port) + return self.process_invoke_request(msg, val) elif opcode == 0x09 # Invoke Response - return self.process_invoke_response(msg, val, remote_ip, remote_port) + return self.process_invoke_response(msg, val) elif opcode == 0x0A # Timed Request - return self.process_timed_request(msg, val, remote_ip, remote_port) + return self.process_timed_request(msg, val) end return false @@ -89,7 +108,7 @@ class Matter_IM # val is the TLV structure # returns `true` if processed, `false` if silently ignored, # or raises an exception - def process_status_response(msg, val, remote_ip, remote_port) + def process_status_response(msg, val) import string var status = val.findsubval(0, 0xFF) tasmota.log(string.format("MTR: Status Response = 0x%02X", status), 3) @@ -102,64 +121,157 @@ class Matter_IM # val is the TLV structure # returns `true` if processed, `false` if silently ignored, # or raises an exception - def process_read_request(msg, val, remote_ip, remote_port) + def process_read_request(msg, val) + var endpoints = self.device.get_active_endpoints() + + ### Inner function to be iterated upon + # ret is the ReportDataMessage list to send back + # ctx is the context with endpoint/cluster/attribute + # direct is true if error is reported, false if error is silently ignored + # + # if `pi` is nil, just report the status for ctx.status + # + # should return true if answered, false if passing to next handler + def read_single_attribute(ret, pi, ctx, direct) + import string + var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) + attr_name = attr_name ? " (" + attr_name + ")" : "" + # tasmota.log(string.format("MTR: Read Attribute " + str(ctx) + (attr_name ? " (" + attr_name + ")" : ""), 2) + # Special case to report unsupported item, if pi==nil + var res = (pi != nil) ? pi.read_attribute(msg, ctx) : nil + if res != nil + var a1 = matter.AttributeReportIB() + a1.attribute_data = matter.AttributeDataIB() + a1.attribute_data.data_version = 1 + a1.attribute_data.path = matter.AttributePathIB() + a1.attribute_data.path.endpoint = ctx.endpoint + a1.attribute_data.path.cluster = ctx.cluster + a1.attribute_data.path.attribute = ctx.attribute + a1.attribute_data.data = res + + ret.attribute_reports.push(a1) + tasmota.log(string.format("MTR: Read_Attr %s%s - %s", str(ctx), attr_name, str(res)), 2) + return true # stop expansion since we have a value + elif ctx.status != nil + if direct + var a1 = matter.AttributeReportIB() + a1.attribute_status = matter.AttributeStatusIB() + a1.attribute_status.path = matter.AttributePathIB() + a1.attribute_status.status = matter.StatusIB() + a1.attribute_status.path.endpoint = ctx.endpoint + a1.attribute_status.path.cluster = ctx.cluster + a1.attribute_status.path.attribute = ctx.attribute + a1.attribute_status.status.status = ctx.status + + ret.attribute_reports.push(a1) + tasmota.log(string.format("MTR: Read_Attr %s%s - STATUS: 0x%02X %s", str(ctx), attr_name, ctx.status, ctx.status == matter.UNSUPPORTED_ATTRIBUTE ? "UNSUPPORTED_ATTRIBUTE" : ""), 2) + return true + end + else + tasmota.log(string.format("MTR: Read_Attr %s%s - IGNORED", str(ctx), attr_name), 2) + # ignore if content is nil and status is undefined + end + end + # structure is `ReadRequestMessage` 10.6.2 p.558 tasmota.log("MTR: IM:read_request processing start", 3) + var ctx = matter.Response_container() var query = matter.ReadRequestMessage().from_TLV(val) if query.attributes_requests != nil # prepare the response var ret = matter.ReportDataMessage() - ret.suppress_response = true + # ret.suppress_response = true ret.attribute_reports = [] - # TODO - we need to implement Concrete path expansion here - for q:query.attributes_requests - var attr_name = matter.get_attribute_name(q.cluster, q.attribute) - tasmota.log("MTR: Read Attribute " + str(q) + (attr_name ? " (" + attr_name + ")" : ""), 2) - var res = self.responder.device.read_attribute(msg, q.endpoint, q.cluster, q.attribute) - if res != nil - var a1 = matter.AttributeReportIB() - # a1.attribute_status = matter.AttributeStatusIB() - # a1.attribute_status.path = matter.AttributePathIB() - # a1.attribute_status.status = matter.StatusIB() - # a1.attribute_status.path.endpoint = 0 - # a1.attribute_status.path.cluster = q.cluster - # a1.attribute_status.path.attribute = q.attribute - # a1.attribute_status.status.status = matter.SUCCESS - a1.attribute_data = matter.AttributeDataIB() - a1.attribute_data.data_version = 1 - a1.attribute_data.path = matter.AttributePathIB() - a1.attribute_data.path.endpoint = 0 - a1.attribute_data.path.cluster = q.cluster - a1.attribute_data.path.attribute = q.attribute - a1.attribute_data.data = res - - ret.attribute_reports.push(a1) + # need to do expansion here + ctx.endpoint = q.endpoint + ctx.cluster = q.cluster + ctx.attribute = q.attribute + ctx.status = matter.UNSUPPORTED_ATTRIBUTE #default error if returned `nil` + + # expand endpoint + if ctx.endpoint == nil || ctx.cluster == nil || ctx.attribute == nil + # we need expansion, log first + if ctx.cluster != nil && ctx.attribute != nil + var attr_name = matter.get_attribute_name(ctx.cluster, ctx.attribute) + tasmota.log("MTR: Read_Attr " + str(ctx) + (attr_name ? " (" + attr_name + ")" : ""), 2) + else + tasmota.log("MTR: Read_Attr " + str(ctx), 2) + end + end + + # implement concrete expansion + self.device.process_attribute_expansion(ctx, + / pi, ctx, direct -> read_single_attribute(ret, pi, ctx, direct) + ) end tasmota.log("MTR: ReportDataMessage=" + str(ret), 3) tasmota.log("MTR: ReportDataMessageTLV=" + str(ret.to_TLV()), 3) - var resp = msg.build_response(0x05 #-Report Data-#, true) - resp.encode(ret.to_TLV().encode()) # payload in cleartext - resp.encrypt() - - self.responder.send_response(resp.raw, remote_ip, remote_port, resp.message_counter) + # send the reponse that may need to be chunked if too large to fit in a single UDP message + self.send_attr_report(msg, ret) end return true end + def send_attr_report(msg, ret) + # class to keep the current chunked reponse + class Matter_Attr_Report + var ret # return structure as ReportDataMessage TLV structure + var resp # response Frame (to keep all fields like session or remote_ip/port) + var expiration + end + + # compute the acceptable size + + var msg_sz = 0 + var elements = 0 + if size(ret.attribute_reports) > 0 + msg_sz = size(ret.attribute_reports[0].to_TLV().encode()) + elements = 1 + end + while msg_sz < self.MAX_MESSAGE && elements < size(ret.attribute_reports) + var next_sz = size(ret.attribute_reports[elements].to_TLV().encode()) + if msg_sz + next_sz < self.MAX_MESSAGE + msg_sz += next_sz + elements += 1 + end + end + + var next_elemnts = ret.attribute_reports[elements .. ] + ret.attribute_reports = ret.attribute_reports[0 .. elements - 1] + + if size(next_elemnts) > 0 + ret.more_chunked_messages = true + end + + var resp = msg.build_response(0x05 #-Report Data-#, true) + resp.encode(ret.to_TLV().encode()) # payload in cleartext + resp.encrypt() + self.responder.send_response(resp.raw, msg.remote_ip, msg.remote_port, resp.message_counter) + + if size(next_elemnts) > 0 + ret.attribute_reports = next_elemnts + var chunked_next = Matter_Attr_Report() + chunked_next.ret = ret + chunked_next.resp = resp + chunked_next.expiration = tasmota.millis() + self.MSG_TIMEOUT + end + + end + ############################################################# # process IM 0x08 Invoke Request # # val is the TLV structure # returns `true` if processed, `false` if silently ignored, # or raises an exception - def process_invoke_request(msg, val, remote_ip, remote_port) + def process_invoke_request(msg, val) import string # structure is `ReadRequestMessage` 10.6.2 p.558 tasmota.log("MTR: IM:invoke_request processing start", 3) @@ -180,7 +292,7 @@ class Matter_IM var cmd_name = matter.get_command_name(ctx.cluster, ctx.command) if cmd_name == nil cmd_name = string.format("0x%04X/0x02X", ctx.cluster, ctx.command) end - tasmota.log(string.format("MTR: >Received_cmd %s from [%s]:%i", cmd_name, remote_ip, remote_port), 2) + tasmota.log(string.format("MTR: >Received_cmd %s from [%s]:%i", cmd_name, msg.remote_ip, msg.remote_port), 2) var res = self.responder.device.invoke_request(msg, q.command_fields, ctx) var a1 = matter.InvokeResponseIB() if res != nil @@ -218,13 +330,13 @@ class Matter_IM resp.encode(ret.to_TLV().encode()) # payload in cleartext resp.encrypt() - self.responder.send_response(resp.raw, remote_ip, remote_port, resp.message_counter) + self.responder.send_response(resp.raw, msg.remote_ip, msg.remote_port, resp.message_counter) elif msg.x_flag_r # nothing to respond, check if we need a standalone ack var resp = msg.build_standalone_ack() resp.encode() resp.encrypt() # no ecnryption required for ACK - self.responder.send_response(resp.raw, remote_ip, remote_port, resp.message_counter) + self.responder.send_response(resp.raw, msg.remote_ip, msg.remote_port, resp.message_counter) end end end @@ -232,7 +344,7 @@ class Matter_IM ############################################################# # process IM 0x03 Subscribe Request # - def subscribe_request(msg, val, remote_ip, remote_port) + def subscribe_request(msg, val) import string var query = matter.SubscribeRequestMessage().from_TLV(val) tasmota.log("MTR: received SubscribeRequestMessage=" + str(query), 3) @@ -242,7 +354,7 @@ class Matter_IM ############################################################# # process IM 0x04 Subscribe Response # - def subscribe_response(msg, val, remote_ip, remote_port) + def subscribe_response(msg, val) import string var query = matter.SubscribeResponseMessage().from_TLV(val) tasmota.log("MTR: received SubscribeResponsetMessage=" + str(query), 3) @@ -252,7 +364,7 @@ class Matter_IM ############################################################# # process IM 0x05 ReportData # - def report_data(msg, val, remote_ip, remote_port) + def report_data(msg, val) import string var query = matter.ReportDataMessage().from_TLV(val) tasmota.log("MTR: received ReportDataMessage=" + str(query), 3) @@ -262,7 +374,7 @@ class Matter_IM ############################################################# # process IM 0x06 Write Request # - def process_write_request(msg, val, remote_ip, remote_port) + def process_write_request(msg, val) import string var query = matter.WriteRequestMessage().from_TLV(val) tasmota.log("MTR: received WriteRequestMessage=" + str(query), 3) @@ -272,7 +384,7 @@ class Matter_IM ############################################################# # process IM 0x07 Write Response # - def process_write_response(msg, val, remote_ip, remote_port) + def process_write_response(msg, val) import string var query = matter.WriteResponseMessage().from_TLV(val) tasmota.log("MTR: received WriteResponseMessage=" + str(query), 3) @@ -282,7 +394,7 @@ class Matter_IM ############################################################# # process IM 0x09 Invoke Response # - def process_invoke_response(msg, val, remote_ip, remote_port) + def process_invoke_response(msg, val) import string var query = matter.InvokeResponseMessage().from_TLV(val) tasmota.log("MTR: received InvokeResponseMessage=" + str(query), 3) @@ -292,12 +404,12 @@ class Matter_IM ############################################################# # process IM 0x0A Timed Request # - def process_timed_request(msg, val, remote_ip, remote_port) + def process_timed_request(msg, val) import string var query = matter.TimedRequestMessage().from_TLV(val) tasmota.log("MTR: received TimedRequestMessage=" + str(query), 3) - tasmota.log(string.format("MTR: >Received_IM TimedRequest=%i from [%s]:%i", query.timeout, remote_ip, remote_port), 2) + tasmota.log(string.format("MTR: >Received_IM TimedRequest=%i from [%s]:%i", query.timeout, msg.remote_ip, msg.remote_port), 2) # Send success status report var sr = matter.StatusResponseMessage() @@ -305,7 +417,7 @@ class Matter_IM var resp = msg.build_response(0x01 #-Status Response-#, true #-reliable-#) resp.encode(sr.to_TLV().encode()) # payload in cleartext resp.encrypt() - self.responder.send_response(resp.raw, remote_ip, remote_port, resp.message_counter) + self.responder.send_response(resp.raw, msg.remote_ip, msg.remote_port, resp.message_counter) return true end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Data.be b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Data.be index b6f367bc9..f1159ff36 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_IM_Data.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_IM_Data.be @@ -546,7 +546,7 @@ class Matter_StatusIB : Matter_IM_base def to_TLV() var TLV = matter.TLV - var s = TLV.Matter_TLV_list() + var s = TLV.Matter_TLV_struct() s.add_TLV(0, TLV.U2, self.status) s.add_TLV(1, TLV.U2, self.cluster_status) return s diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be index c9473d68d..8ca41200b 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Message.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Message.be @@ -59,13 +59,17 @@ class Matter_Frame var sec_extensions # var var app_payload_idx # index where the application payload starts + # for UDP, remote_ip and remote_port to send back to + var remote_ip, remote_port ############################################################# # keep track of the message_handler object # - def init(message_handler, raw) + def init(message_handler, raw, addr, port) self.message_handler = message_handler self.raw = raw + self.remote_ip = addr + self.remote_port = port end ############################################################# @@ -259,6 +263,9 @@ class Matter_Frame # send back response var resp = classof(self)(self.message_handler) + resp.remote_ip = self.remote_ip + resp.remote_port = self.remote_port + if self.flag_s resp.flag_dsiz = 0x01 resp.dest_node_id_8 = self.source_node_id diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be index 1da587803..4da3c5668 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_MessageHandler.be @@ -35,7 +35,7 @@ class Matter_MessageHandler def init(device) self.device = device self.commissioning = matter.Commisioning_Context(self) - self.im = matter.IM(self) + self.im = matter.IM(self, device) self.counter_rcv = matter.Counter() end @@ -49,7 +49,7 @@ class Matter_MessageHandler import string try tasmota.log("MTR: MessageHandler::msg_received raw="+raw.tohex(), 4) - var frame = matter.Frame(self, raw) + var frame = matter.Frame(self, raw, addr, port) var ok = frame.decode_header() if !ok return false end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be index fb3c170de..d66ecbe92 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin.be @@ -23,14 +23,18 @@ #@ solidify:Matter_Plugin,weak class Matter_Plugin - var device - var endpoints + static var EMPTY_LIST = [] + static var EMPTY_MAP = {} + var device # reference to the `device` global object + var endpoints # list of supported endpoints + var clusters # map from cluster to list of attributes ############################################################# # Constructor def init(device) self.device = device - self.endpoints = [] + self.endpoints = self.EMPTY_LIST + self.clusters = self.EMPTY_LIST end ############################################################# @@ -38,10 +42,29 @@ class Matter_Plugin def get_endpoints() return self.endpoints end + def get_cluster_map() + return self.clusters + end + def get_cluster_list(ep) + var ret = [] + for k: self.clusters.keys() + ret.push(k) + end + return ret + end + def get_attribute_list(ep, cluster) + return self.clusters.find(cluster, self.EMPTY_LIST) + end + + ############################################################# + # Does it handle this endpoint and this cluster + def has(cluster, endpoint) + return self.clusters.contains(cluster) && self.endpoints.find(endpoint) != nil + end ############################################################# # read attribute - def read_attribute(msg, endpoint, cluster, attribute) + def read_attribute(msg, ctx) return nil end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Relay.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Relay.be index 3a923246d..8721cca93 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Relay.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_Relay.be @@ -25,18 +25,59 @@ class Matter_Plugin end #@ solidify:Matter_Plugin_Relay,weak class Matter_Plugin_Relay : Matter_Plugin + static var ENDPOINTS = [ 1 ] + static var CLUSTERS = { + 0x001D: [0,1,2,3], + 0x0003: [], + 0x0004: [], + 0x0005: [], + 0x0006: [0], + 0x0008: [], +# 0x0406: [] + } + static var TYPES = [ 0x0100 ] # On/Off Light + ############################################################# # Constructor def init(device) super(self).init(device) - self.endpoints = [ 1 ] + self.endpoints = self.ENDPOINTS + self.clusters = self.CLUSTERS end ############################################################# # read an attribute # - def read_attribute(msg, endpoint, cluster, attribute) - # no match found, return that the attribute is unsupported + def read_attribute(msg, ctx) + import string + var TLV = matter.TLV + var cluster = ctx.cluster + var attribute = ctx.attribute + + if cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ========== + + if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ---------- + var dtl = TLV.Matter_TLV_array() + var d1 = dtl.add_struct() + d1.add_TLV(0, TLV.U2, self.TYPES[0]) # DeviceType + d1.add_TLV(1, TLV.U2, 1) # Revision + return dtl + elif attribute == 0x0001 # ---------- ServerList / list[cluster-id] ---------- + var sl = TLV.Matter_TLV_array() + for cl: self.get_cluster_list() + sl.add_TLV(nil, TLV.U4, cl) + end + return sl + elif attribute == 0x0002 # ---------- ClientList / list[cluster-id] ---------- + var cl = TLV.Matter_TLV_array() + cl.add_TLV(nil, TLV.U2, 0x0006) + return cl + elif attribute == 0x0003 # ---------- PartsList / list[endpoint-no]---------- + var pl = TLV.Matter_TLV_array() + return pl + end + end + # no match found, return that the attribute is unsupported end end ############################################################# diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_core.be b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_core.be index 217c76c23..4c8929cff 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_core.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Plugin_core.be @@ -25,19 +25,39 @@ class Matter_Plugin end #@ solidify:Matter_Plugin_core,weak class Matter_Plugin_core : Matter_Plugin + static var ENDPOINTS = [ 0 ] + static var CLUSTERS = { + 0x001D: [0,1,2,3], + 0x0028: [0,1,2,3,4,5,6,7,8,9], + 0x002B: [0,1], + 0x002C: [0,1,2], + 0x0030: [0,1,2,3,4], + 0x0031: [3,0xFFFC], + 0x0032: [], + 0x0033: [0,1,2,8], + 0x0034: [], + 0x0038: [0,1,7], + 0x003E: [0,1,2,3,4,5], + 0x003C: [], + 0x003F: [] + } + ############################################################# # Constructor def init(device) super(self).init(device) - self.endpoints = [ 0 ] + self.endpoints = self.ENDPOINTS + self.clusters = self.CLUSTERS end ############################################################# # read an attribute # - def read_attribute(msg, endpoint, cluster, attribute) + def read_attribute(msg, ctx) import string var TLV = matter.TLV + var cluster = ctx.cluster + var attribute = ctx.attribute if cluster == 0x0030 # ========== GeneralCommissioning cluster 11.9 p.627 ========== @@ -151,11 +171,15 @@ class Matter_Plugin_core : Matter_Plugin elif attribute == 0x0002 # ---------- SupportedFabrics / u1 ---------- return TLV.create_TLV(TLV.U1, 5) # Max 5 fabrics elif attribute == 0x0003 # ---------- CommissionedFabrics / u1 ---------- - return TLV.create_TLV(TLV.U1, 1) # TODO + var sessions_active = self.device.sessions.sessions_active() + return TLV.create_TLV(TLV.U1, size(sessions_active)) # number of active sessions elif attribute == 0x0004 # ---------- TrustedRootCertificates / list[octstr] ---------- # TODO elif attribute == 0x0005 # ---------- Current­ FabricIndex / u1 ---------- - # TODO + var sessions_active = self.device.sessions.sessions_active() + var fabric_index = sessions_active.find(msg.session) + if fabric_index == nil fabric_index = 0 end + return TLV.create_TLV(TLV.U1, fabric_index) # number of active sessions end # ==================================================================================================== @@ -224,6 +248,31 @@ class Matter_Plugin_core : Matter_Plugin elif attribute == 0xFFFC # ---------- FeatureMap / map32 ---------- return TLV.create_TLV(TLV.U4, 0) # 15s ??? TOOD what should we put here? end + + # ==================================================================================================== + elif cluster == 0x001D # ========== Descriptor Cluster 9.5 p.453 ========== + if attribute == 0x0000 # ---------- DeviceTypeList / list[DeviceTypeStruct] ---------- + elif attribute == 0x0001 # ---------- ServerList / list[cluster-id] ---------- + var sl = TLV.Matter_TLV_array() + for cl: self.get_cluster_list() + sl.add_TLV(nil, TLV.U4, cl) + end + return sl + elif attribute == 0x0002 # ---------- ClientList / list[cluster-id] ---------- + var cl = TLV.Matter_TLV_array() + return cl + elif attribute == 0x0003 # ---------- PartsList / list[endpoint-no]---------- + var eps = self.device.get_active_endpoints(true) + var pl = TLV.Matter_TLV_array() + for ep: eps + pl.add_TLV(nil, TLV.U2, ep) # add each endpoint + end + return pl + end + + else + ctx.status = matter.UNSUPPORTED_CLUSTER + end # no match found, return that the attribute is unsupported end diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be index 340dccc4c..1f46e0f32 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_Session.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_Session.be @@ -82,6 +82,9 @@ class Matter_Session var _persist # do we persist this sessions or is it remporary var expiration # if not `nil` the entry is removed after this timestamp + # below are placeholders for ongoing transactions or chunked responses + var _chunked_attr_reports # if not `nil` holds a container for the current _chuked_attr_reports + # Group Key Derivation static var __GROUP_KEY = "GroupKey v1.0" # starting with double `_` means it's not writable @@ -512,6 +515,20 @@ class Matter_Session_Store return session end + ############################################################# + # find session by resumption id + def find_session_by_resumption_id(resumption_id) + if !resumption_id return nil end + var i = 0 + var sessions = self.sessions + while i < size(sessions) + if sessions[i].resumption_id == resumption_id + return sessions[i] + end + i += 1 + end + end + ############################################################# # list of sessions that are active, i.e. have been # successfully commissioned diff --git a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be index 1571af07a..8e927da7c 100644 --- a/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be +++ b/lib/libesp32/berry_matter/src/embedded/Matter_TLV.be @@ -428,6 +428,8 @@ class Matter_TLV # class Matter_TLV_struct var _ end static class Matter_TLV_list : Matter_TLV_item + static var is_struct = false + ################################################################################# def init(parent) super(self).init(parent) @@ -517,8 +519,9 @@ class Matter_TLV end ############################################################# + # encode to bytes def encode(b) - return self._encode_inner(b, false) + return self._encode_inner(b, self.is_struct) end ############################################################# @@ -618,6 +621,8 @@ class Matter_TLV # Matter_TLV_struct class ################################################################################# static class Matter_TLV_struct : Matter_TLV_list + static var is_struct = true + def init(parent) super(self).init(parent) self.typ = self.TLV.STRUCT @@ -628,14 +633,6 @@ class Matter_TLV def tostring() return self.tostring_inner(true, "{", "}") end - - ############################################################# - # encode TLV - # - # appends to the bytes() object - def encode(b) - return self._encode_inner(b, true) - end end ################################################################################# diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h index 4f922fc06..8888f26c3 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Commissioning.h @@ -11,15 +11,15 @@ extern const bclass be_class_Matter_Commisioning_Context; ********************************************************************/ be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name */ be_nested_proto( - 16, /* nstack */ - 4, /* argc */ + 14, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[46]) { /* constants */ + ( &(const bvalue[48]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(opcode), /* K2 */ be_nested_str_weak(local_session_id), @@ -65,104 +65,106 @@ be_local_closure(Matter_Commisioning_Context_parse_PBKDFParamRequest, /* name /* K42 */ be_nested_str_weak(build_response), /* K43 */ be_nested_str_weak(responder), /* K44 */ be_nested_str_weak(send_response), - /* K45 */ be_nested_str_weak(message_counter), + /* K45 */ be_nested_str_weak(remote_ip), + /* K46 */ be_nested_str_weak(remote_port), + /* K47 */ be_nested_str_weak(message_counter), }), be_str_weak(parse_PBKDFParamRequest), &be_const_str_solidified, ( &(const binstruction[94]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x88140301, // 0001 GETMBR R5 R1 K1 - 0x541A001F, // 0002 LDINT R6 32 - 0x20140A06, // 0003 NE R5 R5 R6 - 0x74160005, // 0004 JMPT R5 #000B - 0x88140302, // 0005 GETMBR R5 R1 K2 - 0x20140B03, // 0006 NE R5 R5 K3 - 0x74160002, // 0007 JMPT R5 #000B - 0x88140304, // 0008 GETMBR R5 R1 K4 - 0x20140B03, // 0009 NE R5 R5 K3 - 0x78160000, // 000A JMPF R5 #000C + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x5412001F, // 0002 LDINT R4 32 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x740E0005, // 0004 JMPT R3 #000B + 0x880C0302, // 0005 GETMBR R3 R1 K2 + 0x200C0703, // 0006 NE R3 R3 K3 + 0x740E0002, // 0007 JMPT R3 #000B + 0x880C0304, // 0008 GETMBR R3 R1 K4 + 0x200C0703, // 0009 NE R3 R3 K3 + 0x780E0000, // 000A JMPF R3 #000C 0xB0060B06, // 000B RAISE 1 K5 K6 - 0xB8160E00, // 000C GETNGBL R5 K7 - 0x8C140B08, // 000D GETMET R5 R5 K8 - 0x7C140200, // 000E CALL R5 1 - 0x8C140B09, // 000F GETMET R5 R5 K9 - 0x881C030A, // 0010 GETMBR R7 R1 K10 - 0x8820030B, // 0011 GETMBR R8 R1 K11 - 0x7C140600, // 0012 CALL R5 3 - 0x8818030C, // 0013 GETMBR R6 R1 K12 - 0x8C180D0D, // 0014 GETMET R6 R6 K13 - 0xB8220E00, // 0015 GETNGBL R8 K7 - 0x8820110E, // 0016 GETMBR R8 R8 K14 - 0x8820110F, // 0017 GETMBR R8 R8 K15 - 0x7C180400, // 0018 CALL R6 2 - 0x8818030B, // 0019 GETMBR R6 R1 K11 - 0x40180D10, // 001A CONNECT R6 R6 K16 - 0x881C030A, // 001B GETMBR R7 R1 K10 - 0x94180E06, // 001C GETIDX R6 R7 R6 - 0x90021006, // 001D SETMBR R0 K8 R6 - 0x88180B11, // 001E GETMBR R6 R5 K17 - 0x20180D03, // 001F NE R6 R6 K3 - 0x781A0000, // 0020 JMPF R6 #0022 + 0xB80E0E00, // 000C GETNGBL R3 K7 + 0x8C0C0708, // 000D GETMET R3 R3 K8 + 0x7C0C0200, // 000E CALL R3 1 + 0x8C0C0709, // 000F GETMET R3 R3 K9 + 0x8814030A, // 0010 GETMBR R5 R1 K10 + 0x8818030B, // 0011 GETMBR R6 R1 K11 + 0x7C0C0600, // 0012 CALL R3 3 + 0x8810030C, // 0013 GETMBR R4 R1 K12 + 0x8C10090D, // 0014 GETMET R4 R4 K13 + 0xB81A0E00, // 0015 GETNGBL R6 K7 + 0x88180D0E, // 0016 GETMBR R6 R6 K14 + 0x88180D0F, // 0017 GETMBR R6 R6 K15 + 0x7C100400, // 0018 CALL R4 2 + 0x8810030B, // 0019 GETMBR R4 R1 K11 + 0x40100910, // 001A CONNECT R4 R4 K16 + 0x8814030A, // 001B GETMBR R5 R1 K10 + 0x94100A04, // 001C GETIDX R4 R5 R4 + 0x90021004, // 001D SETMBR R0 K8 R4 + 0x88100711, // 001E GETMBR R4 R3 K17 + 0x20100903, // 001F NE R4 R4 K3 + 0x78120000, // 0020 JMPF R4 #0022 0xB0060B12, // 0021 RAISE 1 K5 K18 - 0x88180B14, // 0022 GETMBR R6 R5 K20 - 0x90022606, // 0023 SETMBR R0 K19 R6 - 0x88180116, // 0024 GETMBR R6 R0 K22 - 0x88180D17, // 0025 GETMBR R6 R6 K23 - 0x8C180D18, // 0026 GETMET R6 R6 K24 - 0x7C180200, // 0027 CALL R6 1 - 0x90022A06, // 0028 SETMBR R0 K21 R6 - 0xB81A0E00, // 0029 GETNGBL R6 K7 - 0x8C180D19, // 002A GETMET R6 R6 K25 - 0x7C180200, // 002B CALL R6 1 - 0x881C0B1A, // 002C GETMBR R7 R5 K26 - 0x901A3407, // 002D SETMBR R6 K26 R7 - 0x8C1C091C, // 002E GETMET R7 R4 K28 - 0x5426001F, // 002F LDINT R9 32 - 0x7C1C0400, // 0030 CALL R7 2 - 0x901A3607, // 0031 SETMBR R6 K27 R7 - 0x881C0115, // 0032 GETMBR R7 R0 K21 - 0x901A3A07, // 0033 SETMBR R6 K29 R7 - 0x881C0116, // 0034 GETMBR R7 R0 K22 - 0x881C0F1F, // 0035 GETMBR R7 R7 K31 - 0x901A3C07, // 0036 SETMBR R6 K30 R7 - 0x881C0116, // 0037 GETMBR R7 R0 K22 - 0x881C0F21, // 0038 GETMBR R7 R7 K33 - 0x901A4007, // 0039 SETMBR R6 K32 R7 - 0xB81E4400, // 003A GETNGBL R7 K34 - 0x8C1C0F23, // 003B GETMET R7 R7 K35 - 0x60240008, // 003C GETGBL R9 G8 - 0xB82A0E00, // 003D GETNGBL R10 K7 - 0x8C281525, // 003E GETMET R10 R10 K37 - 0x5C300C00, // 003F MOVE R12 R6 - 0x7C280400, // 0040 CALL R10 2 - 0x7C240200, // 0041 CALL R9 1 - 0x00264809, // 0042 ADD R9 K36 R9 - 0x58280026, // 0043 LDCONST R10 K38 - 0x7C1C0600, // 0044 CALL R7 3 - 0x8C1C0D27, // 0045 GETMET R7 R6 K39 - 0x7C1C0200, // 0046 CALL R7 1 - 0xB8224400, // 0047 GETNGBL R8 K34 - 0x8C201123, // 0048 GETMET R8 R8 K35 - 0x8C280F29, // 0049 GETMET R10 R7 K41 - 0x7C280200, // 004A CALL R10 1 - 0x002A500A, // 004B ADD R10 K40 R10 - 0x582C0026, // 004C LDCONST R11 K38 - 0x7C200600, // 004D CALL R8 3 - 0x90023207, // 004E SETMBR R0 K25 R7 - 0x8C20032A, // 004F GETMET R8 R1 K42 - 0x542A0020, // 0050 LDINT R10 33 - 0x502C0200, // 0051 LDBOOL R11 1 0 - 0x7C200600, // 0052 CALL R8 3 - 0x8C241127, // 0053 GETMET R9 R8 K39 - 0x5C2C0E00, // 0054 MOVE R11 R7 - 0x7C240400, // 0055 CALL R9 2 - 0x8828012B, // 0056 GETMBR R10 R0 K43 - 0x8C28152C, // 0057 GETMET R10 R10 K44 - 0x5C301200, // 0058 MOVE R12 R9 - 0x5C340400, // 0059 MOVE R13 R2 - 0x5C380600, // 005A MOVE R14 R3 - 0x883C112D, // 005B GETMBR R15 R8 K45 - 0x7C280A00, // 005C CALL R10 5 + 0x88100714, // 0022 GETMBR R4 R3 K20 + 0x90022604, // 0023 SETMBR R0 K19 R4 + 0x88100116, // 0024 GETMBR R4 R0 K22 + 0x88100917, // 0025 GETMBR R4 R4 K23 + 0x8C100918, // 0026 GETMET R4 R4 K24 + 0x7C100200, // 0027 CALL R4 1 + 0x90022A04, // 0028 SETMBR R0 K21 R4 + 0xB8120E00, // 0029 GETNGBL R4 K7 + 0x8C100919, // 002A GETMET R4 R4 K25 + 0x7C100200, // 002B CALL R4 1 + 0x8814071A, // 002C GETMBR R5 R3 K26 + 0x90123405, // 002D SETMBR R4 K26 R5 + 0x8C14051C, // 002E GETMET R5 R2 K28 + 0x541E001F, // 002F LDINT R7 32 + 0x7C140400, // 0030 CALL R5 2 + 0x90123605, // 0031 SETMBR R4 K27 R5 + 0x88140115, // 0032 GETMBR R5 R0 K21 + 0x90123A05, // 0033 SETMBR R4 K29 R5 + 0x88140116, // 0034 GETMBR R5 R0 K22 + 0x88140B1F, // 0035 GETMBR R5 R5 K31 + 0x90123C05, // 0036 SETMBR R4 K30 R5 + 0x88140116, // 0037 GETMBR R5 R0 K22 + 0x88140B21, // 0038 GETMBR R5 R5 K33 + 0x90124005, // 0039 SETMBR R4 K32 R5 + 0xB8164400, // 003A GETNGBL R5 K34 + 0x8C140B23, // 003B GETMET R5 R5 K35 + 0x601C0008, // 003C GETGBL R7 G8 + 0xB8220E00, // 003D GETNGBL R8 K7 + 0x8C201125, // 003E GETMET R8 R8 K37 + 0x5C280800, // 003F MOVE R10 R4 + 0x7C200400, // 0040 CALL R8 2 + 0x7C1C0200, // 0041 CALL R7 1 + 0x001E4807, // 0042 ADD R7 K36 R7 + 0x58200026, // 0043 LDCONST R8 K38 + 0x7C140600, // 0044 CALL R5 3 + 0x8C140927, // 0045 GETMET R5 R4 K39 + 0x7C140200, // 0046 CALL R5 1 + 0xB81A4400, // 0047 GETNGBL R6 K34 + 0x8C180D23, // 0048 GETMET R6 R6 K35 + 0x8C200B29, // 0049 GETMET R8 R5 K41 + 0x7C200200, // 004A CALL R8 1 + 0x00225008, // 004B ADD R8 K40 R8 + 0x58240026, // 004C LDCONST R9 K38 + 0x7C180600, // 004D CALL R6 3 + 0x90023205, // 004E SETMBR R0 K25 R5 + 0x8C18032A, // 004F GETMET R6 R1 K42 + 0x54220020, // 0050 LDINT R8 33 + 0x50240200, // 0051 LDBOOL R9 1 0 + 0x7C180600, // 0052 CALL R6 3 + 0x8C1C0D27, // 0053 GETMET R7 R6 K39 + 0x5C240A00, // 0054 MOVE R9 R5 + 0x7C1C0400, // 0055 CALL R7 2 + 0x8820012B, // 0056 GETMBR R8 R0 K43 + 0x8C20112C, // 0057 GETMET R8 R8 K44 + 0x5C280E00, // 0058 MOVE R10 R7 + 0x882C032D, // 0059 GETMBR R11 R1 K45 + 0x8830032E, // 005A GETMBR R12 R1 K46 + 0x88340D2F, // 005B GETMBR R13 R6 K47 + 0x7C200A00, // 005C CALL R8 5 0x80000000, // 005D RET 0 }) ) @@ -216,15 +218,15 @@ be_local_closure(Matter_Commisioning_Context_init, /* name */ ********************************************************************/ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */ be_nested_proto( - 18, /* nstack */ - 4, /* argc */ + 16, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[82]) { /* constants */ + ( &(const bvalue[84]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(opcode), /* K2 */ be_nested_str_weak(local_session_id), @@ -306,336 +308,338 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake1, /* name */ /* K78 */ be_nested_str_weak(build_response), /* K79 */ be_nested_str_weak(responder), /* K80 */ be_nested_str_weak(send_response), - /* K81 */ be_nested_str_weak(message_counter), + /* K81 */ be_nested_str_weak(remote_ip), + /* K82 */ be_nested_str_weak(remote_port), + /* K83 */ be_nested_str_weak(message_counter), }), be_str_weak(parse_Pake1), &be_const_str_solidified, ( &(const binstruction[326]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x88140301, // 0001 GETMBR R5 R1 K1 - 0x541A0021, // 0002 LDINT R6 34 - 0x20140A06, // 0003 NE R5 R5 R6 - 0x74160005, // 0004 JMPT R5 #000B - 0x88140302, // 0005 GETMBR R5 R1 K2 - 0x20140B03, // 0006 NE R5 R5 K3 - 0x74160002, // 0007 JMPT R5 #000B - 0x88140304, // 0008 GETMBR R5 R1 K4 - 0x20140B03, // 0009 NE R5 R5 K3 - 0x78160000, // 000A JMPF R5 #000C + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x54120021, // 0002 LDINT R4 34 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x740E0005, // 0004 JMPT R3 #000B + 0x880C0302, // 0005 GETMBR R3 R1 K2 + 0x200C0703, // 0006 NE R3 R3 K3 + 0x740E0002, // 0007 JMPT R3 #000B + 0x880C0304, // 0008 GETMBR R3 R1 K4 + 0x200C0703, // 0009 NE R3 R3 K3 + 0x780E0000, // 000A JMPF R3 #000C 0xB0060B06, // 000B RAISE 1 K5 K6 - 0xB8160E00, // 000C GETNGBL R5 K7 - 0x8C140B08, // 000D GETMET R5 R5 K8 - 0x7C140200, // 000E CALL R5 1 - 0x8C140B09, // 000F GETMET R5 R5 K9 - 0x881C030A, // 0010 GETMBR R7 R1 K10 - 0x8820030B, // 0011 GETMBR R8 R1 K11 - 0x7C140600, // 0012 CALL R5 3 - 0x88180B0C, // 0013 GETMBR R6 R5 K12 - 0x90021806, // 0014 SETMBR R0 K12 R6 - 0xB81A1A00, // 0015 GETNGBL R6 K13 - 0x8C180D0E, // 0016 GETMET R6 R6 K14 - 0x8820010C, // 0017 GETMBR R8 R0 K12 - 0x8C201110, // 0018 GETMET R8 R8 K16 - 0x7C200200, // 0019 CALL R8 1 - 0x00221E08, // 001A ADD R8 K15 R8 - 0x58240011, // 001B LDCONST R9 K17 - 0x7C180600, // 001C CALL R6 3 - 0xB81A1A00, // 001D GETNGBL R6 K13 - 0x8C180D0E, // 001E GETMET R6 R6 K14 - 0xB8220E00, // 001F GETNGBL R8 K7 - 0x8C201113, // 0020 GETMET R8 R8 K19 - 0x88280114, // 0021 GETMBR R10 R0 K20 - 0x7C200400, // 0022 CALL R8 2 - 0x00222408, // 0023 ADD R8 K18 R8 - 0x58240011, // 0024 LDCONST R9 K17 - 0x7C180600, // 0025 CALL R6 3 - 0x8C180915, // 0026 GETMET R6 R4 K21 - 0x88200116, // 0027 GETMBR R8 R0 K22 - 0x88201117, // 0028 GETMBR R8 R8 K23 - 0x88240116, // 0029 GETMBR R9 R0 K22 - 0x88241318, // 002A GETMBR R9 R9 K24 - 0x88280116, // 002B GETMBR R10 R0 K22 - 0x88281519, // 002C GETMBR R10 R10 K25 - 0x7C180800, // 002D CALL R6 4 - 0x90022806, // 002E SETMBR R0 K20 R6 - 0x88180114, // 002F GETMBR R6 R0 K20 - 0x8C180D1A, // 0030 GETMET R6 R6 K26 - 0x8820011B, // 0031 GETMBR R8 R0 K27 - 0x7C180400, // 0032 CALL R6 2 - 0x88180114, // 0033 GETMBR R6 R0 K20 - 0x88180D1C, // 0034 GETMBR R6 R6 K28 - 0x90023806, // 0035 SETMBR R0 K28 R6 - 0xB81A1A00, // 0036 GETNGBL R6 K13 - 0x8C180D0E, // 0037 GETMET R6 R6 K14 - 0x8820011B, // 0038 GETMBR R8 R0 K27 - 0x8C201110, // 0039 GETMET R8 R8 K16 - 0x7C200200, // 003A CALL R8 1 - 0x00223A08, // 003B ADD R8 K29 R8 - 0x58240011, // 003C LDCONST R9 K17 - 0x7C180600, // 003D CALL R6 3 - 0xB81A1A00, // 003E GETNGBL R6 K13 - 0x8C180D0E, // 003F GETMET R6 R6 K14 - 0x8820011C, // 0040 GETMBR R8 R0 K28 - 0x8C201110, // 0041 GETMET R8 R8 K16 - 0x7C200200, // 0042 CALL R8 1 - 0x00223C08, // 0043 ADD R8 K30 R8 - 0x58240011, // 0044 LDCONST R9 K17 - 0x7C180600, // 0045 CALL R6 3 - 0x88180114, // 0046 GETMBR R6 R0 K20 - 0x8C180D1F, // 0047 GETMET R6 R6 K31 - 0x8820010C, // 0048 GETMBR R8 R0 K12 - 0x7C180400, // 0049 CALL R6 2 - 0xB81A1A00, // 004A GETNGBL R6 K13 - 0x8C180D0E, // 004B GETMET R6 R6 K14 - 0x88200114, // 004C GETMBR R8 R0 K20 - 0x88201121, // 004D GETMBR R8 R8 K33 - 0x8C201110, // 004E GETMET R8 R8 K16 - 0x7C200200, // 004F CALL R8 1 - 0x00224008, // 0050 ADD R8 K32 R8 - 0x58240011, // 0051 LDCONST R9 K17 - 0x7C180600, // 0052 CALL R6 3 - 0xB81A1A00, // 0053 GETNGBL R6 K13 - 0x8C180D0E, // 0054 GETMET R6 R6 K14 - 0x88200114, // 0055 GETMBR R8 R0 K20 - 0x88201123, // 0056 GETMBR R8 R8 K35 - 0x8C201110, // 0057 GETMET R8 R8 K16 - 0x7C200200, // 0058 CALL R8 1 - 0x00224408, // 0059 ADD R8 K34 R8 - 0x58240011, // 005A LDCONST R9 K17 - 0x7C180600, // 005B CALL R6 3 - 0x8C180924, // 005C GETMET R6 R4 K36 - 0x7C180200, // 005D CALL R6 1 - 0x8C1C0D25, // 005E GETMET R7 R6 K37 - 0x60240015, // 005F GETGBL R9 G21 - 0x7C240000, // 0060 CALL R9 0 - 0x8C241326, // 0061 GETMET R9 R9 K38 - 0x882C0127, // 0062 GETMBR R11 R0 K39 - 0x7C240400, // 0063 CALL R9 2 - 0x7C1C0400, // 0064 CALL R7 2 - 0x8C1C0D25, // 0065 GETMET R7 R6 K37 - 0x88240128, // 0066 GETMBR R9 R0 K40 - 0x7C1C0400, // 0067 CALL R7 2 - 0x8C1C0D25, // 0068 GETMET R7 R6 K37 - 0x88240129, // 0069 GETMBR R9 R0 K41 - 0x7C1C0400, // 006A CALL R7 2 - 0x8C1C0D2A, // 006B GETMET R7 R6 K42 - 0x7C1C0200, // 006C CALL R7 1 - 0xB8221A00, // 006D GETNGBL R8 K13 - 0x8C20110E, // 006E GETMET R8 R8 K14 - 0x8C280F10, // 006F GETMET R10 R7 K16 - 0x7C280200, // 0070 CALL R10 1 - 0x002A560A, // 0071 ADD R10 K43 R10 - 0x582C0011, // 0072 LDCONST R11 K17 - 0x7C200600, // 0073 CALL R8 3 - 0x88200114, // 0074 GETMBR R8 R0 K20 - 0x8824010C, // 0075 GETMBR R9 R0 K12 - 0x90221809, // 0076 SETMBR R8 K12 R9 - 0x88200114, // 0077 GETMBR R8 R0 K20 - 0x8C20112C, // 0078 GETMET R8 R8 K44 - 0x5C280E00, // 0079 MOVE R10 R7 - 0x7C200400, // 007A CALL R8 2 - 0x88200114, // 007B GETMBR R8 R0 K20 - 0x8C20112D, // 007C GETMET R8 R8 K45 - 0x50280200, // 007D LDBOOL R10 1 0 - 0x7C200400, // 007E CALL R8 2 - 0xB8221A00, // 007F GETNGBL R8 K13 - 0x8C20110E, // 0080 GETMET R8 R8 K14 - 0x5828002E, // 0081 LDCONST R10 K46 - 0x582C0011, // 0082 LDCONST R11 K17 - 0x7C200600, // 0083 CALL R8 3 - 0xB8221A00, // 0084 GETNGBL R8 K13 - 0x8C20110E, // 0085 GETMET R8 R8 K14 - 0x88280114, // 0086 GETMBR R10 R0 K20 - 0x88281530, // 0087 GETMBR R10 R10 K48 - 0x8C281510, // 0088 GETMET R10 R10 K16 - 0x7C280200, // 0089 CALL R10 1 - 0x002A5E0A, // 008A ADD R10 K47 R10 - 0x582C0011, // 008B LDCONST R11 K17 - 0x7C200600, // 008C CALL R8 3 - 0xB8221A00, // 008D GETNGBL R8 K13 - 0x8C20110E, // 008E GETMET R8 R8 K14 - 0x88280114, // 008F GETMBR R10 R0 K20 - 0x88281532, // 0090 GETMBR R10 R10 K50 - 0x8C281510, // 0091 GETMET R10 R10 K16 - 0x7C280200, // 0092 CALL R10 1 - 0x002A620A, // 0093 ADD R10 K49 R10 - 0x582C0011, // 0094 LDCONST R11 K17 - 0x7C200600, // 0095 CALL R8 3 - 0xB8221A00, // 0096 GETNGBL R8 K13 - 0x8C20110E, // 0097 GETMET R8 R8 K14 - 0x88280114, // 0098 GETMBR R10 R0 K20 - 0x88281534, // 0099 GETMBR R10 R10 K52 - 0x8C281510, // 009A GETMET R10 R10 K16 - 0x7C280200, // 009B CALL R10 1 - 0x002A660A, // 009C ADD R10 K51 R10 - 0x582C0011, // 009D LDCONST R11 K17 - 0x7C200600, // 009E CALL R8 3 - 0xB8221A00, // 009F GETNGBL R8 K13 - 0x8C20110E, // 00A0 GETMET R8 R8 K14 - 0x88280114, // 00A1 GETMBR R10 R0 K20 - 0x88281536, // 00A2 GETMBR R10 R10 K54 - 0x8C281510, // 00A3 GETMET R10 R10 K16 - 0x7C280200, // 00A4 CALL R10 1 - 0x002A6A0A, // 00A5 ADD R10 K53 R10 - 0x582C0011, // 00A6 LDCONST R11 K17 - 0x7C200600, // 00A7 CALL R8 3 - 0xB8221A00, // 00A8 GETNGBL R8 K13 - 0x8C20110E, // 00A9 GETMET R8 R8 K14 - 0x88280114, // 00AA GETMBR R10 R0 K20 - 0x88281538, // 00AB GETMBR R10 R10 K56 - 0x8C281510, // 00AC GETMET R10 R10 K16 - 0x7C280200, // 00AD CALL R10 1 - 0x002A6E0A, // 00AE ADD R10 K55 R10 - 0x582C0011, // 00AF LDCONST R11 K17 - 0x7C200600, // 00B0 CALL R8 3 - 0xB8221A00, // 00B1 GETNGBL R8 K13 - 0x8C20110E, // 00B2 GETMET R8 R8 K14 - 0x88280114, // 00B3 GETMBR R10 R0 K20 - 0x8828150C, // 00B4 GETMBR R10 R10 K12 - 0x8C281510, // 00B5 GETMET R10 R10 K16 - 0x7C280200, // 00B6 CALL R10 1 - 0x002A720A, // 00B7 ADD R10 K57 R10 - 0x582C0011, // 00B8 LDCONST R11 K17 - 0x7C200600, // 00B9 CALL R8 3 - 0xB8221A00, // 00BA GETNGBL R8 K13 - 0x8C20110E, // 00BB GETMET R8 R8 K14 - 0x88280114, // 00BC GETMBR R10 R0 K20 - 0x8828151C, // 00BD GETMBR R10 R10 K28 - 0x8C281510, // 00BE GETMET R10 R10 K16 - 0x7C280200, // 00BF CALL R10 1 - 0x002A740A, // 00C0 ADD R10 K58 R10 - 0x582C0011, // 00C1 LDCONST R11 K17 - 0x7C200600, // 00C2 CALL R8 3 - 0xB8221A00, // 00C3 GETNGBL R8 K13 - 0x8C20110E, // 00C4 GETMET R8 R8 K14 - 0x88280114, // 00C5 GETMBR R10 R0 K20 - 0x88281521, // 00C6 GETMBR R10 R10 K33 - 0x8C281510, // 00C7 GETMET R10 R10 K16 - 0x7C280200, // 00C8 CALL R10 1 - 0x002A760A, // 00C9 ADD R10 K59 R10 - 0x582C0011, // 00CA LDCONST R11 K17 - 0x7C200600, // 00CB CALL R8 3 - 0xB8221A00, // 00CC GETNGBL R8 K13 - 0x8C20110E, // 00CD GETMET R8 R8 K14 - 0x88280114, // 00CE GETMBR R10 R0 K20 - 0x88281523, // 00CF GETMBR R10 R10 K35 - 0x8C281510, // 00D0 GETMET R10 R10 K16 - 0x7C280200, // 00D1 CALL R10 1 - 0x002A780A, // 00D2 ADD R10 K60 R10 - 0x582C0011, // 00D3 LDCONST R11 K17 - 0x7C200600, // 00D4 CALL R8 3 - 0xB8221A00, // 00D5 GETNGBL R8 K13 - 0x8C20110E, // 00D6 GETMET R8 R8 K14 - 0x88280114, // 00D7 GETMBR R10 R0 K20 - 0x88281517, // 00D8 GETMBR R10 R10 K23 - 0x8C281510, // 00D9 GETMET R10 R10 K16 - 0x7C280200, // 00DA CALL R10 1 - 0x002A7A0A, // 00DB ADD R10 K61 R10 - 0x582C0011, // 00DC LDCONST R11 K17 - 0x7C200600, // 00DD CALL R8 3 - 0xB8221A00, // 00DE GETNGBL R8 K13 - 0x8C20110E, // 00DF GETMET R8 R8 K14 - 0x5828002E, // 00E0 LDCONST R10 K46 - 0x582C0011, // 00E1 LDCONST R11 K17 - 0x7C200600, // 00E2 CALL R8 3 - 0xB8221A00, // 00E3 GETNGBL R8 K13 - 0x8C20110E, // 00E4 GETMET R8 R8 K14 - 0x88280114, // 00E5 GETMBR R10 R0 K20 - 0x8828153F, // 00E6 GETMBR R10 R10 K63 - 0x8C281510, // 00E7 GETMET R10 R10 K16 - 0x7C280200, // 00E8 CALL R10 1 - 0x002A7C0A, // 00E9 ADD R10 K62 R10 - 0x582C0011, // 00EA LDCONST R11 K17 - 0x7C200600, // 00EB CALL R8 3 - 0xB8221A00, // 00EC GETNGBL R8 K13 - 0x8C20110E, // 00ED GETMET R8 R8 K14 - 0x88280114, // 00EE GETMBR R10 R0 K20 - 0x88281541, // 00EF GETMBR R10 R10 K65 - 0x8C281510, // 00F0 GETMET R10 R10 K16 - 0x7C280200, // 00F1 CALL R10 1 - 0x002A800A, // 00F2 ADD R10 K64 R10 - 0x582C0011, // 00F3 LDCONST R11 K17 - 0x7C200600, // 00F4 CALL R8 3 - 0xB8221A00, // 00F5 GETNGBL R8 K13 - 0x8C20110E, // 00F6 GETMET R8 R8 K14 - 0x88280114, // 00F7 GETMBR R10 R0 K20 - 0x88281543, // 00F8 GETMBR R10 R10 K67 - 0x8C281510, // 00F9 GETMET R10 R10 K16 - 0x7C280200, // 00FA CALL R10 1 - 0x002A840A, // 00FB ADD R10 K66 R10 - 0x582C0011, // 00FC LDCONST R11 K17 - 0x7C200600, // 00FD CALL R8 3 - 0xB8221A00, // 00FE GETNGBL R8 K13 - 0x8C20110E, // 00FF GETMET R8 R8 K14 - 0x88280114, // 0100 GETMBR R10 R0 K20 - 0x88281545, // 0101 GETMBR R10 R10 K69 - 0x8C281510, // 0102 GETMET R10 R10 K16 - 0x7C280200, // 0103 CALL R10 1 - 0x002A880A, // 0104 ADD R10 K68 R10 - 0x582C0011, // 0105 LDCONST R11 K17 - 0x7C200600, // 0106 CALL R8 3 - 0xB8221A00, // 0107 GETNGBL R8 K13 - 0x8C20110E, // 0108 GETMET R8 R8 K14 - 0x88280114, // 0109 GETMBR R10 R0 K20 - 0x88281547, // 010A GETMBR R10 R10 K71 - 0x8C281510, // 010B GETMET R10 R10 K16 - 0x7C280200, // 010C CALL R10 1 - 0x002A8C0A, // 010D ADD R10 K70 R10 - 0x582C0011, // 010E LDCONST R11 K17 - 0x7C200600, // 010F CALL R8 3 - 0x88200114, // 0110 GETMBR R8 R0 K20 - 0x88201148, // 0111 GETMBR R8 R8 K72 - 0x90029008, // 0112 SETMBR R0 K72 R8 - 0x88200114, // 0113 GETMBR R8 R0 K20 - 0x88201147, // 0114 GETMBR R8 R8 K71 - 0x90028E08, // 0115 SETMBR R0 K71 R8 - 0xB8221A00, // 0116 GETNGBL R8 K13 - 0x8C20110E, // 0117 GETMET R8 R8 K14 - 0x88280148, // 0118 GETMBR R10 R0 K72 - 0x8C281510, // 0119 GETMET R10 R10 K16 - 0x7C280200, // 011A CALL R10 1 - 0x002A920A, // 011B ADD R10 K73 R10 - 0x582C0011, // 011C LDCONST R11 K17 - 0x7C200600, // 011D CALL R8 3 - 0xB8220E00, // 011E GETNGBL R8 K7 - 0x8C20114A, // 011F GETMET R8 R8 K74 - 0x7C200200, // 0120 CALL R8 1 - 0x8824011C, // 0121 GETMBR R9 R0 K28 - 0x90223809, // 0122 SETMBR R8 K28 R9 - 0x88240148, // 0123 GETMBR R9 R0 K72 - 0x90229009, // 0124 SETMBR R8 K72 R9 - 0xB8261A00, // 0125 GETNGBL R9 K13 - 0x8C24130E, // 0126 GETMET R9 R9 K14 - 0xB82E0E00, // 0127 GETNGBL R11 K7 - 0x8C2C1713, // 0128 GETMET R11 R11 K19 - 0x5C341000, // 0129 MOVE R13 R8 - 0x7C2C0400, // 012A CALL R11 2 - 0x002E960B, // 012B ADD R11 K75 R11 - 0x58300011, // 012C LDCONST R12 K17 - 0x7C240600, // 012D CALL R9 3 - 0x8C24114C, // 012E GETMET R9 R8 K76 - 0x7C240200, // 012F CALL R9 1 - 0xB82A1A00, // 0130 GETNGBL R10 K13 - 0x8C28150E, // 0131 GETMET R10 R10 K14 - 0x8C301310, // 0132 GETMET R12 R9 K16 - 0x7C300200, // 0133 CALL R12 1 - 0x00329A0C, // 0134 ADD R12 K77 R12 - 0x58340011, // 0135 LDCONST R13 K17 - 0x7C280600, // 0136 CALL R10 3 - 0x8C28034E, // 0137 GETMET R10 R1 K78 - 0x54320022, // 0138 LDINT R12 35 - 0x50340200, // 0139 LDBOOL R13 1 0 - 0x7C280600, // 013A CALL R10 3 - 0x8C2C154C, // 013B GETMET R11 R10 K76 - 0x5C341200, // 013C MOVE R13 R9 - 0x7C2C0400, // 013D CALL R11 2 - 0x8830014F, // 013E GETMBR R12 R0 K79 - 0x8C301950, // 013F GETMET R12 R12 K80 - 0x5C381600, // 0140 MOVE R14 R11 - 0x5C3C0400, // 0141 MOVE R15 R2 - 0x5C400600, // 0142 MOVE R16 R3 - 0x88441551, // 0143 GETMBR R17 R10 K81 - 0x7C300A00, // 0144 CALL R12 5 + 0xB80E0E00, // 000C GETNGBL R3 K7 + 0x8C0C0708, // 000D GETMET R3 R3 K8 + 0x7C0C0200, // 000E CALL R3 1 + 0x8C0C0709, // 000F GETMET R3 R3 K9 + 0x8814030A, // 0010 GETMBR R5 R1 K10 + 0x8818030B, // 0011 GETMBR R6 R1 K11 + 0x7C0C0600, // 0012 CALL R3 3 + 0x8810070C, // 0013 GETMBR R4 R3 K12 + 0x90021804, // 0014 SETMBR R0 K12 R4 + 0xB8121A00, // 0015 GETNGBL R4 K13 + 0x8C10090E, // 0016 GETMET R4 R4 K14 + 0x8818010C, // 0017 GETMBR R6 R0 K12 + 0x8C180D10, // 0018 GETMET R6 R6 K16 + 0x7C180200, // 0019 CALL R6 1 + 0x001A1E06, // 001A ADD R6 K15 R6 + 0x581C0011, // 001B LDCONST R7 K17 + 0x7C100600, // 001C CALL R4 3 + 0xB8121A00, // 001D GETNGBL R4 K13 + 0x8C10090E, // 001E GETMET R4 R4 K14 + 0xB81A0E00, // 001F GETNGBL R6 K7 + 0x8C180D13, // 0020 GETMET R6 R6 K19 + 0x88200114, // 0021 GETMBR R8 R0 K20 + 0x7C180400, // 0022 CALL R6 2 + 0x001A2406, // 0023 ADD R6 K18 R6 + 0x581C0011, // 0024 LDCONST R7 K17 + 0x7C100600, // 0025 CALL R4 3 + 0x8C100515, // 0026 GETMET R4 R2 K21 + 0x88180116, // 0027 GETMBR R6 R0 K22 + 0x88180D17, // 0028 GETMBR R6 R6 K23 + 0x881C0116, // 0029 GETMBR R7 R0 K22 + 0x881C0F18, // 002A GETMBR R7 R7 K24 + 0x88200116, // 002B GETMBR R8 R0 K22 + 0x88201119, // 002C GETMBR R8 R8 K25 + 0x7C100800, // 002D CALL R4 4 + 0x90022804, // 002E SETMBR R0 K20 R4 + 0x88100114, // 002F GETMBR R4 R0 K20 + 0x8C10091A, // 0030 GETMET R4 R4 K26 + 0x8818011B, // 0031 GETMBR R6 R0 K27 + 0x7C100400, // 0032 CALL R4 2 + 0x88100114, // 0033 GETMBR R4 R0 K20 + 0x8810091C, // 0034 GETMBR R4 R4 K28 + 0x90023804, // 0035 SETMBR R0 K28 R4 + 0xB8121A00, // 0036 GETNGBL R4 K13 + 0x8C10090E, // 0037 GETMET R4 R4 K14 + 0x8818011B, // 0038 GETMBR R6 R0 K27 + 0x8C180D10, // 0039 GETMET R6 R6 K16 + 0x7C180200, // 003A CALL R6 1 + 0x001A3A06, // 003B ADD R6 K29 R6 + 0x581C0011, // 003C LDCONST R7 K17 + 0x7C100600, // 003D CALL R4 3 + 0xB8121A00, // 003E GETNGBL R4 K13 + 0x8C10090E, // 003F GETMET R4 R4 K14 + 0x8818011C, // 0040 GETMBR R6 R0 K28 + 0x8C180D10, // 0041 GETMET R6 R6 K16 + 0x7C180200, // 0042 CALL R6 1 + 0x001A3C06, // 0043 ADD R6 K30 R6 + 0x581C0011, // 0044 LDCONST R7 K17 + 0x7C100600, // 0045 CALL R4 3 + 0x88100114, // 0046 GETMBR R4 R0 K20 + 0x8C10091F, // 0047 GETMET R4 R4 K31 + 0x8818010C, // 0048 GETMBR R6 R0 K12 + 0x7C100400, // 0049 CALL R4 2 + 0xB8121A00, // 004A GETNGBL R4 K13 + 0x8C10090E, // 004B GETMET R4 R4 K14 + 0x88180114, // 004C GETMBR R6 R0 K20 + 0x88180D21, // 004D GETMBR R6 R6 K33 + 0x8C180D10, // 004E GETMET R6 R6 K16 + 0x7C180200, // 004F CALL R6 1 + 0x001A4006, // 0050 ADD R6 K32 R6 + 0x581C0011, // 0051 LDCONST R7 K17 + 0x7C100600, // 0052 CALL R4 3 + 0xB8121A00, // 0053 GETNGBL R4 K13 + 0x8C10090E, // 0054 GETMET R4 R4 K14 + 0x88180114, // 0055 GETMBR R6 R0 K20 + 0x88180D23, // 0056 GETMBR R6 R6 K35 + 0x8C180D10, // 0057 GETMET R6 R6 K16 + 0x7C180200, // 0058 CALL R6 1 + 0x001A4406, // 0059 ADD R6 K34 R6 + 0x581C0011, // 005A LDCONST R7 K17 + 0x7C100600, // 005B CALL R4 3 + 0x8C100524, // 005C GETMET R4 R2 K36 + 0x7C100200, // 005D CALL R4 1 + 0x8C140925, // 005E GETMET R5 R4 K37 + 0x601C0015, // 005F GETGBL R7 G21 + 0x7C1C0000, // 0060 CALL R7 0 + 0x8C1C0F26, // 0061 GETMET R7 R7 K38 + 0x88240127, // 0062 GETMBR R9 R0 K39 + 0x7C1C0400, // 0063 CALL R7 2 + 0x7C140400, // 0064 CALL R5 2 + 0x8C140925, // 0065 GETMET R5 R4 K37 + 0x881C0128, // 0066 GETMBR R7 R0 K40 + 0x7C140400, // 0067 CALL R5 2 + 0x8C140925, // 0068 GETMET R5 R4 K37 + 0x881C0129, // 0069 GETMBR R7 R0 K41 + 0x7C140400, // 006A CALL R5 2 + 0x8C14092A, // 006B GETMET R5 R4 K42 + 0x7C140200, // 006C CALL R5 1 + 0xB81A1A00, // 006D GETNGBL R6 K13 + 0x8C180D0E, // 006E GETMET R6 R6 K14 + 0x8C200B10, // 006F GETMET R8 R5 K16 + 0x7C200200, // 0070 CALL R8 1 + 0x00225608, // 0071 ADD R8 K43 R8 + 0x58240011, // 0072 LDCONST R9 K17 + 0x7C180600, // 0073 CALL R6 3 + 0x88180114, // 0074 GETMBR R6 R0 K20 + 0x881C010C, // 0075 GETMBR R7 R0 K12 + 0x901A1807, // 0076 SETMBR R6 K12 R7 + 0x88180114, // 0077 GETMBR R6 R0 K20 + 0x8C180D2C, // 0078 GETMET R6 R6 K44 + 0x5C200A00, // 0079 MOVE R8 R5 + 0x7C180400, // 007A CALL R6 2 + 0x88180114, // 007B GETMBR R6 R0 K20 + 0x8C180D2D, // 007C GETMET R6 R6 K45 + 0x50200200, // 007D LDBOOL R8 1 0 + 0x7C180400, // 007E CALL R6 2 + 0xB81A1A00, // 007F GETNGBL R6 K13 + 0x8C180D0E, // 0080 GETMET R6 R6 K14 + 0x5820002E, // 0081 LDCONST R8 K46 + 0x58240011, // 0082 LDCONST R9 K17 + 0x7C180600, // 0083 CALL R6 3 + 0xB81A1A00, // 0084 GETNGBL R6 K13 + 0x8C180D0E, // 0085 GETMET R6 R6 K14 + 0x88200114, // 0086 GETMBR R8 R0 K20 + 0x88201130, // 0087 GETMBR R8 R8 K48 + 0x8C201110, // 0088 GETMET R8 R8 K16 + 0x7C200200, // 0089 CALL R8 1 + 0x00225E08, // 008A ADD R8 K47 R8 + 0x58240011, // 008B LDCONST R9 K17 + 0x7C180600, // 008C CALL R6 3 + 0xB81A1A00, // 008D GETNGBL R6 K13 + 0x8C180D0E, // 008E GETMET R6 R6 K14 + 0x88200114, // 008F GETMBR R8 R0 K20 + 0x88201132, // 0090 GETMBR R8 R8 K50 + 0x8C201110, // 0091 GETMET R8 R8 K16 + 0x7C200200, // 0092 CALL R8 1 + 0x00226208, // 0093 ADD R8 K49 R8 + 0x58240011, // 0094 LDCONST R9 K17 + 0x7C180600, // 0095 CALL R6 3 + 0xB81A1A00, // 0096 GETNGBL R6 K13 + 0x8C180D0E, // 0097 GETMET R6 R6 K14 + 0x88200114, // 0098 GETMBR R8 R0 K20 + 0x88201134, // 0099 GETMBR R8 R8 K52 + 0x8C201110, // 009A GETMET R8 R8 K16 + 0x7C200200, // 009B CALL R8 1 + 0x00226608, // 009C ADD R8 K51 R8 + 0x58240011, // 009D LDCONST R9 K17 + 0x7C180600, // 009E CALL R6 3 + 0xB81A1A00, // 009F GETNGBL R6 K13 + 0x8C180D0E, // 00A0 GETMET R6 R6 K14 + 0x88200114, // 00A1 GETMBR R8 R0 K20 + 0x88201136, // 00A2 GETMBR R8 R8 K54 + 0x8C201110, // 00A3 GETMET R8 R8 K16 + 0x7C200200, // 00A4 CALL R8 1 + 0x00226A08, // 00A5 ADD R8 K53 R8 + 0x58240011, // 00A6 LDCONST R9 K17 + 0x7C180600, // 00A7 CALL R6 3 + 0xB81A1A00, // 00A8 GETNGBL R6 K13 + 0x8C180D0E, // 00A9 GETMET R6 R6 K14 + 0x88200114, // 00AA GETMBR R8 R0 K20 + 0x88201138, // 00AB GETMBR R8 R8 K56 + 0x8C201110, // 00AC GETMET R8 R8 K16 + 0x7C200200, // 00AD CALL R8 1 + 0x00226E08, // 00AE ADD R8 K55 R8 + 0x58240011, // 00AF LDCONST R9 K17 + 0x7C180600, // 00B0 CALL R6 3 + 0xB81A1A00, // 00B1 GETNGBL R6 K13 + 0x8C180D0E, // 00B2 GETMET R6 R6 K14 + 0x88200114, // 00B3 GETMBR R8 R0 K20 + 0x8820110C, // 00B4 GETMBR R8 R8 K12 + 0x8C201110, // 00B5 GETMET R8 R8 K16 + 0x7C200200, // 00B6 CALL R8 1 + 0x00227208, // 00B7 ADD R8 K57 R8 + 0x58240011, // 00B8 LDCONST R9 K17 + 0x7C180600, // 00B9 CALL R6 3 + 0xB81A1A00, // 00BA GETNGBL R6 K13 + 0x8C180D0E, // 00BB GETMET R6 R6 K14 + 0x88200114, // 00BC GETMBR R8 R0 K20 + 0x8820111C, // 00BD GETMBR R8 R8 K28 + 0x8C201110, // 00BE GETMET R8 R8 K16 + 0x7C200200, // 00BF CALL R8 1 + 0x00227408, // 00C0 ADD R8 K58 R8 + 0x58240011, // 00C1 LDCONST R9 K17 + 0x7C180600, // 00C2 CALL R6 3 + 0xB81A1A00, // 00C3 GETNGBL R6 K13 + 0x8C180D0E, // 00C4 GETMET R6 R6 K14 + 0x88200114, // 00C5 GETMBR R8 R0 K20 + 0x88201121, // 00C6 GETMBR R8 R8 K33 + 0x8C201110, // 00C7 GETMET R8 R8 K16 + 0x7C200200, // 00C8 CALL R8 1 + 0x00227608, // 00C9 ADD R8 K59 R8 + 0x58240011, // 00CA LDCONST R9 K17 + 0x7C180600, // 00CB CALL R6 3 + 0xB81A1A00, // 00CC GETNGBL R6 K13 + 0x8C180D0E, // 00CD GETMET R6 R6 K14 + 0x88200114, // 00CE GETMBR R8 R0 K20 + 0x88201123, // 00CF GETMBR R8 R8 K35 + 0x8C201110, // 00D0 GETMET R8 R8 K16 + 0x7C200200, // 00D1 CALL R8 1 + 0x00227808, // 00D2 ADD R8 K60 R8 + 0x58240011, // 00D3 LDCONST R9 K17 + 0x7C180600, // 00D4 CALL R6 3 + 0xB81A1A00, // 00D5 GETNGBL R6 K13 + 0x8C180D0E, // 00D6 GETMET R6 R6 K14 + 0x88200114, // 00D7 GETMBR R8 R0 K20 + 0x88201117, // 00D8 GETMBR R8 R8 K23 + 0x8C201110, // 00D9 GETMET R8 R8 K16 + 0x7C200200, // 00DA CALL R8 1 + 0x00227A08, // 00DB ADD R8 K61 R8 + 0x58240011, // 00DC LDCONST R9 K17 + 0x7C180600, // 00DD CALL R6 3 + 0xB81A1A00, // 00DE GETNGBL R6 K13 + 0x8C180D0E, // 00DF GETMET R6 R6 K14 + 0x5820002E, // 00E0 LDCONST R8 K46 + 0x58240011, // 00E1 LDCONST R9 K17 + 0x7C180600, // 00E2 CALL R6 3 + 0xB81A1A00, // 00E3 GETNGBL R6 K13 + 0x8C180D0E, // 00E4 GETMET R6 R6 K14 + 0x88200114, // 00E5 GETMBR R8 R0 K20 + 0x8820113F, // 00E6 GETMBR R8 R8 K63 + 0x8C201110, // 00E7 GETMET R8 R8 K16 + 0x7C200200, // 00E8 CALL R8 1 + 0x00227C08, // 00E9 ADD R8 K62 R8 + 0x58240011, // 00EA LDCONST R9 K17 + 0x7C180600, // 00EB CALL R6 3 + 0xB81A1A00, // 00EC GETNGBL R6 K13 + 0x8C180D0E, // 00ED GETMET R6 R6 K14 + 0x88200114, // 00EE GETMBR R8 R0 K20 + 0x88201141, // 00EF GETMBR R8 R8 K65 + 0x8C201110, // 00F0 GETMET R8 R8 K16 + 0x7C200200, // 00F1 CALL R8 1 + 0x00228008, // 00F2 ADD R8 K64 R8 + 0x58240011, // 00F3 LDCONST R9 K17 + 0x7C180600, // 00F4 CALL R6 3 + 0xB81A1A00, // 00F5 GETNGBL R6 K13 + 0x8C180D0E, // 00F6 GETMET R6 R6 K14 + 0x88200114, // 00F7 GETMBR R8 R0 K20 + 0x88201143, // 00F8 GETMBR R8 R8 K67 + 0x8C201110, // 00F9 GETMET R8 R8 K16 + 0x7C200200, // 00FA CALL R8 1 + 0x00228408, // 00FB ADD R8 K66 R8 + 0x58240011, // 00FC LDCONST R9 K17 + 0x7C180600, // 00FD CALL R6 3 + 0xB81A1A00, // 00FE GETNGBL R6 K13 + 0x8C180D0E, // 00FF GETMET R6 R6 K14 + 0x88200114, // 0100 GETMBR R8 R0 K20 + 0x88201145, // 0101 GETMBR R8 R8 K69 + 0x8C201110, // 0102 GETMET R8 R8 K16 + 0x7C200200, // 0103 CALL R8 1 + 0x00228808, // 0104 ADD R8 K68 R8 + 0x58240011, // 0105 LDCONST R9 K17 + 0x7C180600, // 0106 CALL R6 3 + 0xB81A1A00, // 0107 GETNGBL R6 K13 + 0x8C180D0E, // 0108 GETMET R6 R6 K14 + 0x88200114, // 0109 GETMBR R8 R0 K20 + 0x88201147, // 010A GETMBR R8 R8 K71 + 0x8C201110, // 010B GETMET R8 R8 K16 + 0x7C200200, // 010C CALL R8 1 + 0x00228C08, // 010D ADD R8 K70 R8 + 0x58240011, // 010E LDCONST R9 K17 + 0x7C180600, // 010F CALL R6 3 + 0x88180114, // 0110 GETMBR R6 R0 K20 + 0x88180D48, // 0111 GETMBR R6 R6 K72 + 0x90029006, // 0112 SETMBR R0 K72 R6 + 0x88180114, // 0113 GETMBR R6 R0 K20 + 0x88180D47, // 0114 GETMBR R6 R6 K71 + 0x90028E06, // 0115 SETMBR R0 K71 R6 + 0xB81A1A00, // 0116 GETNGBL R6 K13 + 0x8C180D0E, // 0117 GETMET R6 R6 K14 + 0x88200148, // 0118 GETMBR R8 R0 K72 + 0x8C201110, // 0119 GETMET R8 R8 K16 + 0x7C200200, // 011A CALL R8 1 + 0x00229208, // 011B ADD R8 K73 R8 + 0x58240011, // 011C LDCONST R9 K17 + 0x7C180600, // 011D CALL R6 3 + 0xB81A0E00, // 011E GETNGBL R6 K7 + 0x8C180D4A, // 011F GETMET R6 R6 K74 + 0x7C180200, // 0120 CALL R6 1 + 0x881C011C, // 0121 GETMBR R7 R0 K28 + 0x901A3807, // 0122 SETMBR R6 K28 R7 + 0x881C0148, // 0123 GETMBR R7 R0 K72 + 0x901A9007, // 0124 SETMBR R6 K72 R7 + 0xB81E1A00, // 0125 GETNGBL R7 K13 + 0x8C1C0F0E, // 0126 GETMET R7 R7 K14 + 0xB8260E00, // 0127 GETNGBL R9 K7 + 0x8C241313, // 0128 GETMET R9 R9 K19 + 0x5C2C0C00, // 0129 MOVE R11 R6 + 0x7C240400, // 012A CALL R9 2 + 0x00269609, // 012B ADD R9 K75 R9 + 0x58280011, // 012C LDCONST R10 K17 + 0x7C1C0600, // 012D CALL R7 3 + 0x8C1C0D4C, // 012E GETMET R7 R6 K76 + 0x7C1C0200, // 012F CALL R7 1 + 0xB8221A00, // 0130 GETNGBL R8 K13 + 0x8C20110E, // 0131 GETMET R8 R8 K14 + 0x8C280F10, // 0132 GETMET R10 R7 K16 + 0x7C280200, // 0133 CALL R10 1 + 0x002A9A0A, // 0134 ADD R10 K77 R10 + 0x582C0011, // 0135 LDCONST R11 K17 + 0x7C200600, // 0136 CALL R8 3 + 0x8C20034E, // 0137 GETMET R8 R1 K78 + 0x542A0022, // 0138 LDINT R10 35 + 0x502C0200, // 0139 LDBOOL R11 1 0 + 0x7C200600, // 013A CALL R8 3 + 0x8C24114C, // 013B GETMET R9 R8 K76 + 0x5C2C0E00, // 013C MOVE R11 R7 + 0x7C240400, // 013D CALL R9 2 + 0x8828014F, // 013E GETMBR R10 R0 K79 + 0x8C281550, // 013F GETMET R10 R10 K80 + 0x5C301200, // 0140 MOVE R12 R9 + 0x88340351, // 0141 GETMBR R13 R1 K81 + 0x88380352, // 0142 GETMBR R14 R1 K82 + 0x883C1153, // 0143 GETMBR R15 R8 K83 + 0x7C280A00, // 0144 CALL R10 5 0x80000000, // 0145 RET 0 }) ) @@ -797,15 +801,15 @@ be_local_closure(Matter_Commisioning_Context_every_second, /* name */ ********************************************************************/ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */ be_nested_proto( - 40, /* nstack */ - 4, /* argc */ + 38, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[92]) { /* constants */ + ( &(const bvalue[94]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(opcode), /* K2 */ be_nested_str_weak(local_session_id), @@ -892,461 +896,463 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */ /* K83 */ be_nested_str_weak(add), /* K84 */ be_nested_str_weak(responder), /* K85 */ be_nested_str_weak(send_response), - /* K86 */ be_nested_str_weak(message_counter), - /* K87 */ be_nested_str_weak(close), - /* K88 */ be_nested_str_weak(set_keys), - /* K89 */ be_nested_str_weak(set_persist), - /* K90 */ be_nested_str_weak(set_no_expiration), - /* K91 */ be_nested_str_weak(save), + /* K86 */ be_nested_str_weak(remote_ip), + /* K87 */ be_nested_str_weak(remote_port), + /* K88 */ be_nested_str_weak(message_counter), + /* K89 */ be_nested_str_weak(close), + /* K90 */ be_nested_str_weak(set_keys), + /* K91 */ be_nested_str_weak(set_persist), + /* K92 */ be_nested_str_weak(set_no_expiration), + /* K93 */ be_nested_str_weak(save), }), be_str_weak(parse_Sigma3), &be_const_str_solidified, ( &(const binstruction[445]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x88140301, // 0001 GETMBR R5 R1 K1 - 0x541A0031, // 0002 LDINT R6 50 - 0x20140A06, // 0003 NE R5 R5 R6 - 0x74160005, // 0004 JMPT R5 #000B - 0x88140302, // 0005 GETMBR R5 R1 K2 - 0x20140B03, // 0006 NE R5 R5 K3 - 0x74160002, // 0007 JMPT R5 #000B - 0x88140304, // 0008 GETMBR R5 R1 K4 - 0x20140B03, // 0009 NE R5 R5 K3 - 0x78160000, // 000A JMPF R5 #000C + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x54120031, // 0002 LDINT R4 50 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x740E0005, // 0004 JMPT R3 #000B + 0x880C0302, // 0005 GETMBR R3 R1 K2 + 0x200C0703, // 0006 NE R3 R3 K3 + 0x740E0002, // 0007 JMPT R3 #000B + 0x880C0304, // 0008 GETMBR R3 R1 K4 + 0x200C0703, // 0009 NE R3 R3 K3 + 0x780E0000, // 000A JMPF R3 #000C 0xB0060B06, // 000B RAISE 1 K5 K6 - 0x88140307, // 000C GETMBR R5 R1 K7 - 0xB81A1000, // 000D GETNGBL R6 K8 - 0x8C180D09, // 000E GETMET R6 R6 K9 - 0x7C180200, // 000F CALL R6 1 - 0x8C180D0A, // 0010 GETMET R6 R6 K10 - 0x8820030B, // 0011 GETMBR R8 R1 K11 - 0x8824030C, // 0012 GETMBR R9 R1 K12 - 0x7C180600, // 0013 CALL R6 3 - 0xB81E1A00, // 0014 GETNGBL R7 K13 - 0x8C1C0F0E, // 0015 GETMET R7 R7 K14 - 0x5824000F, // 0016 LDCONST R9 K15 - 0x58280010, // 0017 LDCONST R10 K16 - 0x7C1C0600, // 0018 CALL R7 3 - 0x8C1C0911, // 0019 GETMET R7 R4 K17 - 0x7C1C0200, // 001A CALL R7 1 - 0x8C1C0F12, // 001B GETMET R7 R7 K18 - 0x88240B13, // 001C GETMBR R9 R5 K19 - 0x7C1C0400, // 001D CALL R7 2 - 0x8C1C0F12, // 001E GETMET R7 R7 K18 - 0x88240B14, // 001F GETMBR R9 R5 K20 - 0x7C1C0400, // 0020 CALL R7 2 - 0x8C1C0F15, // 0021 GETMET R7 R7 K21 - 0x7C1C0200, // 0022 CALL R7 1 - 0xB8221A00, // 0023 GETNGBL R8 K13 - 0x8C20110E, // 0024 GETMET R8 R8 K14 - 0x60280008, // 0025 GETGBL R10 G8 - 0x5C2C0A00, // 0026 MOVE R11 R5 - 0x7C280200, // 0027 CALL R10 1 - 0x002A2C0A, // 0028 ADD R10 K22 R10 - 0x582C0010, // 0029 LDCONST R11 K16 - 0x7C200600, // 002A CALL R8 3 - 0xB8221A00, // 002B GETNGBL R8 K13 - 0x8C20110E, // 002C GETMET R8 R8 K14 - 0x60280008, // 002D GETGBL R10 G8 - 0x882C0B18, // 002E GETMBR R11 R5 K24 - 0x7C280200, // 002F CALL R10 1 - 0x002A2E0A, // 0030 ADD R10 K23 R10 - 0x582C0010, // 0031 LDCONST R11 K16 - 0x7C200600, // 0032 CALL R8 3 - 0xB8221A00, // 0033 GETNGBL R8 K13 - 0x8C20110E, // 0034 GETMET R8 R8 K14 - 0x60280008, // 0035 GETGBL R10 G8 - 0x882C0B1A, // 0036 GETMBR R11 R5 K26 - 0x7C280200, // 0037 CALL R10 1 - 0x002A320A, // 0038 ADD R10 K25 R10 - 0x582C0010, // 0039 LDCONST R11 K16 - 0x7C200600, // 003A CALL R8 3 - 0xB8221A00, // 003B GETNGBL R8 K13 - 0x8C20110E, // 003C GETMET R8 R8 K14 - 0x8C280B1C, // 003D GETMET R10 R5 K28 - 0x7C280200, // 003E CALL R10 1 - 0x8C28151D, // 003F GETMET R10 R10 K29 - 0x7C280200, // 0040 CALL R10 1 - 0x002A360A, // 0041 ADD R10 K27 R10 - 0x582C0010, // 0042 LDCONST R11 K16 - 0x7C200600, // 0043 CALL R8 3 - 0xB8221A00, // 0044 GETNGBL R8 K13 - 0x8C20110E, // 0045 GETMET R8 R8 K14 - 0x8C280F1D, // 0046 GETMET R10 R7 K29 - 0x7C280200, // 0047 CALL R10 1 - 0x002A3C0A, // 0048 ADD R10 K30 R10 - 0x582C0010, // 0049 LDCONST R11 K16 - 0x7C200600, // 004A CALL R8 3 - 0x60200015, // 004B GETGBL R8 G21 - 0x7C200000, // 004C CALL R8 0 - 0x8C20111F, // 004D GETMET R8 R8 K31 - 0x88280120, // 004E GETMBR R10 R0 K32 - 0x7C200400, // 004F CALL R8 2 - 0x8C240921, // 0050 GETMET R9 R4 K33 - 0x7C240200, // 0051 CALL R9 1 - 0x8C241322, // 0052 GETMET R9 R9 K34 - 0x882C0B23, // 0053 GETMBR R11 R5 K35 - 0x8C300B1C, // 0054 GETMET R12 R5 K28 - 0x7C300200, // 0055 CALL R12 1 - 0x00301807, // 0056 ADD R12 R12 R7 - 0x5C341000, // 0057 MOVE R13 R8 - 0x543A000F, // 0058 LDINT R14 16 - 0x7C240A00, // 0059 CALL R9 5 - 0xB82A1A00, // 005A GETNGBL R10 K13 - 0x8C28150E, // 005B GETMET R10 R10 K14 - 0x5830000F, // 005C LDCONST R12 K15 - 0x58340010, // 005D LDCONST R13 K16 - 0x7C280600, // 005E CALL R10 3 - 0xB82A1A00, // 005F GETNGBL R10 K13 - 0x8C28150E, // 0060 GETMET R10 R10 K14 - 0x8C300B1C, // 0061 GETMET R12 R5 K28 - 0x7C300200, // 0062 CALL R12 1 - 0x00301807, // 0063 ADD R12 R12 R7 - 0x8C30191D, // 0064 GETMET R12 R12 K29 - 0x7C300200, // 0065 CALL R12 1 - 0x0032480C, // 0066 ADD R12 K36 R12 - 0x58340010, // 0067 LDCONST R13 K16 - 0x7C280600, // 0068 CALL R10 3 - 0xB82A1A00, // 0069 GETNGBL R10 K13 - 0x8C28150E, // 006A GETMET R10 R10 K14 - 0x8C30131D, // 006B GETMET R12 R9 K29 - 0x7C300200, // 006C CALL R12 1 - 0x00324A0C, // 006D ADD R12 K37 R12 - 0x58340010, // 006E LDCONST R13 K16 - 0x7C280600, // 006F CALL R10 3 - 0xB82A1A00, // 0070 GETNGBL R10 K13 - 0x8C28150E, // 0071 GETMET R10 R10 K14 - 0x5830000F, // 0072 LDCONST R12 K15 - 0x58340010, // 0073 LDCONST R13 K16 - 0x7C280600, // 0074 CALL R10 3 - 0x5429FFEE, // 0075 LDINT R10 -17 - 0x402A060A, // 0076 CONNECT R10 K3 R10 - 0x882C0D26, // 0077 GETMBR R11 R6 K38 - 0x9428160A, // 0078 GETIDX R10 R11 R10 - 0x5431FFEF, // 0079 LDINT R12 -16 - 0x40301927, // 007A CONNECT R12 R12 K39 - 0x88340D26, // 007B GETMBR R13 R6 K38 - 0x942C1A0C, // 007C GETIDX R11 R13 R12 - 0x8C380928, // 007D GETMET R14 R4 K40 - 0x5C401200, // 007E MOVE R16 R9 - 0x60440015, // 007F GETGBL R17 G21 - 0x7C440000, // 0080 CALL R17 0 - 0x8C44231F, // 0081 GETMET R17 R17 K31 - 0x884C0129, // 0082 GETMBR R19 R0 K41 - 0x7C440400, // 0083 CALL R17 2 - 0x60480015, // 0084 GETGBL R18 G21 - 0x7C480000, // 0085 CALL R18 0 - 0x604C000C, // 0086 GETGBL R19 G12 - 0x5C501400, // 0087 MOVE R20 R10 - 0x7C4C0200, // 0088 CALL R19 1 - 0x5452000F, // 0089 LDINT R20 16 - 0x7C380C00, // 008A CALL R14 6 - 0x5C301C00, // 008B MOVE R12 R14 - 0x8C38192A, // 008C GETMET R14 R12 K42 - 0x5C401400, // 008D MOVE R16 R10 - 0x7C380400, // 008E CALL R14 2 - 0x5C341C00, // 008F MOVE R13 R14 - 0x8C38192B, // 0090 GETMET R14 R12 K43 - 0x7C380200, // 0091 CALL R14 1 - 0xB83E1A00, // 0092 GETNGBL R15 K13 - 0x8C3C1F0E, // 0093 GETMET R15 R15 K14 - 0x8C441B1D, // 0094 GETMET R17 R13 K29 - 0x7C440200, // 0095 CALL R17 1 - 0x00465811, // 0096 ADD R17 K44 R17 - 0x58480010, // 0097 LDCONST R18 K16 - 0x7C3C0600, // 0098 CALL R15 3 - 0xB83E1A00, // 0099 GETNGBL R15 K13 - 0x8C3C1F0E, // 009A GETMET R15 R15 K14 - 0x8C441D1D, // 009B GETMET R17 R14 K29 - 0x7C440200, // 009C CALL R17 1 - 0x00465A11, // 009D ADD R17 K45 R17 - 0x58480010, // 009E LDCONST R18 K16 - 0x7C3C0600, // 009F CALL R15 3 - 0xB83E1A00, // 00A0 GETNGBL R15 K13 - 0x8C3C1F0E, // 00A1 GETMET R15 R15 K14 - 0x8C44171D, // 00A2 GETMET R17 R11 K29 - 0x7C440200, // 00A3 CALL R17 1 - 0x00465C11, // 00A4 ADD R17 K46 R17 - 0x58480010, // 00A5 LDCONST R18 K16 - 0x7C3C0600, // 00A6 CALL R15 3 - 0xB83E1A00, // 00A7 GETNGBL R15 K13 - 0x8C3C1F0E, // 00A8 GETMET R15 R15 K14 - 0x5844000F, // 00A9 LDCONST R17 K15 - 0x58480010, // 00AA LDCONST R18 K16 - 0x7C3C0600, // 00AB CALL R15 3 - 0x203C1C0B, // 00AC NE R15 R14 R11 - 0x783E0000, // 00AD JMPF R15 #00AF + 0x880C0307, // 000C GETMBR R3 R1 K7 + 0xB8121000, // 000D GETNGBL R4 K8 + 0x8C100909, // 000E GETMET R4 R4 K9 + 0x7C100200, // 000F CALL R4 1 + 0x8C10090A, // 0010 GETMET R4 R4 K10 + 0x8818030B, // 0011 GETMBR R6 R1 K11 + 0x881C030C, // 0012 GETMBR R7 R1 K12 + 0x7C100600, // 0013 CALL R4 3 + 0xB8161A00, // 0014 GETNGBL R5 K13 + 0x8C140B0E, // 0015 GETMET R5 R5 K14 + 0x581C000F, // 0016 LDCONST R7 K15 + 0x58200010, // 0017 LDCONST R8 K16 + 0x7C140600, // 0018 CALL R5 3 + 0x8C140511, // 0019 GETMET R5 R2 K17 + 0x7C140200, // 001A CALL R5 1 + 0x8C140B12, // 001B GETMET R5 R5 K18 + 0x881C0713, // 001C GETMBR R7 R3 K19 + 0x7C140400, // 001D CALL R5 2 + 0x8C140B12, // 001E GETMET R5 R5 K18 + 0x881C0714, // 001F GETMBR R7 R3 K20 + 0x7C140400, // 0020 CALL R5 2 + 0x8C140B15, // 0021 GETMET R5 R5 K21 + 0x7C140200, // 0022 CALL R5 1 + 0xB81A1A00, // 0023 GETNGBL R6 K13 + 0x8C180D0E, // 0024 GETMET R6 R6 K14 + 0x60200008, // 0025 GETGBL R8 G8 + 0x5C240600, // 0026 MOVE R9 R3 + 0x7C200200, // 0027 CALL R8 1 + 0x00222C08, // 0028 ADD R8 K22 R8 + 0x58240010, // 0029 LDCONST R9 K16 + 0x7C180600, // 002A CALL R6 3 + 0xB81A1A00, // 002B GETNGBL R6 K13 + 0x8C180D0E, // 002C GETMET R6 R6 K14 + 0x60200008, // 002D GETGBL R8 G8 + 0x88240718, // 002E GETMBR R9 R3 K24 + 0x7C200200, // 002F CALL R8 1 + 0x00222E08, // 0030 ADD R8 K23 R8 + 0x58240010, // 0031 LDCONST R9 K16 + 0x7C180600, // 0032 CALL R6 3 + 0xB81A1A00, // 0033 GETNGBL R6 K13 + 0x8C180D0E, // 0034 GETMET R6 R6 K14 + 0x60200008, // 0035 GETGBL R8 G8 + 0x8824071A, // 0036 GETMBR R9 R3 K26 + 0x7C200200, // 0037 CALL R8 1 + 0x00223208, // 0038 ADD R8 K25 R8 + 0x58240010, // 0039 LDCONST R9 K16 + 0x7C180600, // 003A CALL R6 3 + 0xB81A1A00, // 003B GETNGBL R6 K13 + 0x8C180D0E, // 003C GETMET R6 R6 K14 + 0x8C20071C, // 003D GETMET R8 R3 K28 + 0x7C200200, // 003E CALL R8 1 + 0x8C20111D, // 003F GETMET R8 R8 K29 + 0x7C200200, // 0040 CALL R8 1 + 0x00223608, // 0041 ADD R8 K27 R8 + 0x58240010, // 0042 LDCONST R9 K16 + 0x7C180600, // 0043 CALL R6 3 + 0xB81A1A00, // 0044 GETNGBL R6 K13 + 0x8C180D0E, // 0045 GETMET R6 R6 K14 + 0x8C200B1D, // 0046 GETMET R8 R5 K29 + 0x7C200200, // 0047 CALL R8 1 + 0x00223C08, // 0048 ADD R8 K30 R8 + 0x58240010, // 0049 LDCONST R9 K16 + 0x7C180600, // 004A CALL R6 3 + 0x60180015, // 004B GETGBL R6 G21 + 0x7C180000, // 004C CALL R6 0 + 0x8C180D1F, // 004D GETMET R6 R6 K31 + 0x88200120, // 004E GETMBR R8 R0 K32 + 0x7C180400, // 004F CALL R6 2 + 0x8C1C0521, // 0050 GETMET R7 R2 K33 + 0x7C1C0200, // 0051 CALL R7 1 + 0x8C1C0F22, // 0052 GETMET R7 R7 K34 + 0x88240723, // 0053 GETMBR R9 R3 K35 + 0x8C28071C, // 0054 GETMET R10 R3 K28 + 0x7C280200, // 0055 CALL R10 1 + 0x00281405, // 0056 ADD R10 R10 R5 + 0x5C2C0C00, // 0057 MOVE R11 R6 + 0x5432000F, // 0058 LDINT R12 16 + 0x7C1C0A00, // 0059 CALL R7 5 + 0xB8221A00, // 005A GETNGBL R8 K13 + 0x8C20110E, // 005B GETMET R8 R8 K14 + 0x5828000F, // 005C LDCONST R10 K15 + 0x582C0010, // 005D LDCONST R11 K16 + 0x7C200600, // 005E CALL R8 3 + 0xB8221A00, // 005F GETNGBL R8 K13 + 0x8C20110E, // 0060 GETMET R8 R8 K14 + 0x8C28071C, // 0061 GETMET R10 R3 K28 + 0x7C280200, // 0062 CALL R10 1 + 0x00281405, // 0063 ADD R10 R10 R5 + 0x8C28151D, // 0064 GETMET R10 R10 K29 + 0x7C280200, // 0065 CALL R10 1 + 0x002A480A, // 0066 ADD R10 K36 R10 + 0x582C0010, // 0067 LDCONST R11 K16 + 0x7C200600, // 0068 CALL R8 3 + 0xB8221A00, // 0069 GETNGBL R8 K13 + 0x8C20110E, // 006A GETMET R8 R8 K14 + 0x8C280F1D, // 006B GETMET R10 R7 K29 + 0x7C280200, // 006C CALL R10 1 + 0x002A4A0A, // 006D ADD R10 K37 R10 + 0x582C0010, // 006E LDCONST R11 K16 + 0x7C200600, // 006F CALL R8 3 + 0xB8221A00, // 0070 GETNGBL R8 K13 + 0x8C20110E, // 0071 GETMET R8 R8 K14 + 0x5828000F, // 0072 LDCONST R10 K15 + 0x582C0010, // 0073 LDCONST R11 K16 + 0x7C200600, // 0074 CALL R8 3 + 0x5421FFEE, // 0075 LDINT R8 -17 + 0x40220608, // 0076 CONNECT R8 K3 R8 + 0x88240926, // 0077 GETMBR R9 R4 K38 + 0x94201208, // 0078 GETIDX R8 R9 R8 + 0x5429FFEF, // 0079 LDINT R10 -16 + 0x40281527, // 007A CONNECT R10 R10 K39 + 0x882C0926, // 007B GETMBR R11 R4 K38 + 0x9424160A, // 007C GETIDX R9 R11 R10 + 0x8C300528, // 007D GETMET R12 R2 K40 + 0x5C380E00, // 007E MOVE R14 R7 + 0x603C0015, // 007F GETGBL R15 G21 + 0x7C3C0000, // 0080 CALL R15 0 + 0x8C3C1F1F, // 0081 GETMET R15 R15 K31 + 0x88440129, // 0082 GETMBR R17 R0 K41 + 0x7C3C0400, // 0083 CALL R15 2 + 0x60400015, // 0084 GETGBL R16 G21 + 0x7C400000, // 0085 CALL R16 0 + 0x6044000C, // 0086 GETGBL R17 G12 + 0x5C481000, // 0087 MOVE R18 R8 + 0x7C440200, // 0088 CALL R17 1 + 0x544A000F, // 0089 LDINT R18 16 + 0x7C300C00, // 008A CALL R12 6 + 0x5C281800, // 008B MOVE R10 R12 + 0x8C30152A, // 008C GETMET R12 R10 K42 + 0x5C381000, // 008D MOVE R14 R8 + 0x7C300400, // 008E CALL R12 2 + 0x5C2C1800, // 008F MOVE R11 R12 + 0x8C30152B, // 0090 GETMET R12 R10 K43 + 0x7C300200, // 0091 CALL R12 1 + 0xB8361A00, // 0092 GETNGBL R13 K13 + 0x8C341B0E, // 0093 GETMET R13 R13 K14 + 0x8C3C171D, // 0094 GETMET R15 R11 K29 + 0x7C3C0200, // 0095 CALL R15 1 + 0x003E580F, // 0096 ADD R15 K44 R15 + 0x58400010, // 0097 LDCONST R16 K16 + 0x7C340600, // 0098 CALL R13 3 + 0xB8361A00, // 0099 GETNGBL R13 K13 + 0x8C341B0E, // 009A GETMET R13 R13 K14 + 0x8C3C191D, // 009B GETMET R15 R12 K29 + 0x7C3C0200, // 009C CALL R15 1 + 0x003E5A0F, // 009D ADD R15 K45 R15 + 0x58400010, // 009E LDCONST R16 K16 + 0x7C340600, // 009F CALL R13 3 + 0xB8361A00, // 00A0 GETNGBL R13 K13 + 0x8C341B0E, // 00A1 GETMET R13 R13 K14 + 0x8C3C131D, // 00A2 GETMET R15 R9 K29 + 0x7C3C0200, // 00A3 CALL R15 1 + 0x003E5C0F, // 00A4 ADD R15 K46 R15 + 0x58400010, // 00A5 LDCONST R16 K16 + 0x7C340600, // 00A6 CALL R13 3 + 0xB8361A00, // 00A7 GETNGBL R13 K13 + 0x8C341B0E, // 00A8 GETMET R13 R13 K14 + 0x583C000F, // 00A9 LDCONST R15 K15 + 0x58400010, // 00AA LDCONST R16 K16 + 0x7C340600, // 00AB CALL R13 3 + 0x20341809, // 00AC NE R13 R12 R9 + 0x78360000, // 00AD JMPF R13 #00AF 0xB0065F30, // 00AE RAISE 1 K47 K48 - 0xB83E1000, // 00AF GETNGBL R15 K8 - 0x883C1F31, // 00B0 GETMBR R15 R15 K49 - 0x8C3C1F0A, // 00B1 GETMET R15 R15 K10 - 0x5C441A00, // 00B2 MOVE R17 R13 - 0x7C3C0400, // 00B3 CALL R15 2 - 0x8C401F32, // 00B4 GETMET R16 R15 K50 - 0x58480033, // 00B5 LDCONST R18 K51 - 0x7C400400, // 00B6 CALL R16 2 - 0x8C441F32, // 00B7 GETMET R17 R15 K50 - 0x584C0034, // 00B8 LDCONST R19 K52 - 0x7C440400, // 00B9 CALL R17 2 - 0x8C481F32, // 00BA GETMET R18 R15 K50 - 0x58500010, // 00BB LDCONST R20 K16 - 0x7C480400, // 00BC CALL R18 2 - 0xB84E1000, // 00BD GETNGBL R19 K8 - 0x884C2731, // 00BE GETMBR R19 R19 K49 - 0x8C4C270A, // 00BF GETMET R19 R19 K10 - 0x5C542000, // 00C0 MOVE R21 R16 - 0x7C4C0400, // 00C1 CALL R19 2 - 0xB8521A00, // 00C2 GETNGBL R20 K13 - 0x8C50290E, // 00C3 GETMET R20 R20 K14 - 0x60580008, // 00C4 GETGBL R22 G8 - 0x5C5C2600, // 00C5 MOVE R23 R19 - 0x7C580200, // 00C6 CALL R22 1 - 0x005A6A16, // 00C7 ADD R22 K53 R22 - 0x585C0010, // 00C8 LDCONST R23 K16 - 0x7C500600, // 00C9 CALL R20 3 - 0x8C502732, // 00CA GETMET R20 R19 K50 - 0x545A0008, // 00CB LDINT R22 9 - 0x7C500400, // 00CC CALL R20 2 - 0x8C542736, // 00CD GETMET R21 R19 K54 - 0x545E0005, // 00CE LDINT R23 6 - 0x7C540400, // 00CF CALL R21 2 - 0x8C582B32, // 00D0 GETMET R22 R21 K50 - 0x54620010, // 00D1 LDINT R24 17 - 0x7C580400, // 00D2 CALL R22 2 - 0x605C0004, // 00D3 GETGBL R23 G4 - 0x5C602C00, // 00D4 MOVE R24 R22 - 0x7C5C0200, // 00D5 CALL R23 1 - 0x1C5C2F37, // 00D6 EQ R23 R23 K55 - 0x785E0003, // 00D7 JMPF R23 #00DC - 0xB85E7000, // 00D8 GETNGBL R23 K56 - 0x5C602C00, // 00D9 MOVE R24 R22 - 0x7C5C0200, // 00DA CALL R23 1 - 0x5C582E00, // 00DB MOVE R22 R23 - 0x8C5C2D3A, // 00DC GETMET R23 R22 K58 - 0x7C5C0200, // 00DD CALL R23 1 - 0x90167217, // 00DE SETMBR R5 K57 R23 - 0xB85E1A00, // 00DF GETNGBL R23 K13 - 0x8C5C2F0E, // 00E0 GETMET R23 R23 K14 - 0x60640008, // 00E1 GETGBL R25 G8 - 0x88680B39, // 00E2 GETMBR R26 R5 K57 - 0x7C640200, // 00E3 CALL R25 1 - 0x00667619, // 00E4 ADD R25 K59 R25 - 0x58680010, // 00E5 LDCONST R26 K16 - 0x7C5C0600, // 00E6 CALL R23 3 - 0xB85E1000, // 00E7 GETNGBL R23 K8 - 0x885C2F31, // 00E8 GETMBR R23 R23 K49 - 0x8C5C2F3C, // 00E9 GETMET R23 R23 K60 - 0x7C5C0200, // 00EA CALL R23 1 - 0x8C602F3D, // 00EB GETMET R24 R23 K61 - 0x58680033, // 00EC LDCONST R26 K51 - 0xB86E1000, // 00ED GETNGBL R27 K8 - 0x886C3731, // 00EE GETMBR R27 R27 K49 - 0x886C373E, // 00EF GETMBR R27 R27 K62 - 0x5C702000, // 00F0 MOVE R28 R16 - 0x7C600800, // 00F1 CALL R24 4 - 0x8C602F3D, // 00F2 GETMET R24 R23 K61 - 0x58680034, // 00F3 LDCONST R26 K52 - 0xB86E1000, // 00F4 GETNGBL R27 K8 - 0x886C3731, // 00F5 GETMBR R27 R27 K49 - 0x886C373E, // 00F6 GETMBR R27 R27 K62 - 0x5C702200, // 00F7 MOVE R28 R17 - 0x7C600800, // 00F8 CALL R24 4 - 0x8C602F3D, // 00F9 GETMET R24 R23 K61 - 0x58680010, // 00FA LDCONST R26 K16 - 0xB86E1000, // 00FB GETNGBL R27 K8 - 0x886C3731, // 00FC GETMBR R27 R27 K49 - 0x886C373E, // 00FD GETMBR R27 R27 K62 - 0x8870013F, // 00FE GETMBR R28 R0 K63 - 0x7C600800, // 00FF CALL R24 4 - 0x8C602F3D, // 0100 GETMET R24 R23 K61 - 0x546A0003, // 0101 LDINT R26 4 - 0xB86E1000, // 0102 GETNGBL R27 K8 - 0x886C3731, // 0103 GETMBR R27 R27 K49 - 0x886C373E, // 0104 GETMBR R27 R27 K62 - 0x88700140, // 0105 GETMBR R28 R0 K64 - 0x7C600800, // 0106 CALL R24 4 - 0x8C602F41, // 0107 GETMET R24 R23 K65 - 0x7C600200, // 0108 CALL R24 1 - 0xB8661A00, // 0109 GETNGBL R25 K13 - 0x8C64330E, // 010A GETMET R25 R25 K14 - 0x8C6C291D, // 010B GETMET R27 R20 K29 - 0x7C6C0200, // 010C CALL R27 1 - 0x006E841B, // 010D ADD R27 K66 R27 - 0x58700010, // 010E LDCONST R28 K16 - 0x7C640600, // 010F CALL R25 3 - 0xB8661A00, // 0110 GETNGBL R25 K13 - 0x8C64330E, // 0111 GETMET R25 R25 K14 - 0x8C6C251D, // 0112 GETMET R27 R18 K29 - 0x7C6C0200, // 0113 CALL R27 1 - 0x006E861B, // 0114 ADD R27 K67 R27 - 0x58700010, // 0115 LDCONST R28 K16 - 0x7C640600, // 0116 CALL R25 3 - 0xB8661A00, // 0117 GETNGBL R25 K13 - 0x8C64330E, // 0118 GETMET R25 R25 K14 - 0x586C000F, // 0119 LDCONST R27 K15 - 0x58700010, // 011A LDCONST R28 K16 - 0x7C640600, // 011B CALL R25 3 - 0x8C640944, // 011C GETMET R25 R4 K68 - 0x7C640200, // 011D CALL R25 1 - 0x8C643345, // 011E GETMET R25 R25 K69 - 0x5C6C2800, // 011F MOVE R27 R20 - 0x5C703000, // 0120 MOVE R28 R24 - 0x5C742400, // 0121 MOVE R29 R18 - 0x7C640800, // 0122 CALL R25 4 - 0x5C683200, // 0123 MOVE R26 R25 - 0x746A0000, // 0124 JMPT R26 #0126 + 0xB8361000, // 00AF GETNGBL R13 K8 + 0x88341B31, // 00B0 GETMBR R13 R13 K49 + 0x8C341B0A, // 00B1 GETMET R13 R13 K10 + 0x5C3C1600, // 00B2 MOVE R15 R11 + 0x7C340400, // 00B3 CALL R13 2 + 0x8C381B32, // 00B4 GETMET R14 R13 K50 + 0x58400033, // 00B5 LDCONST R16 K51 + 0x7C380400, // 00B6 CALL R14 2 + 0x8C3C1B32, // 00B7 GETMET R15 R13 K50 + 0x58440034, // 00B8 LDCONST R17 K52 + 0x7C3C0400, // 00B9 CALL R15 2 + 0x8C401B32, // 00BA GETMET R16 R13 K50 + 0x58480010, // 00BB LDCONST R18 K16 + 0x7C400400, // 00BC CALL R16 2 + 0xB8461000, // 00BD GETNGBL R17 K8 + 0x88442331, // 00BE GETMBR R17 R17 K49 + 0x8C44230A, // 00BF GETMET R17 R17 K10 + 0x5C4C1C00, // 00C0 MOVE R19 R14 + 0x7C440400, // 00C1 CALL R17 2 + 0xB84A1A00, // 00C2 GETNGBL R18 K13 + 0x8C48250E, // 00C3 GETMET R18 R18 K14 + 0x60500008, // 00C4 GETGBL R20 G8 + 0x5C542200, // 00C5 MOVE R21 R17 + 0x7C500200, // 00C6 CALL R20 1 + 0x00526A14, // 00C7 ADD R20 K53 R20 + 0x58540010, // 00C8 LDCONST R21 K16 + 0x7C480600, // 00C9 CALL R18 3 + 0x8C482332, // 00CA GETMET R18 R17 K50 + 0x54520008, // 00CB LDINT R20 9 + 0x7C480400, // 00CC CALL R18 2 + 0x8C4C2336, // 00CD GETMET R19 R17 K54 + 0x54560005, // 00CE LDINT R21 6 + 0x7C4C0400, // 00CF CALL R19 2 + 0x8C502732, // 00D0 GETMET R20 R19 K50 + 0x545A0010, // 00D1 LDINT R22 17 + 0x7C500400, // 00D2 CALL R20 2 + 0x60540004, // 00D3 GETGBL R21 G4 + 0x5C582800, // 00D4 MOVE R22 R20 + 0x7C540200, // 00D5 CALL R21 1 + 0x1C542B37, // 00D6 EQ R21 R21 K55 + 0x78560003, // 00D7 JMPF R21 #00DC + 0xB8567000, // 00D8 GETNGBL R21 K56 + 0x5C582800, // 00D9 MOVE R22 R20 + 0x7C540200, // 00DA CALL R21 1 + 0x5C502A00, // 00DB MOVE R20 R21 + 0x8C54293A, // 00DC GETMET R21 R20 K58 + 0x7C540200, // 00DD CALL R21 1 + 0x900E7215, // 00DE SETMBR R3 K57 R21 + 0xB8561A00, // 00DF GETNGBL R21 K13 + 0x8C542B0E, // 00E0 GETMET R21 R21 K14 + 0x605C0008, // 00E1 GETGBL R23 G8 + 0x88600739, // 00E2 GETMBR R24 R3 K57 + 0x7C5C0200, // 00E3 CALL R23 1 + 0x005E7617, // 00E4 ADD R23 K59 R23 + 0x58600010, // 00E5 LDCONST R24 K16 + 0x7C540600, // 00E6 CALL R21 3 + 0xB8561000, // 00E7 GETNGBL R21 K8 + 0x88542B31, // 00E8 GETMBR R21 R21 K49 + 0x8C542B3C, // 00E9 GETMET R21 R21 K60 + 0x7C540200, // 00EA CALL R21 1 + 0x8C582B3D, // 00EB GETMET R22 R21 K61 + 0x58600033, // 00EC LDCONST R24 K51 + 0xB8661000, // 00ED GETNGBL R25 K8 + 0x88643331, // 00EE GETMBR R25 R25 K49 + 0x8864333E, // 00EF GETMBR R25 R25 K62 + 0x5C681C00, // 00F0 MOVE R26 R14 + 0x7C580800, // 00F1 CALL R22 4 + 0x8C582B3D, // 00F2 GETMET R22 R21 K61 + 0x58600034, // 00F3 LDCONST R24 K52 + 0xB8661000, // 00F4 GETNGBL R25 K8 + 0x88643331, // 00F5 GETMBR R25 R25 K49 + 0x8864333E, // 00F6 GETMBR R25 R25 K62 + 0x5C681E00, // 00F7 MOVE R26 R15 + 0x7C580800, // 00F8 CALL R22 4 + 0x8C582B3D, // 00F9 GETMET R22 R21 K61 + 0x58600010, // 00FA LDCONST R24 K16 + 0xB8661000, // 00FB GETNGBL R25 K8 + 0x88643331, // 00FC GETMBR R25 R25 K49 + 0x8864333E, // 00FD GETMBR R25 R25 K62 + 0x8868013F, // 00FE GETMBR R26 R0 K63 + 0x7C580800, // 00FF CALL R22 4 + 0x8C582B3D, // 0100 GETMET R22 R21 K61 + 0x54620003, // 0101 LDINT R24 4 + 0xB8661000, // 0102 GETNGBL R25 K8 + 0x88643331, // 0103 GETMBR R25 R25 K49 + 0x8864333E, // 0104 GETMBR R25 R25 K62 + 0x88680140, // 0105 GETMBR R26 R0 K64 + 0x7C580800, // 0106 CALL R22 4 + 0x8C582B41, // 0107 GETMET R22 R21 K65 + 0x7C580200, // 0108 CALL R22 1 + 0xB85E1A00, // 0109 GETNGBL R23 K13 + 0x8C5C2F0E, // 010A GETMET R23 R23 K14 + 0x8C64251D, // 010B GETMET R25 R18 K29 + 0x7C640200, // 010C CALL R25 1 + 0x00668419, // 010D ADD R25 K66 R25 + 0x58680010, // 010E LDCONST R26 K16 + 0x7C5C0600, // 010F CALL R23 3 + 0xB85E1A00, // 0110 GETNGBL R23 K13 + 0x8C5C2F0E, // 0111 GETMET R23 R23 K14 + 0x8C64211D, // 0112 GETMET R25 R16 K29 + 0x7C640200, // 0113 CALL R25 1 + 0x00668619, // 0114 ADD R25 K67 R25 + 0x58680010, // 0115 LDCONST R26 K16 + 0x7C5C0600, // 0116 CALL R23 3 + 0xB85E1A00, // 0117 GETNGBL R23 K13 + 0x8C5C2F0E, // 0118 GETMET R23 R23 K14 + 0x5864000F, // 0119 LDCONST R25 K15 + 0x58680010, // 011A LDCONST R26 K16 + 0x7C5C0600, // 011B CALL R23 3 + 0x8C5C0544, // 011C GETMET R23 R2 K68 + 0x7C5C0200, // 011D CALL R23 1 + 0x8C5C2F45, // 011E GETMET R23 R23 K69 + 0x5C642400, // 011F MOVE R25 R18 + 0x5C682C00, // 0120 MOVE R26 R22 + 0x5C6C2000, // 0121 MOVE R27 R16 + 0x7C5C0800, // 0122 CALL R23 4 + 0x5C602E00, // 0123 MOVE R24 R23 + 0x74620000, // 0124 JMPT R24 #0126 0xB0065F46, // 0125 RAISE 1 K47 K70 - 0xB86A1A00, // 0126 GETNGBL R26 K13 - 0x8C68350E, // 0127 GETMET R26 R26 K14 - 0x58700047, // 0128 LDCONST R28 K71 - 0x58740010, // 0129 LDCONST R29 K16 - 0x7C680600, // 012A CALL R26 3 - 0x8C680911, // 012B GETMET R26 R4 K17 - 0x7C680200, // 012C CALL R26 1 - 0x8C683512, // 012D GETMET R26 R26 K18 - 0x88700B13, // 012E GETMBR R28 R5 K19 - 0x7C680400, // 012F CALL R26 2 - 0x8C683512, // 0130 GETMET R26 R26 K18 - 0x88700B14, // 0131 GETMBR R28 R5 K20 - 0x7C680400, // 0132 CALL R26 2 - 0x8C683512, // 0133 GETMET R26 R26 K18 - 0x88700D48, // 0134 GETMBR R28 R6 K72 - 0x7C680400, // 0135 CALL R26 2 - 0x8C683515, // 0136 GETMET R26 R26 K21 - 0x7C680200, // 0137 CALL R26 1 - 0x5C1C3400, // 0138 MOVE R7 R26 - 0x4C680000, // 0139 LDNIL R26 - 0x9016261A, // 013A SETMBR R5 K19 R26 - 0x4C680000, // 013B LDNIL R26 - 0x9016281A, // 013C SETMBR R5 K20 R26 - 0xB86A1A00, // 013D GETNGBL R26 K13 - 0x8C68350E, // 013E GETMET R26 R26 K14 - 0x58700049, // 013F LDCONST R28 K73 - 0x58740010, // 0140 LDCONST R29 K16 - 0x7C680600, // 0141 CALL R26 3 - 0xB86A1A00, // 0142 GETNGBL R26 K13 - 0x8C68350E, // 0143 GETMET R26 R26 K14 - 0x88700B23, // 0144 GETMBR R28 R5 K35 - 0x8C70391D, // 0145 GETMET R28 R28 K29 - 0x7C700200, // 0146 CALL R28 1 - 0x0072941C, // 0147 ADD R28 K74 R28 - 0x58740010, // 0148 LDCONST R29 K16 - 0x7C680600, // 0149 CALL R26 3 - 0xB86A1A00, // 014A GETNGBL R26 K13 - 0x8C68350E, // 014B GETMET R26 R26 K14 - 0x8C700B1C, // 014C GETMET R28 R5 K28 - 0x7C700200, // 014D CALL R28 1 - 0x00703807, // 014E ADD R28 R28 R7 - 0x8C70391D, // 014F GETMET R28 R28 K29 - 0x7C700200, // 0150 CALL R28 1 - 0x0072961C, // 0151 ADD R28 K75 R28 - 0x58740010, // 0152 LDCONST R29 K16 - 0x7C680600, // 0153 CALL R26 3 - 0x8C680921, // 0154 GETMET R26 R4 K33 - 0x7C680200, // 0155 CALL R26 1 - 0x8C683522, // 0156 GETMET R26 R26 K34 - 0x88700B23, // 0157 GETMBR R28 R5 K35 - 0x8C740B1C, // 0158 GETMET R29 R5 K28 - 0x7C740200, // 0159 CALL R29 1 - 0x00743A07, // 015A ADD R29 R29 R7 - 0x60780015, // 015B GETGBL R30 G21 - 0x7C780000, // 015C CALL R30 0 - 0x8C783D1F, // 015D GETMET R30 R30 K31 - 0x8880014C, // 015E GETMBR R32 R0 K76 - 0x7C780400, // 015F CALL R30 2 - 0x547E002F, // 0160 LDINT R31 48 - 0x7C680A00, // 0161 CALL R26 5 - 0x546E000E, // 0162 LDINT R27 15 - 0x406E061B, // 0163 CONNECT R27 K3 R27 - 0x946C341B, // 0164 GETIDX R27 R26 R27 - 0x5472000F, // 0165 LDINT R28 16 - 0x5476001E, // 0166 LDINT R29 31 - 0x4070381D, // 0167 CONNECT R28 R28 R29 - 0x9470341C, // 0168 GETIDX R28 R26 R28 - 0x5476001F, // 0169 LDINT R29 32 - 0x547A002E, // 016A LDINT R30 47 - 0x40743A1E, // 016B CONNECT R29 R29 R30 - 0x9474341D, // 016C GETIDX R29 R26 R29 - 0xB87A1A00, // 016D GETNGBL R30 K13 - 0x8C783D4D, // 016E GETMET R30 R30 K77 - 0x7C780200, // 016F CALL R30 1 - 0x94783D4E, // 0170 GETIDX R30 R30 K78 - 0xB87E1A00, // 0171 GETNGBL R31 K13 - 0x8C7C3F0E, // 0172 GETMET R31 R31 K14 - 0x58840049, // 0173 LDCONST R33 K73 - 0x58880010, // 0174 LDCONST R34 K16 - 0x7C7C0600, // 0175 CALL R31 3 - 0xB87E1A00, // 0176 GETNGBL R31 K13 - 0x8C7C3F0E, // 0177 GETMET R31 R31 K14 - 0x8C84371D, // 0178 GETMET R33 R27 K29 - 0x7C840200, // 0179 CALL R33 1 - 0x00869E21, // 017A ADD R33 K79 R33 - 0x58880010, // 017B LDCONST R34 K16 - 0x7C7C0600, // 017C CALL R31 3 - 0xB87E1A00, // 017D GETNGBL R31 K13 - 0x8C7C3F0E, // 017E GETMET R31 R31 K14 - 0x8C84391D, // 017F GETMET R33 R28 K29 - 0x7C840200, // 0180 CALL R33 1 - 0x0086A021, // 0181 ADD R33 K80 R33 - 0x58880010, // 0182 LDCONST R34 K16 - 0x7C7C0600, // 0183 CALL R31 3 - 0xB87E1A00, // 0184 GETNGBL R31 K13 - 0x8C7C3F0E, // 0185 GETMET R31 R31 K14 - 0x8C843B1D, // 0186 GETMET R33 R29 K29 - 0x7C840200, // 0187 CALL R33 1 - 0x0086A221, // 0188 ADD R33 K81 R33 - 0x58880010, // 0189 LDCONST R34 K16 - 0x7C7C0600, // 018A CALL R31 3 - 0xB87E1A00, // 018B GETNGBL R31 K13 - 0x8C7C3F0E, // 018C GETMET R31 R31 K14 - 0x58840049, // 018D LDCONST R33 K73 - 0x58880010, // 018E LDCONST R34 K16 - 0x7C7C0600, // 018F CALL R31 3 - 0x8C7C0352, // 0190 GETMET R31 R1 K82 - 0x5486003F, // 0191 LDINT R33 64 - 0x50880200, // 0192 LDBOOL R34 1 0 - 0x7C7C0600, // 0193 CALL R31 3 - 0x60800015, // 0194 GETGBL R32 G21 - 0x7C800000, // 0195 CALL R32 0 - 0x8C844153, // 0196 GETMET R33 R32 K83 - 0x588C0003, // 0197 LDCONST R35 K3 - 0x58900034, // 0198 LDCONST R36 K52 - 0x7C840600, // 0199 CALL R33 3 - 0x8C844153, // 019A GETMET R33 R32 K83 - 0x588C0003, // 019B LDCONST R35 K3 - 0x54920003, // 019C LDINT R36 4 - 0x7C840600, // 019D CALL R33 3 - 0x8C844153, // 019E GETMET R33 R32 K83 - 0x588C0003, // 019F LDCONST R35 K3 - 0x54920003, // 01A0 LDINT R36 4 - 0x7C840600, // 01A1 CALL R33 3 - 0x8C843F41, // 01A2 GETMET R33 R31 K65 - 0x5C8C4000, // 01A3 MOVE R35 R32 - 0x7C840400, // 01A4 CALL R33 2 - 0x88880154, // 01A5 GETMBR R34 R0 K84 - 0x8C884555, // 01A6 GETMET R34 R34 K85 - 0x5C904200, // 01A7 MOVE R36 R33 - 0x5C940400, // 01A8 MOVE R37 R2 - 0x5C980600, // 01A9 MOVE R38 R3 - 0x889C3F56, // 01AA GETMBR R39 R31 K86 - 0x7C880A00, // 01AB CALL R34 5 - 0x8C880B57, // 01AC GETMET R34 R5 K87 - 0x7C880200, // 01AD CALL R34 1 - 0x8C880B58, // 01AE GETMET R34 R5 K88 - 0x5C903600, // 01AF MOVE R36 R27 - 0x5C943800, // 01B0 MOVE R37 R28 - 0x5C983A00, // 01B1 MOVE R38 R29 - 0x5C9C3C00, // 01B2 MOVE R39 R30 - 0x7C880A00, // 01B3 CALL R34 5 - 0x8C880B59, // 01B4 GETMET R34 R5 K89 - 0x50900200, // 01B5 LDBOOL R36 1 0 - 0x7C880400, // 01B6 CALL R34 2 - 0x8C880B5A, // 01B7 GETMET R34 R5 K90 - 0x7C880200, // 01B8 CALL R34 1 - 0x8C880B5B, // 01B9 GETMET R34 R5 K91 - 0x7C880200, // 01BA CALL R34 1 - 0x50880200, // 01BB LDBOOL R34 1 0 - 0x80044400, // 01BC RET 1 R34 + 0xB8621A00, // 0126 GETNGBL R24 K13 + 0x8C60310E, // 0127 GETMET R24 R24 K14 + 0x58680047, // 0128 LDCONST R26 K71 + 0x586C0010, // 0129 LDCONST R27 K16 + 0x7C600600, // 012A CALL R24 3 + 0x8C600511, // 012B GETMET R24 R2 K17 + 0x7C600200, // 012C CALL R24 1 + 0x8C603112, // 012D GETMET R24 R24 K18 + 0x88680713, // 012E GETMBR R26 R3 K19 + 0x7C600400, // 012F CALL R24 2 + 0x8C603112, // 0130 GETMET R24 R24 K18 + 0x88680714, // 0131 GETMBR R26 R3 K20 + 0x7C600400, // 0132 CALL R24 2 + 0x8C603112, // 0133 GETMET R24 R24 K18 + 0x88680948, // 0134 GETMBR R26 R4 K72 + 0x7C600400, // 0135 CALL R24 2 + 0x8C603115, // 0136 GETMET R24 R24 K21 + 0x7C600200, // 0137 CALL R24 1 + 0x5C143000, // 0138 MOVE R5 R24 + 0x4C600000, // 0139 LDNIL R24 + 0x900E2618, // 013A SETMBR R3 K19 R24 + 0x4C600000, // 013B LDNIL R24 + 0x900E2818, // 013C SETMBR R3 K20 R24 + 0xB8621A00, // 013D GETNGBL R24 K13 + 0x8C60310E, // 013E GETMET R24 R24 K14 + 0x58680049, // 013F LDCONST R26 K73 + 0x586C0010, // 0140 LDCONST R27 K16 + 0x7C600600, // 0141 CALL R24 3 + 0xB8621A00, // 0142 GETNGBL R24 K13 + 0x8C60310E, // 0143 GETMET R24 R24 K14 + 0x88680723, // 0144 GETMBR R26 R3 K35 + 0x8C68351D, // 0145 GETMET R26 R26 K29 + 0x7C680200, // 0146 CALL R26 1 + 0x006A941A, // 0147 ADD R26 K74 R26 + 0x586C0010, // 0148 LDCONST R27 K16 + 0x7C600600, // 0149 CALL R24 3 + 0xB8621A00, // 014A GETNGBL R24 K13 + 0x8C60310E, // 014B GETMET R24 R24 K14 + 0x8C68071C, // 014C GETMET R26 R3 K28 + 0x7C680200, // 014D CALL R26 1 + 0x00683405, // 014E ADD R26 R26 R5 + 0x8C68351D, // 014F GETMET R26 R26 K29 + 0x7C680200, // 0150 CALL R26 1 + 0x006A961A, // 0151 ADD R26 K75 R26 + 0x586C0010, // 0152 LDCONST R27 K16 + 0x7C600600, // 0153 CALL R24 3 + 0x8C600521, // 0154 GETMET R24 R2 K33 + 0x7C600200, // 0155 CALL R24 1 + 0x8C603122, // 0156 GETMET R24 R24 K34 + 0x88680723, // 0157 GETMBR R26 R3 K35 + 0x8C6C071C, // 0158 GETMET R27 R3 K28 + 0x7C6C0200, // 0159 CALL R27 1 + 0x006C3605, // 015A ADD R27 R27 R5 + 0x60700015, // 015B GETGBL R28 G21 + 0x7C700000, // 015C CALL R28 0 + 0x8C70391F, // 015D GETMET R28 R28 K31 + 0x8878014C, // 015E GETMBR R30 R0 K76 + 0x7C700400, // 015F CALL R28 2 + 0x5476002F, // 0160 LDINT R29 48 + 0x7C600A00, // 0161 CALL R24 5 + 0x5466000E, // 0162 LDINT R25 15 + 0x40660619, // 0163 CONNECT R25 K3 R25 + 0x94643019, // 0164 GETIDX R25 R24 R25 + 0x546A000F, // 0165 LDINT R26 16 + 0x546E001E, // 0166 LDINT R27 31 + 0x4068341B, // 0167 CONNECT R26 R26 R27 + 0x9468301A, // 0168 GETIDX R26 R24 R26 + 0x546E001F, // 0169 LDINT R27 32 + 0x5472002E, // 016A LDINT R28 47 + 0x406C361C, // 016B CONNECT R27 R27 R28 + 0x946C301B, // 016C GETIDX R27 R24 R27 + 0xB8721A00, // 016D GETNGBL R28 K13 + 0x8C70394D, // 016E GETMET R28 R28 K77 + 0x7C700200, // 016F CALL R28 1 + 0x9470394E, // 0170 GETIDX R28 R28 K78 + 0xB8761A00, // 0171 GETNGBL R29 K13 + 0x8C743B0E, // 0172 GETMET R29 R29 K14 + 0x587C0049, // 0173 LDCONST R31 K73 + 0x58800010, // 0174 LDCONST R32 K16 + 0x7C740600, // 0175 CALL R29 3 + 0xB8761A00, // 0176 GETNGBL R29 K13 + 0x8C743B0E, // 0177 GETMET R29 R29 K14 + 0x8C7C331D, // 0178 GETMET R31 R25 K29 + 0x7C7C0200, // 0179 CALL R31 1 + 0x007E9E1F, // 017A ADD R31 K79 R31 + 0x58800010, // 017B LDCONST R32 K16 + 0x7C740600, // 017C CALL R29 3 + 0xB8761A00, // 017D GETNGBL R29 K13 + 0x8C743B0E, // 017E GETMET R29 R29 K14 + 0x8C7C351D, // 017F GETMET R31 R26 K29 + 0x7C7C0200, // 0180 CALL R31 1 + 0x007EA01F, // 0181 ADD R31 K80 R31 + 0x58800010, // 0182 LDCONST R32 K16 + 0x7C740600, // 0183 CALL R29 3 + 0xB8761A00, // 0184 GETNGBL R29 K13 + 0x8C743B0E, // 0185 GETMET R29 R29 K14 + 0x8C7C371D, // 0186 GETMET R31 R27 K29 + 0x7C7C0200, // 0187 CALL R31 1 + 0x007EA21F, // 0188 ADD R31 K81 R31 + 0x58800010, // 0189 LDCONST R32 K16 + 0x7C740600, // 018A CALL R29 3 + 0xB8761A00, // 018B GETNGBL R29 K13 + 0x8C743B0E, // 018C GETMET R29 R29 K14 + 0x587C0049, // 018D LDCONST R31 K73 + 0x58800010, // 018E LDCONST R32 K16 + 0x7C740600, // 018F CALL R29 3 + 0x8C740352, // 0190 GETMET R29 R1 K82 + 0x547E003F, // 0191 LDINT R31 64 + 0x50800200, // 0192 LDBOOL R32 1 0 + 0x7C740600, // 0193 CALL R29 3 + 0x60780015, // 0194 GETGBL R30 G21 + 0x7C780000, // 0195 CALL R30 0 + 0x8C7C3D53, // 0196 GETMET R31 R30 K83 + 0x58840003, // 0197 LDCONST R33 K3 + 0x58880034, // 0198 LDCONST R34 K52 + 0x7C7C0600, // 0199 CALL R31 3 + 0x8C7C3D53, // 019A GETMET R31 R30 K83 + 0x58840003, // 019B LDCONST R33 K3 + 0x548A0003, // 019C LDINT R34 4 + 0x7C7C0600, // 019D CALL R31 3 + 0x8C7C3D53, // 019E GETMET R31 R30 K83 + 0x58840003, // 019F LDCONST R33 K3 + 0x548A0003, // 01A0 LDINT R34 4 + 0x7C7C0600, // 01A1 CALL R31 3 + 0x8C7C3B41, // 01A2 GETMET R31 R29 K65 + 0x5C843C00, // 01A3 MOVE R33 R30 + 0x7C7C0400, // 01A4 CALL R31 2 + 0x88800154, // 01A5 GETMBR R32 R0 K84 + 0x8C804155, // 01A6 GETMET R32 R32 K85 + 0x5C883E00, // 01A7 MOVE R34 R31 + 0x888C0356, // 01A8 GETMBR R35 R1 K86 + 0x88900357, // 01A9 GETMBR R36 R1 K87 + 0x88943B58, // 01AA GETMBR R37 R29 K88 + 0x7C800A00, // 01AB CALL R32 5 + 0x8C800759, // 01AC GETMET R32 R3 K89 + 0x7C800200, // 01AD CALL R32 1 + 0x8C80075A, // 01AE GETMET R32 R3 K90 + 0x5C883200, // 01AF MOVE R34 R25 + 0x5C8C3400, // 01B0 MOVE R35 R26 + 0x5C903600, // 01B1 MOVE R36 R27 + 0x5C943800, // 01B2 MOVE R37 R28 + 0x7C800A00, // 01B3 CALL R32 5 + 0x8C80075B, // 01B4 GETMET R32 R3 K91 + 0x50880200, // 01B5 LDBOOL R34 1 0 + 0x7C800400, // 01B6 CALL R32 2 + 0x8C80075C, // 01B7 GETMET R32 R3 K92 + 0x7C800200, // 01B8 CALL R32 1 + 0x8C80075D, // 01B9 GETMET R32 R3 K93 + 0x7C800200, // 01BA CALL R32 1 + 0x50800200, // 01BB LDBOOL R32 1 0 + 0x80044000, // 01BC RET 1 R32 }) ) ); @@ -1358,15 +1364,15 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma3, /* name */ ********************************************************************/ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */ be_nested_proto( - 36, /* nstack */ - 4, /* argc */ + 35, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[116]) { /* constants */ + ( &(const bvalue[119]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(opcode), /* K2 */ be_nested_str_weak(local_session_id), @@ -1381,663 +1387,679 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */ /* K11 */ be_nested_str_weak(app_payload_idx), /* K12 */ be_nested_str_weak(initiatorEph_pub), /* K13 */ be_nested_str_weak(initiatorEphPubKey), - /* K14 */ be_nested_str_weak(find_session_by_destination_id), - /* K15 */ be_nested_str_weak(destinationId), - /* K16 */ be_nested_str_weak(initiatorRandom), - /* K17 */ be_nested_str_weak(valuer_error), - /* K18 */ be_nested_str_weak(StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), - /* K19 */ be_nested_str_weak(source_node_id), - /* K20 */ be_nested_str_weak(set_mode), - /* K21 */ be_nested_str_weak(Session), - /* K22 */ be_nested_str_weak(__CASE), - /* K23 */ be_nested_str_weak(session), - /* K24 */ be_nested_str_weak(device), - /* K25 */ be_nested_str_weak(sessions), - /* K26 */ be_nested_str_weak(remove_session), - /* K27 */ be_nested_str_weak(_future_initiator_session_id), - /* K28 */ be_nested_str_weak(initiator_session_id), - /* K29 */ be_nested_str_weak(_future_local_session_id), - /* K30 */ be_nested_str_weak(gen_local_session_id), - /* K31 */ be_nested_str_weak(future_local_session_id), - /* K32 */ be_nested_str_weak(resumptionID), - /* K33 */ be_nested_str_weak(initiatorResumeMIC), - /* K34 */ be_nested_str_weak(shared_secret), - /* K35 */ be_nested_str_weak(fromstring), - /* K36 */ be_nested_str_weak(Sigma1_Resume), - /* K37 */ be_nested_str_weak(HKDF_SHA256), - /* K38 */ be_nested_str_weak(derive), - /* K39 */ be_nested_str_weak(NCASE_SigmaR1), - /* K40 */ be_const_int(2147483647), - /* K41 */ be_nested_str_weak(AES_CCM), - /* K42 */ be_nested_str_weak(decrypt), - /* K43 */ be_nested_str_weak(tag), - /* K44 */ be_nested_str_weak(tasmota), - /* K45 */ be_nested_str_weak(log), - /* K46 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A), - /* K47 */ be_const_int(3), - /* K48 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s1rk_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), - /* K49 */ be_nested_str_weak(tohex), - /* K50 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20tag_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), - /* K51 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20Resume1MICPayload_X20_X3D_X20), - /* K52 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20decrypted_tag_X20_X20_X20_X20_X20_X3D_X20), - /* K53 */ be_nested_str_weak(resumption_id), - /* K54 */ be_nested_str_weak(random), - /* K55 */ be_nested_str_weak(Sigma2_Resume), - /* K56 */ be_nested_str_weak(NCASE_SigmaR2), - /* K57 */ be_nested_str_weak(Sigma2Resume), - /* K58 */ be_nested_str_weak(responderSessionID), - /* K59 */ be_nested_str_weak(sigma2ResumeMIC), - /* K60 */ be_nested_str_weak(SessionResumptionKeys), - /* K61 */ be_nested_str_weak(rtc), - /* K62 */ be_nested_str_weak(utc), - /* K63 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A), - /* K64 */ be_nested_str_weak(MTR_X3A_X20I2RKey_X20_X20_X20_X20_X20_X20_X3D), - /* K65 */ be_nested_str_weak(MTR_X3A_X20R2IKey_X20_X20_X20_X20_X20_X20_X3D), - /* K66 */ be_nested_str_weak(MTR_X3A_X20AC_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), - /* K67 */ be_nested_str_weak(encode), - /* K68 */ be_nested_str_weak(_Msg1), - /* K69 */ be_nested_str_weak(MTR_X3A_X20sigma2resume_raw_X3A_X20), - /* K70 */ be_nested_str_weak(build_response), - /* K71 */ be_nested_str_weak(responder), - /* K72 */ be_nested_str_weak(send_response), - /* K73 */ be_nested_str_weak(message_counter), - /* K74 */ be_nested_str_weak(close), - /* K75 */ be_nested_str_weak(set_keys), - /* K76 */ be_nested_str_weak(set_persist), - /* K77 */ be_nested_str_weak(set_no_expiration), - /* K78 */ be_nested_str_weak(save), - /* K79 */ be_nested_str_weak(ResponderEph_priv), - /* K80 */ be_nested_str_weak(ResponderEph_pub), - /* K81 */ be_nested_str_weak(EC_P256), - /* K82 */ be_nested_str_weak(public_key), - /* K83 */ be_nested_str_weak(shared_key), - /* K84 */ be_nested_str_weak(TLV), - /* K85 */ be_nested_str_weak(Matter_TLV_struct), - /* K86 */ be_nested_str_weak(add_TLV), - /* K87 */ be_const_int(1), - /* K88 */ be_nested_str_weak(B2), - /* K89 */ be_nested_str_weak(get_noc), - /* K90 */ be_const_int(2), - /* K91 */ be_nested_str_weak(get_icac), - /* K92 */ be_nested_str_weak(ecdsa_sign_sha256), - /* K93 */ be_nested_str_weak(get_pk), - /* K94 */ be_nested_str_weak(Msg1), - /* K95 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20MSG1_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), - /* K96 */ be_nested_str_weak(SHA256), - /* K97 */ be_nested_str_weak(update), - /* K98 */ be_nested_str_weak(out), - /* K99 */ be_nested_str_weak(S2K_Info), - /* K100 */ be_nested_str_weak(get_ipk_group_key), - /* K101 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20SharedSecret_X20_X20_X3D_X20), - /* K102 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s2k_salt_X20_X20_X20_X20_X20_X20_X3D_X20), - /* K103 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s2k_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), - /* K104 */ be_nested_str_weak(TBEData2_Nonce), - /* K105 */ be_nested_str_weak(encrypt), - /* K106 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TBEData2Enc_X20_X20_X20_X3D_X20), - /* K107 */ be_nested_str_weak(Sigma2), - /* K108 */ be_nested_str_weak(responderRandom), - /* K109 */ be_nested_str_weak(responderSessionId), - /* K110 */ be_nested_str_weak(responderEphPubKey), - /* K111 */ be_nested_str_weak(encrypted2), - /* K112 */ be_nested_str_weak(MTR_X3A_X20sigma2_X3A_X20), - /* K113 */ be_nested_str_weak(inspect), - /* K114 */ be_nested_str_weak(_Msg2), - /* K115 */ be_nested_str_weak(MTR_X3A_X20sigma2_raw_X3A_X20), + /* K14 */ be_nested_str_weak(resumptionID), + /* K15 */ be_nested_str_weak(initiatorResumeMIC), + /* K16 */ be_nested_str_weak(device), + /* K17 */ be_nested_str_weak(sessions), + /* K18 */ be_nested_str_weak(find_session_by_resumption_id), + /* K19 */ be_nested_str_weak(find_session_by_destination_id), + /* K20 */ be_nested_str_weak(destinationId), + /* K21 */ be_nested_str_weak(initiatorRandom), + /* K22 */ be_nested_str_weak(valuer_error), + /* K23 */ be_nested_str_weak(StatusReport_X28GeneralCode_X3A_X20FAILURE_X2C_X20ProtocolId_X3A_X20SECURE_CHANNEL_X2C_X20ProtocolCode_X3A_X20NO_SHARED_TRUST_ROOTS_X29), + /* K24 */ be_nested_str_weak(source_node_id), + /* K25 */ be_nested_str_weak(set_mode), + /* K26 */ be_nested_str_weak(Session), + /* K27 */ be_nested_str_weak(__CASE), + /* K28 */ be_nested_str_weak(session), + /* K29 */ be_nested_str_weak(remove_session), + /* K30 */ be_nested_str_weak(_future_initiator_session_id), + /* K31 */ be_nested_str_weak(initiator_session_id), + /* K32 */ be_nested_str_weak(_future_local_session_id), + /* K33 */ be_nested_str_weak(gen_local_session_id), + /* K34 */ be_nested_str_weak(future_local_session_id), + /* K35 */ be_nested_str_weak(shared_secret), + /* K36 */ be_nested_str_weak(fromstring), + /* K37 */ be_nested_str_weak(Sigma1_Resume), + /* K38 */ be_nested_str_weak(HKDF_SHA256), + /* K39 */ be_nested_str_weak(derive), + /* K40 */ be_nested_str_weak(NCASE_SigmaR1), + /* K41 */ be_const_int(2147483647), + /* K42 */ be_nested_str_weak(AES_CCM), + /* K43 */ be_nested_str_weak(decrypt), + /* K44 */ be_nested_str_weak(tag), + /* K45 */ be_nested_str_weak(tasmota), + /* K46 */ be_nested_str_weak(log), + /* K47 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A), + /* K48 */ be_const_int(3), + /* K49 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s1rk_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), + /* K50 */ be_nested_str_weak(tohex), + /* K51 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20tag_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), + /* K52 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20Resume1MICPayload_X20_X3D_X20), + /* K53 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20decrypted_tag_X20_X20_X20_X20_X20_X3D_X20), + /* K54 */ be_nested_str_weak(resumption_id), + /* K55 */ be_nested_str_weak(random), + /* K56 */ be_nested_str_weak(Sigma2_Resume), + /* K57 */ be_nested_str_weak(NCASE_SigmaR2), + /* K58 */ be_nested_str_weak(Sigma2Resume), + /* K59 */ be_nested_str_weak(responderSessionID), + /* K60 */ be_nested_str_weak(sigma2ResumeMIC), + /* K61 */ be_nested_str_weak(SessionResumptionKeys), + /* K62 */ be_nested_str_weak(rtc), + /* K63 */ be_nested_str_weak(utc), + /* K64 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A), + /* K65 */ be_nested_str_weak(MTR_X3A_X20I2RKey_X20_X20_X20_X20_X20_X20_X3D), + /* K66 */ be_nested_str_weak(MTR_X3A_X20R2IKey_X20_X20_X20_X20_X20_X20_X3D), + /* K67 */ be_nested_str_weak(MTR_X3A_X20AC_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), + /* K68 */ be_nested_str_weak(encode), + /* K69 */ be_nested_str_weak(_Msg1), + /* K70 */ be_nested_str_weak(MTR_X3A_X20sigma2resume_raw_X3A_X20), + /* K71 */ be_nested_str_weak(build_response), + /* K72 */ be_nested_str_weak(responder), + /* K73 */ be_nested_str_weak(send_response), + /* K74 */ be_nested_str_weak(remote_ip), + /* K75 */ be_nested_str_weak(remote_port), + /* K76 */ be_nested_str_weak(message_counter), + /* K77 */ be_nested_str_weak(close), + /* K78 */ be_nested_str_weak(set_keys), + /* K79 */ be_nested_str_weak(set_persist), + /* K80 */ be_nested_str_weak(set_no_expiration), + /* K81 */ be_nested_str_weak(save), + /* K82 */ be_nested_str_weak(ResponderEph_priv), + /* K83 */ be_nested_str_weak(ResponderEph_pub), + /* K84 */ be_nested_str_weak(EC_P256), + /* K85 */ be_nested_str_weak(public_key), + /* K86 */ be_nested_str_weak(shared_key), + /* K87 */ be_nested_str_weak(TLV), + /* K88 */ be_nested_str_weak(Matter_TLV_struct), + /* K89 */ be_nested_str_weak(add_TLV), + /* K90 */ be_const_int(1), + /* K91 */ be_nested_str_weak(B2), + /* K92 */ be_nested_str_weak(get_noc), + /* K93 */ be_const_int(2), + /* K94 */ be_nested_str_weak(get_icac), + /* K95 */ be_nested_str_weak(ecdsa_sign_sha256), + /* K96 */ be_nested_str_weak(get_pk), + /* K97 */ be_nested_str_weak(Msg1), + /* K98 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20MSG1_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), + /* K99 */ be_nested_str_weak(SHA256), + /* K100 */ be_nested_str_weak(update), + /* K101 */ be_nested_str_weak(out), + /* K102 */ be_nested_str_weak(S2K_Info), + /* K103 */ be_nested_str_weak(get_ipk_group_key), + /* K104 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20SharedSecret_X20_X20_X3D_X20), + /* K105 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s2k_salt_X20_X20_X20_X20_X20_X20_X3D_X20), + /* K106 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20s2k_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D_X20), + /* K107 */ be_nested_str_weak(TBEData2_Nonce), + /* K108 */ be_nested_str_weak(encrypt), + /* K109 */ be_nested_str_weak(MTR_X3A_X20_X2A_X20TBEData2Enc_X20_X20_X20_X3D_X20), + /* K110 */ be_nested_str_weak(Sigma2), + /* K111 */ be_nested_str_weak(responderRandom), + /* K112 */ be_nested_str_weak(responderSessionId), + /* K113 */ be_nested_str_weak(responderEphPubKey), + /* K114 */ be_nested_str_weak(encrypted2), + /* K115 */ be_nested_str_weak(MTR_X3A_X20sigma2_X3A_X20), + /* K116 */ be_nested_str_weak(inspect), + /* K117 */ be_nested_str_weak(_Msg2), + /* K118 */ be_nested_str_weak(MTR_X3A_X20sigma2_raw_X3A_X20), }), be_str_weak(parse_Sigma1), &be_const_str_solidified, - ( &(const binstruction[551]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x88140301, // 0001 GETMBR R5 R1 K1 - 0x541A002F, // 0002 LDINT R6 48 - 0x20140A06, // 0003 NE R5 R5 R6 - 0x74160005, // 0004 JMPT R5 #000B - 0x88140302, // 0005 GETMBR R5 R1 K2 - 0x20140B03, // 0006 NE R5 R5 K3 - 0x74160002, // 0007 JMPT R5 #000B - 0x88140304, // 0008 GETMBR R5 R1 K4 - 0x20140B03, // 0009 NE R5 R5 K3 - 0x78160000, // 000A JMPF R5 #000C + ( &(const binstruction[564]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x5412002F, // 0002 LDINT R4 48 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x740E0005, // 0004 JMPT R3 #000B + 0x880C0302, // 0005 GETMBR R3 R1 K2 + 0x200C0703, // 0006 NE R3 R3 K3 + 0x740E0002, // 0007 JMPT R3 #000B + 0x880C0304, // 0008 GETMBR R3 R1 K4 + 0x200C0703, // 0009 NE R3 R3 K3 + 0x780E0000, // 000A JMPF R3 #000C 0xB0060B06, // 000B RAISE 1 K5 K6 - 0xB8160E00, // 000C GETNGBL R5 K7 - 0x8C140B08, // 000D GETMET R5 R5 K8 - 0x7C140200, // 000E CALL R5 1 - 0x8C140B09, // 000F GETMET R5 R5 K9 - 0x881C030A, // 0010 GETMBR R7 R1 K10 - 0x8820030B, // 0011 GETMBR R8 R1 K11 - 0x7C140600, // 0012 CALL R5 3 - 0x88180B0D, // 0013 GETMBR R6 R5 K13 - 0x90021806, // 0014 SETMBR R0 K12 R6 - 0x8C18010E, // 0015 GETMET R6 R0 K14 - 0x88200B0F, // 0016 GETMBR R8 R5 K15 - 0x88240B10, // 0017 GETMBR R9 R5 K16 - 0x7C180600, // 0018 CALL R6 3 - 0x4C1C0000, // 0019 LDNIL R7 - 0x1C1C0C07, // 001A EQ R7 R6 R7 - 0x781E0000, // 001B JMPF R7 #001D - 0xB0062312, // 001C RAISE 1 K17 K18 - 0x881C0313, // 001D GETMBR R7 R1 K19 - 0x901A2607, // 001E SETMBR R6 K19 R7 - 0x8C1C0D14, // 001F GETMET R7 R6 K20 - 0xB8260E00, // 0020 GETNGBL R9 K7 - 0x88241315, // 0021 GETMBR R9 R9 K21 - 0x88241316, // 0022 GETMBR R9 R9 K22 - 0x7C1C0400, // 0023 CALL R7 2 - 0x881C0317, // 0024 GETMBR R7 R1 K23 - 0x781E0004, // 0025 JMPF R7 #002B - 0x881C0118, // 0026 GETMBR R7 R0 K24 - 0x881C0F19, // 0027 GETMBR R7 R7 K25 - 0x8C1C0F1A, // 0028 GETMET R7 R7 K26 - 0x88240317, // 0029 GETMBR R9 R1 K23 - 0x7C1C0400, // 002A CALL R7 2 - 0x90062E06, // 002B SETMBR R1 K23 R6 - 0x881C0B1C, // 002C GETMBR R7 R5 K28 - 0x901A3607, // 002D SETMBR R6 K27 R7 - 0x881C0118, // 002E GETMBR R7 R0 K24 - 0x881C0F19, // 002F GETMBR R7 R7 K25 - 0x8C1C0F1E, // 0030 GETMET R7 R7 K30 - 0x7C1C0200, // 0031 CALL R7 1 - 0x901A3A07, // 0032 SETMBR R6 K29 R7 - 0x881C0D1D, // 0033 GETMBR R7 R6 K29 - 0x90023E07, // 0034 SETMBR R0 K31 R7 - 0x881C0B20, // 0035 GETMBR R7 R5 K32 - 0x4C200000, // 0036 LDNIL R8 - 0x201C0E08, // 0037 NE R7 R7 R8 - 0x781E00F2, // 0038 JMPF R7 #012C - 0x881C0B21, // 0039 GETMBR R7 R5 K33 - 0x4C200000, // 003A LDNIL R8 - 0x201C0E08, // 003B NE R7 R7 R8 - 0x781E00EE, // 003C JMPF R7 #012C - 0x881C0D22, // 003D GETMBR R7 R6 K34 - 0x4C200000, // 003E LDNIL R8 - 0x201C0E08, // 003F NE R7 R7 R8 - 0x781E00EA, // 0040 JMPF R7 #012C - 0x881C0B10, // 0041 GETMBR R7 R5 K16 - 0x88200B20, // 0042 GETMBR R8 R5 K32 - 0x001C0E08, // 0043 ADD R7 R7 R8 - 0x60200015, // 0044 GETGBL R8 G21 - 0x7C200000, // 0045 CALL R8 0 - 0x8C201123, // 0046 GETMET R8 R8 K35 - 0x58280024, // 0047 LDCONST R10 K36 - 0x7C200400, // 0048 CALL R8 2 - 0x8C240925, // 0049 GETMET R9 R4 K37 - 0x7C240200, // 004A CALL R9 1 - 0x8C241326, // 004B GETMET R9 R9 K38 - 0x882C0D22, // 004C GETMBR R11 R6 K34 - 0x5C300E00, // 004D MOVE R12 R7 - 0x5C341000, // 004E MOVE R13 R8 - 0x543A000F, // 004F LDINT R14 16 - 0x7C240A00, // 0050 CALL R9 5 - 0x60280015, // 0051 GETGBL R10 G21 - 0x7C280000, // 0052 CALL R10 0 - 0x8C281523, // 0053 GETMET R10 R10 K35 - 0x58300027, // 0054 LDCONST R12 K39 - 0x7C280400, // 0055 CALL R10 2 - 0x542DFFEE, // 0056 LDINT R11 -17 - 0x402E060B, // 0057 CONNECT R11 K3 R11 - 0x88300B21, // 0058 GETMBR R12 R5 K33 - 0x942C180B, // 0059 GETIDX R11 R12 R11 - 0x5435FFEF, // 005A LDINT R13 -16 - 0x40341B28, // 005B CONNECT R13 R13 K40 - 0x88380B21, // 005C GETMBR R14 R5 K33 - 0x94301C0D, // 005D GETIDX R12 R14 R13 - 0x8C3C0929, // 005E GETMET R15 R4 K41 - 0x5C441200, // 005F MOVE R17 R9 - 0x5C481400, // 0060 MOVE R18 R10 - 0x604C0015, // 0061 GETGBL R19 G21 - 0x7C4C0000, // 0062 CALL R19 0 - 0x6050000C, // 0063 GETGBL R20 G12 - 0x5C541600, // 0064 MOVE R21 R11 - 0x7C500200, // 0065 CALL R20 1 - 0x5456000F, // 0066 LDINT R21 16 - 0x7C3C0C00, // 0067 CALL R15 6 - 0x5C341E00, // 0068 MOVE R13 R15 - 0x8C3C1B2A, // 0069 GETMET R15 R13 K42 - 0x5C441600, // 006A MOVE R17 R11 - 0x7C3C0400, // 006B CALL R15 2 - 0x5C381E00, // 006C MOVE R14 R15 - 0x8C3C1B2B, // 006D GETMET R15 R13 K43 - 0x7C3C0200, // 006E CALL R15 1 - 0xB8425800, // 006F GETNGBL R16 K44 - 0x8C40212D, // 0070 GETMET R16 R16 K45 - 0x5848002E, // 0071 LDCONST R18 K46 - 0x584C002F, // 0072 LDCONST R19 K47 - 0x7C400600, // 0073 CALL R16 3 - 0xB8425800, // 0074 GETNGBL R16 K44 - 0x8C40212D, // 0075 GETMET R16 R16 K45 - 0x8C481331, // 0076 GETMET R18 R9 K49 - 0x7C480200, // 0077 CALL R18 1 - 0x004A6012, // 0078 ADD R18 K48 R18 - 0x584C002F, // 0079 LDCONST R19 K47 - 0x7C400600, // 007A CALL R16 3 - 0xB8425800, // 007B GETNGBL R16 K44 - 0x8C40212D, // 007C GETMET R16 R16 K45 - 0x8C481931, // 007D GETMET R18 R12 K49 - 0x7C480200, // 007E CALL R18 1 - 0x004A6412, // 007F ADD R18 K50 R18 - 0x584C002F, // 0080 LDCONST R19 K47 - 0x7C400600, // 0081 CALL R16 3 - 0xB8425800, // 0082 GETNGBL R16 K44 - 0x8C40212D, // 0083 GETMET R16 R16 K45 - 0x8C481D31, // 0084 GETMET R18 R14 K49 - 0x7C480200, // 0085 CALL R18 1 - 0x004A6612, // 0086 ADD R18 K51 R18 - 0x584C002F, // 0087 LDCONST R19 K47 - 0x7C400600, // 0088 CALL R16 3 - 0xB8425800, // 0089 GETNGBL R16 K44 - 0x8C40212D, // 008A GETMET R16 R16 K45 - 0x8C481F31, // 008B GETMET R18 R15 K49 - 0x7C480200, // 008C CALL R18 1 - 0x004A6812, // 008D ADD R18 K52 R18 - 0x584C002F, // 008E LDCONST R19 K47 - 0x7C400600, // 008F CALL R16 3 - 0xB8425800, // 0090 GETNGBL R16 K44 - 0x8C40212D, // 0091 GETMET R16 R16 K45 - 0x5848002E, // 0092 LDCONST R18 K46 - 0x584C002F, // 0093 LDCONST R19 K47 - 0x7C400600, // 0094 CALL R16 3 - 0x1C40180F, // 0095 EQ R16 R12 R15 - 0x78420092, // 0096 JMPF R16 #012A - 0x8C400936, // 0097 GETMET R16 R4 K54 - 0x544A000F, // 0098 LDINT R18 16 - 0x7C400400, // 0099 CALL R16 2 - 0x901A6A10, // 009A SETMBR R6 K53 R16 - 0x60400015, // 009B GETGBL R16 G21 - 0x7C400000, // 009C CALL R16 0 - 0x8C402123, // 009D GETMET R16 R16 K35 - 0x58480037, // 009E LDCONST R18 K55 - 0x7C400400, // 009F CALL R16 2 - 0x88440D35, // 00A0 GETMBR R17 R6 K53 - 0x00402011, // 00A1 ADD R16 R16 R17 - 0x88440B10, // 00A2 GETMBR R17 R5 K16 - 0x88480B20, // 00A3 GETMBR R18 R5 K32 - 0x00442212, // 00A4 ADD R17 R17 R18 - 0x8C480925, // 00A5 GETMET R18 R4 K37 - 0x7C480200, // 00A6 CALL R18 1 - 0x8C482526, // 00A7 GETMET R18 R18 K38 - 0x88500D22, // 00A8 GETMBR R20 R6 K34 - 0x5C542200, // 00A9 MOVE R21 R17 - 0x5C582000, // 00AA MOVE R22 R16 - 0x545E000F, // 00AB LDINT R23 16 - 0x7C480A00, // 00AC CALL R18 5 - 0x8C4C0929, // 00AD GETMET R19 R4 K41 - 0x5C542400, // 00AE MOVE R21 R18 - 0x60580015, // 00AF GETGBL R22 G21 - 0x7C580000, // 00B0 CALL R22 0 - 0x8C582D23, // 00B1 GETMET R22 R22 K35 - 0x58600038, // 00B2 LDCONST R24 K56 - 0x7C580400, // 00B3 CALL R22 2 - 0x605C0015, // 00B4 GETGBL R23 G21 - 0x7C5C0000, // 00B5 CALL R23 0 - 0x58600003, // 00B6 LDCONST R24 K3 - 0x5466000F, // 00B7 LDINT R25 16 - 0x7C4C0C00, // 00B8 CALL R19 6 - 0x8C50272B, // 00B9 GETMET R20 R19 K43 - 0x7C500200, // 00BA CALL R20 1 - 0xB8560E00, // 00BB GETNGBL R21 K7 - 0x8C542B39, // 00BC GETMET R21 R21 K57 - 0x7C540200, // 00BD CALL R21 1 - 0x88580D35, // 00BE GETMBR R22 R6 K53 - 0x90564016, // 00BF SETMBR R21 K32 R22 - 0x88580D1D, // 00C0 GETMBR R22 R6 K29 - 0x90567416, // 00C1 SETMBR R21 K58 R22 - 0x90567614, // 00C2 SETMBR R21 K59 R20 - 0x8C580925, // 00C3 GETMET R22 R4 K37 - 0x7C580200, // 00C4 CALL R22 1 - 0x8C582D26, // 00C5 GETMET R22 R22 K38 - 0x88600D22, // 00C6 GETMBR R24 R6 K34 - 0x88640B10, // 00C7 GETMBR R25 R5 K16 - 0x88680B20, // 00C8 GETMBR R26 R5 K32 - 0x0064321A, // 00C9 ADD R25 R25 R26 - 0x60680015, // 00CA GETGBL R26 G21 - 0x7C680000, // 00CB CALL R26 0 - 0x8C683523, // 00CC GETMET R26 R26 K35 - 0x5870003C, // 00CD LDCONST R28 K60 - 0x7C680400, // 00CE CALL R26 2 - 0x546E002F, // 00CF LDINT R27 48 - 0x7C580A00, // 00D0 CALL R22 5 - 0x545E000E, // 00D1 LDINT R23 15 - 0x405E0617, // 00D2 CONNECT R23 K3 R23 - 0x945C2C17, // 00D3 GETIDX R23 R22 R23 - 0x5462000F, // 00D4 LDINT R24 16 - 0x5466001E, // 00D5 LDINT R25 31 - 0x40603019, // 00D6 CONNECT R24 R24 R25 - 0x94602C18, // 00D7 GETIDX R24 R22 R24 - 0x5466001F, // 00D8 LDINT R25 32 - 0x546A002E, // 00D9 LDINT R26 47 - 0x4064321A, // 00DA CONNECT R25 R25 R26 - 0x94642C19, // 00DB GETIDX R25 R22 R25 - 0xB86A5800, // 00DC GETNGBL R26 K44 - 0x8C68353D, // 00DD GETMET R26 R26 K61 - 0x7C680200, // 00DE CALL R26 1 - 0x9468353E, // 00DF GETIDX R26 R26 K62 - 0xB86E5800, // 00E0 GETNGBL R27 K44 - 0x8C6C372D, // 00E1 GETMET R27 R27 K45 - 0x5874003F, // 00E2 LDCONST R29 K63 - 0x5878002F, // 00E3 LDCONST R30 K47 - 0x7C6C0600, // 00E4 CALL R27 3 - 0xB86E5800, // 00E5 GETNGBL R27 K44 - 0x8C6C372D, // 00E6 GETMET R27 R27 K45 - 0x8C742F31, // 00E7 GETMET R29 R23 K49 - 0x7C740200, // 00E8 CALL R29 1 - 0x0076801D, // 00E9 ADD R29 K64 R29 - 0x5878002F, // 00EA LDCONST R30 K47 - 0x7C6C0600, // 00EB CALL R27 3 - 0xB86E5800, // 00EC GETNGBL R27 K44 - 0x8C6C372D, // 00ED GETMET R27 R27 K45 - 0x8C743131, // 00EE GETMET R29 R24 K49 - 0x7C740200, // 00EF CALL R29 1 - 0x0076821D, // 00F0 ADD R29 K65 R29 - 0x5878002F, // 00F1 LDCONST R30 K47 - 0x7C6C0600, // 00F2 CALL R27 3 - 0xB86E5800, // 00F3 GETNGBL R27 K44 - 0x8C6C372D, // 00F4 GETMET R27 R27 K45 - 0x8C743331, // 00F5 GETMET R29 R25 K49 - 0x7C740200, // 00F6 CALL R29 1 - 0x0076841D, // 00F7 ADD R29 K66 R29 - 0x5878002F, // 00F8 LDCONST R30 K47 - 0x7C6C0600, // 00F9 CALL R27 3 - 0xB86E5800, // 00FA GETNGBL R27 K44 - 0x8C6C372D, // 00FB GETMET R27 R27 K45 - 0x5874003F, // 00FC LDCONST R29 K63 - 0x5878002F, // 00FD LDCONST R30 K47 - 0x7C6C0600, // 00FE CALL R27 3 - 0x8C6C2B43, // 00FF GETMET R27 R21 K67 - 0x7C6C0200, // 0100 CALL R27 1 - 0x4C700000, // 0101 LDNIL R28 - 0x901A881C, // 0102 SETMBR R6 K68 R28 - 0xB8725800, // 0103 GETNGBL R28 K44 - 0x8C70392D, // 0104 GETMET R28 R28 K45 - 0x8C783731, // 0105 GETMET R30 R27 K49 - 0x7C780200, // 0106 CALL R30 1 - 0x007A8A1E, // 0107 ADD R30 K69 R30 - 0x587C002F, // 0108 LDCONST R31 K47 - 0x7C700600, // 0109 CALL R28 3 - 0x8C700346, // 010A GETMET R28 R1 K70 - 0x547A0032, // 010B LDINT R30 51 - 0x507C0200, // 010C LDBOOL R31 1 0 - 0x7C700600, // 010D CALL R28 3 - 0x8C743943, // 010E GETMET R29 R28 K67 - 0x5C7C3600, // 010F MOVE R31 R27 - 0x7C740400, // 0110 CALL R29 2 - 0x88780147, // 0111 GETMBR R30 R0 K71 - 0x8C783D48, // 0112 GETMET R30 R30 K72 - 0x5C803A00, // 0113 MOVE R32 R29 - 0x5C840400, // 0114 MOVE R33 R2 - 0x5C880600, // 0115 MOVE R34 R3 - 0x888C3949, // 0116 GETMBR R35 R28 K73 - 0x7C780A00, // 0117 CALL R30 5 - 0x8C780D4A, // 0118 GETMET R30 R6 K74 - 0x7C780200, // 0119 CALL R30 1 - 0x8C780D4B, // 011A GETMET R30 R6 K75 - 0x5C802E00, // 011B MOVE R32 R23 - 0x5C843000, // 011C MOVE R33 R24 - 0x5C883200, // 011D MOVE R34 R25 - 0x5C8C3400, // 011E MOVE R35 R26 - 0x7C780A00, // 011F CALL R30 5 - 0x8C780D4C, // 0120 GETMET R30 R6 K76 - 0x50800200, // 0121 LDBOOL R32 1 0 - 0x7C780400, // 0122 CALL R30 2 - 0x8C780D4D, // 0123 GETMET R30 R6 K77 - 0x7C780200, // 0124 CALL R30 1 - 0x8C780D4E, // 0125 GETMET R30 R6 K78 - 0x7C780200, // 0126 CALL R30 1 - 0x50780200, // 0127 LDBOOL R30 1 0 - 0x80043C00, // 0128 RET 1 R30 - 0x70020001, // 0129 JMP #012C - 0x4C400000, // 012A LDNIL R16 - 0x90164010, // 012B SETMBR R5 K32 R16 - 0x881C0B20, // 012C GETMBR R7 R5 K32 - 0x4C200000, // 012D LDNIL R8 - 0x1C1C0E08, // 012E EQ R7 R7 R8 - 0x741E0003, // 012F JMPT R7 #0134 - 0x881C0B21, // 0130 GETMBR R7 R5 K33 - 0x4C200000, // 0131 LDNIL R8 - 0x1C1C0E08, // 0132 EQ R7 R7 R8 - 0x781E00F0, // 0133 JMPF R7 #0225 - 0x8C1C0936, // 0134 GETMET R7 R4 K54 - 0x5426000F, // 0135 LDINT R9 16 - 0x7C1C0400, // 0136 CALL R7 2 - 0x901A6A07, // 0137 SETMBR R6 K53 R7 - 0x8C1C0936, // 0138 GETMET R7 R4 K54 - 0x5426001F, // 0139 LDINT R9 32 - 0x7C1C0400, // 013A CALL R7 2 - 0x90029E07, // 013B SETMBR R0 K79 R7 - 0x8C1C0951, // 013C GETMET R7 R4 K81 - 0x7C1C0200, // 013D CALL R7 1 - 0x8C1C0F52, // 013E GETMET R7 R7 K82 - 0x8824014F, // 013F GETMBR R9 R0 K79 - 0x7C1C0400, // 0140 CALL R7 2 - 0x9002A007, // 0141 SETMBR R0 K80 R7 - 0x8C1C0936, // 0142 GETMET R7 R4 K54 - 0x5426001F, // 0143 LDINT R9 32 - 0x7C1C0400, // 0144 CALL R7 2 - 0x8C200951, // 0145 GETMET R8 R4 K81 - 0x7C200200, // 0146 CALL R8 1 - 0x8C201153, // 0147 GETMET R8 R8 K83 - 0x8828014F, // 0148 GETMBR R10 R0 K79 - 0x882C0B0D, // 0149 GETMBR R11 R5 K13 - 0x7C200600, // 014A CALL R8 3 - 0x901A4408, // 014B SETMBR R6 K34 R8 - 0xB8220E00, // 014C GETNGBL R8 K7 - 0x88201154, // 014D GETMBR R8 R8 K84 - 0x8C201155, // 014E GETMET R8 R8 K85 - 0x7C200200, // 014F CALL R8 1 - 0x8C241156, // 0150 GETMET R9 R8 K86 - 0x582C0057, // 0151 LDCONST R11 K87 - 0xB8320E00, // 0152 GETNGBL R12 K7 - 0x88301954, // 0153 GETMBR R12 R12 K84 - 0x88301958, // 0154 GETMBR R12 R12 K88 - 0x8C340D59, // 0155 GETMET R13 R6 K89 - 0x7C340200, // 0156 CALL R13 1 - 0x7C240800, // 0157 CALL R9 4 - 0x8C241156, // 0158 GETMET R9 R8 K86 - 0x582C005A, // 0159 LDCONST R11 K90 - 0xB8320E00, // 015A GETNGBL R12 K7 - 0x88301954, // 015B GETMBR R12 R12 K84 - 0x88301958, // 015C GETMBR R12 R12 K88 - 0x8C340D5B, // 015D GETMET R13 R6 K91 - 0x7C340200, // 015E CALL R13 1 - 0x7C240800, // 015F CALL R9 4 - 0x8C241156, // 0160 GETMET R9 R8 K86 - 0x582C002F, // 0161 LDCONST R11 K47 - 0xB8320E00, // 0162 GETNGBL R12 K7 - 0x88301954, // 0163 GETMBR R12 R12 K84 - 0x88301958, // 0164 GETMBR R12 R12 K88 - 0x88340150, // 0165 GETMBR R13 R0 K80 - 0x7C240800, // 0166 CALL R9 4 - 0x8C241156, // 0167 GETMET R9 R8 K86 - 0x542E0003, // 0168 LDINT R11 4 - 0xB8320E00, // 0169 GETNGBL R12 K7 - 0x88301954, // 016A GETMBR R12 R12 K84 - 0x88301958, // 016B GETMBR R12 R12 K88 - 0x88340B0D, // 016C GETMBR R13 R5 K13 - 0x7C240800, // 016D CALL R9 4 - 0x8C240951, // 016E GETMET R9 R4 K81 - 0x7C240200, // 016F CALL R9 1 - 0x8C24135C, // 0170 GETMET R9 R9 K92 - 0x8C2C0D5D, // 0171 GETMET R11 R6 K93 - 0x7C2C0200, // 0172 CALL R11 1 - 0x8C301143, // 0173 GETMET R12 R8 K67 - 0x7C300200, // 0174 CALL R12 1 - 0x7C240600, // 0175 CALL R9 3 - 0xB82A0E00, // 0176 GETNGBL R10 K7 - 0x88281554, // 0177 GETMBR R10 R10 K84 - 0x8C281555, // 0178 GETMET R10 R10 K85 - 0x7C280200, // 0179 CALL R10 1 - 0x8C2C1556, // 017A GETMET R11 R10 K86 - 0x58340057, // 017B LDCONST R13 K87 - 0xB83A0E00, // 017C GETNGBL R14 K7 - 0x88381D54, // 017D GETMBR R14 R14 K84 - 0x88381D58, // 017E GETMBR R14 R14 K88 - 0x8C3C0D59, // 017F GETMET R15 R6 K89 - 0x7C3C0200, // 0180 CALL R15 1 - 0x7C2C0800, // 0181 CALL R11 4 - 0x8C2C1556, // 0182 GETMET R11 R10 K86 - 0x5834005A, // 0183 LDCONST R13 K90 - 0xB83A0E00, // 0184 GETNGBL R14 K7 - 0x88381D54, // 0185 GETMBR R14 R14 K84 - 0x88381D58, // 0186 GETMBR R14 R14 K88 - 0x8C3C0D5B, // 0187 GETMET R15 R6 K91 - 0x7C3C0200, // 0188 CALL R15 1 - 0x7C2C0800, // 0189 CALL R11 4 - 0x8C2C1556, // 018A GETMET R11 R10 K86 - 0x5834002F, // 018B LDCONST R13 K47 - 0xB83A0E00, // 018C GETNGBL R14 K7 - 0x88381D54, // 018D GETMBR R14 R14 K84 - 0x88381D58, // 018E GETMBR R14 R14 K88 - 0x5C3C1200, // 018F MOVE R15 R9 - 0x7C2C0800, // 0190 CALL R11 4 - 0x8C2C1556, // 0191 GETMET R11 R10 K86 - 0x54360003, // 0192 LDINT R13 4 - 0xB83A0E00, // 0193 GETNGBL R14 K7 - 0x88381D54, // 0194 GETMBR R14 R14 K84 - 0x88381D58, // 0195 GETMBR R14 R14 K88 - 0x883C0D35, // 0196 GETMBR R15 R6 K53 - 0x7C2C0800, // 0197 CALL R11 4 - 0xB82E5800, // 0198 GETNGBL R11 K44 - 0x8C2C172D, // 0199 GETMET R11 R11 K45 - 0x5834002E, // 019A LDCONST R13 K46 - 0x5838002F, // 019B LDCONST R14 K47 - 0x7C2C0600, // 019C CALL R11 3 - 0x882C0B5E, // 019D GETMBR R11 R5 K94 - 0x901A880B, // 019E SETMBR R6 K68 R11 - 0xB82E5800, // 019F GETNGBL R11 K44 - 0x8C2C172D, // 01A0 GETMET R11 R11 K45 - 0x88340D44, // 01A1 GETMBR R13 R6 K68 - 0x8C341B31, // 01A2 GETMET R13 R13 K49 - 0x7C340200, // 01A3 CALL R13 1 - 0x0036BE0D, // 01A4 ADD R13 K95 R13 - 0x5838002F, // 01A5 LDCONST R14 K47 - 0x7C2C0600, // 01A6 CALL R11 3 - 0x8C2C0960, // 01A7 GETMET R11 R4 K96 - 0x7C2C0200, // 01A8 CALL R11 1 - 0x8C2C1761, // 01A9 GETMET R11 R11 K97 - 0x88340D44, // 01AA GETMBR R13 R6 K68 - 0x7C2C0400, // 01AB CALL R11 2 - 0x8C2C1762, // 01AC GETMET R11 R11 K98 - 0x7C2C0200, // 01AD CALL R11 1 - 0x60300015, // 01AE GETGBL R12 G21 - 0x7C300000, // 01AF CALL R12 0 - 0x8C301923, // 01B0 GETMET R12 R12 K35 - 0x88380163, // 01B1 GETMBR R14 R0 K99 - 0x7C300400, // 01B2 CALL R12 2 - 0x8C340D64, // 01B3 GETMET R13 R6 K100 - 0x7C340200, // 01B4 CALL R13 1 - 0x00341A07, // 01B5 ADD R13 R13 R7 - 0x88380150, // 01B6 GETMBR R14 R0 K80 - 0x00341A0E, // 01B7 ADD R13 R13 R14 - 0x00341A0B, // 01B8 ADD R13 R13 R11 - 0x8C380925, // 01B9 GETMET R14 R4 K37 - 0x7C380200, // 01BA CALL R14 1 - 0x8C381D26, // 01BB GETMET R14 R14 K38 - 0x88400D22, // 01BC GETMBR R16 R6 K34 - 0x5C441A00, // 01BD MOVE R17 R13 - 0x5C481800, // 01BE MOVE R18 R12 - 0x544E000F, // 01BF LDINT R19 16 - 0x7C380A00, // 01C0 CALL R14 5 - 0xB83E5800, // 01C1 GETNGBL R15 K44 - 0x8C3C1F2D, // 01C2 GETMET R15 R15 K45 - 0x88440D22, // 01C3 GETMBR R17 R6 K34 - 0x8C442331, // 01C4 GETMET R17 R17 K49 - 0x7C440200, // 01C5 CALL R17 1 - 0x0046CA11, // 01C6 ADD R17 K101 R17 - 0x5848002F, // 01C7 LDCONST R18 K47 - 0x7C3C0600, // 01C8 CALL R15 3 - 0xB83E5800, // 01C9 GETNGBL R15 K44 - 0x8C3C1F2D, // 01CA GETMET R15 R15 K45 - 0x8C441B31, // 01CB GETMET R17 R13 K49 - 0x7C440200, // 01CC CALL R17 1 - 0x0046CC11, // 01CD ADD R17 K102 R17 - 0x5848002F, // 01CE LDCONST R18 K47 - 0x7C3C0600, // 01CF CALL R15 3 - 0xB83E5800, // 01D0 GETNGBL R15 K44 - 0x8C3C1F2D, // 01D1 GETMET R15 R15 K45 - 0x8C441D31, // 01D2 GETMET R17 R14 K49 - 0x7C440200, // 01D3 CALL R17 1 - 0x0046CE11, // 01D4 ADD R17 K103 R17 - 0x5848002F, // 01D5 LDCONST R18 K47 - 0x7C3C0600, // 01D6 CALL R15 3 - 0x8C3C1543, // 01D7 GETMET R15 R10 K67 - 0x7C3C0200, // 01D8 CALL R15 1 - 0x8C400929, // 01D9 GETMET R16 R4 K41 - 0x5C481C00, // 01DA MOVE R18 R14 - 0x604C0015, // 01DB GETGBL R19 G21 - 0x7C4C0000, // 01DC CALL R19 0 - 0x8C4C2723, // 01DD GETMET R19 R19 K35 - 0x88540168, // 01DE GETMBR R21 R0 K104 - 0x7C4C0400, // 01DF CALL R19 2 - 0x60500015, // 01E0 GETGBL R20 G21 - 0x7C500000, // 01E1 CALL R20 0 - 0x6054000C, // 01E2 GETGBL R21 G12 - 0x5C581E00, // 01E3 MOVE R22 R15 - 0x7C540200, // 01E4 CALL R21 1 - 0x545A000F, // 01E5 LDINT R22 16 - 0x7C400C00, // 01E6 CALL R16 6 - 0x8C442169, // 01E7 GETMET R17 R16 K105 - 0x5C4C1E00, // 01E8 MOVE R19 R15 - 0x7C440400, // 01E9 CALL R17 2 - 0x8C48212B, // 01EA GETMET R18 R16 K43 - 0x7C480200, // 01EB CALL R18 1 - 0x00442212, // 01EC ADD R17 R17 R18 - 0xB84A5800, // 01ED GETNGBL R18 K44 - 0x8C48252D, // 01EE GETMET R18 R18 K45 - 0x8C502331, // 01EF GETMET R20 R17 K49 - 0x7C500200, // 01F0 CALL R20 1 - 0x0052D414, // 01F1 ADD R20 K106 R20 - 0x5854002F, // 01F2 LDCONST R21 K47 - 0x7C480600, // 01F3 CALL R18 3 - 0xB84A5800, // 01F4 GETNGBL R18 K44 - 0x8C48252D, // 01F5 GETMET R18 R18 K45 - 0x5850002E, // 01F6 LDCONST R20 K46 - 0x5854002F, // 01F7 LDCONST R21 K47 - 0x7C480600, // 01F8 CALL R18 3 - 0xB84A0E00, // 01F9 GETNGBL R18 K7 - 0x8C48256B, // 01FA GETMET R18 R18 K107 - 0x7C480200, // 01FB CALL R18 1 - 0x904AD807, // 01FC SETMBR R18 K108 R7 - 0x884C011F, // 01FD GETMBR R19 R0 K31 - 0x904ADA13, // 01FE SETMBR R18 K109 R19 - 0x884C0150, // 01FF GETMBR R19 R0 K80 - 0x904ADC13, // 0200 SETMBR R18 K110 R19 - 0x904ADE11, // 0201 SETMBR R18 K111 R17 - 0xB84E5800, // 0202 GETNGBL R19 K44 - 0x8C4C272D, // 0203 GETMET R19 R19 K45 - 0xB8560E00, // 0204 GETNGBL R21 K7 - 0x8C542B71, // 0205 GETMET R21 R21 K113 - 0x5C5C2400, // 0206 MOVE R23 R18 - 0x7C540400, // 0207 CALL R21 2 - 0x0056E015, // 0208 ADD R21 K112 R21 - 0x5858002F, // 0209 LDCONST R22 K47 - 0x7C4C0600, // 020A CALL R19 3 - 0x8C4C2543, // 020B GETMET R19 R18 K67 - 0x7C4C0200, // 020C CALL R19 1 - 0x901AE413, // 020D SETMBR R6 K114 R19 - 0xB8525800, // 020E GETNGBL R20 K44 - 0x8C50292D, // 020F GETMET R20 R20 K45 - 0x8C582731, // 0210 GETMET R22 R19 K49 - 0x7C580200, // 0211 CALL R22 1 - 0x005AE616, // 0212 ADD R22 K115 R22 - 0x585C002F, // 0213 LDCONST R23 K47 - 0x7C500600, // 0214 CALL R20 3 - 0x8C500346, // 0215 GETMET R20 R1 K70 - 0x545A0030, // 0216 LDINT R22 49 - 0x505C0200, // 0217 LDBOOL R23 1 0 - 0x7C500600, // 0218 CALL R20 3 - 0x8C542943, // 0219 GETMET R21 R20 K67 - 0x5C5C2600, // 021A MOVE R23 R19 - 0x7C540400, // 021B CALL R21 2 - 0x88580147, // 021C GETMBR R22 R0 K71 - 0x8C582D48, // 021D GETMET R22 R22 K72 - 0x5C602A00, // 021E MOVE R24 R21 - 0x5C640400, // 021F MOVE R25 R2 - 0x5C680600, // 0220 MOVE R26 R3 - 0x886C2949, // 0221 GETMBR R27 R20 K73 - 0x7C580A00, // 0222 CALL R22 5 - 0x50580200, // 0223 LDBOOL R22 1 0 - 0x80042C00, // 0224 RET 1 R22 - 0x501C0200, // 0225 LDBOOL R7 1 0 - 0x80040E00, // 0226 RET 1 R7 + 0xB80E0E00, // 000C GETNGBL R3 K7 + 0x8C0C0708, // 000D GETMET R3 R3 K8 + 0x7C0C0200, // 000E CALL R3 1 + 0x8C0C0709, // 000F GETMET R3 R3 K9 + 0x8814030A, // 0010 GETMBR R5 R1 K10 + 0x8818030B, // 0011 GETMBR R6 R1 K11 + 0x7C0C0600, // 0012 CALL R3 3 + 0x8810070D, // 0013 GETMBR R4 R3 K13 + 0x90021804, // 0014 SETMBR R0 K12 R4 + 0x8810070E, // 0015 GETMBR R4 R3 K14 + 0x4C140000, // 0016 LDNIL R5 + 0x20100805, // 0017 NE R4 R4 R5 + 0x78120003, // 0018 JMPF R4 #001D + 0x8810070F, // 0019 GETMBR R4 R3 K15 + 0x4C140000, // 001A LDNIL R5 + 0x20100805, // 001B NE R4 R4 R5 + 0x74120000, // 001C JMPT R4 #001E + 0x50100001, // 001D LDBOOL R4 0 1 + 0x50100200, // 001E LDBOOL R4 1 0 + 0x4C140000, // 001F LDNIL R5 + 0x78120006, // 0020 JMPF R4 #0028 + 0x88180110, // 0021 GETMBR R6 R0 K16 + 0x88180D11, // 0022 GETMBR R6 R6 K17 + 0x8C180D12, // 0023 GETMET R6 R6 K18 + 0x8820070E, // 0024 GETMBR R8 R3 K14 + 0x7C180400, // 0025 CALL R6 2 + 0x5C140C00, // 0026 MOVE R5 R6 + 0x70020004, // 0027 JMP #002D + 0x8C180113, // 0028 GETMET R6 R0 K19 + 0x88200714, // 0029 GETMBR R8 R3 K20 + 0x88240715, // 002A GETMBR R9 R3 K21 + 0x7C180600, // 002B CALL R6 3 + 0x5C140C00, // 002C MOVE R5 R6 + 0x4C180000, // 002D LDNIL R6 + 0x1C180A06, // 002E EQ R6 R5 R6 + 0x781A0000, // 002F JMPF R6 #0031 + 0xB0062D17, // 0030 RAISE 1 K22 K23 + 0x88180318, // 0031 GETMBR R6 R1 K24 + 0x90163006, // 0032 SETMBR R5 K24 R6 + 0x8C180B19, // 0033 GETMET R6 R5 K25 + 0xB8220E00, // 0034 GETNGBL R8 K7 + 0x8820111A, // 0035 GETMBR R8 R8 K26 + 0x8820111B, // 0036 GETMBR R8 R8 K27 + 0x7C180400, // 0037 CALL R6 2 + 0x8818031C, // 0038 GETMBR R6 R1 K28 + 0x781A0004, // 0039 JMPF R6 #003F + 0x88180110, // 003A GETMBR R6 R0 K16 + 0x88180D11, // 003B GETMBR R6 R6 K17 + 0x8C180D1D, // 003C GETMET R6 R6 K29 + 0x8820031C, // 003D GETMBR R8 R1 K28 + 0x7C180400, // 003E CALL R6 2 + 0x90063805, // 003F SETMBR R1 K28 R5 + 0x8818071F, // 0040 GETMBR R6 R3 K31 + 0x90163C06, // 0041 SETMBR R5 K30 R6 + 0x88180110, // 0042 GETMBR R6 R0 K16 + 0x88180D11, // 0043 GETMBR R6 R6 K17 + 0x8C180D21, // 0044 GETMET R6 R6 K33 + 0x7C180200, // 0045 CALL R6 1 + 0x90164006, // 0046 SETMBR R5 K32 R6 + 0x88180B20, // 0047 GETMBR R6 R5 K32 + 0x90024406, // 0048 SETMBR R0 K34 R6 + 0x781200EE, // 0049 JMPF R4 #0139 + 0x88180B23, // 004A GETMBR R6 R5 K35 + 0x4C1C0000, // 004B LDNIL R7 + 0x20180C07, // 004C NE R6 R6 R7 + 0x781A00EA, // 004D JMPF R6 #0139 + 0x88180715, // 004E GETMBR R6 R3 K21 + 0x881C070E, // 004F GETMBR R7 R3 K14 + 0x00180C07, // 0050 ADD R6 R6 R7 + 0x601C0015, // 0051 GETGBL R7 G21 + 0x7C1C0000, // 0052 CALL R7 0 + 0x8C1C0F24, // 0053 GETMET R7 R7 K36 + 0x58240025, // 0054 LDCONST R9 K37 + 0x7C1C0400, // 0055 CALL R7 2 + 0x8C200526, // 0056 GETMET R8 R2 K38 + 0x7C200200, // 0057 CALL R8 1 + 0x8C201127, // 0058 GETMET R8 R8 K39 + 0x88280B23, // 0059 GETMBR R10 R5 K35 + 0x5C2C0C00, // 005A MOVE R11 R6 + 0x5C300E00, // 005B MOVE R12 R7 + 0x5436000F, // 005C LDINT R13 16 + 0x7C200A00, // 005D CALL R8 5 + 0x60240015, // 005E GETGBL R9 G21 + 0x7C240000, // 005F CALL R9 0 + 0x8C241324, // 0060 GETMET R9 R9 K36 + 0x582C0028, // 0061 LDCONST R11 K40 + 0x7C240400, // 0062 CALL R9 2 + 0x5429FFEE, // 0063 LDINT R10 -17 + 0x402A060A, // 0064 CONNECT R10 K3 R10 + 0x882C070F, // 0065 GETMBR R11 R3 K15 + 0x9428160A, // 0066 GETIDX R10 R11 R10 + 0x5431FFEF, // 0067 LDINT R12 -16 + 0x40301929, // 0068 CONNECT R12 R12 K41 + 0x8834070F, // 0069 GETMBR R13 R3 K15 + 0x942C1A0C, // 006A GETIDX R11 R13 R12 + 0x8C38052A, // 006B GETMET R14 R2 K42 + 0x5C401000, // 006C MOVE R16 R8 + 0x5C441200, // 006D MOVE R17 R9 + 0x60480015, // 006E GETGBL R18 G21 + 0x7C480000, // 006F CALL R18 0 + 0x604C000C, // 0070 GETGBL R19 G12 + 0x5C501400, // 0071 MOVE R20 R10 + 0x7C4C0200, // 0072 CALL R19 1 + 0x5452000F, // 0073 LDINT R20 16 + 0x7C380C00, // 0074 CALL R14 6 + 0x5C301C00, // 0075 MOVE R12 R14 + 0x8C38192B, // 0076 GETMET R14 R12 K43 + 0x5C401400, // 0077 MOVE R16 R10 + 0x7C380400, // 0078 CALL R14 2 + 0x5C341C00, // 0079 MOVE R13 R14 + 0x8C38192C, // 007A GETMET R14 R12 K44 + 0x7C380200, // 007B CALL R14 1 + 0xB83E5A00, // 007C GETNGBL R15 K45 + 0x8C3C1F2E, // 007D GETMET R15 R15 K46 + 0x5844002F, // 007E LDCONST R17 K47 + 0x58480030, // 007F LDCONST R18 K48 + 0x7C3C0600, // 0080 CALL R15 3 + 0xB83E5A00, // 0081 GETNGBL R15 K45 + 0x8C3C1F2E, // 0082 GETMET R15 R15 K46 + 0x8C441132, // 0083 GETMET R17 R8 K50 + 0x7C440200, // 0084 CALL R17 1 + 0x00466211, // 0085 ADD R17 K49 R17 + 0x58480030, // 0086 LDCONST R18 K48 + 0x7C3C0600, // 0087 CALL R15 3 + 0xB83E5A00, // 0088 GETNGBL R15 K45 + 0x8C3C1F2E, // 0089 GETMET R15 R15 K46 + 0x8C441732, // 008A GETMET R17 R11 K50 + 0x7C440200, // 008B CALL R17 1 + 0x00466611, // 008C ADD R17 K51 R17 + 0x58480030, // 008D LDCONST R18 K48 + 0x7C3C0600, // 008E CALL R15 3 + 0xB83E5A00, // 008F GETNGBL R15 K45 + 0x8C3C1F2E, // 0090 GETMET R15 R15 K46 + 0x8C441B32, // 0091 GETMET R17 R13 K50 + 0x7C440200, // 0092 CALL R17 1 + 0x00466811, // 0093 ADD R17 K52 R17 + 0x58480030, // 0094 LDCONST R18 K48 + 0x7C3C0600, // 0095 CALL R15 3 + 0xB83E5A00, // 0096 GETNGBL R15 K45 + 0x8C3C1F2E, // 0097 GETMET R15 R15 K46 + 0x8C441D32, // 0098 GETMET R17 R14 K50 + 0x7C440200, // 0099 CALL R17 1 + 0x00466A11, // 009A ADD R17 K53 R17 + 0x58480030, // 009B LDCONST R18 K48 + 0x7C3C0600, // 009C CALL R15 3 + 0xB83E5A00, // 009D GETNGBL R15 K45 + 0x8C3C1F2E, // 009E GETMET R15 R15 K46 + 0x5844002F, // 009F LDCONST R17 K47 + 0x58480030, // 00A0 LDCONST R18 K48 + 0x7C3C0600, // 00A1 CALL R15 3 + 0x1C3C160E, // 00A2 EQ R15 R11 R14 + 0x783E0092, // 00A3 JMPF R15 #0137 + 0x8C3C0537, // 00A4 GETMET R15 R2 K55 + 0x5446000F, // 00A5 LDINT R17 16 + 0x7C3C0400, // 00A6 CALL R15 2 + 0x90166C0F, // 00A7 SETMBR R5 K54 R15 + 0x603C0015, // 00A8 GETGBL R15 G21 + 0x7C3C0000, // 00A9 CALL R15 0 + 0x8C3C1F24, // 00AA GETMET R15 R15 K36 + 0x58440038, // 00AB LDCONST R17 K56 + 0x7C3C0400, // 00AC CALL R15 2 + 0x88400B36, // 00AD GETMBR R16 R5 K54 + 0x003C1E10, // 00AE ADD R15 R15 R16 + 0x88400715, // 00AF GETMBR R16 R3 K21 + 0x8844070E, // 00B0 GETMBR R17 R3 K14 + 0x00402011, // 00B1 ADD R16 R16 R17 + 0x8C440526, // 00B2 GETMET R17 R2 K38 + 0x7C440200, // 00B3 CALL R17 1 + 0x8C442327, // 00B4 GETMET R17 R17 K39 + 0x884C0B23, // 00B5 GETMBR R19 R5 K35 + 0x5C502000, // 00B6 MOVE R20 R16 + 0x5C541E00, // 00B7 MOVE R21 R15 + 0x545A000F, // 00B8 LDINT R22 16 + 0x7C440A00, // 00B9 CALL R17 5 + 0x8C48052A, // 00BA GETMET R18 R2 K42 + 0x5C502200, // 00BB MOVE R20 R17 + 0x60540015, // 00BC GETGBL R21 G21 + 0x7C540000, // 00BD CALL R21 0 + 0x8C542B24, // 00BE GETMET R21 R21 K36 + 0x585C0039, // 00BF LDCONST R23 K57 + 0x7C540400, // 00C0 CALL R21 2 + 0x60580015, // 00C1 GETGBL R22 G21 + 0x7C580000, // 00C2 CALL R22 0 + 0x585C0003, // 00C3 LDCONST R23 K3 + 0x5462000F, // 00C4 LDINT R24 16 + 0x7C480C00, // 00C5 CALL R18 6 + 0x8C4C252C, // 00C6 GETMET R19 R18 K44 + 0x7C4C0200, // 00C7 CALL R19 1 + 0xB8520E00, // 00C8 GETNGBL R20 K7 + 0x8C50293A, // 00C9 GETMET R20 R20 K58 + 0x7C500200, // 00CA CALL R20 1 + 0x88540B36, // 00CB GETMBR R21 R5 K54 + 0x90521C15, // 00CC SETMBR R20 K14 R21 + 0x88540B20, // 00CD GETMBR R21 R5 K32 + 0x90527615, // 00CE SETMBR R20 K59 R21 + 0x90527813, // 00CF SETMBR R20 K60 R19 + 0x8C540526, // 00D0 GETMET R21 R2 K38 + 0x7C540200, // 00D1 CALL R21 1 + 0x8C542B27, // 00D2 GETMET R21 R21 K39 + 0x885C0B23, // 00D3 GETMBR R23 R5 K35 + 0x88600715, // 00D4 GETMBR R24 R3 K21 + 0x8864070E, // 00D5 GETMBR R25 R3 K14 + 0x00603019, // 00D6 ADD R24 R24 R25 + 0x60640015, // 00D7 GETGBL R25 G21 + 0x7C640000, // 00D8 CALL R25 0 + 0x8C643324, // 00D9 GETMET R25 R25 K36 + 0x586C003D, // 00DA LDCONST R27 K61 + 0x7C640400, // 00DB CALL R25 2 + 0x546A002F, // 00DC LDINT R26 48 + 0x7C540A00, // 00DD CALL R21 5 + 0x545A000E, // 00DE LDINT R22 15 + 0x405A0616, // 00DF CONNECT R22 K3 R22 + 0x94582A16, // 00E0 GETIDX R22 R21 R22 + 0x545E000F, // 00E1 LDINT R23 16 + 0x5462001E, // 00E2 LDINT R24 31 + 0x405C2E18, // 00E3 CONNECT R23 R23 R24 + 0x945C2A17, // 00E4 GETIDX R23 R21 R23 + 0x5462001F, // 00E5 LDINT R24 32 + 0x5466002E, // 00E6 LDINT R25 47 + 0x40603019, // 00E7 CONNECT R24 R24 R25 + 0x94602A18, // 00E8 GETIDX R24 R21 R24 + 0xB8665A00, // 00E9 GETNGBL R25 K45 + 0x8C64333E, // 00EA GETMET R25 R25 K62 + 0x7C640200, // 00EB CALL R25 1 + 0x9464333F, // 00EC GETIDX R25 R25 K63 + 0xB86A5A00, // 00ED GETNGBL R26 K45 + 0x8C68352E, // 00EE GETMET R26 R26 K46 + 0x58700040, // 00EF LDCONST R28 K64 + 0x58740030, // 00F0 LDCONST R29 K48 + 0x7C680600, // 00F1 CALL R26 3 + 0xB86A5A00, // 00F2 GETNGBL R26 K45 + 0x8C68352E, // 00F3 GETMET R26 R26 K46 + 0x8C702D32, // 00F4 GETMET R28 R22 K50 + 0x7C700200, // 00F5 CALL R28 1 + 0x0072821C, // 00F6 ADD R28 K65 R28 + 0x58740030, // 00F7 LDCONST R29 K48 + 0x7C680600, // 00F8 CALL R26 3 + 0xB86A5A00, // 00F9 GETNGBL R26 K45 + 0x8C68352E, // 00FA GETMET R26 R26 K46 + 0x8C702F32, // 00FB GETMET R28 R23 K50 + 0x7C700200, // 00FC CALL R28 1 + 0x0072841C, // 00FD ADD R28 K66 R28 + 0x58740030, // 00FE LDCONST R29 K48 + 0x7C680600, // 00FF CALL R26 3 + 0xB86A5A00, // 0100 GETNGBL R26 K45 + 0x8C68352E, // 0101 GETMET R26 R26 K46 + 0x8C703132, // 0102 GETMET R28 R24 K50 + 0x7C700200, // 0103 CALL R28 1 + 0x0072861C, // 0104 ADD R28 K67 R28 + 0x58740030, // 0105 LDCONST R29 K48 + 0x7C680600, // 0106 CALL R26 3 + 0xB86A5A00, // 0107 GETNGBL R26 K45 + 0x8C68352E, // 0108 GETMET R26 R26 K46 + 0x58700040, // 0109 LDCONST R28 K64 + 0x58740030, // 010A LDCONST R29 K48 + 0x7C680600, // 010B CALL R26 3 + 0x8C682944, // 010C GETMET R26 R20 K68 + 0x7C680200, // 010D CALL R26 1 + 0x4C6C0000, // 010E LDNIL R27 + 0x90168A1B, // 010F SETMBR R5 K69 R27 + 0xB86E5A00, // 0110 GETNGBL R27 K45 + 0x8C6C372E, // 0111 GETMET R27 R27 K46 + 0x8C743532, // 0112 GETMET R29 R26 K50 + 0x7C740200, // 0113 CALL R29 1 + 0x00768C1D, // 0114 ADD R29 K70 R29 + 0x58780030, // 0115 LDCONST R30 K48 + 0x7C6C0600, // 0116 CALL R27 3 + 0x8C6C0347, // 0117 GETMET R27 R1 K71 + 0x54760032, // 0118 LDINT R29 51 + 0x50780200, // 0119 LDBOOL R30 1 0 + 0x7C6C0600, // 011A CALL R27 3 + 0x8C703744, // 011B GETMET R28 R27 K68 + 0x5C783400, // 011C MOVE R30 R26 + 0x7C700400, // 011D CALL R28 2 + 0x88740148, // 011E GETMBR R29 R0 K72 + 0x8C743B49, // 011F GETMET R29 R29 K73 + 0x5C7C3800, // 0120 MOVE R31 R28 + 0x8880034A, // 0121 GETMBR R32 R1 K74 + 0x8884034B, // 0122 GETMBR R33 R1 K75 + 0x8888374C, // 0123 GETMBR R34 R27 K76 + 0x7C740A00, // 0124 CALL R29 5 + 0x8C740B4D, // 0125 GETMET R29 R5 K77 + 0x7C740200, // 0126 CALL R29 1 + 0x8C740B4E, // 0127 GETMET R29 R5 K78 + 0x5C7C2C00, // 0128 MOVE R31 R22 + 0x5C802E00, // 0129 MOVE R32 R23 + 0x5C843000, // 012A MOVE R33 R24 + 0x5C883200, // 012B MOVE R34 R25 + 0x7C740A00, // 012C CALL R29 5 + 0x8C740B4F, // 012D GETMET R29 R5 K79 + 0x507C0200, // 012E LDBOOL R31 1 0 + 0x7C740400, // 012F CALL R29 2 + 0x8C740B50, // 0130 GETMET R29 R5 K80 + 0x7C740200, // 0131 CALL R29 1 + 0x8C740B51, // 0132 GETMET R29 R5 K81 + 0x7C740200, // 0133 CALL R29 1 + 0x50740200, // 0134 LDBOOL R29 1 0 + 0x80043A00, // 0135 RET 1 R29 + 0x70020001, // 0136 JMP #0139 + 0x4C3C0000, // 0137 LDNIL R15 + 0x900E1C0F, // 0138 SETMBR R3 K14 R15 + 0x8818070E, // 0139 GETMBR R6 R3 K14 + 0x4C1C0000, // 013A LDNIL R7 + 0x1C180C07, // 013B EQ R6 R6 R7 + 0x741A0003, // 013C JMPT R6 #0141 + 0x8818070F, // 013D GETMBR R6 R3 K15 + 0x4C1C0000, // 013E LDNIL R7 + 0x1C180C07, // 013F EQ R6 R6 R7 + 0x781A00F0, // 0140 JMPF R6 #0232 + 0x8C180537, // 0141 GETMET R6 R2 K55 + 0x5422000F, // 0142 LDINT R8 16 + 0x7C180400, // 0143 CALL R6 2 + 0x90166C06, // 0144 SETMBR R5 K54 R6 + 0x8C180537, // 0145 GETMET R6 R2 K55 + 0x5422001F, // 0146 LDINT R8 32 + 0x7C180400, // 0147 CALL R6 2 + 0x9002A406, // 0148 SETMBR R0 K82 R6 + 0x8C180554, // 0149 GETMET R6 R2 K84 + 0x7C180200, // 014A CALL R6 1 + 0x8C180D55, // 014B GETMET R6 R6 K85 + 0x88200152, // 014C GETMBR R8 R0 K82 + 0x7C180400, // 014D CALL R6 2 + 0x9002A606, // 014E SETMBR R0 K83 R6 + 0x8C180537, // 014F GETMET R6 R2 K55 + 0x5422001F, // 0150 LDINT R8 32 + 0x7C180400, // 0151 CALL R6 2 + 0x8C1C0554, // 0152 GETMET R7 R2 K84 + 0x7C1C0200, // 0153 CALL R7 1 + 0x8C1C0F56, // 0154 GETMET R7 R7 K86 + 0x88240152, // 0155 GETMBR R9 R0 K82 + 0x8828070D, // 0156 GETMBR R10 R3 K13 + 0x7C1C0600, // 0157 CALL R7 3 + 0x90164607, // 0158 SETMBR R5 K35 R7 + 0xB81E0E00, // 0159 GETNGBL R7 K7 + 0x881C0F57, // 015A GETMBR R7 R7 K87 + 0x8C1C0F58, // 015B GETMET R7 R7 K88 + 0x7C1C0200, // 015C CALL R7 1 + 0x8C200F59, // 015D GETMET R8 R7 K89 + 0x5828005A, // 015E LDCONST R10 K90 + 0xB82E0E00, // 015F GETNGBL R11 K7 + 0x882C1757, // 0160 GETMBR R11 R11 K87 + 0x882C175B, // 0161 GETMBR R11 R11 K91 + 0x8C300B5C, // 0162 GETMET R12 R5 K92 + 0x7C300200, // 0163 CALL R12 1 + 0x7C200800, // 0164 CALL R8 4 + 0x8C200F59, // 0165 GETMET R8 R7 K89 + 0x5828005D, // 0166 LDCONST R10 K93 + 0xB82E0E00, // 0167 GETNGBL R11 K7 + 0x882C1757, // 0168 GETMBR R11 R11 K87 + 0x882C175B, // 0169 GETMBR R11 R11 K91 + 0x8C300B5E, // 016A GETMET R12 R5 K94 + 0x7C300200, // 016B CALL R12 1 + 0x7C200800, // 016C CALL R8 4 + 0x8C200F59, // 016D GETMET R8 R7 K89 + 0x58280030, // 016E LDCONST R10 K48 + 0xB82E0E00, // 016F GETNGBL R11 K7 + 0x882C1757, // 0170 GETMBR R11 R11 K87 + 0x882C175B, // 0171 GETMBR R11 R11 K91 + 0x88300153, // 0172 GETMBR R12 R0 K83 + 0x7C200800, // 0173 CALL R8 4 + 0x8C200F59, // 0174 GETMET R8 R7 K89 + 0x542A0003, // 0175 LDINT R10 4 + 0xB82E0E00, // 0176 GETNGBL R11 K7 + 0x882C1757, // 0177 GETMBR R11 R11 K87 + 0x882C175B, // 0178 GETMBR R11 R11 K91 + 0x8830070D, // 0179 GETMBR R12 R3 K13 + 0x7C200800, // 017A CALL R8 4 + 0x8C200554, // 017B GETMET R8 R2 K84 + 0x7C200200, // 017C CALL R8 1 + 0x8C20115F, // 017D GETMET R8 R8 K95 + 0x8C280B60, // 017E GETMET R10 R5 K96 + 0x7C280200, // 017F CALL R10 1 + 0x8C2C0F44, // 0180 GETMET R11 R7 K68 + 0x7C2C0200, // 0181 CALL R11 1 + 0x7C200600, // 0182 CALL R8 3 + 0xB8260E00, // 0183 GETNGBL R9 K7 + 0x88241357, // 0184 GETMBR R9 R9 K87 + 0x8C241358, // 0185 GETMET R9 R9 K88 + 0x7C240200, // 0186 CALL R9 1 + 0x8C281359, // 0187 GETMET R10 R9 K89 + 0x5830005A, // 0188 LDCONST R12 K90 + 0xB8360E00, // 0189 GETNGBL R13 K7 + 0x88341B57, // 018A GETMBR R13 R13 K87 + 0x88341B5B, // 018B GETMBR R13 R13 K91 + 0x8C380B5C, // 018C GETMET R14 R5 K92 + 0x7C380200, // 018D CALL R14 1 + 0x7C280800, // 018E CALL R10 4 + 0x8C281359, // 018F GETMET R10 R9 K89 + 0x5830005D, // 0190 LDCONST R12 K93 + 0xB8360E00, // 0191 GETNGBL R13 K7 + 0x88341B57, // 0192 GETMBR R13 R13 K87 + 0x88341B5B, // 0193 GETMBR R13 R13 K91 + 0x8C380B5E, // 0194 GETMET R14 R5 K94 + 0x7C380200, // 0195 CALL R14 1 + 0x7C280800, // 0196 CALL R10 4 + 0x8C281359, // 0197 GETMET R10 R9 K89 + 0x58300030, // 0198 LDCONST R12 K48 + 0xB8360E00, // 0199 GETNGBL R13 K7 + 0x88341B57, // 019A GETMBR R13 R13 K87 + 0x88341B5B, // 019B GETMBR R13 R13 K91 + 0x5C381000, // 019C MOVE R14 R8 + 0x7C280800, // 019D CALL R10 4 + 0x8C281359, // 019E GETMET R10 R9 K89 + 0x54320003, // 019F LDINT R12 4 + 0xB8360E00, // 01A0 GETNGBL R13 K7 + 0x88341B57, // 01A1 GETMBR R13 R13 K87 + 0x88341B5B, // 01A2 GETMBR R13 R13 K91 + 0x88380B36, // 01A3 GETMBR R14 R5 K54 + 0x7C280800, // 01A4 CALL R10 4 + 0xB82A5A00, // 01A5 GETNGBL R10 K45 + 0x8C28152E, // 01A6 GETMET R10 R10 K46 + 0x5830002F, // 01A7 LDCONST R12 K47 + 0x58340030, // 01A8 LDCONST R13 K48 + 0x7C280600, // 01A9 CALL R10 3 + 0x88280761, // 01AA GETMBR R10 R3 K97 + 0x90168A0A, // 01AB SETMBR R5 K69 R10 + 0xB82A5A00, // 01AC GETNGBL R10 K45 + 0x8C28152E, // 01AD GETMET R10 R10 K46 + 0x88300B45, // 01AE GETMBR R12 R5 K69 + 0x8C301932, // 01AF GETMET R12 R12 K50 + 0x7C300200, // 01B0 CALL R12 1 + 0x0032C40C, // 01B1 ADD R12 K98 R12 + 0x58340030, // 01B2 LDCONST R13 K48 + 0x7C280600, // 01B3 CALL R10 3 + 0x8C280563, // 01B4 GETMET R10 R2 K99 + 0x7C280200, // 01B5 CALL R10 1 + 0x8C281564, // 01B6 GETMET R10 R10 K100 + 0x88300B45, // 01B7 GETMBR R12 R5 K69 + 0x7C280400, // 01B8 CALL R10 2 + 0x8C281565, // 01B9 GETMET R10 R10 K101 + 0x7C280200, // 01BA CALL R10 1 + 0x602C0015, // 01BB GETGBL R11 G21 + 0x7C2C0000, // 01BC CALL R11 0 + 0x8C2C1724, // 01BD GETMET R11 R11 K36 + 0x88340166, // 01BE GETMBR R13 R0 K102 + 0x7C2C0400, // 01BF CALL R11 2 + 0x8C300B67, // 01C0 GETMET R12 R5 K103 + 0x7C300200, // 01C1 CALL R12 1 + 0x00301806, // 01C2 ADD R12 R12 R6 + 0x88340153, // 01C3 GETMBR R13 R0 K83 + 0x0030180D, // 01C4 ADD R12 R12 R13 + 0x0030180A, // 01C5 ADD R12 R12 R10 + 0x8C340526, // 01C6 GETMET R13 R2 K38 + 0x7C340200, // 01C7 CALL R13 1 + 0x8C341B27, // 01C8 GETMET R13 R13 K39 + 0x883C0B23, // 01C9 GETMBR R15 R5 K35 + 0x5C401800, // 01CA MOVE R16 R12 + 0x5C441600, // 01CB MOVE R17 R11 + 0x544A000F, // 01CC LDINT R18 16 + 0x7C340A00, // 01CD CALL R13 5 + 0xB83A5A00, // 01CE GETNGBL R14 K45 + 0x8C381D2E, // 01CF GETMET R14 R14 K46 + 0x88400B23, // 01D0 GETMBR R16 R5 K35 + 0x8C402132, // 01D1 GETMET R16 R16 K50 + 0x7C400200, // 01D2 CALL R16 1 + 0x0042D010, // 01D3 ADD R16 K104 R16 + 0x58440030, // 01D4 LDCONST R17 K48 + 0x7C380600, // 01D5 CALL R14 3 + 0xB83A5A00, // 01D6 GETNGBL R14 K45 + 0x8C381D2E, // 01D7 GETMET R14 R14 K46 + 0x8C401932, // 01D8 GETMET R16 R12 K50 + 0x7C400200, // 01D9 CALL R16 1 + 0x0042D210, // 01DA ADD R16 K105 R16 + 0x58440030, // 01DB LDCONST R17 K48 + 0x7C380600, // 01DC CALL R14 3 + 0xB83A5A00, // 01DD GETNGBL R14 K45 + 0x8C381D2E, // 01DE GETMET R14 R14 K46 + 0x8C401B32, // 01DF GETMET R16 R13 K50 + 0x7C400200, // 01E0 CALL R16 1 + 0x0042D410, // 01E1 ADD R16 K106 R16 + 0x58440030, // 01E2 LDCONST R17 K48 + 0x7C380600, // 01E3 CALL R14 3 + 0x8C381344, // 01E4 GETMET R14 R9 K68 + 0x7C380200, // 01E5 CALL R14 1 + 0x8C3C052A, // 01E6 GETMET R15 R2 K42 + 0x5C441A00, // 01E7 MOVE R17 R13 + 0x60480015, // 01E8 GETGBL R18 G21 + 0x7C480000, // 01E9 CALL R18 0 + 0x8C482524, // 01EA GETMET R18 R18 K36 + 0x8850016B, // 01EB GETMBR R20 R0 K107 + 0x7C480400, // 01EC CALL R18 2 + 0x604C0015, // 01ED GETGBL R19 G21 + 0x7C4C0000, // 01EE CALL R19 0 + 0x6050000C, // 01EF GETGBL R20 G12 + 0x5C541C00, // 01F0 MOVE R21 R14 + 0x7C500200, // 01F1 CALL R20 1 + 0x5456000F, // 01F2 LDINT R21 16 + 0x7C3C0C00, // 01F3 CALL R15 6 + 0x8C401F6C, // 01F4 GETMET R16 R15 K108 + 0x5C481C00, // 01F5 MOVE R18 R14 + 0x7C400400, // 01F6 CALL R16 2 + 0x8C441F2C, // 01F7 GETMET R17 R15 K44 + 0x7C440200, // 01F8 CALL R17 1 + 0x00402011, // 01F9 ADD R16 R16 R17 + 0xB8465A00, // 01FA GETNGBL R17 K45 + 0x8C44232E, // 01FB GETMET R17 R17 K46 + 0x8C4C2132, // 01FC GETMET R19 R16 K50 + 0x7C4C0200, // 01FD CALL R19 1 + 0x004EDA13, // 01FE ADD R19 K109 R19 + 0x58500030, // 01FF LDCONST R20 K48 + 0x7C440600, // 0200 CALL R17 3 + 0xB8465A00, // 0201 GETNGBL R17 K45 + 0x8C44232E, // 0202 GETMET R17 R17 K46 + 0x584C002F, // 0203 LDCONST R19 K47 + 0x58500030, // 0204 LDCONST R20 K48 + 0x7C440600, // 0205 CALL R17 3 + 0xB8460E00, // 0206 GETNGBL R17 K7 + 0x8C44236E, // 0207 GETMET R17 R17 K110 + 0x7C440200, // 0208 CALL R17 1 + 0x9046DE06, // 0209 SETMBR R17 K111 R6 + 0x88480122, // 020A GETMBR R18 R0 K34 + 0x9046E012, // 020B SETMBR R17 K112 R18 + 0x88480153, // 020C GETMBR R18 R0 K83 + 0x9046E212, // 020D SETMBR R17 K113 R18 + 0x9046E410, // 020E SETMBR R17 K114 R16 + 0xB84A5A00, // 020F GETNGBL R18 K45 + 0x8C48252E, // 0210 GETMET R18 R18 K46 + 0xB8520E00, // 0211 GETNGBL R20 K7 + 0x8C502974, // 0212 GETMET R20 R20 K116 + 0x5C582200, // 0213 MOVE R22 R17 + 0x7C500400, // 0214 CALL R20 2 + 0x0052E614, // 0215 ADD R20 K115 R20 + 0x58540030, // 0216 LDCONST R21 K48 + 0x7C480600, // 0217 CALL R18 3 + 0x8C482344, // 0218 GETMET R18 R17 K68 + 0x7C480200, // 0219 CALL R18 1 + 0x9016EA12, // 021A SETMBR R5 K117 R18 + 0xB84E5A00, // 021B GETNGBL R19 K45 + 0x8C4C272E, // 021C GETMET R19 R19 K46 + 0x8C542532, // 021D GETMET R21 R18 K50 + 0x7C540200, // 021E CALL R21 1 + 0x0056EC15, // 021F ADD R21 K118 R21 + 0x58580030, // 0220 LDCONST R22 K48 + 0x7C4C0600, // 0221 CALL R19 3 + 0x8C4C0347, // 0222 GETMET R19 R1 K71 + 0x54560030, // 0223 LDINT R21 49 + 0x50580200, // 0224 LDBOOL R22 1 0 + 0x7C4C0600, // 0225 CALL R19 3 + 0x8C502744, // 0226 GETMET R20 R19 K68 + 0x5C582400, // 0227 MOVE R22 R18 + 0x7C500400, // 0228 CALL R20 2 + 0x88540148, // 0229 GETMBR R21 R0 K72 + 0x8C542B49, // 022A GETMET R21 R21 K73 + 0x5C5C2800, // 022B MOVE R23 R20 + 0x8860034A, // 022C GETMBR R24 R1 K74 + 0x8864034B, // 022D GETMBR R25 R1 K75 + 0x8868274C, // 022E GETMBR R26 R19 K76 + 0x7C540A00, // 022F CALL R21 5 + 0x50540200, // 0230 LDBOOL R21 1 0 + 0x80042A00, // 0231 RET 1 R21 + 0x50180200, // 0232 LDBOOL R6 1 0 + 0x80040C00, // 0233 RET 1 R6 }) ) ); @@ -2049,15 +2071,15 @@ be_local_closure(Matter_Commisioning_Context_parse_Sigma1, /* name */ ********************************************************************/ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */ be_nested_proto( - 18, /* nstack */ - 4, /* argc */ + 16, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[45]) { /* constants */ + ( &(const bvalue[47]) { /* constants */ /* K0 */ be_nested_str_weak(crypto), /* K1 */ be_nested_str_weak(opcode), /* K2 */ be_nested_str_weak(local_session_id), @@ -2100,158 +2122,160 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */ /* K39 */ be_nested_str_weak(encode), /* K40 */ be_nested_str_weak(responder), /* K41 */ be_nested_str_weak(send_response), - /* K42 */ be_nested_str_weak(add_session), - /* K43 */ be_nested_str_weak(future_local_session_id), - /* K44 */ be_nested_str_weak(future_initiator_session_id), + /* K42 */ be_nested_str_weak(remote_ip), + /* K43 */ be_nested_str_weak(remote_port), + /* K44 */ be_nested_str_weak(add_session), + /* K45 */ be_nested_str_weak(future_local_session_id), + /* K46 */ be_nested_str_weak(future_initiator_session_id), }), be_str_weak(parse_Pake3), &be_const_str_solidified, ( &(const binstruction[146]) { /* code */ - 0xA4120000, // 0000 IMPORT R4 K0 - 0x88140301, // 0001 GETMBR R5 R1 K1 - 0x541A0023, // 0002 LDINT R6 36 - 0x20140A06, // 0003 NE R5 R5 R6 - 0x74160005, // 0004 JMPT R5 #000B - 0x88140302, // 0005 GETMBR R5 R1 K2 - 0x20140B03, // 0006 NE R5 R5 K3 - 0x74160002, // 0007 JMPT R5 #000B - 0x88140304, // 0008 GETMBR R5 R1 K4 - 0x20140B03, // 0009 NE R5 R5 K3 - 0x78160000, // 000A JMPF R5 #000C + 0xA40A0000, // 0000 IMPORT R2 K0 + 0x880C0301, // 0001 GETMBR R3 R1 K1 + 0x54120023, // 0002 LDINT R4 36 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x740E0005, // 0004 JMPT R3 #000B + 0x880C0302, // 0005 GETMBR R3 R1 K2 + 0x200C0703, // 0006 NE R3 R3 K3 + 0x740E0002, // 0007 JMPT R3 #000B + 0x880C0304, // 0008 GETMBR R3 R1 K4 + 0x200C0703, // 0009 NE R3 R3 K3 + 0x780E0000, // 000A JMPF R3 #000C 0xB0060B06, // 000B RAISE 1 K5 K6 - 0xB8160E00, // 000C GETNGBL R5 K7 - 0x8C140B08, // 000D GETMET R5 R5 K8 - 0x7C140200, // 000E CALL R5 1 - 0x8C140B09, // 000F GETMET R5 R5 K9 - 0x881C030A, // 0010 GETMBR R7 R1 K10 - 0x8820030B, // 0011 GETMBR R8 R1 K11 - 0x7C140600, // 0012 CALL R5 3 - 0x88180B0C, // 0013 GETMBR R6 R5 K12 - 0x90021806, // 0014 SETMBR R0 K12 R6 - 0xB81A1A00, // 0015 GETNGBL R6 K13 - 0x8C180D0E, // 0016 GETMET R6 R6 K14 - 0x8820010C, // 0017 GETMBR R8 R0 K12 - 0x8C201110, // 0018 GETMET R8 R8 K16 - 0x7C200200, // 0019 CALL R8 1 - 0x00221E08, // 001A ADD R8 K15 R8 - 0x58240011, // 001B LDCONST R9 K17 - 0x7C180600, // 001C CALL R6 3 - 0x8818010C, // 001D GETMBR R6 R0 K12 - 0x881C0112, // 001E GETMBR R7 R0 K18 - 0x881C0F0C, // 001F GETMBR R7 R7 K12 - 0x20180C07, // 0020 NE R6 R6 R7 - 0x781A0000, // 0021 JMPF R6 #0023 + 0xB80E0E00, // 000C GETNGBL R3 K7 + 0x8C0C0708, // 000D GETMET R3 R3 K8 + 0x7C0C0200, // 000E CALL R3 1 + 0x8C0C0709, // 000F GETMET R3 R3 K9 + 0x8814030A, // 0010 GETMBR R5 R1 K10 + 0x8818030B, // 0011 GETMBR R6 R1 K11 + 0x7C0C0600, // 0012 CALL R3 3 + 0x8810070C, // 0013 GETMBR R4 R3 K12 + 0x90021804, // 0014 SETMBR R0 K12 R4 + 0xB8121A00, // 0015 GETNGBL R4 K13 + 0x8C10090E, // 0016 GETMET R4 R4 K14 + 0x8818010C, // 0017 GETMBR R6 R0 K12 + 0x8C180D10, // 0018 GETMET R6 R6 K16 + 0x7C180200, // 0019 CALL R6 1 + 0x001A1E06, // 001A ADD R6 K15 R6 + 0x581C0011, // 001B LDCONST R7 K17 + 0x7C100600, // 001C CALL R4 3 + 0x8810010C, // 001D GETMBR R4 R0 K12 + 0x88140112, // 001E GETMBR R5 R0 K18 + 0x88140B0C, // 001F GETMBR R5 R5 K12 + 0x20100805, // 0020 NE R4 R4 R5 + 0x78120000, // 0021 JMPF R4 #0023 0xB0060B13, // 0022 RAISE 1 K5 K19 - 0xB81A1A00, // 0023 GETNGBL R6 K13 - 0x8C180D15, // 0024 GETMET R6 R6 K21 - 0x7C180200, // 0025 CALL R6 1 - 0x94180D16, // 0026 GETIDX R6 R6 K22 - 0x90022806, // 0027 SETMBR R0 K20 R6 - 0x8C180917, // 0028 GETMET R6 R4 K23 - 0x7C180200, // 0029 CALL R6 1 - 0x8C180D18, // 002A GETMET R6 R6 K24 - 0x88200119, // 002B GETMBR R8 R0 K25 - 0x60240015, // 002C GETGBL R9 G21 - 0x7C240000, // 002D CALL R9 0 - 0x60280015, // 002E GETGBL R10 G21 - 0x7C280000, // 002F CALL R10 0 - 0x8C28151A, // 0030 GETMET R10 R10 K26 - 0x8830011B, // 0031 GETMBR R12 R0 K27 - 0x7C280400, // 0032 CALL R10 2 - 0x542E002F, // 0033 LDINT R11 48 - 0x7C180A00, // 0034 CALL R6 5 - 0x541E000E, // 0035 LDINT R7 15 - 0x401E0607, // 0036 CONNECT R7 K3 R7 - 0x941C0C07, // 0037 GETIDX R7 R6 R7 - 0x90023807, // 0038 SETMBR R0 K28 R7 - 0x541E000F, // 0039 LDINT R7 16 - 0x5422001E, // 003A LDINT R8 31 - 0x401C0E08, // 003B CONNECT R7 R7 R8 - 0x941C0C07, // 003C GETIDX R7 R6 R7 - 0x90023A07, // 003D SETMBR R0 K29 R7 - 0x541E001F, // 003E LDINT R7 32 - 0x5422002E, // 003F LDINT R8 47 - 0x401C0E08, // 0040 CONNECT R7 R7 R8 - 0x941C0C07, // 0041 GETIDX R7 R6 R7 - 0x90023C07, // 0042 SETMBR R0 K30 R7 - 0xB81E1A00, // 0043 GETNGBL R7 K13 - 0x8C1C0F0E, // 0044 GETMET R7 R7 K14 - 0x5824001F, // 0045 LDCONST R9 K31 - 0x58280011, // 0046 LDCONST R10 K17 - 0x7C1C0600, // 0047 CALL R7 3 - 0xB81E1A00, // 0048 GETNGBL R7 K13 - 0x8C1C0F0E, // 0049 GETMET R7 R7 K14 - 0x8C240D10, // 004A GETMET R9 R6 K16 - 0x7C240200, // 004B CALL R9 1 - 0x00264009, // 004C ADD R9 K32 R9 - 0x58280011, // 004D LDCONST R10 K17 - 0x7C1C0600, // 004E CALL R7 3 - 0xB81E1A00, // 004F GETNGBL R7 K13 - 0x8C1C0F0E, // 0050 GETMET R7 R7 K14 - 0x8824011C, // 0051 GETMBR R9 R0 K28 - 0x8C241310, // 0052 GETMET R9 R9 K16 - 0x7C240200, // 0053 CALL R9 1 - 0x00264209, // 0054 ADD R9 K33 R9 - 0x58280011, // 0055 LDCONST R10 K17 - 0x7C1C0600, // 0056 CALL R7 3 - 0xB81E1A00, // 0057 GETNGBL R7 K13 - 0x8C1C0F0E, // 0058 GETMET R7 R7 K14 - 0x8824011D, // 0059 GETMBR R9 R0 K29 - 0x8C241310, // 005A GETMET R9 R9 K16 - 0x7C240200, // 005B CALL R9 1 - 0x00264409, // 005C ADD R9 K34 R9 - 0x58280011, // 005D LDCONST R10 K17 - 0x7C1C0600, // 005E CALL R7 3 - 0xB81E1A00, // 005F GETNGBL R7 K13 - 0x8C1C0F0E, // 0060 GETMET R7 R7 K14 - 0x8824011E, // 0061 GETMBR R9 R0 K30 - 0x8C241310, // 0062 GETMET R9 R9 K16 - 0x7C240200, // 0063 CALL R9 1 - 0x00264609, // 0064 ADD R9 K35 R9 - 0x58280011, // 0065 LDCONST R10 K17 - 0x7C1C0600, // 0066 CALL R7 3 - 0xB81E1A00, // 0067 GETNGBL R7 K13 - 0x8C1C0F0E, // 0068 GETMET R7 R7 K14 - 0x5824001F, // 0069 LDCONST R9 K31 - 0x58280011, // 006A LDCONST R10 K17 - 0x7C1C0600, // 006B CALL R7 3 - 0x8C1C0324, // 006C GETMET R7 R1 K36 - 0x5426003F, // 006D LDINT R9 64 - 0x50280000, // 006E LDBOOL R10 0 0 - 0x7C1C0600, // 006F CALL R7 3 - 0x60200015, // 0070 GETGBL R8 G21 - 0x7C200000, // 0071 CALL R8 0 - 0x8C241125, // 0072 GETMET R9 R8 K37 - 0x582C0003, // 0073 LDCONST R11 K3 - 0x58300026, // 0074 LDCONST R12 K38 - 0x7C240600, // 0075 CALL R9 3 - 0x8C241125, // 0076 GETMET R9 R8 K37 - 0x582C0003, // 0077 LDCONST R11 K3 - 0x54320003, // 0078 LDINT R12 4 - 0x7C240600, // 0079 CALL R9 3 - 0x8C241125, // 007A GETMET R9 R8 K37 - 0x582C0003, // 007B LDCONST R11 K3 - 0x54320003, // 007C LDINT R12 4 - 0x7C240600, // 007D CALL R9 3 - 0x8C240F27, // 007E GETMET R9 R7 K39 - 0x5C2C1000, // 007F MOVE R11 R8 - 0x7C240400, // 0080 CALL R9 2 - 0x88280128, // 0081 GETMBR R10 R0 K40 - 0x8C281529, // 0082 GETMET R10 R10 K41 - 0x5C301200, // 0083 MOVE R12 R9 - 0x5C340400, // 0084 MOVE R13 R2 - 0x5C380600, // 0085 MOVE R14 R3 - 0x4C3C0000, // 0086 LDNIL R15 - 0x7C280A00, // 0087 CALL R10 5 - 0x88280128, // 0088 GETMBR R10 R0 K40 - 0x8C28152A, // 0089 GETMET R10 R10 K42 - 0x8830012B, // 008A GETMBR R12 R0 K43 - 0x8834012C, // 008B GETMBR R13 R0 K44 - 0x8838011C, // 008C GETMBR R14 R0 K28 - 0x883C011D, // 008D GETMBR R15 R0 K29 - 0x8840011E, // 008E GETMBR R16 R0 K30 - 0x88440114, // 008F GETMBR R17 R0 K20 - 0x7C280E00, // 0090 CALL R10 7 + 0xB8121A00, // 0023 GETNGBL R4 K13 + 0x8C100915, // 0024 GETMET R4 R4 K21 + 0x7C100200, // 0025 CALL R4 1 + 0x94100916, // 0026 GETIDX R4 R4 K22 + 0x90022804, // 0027 SETMBR R0 K20 R4 + 0x8C100517, // 0028 GETMET R4 R2 K23 + 0x7C100200, // 0029 CALL R4 1 + 0x8C100918, // 002A GETMET R4 R4 K24 + 0x88180119, // 002B GETMBR R6 R0 K25 + 0x601C0015, // 002C GETGBL R7 G21 + 0x7C1C0000, // 002D CALL R7 0 + 0x60200015, // 002E GETGBL R8 G21 + 0x7C200000, // 002F CALL R8 0 + 0x8C20111A, // 0030 GETMET R8 R8 K26 + 0x8828011B, // 0031 GETMBR R10 R0 K27 + 0x7C200400, // 0032 CALL R8 2 + 0x5426002F, // 0033 LDINT R9 48 + 0x7C100A00, // 0034 CALL R4 5 + 0x5416000E, // 0035 LDINT R5 15 + 0x40160605, // 0036 CONNECT R5 K3 R5 + 0x94140805, // 0037 GETIDX R5 R4 R5 + 0x90023805, // 0038 SETMBR R0 K28 R5 + 0x5416000F, // 0039 LDINT R5 16 + 0x541A001E, // 003A LDINT R6 31 + 0x40140A06, // 003B CONNECT R5 R5 R6 + 0x94140805, // 003C GETIDX R5 R4 R5 + 0x90023A05, // 003D SETMBR R0 K29 R5 + 0x5416001F, // 003E LDINT R5 32 + 0x541A002E, // 003F LDINT R6 47 + 0x40140A06, // 0040 CONNECT R5 R5 R6 + 0x94140805, // 0041 GETIDX R5 R4 R5 + 0x90023C05, // 0042 SETMBR R0 K30 R5 + 0xB8161A00, // 0043 GETNGBL R5 K13 + 0x8C140B0E, // 0044 GETMET R5 R5 K14 + 0x581C001F, // 0045 LDCONST R7 K31 + 0x58200011, // 0046 LDCONST R8 K17 + 0x7C140600, // 0047 CALL R5 3 + 0xB8161A00, // 0048 GETNGBL R5 K13 + 0x8C140B0E, // 0049 GETMET R5 R5 K14 + 0x8C1C0910, // 004A GETMET R7 R4 K16 + 0x7C1C0200, // 004B CALL R7 1 + 0x001E4007, // 004C ADD R7 K32 R7 + 0x58200011, // 004D LDCONST R8 K17 + 0x7C140600, // 004E CALL R5 3 + 0xB8161A00, // 004F GETNGBL R5 K13 + 0x8C140B0E, // 0050 GETMET R5 R5 K14 + 0x881C011C, // 0051 GETMBR R7 R0 K28 + 0x8C1C0F10, // 0052 GETMET R7 R7 K16 + 0x7C1C0200, // 0053 CALL R7 1 + 0x001E4207, // 0054 ADD R7 K33 R7 + 0x58200011, // 0055 LDCONST R8 K17 + 0x7C140600, // 0056 CALL R5 3 + 0xB8161A00, // 0057 GETNGBL R5 K13 + 0x8C140B0E, // 0058 GETMET R5 R5 K14 + 0x881C011D, // 0059 GETMBR R7 R0 K29 + 0x8C1C0F10, // 005A GETMET R7 R7 K16 + 0x7C1C0200, // 005B CALL R7 1 + 0x001E4407, // 005C ADD R7 K34 R7 + 0x58200011, // 005D LDCONST R8 K17 + 0x7C140600, // 005E CALL R5 3 + 0xB8161A00, // 005F GETNGBL R5 K13 + 0x8C140B0E, // 0060 GETMET R5 R5 K14 + 0x881C011E, // 0061 GETMBR R7 R0 K30 + 0x8C1C0F10, // 0062 GETMET R7 R7 K16 + 0x7C1C0200, // 0063 CALL R7 1 + 0x001E4607, // 0064 ADD R7 K35 R7 + 0x58200011, // 0065 LDCONST R8 K17 + 0x7C140600, // 0066 CALL R5 3 + 0xB8161A00, // 0067 GETNGBL R5 K13 + 0x8C140B0E, // 0068 GETMET R5 R5 K14 + 0x581C001F, // 0069 LDCONST R7 K31 + 0x58200011, // 006A LDCONST R8 K17 + 0x7C140600, // 006B CALL R5 3 + 0x8C140324, // 006C GETMET R5 R1 K36 + 0x541E003F, // 006D LDINT R7 64 + 0x50200000, // 006E LDBOOL R8 0 0 + 0x7C140600, // 006F CALL R5 3 + 0x60180015, // 0070 GETGBL R6 G21 + 0x7C180000, // 0071 CALL R6 0 + 0x8C1C0D25, // 0072 GETMET R7 R6 K37 + 0x58240003, // 0073 LDCONST R9 K3 + 0x58280026, // 0074 LDCONST R10 K38 + 0x7C1C0600, // 0075 CALL R7 3 + 0x8C1C0D25, // 0076 GETMET R7 R6 K37 + 0x58240003, // 0077 LDCONST R9 K3 + 0x542A0003, // 0078 LDINT R10 4 + 0x7C1C0600, // 0079 CALL R7 3 + 0x8C1C0D25, // 007A GETMET R7 R6 K37 + 0x58240003, // 007B LDCONST R9 K3 + 0x542A0003, // 007C LDINT R10 4 + 0x7C1C0600, // 007D CALL R7 3 + 0x8C1C0B27, // 007E GETMET R7 R5 K39 + 0x5C240C00, // 007F MOVE R9 R6 + 0x7C1C0400, // 0080 CALL R7 2 + 0x88200128, // 0081 GETMBR R8 R0 K40 + 0x8C201129, // 0082 GETMET R8 R8 K41 + 0x5C280E00, // 0083 MOVE R10 R7 + 0x882C032A, // 0084 GETMBR R11 R1 K42 + 0x8830032B, // 0085 GETMBR R12 R1 K43 + 0x4C340000, // 0086 LDNIL R13 + 0x7C200A00, // 0087 CALL R8 5 + 0x88200128, // 0088 GETMBR R8 R0 K40 + 0x8C20112C, // 0089 GETMET R8 R8 K44 + 0x8828012D, // 008A GETMBR R10 R0 K45 + 0x882C012E, // 008B GETMBR R11 R0 K46 + 0x8830011C, // 008C GETMBR R12 R0 K28 + 0x8834011D, // 008D GETMBR R13 R0 K29 + 0x8838011E, // 008E GETMBR R14 R0 K30 + 0x883C0114, // 008F GETMBR R15 R0 K20 + 0x7C200E00, // 0090 CALL R8 7 0x80000000, // 0091 RET 0 }) ) @@ -2264,8 +2288,8 @@ be_local_closure(Matter_Commisioning_Context_parse_Pake3, /* name */ ********************************************************************/ be_local_closure(Matter_Commisioning_Context_process_incoming, /* name */ be_nested_proto( - 9, /* nstack */ - 4, /* argc */ + 7, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -2291,81 +2315,71 @@ be_local_closure(Matter_Commisioning_Context_process_incoming, /* name */ }), be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[74]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x74120006, // 0001 JMPT R4 #0009 - 0xB8120200, // 0002 GETNGBL R4 K1 - 0x8C100902, // 0003 GETMET R4 R4 K2 - 0x58180003, // 0004 LDCONST R6 K3 - 0x581C0004, // 0005 LDCONST R7 K4 - 0x7C100600, // 0006 CALL R4 3 - 0x50100000, // 0007 LDBOOL R4 0 0 - 0x80040800, // 0008 RET 1 R4 - 0xB8120200, // 0009 GETNGBL R4 K1 - 0x8C100902, // 000A GETMET R4 R4 K2 - 0xB81A0C00, // 000B GETNGBL R6 K6 - 0x8C180D07, // 000C GETMET R6 R6 K7 - 0x5C200200, // 000D MOVE R8 R1 - 0x7C180400, // 000E CALL R6 2 - 0x001A0A06, // 000F ADD R6 K5 R6 - 0x581C0008, // 0010 LDCONST R7 K8 - 0x7C100600, // 0011 CALL R4 3 - 0x88100309, // 0012 GETMBR R4 R1 K9 - 0x5416001F, // 0013 LDINT R5 32 - 0x1C100805, // 0014 EQ R4 R4 R5 - 0x78120006, // 0015 JMPF R4 #001D - 0x8C10010A, // 0016 GETMET R4 R0 K10 - 0x5C180200, // 0017 MOVE R6 R1 - 0x5C1C0400, // 0018 MOVE R7 R2 - 0x5C200600, // 0019 MOVE R8 R3 - 0x7C100800, // 001A CALL R4 4 - 0x80040800, // 001B RET 1 R4 - 0x7002002A, // 001C JMP #0048 - 0x88100309, // 001D GETMBR R4 R1 K9 - 0x54160021, // 001E LDINT R5 34 - 0x1C100805, // 001F EQ R4 R4 R5 - 0x78120006, // 0020 JMPF R4 #0028 - 0x8C10010B, // 0021 GETMET R4 R0 K11 - 0x5C180200, // 0022 MOVE R6 R1 - 0x5C1C0400, // 0023 MOVE R7 R2 - 0x5C200600, // 0024 MOVE R8 R3 - 0x7C100800, // 0025 CALL R4 4 - 0x80040800, // 0026 RET 1 R4 - 0x7002001F, // 0027 JMP #0048 - 0x88100309, // 0028 GETMBR R4 R1 K9 - 0x54160023, // 0029 LDINT R5 36 - 0x1C100805, // 002A EQ R4 R4 R5 - 0x78120006, // 002B JMPF R4 #0033 - 0x8C10010C, // 002C GETMET R4 R0 K12 - 0x5C180200, // 002D MOVE R6 R1 - 0x5C1C0400, // 002E MOVE R7 R2 - 0x5C200600, // 002F MOVE R8 R3 - 0x7C100800, // 0030 CALL R4 4 - 0x80040800, // 0031 RET 1 R4 - 0x70020014, // 0032 JMP #0048 - 0x88100309, // 0033 GETMBR R4 R1 K9 - 0x5416002F, // 0034 LDINT R5 48 - 0x1C100805, // 0035 EQ R4 R4 R5 - 0x78120006, // 0036 JMPF R4 #003E - 0x8C10010D, // 0037 GETMET R4 R0 K13 - 0x5C180200, // 0038 MOVE R6 R1 - 0x5C1C0400, // 0039 MOVE R7 R2 - 0x5C200600, // 003A MOVE R8 R3 - 0x7C100800, // 003B CALL R4 4 - 0x80040800, // 003C RET 1 R4 - 0x70020009, // 003D JMP #0048 - 0x88100309, // 003E GETMBR R4 R1 K9 - 0x54160031, // 003F LDINT R5 50 - 0x1C100805, // 0040 EQ R4 R4 R5 - 0x78120005, // 0041 JMPF R4 #0048 - 0x8C10010E, // 0042 GETMET R4 R0 K14 - 0x5C180200, // 0043 MOVE R6 R1 - 0x5C1C0400, // 0044 MOVE R7 R2 - 0x5C200600, // 0045 MOVE R8 R3 - 0x7C100800, // 0046 CALL R4 4 - 0x80040800, // 0047 RET 1 R4 - 0x50100000, // 0048 LDBOOL R4 0 0 - 0x80040800, // 0049 RET 1 R4 + ( &(const binstruction[64]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x740A0006, // 0001 JMPT R2 #0009 + 0xB80A0200, // 0002 GETNGBL R2 K1 + 0x8C080502, // 0003 GETMET R2 R2 K2 + 0x58100003, // 0004 LDCONST R4 K3 + 0x58140004, // 0005 LDCONST R5 K4 + 0x7C080600, // 0006 CALL R2 3 + 0x50080000, // 0007 LDBOOL R2 0 0 + 0x80040400, // 0008 RET 1 R2 + 0xB80A0200, // 0009 GETNGBL R2 K1 + 0x8C080502, // 000A GETMET R2 R2 K2 + 0xB8120C00, // 000B GETNGBL R4 K6 + 0x8C100907, // 000C GETMET R4 R4 K7 + 0x5C180200, // 000D MOVE R6 R1 + 0x7C100400, // 000E CALL R4 2 + 0x00120A04, // 000F ADD R4 K5 R4 + 0x58140008, // 0010 LDCONST R5 K8 + 0x7C080600, // 0011 CALL R2 3 + 0x88080309, // 0012 GETMBR R2 R1 K9 + 0x540E001F, // 0013 LDINT R3 32 + 0x1C080403, // 0014 EQ R2 R2 R3 + 0x780A0004, // 0015 JMPF R2 #001B + 0x8C08010A, // 0016 GETMET R2 R0 K10 + 0x5C100200, // 0017 MOVE R4 R1 + 0x7C080400, // 0018 CALL R2 2 + 0x80040400, // 0019 RET 1 R2 + 0x70020022, // 001A JMP #003E + 0x88080309, // 001B GETMBR R2 R1 K9 + 0x540E0021, // 001C LDINT R3 34 + 0x1C080403, // 001D EQ R2 R2 R3 + 0x780A0004, // 001E JMPF R2 #0024 + 0x8C08010B, // 001F GETMET R2 R0 K11 + 0x5C100200, // 0020 MOVE R4 R1 + 0x7C080400, // 0021 CALL R2 2 + 0x80040400, // 0022 RET 1 R2 + 0x70020019, // 0023 JMP #003E + 0x88080309, // 0024 GETMBR R2 R1 K9 + 0x540E0023, // 0025 LDINT R3 36 + 0x1C080403, // 0026 EQ R2 R2 R3 + 0x780A0004, // 0027 JMPF R2 #002D + 0x8C08010C, // 0028 GETMET R2 R0 K12 + 0x5C100200, // 0029 MOVE R4 R1 + 0x7C080400, // 002A CALL R2 2 + 0x80040400, // 002B RET 1 R2 + 0x70020010, // 002C JMP #003E + 0x88080309, // 002D GETMBR R2 R1 K9 + 0x540E002F, // 002E LDINT R3 48 + 0x1C080403, // 002F EQ R2 R2 R3 + 0x780A0004, // 0030 JMPF R2 #0036 + 0x8C08010D, // 0031 GETMET R2 R0 K13 + 0x5C100200, // 0032 MOVE R4 R1 + 0x7C080400, // 0033 CALL R2 2 + 0x80040400, // 0034 RET 1 R2 + 0x70020007, // 0035 JMP #003E + 0x88080309, // 0036 GETMBR R2 R1 K9 + 0x540E0031, // 0037 LDINT R3 50 + 0x1C080403, // 0038 EQ R2 R2 R3 + 0x780A0003, // 0039 JMPF R2 #003E + 0x8C08010E, // 003A GETMET R2 R0 K14 + 0x5C100200, // 003B MOVE R4 R1 + 0x7C080400, // 003C CALL R2 2 + 0x80040400, // 003D RET 1 R2 + 0x50080000, // 003E LDBOOL R2 0 0 + 0x80040400, // 003F RET 1 R2 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h index 8040cef05..982db1afd 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Device.h @@ -7,196 +7,11 @@ extern const bclass be_class_Matter_Device; /******************************************************************** -** Solidified function: msg_send +** Solidified function: compute_manual_pairing_code ********************************************************************/ -be_local_closure(Matter_Device_msg_send, /* name */ +be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */ be_nested_proto( 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(send_response), - }), - be_str_weak(msg_send), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x88140100, // 0000 GETMBR R5 R0 K0 - 0x8C140B01, // 0001 GETMET R5 R5 K1 - 0x5C1C0200, // 0002 MOVE R7 R1 - 0x5C200400, // 0003 MOVE R8 R2 - 0x5C240600, // 0004 MOVE R9 R3 - 0x5C280800, // 0005 MOVE R10 R4 - 0x7C140A00, // 0006 CALL R5 5 - 0x80040A00, // 0007 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_dicovery_deferred -********************************************************************/ -be_local_closure(Matter_Device_start_operational_dicovery_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_operational_dicovery), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_operational_dicovery_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_commissioning_complete_deferred -********************************************************************/ -be_local_closure(Matter_Device_start_commissioning_complete_deferred, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 1]) { - be_nested_proto( - 3, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 2]) { /* upvals */ - be_local_const_upval(1, 0), - be_local_const_upval(1, 1), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(start_commissioning_complete), - }), - be_str_weak(_X3Clambda_X3E), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080001, // 0002 GETUPV R2 U1 - 0x7C000400, // 0003 CALL R0 2 - 0x80040000, // 0004 RET 1 R0 - }) - ), - }), - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(set_timer), - /* K2 */ be_const_int(0), - }), - be_str_weak(start_commissioning_complete_deferred), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x58100002, // 0002 LDCONST R4 K2 - 0x84140000, // 0003 CLOSURE R5 P0 - 0x7C080600, // 0004 CALL R2 3 - 0xA0000000, // 0005 CLOSE R0 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: packet_ack -********************************************************************/ -be_local_closure(Matter_Device_packet_ack, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(packet_ack), - }), - be_str_weak(packet_ack), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 - 0x7C080400, // 0003 CALL R2 2 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: stop -********************************************************************/ -be_local_closure(Matter_Device_stop, /* name */ - be_nested_proto( - 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -204,19 +19,484 @@ be_local_closure(Matter_Device_stop, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(stop), + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(discriminator), + /* K2 */ be_nested_str_weak(passcode), + /* K3 */ be_nested_str_weak(format), + /* K4 */ be_nested_str_weak(_X251i_X2505i_X2504i), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(Verhoeff), + /* K7 */ be_nested_str_weak(checksum), }), - be_str_weak(stop), + be_str_weak(compute_manual_pairing_code), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060002, // 0001 JMPF R1 #0005 - 0x88040100, // 0002 GETMBR R1 R0 K0 - 0x8C040301, // 0003 GETMET R1 R1 K1 - 0x7C040200, // 0004 CALL R1 1 - 0x80000000, // 0005 RET 0 + ( &(const binstruction[31]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x540E0FFE, // 0002 LDINT R3 4095 + 0x2C080403, // 0003 AND R2 R2 R3 + 0x540E0009, // 0004 LDINT R3 10 + 0x3C080403, // 0005 SHR R2 R2 R3 + 0x880C0101, // 0006 GETMBR R3 R0 K1 + 0x541202FF, // 0007 LDINT R4 768 + 0x2C0C0604, // 0008 AND R3 R3 R4 + 0x54120005, // 0009 LDINT R4 6 + 0x380C0604, // 000A SHL R3 R3 R4 + 0x88100102, // 000B GETMBR R4 R0 K2 + 0x54163FFE, // 000C LDINT R5 16383 + 0x2C100805, // 000D AND R4 R4 R5 + 0x300C0604, // 000E OR R3 R3 R4 + 0x88100102, // 000F GETMBR R4 R0 K2 + 0x5416000D, // 0010 LDINT R5 14 + 0x3C100805, // 0011 SHR R4 R4 R5 + 0x8C140303, // 0012 GETMET R5 R1 K3 + 0x581C0004, // 0013 LDCONST R7 K4 + 0x5C200400, // 0014 MOVE R8 R2 + 0x5C240600, // 0015 MOVE R9 R3 + 0x5C280800, // 0016 MOVE R10 R4 + 0x7C140A00, // 0017 CALL R5 5 + 0xB81A0A00, // 0018 GETNGBL R6 K5 + 0x88180D06, // 0019 GETMBR R6 R6 K6 + 0x8C180D07, // 001A GETMET R6 R6 K7 + 0x5C200A00, // 001B MOVE R8 R5 + 0x7C180400, // 001C CALL R6 2 + 0x00140A06, // 001D ADD R5 R5 R6 + 0x80040A00, // 001E RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_attribute_expansion +********************************************************************/ +be_local_closure(Matter_Device_process_attribute_expansion, /* name */ + be_nested_proto( + 33, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[25]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(endpoint), + /* K2 */ be_nested_str_weak(cluster), + /* K3 */ be_nested_str_weak(attribute), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(format), + /* K7 */ be_nested_str_weak(MTR_X3A_X20process_attribute_expansion_X20_X25s), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(plugins), + /* K10 */ be_nested_str_weak(get_endpoints), + /* K11 */ be_nested_str_weak(MTR_X3A_X20ep_list_X20_X25s_X20_X25s), + /* K12 */ be_nested_str_weak(find), + /* K13 */ be_nested_str_weak(get_cluster_list), + /* K14 */ be_nested_str_weak(MTR_X3A_X20cluster_list_X20_X25s_X20_X25s), + /* K15 */ be_nested_str_weak(get_attribute_list), + /* K16 */ be_nested_str_weak(MTR_X3A_X20attr_list_X20_X25s_X20_X25s), + /* K17 */ be_nested_str_weak(MTR_X3A_X20expansion_X20_X5B_X2502X_X5D_X2504X_X2F_X2504X), + /* K18 */ be_nested_str_weak(stop_iteration), + /* K19 */ be_nested_str_weak(status), + /* K20 */ be_nested_str_weak(matter), + /* K21 */ be_nested_str_weak(UNSUPPORTED_ENDPOINT), + /* K22 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + /* K23 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K24 */ be_nested_str_weak(UNREPORTABLE_ATTRIBUTE), + }), + be_str_weak(process_attribute_expansion), + &be_const_str_solidified, + ( &(const binstruction[216]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x88100301, // 0001 GETMBR R4 R1 K1 + 0x60140012, // 0002 GETGBL R5 G18 + 0x7C140000, // 0003 CALL R5 0 + 0x40180A04, // 0004 CONNECT R6 R5 R4 + 0x50180000, // 0005 LDBOOL R6 0 0 + 0x881C0302, // 0006 GETMBR R7 R1 K2 + 0x60200012, // 0007 GETGBL R8 G18 + 0x7C200000, // 0008 CALL R8 0 + 0x40241007, // 0009 CONNECT R9 R8 R7 + 0x50240000, // 000A LDBOOL R9 0 0 + 0x88280303, // 000B GETMBR R10 R1 K3 + 0x602C0012, // 000C GETGBL R11 G18 + 0x7C2C0000, // 000D CALL R11 0 + 0x4030160A, // 000E CONNECT R12 R11 R10 + 0x50300000, // 000F LDBOOL R12 0 0 + 0x88340301, // 0010 GETMBR R13 R1 K1 + 0x4C380000, // 0011 LDNIL R14 + 0x20341A0E, // 0012 NE R13 R13 R14 + 0x78360007, // 0013 JMPF R13 #001C + 0x88340302, // 0014 GETMBR R13 R1 K2 + 0x4C380000, // 0015 LDNIL R14 + 0x20341A0E, // 0016 NE R13 R13 R14 + 0x78360003, // 0017 JMPF R13 #001C + 0x88340303, // 0018 GETMBR R13 R1 K3 + 0x4C380000, // 0019 LDNIL R14 + 0x20341A0E, // 001A NE R13 R13 R14 + 0x74360000, // 001B JMPT R13 #001D + 0x50340001, // 001C LDBOOL R13 0 1 + 0x50340200, // 001D LDBOOL R13 1 0 + 0xB83A0800, // 001E GETNGBL R14 K4 + 0x8C381D05, // 001F GETMET R14 R14 K5 + 0x8C400706, // 0020 GETMET R16 R3 K6 + 0x58480007, // 0021 LDCONST R18 K7 + 0x604C0008, // 0022 GETGBL R19 G8 + 0x5C500200, // 0023 MOVE R20 R1 + 0x7C4C0200, // 0024 CALL R19 1 + 0x7C400600, // 0025 CALL R16 3 + 0x58440008, // 0026 LDCONST R17 K8 + 0x7C380600, // 0027 CALL R14 3 + 0x60380010, // 0028 GETGBL R14 G16 + 0x883C0109, // 0029 GETMBR R15 R0 K9 + 0x7C380200, // 002A CALL R14 1 + 0xA802008C, // 002B EXBLK 0 #00B9 + 0x5C3C1C00, // 002C MOVE R15 R14 + 0x7C3C0000, // 002D CALL R15 0 + 0x8C401F0A, // 002E GETMET R16 R15 K10 + 0x7C400200, // 002F CALL R16 1 + 0xB8460800, // 0030 GETNGBL R17 K4 + 0x8C442305, // 0031 GETMET R17 R17 K5 + 0x8C4C0706, // 0032 GETMET R19 R3 K6 + 0x5854000B, // 0033 LDCONST R21 K11 + 0x60580008, // 0034 GETGBL R22 G8 + 0x5C5C1E00, // 0035 MOVE R23 R15 + 0x7C580200, // 0036 CALL R22 1 + 0x605C0008, // 0037 GETGBL R23 G8 + 0x5C602000, // 0038 MOVE R24 R16 + 0x7C5C0200, // 0039 CALL R23 1 + 0x7C4C0800, // 003A CALL R19 4 + 0x58500008, // 003B LDCONST R20 K8 + 0x7C440600, // 003C CALL R17 3 + 0x4C440000, // 003D LDNIL R17 + 0x20440811, // 003E NE R17 R4 R17 + 0x78460009, // 003F JMPF R17 #004A + 0x8C44210C, // 0040 GETMET R17 R16 K12 + 0x5C4C0800, // 0041 MOVE R19 R4 + 0x7C440400, // 0042 CALL R17 2 + 0x4C480000, // 0043 LDNIL R18 + 0x20442212, // 0044 NE R17 R17 R18 + 0x78460002, // 0045 JMPF R17 #0049 + 0x5C400A00, // 0046 MOVE R16 R5 + 0x50180200, // 0047 LDBOOL R6 1 0 + 0x70020000, // 0048 JMP #004A + 0x7001FFE1, // 0049 JMP #002C + 0x60440010, // 004A GETGBL R17 G16 + 0x5C482000, // 004B MOVE R18 R16 + 0x7C440200, // 004C CALL R17 1 + 0xA8020066, // 004D EXBLK 0 #00B5 + 0x5C482200, // 004E MOVE R18 R17 + 0x7C480000, // 004F CALL R18 0 + 0x8C4C1F0D, // 0050 GETMET R19 R15 K13 + 0x5C542400, // 0051 MOVE R21 R18 + 0x7C4C0400, // 0052 CALL R19 2 + 0xB8520800, // 0053 GETNGBL R20 K4 + 0x8C502905, // 0054 GETMET R20 R20 K5 + 0x8C580706, // 0055 GETMET R22 R3 K6 + 0x5860000E, // 0056 LDCONST R24 K14 + 0x60640008, // 0057 GETGBL R25 G8 + 0x5C682400, // 0058 MOVE R26 R18 + 0x7C640200, // 0059 CALL R25 1 + 0x60680008, // 005A GETGBL R26 G8 + 0x5C6C2600, // 005B MOVE R27 R19 + 0x7C680200, // 005C CALL R26 1 + 0x7C580800, // 005D CALL R22 4 + 0x585C0008, // 005E LDCONST R23 K8 + 0x7C500600, // 005F CALL R20 3 + 0x4C500000, // 0060 LDNIL R20 + 0x20500E14, // 0061 NE R20 R7 R20 + 0x78520009, // 0062 JMPF R20 #006D + 0x8C50270C, // 0063 GETMET R20 R19 K12 + 0x5C580E00, // 0064 MOVE R22 R7 + 0x7C500400, // 0065 CALL R20 2 + 0x4C540000, // 0066 LDNIL R21 + 0x20502815, // 0067 NE R20 R20 R21 + 0x78520002, // 0068 JMPF R20 #006C + 0x5C4C1000, // 0069 MOVE R19 R8 + 0x50240200, // 006A LDBOOL R9 1 0 + 0x70020000, // 006B JMP #006D + 0x7001FFE0, // 006C JMP #004E + 0x60500010, // 006D GETGBL R20 G16 + 0x5C542600, // 006E MOVE R21 R19 + 0x7C500200, // 006F CALL R20 1 + 0xA802003F, // 0070 EXBLK 0 #00B1 + 0x5C542800, // 0071 MOVE R21 R20 + 0x7C540000, // 0072 CALL R21 0 + 0x8C581F0F, // 0073 GETMET R22 R15 K15 + 0x5C602400, // 0074 MOVE R24 R18 + 0x5C640E00, // 0075 MOVE R25 R7 + 0x7C580600, // 0076 CALL R22 3 + 0xB85E0800, // 0077 GETNGBL R23 K4 + 0x8C5C2F05, // 0078 GETMET R23 R23 K5 + 0x8C640706, // 0079 GETMET R25 R3 K6 + 0x586C0010, // 007A LDCONST R27 K16 + 0x60700008, // 007B GETGBL R28 G8 + 0x5C742A00, // 007C MOVE R29 R21 + 0x7C700200, // 007D CALL R28 1 + 0x60740008, // 007E GETGBL R29 G8 + 0x5C782C00, // 007F MOVE R30 R22 + 0x7C740200, // 0080 CALL R29 1 + 0x7C640800, // 0081 CALL R25 4 + 0x58680008, // 0082 LDCONST R26 K8 + 0x7C5C0600, // 0083 CALL R23 3 + 0x4C5C0000, // 0084 LDNIL R23 + 0x205C1417, // 0085 NE R23 R10 R23 + 0x785E0028, // 0086 JMPF R23 #00B0 + 0x8C5C2D0C, // 0087 GETMET R23 R22 K12 + 0x5C641400, // 0088 MOVE R25 R10 + 0x7C5C0400, // 0089 CALL R23 2 + 0x4C600000, // 008A LDNIL R24 + 0x205C2E18, // 008B NE R23 R23 R24 + 0x785E0002, // 008C JMPF R23 #0090 + 0x5C581600, // 008D MOVE R22 R11 + 0x50300200, // 008E LDBOOL R12 1 0 + 0x70020000, // 008F JMP #0091 + 0x7001FFDF, // 0090 JMP #0071 + 0x605C0010, // 0091 GETGBL R23 G16 + 0x5C602C00, // 0092 MOVE R24 R22 + 0x7C5C0200, // 0093 CALL R23 1 + 0xA8020017, // 0094 EXBLK 0 #00AD + 0x5C602E00, // 0095 MOVE R24 R23 + 0x7C600000, // 0096 CALL R24 0 + 0xB8660800, // 0097 GETNGBL R25 K4 + 0x8C643305, // 0098 GETMET R25 R25 K5 + 0x8C6C0706, // 0099 GETMET R27 R3 K6 + 0x58740011, // 009A LDCONST R29 K17 + 0x5C782400, // 009B MOVE R30 R18 + 0x5C7C2A00, // 009C MOVE R31 R21 + 0x5C803000, // 009D MOVE R32 R24 + 0x7C6C0A00, // 009E CALL R27 5 + 0x58700008, // 009F LDCONST R28 K8 + 0x7C640600, // 00A0 CALL R25 3 + 0x90060212, // 00A1 SETMBR R1 K1 R18 + 0x90060415, // 00A2 SETMBR R1 K2 R21 + 0x90060618, // 00A3 SETMBR R1 K3 R24 + 0x5C640400, // 00A4 MOVE R25 R2 + 0x5C681E00, // 00A5 MOVE R26 R15 + 0x5C6C0200, // 00A6 MOVE R27 R1 + 0x5C701A00, // 00A7 MOVE R28 R13 + 0x7C640600, // 00A8 CALL R25 3 + 0x78660001, // 00A9 JMPF R25 #00AC + 0xA8040004, // 00AA EXBLK 1 4 + 0x80003400, // 00AB RET 0 + 0x7001FFE7, // 00AC JMP #0095 + 0x585C0012, // 00AD LDCONST R23 K18 + 0xAC5C0200, // 00AE CATCH R23 1 0 + 0xB0080000, // 00AF RAISE 2 R0 R0 + 0x7001FFBF, // 00B0 JMP #0071 + 0x58500012, // 00B1 LDCONST R20 K18 + 0xAC500200, // 00B2 CATCH R20 1 0 + 0xB0080000, // 00B3 RAISE 2 R0 R0 + 0x7001FF98, // 00B4 JMP #004E + 0x58440012, // 00B5 LDCONST R17 K18 + 0xAC440200, // 00B6 CATCH R17 1 0 + 0xB0080000, // 00B7 RAISE 2 R0 R0 + 0x7001FF72, // 00B8 JMP #002C + 0x58380012, // 00B9 LDCONST R14 K18 + 0xAC380200, // 00BA CATCH R14 1 0 + 0xB0080000, // 00BB RAISE 2 R0 R0 + 0x78360019, // 00BC JMPF R13 #00D7 + 0x5C380C00, // 00BD MOVE R14 R6 + 0x743A0003, // 00BE JMPT R14 #00C3 + 0xB83A2800, // 00BF GETNGBL R14 K20 + 0x88381D15, // 00C0 GETMBR R14 R14 K21 + 0x9006260E, // 00C1 SETMBR R1 K19 R14 + 0x7002000E, // 00C2 JMP #00D2 + 0x5C381200, // 00C3 MOVE R14 R9 + 0x743A0003, // 00C4 JMPT R14 #00C9 + 0xB83A2800, // 00C5 GETNGBL R14 K20 + 0x88381D16, // 00C6 GETMBR R14 R14 K22 + 0x9006260E, // 00C7 SETMBR R1 K19 R14 + 0x70020008, // 00C8 JMP #00D2 + 0x5C381800, // 00C9 MOVE R14 R12 + 0x743A0003, // 00CA JMPT R14 #00CF + 0xB83A2800, // 00CB GETNGBL R14 K20 + 0x88381D17, // 00CC GETMBR R14 R14 K23 + 0x9006260E, // 00CD SETMBR R1 K19 R14 + 0x70020002, // 00CE JMP #00D2 + 0xB83A2800, // 00CF GETNGBL R14 K20 + 0x88381D18, // 00D0 GETMBR R14 R14 K24 + 0x9006260E, // 00D1 SETMBR R1 K19 R14 + 0x5C380400, // 00D2 MOVE R14 R2 + 0x4C3C0000, // 00D3 LDNIL R15 + 0x5C400200, // 00D4 MOVE R16 R1 + 0x50440200, // 00D5 LDBOOL R17 1 0 + 0x7C380600, // 00D6 CALL R14 3 + 0x80000000, // 00D7 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: save_param +********************************************************************/ +be_local_closure(Matter_Device_save_param, /* name */ + be_nested_proto( + 10, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[15]) { /* constants */ + /* K0 */ be_nested_str_weak(json), + /* K1 */ be_nested_str_weak(dump), + /* K2 */ be_nested_str_weak(distinguish), + /* K3 */ be_nested_str_weak(discriminator), + /* K4 */ be_nested_str_weak(passcode), + /* K5 */ be_nested_str_weak(string), + /* K6 */ be_nested_str_weak(FILENAME), + /* K7 */ be_nested_str_weak(w), + /* K8 */ be_nested_str_weak(write), + /* K9 */ be_nested_str_weak(close), + /* K10 */ be_nested_str_weak(tasmota), + /* K11 */ be_nested_str_weak(log), + /* K12 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), + /* K13 */ be_nested_str_weak(_X7C), + /* K14 */ be_const_int(2), + }), + be_str_weak(save_param), + &be_const_str_solidified, + ( &(const binstruction[43]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x8C080301, // 0001 GETMET R2 R1 K1 + 0x60100013, // 0002 GETGBL R4 G19 + 0x7C100000, // 0003 CALL R4 0 + 0x88140103, // 0004 GETMBR R5 R0 K3 + 0x98120405, // 0005 SETIDX R4 K2 R5 + 0x88140104, // 0006 GETMBR R5 R0 K4 + 0x98120805, // 0007 SETIDX R4 K4 R5 + 0x7C080400, // 0008 CALL R2 2 + 0xA802000D, // 0009 EXBLK 0 #0018 + 0xA40E0A00, // 000A IMPORT R3 K5 + 0x60100011, // 000B GETGBL R4 G17 + 0x88140106, // 000C GETMBR R5 R0 K6 + 0x58180007, // 000D LDCONST R6 K7 + 0x7C100400, // 000E CALL R4 2 + 0x8C140908, // 000F GETMET R5 R4 K8 + 0x5C1C0400, // 0010 MOVE R7 R2 + 0x7C140400, // 0011 CALL R5 2 + 0x8C140909, // 0012 GETMET R5 R4 K9 + 0x7C140200, // 0013 CALL R5 1 + 0xA8040001, // 0014 EXBLK 1 1 + 0x80040400, // 0015 RET 1 R2 + 0xA8040001, // 0016 EXBLK 1 1 + 0x70020011, // 0017 JMP #002A + 0xAC0C0002, // 0018 CATCH R3 0 2 + 0x7002000E, // 0019 JMP #0029 + 0xB8161400, // 001A GETNGBL R5 K10 + 0x8C140B0B, // 001B GETMET R5 R5 K11 + 0x601C0008, // 001C GETGBL R7 G8 + 0x5C200600, // 001D MOVE R8 R3 + 0x7C1C0200, // 001E CALL R7 1 + 0x001E1807, // 001F ADD R7 K12 R7 + 0x001C0F0D, // 0020 ADD R7 R7 K13 + 0x60200008, // 0021 GETGBL R8 G8 + 0x5C240800, // 0022 MOVE R9 R4 + 0x7C200200, // 0023 CALL R8 1 + 0x001C0E08, // 0024 ADD R7 R7 R8 + 0x5820000E, // 0025 LDCONST R8 K14 + 0x7C140600, // 0026 CALL R5 3 + 0x80040400, // 0027 RET 1 R2 + 0x70020000, // 0028 JMP #002A + 0xB0080000, // 0029 RAISE 2 R0 R0 + 0x80000000, // 002A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_udp +********************************************************************/ +be_local_closure(Matter_Device_start_udp, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(msg_received), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x8C0C0700, // 0001 GETMET R3 R3 K0 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x7C0C0800, // 0005 CALL R3 4 + 0x80040600, // 0006 RET 1 R3 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[ 9]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20starting_X20UDP_X20server_X20on_X20port_X3A_X20), + /* K4 */ be_const_int(2), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(UDPServer), + /* K7 */ be_nested_str_weak(), + /* K8 */ be_nested_str_weak(start), + }), + be_str_weak(start_udp), + &be_const_str_solidified, + ( &(const binstruction[27]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x780A0000, // 0001 JMPF R2 #0003 + 0x80000400, // 0002 RET 0 + 0x4C080000, // 0003 LDNIL R2 + 0x1C080202, // 0004 EQ R2 R1 R2 + 0x780A0000, // 0005 JMPF R2 #0007 + 0x540615A3, // 0006 LDINT R1 5540 + 0xB80A0200, // 0007 GETNGBL R2 K1 + 0x8C080502, // 0008 GETMET R2 R2 K2 + 0x60100008, // 0009 GETGBL R4 G8 + 0x5C140200, // 000A MOVE R5 R1 + 0x7C100200, // 000B CALL R4 1 + 0x00120604, // 000C ADD R4 K3 R4 + 0x58140004, // 000D LDCONST R5 K4 + 0x7C080600, // 000E CALL R2 3 + 0xB80A0A00, // 000F GETNGBL R2 K5 + 0x8C080506, // 0010 GETMET R2 R2 K6 + 0x58100007, // 0011 LDCONST R4 K7 + 0x5C140200, // 0012 MOVE R5 R1 + 0x7C080600, // 0013 CALL R2 3 + 0x90020002, // 0014 SETMBR R0 K0 R2 + 0x88080100, // 0015 GETMBR R2 R0 K0 + 0x8C080508, // 0016 GETMET R2 R2 K8 + 0x84100000, // 0017 CLOSURE R4 P0 + 0x7C080400, // 0018 CALL R2 2 + 0xA0000000, // 0019 CLOSE R0 + 0x80000000, // 001A RET 0 }) ) ); @@ -340,250 +620,9 @@ be_local_closure(Matter_Device_load_param, /* name */ /******************************************************************** -** Solidified function: every_second +** Solidified function: start_operational_dicovery_deferred ********************************************************************/ -be_local_closure(Matter_Device_every_second, /* name */ - be_nested_proto( - 3, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(every_second), - /* K2 */ be_nested_str_weak(msg_handler), - }), - be_str_weak(every_second), - &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x88040102, // 0003 GETMBR R1 R0 K2 - 0x8C040301, // 0004 GETMET R1 R1 K1 - 0x7C040200, // 0005 CALL R1 1 - 0x80000000, // 0006 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: save_param -********************************************************************/ -be_local_closure(Matter_Device_save_param, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[15]) { /* constants */ - /* K0 */ be_nested_str_weak(json), - /* K1 */ be_nested_str_weak(dump), - /* K2 */ be_nested_str_weak(distinguish), - /* K3 */ be_nested_str_weak(discriminator), - /* K4 */ be_nested_str_weak(passcode), - /* K5 */ be_nested_str_weak(string), - /* K6 */ be_nested_str_weak(FILENAME), - /* K7 */ be_nested_str_weak(w), - /* K8 */ be_nested_str_weak(write), - /* K9 */ be_nested_str_weak(close), - /* K10 */ be_nested_str_weak(tasmota), - /* K11 */ be_nested_str_weak(log), - /* K12 */ be_nested_str_weak(MTR_X3A_X20Session_Store_X3A_X3Asave_X20Exception_X3A), - /* K13 */ be_nested_str_weak(_X7C), - /* K14 */ be_const_int(2), - }), - be_str_weak(save_param), - &be_const_str_solidified, - ( &(const binstruction[43]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x8C080301, // 0001 GETMET R2 R1 K1 - 0x60100013, // 0002 GETGBL R4 G19 - 0x7C100000, // 0003 CALL R4 0 - 0x88140103, // 0004 GETMBR R5 R0 K3 - 0x98120405, // 0005 SETIDX R4 K2 R5 - 0x88140104, // 0006 GETMBR R5 R0 K4 - 0x98120805, // 0007 SETIDX R4 K4 R5 - 0x7C080400, // 0008 CALL R2 2 - 0xA802000D, // 0009 EXBLK 0 #0018 - 0xA40E0A00, // 000A IMPORT R3 K5 - 0x60100011, // 000B GETGBL R4 G17 - 0x88140106, // 000C GETMBR R5 R0 K6 - 0x58180007, // 000D LDCONST R6 K7 - 0x7C100400, // 000E CALL R4 2 - 0x8C140908, // 000F GETMET R5 R4 K8 - 0x5C1C0400, // 0010 MOVE R7 R2 - 0x7C140400, // 0011 CALL R5 2 - 0x8C140909, // 0012 GETMET R5 R4 K9 - 0x7C140200, // 0013 CALL R5 1 - 0xA8040001, // 0014 EXBLK 1 1 - 0x80040400, // 0015 RET 1 R2 - 0xA8040001, // 0016 EXBLK 1 1 - 0x70020011, // 0017 JMP #002A - 0xAC0C0002, // 0018 CATCH R3 0 2 - 0x7002000E, // 0019 JMP #0029 - 0xB8161400, // 001A GETNGBL R5 K10 - 0x8C140B0B, // 001B GETMET R5 R5 K11 - 0x601C0008, // 001C GETGBL R7 G8 - 0x5C200600, // 001D MOVE R8 R3 - 0x7C1C0200, // 001E CALL R7 1 - 0x001E1807, // 001F ADD R7 K12 R7 - 0x001C0F0D, // 0020 ADD R7 R7 K13 - 0x60200008, // 0021 GETGBL R8 G8 - 0x5C240800, // 0022 MOVE R9 R4 - 0x7C200200, // 0023 CALL R8 1 - 0x001C0E08, // 0024 ADD R7 R7 R8 - 0x5820000E, // 0025 LDCONST R8 K14 - 0x7C140600, // 0026 CALL R5 3 - 0x80040400, // 0027 RET 1 R2 - 0x70020000, // 0028 JMP #002A - 0xB0080000, // 0029 RAISE 2 R0 R0 - 0x80000000, // 002A RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_operational_dicovery -********************************************************************/ -be_local_closure(Matter_Device_start_operational_dicovery, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[13]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(mdns), - /* K2 */ be_nested_str_weak(string), - /* K3 */ be_nested_str_weak(salt), - /* K4 */ be_nested_str_weak(w0), - /* K5 */ be_nested_str_weak(w1), - /* K6 */ be_nested_str_weak(L), - /* K7 */ be_nested_str_weak(set_no_expiration), - /* K8 */ be_nested_str_weak(set_persist), - /* K9 */ be_nested_str_weak(close), - /* K10 */ be_nested_str_weak(sessions), - /* K11 */ be_nested_str_weak(save), - /* K12 */ be_nested_str_weak(mdns_announce_op_discovery), - }), - be_str_weak(start_operational_dicovery), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0xA40A0000, // 0000 IMPORT R2 K0 - 0xA40E0200, // 0001 IMPORT R3 K1 - 0xA4120400, // 0002 IMPORT R4 K2 - 0x4C140000, // 0003 LDNIL R5 - 0x90020605, // 0004 SETMBR R0 K3 R5 - 0x4C140000, // 0005 LDNIL R5 - 0x90020805, // 0006 SETMBR R0 K4 R5 - 0x4C140000, // 0007 LDNIL R5 - 0x90020A05, // 0008 SETMBR R0 K5 R5 - 0x4C140000, // 0009 LDNIL R5 - 0x90020C05, // 000A SETMBR R0 K6 R5 - 0x8C140307, // 000B GETMET R5 R1 K7 - 0x7C140200, // 000C CALL R5 1 - 0x8C140308, // 000D GETMET R5 R1 K8 - 0x501C0200, // 000E LDBOOL R7 1 0 - 0x7C140400, // 000F CALL R5 2 - 0x8C140309, // 0010 GETMET R5 R1 K9 - 0x7C140200, // 0011 CALL R5 1 - 0x8814010A, // 0012 GETMBR R5 R0 K10 - 0x8C140B0B, // 0013 GETMET R5 R5 K11 - 0x7C140200, // 0014 CALL R5 1 - 0x8C14010C, // 0015 GETMET R5 R0 K12 - 0x5C1C0200, // 0016 MOVE R7 R1 - 0x7C140400, // 0017 CALL R5 2 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: compute_manual_pairing_code -********************************************************************/ -be_local_closure(Matter_Device_compute_manual_pairing_code, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(discriminator), - /* K2 */ be_nested_str_weak(passcode), - /* K3 */ be_nested_str_weak(format), - /* K4 */ be_nested_str_weak(_X251i_X2505i_X2504i), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(Verhoeff), - /* K7 */ be_nested_str_weak(checksum), - }), - be_str_weak(compute_manual_pairing_code), - &be_const_str_solidified, - ( &(const binstruction[31]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x540E0FFE, // 0002 LDINT R3 4095 - 0x2C080403, // 0003 AND R2 R2 R3 - 0x540E0009, // 0004 LDINT R3 10 - 0x3C080403, // 0005 SHR R2 R2 R3 - 0x880C0101, // 0006 GETMBR R3 R0 K1 - 0x541202FF, // 0007 LDINT R4 768 - 0x2C0C0604, // 0008 AND R3 R3 R4 - 0x54120005, // 0009 LDINT R4 6 - 0x380C0604, // 000A SHL R3 R3 R4 - 0x88100102, // 000B GETMBR R4 R0 K2 - 0x54163FFE, // 000C LDINT R5 16383 - 0x2C100805, // 000D AND R4 R4 R5 - 0x300C0604, // 000E OR R3 R3 R4 - 0x88100102, // 000F GETMBR R4 R0 K2 - 0x5416000D, // 0010 LDINT R5 14 - 0x3C100805, // 0011 SHR R4 R4 R5 - 0x8C140303, // 0012 GETMET R5 R1 K3 - 0x581C0004, // 0013 LDCONST R7 K4 - 0x5C200400, // 0014 MOVE R8 R2 - 0x5C240600, // 0015 MOVE R9 R3 - 0x5C280800, // 0016 MOVE R10 R4 - 0x7C140A00, // 0017 CALL R5 5 - 0xB81A0A00, // 0018 GETNGBL R6 K5 - 0x88180D06, // 0019 GETMBR R6 R6 K6 - 0x8C180D07, // 001A GETMET R6 R6 K7 - 0x5C200A00, // 001B MOVE R8 R5 - 0x7C180400, // 001C CALL R6 2 - 0x00140A06, // 001D ADD R5 R5 R6 - 0x80040A00, // 001E RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_udp -********************************************************************/ -be_local_closure(Matter_Device_start_udp, /* name */ +be_local_closure(Matter_Device_start_operational_dicovery_deferred, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -593,74 +632,47 @@ be_local_closure(Matter_Device_start_udp, /* name */ 1, /* has sup protos */ ( &(const struct bproto*[ 1]) { be_nested_proto( - 8, /* nstack */ - 3, /* argc */ + 3, /* nstack */ + 0, /* argc */ 0, /* varg */ 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ be_local_const_upval(1, 0), + be_local_const_upval(1, 1), }), 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(msg_received), + /* K0 */ be_nested_str_weak(start_operational_dicovery), }), be_str_weak(_X3Clambda_X3E), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x680C0000, // 0000 GETUPV R3 U0 - 0x8C0C0700, // 0001 GETMET R3 R3 K0 - 0x5C140000, // 0002 MOVE R5 R0 - 0x5C180200, // 0003 MOVE R6 R1 - 0x5C1C0400, // 0004 MOVE R7 R2 - 0x7C0C0800, // 0005 CALL R3 4 - 0x80040600, // 0006 RET 1 R3 + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 }) ), }), 1, /* has constants */ - ( &(const bvalue[ 9]) { /* constants */ - /* K0 */ be_nested_str_weak(udp_server), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20starting_X20UDP_X20server_X20on_X20port_X3A_X20), - /* K4 */ be_const_int(2), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(UDPServer), - /* K7 */ be_nested_str_weak(), - /* K8 */ be_nested_str_weak(start), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), }), - be_str_weak(start_udp), + be_str_weak(start_operational_dicovery_deferred), &be_const_str_solidified, - ( &(const binstruction[27]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x780A0000, // 0001 JMPF R2 #0003 - 0x80000400, // 0002 RET 0 - 0x4C080000, // 0003 LDNIL R2 - 0x1C080202, // 0004 EQ R2 R1 R2 - 0x780A0000, // 0005 JMPF R2 #0007 - 0x540615A3, // 0006 LDINT R1 5540 - 0xB80A0200, // 0007 GETNGBL R2 K1 - 0x8C080502, // 0008 GETMET R2 R2 K2 - 0x60100008, // 0009 GETGBL R4 G8 - 0x5C140200, // 000A MOVE R5 R1 - 0x7C100200, // 000B CALL R4 1 - 0x00120604, // 000C ADD R4 K3 R4 - 0x58140004, // 000D LDCONST R5 K4 - 0x7C080600, // 000E CALL R2 3 - 0xB80A0A00, // 000F GETNGBL R2 K5 - 0x8C080506, // 0010 GETMET R2 R2 K6 - 0x58100007, // 0011 LDCONST R4 K7 - 0x5C140200, // 0012 MOVE R5 R1 - 0x7C080600, // 0013 CALL R2 3 - 0x90020002, // 0014 SETMBR R0 K0 R2 - 0x88080100, // 0015 GETMBR R2 R0 K0 - 0x8C080508, // 0016 GETMET R2 R2 K8 - 0x84100000, // 0017 CLOSURE R4 P0 - 0x7C080400, // 0018 CALL R2 2 - 0xA0000000, // 0019 CLOSE R0 - 0x80000000, // 001A RET 0 + ( &(const binstruction[ 7]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x84140000, // 0003 CLOSURE R5 P0 + 0x7C080600, // 0004 CALL R2 3 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 }) ) ); @@ -668,23 +680,87 @@ be_local_closure(Matter_Device_start_udp, /* name */ /******************************************************************** -** Solidified function: finish_commissioning +** Solidified function: stop ********************************************************************/ -be_local_closure(Matter_Device_finish_commissioning, /* name */ +be_local_closure(Matter_Device_stop, /* name */ be_nested_proto( - 1, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(finish_commissioning), + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(stop), + }), + be_str_weak(stop), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(const binstruction[ 6]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060002, // 0001 JMPF R1 #0005 + 0x88040100, // 0002 GETMBR R1 R0 K0 + 0x8C040301, // 0003 GETMET R1 R1 K1 + 0x7C040200, // 0004 CALL R1 1 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: invoke_request +********************************************************************/ +be_local_closure(Matter_Device_invoke_request, /* name */ + be_nested_proto( + 11, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(plugins), + /* K2 */ be_nested_str_weak(invoke_request), + /* K3 */ be_nested_str_weak(status), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K6 */ be_const_int(1), + }), + be_str_weak(invoke_request), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0x58100000, // 0000 LDCONST R4 K0 + 0x6014000C, // 0001 GETGBL R5 G12 + 0x88180101, // 0002 GETMBR R6 R0 K1 + 0x7C140200, // 0003 CALL R5 1 + 0x14140805, // 0004 LT R5 R4 R5 + 0x78160011, // 0005 JMPF R5 #0018 + 0x88140101, // 0006 GETMBR R5 R0 K1 + 0x94140A04, // 0007 GETIDX R5 R5 R4 + 0x8C180B02, // 0008 GETMET R6 R5 K2 + 0x5C200200, // 0009 MOVE R8 R1 + 0x5C240400, // 000A MOVE R9 R2 + 0x5C280600, // 000B MOVE R10 R3 + 0x7C180800, // 000C CALL R6 4 + 0x4C1C0000, // 000D LDNIL R7 + 0x201C0C07, // 000E NE R7 R6 R7 + 0x741E0004, // 000F JMPT R7 #0015 + 0x881C0703, // 0010 GETMBR R7 R3 K3 + 0xB8220800, // 0011 GETNGBL R8 K4 + 0x88201105, // 0012 GETMBR R8 R8 K5 + 0x201C0E08, // 0013 NE R7 R7 R8 + 0x781E0000, // 0014 JMPF R7 #0016 + 0x80040C00, // 0015 RET 1 R6 + 0x00100906, // 0016 ADD R4 R4 K6 + 0x7001FFE8, // 0017 JMP #0001 + 0x80000000, // 0018 RET 0 }) ) ); @@ -822,6 +898,557 @@ be_local_closure(Matter_Device_start_mdns_announce_hostnames, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: mdns_announce_op_discovery_all_sessions +********************************************************************/ +be_local_closure(Matter_Device_mdns_announce_op_discovery_all_sessions, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(get_deviceid), + /* K2 */ be_nested_str_weak(get_fabric), + /* K3 */ be_nested_str_weak(mdns_announce_op_discovery), + /* K4 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(mdns_announce_op_discovery_all_sessions), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x60040010, // 0000 GETGBL R1 G16 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x88080500, // 0002 GETMBR R2 R2 K0 + 0x7C040200, // 0003 CALL R1 1 + 0xA802000B, // 0004 EXBLK 0 #0011 + 0x5C080200, // 0005 MOVE R2 R1 + 0x7C080000, // 0006 CALL R2 0 + 0x8C0C0501, // 0007 GETMET R3 R2 K1 + 0x7C0C0200, // 0008 CALL R3 1 + 0x780E0005, // 0009 JMPF R3 #0010 + 0x8C0C0502, // 000A GETMET R3 R2 K2 + 0x7C0C0200, // 000B CALL R3 1 + 0x780E0002, // 000C JMPF R3 #0010 + 0x8C0C0103, // 000D GETMET R3 R0 K3 + 0x5C140400, // 000E MOVE R5 R2 + 0x7C0C0400, // 000F CALL R3 2 + 0x7001FFF3, // 0010 JMP #0005 + 0x58040004, // 0011 LDCONST R1 K4 + 0xAC040200, // 0012 CATCH R1 1 0 + 0xB0080000, // 0013 RAISE 2 R0 R0 + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: every_second +********************************************************************/ +be_local_closure(Matter_Device_every_second, /* name */ + be_nested_proto( + 3, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_nested_str_weak(every_second), + /* K2 */ be_nested_str_weak(msg_handler), + }), + be_str_weak(every_second), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x88040102, // 0003 GETMBR R1 R0 K2 + 0x8C040301, // 0004 GETMET R1 R1 K1 + 0x7C040200, // 0005 CALL R1 1 + 0x80000000, // 0006 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_Device_init, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(start_udp), + /* K1 */ be_nested_str_weak(UDP_PORT), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(remove_rule), + /* K4 */ be_nested_str_weak(Wifi_X23Connected), + /* K5 */ be_nested_str_weak(matter_device_udp), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080000, // 0002 GETUPV R2 U0 + 0x88080501, // 0003 GETMBR R2 R2 K1 + 0x7C000400, // 0004 CALL R0 2 + 0xB8020400, // 0005 GETNGBL R0 K2 + 0x8C000103, // 0006 GETMET R0 R0 K3 + 0x58080004, // 0007 LDCONST R2 K4 + 0x580C0005, // 0008 LDCONST R3 K5 + 0x7C000600, // 0009 CALL R0 3 + 0x80000000, // 000A RET 0 + }) + ), + be_nested_proto( + 4, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 0), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(start_udp), + /* K1 */ be_nested_str_weak(UDP_PORT), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(remove_rule), + /* K4 */ be_nested_str_weak(Eth_X23Connected), + /* K5 */ be_nested_str_weak(matter_device_udp), + }), + be_str_weak(_anonymous_), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080000, // 0002 GETUPV R2 U0 + 0x88080501, // 0003 GETMBR R2 R2 K1 + 0x7C000400, // 0004 CALL R0 2 + 0xB8020400, // 0005 GETNGBL R0 K2 + 0x8C000103, // 0006 GETMET R0 R0 K3 + 0x58080004, // 0007 LDCONST R2 K4 + 0x580C0005, // 0008 LDCONST R3 K5 + 0x7C000600, // 0009 CALL R0 3 + 0x80000000, // 000A RET 0 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[39]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(string), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(get_option), + /* K4 */ be_nested_str_weak(matter), + /* K5 */ be_nested_str_weak(MATTER_OPTION), + /* K6 */ be_nested_str_weak(UI), + /* K7 */ be_nested_str_weak(plugins), + /* K8 */ be_nested_str_weak(vendorid), + /* K9 */ be_nested_str_weak(VENDOR_ID), + /* K10 */ be_nested_str_weak(productid), + /* K11 */ be_nested_str_weak(PRODUCT_ID), + /* K12 */ be_nested_str_weak(iterations), + /* K13 */ be_nested_str_weak(PBKDF_ITERATIONS), + /* K14 */ be_nested_str_weak(load_param), + /* K15 */ be_nested_str_weak(commissioning_instance_wifi), + /* K16 */ be_nested_str_weak(random), + /* K17 */ be_nested_str_weak(tohex), + /* K18 */ be_nested_str_weak(commissioning_instance_eth), + /* K19 */ be_nested_str_weak(sessions), + /* K20 */ be_nested_str_weak(Session_Store), + /* K21 */ be_nested_str_weak(load), + /* K22 */ be_nested_str_weak(msg_handler), + /* K23 */ be_nested_str_weak(MessageHandler), + /* K24 */ be_nested_str_weak(ui), + /* K25 */ be_nested_str_weak(push), + /* K26 */ be_nested_str_weak(Plugin_core), + /* K27 */ be_nested_str_weak(Plugin_Relay), + /* K28 */ be_nested_str_weak(start_mdns_announce_hostnames), + /* K29 */ be_nested_str_weak(wifi), + /* K30 */ be_nested_str_weak(up), + /* K31 */ be_nested_str_weak(start_udp), + /* K32 */ be_nested_str_weak(UDP_PORT), + /* K33 */ be_nested_str_weak(add_rule), + /* K34 */ be_nested_str_weak(Wifi_X23Connected), + /* K35 */ be_nested_str_weak(eth), + /* K36 */ be_nested_str_weak(Eth_X23Connected), + /* K37 */ be_nested_str_weak(start_basic_commissioning), + /* K38 */ be_nested_str_weak(add_driver), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[107]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0xA40A0200, // 0001 IMPORT R2 K1 + 0xB80E0400, // 0002 GETNGBL R3 K2 + 0x8C0C0703, // 0003 GETMET R3 R3 K3 + 0xB8160800, // 0004 GETNGBL R5 K4 + 0x88140B05, // 0005 GETMBR R5 R5 K5 + 0x7C0C0400, // 0006 CALL R3 2 + 0x740E0004, // 0007 JMPT R3 #000D + 0xB80E0800, // 0008 GETNGBL R3 K4 + 0x8C0C0706, // 0009 GETMET R3 R3 K6 + 0x5C140000, // 000A MOVE R5 R0 + 0x7C0C0400, // 000B CALL R3 2 + 0x80000600, // 000C RET 0 + 0x600C0012, // 000D GETGBL R3 G18 + 0x7C0C0000, // 000E CALL R3 0 + 0x90020E03, // 000F SETMBR R0 K7 R3 + 0x880C0109, // 0010 GETMBR R3 R0 K9 + 0x90021003, // 0011 SETMBR R0 K8 R3 + 0x880C010B, // 0012 GETMBR R3 R0 K11 + 0x90021403, // 0013 SETMBR R0 K10 R3 + 0x880C010D, // 0014 GETMBR R3 R0 K13 + 0x90021803, // 0015 SETMBR R0 K12 R3 + 0x8C0C010E, // 0016 GETMET R3 R0 K14 + 0x7C0C0200, // 0017 CALL R3 1 + 0x8C0C0310, // 0018 GETMET R3 R1 K16 + 0x54160007, // 0019 LDINT R5 8 + 0x7C0C0400, // 001A CALL R3 2 + 0x8C0C0711, // 001B GETMET R3 R3 K17 + 0x7C0C0200, // 001C CALL R3 1 + 0x90021E03, // 001D SETMBR R0 K15 R3 + 0x8C0C0310, // 001E GETMET R3 R1 K16 + 0x54160007, // 001F LDINT R5 8 + 0x7C0C0400, // 0020 CALL R3 2 + 0x8C0C0711, // 0021 GETMET R3 R3 K17 + 0x7C0C0200, // 0022 CALL R3 1 + 0x90022403, // 0023 SETMBR R0 K18 R3 + 0xB80E0800, // 0024 GETNGBL R3 K4 + 0x8C0C0714, // 0025 GETMET R3 R3 K20 + 0x7C0C0200, // 0026 CALL R3 1 + 0x90022603, // 0027 SETMBR R0 K19 R3 + 0x880C0113, // 0028 GETMBR R3 R0 K19 + 0x8C0C0715, // 0029 GETMET R3 R3 K21 + 0x7C0C0200, // 002A CALL R3 1 + 0xB80E0800, // 002B GETNGBL R3 K4 + 0x8C0C0717, // 002C GETMET R3 R3 K23 + 0x5C140000, // 002D MOVE R5 R0 + 0x7C0C0400, // 002E CALL R3 2 + 0x90022C03, // 002F SETMBR R0 K22 R3 + 0xB80E0800, // 0030 GETNGBL R3 K4 + 0x8C0C0706, // 0031 GETMET R3 R3 K6 + 0x5C140000, // 0032 MOVE R5 R0 + 0x7C0C0400, // 0033 CALL R3 2 + 0x90023003, // 0034 SETMBR R0 K24 R3 + 0x880C0107, // 0035 GETMBR R3 R0 K7 + 0x8C0C0719, // 0036 GETMET R3 R3 K25 + 0xB8160800, // 0037 GETNGBL R5 K4 + 0x8C140B1A, // 0038 GETMET R5 R5 K26 + 0x5C1C0000, // 0039 MOVE R7 R0 + 0x7C140400, // 003A CALL R5 2 + 0x7C0C0400, // 003B CALL R3 2 + 0x880C0107, // 003C GETMBR R3 R0 K7 + 0x8C0C0719, // 003D GETMET R3 R3 K25 + 0xB8160800, // 003E GETNGBL R5 K4 + 0x8C140B1B, // 003F GETMET R5 R5 K27 + 0x5C1C0000, // 0040 MOVE R7 R0 + 0x7C140400, // 0041 CALL R5 2 + 0x7C0C0400, // 0042 CALL R3 2 + 0x8C0C011C, // 0043 GETMET R3 R0 K28 + 0x7C0C0200, // 0044 CALL R3 1 + 0xB80E0400, // 0045 GETNGBL R3 K2 + 0x8C0C071D, // 0046 GETMET R3 R3 K29 + 0x7C0C0200, // 0047 CALL R3 1 + 0x940C071E, // 0048 GETIDX R3 R3 K30 + 0x780E0003, // 0049 JMPF R3 #004E + 0x8C0C011F, // 004A GETMET R3 R0 K31 + 0x88140120, // 004B GETMBR R5 R0 K32 + 0x7C0C0400, // 004C CALL R3 2 + 0x70020005, // 004D JMP #0054 + 0xB80E0400, // 004E GETNGBL R3 K2 + 0x8C0C0721, // 004F GETMET R3 R3 K33 + 0x58140022, // 0050 LDCONST R5 K34 + 0x84180000, // 0051 CLOSURE R6 P0 + 0x5C1C0000, // 0052 MOVE R7 R0 + 0x7C0C0800, // 0053 CALL R3 4 + 0xB80E0400, // 0054 GETNGBL R3 K2 + 0x8C0C0723, // 0055 GETMET R3 R3 K35 + 0x7C0C0200, // 0056 CALL R3 1 + 0x940C071E, // 0057 GETIDX R3 R3 K30 + 0x780E0003, // 0058 JMPF R3 #005D + 0x8C0C011F, // 0059 GETMET R3 R0 K31 + 0x88140120, // 005A GETMBR R5 R0 K32 + 0x7C0C0400, // 005B CALL R3 2 + 0x70020005, // 005C JMP #0063 + 0xB80E0400, // 005D GETNGBL R3 K2 + 0x8C0C0721, // 005E GETMET R3 R3 K33 + 0x58140024, // 005F LDCONST R5 K36 + 0x84180001, // 0060 CLOSURE R6 P1 + 0x5C1C0000, // 0061 MOVE R7 R0 + 0x7C0C0800, // 0062 CALL R3 4 + 0x8C0C0125, // 0063 GETMET R3 R0 K37 + 0x7C0C0200, // 0064 CALL R3 1 + 0xB80E0400, // 0065 GETNGBL R3 K2 + 0x8C0C0726, // 0066 GETMET R3 R3 K38 + 0x5C140000, // 0067 MOVE R5 R0 + 0x7C0C0400, // 0068 CALL R3 2 + 0xA0000000, // 0069 CLOSE R0 + 0x80000000, // 006A RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_basic_commissioning +********************************************************************/ +be_local_closure(Matter_Device_start_basic_commissioning, /* name */ + be_nested_proto( + 4, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(compute_pbkdf), + /* K1 */ be_nested_str_weak(passcode), + }), + be_str_weak(start_basic_commissioning), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x7C040400, // 0002 CALL R1 2 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_operational_dicovery +********************************************************************/ +be_local_closure(Matter_Device_start_operational_dicovery, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[13]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(mdns), + /* K2 */ be_nested_str_weak(string), + /* K3 */ be_nested_str_weak(salt), + /* K4 */ be_nested_str_weak(w0), + /* K5 */ be_nested_str_weak(w1), + /* K6 */ be_nested_str_weak(L), + /* K7 */ be_nested_str_weak(set_no_expiration), + /* K8 */ be_nested_str_weak(set_persist), + /* K9 */ be_nested_str_weak(close), + /* K10 */ be_nested_str_weak(sessions), + /* K11 */ be_nested_str_weak(save), + /* K12 */ be_nested_str_weak(mdns_announce_op_discovery), + }), + be_str_weak(start_operational_dicovery), + &be_const_str_solidified, + ( &(const binstruction[25]) { /* code */ + 0xA40A0000, // 0000 IMPORT R2 K0 + 0xA40E0200, // 0001 IMPORT R3 K1 + 0xA4120400, // 0002 IMPORT R4 K2 + 0x4C140000, // 0003 LDNIL R5 + 0x90020605, // 0004 SETMBR R0 K3 R5 + 0x4C140000, // 0005 LDNIL R5 + 0x90020805, // 0006 SETMBR R0 K4 R5 + 0x4C140000, // 0007 LDNIL R5 + 0x90020A05, // 0008 SETMBR R0 K5 R5 + 0x4C140000, // 0009 LDNIL R5 + 0x90020C05, // 000A SETMBR R0 K6 R5 + 0x8C140307, // 000B GETMET R5 R1 K7 + 0x7C140200, // 000C CALL R5 1 + 0x8C140308, // 000D GETMET R5 R1 K8 + 0x501C0200, // 000E LDBOOL R7 1 0 + 0x7C140400, // 000F CALL R5 2 + 0x8C140309, // 0010 GETMET R5 R1 K9 + 0x7C140200, // 0011 CALL R5 1 + 0x8814010A, // 0012 GETMBR R5 R0 K10 + 0x8C140B0B, // 0013 GETMET R5 R5 K11 + 0x7C140200, // 0014 CALL R5 1 + 0x8C14010C, // 0015 GETMET R5 R0 K12 + 0x5C1C0200, // 0016 MOVE R7 R1 + 0x7C140400, // 0017 CALL R5 2 + 0x80000000, // 0018 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: start_commissioning_complete +********************************************************************/ +be_local_closure(Matter_Device_start_commissioning_complete, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(log), + /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20Commissioning_X20complete_X20_X2A_X2A_X2A), + /* K3 */ be_const_int(2), + }), + be_str_weak(start_commissioning_complete), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x58100002, // 0002 LDCONST R4 K2 + 0x58140003, // 0003 LDCONST R5 K3 + 0x7C080600, // 0004 CALL R2 3 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: compute_qrcode_content +********************************************************************/ +be_local_closure(Matter_Device_compute_qrcode_content, /* name */ + be_nested_proto( + 8, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[12]) { /* constants */ + /* K0 */ be_nested_str_weak(resize), + /* K1 */ be_nested_str_weak(setbits), + /* K2 */ be_const_int(3), + /* K3 */ be_nested_str_weak(vendorid), + /* K4 */ be_nested_str_weak(productid), + /* K5 */ be_nested_str_weak(discriminator), + /* K6 */ be_nested_str_weak(passcode), + /* K7 */ be_const_int(134217727), + /* K8 */ be_nested_str_weak(MT_X3A), + /* K9 */ be_nested_str_weak(matter), + /* K10 */ be_nested_str_weak(Base38), + /* K11 */ be_nested_str_weak(encode), + }), + be_str_weak(compute_qrcode_content), + &be_const_str_solidified, + ( &(const binstruction[40]) { /* code */ + 0x60040015, // 0000 GETGBL R1 G21 + 0x7C040000, // 0001 CALL R1 0 + 0x8C040300, // 0002 GETMET R1 R1 K0 + 0x540E000A, // 0003 LDINT R3 11 + 0x7C040400, // 0004 CALL R1 2 + 0x8C080301, // 0005 GETMET R2 R1 K1 + 0x58100002, // 0006 LDCONST R4 K2 + 0x5416000F, // 0007 LDINT R5 16 + 0x88180103, // 0008 GETMBR R6 R0 K3 + 0x7C080800, // 0009 CALL R2 4 + 0x8C080301, // 000A GETMET R2 R1 K1 + 0x54120012, // 000B LDINT R4 19 + 0x5416000F, // 000C LDINT R5 16 + 0x88180104, // 000D GETMBR R6 R0 K4 + 0x7C080800, // 000E CALL R2 4 + 0x8C080301, // 000F GETMET R2 R1 K1 + 0x54120024, // 0010 LDINT R4 37 + 0x54160007, // 0011 LDINT R5 8 + 0x541A0003, // 0012 LDINT R6 4 + 0x7C080800, // 0013 CALL R2 4 + 0x8C080301, // 0014 GETMET R2 R1 K1 + 0x5412002C, // 0015 LDINT R4 45 + 0x5416000B, // 0016 LDINT R5 12 + 0x88180105, // 0017 GETMBR R6 R0 K5 + 0x541E0FFE, // 0018 LDINT R7 4095 + 0x2C180C07, // 0019 AND R6 R6 R7 + 0x7C080800, // 001A CALL R2 4 + 0x8C080301, // 001B GETMET R2 R1 K1 + 0x54120038, // 001C LDINT R4 57 + 0x5416001A, // 001D LDINT R5 27 + 0x88180106, // 001E GETMBR R6 R0 K6 + 0x2C180D07, // 001F AND R6 R6 K7 + 0x7C080800, // 0020 CALL R2 4 + 0xB80A1200, // 0021 GETNGBL R2 K9 + 0x8808050A, // 0022 GETMBR R2 R2 K10 + 0x8C08050B, // 0023 GETMET R2 R2 K11 + 0x5C100200, // 0024 MOVE R4 R1 + 0x7C080400, // 0025 CALL R2 2 + 0x000A1002, // 0026 ADD R2 K8 R2 + 0x80040400, // 0027 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: finish_commissioning +********************************************************************/ +be_local_closure(Matter_Device_finish_commissioning, /* name */ + be_nested_proto( + 1, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(finish_commissioning), + &be_const_str_solidified, + ( &(const binstruction[ 1]) { /* code */ + 0x80000000, // 0000 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: mdns_announce_op_discovery ********************************************************************/ @@ -998,63 +1625,59 @@ be_local_closure(Matter_Device_mdns_announce_op_discovery, /* name */ /******************************************************************** -** Solidified function: start_commissioning_complete +** Solidified function: start_commissioning_complete_deferred ********************************************************************/ -be_local_closure(Matter_Device_start_commissioning_complete, /* name */ +be_local_closure(Matter_Device_start_commissioning_complete_deferred, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X20Commissioning_X20complete_X20_X2A_X2A_X2A), - /* K3 */ be_const_int(2), + 1, /* has sup protos */ + ( &(const struct bproto*[ 1]) { + be_nested_proto( + 3, /* nstack */ + 0, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 0), + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(start_commissioning_complete), + }), + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x68000000, // 0000 GETUPV R0 U0 + 0x8C000100, // 0001 GETMET R0 R0 K0 + 0x68080001, // 0002 GETUPV R2 U1 + 0x7C000400, // 0003 CALL R0 2 + 0x80040000, // 0004 RET 1 R0 + }) + ), }), - be_str_weak(start_commissioning_complete), + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(set_timer), + /* K2 */ be_const_int(0), + }), + be_str_weak(start_commissioning_complete_deferred), &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ + ( &(const binstruction[ 7]) { /* code */ 0xB80A0000, // 0000 GETNGBL R2 K0 0x8C080501, // 0001 GETMET R2 R2 K1 0x58100002, // 0002 LDCONST R4 K2 - 0x58140003, // 0003 LDCONST R5 K3 + 0x84140000, // 0003 CLOSURE R5 P0 0x7C080600, // 0004 CALL R2 3 - 0x80000000, // 0005 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: start_basic_commissioning -********************************************************************/ -be_local_closure(Matter_Device_start_basic_commissioning, /* name */ - be_nested_proto( - 4, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(compute_pbkdf), - /* K1 */ be_nested_str_weak(passcode), - }), - be_str_weak(start_basic_commissioning), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x7C040400, // 0002 CALL R1 2 - 0x80000000, // 0003 RET 0 + 0xA0000000, // 0005 CLOSE R0 + 0x80000000, // 0006 RET 0 }) ) ); @@ -1204,232 +1827,100 @@ be_local_closure(Matter_Device_compute_pbkdf, /* name */ /******************************************************************** -** Solidified function: init +** Solidified function: get_active_endpoints ********************************************************************/ -be_local_closure(Matter_Device_init, /* name */ +be_local_closure(Matter_Device_get_active_endpoints, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ + 11, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ - 1, /* has sup protos */ - ( &(const struct bproto*[ 2]) { - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(start_udp), - /* K1 */ be_nested_str_weak(UDP_PORT), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(remove_rule), - /* K4 */ be_nested_str_weak(Wifi_X23Connected), - /* K5 */ be_nested_str_weak(matter_device_udp), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080000, // 0002 GETUPV R2 U0 - 0x88080501, // 0003 GETMBR R2 R2 K1 - 0x7C000400, // 0004 CALL R0 2 - 0xB8020400, // 0005 GETNGBL R0 K2 - 0x8C000103, // 0006 GETMET R0 R0 K3 - 0x58080004, // 0007 LDCONST R2 K4 - 0x580C0005, // 0008 LDCONST R3 K5 - 0x7C000600, // 0009 CALL R0 3 - 0x80000000, // 000A RET 0 - }) - ), - be_nested_proto( - 4, /* nstack */ - 0, /* argc */ - 0, /* varg */ - 1, /* has upvals */ - ( &(const bupvaldesc[ 1]) { /* upvals */ - be_local_const_upval(1, 0), - }), - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(start_udp), - /* K1 */ be_nested_str_weak(UDP_PORT), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(remove_rule), - /* K4 */ be_nested_str_weak(Eth_X23Connected), - /* K5 */ be_nested_str_weak(matter_device_udp), - }), - be_str_weak(_anonymous_), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x68000000, // 0000 GETUPV R0 U0 - 0x8C000100, // 0001 GETMET R0 R0 K0 - 0x68080000, // 0002 GETUPV R2 U0 - 0x88080501, // 0003 GETMBR R2 R2 K1 - 0x7C000400, // 0004 CALL R0 2 - 0xB8020400, // 0005 GETNGBL R0 K2 - 0x8C000103, // 0006 GETMET R0 R0 K3 - 0x58080004, // 0007 LDCONST R2 K4 - 0x580C0005, // 0008 LDCONST R3 K5 - 0x7C000600, // 0009 CALL R0 3 - 0x80000000, // 000A RET 0 - }) - ), - }), + 0, /* has sup protos */ + NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[38]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(string), - /* K2 */ be_nested_str_weak(tasmota), - /* K3 */ be_nested_str_weak(get_option), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(MATTER_OPTION), - /* K6 */ be_nested_str_weak(UI), - /* K7 */ be_nested_str_weak(plugins), - /* K8 */ be_nested_str_weak(vendorid), - /* K9 */ be_nested_str_weak(VENDOR_ID), - /* K10 */ be_nested_str_weak(productid), - /* K11 */ be_nested_str_weak(PRODUCT_ID), - /* K12 */ be_nested_str_weak(iterations), - /* K13 */ be_nested_str_weak(PBKDF_ITERATIONS), - /* K14 */ be_nested_str_weak(load_param), - /* K15 */ be_nested_str_weak(commissioning_instance_wifi), - /* K16 */ be_nested_str_weak(random), - /* K17 */ be_nested_str_weak(tohex), - /* K18 */ be_nested_str_weak(commissioning_instance_eth), - /* K19 */ be_nested_str_weak(sessions), - /* K20 */ be_nested_str_weak(Session_Store), - /* K21 */ be_nested_str_weak(load), - /* K22 */ be_nested_str_weak(msg_handler), - /* K23 */ be_nested_str_weak(MessageHandler), - /* K24 */ be_nested_str_weak(ui), - /* K25 */ be_nested_str_weak(push), - /* K26 */ be_nested_str_weak(Plugin_core), - /* K27 */ be_nested_str_weak(start_mdns_announce_hostnames), - /* K28 */ be_nested_str_weak(wifi), - /* K29 */ be_nested_str_weak(up), - /* K30 */ be_nested_str_weak(start_udp), - /* K31 */ be_nested_str_weak(UDP_PORT), - /* K32 */ be_nested_str_weak(add_rule), - /* K33 */ be_nested_str_weak(Wifi_X23Connected), - /* K34 */ be_nested_str_weak(eth), - /* K35 */ be_nested_str_weak(Eth_X23Connected), - /* K36 */ be_nested_str_weak(start_basic_commissioning), - /* K37 */ be_nested_str_weak(add_driver), + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(plugins), + /* K1 */ be_nested_str_weak(get_endpoints), + /* K2 */ be_const_int(0), + /* K3 */ be_nested_str_weak(find), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(init), + be_str_weak(get_active_endpoints), &be_const_str_solidified, - ( &(const binstruction[100]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0xA40A0200, // 0001 IMPORT R2 K1 - 0xB80E0400, // 0002 GETNGBL R3 K2 - 0x8C0C0703, // 0003 GETMET R3 R3 K3 - 0xB8160800, // 0004 GETNGBL R5 K4 - 0x88140B05, // 0005 GETMBR R5 R5 K5 - 0x7C0C0400, // 0006 CALL R3 2 - 0x740E0004, // 0007 JMPT R3 #000D - 0xB80E0800, // 0008 GETNGBL R3 K4 - 0x8C0C0706, // 0009 GETMET R3 R3 K6 - 0x5C140000, // 000A MOVE R5 R0 - 0x7C0C0400, // 000B CALL R3 2 - 0x80000600, // 000C RET 0 - 0x600C0012, // 000D GETGBL R3 G18 - 0x7C0C0000, // 000E CALL R3 0 - 0x90020E03, // 000F SETMBR R0 K7 R3 - 0x880C0109, // 0010 GETMBR R3 R0 K9 - 0x90021003, // 0011 SETMBR R0 K8 R3 - 0x880C010B, // 0012 GETMBR R3 R0 K11 - 0x90021403, // 0013 SETMBR R0 K10 R3 - 0x880C010D, // 0014 GETMBR R3 R0 K13 - 0x90021803, // 0015 SETMBR R0 K12 R3 - 0x8C0C010E, // 0016 GETMET R3 R0 K14 - 0x7C0C0200, // 0017 CALL R3 1 - 0x8C0C0310, // 0018 GETMET R3 R1 K16 - 0x54160007, // 0019 LDINT R5 8 - 0x7C0C0400, // 001A CALL R3 2 - 0x8C0C0711, // 001B GETMET R3 R3 K17 - 0x7C0C0200, // 001C CALL R3 1 - 0x90021E03, // 001D SETMBR R0 K15 R3 - 0x8C0C0310, // 001E GETMET R3 R1 K16 - 0x54160007, // 001F LDINT R5 8 - 0x7C0C0400, // 0020 CALL R3 2 - 0x8C0C0711, // 0021 GETMET R3 R3 K17 - 0x7C0C0200, // 0022 CALL R3 1 - 0x90022403, // 0023 SETMBR R0 K18 R3 - 0xB80E0800, // 0024 GETNGBL R3 K4 - 0x8C0C0714, // 0025 GETMET R3 R3 K20 - 0x7C0C0200, // 0026 CALL R3 1 - 0x90022603, // 0027 SETMBR R0 K19 R3 - 0x880C0113, // 0028 GETMBR R3 R0 K19 - 0x8C0C0715, // 0029 GETMET R3 R3 K21 - 0x7C0C0200, // 002A CALL R3 1 - 0xB80E0800, // 002B GETNGBL R3 K4 - 0x8C0C0717, // 002C GETMET R3 R3 K23 - 0x5C140000, // 002D MOVE R5 R0 - 0x7C0C0400, // 002E CALL R3 2 - 0x90022C03, // 002F SETMBR R0 K22 R3 - 0xB80E0800, // 0030 GETNGBL R3 K4 - 0x8C0C0706, // 0031 GETMET R3 R3 K6 - 0x5C140000, // 0032 MOVE R5 R0 - 0x7C0C0400, // 0033 CALL R3 2 - 0x90023003, // 0034 SETMBR R0 K24 R3 - 0x880C0107, // 0035 GETMBR R3 R0 K7 - 0x8C0C0719, // 0036 GETMET R3 R3 K25 - 0xB8160800, // 0037 GETNGBL R5 K4 - 0x8C140B1A, // 0038 GETMET R5 R5 K26 - 0x5C1C0000, // 0039 MOVE R7 R0 - 0x7C140400, // 003A CALL R5 2 - 0x7C0C0400, // 003B CALL R3 2 - 0x8C0C011B, // 003C GETMET R3 R0 K27 - 0x7C0C0200, // 003D CALL R3 1 - 0xB80E0400, // 003E GETNGBL R3 K2 - 0x8C0C071C, // 003F GETMET R3 R3 K28 - 0x7C0C0200, // 0040 CALL R3 1 - 0x940C071D, // 0041 GETIDX R3 R3 K29 - 0x780E0003, // 0042 JMPF R3 #0047 - 0x8C0C011E, // 0043 GETMET R3 R0 K30 - 0x8814011F, // 0044 GETMBR R5 R0 K31 - 0x7C0C0400, // 0045 CALL R3 2 - 0x70020005, // 0046 JMP #004D - 0xB80E0400, // 0047 GETNGBL R3 K2 - 0x8C0C0720, // 0048 GETMET R3 R3 K32 - 0x58140021, // 0049 LDCONST R5 K33 - 0x84180000, // 004A CLOSURE R6 P0 - 0x5C1C0000, // 004B MOVE R7 R0 - 0x7C0C0800, // 004C CALL R3 4 - 0xB80E0400, // 004D GETNGBL R3 K2 - 0x8C0C0722, // 004E GETMET R3 R3 K34 - 0x7C0C0200, // 004F CALL R3 1 - 0x940C071D, // 0050 GETIDX R3 R3 K29 - 0x780E0003, // 0051 JMPF R3 #0056 - 0x8C0C011E, // 0052 GETMET R3 R0 K30 - 0x8814011F, // 0053 GETMBR R5 R0 K31 - 0x7C0C0400, // 0054 CALL R3 2 - 0x70020005, // 0055 JMP #005C - 0xB80E0400, // 0056 GETNGBL R3 K2 - 0x8C0C0720, // 0057 GETMET R3 R3 K32 - 0x58140023, // 0058 LDCONST R5 K35 - 0x84180001, // 0059 CLOSURE R6 P1 - 0x5C1C0000, // 005A MOVE R7 R0 - 0x7C0C0800, // 005B CALL R3 4 - 0x8C0C0124, // 005C GETMET R3 R0 K36 - 0x7C0C0200, // 005D CALL R3 1 - 0xB80E0400, // 005E GETNGBL R3 K2 - 0x8C0C0725, // 005F GETMET R3 R3 K37 - 0x5C140000, // 0060 MOVE R5 R0 - 0x7C0C0400, // 0061 CALL R3 2 - 0xA0000000, // 0062 CLOSE R0 - 0x80000000, // 0063 RET 0 + ( &(const binstruction[38]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x88100100, // 0003 GETMBR R4 R0 K0 + 0x7C0C0200, // 0004 CALL R3 1 + 0xA802001B, // 0005 EXBLK 0 #0022 + 0x5C100600, // 0006 MOVE R4 R3 + 0x7C100000, // 0007 CALL R4 0 + 0x8C140901, // 0008 GETMET R5 R4 K1 + 0x7C140200, // 0009 CALL R5 1 + 0x60180010, // 000A GETGBL R6 G16 + 0x5C1C0A00, // 000B MOVE R7 R5 + 0x7C180200, // 000C CALL R6 1 + 0xA802000F, // 000D EXBLK 0 #001E + 0x5C1C0C00, // 000E MOVE R7 R6 + 0x7C1C0000, // 000F CALL R7 0 + 0x78060002, // 0010 JMPF R1 #0014 + 0x1C200F02, // 0011 EQ R8 R7 K2 + 0x78220000, // 0012 JMPF R8 #0014 + 0x7001FFF9, // 0013 JMP #000E + 0x8C200503, // 0014 GETMET R8 R2 K3 + 0x5C280E00, // 0015 MOVE R10 R7 + 0x7C200400, // 0016 CALL R8 2 + 0x4C240000, // 0017 LDNIL R9 + 0x1C201009, // 0018 EQ R8 R8 R9 + 0x78220002, // 0019 JMPF R8 #001D + 0x8C200504, // 001A GETMET R8 R2 K4 + 0x5C280E00, // 001B MOVE R10 R7 + 0x7C200400, // 001C CALL R8 2 + 0x7001FFEF, // 001D JMP #000E + 0x58180005, // 001E LDCONST R6 K5 + 0xAC180200, // 001F CATCH R6 1 0 + 0xB0080000, // 0020 RAISE 2 R0 R0 + 0x7001FFE3, // 0021 JMP #0006 + 0x580C0005, // 0022 LDCONST R3 K5 + 0xAC0C0200, // 0023 CATCH R3 1 0 + 0xB0080000, // 0024 RAISE 2 R0 R0 + 0x80040400, // 0025 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: msg_received +********************************************************************/ +be_local_closure(Matter_Device_msg_received, /* name */ + be_nested_proto( + 9, /* nstack */ + 4, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(msg_handler), + /* K1 */ be_nested_str_weak(msg_received), + }), + be_str_weak(msg_received), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x88100100, // 0000 GETMBR R4 R0 K0 + 0x8C100901, // 0001 GETMET R4 R4 K1 + 0x5C180200, // 0002 MOVE R6 R1 + 0x5C1C0400, // 0003 MOVE R7 R2 + 0x5C200600, // 0004 MOVE R8 R3 + 0x7C100800, // 0005 CALL R4 4 + 0x80040800, // 0006 RET 1 R4 }) ) ); @@ -1803,88 +2294,12 @@ be_local_closure(Matter_Device__start_mdns_announce, /* name */ /******************************************************************** -** Solidified function: compute_qrcode_content +** Solidified function: packet_ack ********************************************************************/ -be_local_closure(Matter_Device_compute_qrcode_content, /* name */ +be_local_closure(Matter_Device_packet_ack, /* name */ be_nested_proto( - 8, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[12]) { /* constants */ - /* K0 */ be_nested_str_weak(resize), - /* K1 */ be_nested_str_weak(setbits), - /* K2 */ be_const_int(3), - /* K3 */ be_nested_str_weak(vendorid), - /* K4 */ be_nested_str_weak(productid), - /* K5 */ be_nested_str_weak(discriminator), - /* K6 */ be_nested_str_weak(passcode), - /* K7 */ be_const_int(134217727), - /* K8 */ be_nested_str_weak(MT_X3A), - /* K9 */ be_nested_str_weak(matter), - /* K10 */ be_nested_str_weak(Base38), - /* K11 */ be_nested_str_weak(encode), - }), - be_str_weak(compute_qrcode_content), - &be_const_str_solidified, - ( &(const binstruction[40]) { /* code */ - 0x60040015, // 0000 GETGBL R1 G21 - 0x7C040000, // 0001 CALL R1 0 - 0x8C040300, // 0002 GETMET R1 R1 K0 - 0x540E000A, // 0003 LDINT R3 11 - 0x7C040400, // 0004 CALL R1 2 - 0x8C080301, // 0005 GETMET R2 R1 K1 - 0x58100002, // 0006 LDCONST R4 K2 - 0x5416000F, // 0007 LDINT R5 16 - 0x88180103, // 0008 GETMBR R6 R0 K3 - 0x7C080800, // 0009 CALL R2 4 - 0x8C080301, // 000A GETMET R2 R1 K1 - 0x54120012, // 000B LDINT R4 19 - 0x5416000F, // 000C LDINT R5 16 - 0x88180104, // 000D GETMBR R6 R0 K4 - 0x7C080800, // 000E CALL R2 4 - 0x8C080301, // 000F GETMET R2 R1 K1 - 0x54120024, // 0010 LDINT R4 37 - 0x54160007, // 0011 LDINT R5 8 - 0x541A0003, // 0012 LDINT R6 4 - 0x7C080800, // 0013 CALL R2 4 - 0x8C080301, // 0014 GETMET R2 R1 K1 - 0x5412002C, // 0015 LDINT R4 45 - 0x5416000B, // 0016 LDINT R5 12 - 0x88180105, // 0017 GETMBR R6 R0 K5 - 0x541E0FFE, // 0018 LDINT R7 4095 - 0x2C180C07, // 0019 AND R6 R6 R7 - 0x7C080800, // 001A CALL R2 4 - 0x8C080301, // 001B GETMET R2 R1 K1 - 0x54120038, // 001C LDINT R4 57 - 0x5416001A, // 001D LDINT R5 27 - 0x88180106, // 001E GETMBR R6 R0 K6 - 0x2C180D07, // 001F AND R6 R6 K7 - 0x7C080800, // 0020 CALL R2 4 - 0xB80A1200, // 0021 GETNGBL R2 K9 - 0x8808050A, // 0022 GETMBR R2 R2 K10 - 0x8C08050B, // 0023 GETMET R2 R2 K11 - 0x5C100200, // 0024 MOVE R4 R1 - 0x7C080400, // 0025 CALL R2 2 - 0x000A1002, // 0026 ADD R2 K8 R2 - 0x80040400, // 0027 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: msg_received -********************************************************************/ -be_local_closure(Matter_Device_msg_received, /* name */ - be_nested_proto( - 9, /* nstack */ - 4, /* argc */ + 5, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1892,19 +2307,17 @@ be_local_closure(Matter_Device_msg_received, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(msg_handler), - /* K1 */ be_nested_str_weak(msg_received), + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(packet_ack), }), - be_str_weak(msg_received), + be_str_weak(packet_ack), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ - 0x88100100, // 0000 GETMBR R4 R0 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0x5C180200, // 0002 MOVE R6 R1 - 0x5C1C0400, // 0003 MOVE R7 R2 - 0x5C200600, // 0004 MOVE R8 R3 - 0x7C100800, // 0005 CALL R4 4 - 0x80040800, // 0006 RET 1 R4 + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -1912,117 +2325,11 @@ be_local_closure(Matter_Device_msg_received, /* name */ /******************************************************************** -** Solidified function: mdns_announce_op_discovery_all_sessions +** Solidified function: msg_send ********************************************************************/ -be_local_closure(Matter_Device_mdns_announce_op_discovery_all_sessions, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_nested_str_weak(get_deviceid), - /* K2 */ be_nested_str_weak(get_fabric), - /* K3 */ be_nested_str_weak(mdns_announce_op_discovery), - /* K4 */ be_nested_str_weak(stop_iteration), - }), - be_str_weak(mdns_announce_op_discovery_all_sessions), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x60040010, // 0000 GETGBL R1 G16 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x88080500, // 0002 GETMBR R2 R2 K0 - 0x7C040200, // 0003 CALL R1 1 - 0xA802000B, // 0004 EXBLK 0 #0011 - 0x5C080200, // 0005 MOVE R2 R1 - 0x7C080000, // 0006 CALL R2 0 - 0x8C0C0501, // 0007 GETMET R3 R2 K1 - 0x7C0C0200, // 0008 CALL R3 1 - 0x780E0005, // 0009 JMPF R3 #0010 - 0x8C0C0502, // 000A GETMET R3 R2 K2 - 0x7C0C0200, // 000B CALL R3 1 - 0x780E0002, // 000C JMPF R3 #0010 - 0x8C0C0103, // 000D GETMET R3 R0 K3 - 0x5C140400, // 000E MOVE R5 R2 - 0x7C0C0400, // 000F CALL R3 2 - 0x7001FFF3, // 0010 JMP #0005 - 0x58040004, // 0011 LDCONST R1 K4 - 0xAC040200, // 0012 CATCH R1 1 0 - 0xB0080000, // 0013 RAISE 2 R0 R0 - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: invoke_request -********************************************************************/ -be_local_closure(Matter_Device_invoke_request, /* name */ +be_local_closure(Matter_Device_msg_send, /* name */ be_nested_proto( 11, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(invoke_request), - /* K3 */ be_nested_str_weak(status), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K6 */ be_const_int(1), - }), - be_str_weak(invoke_request), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x58100000, // 0000 LDCONST R4 K0 - 0x6014000C, // 0001 GETGBL R5 G12 - 0x88180101, // 0002 GETMBR R6 R0 K1 - 0x7C140200, // 0003 CALL R5 1 - 0x14140805, // 0004 LT R5 R4 R5 - 0x78160011, // 0005 JMPF R5 #0018 - 0x88140101, // 0006 GETMBR R5 R0 K1 - 0x94140A04, // 0007 GETIDX R5 R5 R4 - 0x8C180B02, // 0008 GETMET R6 R5 K2 - 0x5C200200, // 0009 MOVE R8 R1 - 0x5C240400, // 000A MOVE R9 R2 - 0x5C280600, // 000B MOVE R10 R3 - 0x7C180800, // 000C CALL R6 4 - 0x4C1C0000, // 000D LDNIL R7 - 0x201C0C07, // 000E NE R7 R6 R7 - 0x741E0004, // 000F JMPT R7 #0015 - 0x881C0703, // 0010 GETMBR R7 R3 K3 - 0xB8220800, // 0011 GETNGBL R8 K4 - 0x88201105, // 0012 GETMBR R8 R8 K5 - 0x201C0E08, // 0013 NE R7 R7 R8 - 0x781E0000, // 0014 JMPF R7 #0016 - 0x80040C00, // 0015 RET 1 R6 - 0x00100906, // 0016 ADD R4 R4 K6 - 0x7001FFE8, // 0017 JMP #0001 - 0x80000000, // 0018 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -be_local_closure(Matter_Device_read_attribute, /* name */ - be_nested_proto( - 13, /* nstack */ 5, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -2030,36 +2337,21 @@ be_local_closure(Matter_Device_read_attribute, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(plugins), - /* K2 */ be_nested_str_weak(read_attribute), - /* K3 */ be_const_int(1), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(udp_server), + /* K1 */ be_nested_str_weak(send_response), }), - be_str_weak(read_attribute), + be_str_weak(msg_send), &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x58140000, // 0000 LDCONST R5 K0 - 0x6018000C, // 0001 GETGBL R6 G12 - 0x881C0101, // 0002 GETMBR R7 R0 K1 - 0x7C180200, // 0003 CALL R6 1 - 0x14180A06, // 0004 LT R6 R5 R6 - 0x781A000D, // 0005 JMPF R6 #0014 - 0x88180101, // 0006 GETMBR R6 R0 K1 - 0x94180C05, // 0007 GETIDX R6 R6 R5 - 0x8C1C0D02, // 0008 GETMET R7 R6 K2 - 0x5C240200, // 0009 MOVE R9 R1 - 0x5C280400, // 000A MOVE R10 R2 - 0x5C2C0600, // 000B MOVE R11 R3 - 0x5C300800, // 000C MOVE R12 R4 - 0x7C1C0A00, // 000D CALL R7 5 - 0x4C200000, // 000E LDNIL R8 - 0x20200E08, // 000F NE R8 R7 R8 - 0x78220000, // 0010 JMPF R8 #0012 - 0x80040E00, // 0011 RET 1 R7 - 0x00140B03, // 0012 ADD R5 R5 K3 - 0x7001FFEC, // 0013 JMP #0001 - 0x80000000, // 0014 RET 0 + ( &(const binstruction[ 8]) { /* code */ + 0x88140100, // 0000 GETMBR R5 R0 K0 + 0x8C140B01, // 0001 GETMET R5 R5 K1 + 0x5C1C0200, // 0002 MOVE R7 R1 + 0x5C200400, // 0003 MOVE R8 R2 + 0x5C240600, // 0004 MOVE R9 R3 + 0x5C280800, // 0005 MOVE R10 R4 + 0x7C140A00, // 0006 CALL R5 5 + 0x80040A00, // 0007 RET 1 R5 }) ) ); @@ -2072,55 +2364,56 @@ be_local_closure(Matter_Device_read_attribute, /* name */ be_local_class(Matter_Device, 18, NULL, - be_nested_map(48, + be_nested_map(49, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, 15), be_const_closure(Matter_Device_read_attribute_closure) }, + { be_const_key_weak(compute_manual_pairing_code, 12), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) }, + { be_const_key_weak(msg_handler, 45), be_const_var(2) }, + { be_const_key_weak(FILENAME, 20), be_nested_str_weak(_matter_device_X2Ejson) }, + { be_const_key_weak(plugins, 40), be_const_var(0) }, + { be_const_key_weak(process_attribute_expansion, -1), be_const_closure(Matter_Device_process_attribute_expansion_closure) }, { be_const_key_weak(msg_send, -1), be_const_closure(Matter_Device_msg_send_closure) }, - { be_const_key_weak(start_operational_dicovery_deferred, 32), be_const_closure(Matter_Device_start_operational_dicovery_deferred_closure) }, - { be_const_key_weak(start_commissioning_complete_deferred, 30), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Device_invoke_request_closure) }, - { be_const_key_weak(stop, -1), be_const_closure(Matter_Device_stop_closure) }, - { be_const_key_weak(udp_server, -1), be_const_var(1) }, - { be_const_key_weak(mdns_announce_op_discovery, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) }, - { be_const_key_weak(hostname_eth, 38), be_const_var(8) }, - { be_const_key_weak(every_second, -1), be_const_closure(Matter_Device_every_second_closure) }, - { be_const_key_weak(start_commissioning_complete, -1), be_const_closure(Matter_Device_start_commissioning_complete_closure) }, - { be_const_key_weak(ui, 4), be_const_var(4) }, - { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) }, - { be_const_key_weak(L, -1), be_const_var(17) }, - { be_const_key_weak(vendorid, -1), be_const_var(9) }, - { be_const_key_weak(mdns_announce_op_discovery_all_sessions, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_all_sessions_closure) }, - { be_const_key_weak(start_operational_dicovery, -1), be_const_closure(Matter_Device_start_operational_dicovery_closure) }, - { be_const_key_weak(productid, -1), be_const_var(10) }, - { be_const_key_weak(compute_manual_pairing_code, -1), be_const_closure(Matter_Device_compute_manual_pairing_code_closure) }, - { be_const_key_weak(start_udp, -1), be_const_closure(Matter_Device_start_udp_closure) }, - { be_const_key_weak(sessions, -1), be_const_var(3) }, - { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) }, - { be_const_key_weak(finish_commissioning, 7), be_const_closure(Matter_Device_finish_commissioning_closure) }, - { be_const_key_weak(packet_ack, 10), be_const_closure(Matter_Device_packet_ack_closure) }, - { be_const_key_weak(discriminator, -1), be_const_var(11) }, - { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, - { be_const_key_weak(start_basic_commissioning, 41), be_const_closure(Matter_Device_start_basic_commissioning_closure) }, - { be_const_key_weak(plugins, 24), be_const_var(0) }, - { be_const_key_weak(compute_pbkdf, 20), be_const_closure(Matter_Device_compute_pbkdf_closure) }, - { be_const_key_weak(passcode, -1), be_const_var(12) }, - { be_const_key_weak(init, 47), be_const_closure(Matter_Device_init_closure) }, - { be_const_key_weak(PBKDF_ITERATIONS, -1), be_const_int(1000) }, - { be_const_key_weak(w0, 46), be_const_var(15) }, - { be_const_key_weak(salt, 36), be_const_var(14) }, - { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, + { be_const_key_weak(packet_ack, -1), be_const_closure(Matter_Device_packet_ack_closure) }, + { be_const_key_weak(save_param, 48), be_const_closure(Matter_Device_save_param_closure) }, { be_const_key_weak(_start_mdns_announce, -1), be_const_closure(Matter_Device__start_mdns_announce_closure) }, - { be_const_key_weak(msg_handler, -1), be_const_var(2) }, - { be_const_key_weak(w1, 35), be_const_var(16) }, - { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_device_X2Ejson) }, - { be_const_key_weak(compute_qrcode_content, -1), be_const_closure(Matter_Device_compute_qrcode_content_closure) }, - { be_const_key_weak(msg_received, -1), be_const_closure(Matter_Device_msg_received_closure) }, + { be_const_key_weak(start_operational_dicovery_deferred, -1), be_const_closure(Matter_Device_start_operational_dicovery_deferred_closure) }, + { be_const_key_weak(ui, 47), be_const_var(4) }, + { be_const_key_weak(w0, -1), be_const_var(15) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Device_invoke_request_closure) }, + { be_const_key_weak(passcode, 15), be_const_var(12) }, + { be_const_key_weak(start_mdns_announce_hostnames, -1), be_const_closure(Matter_Device_start_mdns_announce_hostnames_closure) }, + { be_const_key_weak(hostname_eth, 31), be_const_var(8) }, + { be_const_key_weak(L, -1), be_const_var(17) }, + { be_const_key_weak(every_second, 8), be_const_closure(Matter_Device_every_second_closure) }, + { be_const_key_weak(VENDOR_ID, -1), be_const_int(65521) }, + { be_const_key_weak(init, -1), be_const_closure(Matter_Device_init_closure) }, + { be_const_key_weak(get_active_endpoints, -1), be_const_closure(Matter_Device_get_active_endpoints_closure) }, + { be_const_key_weak(iterations, 43), be_const_var(13) }, { be_const_key_weak(commissioning_instance_eth, -1), be_const_var(6) }, - { be_const_key_weak(commissioning_instance_wifi, 0), be_const_var(5) }, - { be_const_key_weak(PASSCODE_DEFAULT, 13), be_const_int(20202021) }, + { be_const_key_weak(start_operational_dicovery, 41), be_const_closure(Matter_Device_start_operational_dicovery_closure) }, + { be_const_key_weak(start_commissioning_complete, 16), be_const_closure(Matter_Device_start_commissioning_complete_closure) }, + { be_const_key_weak(start_basic_commissioning, 42), be_const_closure(Matter_Device_start_basic_commissioning_closure) }, + { be_const_key_weak(productid, -1), be_const_var(10) }, + { be_const_key_weak(PRODUCT_ID, -1), be_const_int(32768) }, + { be_const_key_weak(PBKDF_ITERATIONS, 36), be_const_int(1000) }, + { be_const_key_weak(salt, 5), be_const_var(14) }, + { be_const_key_weak(w1, -1), be_const_var(16) }, + { be_const_key_weak(start_commissioning_complete_deferred, -1), be_const_closure(Matter_Device_start_commissioning_complete_deferred_closure) }, + { be_const_key_weak(mdns_announce_op_discovery, 27), be_const_closure(Matter_Device_mdns_announce_op_discovery_closure) }, + { be_const_key_weak(discriminator, -1), be_const_var(11) }, + { be_const_key_weak(commissioning_instance_wifi, -1), be_const_var(5) }, + { be_const_key_weak(start_udp, 34), be_const_closure(Matter_Device_start_udp_closure) }, + { be_const_key_weak(UDP_PORT, -1), be_const_int(5540) }, + { be_const_key_weak(compute_pbkdf, -1), be_const_closure(Matter_Device_compute_pbkdf_closure) }, { be_const_key_weak(hostname_wifi, -1), be_const_var(7) }, - { be_const_key_weak(iterations, -1), be_const_var(13) }, - { be_const_key_weak(save_param, -1), be_const_closure(Matter_Device_save_param_closure) }, + { be_const_key_weak(udp_server, 2), be_const_var(1) }, + { be_const_key_weak(finish_commissioning, -1), be_const_closure(Matter_Device_finish_commissioning_closure) }, + { be_const_key_weak(compute_qrcode_content, -1), be_const_closure(Matter_Device_compute_qrcode_content_closure) }, + { be_const_key_weak(PASSCODE_DEFAULT, -1), be_const_int(20202021) }, + { be_const_key_weak(vendorid, 44), be_const_var(9) }, + { be_const_key_weak(sessions, -1), be_const_var(3) }, + { be_const_key_weak(mdns_announce_op_discovery_all_sessions, -1), be_const_closure(Matter_Device_mdns_announce_op_discovery_all_sessions_closure) }, + { be_const_key_weak(msg_received, 6), be_const_closure(Matter_Device_msg_received_closure) }, + { be_const_key_weak(stop, -1), be_const_closure(Matter_Device_stop_closure) }, { be_const_key_weak(load_param, -1), be_const_closure(Matter_Device_load_param_closure) }, })), be_str_weak(Matter_Device) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h index 2c89b8f4f..1e828f15b 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM.h @@ -6,19 +6,124 @@ extern const bclass be_class_Matter_Response_container; +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(Matter_Response_container_tostring, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[14]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(), + /* K2 */ be_nested_str_weak(endpoint), + /* K3 */ be_nested_str_weak(format), + /* K4 */ be_nested_str_weak(_X5B_X2502X_X5D), + /* K5 */ be_nested_str_weak(_X5B_X2A_X2A_X5D), + /* K6 */ be_nested_str_weak(cluster), + /* K7 */ be_nested_str_weak(_X2504X_X2F), + /* K8 */ be_nested_str_weak(_X2A_X2A_X2A_X2A_X2F), + /* K9 */ be_nested_str_weak(attribute), + /* K10 */ be_nested_str_weak(_X2504X), + /* K11 */ be_nested_str_weak(command), + /* K12 */ be_nested_str_weak(Exception_X3E_X20), + /* K13 */ be_nested_str_weak(_X2C_X20), + }), + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[66]) { /* code */ + 0xA8020031, // 0000 EXBLK 0 #0033 + 0xA4060000, // 0001 IMPORT R1 K0 + 0x58080001, // 0002 LDCONST R2 K1 + 0x880C0102, // 0003 GETMBR R3 R0 K2 + 0x4C100000, // 0004 LDNIL R4 + 0x200C0604, // 0005 NE R3 R3 R4 + 0x780E0004, // 0006 JMPF R3 #000C + 0x8C0C0303, // 0007 GETMET R3 R1 K3 + 0x58140004, // 0008 LDCONST R5 K4 + 0x88180102, // 0009 GETMBR R6 R0 K2 + 0x7C0C0600, // 000A CALL R3 3 + 0x70020000, // 000B JMP #000D + 0x580C0005, // 000C LDCONST R3 K5 + 0x00080403, // 000D ADD R2 R2 R3 + 0x880C0106, // 000E GETMBR R3 R0 K6 + 0x4C100000, // 000F LDNIL R4 + 0x200C0604, // 0010 NE R3 R3 R4 + 0x780E0004, // 0011 JMPF R3 #0017 + 0x8C0C0303, // 0012 GETMET R3 R1 K3 + 0x58140007, // 0013 LDCONST R5 K7 + 0x88180106, // 0014 GETMBR R6 R0 K6 + 0x7C0C0600, // 0015 CALL R3 3 + 0x70020000, // 0016 JMP #0018 + 0x580C0008, // 0017 LDCONST R3 K8 + 0x00080403, // 0018 ADD R2 R2 R3 + 0x880C0109, // 0019 GETMBR R3 R0 K9 + 0x4C100000, // 001A LDNIL R4 + 0x200C0604, // 001B NE R3 R3 R4 + 0x780E0004, // 001C JMPF R3 #0022 + 0x8C0C0303, // 001D GETMET R3 R1 K3 + 0x5814000A, // 001E LDCONST R5 K10 + 0x88180109, // 001F GETMBR R6 R0 K9 + 0x7C0C0600, // 0020 CALL R3 3 + 0x70020000, // 0021 JMP #0023 + 0x580C0001, // 0022 LDCONST R3 K1 + 0x00080403, // 0023 ADD R2 R2 R3 + 0x880C010B, // 0024 GETMBR R3 R0 K11 + 0x4C100000, // 0025 LDNIL R4 + 0x200C0604, // 0026 NE R3 R3 R4 + 0x780E0004, // 0027 JMPF R3 #002D + 0x8C0C0303, // 0028 GETMET R3 R1 K3 + 0x5814000A, // 0029 LDCONST R5 K10 + 0x88180109, // 002A GETMBR R6 R0 K9 + 0x7C0C0600, // 002B CALL R3 3 + 0x70020000, // 002C JMP #002E + 0x580C0001, // 002D LDCONST R3 K1 + 0x00080403, // 002E ADD R2 R2 R3 + 0xA8040001, // 002F EXBLK 1 1 + 0x80040400, // 0030 RET 1 R2 + 0xA8040001, // 0031 EXBLK 1 1 + 0x7002000D, // 0032 JMP #0041 + 0xAC040002, // 0033 CATCH R1 0 2 + 0x7002000A, // 0034 JMP #0040 + 0x600C0008, // 0035 GETGBL R3 G8 + 0x5C100200, // 0036 MOVE R4 R1 + 0x7C0C0200, // 0037 CALL R3 1 + 0x000E1803, // 0038 ADD R3 K12 R3 + 0x000C070D, // 0039 ADD R3 R3 K13 + 0x60100008, // 003A GETGBL R4 G8 + 0x5C140400, // 003B MOVE R5 R2 + 0x7C100200, // 003C CALL R4 1 + 0x000C0604, // 003D ADD R3 R3 R4 + 0x80040600, // 003E RET 1 R3 + 0x70020000, // 003F JMP #0041 + 0xB0080000, // 0040 RAISE 2 R0 R0 + 0x80000000, // 0041 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Response_container ********************************************************************/ be_local_class(Matter_Response_container, 5, NULL, - be_nested_map(5, + be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(tostring, -1), be_const_closure(Matter_Response_container_tostring_closure) }, + { be_const_key_weak(cluster, 3), be_const_var(1) }, { be_const_key_weak(command, -1), be_const_var(3) }, + { be_const_key_weak(status, 0), be_const_var(4) }, + { be_const_key_weak(endpoint, -1), be_const_var(0) }, { be_const_key_weak(attribute, -1), be_const_var(2) }, - { be_const_key_weak(cluster, -1), be_const_var(1) }, - { be_const_key_weak(endpoint, 0), be_const_var(0) }, - { be_const_key_weak(status, -1), be_const_var(4) }, })), be_str_weak(Matter_Response_container) ); @@ -37,15 +142,15 @@ extern const bclass be_class_Matter_IM; ********************************************************************/ be_local_closure(Matter_IM_process_timed_request, /* name */ be_nested_proto( - 15, /* nstack */ - 5, /* argc */ + 13, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ + ( &(const bvalue[26]) { /* constants */ /* K0 */ be_nested_str_weak(string), /* K1 */ be_nested_str_weak(matter), /* K2 */ be_nested_str_weak(TimedRequestMessage), @@ -57,75 +162,77 @@ be_local_closure(Matter_IM_process_timed_request, /* name */ /* K8 */ be_nested_str_weak(format), /* K9 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_IM_X20_X20_X20TimedRequest_X3D_X25i_X20from_X20_X5B_X25s_X5D_X3A_X25i), /* K10 */ be_nested_str_weak(timeout), - /* K11 */ be_const_int(2), - /* K12 */ be_nested_str_weak(StatusResponseMessage), - /* K13 */ be_nested_str_weak(status), - /* K14 */ be_nested_str_weak(SUCCESS), - /* K15 */ be_nested_str_weak(build_response), - /* K16 */ be_const_int(1), - /* K17 */ be_nested_str_weak(encode), - /* K18 */ be_nested_str_weak(to_TLV), - /* K19 */ be_nested_str_weak(encrypt), - /* K20 */ be_nested_str_weak(responder), - /* K21 */ be_nested_str_weak(send_response), - /* K22 */ be_nested_str_weak(raw), - /* K23 */ be_nested_str_weak(message_counter), + /* K11 */ be_nested_str_weak(remote_ip), + /* K12 */ be_nested_str_weak(remote_port), + /* K13 */ be_const_int(2), + /* K14 */ be_nested_str_weak(StatusResponseMessage), + /* K15 */ be_nested_str_weak(status), + /* K16 */ be_nested_str_weak(SUCCESS), + /* K17 */ be_nested_str_weak(build_response), + /* K18 */ be_const_int(1), + /* K19 */ be_nested_str_weak(encode), + /* K20 */ be_nested_str_weak(to_TLV), + /* K21 */ be_nested_str_weak(encrypt), + /* K22 */ be_nested_str_weak(responder), + /* K23 */ be_nested_str_weak(send_response), + /* K24 */ be_nested_str_weak(raw), + /* K25 */ be_nested_str_weak(message_counter), }), be_str_weak(process_timed_request), &be_const_str_solidified, ( &(const binstruction[52]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x8C180D02, // 0002 GETMET R6 R6 K2 - 0x7C180200, // 0003 CALL R6 1 - 0x8C180D03, // 0004 GETMET R6 R6 K3 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C180400, // 0006 CALL R6 2 - 0xB81E0800, // 0007 GETNGBL R7 K4 - 0x8C1C0F05, // 0008 GETMET R7 R7 K5 - 0x60240008, // 0009 GETGBL R9 G8 - 0x5C280C00, // 000A MOVE R10 R6 - 0x7C240200, // 000B CALL R9 1 - 0x00260C09, // 000C ADD R9 K6 R9 - 0x58280007, // 000D LDCONST R10 K7 - 0x7C1C0600, // 000E CALL R7 3 - 0xB81E0800, // 000F GETNGBL R7 K4 - 0x8C1C0F05, // 0010 GETMET R7 R7 K5 - 0x8C240B08, // 0011 GETMET R9 R5 K8 - 0x582C0009, // 0012 LDCONST R11 K9 - 0x88300D0A, // 0013 GETMBR R12 R6 K10 - 0x5C340600, // 0014 MOVE R13 R3 - 0x5C380800, // 0015 MOVE R14 R4 - 0x7C240A00, // 0016 CALL R9 5 - 0x5828000B, // 0017 LDCONST R10 K11 - 0x7C1C0600, // 0018 CALL R7 3 - 0xB81E0200, // 0019 GETNGBL R7 K1 - 0x8C1C0F0C, // 001A GETMET R7 R7 K12 - 0x7C1C0200, // 001B CALL R7 1 - 0xB8220200, // 001C GETNGBL R8 K1 - 0x8820110E, // 001D GETMBR R8 R8 K14 - 0x901E1A08, // 001E SETMBR R7 K13 R8 - 0x8C20030F, // 001F GETMET R8 R1 K15 - 0x58280010, // 0020 LDCONST R10 K16 - 0x502C0200, // 0021 LDBOOL R11 1 0 - 0x7C200600, // 0022 CALL R8 3 - 0x8C241111, // 0023 GETMET R9 R8 K17 - 0x8C2C0F12, // 0024 GETMET R11 R7 K18 - 0x7C2C0200, // 0025 CALL R11 1 - 0x8C2C1711, // 0026 GETMET R11 R11 K17 - 0x7C2C0200, // 0027 CALL R11 1 - 0x7C240400, // 0028 CALL R9 2 - 0x8C241113, // 0029 GETMET R9 R8 K19 - 0x7C240200, // 002A CALL R9 1 - 0x88240114, // 002B GETMBR R9 R0 K20 - 0x8C241315, // 002C GETMET R9 R9 K21 - 0x882C1116, // 002D GETMBR R11 R8 K22 - 0x5C300600, // 002E MOVE R12 R3 - 0x5C340800, // 002F MOVE R13 R4 - 0x88381117, // 0030 GETMBR R14 R8 K23 - 0x7C240A00, // 0031 CALL R9 5 - 0x50240200, // 0032 LDBOOL R9 1 0 - 0x80041200, // 0033 RET 1 R9 + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0xB8160800, // 000F GETNGBL R5 K4 + 0x8C140B05, // 0010 GETMET R5 R5 K5 + 0x8C1C0708, // 0011 GETMET R7 R3 K8 + 0x58240009, // 0012 LDCONST R9 K9 + 0x8828090A, // 0013 GETMBR R10 R4 K10 + 0x882C030B, // 0014 GETMBR R11 R1 K11 + 0x8830030C, // 0015 GETMBR R12 R1 K12 + 0x7C1C0A00, // 0016 CALL R7 5 + 0x5820000D, // 0017 LDCONST R8 K13 + 0x7C140600, // 0018 CALL R5 3 + 0xB8160200, // 0019 GETNGBL R5 K1 + 0x8C140B0E, // 001A GETMET R5 R5 K14 + 0x7C140200, // 001B CALL R5 1 + 0xB81A0200, // 001C GETNGBL R6 K1 + 0x88180D10, // 001D GETMBR R6 R6 K16 + 0x90161E06, // 001E SETMBR R5 K15 R6 + 0x8C180311, // 001F GETMET R6 R1 K17 + 0x58200012, // 0020 LDCONST R8 K18 + 0x50240200, // 0021 LDBOOL R9 1 0 + 0x7C180600, // 0022 CALL R6 3 + 0x8C1C0D13, // 0023 GETMET R7 R6 K19 + 0x8C240B14, // 0024 GETMET R9 R5 K20 + 0x7C240200, // 0025 CALL R9 1 + 0x8C241313, // 0026 GETMET R9 R9 K19 + 0x7C240200, // 0027 CALL R9 1 + 0x7C1C0400, // 0028 CALL R7 2 + 0x8C1C0D15, // 0029 GETMET R7 R6 K21 + 0x7C1C0200, // 002A CALL R7 1 + 0x881C0116, // 002B GETMBR R7 R0 K22 + 0x8C1C0F17, // 002C GETMET R7 R7 K23 + 0x88240D18, // 002D GETMBR R9 R6 K24 + 0x8828030B, // 002E GETMBR R10 R1 K11 + 0x882C030C, // 002F GETMBR R11 R1 K12 + 0x88300D19, // 0030 GETMBR R12 R6 K25 + 0x7C1C0A00, // 0031 CALL R7 5 + 0x501C0200, // 0032 LDBOOL R7 1 0 + 0x80040E00, // 0033 RET 1 R7 }) ) ); @@ -137,8 +244,8 @@ be_local_closure(Matter_IM_process_timed_request, /* name */ ********************************************************************/ be_local_closure(Matter_IM_process_status_response, /* name */ be_nested_proto( - 13, /* nstack */ - 5, /* argc */ + 11, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -158,48 +265,21 @@ be_local_closure(Matter_IM_process_status_response, /* name */ be_str_weak(process_status_response), &be_const_str_solidified, ( &(const binstruction[15]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0x8C180501, // 0001 GETMET R6 R2 K1 - 0x58200002, // 0002 LDCONST R8 K2 - 0x542600FE, // 0003 LDINT R9 255 - 0x7C180600, // 0004 CALL R6 3 - 0xB81E0600, // 0005 GETNGBL R7 K3 - 0x8C1C0F04, // 0006 GETMET R7 R7 K4 - 0x8C240B05, // 0007 GETMET R9 R5 K5 - 0x582C0006, // 0008 LDCONST R11 K6 - 0x5C300C00, // 0009 MOVE R12 R6 - 0x7C240600, // 000A CALL R9 3 - 0x58280007, // 000B LDCONST R10 K7 - 0x7C1C0600, // 000C CALL R7 3 - 0x501C0200, // 000D LDBOOL R7 1 0 - 0x80040E00, // 000E RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_IM_init, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(responder), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x8C100501, // 0001 GETMET R4 R2 K1 + 0x58180002, // 0002 LDCONST R6 K2 + 0x541E00FE, // 0003 LDINT R7 255 + 0x7C100600, // 0004 CALL R4 3 + 0xB8160600, // 0005 GETNGBL R5 K3 + 0x8C140B04, // 0006 GETMET R5 R5 K4 + 0x8C1C0705, // 0007 GETMET R7 R3 K5 + 0x58240006, // 0008 LDCONST R9 K6 + 0x5C280800, // 0009 MOVE R10 R4 + 0x7C1C0600, // 000A CALL R7 3 + 0x58200007, // 000B LDCONST R8 K7 + 0x7C140600, // 000C CALL R5 3 + 0x50140200, // 000D LDBOOL R5 1 0 + 0x80040A00, // 000E RET 1 R5 }) ) ); @@ -230,13 +310,1167 @@ be_local_closure(Matter_IM_every_second, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: report_data +********************************************************************/ +be_local_closure(Matter_IM_report_data, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(ReportDataMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20ReportDataMessage_X3D), + /* K7 */ be_const_int(3), + }), + be_str_weak(report_data), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_invoke_response +********************************************************************/ +be_local_closure(Matter_IM_process_invoke_response, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(InvokeResponseMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20InvokeResponseMessage_X3D), + /* K7 */ be_const_int(3), + }), + be_str_weak(process_invoke_response), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_read_request +********************************************************************/ +be_local_closure(Matter_IM_process_read_request, /* name */ + be_nested_proto( + 15, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 1, /* has sup protos */ + ( &(const struct bproto*[ 2]) { + be_nested_proto( + 18, /* nstack */ + 4, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 1]) { /* upvals */ + be_local_const_upval(1, 1), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[32]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(get_attribute_name), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_nested_str_weak(_X20_X28), + /* K6 */ be_nested_str_weak(_X29), + /* K7 */ be_nested_str_weak(), + /* K8 */ be_nested_str_weak(read_attribute), + /* K9 */ be_nested_str_weak(AttributeReportIB), + /* K10 */ be_nested_str_weak(attribute_data), + /* K11 */ be_nested_str_weak(AttributeDataIB), + /* K12 */ be_nested_str_weak(data_version), + /* K13 */ be_const_int(1), + /* K14 */ be_nested_str_weak(path), + /* K15 */ be_nested_str_weak(AttributePathIB), + /* K16 */ be_nested_str_weak(endpoint), + /* K17 */ be_nested_str_weak(data), + /* K18 */ be_nested_str_weak(attribute_reports), + /* K19 */ be_nested_str_weak(push), + /* K20 */ be_nested_str_weak(tasmota), + /* K21 */ be_nested_str_weak(log), + /* K22 */ be_nested_str_weak(format), + /* K23 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20_X25s_X25s_X20_X2D_X20_X25s), + /* K24 */ be_const_int(2), + /* K25 */ be_nested_str_weak(status), + /* K26 */ be_nested_str_weak(attribute_status), + /* K27 */ be_nested_str_weak(AttributeStatusIB), + /* K28 */ be_nested_str_weak(StatusIB), + /* K29 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20_X25s_X25s_X20_X2D_X20STATUS_X3A_X200x_X2502X_X20_X25s), + /* K30 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K31 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20_X25s_X25s_X20_X2D_X20IGNORED), + }), + be_str_weak(read_single_attribute), + &be_const_str_solidified, + ( &(const binstruction[150]) { /* code */ + 0xA4120000, // 0000 IMPORT R4 K0 + 0xB8160200, // 0001 GETNGBL R5 K1 + 0x8C140B02, // 0002 GETMET R5 R5 K2 + 0x881C0503, // 0003 GETMBR R7 R2 K3 + 0x88200504, // 0004 GETMBR R8 R2 K4 + 0x7C140600, // 0005 CALL R5 3 + 0x78160002, // 0006 JMPF R5 #000A + 0x001A0A05, // 0007 ADD R6 K5 R5 + 0x00180D06, // 0008 ADD R6 R6 K6 + 0x70020000, // 0009 JMP #000B + 0x58180007, // 000A LDCONST R6 K7 + 0x5C140C00, // 000B MOVE R5 R6 + 0x4C180000, // 000C LDNIL R6 + 0x20180206, // 000D NE R6 R1 R6 + 0x781A0004, // 000E JMPF R6 #0014 + 0x8C180308, // 000F GETMET R6 R1 K8 + 0x68200000, // 0010 GETUPV R8 U0 + 0x5C240400, // 0011 MOVE R9 R2 + 0x7C180600, // 0012 CALL R6 3 + 0x70020000, // 0013 JMP #0015 + 0x4C180000, // 0014 LDNIL R6 + 0x4C1C0000, // 0015 LDNIL R7 + 0x201C0C07, // 0016 NE R7 R6 R7 + 0x781E0030, // 0017 JMPF R7 #0049 + 0xB81E0200, // 0018 GETNGBL R7 K1 + 0x8C1C0F09, // 0019 GETMET R7 R7 K9 + 0x7C1C0200, // 001A CALL R7 1 + 0xB8220200, // 001B GETNGBL R8 K1 + 0x8C20110B, // 001C GETMET R8 R8 K11 + 0x7C200200, // 001D CALL R8 1 + 0x901E1408, // 001E SETMBR R7 K10 R8 + 0x88200F0A, // 001F GETMBR R8 R7 K10 + 0x9022190D, // 0020 SETMBR R8 K12 K13 + 0x88200F0A, // 0021 GETMBR R8 R7 K10 + 0xB8260200, // 0022 GETNGBL R9 K1 + 0x8C24130F, // 0023 GETMET R9 R9 K15 + 0x7C240200, // 0024 CALL R9 1 + 0x90221C09, // 0025 SETMBR R8 K14 R9 + 0x88200F0A, // 0026 GETMBR R8 R7 K10 + 0x8820110E, // 0027 GETMBR R8 R8 K14 + 0x88240510, // 0028 GETMBR R9 R2 K16 + 0x90222009, // 0029 SETMBR R8 K16 R9 + 0x88200F0A, // 002A GETMBR R8 R7 K10 + 0x8820110E, // 002B GETMBR R8 R8 K14 + 0x88240503, // 002C GETMBR R9 R2 K3 + 0x90220609, // 002D SETMBR R8 K3 R9 + 0x88200F0A, // 002E GETMBR R8 R7 K10 + 0x8820110E, // 002F GETMBR R8 R8 K14 + 0x88240504, // 0030 GETMBR R9 R2 K4 + 0x90220809, // 0031 SETMBR R8 K4 R9 + 0x88200F0A, // 0032 GETMBR R8 R7 K10 + 0x90222206, // 0033 SETMBR R8 K17 R6 + 0x88200112, // 0034 GETMBR R8 R0 K18 + 0x8C201113, // 0035 GETMET R8 R8 K19 + 0x5C280E00, // 0036 MOVE R10 R7 + 0x7C200400, // 0037 CALL R8 2 + 0xB8222800, // 0038 GETNGBL R8 K20 + 0x8C201115, // 0039 GETMET R8 R8 K21 + 0x8C280916, // 003A GETMET R10 R4 K22 + 0x58300017, // 003B LDCONST R12 K23 + 0x60340008, // 003C GETGBL R13 G8 + 0x5C380400, // 003D MOVE R14 R2 + 0x7C340200, // 003E CALL R13 1 + 0x5C380A00, // 003F MOVE R14 R5 + 0x603C0008, // 0040 GETGBL R15 G8 + 0x5C400C00, // 0041 MOVE R16 R6 + 0x7C3C0200, // 0042 CALL R15 1 + 0x7C280A00, // 0043 CALL R10 5 + 0x582C0018, // 0044 LDCONST R11 K24 + 0x7C200600, // 0045 CALL R8 3 + 0x50200200, // 0046 LDBOOL R8 1 0 + 0x80041000, // 0047 RET 1 R8 + 0x7002004B, // 0048 JMP #0095 + 0x881C0519, // 0049 GETMBR R7 R2 K25 + 0x4C200000, // 004A LDNIL R8 + 0x201C0E08, // 004B NE R7 R7 R8 + 0x781E003C, // 004C JMPF R7 #008A + 0x780E003A, // 004D JMPF R3 #0089 + 0xB81E0200, // 004E GETNGBL R7 K1 + 0x8C1C0F09, // 004F GETMET R7 R7 K9 + 0x7C1C0200, // 0050 CALL R7 1 + 0xB8220200, // 0051 GETNGBL R8 K1 + 0x8C20111B, // 0052 GETMET R8 R8 K27 + 0x7C200200, // 0053 CALL R8 1 + 0x901E3408, // 0054 SETMBR R7 K26 R8 + 0x88200F1A, // 0055 GETMBR R8 R7 K26 + 0xB8260200, // 0056 GETNGBL R9 K1 + 0x8C24130F, // 0057 GETMET R9 R9 K15 + 0x7C240200, // 0058 CALL R9 1 + 0x90221C09, // 0059 SETMBR R8 K14 R9 + 0x88200F1A, // 005A GETMBR R8 R7 K26 + 0xB8260200, // 005B GETNGBL R9 K1 + 0x8C24131C, // 005C GETMET R9 R9 K28 + 0x7C240200, // 005D CALL R9 1 + 0x90223209, // 005E SETMBR R8 K25 R9 + 0x88200F1A, // 005F GETMBR R8 R7 K26 + 0x8820110E, // 0060 GETMBR R8 R8 K14 + 0x88240510, // 0061 GETMBR R9 R2 K16 + 0x90222009, // 0062 SETMBR R8 K16 R9 + 0x88200F1A, // 0063 GETMBR R8 R7 K26 + 0x8820110E, // 0064 GETMBR R8 R8 K14 + 0x88240503, // 0065 GETMBR R9 R2 K3 + 0x90220609, // 0066 SETMBR R8 K3 R9 + 0x88200F1A, // 0067 GETMBR R8 R7 K26 + 0x8820110E, // 0068 GETMBR R8 R8 K14 + 0x88240504, // 0069 GETMBR R9 R2 K4 + 0x90220809, // 006A SETMBR R8 K4 R9 + 0x88200F1A, // 006B GETMBR R8 R7 K26 + 0x88201119, // 006C GETMBR R8 R8 K25 + 0x88240519, // 006D GETMBR R9 R2 K25 + 0x90223209, // 006E SETMBR R8 K25 R9 + 0x88200112, // 006F GETMBR R8 R0 K18 + 0x8C201113, // 0070 GETMET R8 R8 K19 + 0x5C280E00, // 0071 MOVE R10 R7 + 0x7C200400, // 0072 CALL R8 2 + 0xB8222800, // 0073 GETNGBL R8 K20 + 0x8C201115, // 0074 GETMET R8 R8 K21 + 0x8C280916, // 0075 GETMET R10 R4 K22 + 0x5830001D, // 0076 LDCONST R12 K29 + 0x60340008, // 0077 GETGBL R13 G8 + 0x5C380400, // 0078 MOVE R14 R2 + 0x7C340200, // 0079 CALL R13 1 + 0x5C380A00, // 007A MOVE R14 R5 + 0x883C0519, // 007B GETMBR R15 R2 K25 + 0x88400519, // 007C GETMBR R16 R2 K25 + 0xB8460200, // 007D GETNGBL R17 K1 + 0x8844231E, // 007E GETMBR R17 R17 K30 + 0x1C402011, // 007F EQ R16 R16 R17 + 0x78420001, // 0080 JMPF R16 #0083 + 0x5840001E, // 0081 LDCONST R16 K30 + 0x70020000, // 0082 JMP #0084 + 0x58400007, // 0083 LDCONST R16 K7 + 0x7C280C00, // 0084 CALL R10 6 + 0x582C0018, // 0085 LDCONST R11 K24 + 0x7C200600, // 0086 CALL R8 3 + 0x50200200, // 0087 LDBOOL R8 1 0 + 0x80041000, // 0088 RET 1 R8 + 0x7002000A, // 0089 JMP #0095 + 0xB81E2800, // 008A GETNGBL R7 K20 + 0x8C1C0F15, // 008B GETMET R7 R7 K21 + 0x8C240916, // 008C GETMET R9 R4 K22 + 0x582C001F, // 008D LDCONST R11 K31 + 0x60300008, // 008E GETGBL R12 G8 + 0x5C340400, // 008F MOVE R13 R2 + 0x7C300200, // 0090 CALL R12 1 + 0x5C340A00, // 0091 MOVE R13 R5 + 0x7C240800, // 0092 CALL R9 4 + 0x58280018, // 0093 LDCONST R10 K24 + 0x7C1C0600, // 0094 CALL R7 3 + 0x80000000, // 0095 RET 0 + }) + ), + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 0, /* varg */ + 1, /* has upvals */ + ( &(const bupvaldesc[ 2]) { /* upvals */ + be_local_const_upval(1, 4), + be_local_const_upval(1, 7), + }), + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(_X3Clambda_X3E), + &be_const_str_solidified, + ( &(const binstruction[ 7]) { /* code */ + 0x680C0000, // 0000 GETUPV R3 U0 + 0x68100001, // 0001 GETUPV R4 U1 + 0x5C140000, // 0002 MOVE R5 R0 + 0x5C180200, // 0003 MOVE R6 R1 + 0x5C1C0400, // 0004 MOVE R7 R2 + 0x7C0C0800, // 0005 CALL R3 4 + 0x80040600, // 0006 RET 1 R3 + }) + ), + }), + 1, /* has constants */ + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(get_active_endpoints), + /* K2 */ be_nested_str_weak(tasmota), + /* K3 */ be_nested_str_weak(log), + /* K4 */ be_nested_str_weak(MTR_X3A_X20IM_X3Aread_request_X20processing_X20start), + /* K5 */ be_const_int(3), + /* K6 */ be_nested_str_weak(matter), + /* K7 */ be_nested_str_weak(Response_container), + /* K8 */ be_nested_str_weak(ReadRequestMessage), + /* K9 */ be_nested_str_weak(from_TLV), + /* K10 */ be_nested_str_weak(attributes_requests), + /* K11 */ be_nested_str_weak(ReportDataMessage), + /* K12 */ be_nested_str_weak(attribute_reports), + /* K13 */ be_nested_str_weak(endpoint), + /* K14 */ be_nested_str_weak(cluster), + /* K15 */ be_nested_str_weak(attribute), + /* K16 */ be_nested_str_weak(status), + /* K17 */ be_nested_str_weak(UNSUPPORTED_ATTRIBUTE), + /* K18 */ be_nested_str_weak(get_attribute_name), + /* K19 */ be_nested_str_weak(MTR_X3A_X20Read_Attr_X20), + /* K20 */ be_nested_str_weak(_X20_X28), + /* K21 */ be_nested_str_weak(_X29), + /* K22 */ be_nested_str_weak(), + /* K23 */ be_const_int(2), + /* K24 */ be_nested_str_weak(process_attribute_expansion), + /* K25 */ be_nested_str_weak(stop_iteration), + /* K26 */ be_nested_str_weak(MTR_X3A_X20ReportDataMessage_X3D), + /* K27 */ be_nested_str_weak(MTR_X3A_X20ReportDataMessageTLV_X3D), + /* K28 */ be_nested_str_weak(to_TLV), + /* K29 */ be_nested_str_weak(send_attr_report), + }), + be_str_weak(process_read_request), + &be_const_str_solidified, + ( &(const binstruction[125]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x7C0C0200, // 0002 CALL R3 1 + 0x84100000, // 0003 CLOSURE R4 P0 + 0xB8160400, // 0004 GETNGBL R5 K2 + 0x8C140B03, // 0005 GETMET R5 R5 K3 + 0x581C0004, // 0006 LDCONST R7 K4 + 0x58200005, // 0007 LDCONST R8 K5 + 0x7C140600, // 0008 CALL R5 3 + 0xB8160C00, // 0009 GETNGBL R5 K6 + 0x8C140B07, // 000A GETMET R5 R5 K7 + 0x7C140200, // 000B CALL R5 1 + 0xB81A0C00, // 000C GETNGBL R6 K6 + 0x8C180D08, // 000D GETMET R6 R6 K8 + 0x7C180200, // 000E CALL R6 1 + 0x8C180D09, // 000F GETMET R6 R6 K9 + 0x5C200400, // 0010 MOVE R8 R2 + 0x7C180400, // 0011 CALL R6 2 + 0x881C0D0A, // 0012 GETMBR R7 R6 K10 + 0x4C200000, // 0013 LDNIL R8 + 0x201C0E08, // 0014 NE R7 R7 R8 + 0x781E0063, // 0015 JMPF R7 #007A + 0xB81E0C00, // 0016 GETNGBL R7 K6 + 0x8C1C0F0B, // 0017 GETMET R7 R7 K11 + 0x7C1C0200, // 0018 CALL R7 1 + 0x60200012, // 0019 GETGBL R8 G18 + 0x7C200000, // 001A CALL R8 0 + 0x901E1808, // 001B SETMBR R7 K12 R8 + 0x60200010, // 001C GETGBL R8 G16 + 0x88240D0A, // 001D GETMBR R9 R6 K10 + 0x7C200200, // 001E CALL R8 1 + 0xA8020040, // 001F EXBLK 0 #0061 + 0x5C241000, // 0020 MOVE R9 R8 + 0x7C240000, // 0021 CALL R9 0 + 0x8828130D, // 0022 GETMBR R10 R9 K13 + 0x90161A0A, // 0023 SETMBR R5 K13 R10 + 0x8828130E, // 0024 GETMBR R10 R9 K14 + 0x90161C0A, // 0025 SETMBR R5 K14 R10 + 0x8828130F, // 0026 GETMBR R10 R9 K15 + 0x90161E0A, // 0027 SETMBR R5 K15 R10 + 0xB82A0C00, // 0028 GETNGBL R10 K6 + 0x88281511, // 0029 GETMBR R10 R10 K17 + 0x9016200A, // 002A SETMBR R5 K16 R10 + 0x88280B0D, // 002B GETMBR R10 R5 K13 + 0x4C2C0000, // 002C LDNIL R11 + 0x1C28140B, // 002D EQ R10 R10 R11 + 0x742A0007, // 002E JMPT R10 #0037 + 0x88280B0E, // 002F GETMBR R10 R5 K14 + 0x4C2C0000, // 0030 LDNIL R11 + 0x1C28140B, // 0031 EQ R10 R10 R11 + 0x742A0003, // 0032 JMPT R10 #0037 + 0x88280B0F, // 0033 GETMBR R10 R5 K15 + 0x4C2C0000, // 0034 LDNIL R11 + 0x1C28140B, // 0035 EQ R10 R10 R11 + 0x782A0023, // 0036 JMPF R10 #005B + 0x88280B0E, // 0037 GETMBR R10 R5 K14 + 0x4C2C0000, // 0038 LDNIL R11 + 0x2028140B, // 0039 NE R10 R10 R11 + 0x782A0017, // 003A JMPF R10 #0053 + 0x88280B0F, // 003B GETMBR R10 R5 K15 + 0x4C2C0000, // 003C LDNIL R11 + 0x2028140B, // 003D NE R10 R10 R11 + 0x782A0013, // 003E JMPF R10 #0053 + 0xB82A0C00, // 003F GETNGBL R10 K6 + 0x8C281512, // 0040 GETMET R10 R10 K18 + 0x88300B0E, // 0041 GETMBR R12 R5 K14 + 0x88340B0F, // 0042 GETMBR R13 R5 K15 + 0x7C280600, // 0043 CALL R10 3 + 0xB82E0400, // 0044 GETNGBL R11 K2 + 0x8C2C1703, // 0045 GETMET R11 R11 K3 + 0x60340008, // 0046 GETGBL R13 G8 + 0x5C380A00, // 0047 MOVE R14 R5 + 0x7C340200, // 0048 CALL R13 1 + 0x0036260D, // 0049 ADD R13 K19 R13 + 0x782A0002, // 004A JMPF R10 #004E + 0x003A280A, // 004B ADD R14 K20 R10 + 0x00381D15, // 004C ADD R14 R14 K21 + 0x70020000, // 004D JMP #004F + 0x58380016, // 004E LDCONST R14 K22 + 0x00341A0E, // 004F ADD R13 R13 R14 + 0x58380017, // 0050 LDCONST R14 K23 + 0x7C2C0600, // 0051 CALL R11 3 + 0x70020007, // 0052 JMP #005B + 0xB82A0400, // 0053 GETNGBL R10 K2 + 0x8C281503, // 0054 GETMET R10 R10 K3 + 0x60300008, // 0055 GETGBL R12 G8 + 0x5C340A00, // 0056 MOVE R13 R5 + 0x7C300200, // 0057 CALL R12 1 + 0x0032260C, // 0058 ADD R12 K19 R12 + 0x58340017, // 0059 LDCONST R13 K23 + 0x7C280600, // 005A CALL R10 3 + 0x88280100, // 005B GETMBR R10 R0 K0 + 0x8C281518, // 005C GETMET R10 R10 K24 + 0x5C300A00, // 005D MOVE R12 R5 + 0x84340001, // 005E CLOSURE R13 P1 + 0x7C280600, // 005F CALL R10 3 + 0x7001FFBE, // 0060 JMP #0020 + 0x58200019, // 0061 LDCONST R8 K25 + 0xAC200200, // 0062 CATCH R8 1 0 + 0xB0080000, // 0063 RAISE 2 R0 R0 + 0xB8220400, // 0064 GETNGBL R8 K2 + 0x8C201103, // 0065 GETMET R8 R8 K3 + 0x60280008, // 0066 GETGBL R10 G8 + 0x5C2C0E00, // 0067 MOVE R11 R7 + 0x7C280200, // 0068 CALL R10 1 + 0x002A340A, // 0069 ADD R10 K26 R10 + 0x582C0005, // 006A LDCONST R11 K5 + 0x7C200600, // 006B CALL R8 3 + 0xB8220400, // 006C GETNGBL R8 K2 + 0x8C201103, // 006D GETMET R8 R8 K3 + 0x60280008, // 006E GETGBL R10 G8 + 0x8C2C0F1C, // 006F GETMET R11 R7 K28 + 0x7C2C0200, // 0070 CALL R11 1 + 0x7C280200, // 0071 CALL R10 1 + 0x002A360A, // 0072 ADD R10 K27 R10 + 0x582C0005, // 0073 LDCONST R11 K5 + 0x7C200600, // 0074 CALL R8 3 + 0x8C20011D, // 0075 GETMET R8 R0 K29 + 0x5C280200, // 0076 MOVE R10 R1 + 0x5C2C0E00, // 0077 MOVE R11 R7 + 0x7C200600, // 0078 CALL R8 3 + 0xA01C0000, // 0079 CLOSE R7 + 0x501C0200, // 007A LDBOOL R7 1 0 + 0xA0000000, // 007B CLOSE R0 + 0x80040E00, // 007C RET 1 R7 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_write_request +********************************************************************/ +be_local_closure(Matter_IM_process_write_request, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(WriteRequestMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20WriteRequestMessage_X3D), + /* K7 */ be_const_int(3), + }), + be_str_weak(process_write_request), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: process_invoke_request +********************************************************************/ +be_local_closure(Matter_IM_process_invoke_request, /* name */ + be_nested_proto( + 18, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[52]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(tasmota), + /* K2 */ be_nested_str_weak(log), + /* K3 */ be_nested_str_weak(MTR_X3A_X20IM_X3Ainvoke_request_X20processing_X20start), + /* K4 */ be_const_int(3), + /* K5 */ be_nested_str_weak(matter), + /* K6 */ be_nested_str_weak(Response_container), + /* K7 */ be_nested_str_weak(InvokeRequestMessage), + /* K8 */ be_nested_str_weak(from_TLV), + /* K9 */ be_nested_str_weak(invoke_requests), + /* K10 */ be_nested_str_weak(InvokeResponseMessage), + /* K11 */ be_nested_str_weak(suppress_response), + /* K12 */ be_nested_str_weak(invoke_responses), + /* K13 */ be_nested_str_weak(endpoint), + /* K14 */ be_nested_str_weak(command_path), + /* K15 */ be_nested_str_weak(cluster), + /* K16 */ be_nested_str_weak(command), + /* K17 */ be_nested_str_weak(status), + /* K18 */ be_nested_str_weak(UNSUPPORTED_COMMAND), + /* K19 */ be_nested_str_weak(get_command_name), + /* K20 */ be_nested_str_weak(format), + /* K21 */ be_nested_str_weak(0x_X2504X_X2F0x02X), + /* K22 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_cmd_X20_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), + /* K23 */ be_nested_str_weak(remote_ip), + /* K24 */ be_nested_str_weak(remote_port), + /* K25 */ be_const_int(2), + /* K26 */ be_nested_str_weak(responder), + /* K27 */ be_nested_str_weak(device), + /* K28 */ be_nested_str_weak(invoke_request), + /* K29 */ be_nested_str_weak(command_fields), + /* K30 */ be_nested_str_weak(InvokeResponseIB), + /* K31 */ be_nested_str_weak(CommandDataIB), + /* K32 */ be_nested_str_weak(CommandPathIB), + /* K33 */ be_nested_str_weak(push), + /* K34 */ be_nested_str_weak(0x_X2504X_X2F0x_X2502X), + /* K35 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_cmd_X20_X20_X20_X25s), + /* K36 */ be_nested_str_weak(CommandStatusIB), + /* K37 */ be_nested_str_weak(StatusIB), + /* K38 */ be_nested_str_weak(stop_iteration), + /* K39 */ be_nested_str_weak(MTR_X3A_X20invoke_responses_X3D), + /* K40 */ be_const_int(0), + /* K41 */ be_nested_str_weak(MTR_X3A_X20InvokeResponse_X3D), + /* K42 */ be_nested_str_weak(MTR_X3A_X20InvokeResponseTLV_X3D), + /* K43 */ be_nested_str_weak(to_TLV), + /* K44 */ be_nested_str_weak(build_response), + /* K45 */ be_nested_str_weak(encode), + /* K46 */ be_nested_str_weak(encrypt), + /* K47 */ be_nested_str_weak(send_response), + /* K48 */ be_nested_str_weak(raw), + /* K49 */ be_nested_str_weak(message_counter), + /* K50 */ be_nested_str_weak(x_flag_r), + /* K51 */ be_nested_str_weak(build_standalone_ack), + }), + be_str_weak(process_invoke_request), + &be_const_str_solidified, + ( &(const binstruction[242]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x58180003, // 0003 LDCONST R6 K3 + 0x581C0004, // 0004 LDCONST R7 K4 + 0x7C100600, // 0005 CALL R4 3 + 0xB8120A00, // 0006 GETNGBL R4 K5 + 0x8C100906, // 0007 GETMET R4 R4 K6 + 0x7C100200, // 0008 CALL R4 1 + 0xB8160A00, // 0009 GETNGBL R5 K5 + 0x8C140B07, // 000A GETMET R5 R5 K7 + 0x7C140200, // 000B CALL R5 1 + 0x8C140B08, // 000C GETMET R5 R5 K8 + 0x5C1C0400, // 000D MOVE R7 R2 + 0x7C140400, // 000E CALL R5 2 + 0x88180B09, // 000F GETMBR R6 R5 K9 + 0x4C1C0000, // 0010 LDNIL R7 + 0x20180C07, // 0011 NE R6 R6 R7 + 0x781A00DD, // 0012 JMPF R6 #00F1 + 0xB81A0A00, // 0013 GETNGBL R6 K5 + 0x8C180D0A, // 0014 GETMET R6 R6 K10 + 0x7C180200, // 0015 CALL R6 1 + 0x501C0000, // 0016 LDBOOL R7 0 0 + 0x901A1607, // 0017 SETMBR R6 K11 R7 + 0x601C0012, // 0018 GETGBL R7 G18 + 0x7C1C0000, // 0019 CALL R7 0 + 0x901A1807, // 001A SETMBR R6 K12 R7 + 0x601C0010, // 001B GETGBL R7 G16 + 0x88200B09, // 001C GETMBR R8 R5 K9 + 0x7C1C0200, // 001D CALL R7 1 + 0xA802008D, // 001E EXBLK 0 #00AD + 0x5C200E00, // 001F MOVE R8 R7 + 0x7C200000, // 0020 CALL R8 0 + 0x8824110E, // 0021 GETMBR R9 R8 K14 + 0x8824130D, // 0022 GETMBR R9 R9 K13 + 0x90121A09, // 0023 SETMBR R4 K13 R9 + 0x8824110E, // 0024 GETMBR R9 R8 K14 + 0x8824130F, // 0025 GETMBR R9 R9 K15 + 0x90121E09, // 0026 SETMBR R4 K15 R9 + 0x8824110E, // 0027 GETMBR R9 R8 K14 + 0x88241310, // 0028 GETMBR R9 R9 K16 + 0x90122009, // 0029 SETMBR R4 K16 R9 + 0xB8260A00, // 002A GETNGBL R9 K5 + 0x88241312, // 002B GETMBR R9 R9 K18 + 0x90122209, // 002C SETMBR R4 K17 R9 + 0xB8260A00, // 002D GETNGBL R9 K5 + 0x8C241313, // 002E GETMET R9 R9 K19 + 0x882C090F, // 002F GETMBR R11 R4 K15 + 0x88300910, // 0030 GETMBR R12 R4 K16 + 0x7C240600, // 0031 CALL R9 3 + 0x4C280000, // 0032 LDNIL R10 + 0x1C28120A, // 0033 EQ R10 R9 R10 + 0x782A0005, // 0034 JMPF R10 #003B + 0x8C280714, // 0035 GETMET R10 R3 K20 + 0x58300015, // 0036 LDCONST R12 K21 + 0x8834090F, // 0037 GETMBR R13 R4 K15 + 0x88380910, // 0038 GETMBR R14 R4 K16 + 0x7C280800, // 0039 CALL R10 4 + 0x5C241400, // 003A MOVE R9 R10 + 0xB82A0200, // 003B GETNGBL R10 K1 + 0x8C281502, // 003C GETMET R10 R10 K2 + 0x8C300714, // 003D GETMET R12 R3 K20 + 0x58380016, // 003E LDCONST R14 K22 + 0x5C3C1200, // 003F MOVE R15 R9 + 0x88400317, // 0040 GETMBR R16 R1 K23 + 0x88440318, // 0041 GETMBR R17 R1 K24 + 0x7C300A00, // 0042 CALL R12 5 + 0x58340019, // 0043 LDCONST R13 K25 + 0x7C280600, // 0044 CALL R10 3 + 0x8828011A, // 0045 GETMBR R10 R0 K26 + 0x8828151B, // 0046 GETMBR R10 R10 K27 + 0x8C28151C, // 0047 GETMET R10 R10 K28 + 0x5C300200, // 0048 MOVE R12 R1 + 0x8834111D, // 0049 GETMBR R13 R8 K29 + 0x5C380800, // 004A MOVE R14 R4 + 0x7C280800, // 004B CALL R10 4 + 0xB82E0A00, // 004C GETNGBL R11 K5 + 0x8C2C171E, // 004D GETMET R11 R11 K30 + 0x7C2C0200, // 004E CALL R11 1 + 0x4C300000, // 004F LDNIL R12 + 0x2030140C, // 0050 NE R12 R10 R12 + 0x78320032, // 0051 JMPF R12 #0085 + 0xB8320A00, // 0052 GETNGBL R12 K5 + 0x8C30191F, // 0053 GETMET R12 R12 K31 + 0x7C300200, // 0054 CALL R12 1 + 0x902E200C, // 0055 SETMBR R11 K16 R12 + 0x88301710, // 0056 GETMBR R12 R11 K16 + 0xB8360A00, // 0057 GETNGBL R13 K5 + 0x8C341B20, // 0058 GETMET R13 R13 K32 + 0x7C340200, // 0059 CALL R13 1 + 0x90321C0D, // 005A SETMBR R12 K14 R13 + 0x88301710, // 005B GETMBR R12 R11 K16 + 0x8830190E, // 005C GETMBR R12 R12 K14 + 0x8834090D, // 005D GETMBR R13 R4 K13 + 0x90321A0D, // 005E SETMBR R12 K13 R13 + 0x88301710, // 005F GETMBR R12 R11 K16 + 0x8830190E, // 0060 GETMBR R12 R12 K14 + 0x8834090F, // 0061 GETMBR R13 R4 K15 + 0x90321E0D, // 0062 SETMBR R12 K15 R13 + 0x88301710, // 0063 GETMBR R12 R11 K16 + 0x8830190E, // 0064 GETMBR R12 R12 K14 + 0x88340910, // 0065 GETMBR R13 R4 K16 + 0x9032200D, // 0066 SETMBR R12 K16 R13 + 0x88301710, // 0067 GETMBR R12 R11 K16 + 0x90323A0A, // 0068 SETMBR R12 K29 R10 + 0x88300D0C, // 0069 GETMBR R12 R6 K12 + 0x8C301921, // 006A GETMET R12 R12 K33 + 0x5C381600, // 006B MOVE R14 R11 + 0x7C300400, // 006C CALL R12 2 + 0xB8320A00, // 006D GETNGBL R12 K5 + 0x8C301913, // 006E GETMET R12 R12 K19 + 0x8838090F, // 006F GETMBR R14 R4 K15 + 0x883C0910, // 0070 GETMBR R15 R4 K16 + 0x7C300600, // 0071 CALL R12 3 + 0x5C241800, // 0072 MOVE R9 R12 + 0x4C300000, // 0073 LDNIL R12 + 0x1C30120C, // 0074 EQ R12 R9 R12 + 0x78320005, // 0075 JMPF R12 #007C + 0x8C300714, // 0076 GETMET R12 R3 K20 + 0x58380022, // 0077 LDCONST R14 K34 + 0x883C090F, // 0078 GETMBR R15 R4 K15 + 0x88400910, // 0079 GETMBR R16 R4 K16 + 0x7C300800, // 007A CALL R12 4 + 0x5C241800, // 007B MOVE R9 R12 + 0xB8320200, // 007C GETNGBL R12 K1 + 0x8C301902, // 007D GETMET R12 R12 K2 + 0x8C380714, // 007E GETMET R14 R3 K20 + 0x58400023, // 007F LDCONST R16 K35 + 0x5C441200, // 0080 MOVE R17 R9 + 0x7C380600, // 0081 CALL R14 3 + 0x583C0019, // 0082 LDCONST R15 K25 + 0x7C300600, // 0083 CALL R12 3 + 0x70020026, // 0084 JMP #00AC + 0x88300911, // 0085 GETMBR R12 R4 K17 + 0x4C340000, // 0086 LDNIL R13 + 0x2030180D, // 0087 NE R12 R12 R13 + 0x78320022, // 0088 JMPF R12 #00AC + 0xB8320A00, // 0089 GETNGBL R12 K5 + 0x8C301924, // 008A GETMET R12 R12 K36 + 0x7C300200, // 008B CALL R12 1 + 0x902E220C, // 008C SETMBR R11 K17 R12 + 0x88301711, // 008D GETMBR R12 R11 K17 + 0xB8360A00, // 008E GETNGBL R13 K5 + 0x8C341B20, // 008F GETMET R13 R13 K32 + 0x7C340200, // 0090 CALL R13 1 + 0x90321C0D, // 0091 SETMBR R12 K14 R13 + 0x88301711, // 0092 GETMBR R12 R11 K17 + 0x8830190E, // 0093 GETMBR R12 R12 K14 + 0x8834090D, // 0094 GETMBR R13 R4 K13 + 0x90321A0D, // 0095 SETMBR R12 K13 R13 + 0x88301711, // 0096 GETMBR R12 R11 K17 + 0x8830190E, // 0097 GETMBR R12 R12 K14 + 0x8834090F, // 0098 GETMBR R13 R4 K15 + 0x90321E0D, // 0099 SETMBR R12 K15 R13 + 0x88301711, // 009A GETMBR R12 R11 K17 + 0x8830190E, // 009B GETMBR R12 R12 K14 + 0x88340910, // 009C GETMBR R13 R4 K16 + 0x9032200D, // 009D SETMBR R12 K16 R13 + 0x88301711, // 009E GETMBR R12 R11 K17 + 0xB8360A00, // 009F GETNGBL R13 K5 + 0x8C341B25, // 00A0 GETMET R13 R13 K37 + 0x7C340200, // 00A1 CALL R13 1 + 0x9032220D, // 00A2 SETMBR R12 K17 R13 + 0x88301711, // 00A3 GETMBR R12 R11 K17 + 0x88301911, // 00A4 GETMBR R12 R12 K17 + 0x88340911, // 00A5 GETMBR R13 R4 K17 + 0x9032220D, // 00A6 SETMBR R12 K17 R13 + 0x88300D0C, // 00A7 GETMBR R12 R6 K12 + 0x8C301921, // 00A8 GETMET R12 R12 K33 + 0x5C381600, // 00A9 MOVE R14 R11 + 0x7C300400, // 00AA CALL R12 2 + 0x7001FFFF, // 00AB JMP #00AC + 0x7001FF71, // 00AC JMP #001F + 0x581C0026, // 00AD LDCONST R7 K38 + 0xAC1C0200, // 00AE CATCH R7 1 0 + 0xB0080000, // 00AF RAISE 2 R0 R0 + 0xB81E0200, // 00B0 GETNGBL R7 K1 + 0x8C1C0F02, // 00B1 GETMET R7 R7 K2 + 0x60240008, // 00B2 GETGBL R9 G8 + 0x88280D0C, // 00B3 GETMBR R10 R6 K12 + 0x7C240200, // 00B4 CALL R9 1 + 0x00264E09, // 00B5 ADD R9 K39 R9 + 0x58280004, // 00B6 LDCONST R10 K4 + 0x7C1C0600, // 00B7 CALL R7 3 + 0x601C000C, // 00B8 GETGBL R7 G12 + 0x88200D0C, // 00B9 GETMBR R8 R6 K12 + 0x7C1C0200, // 00BA CALL R7 1 + 0x241C0F28, // 00BB GT R7 R7 K40 + 0x781E0024, // 00BC JMPF R7 #00E2 + 0xB81E0200, // 00BD GETNGBL R7 K1 + 0x8C1C0F02, // 00BE GETMET R7 R7 K2 + 0x60240008, // 00BF GETGBL R9 G8 + 0x5C280C00, // 00C0 MOVE R10 R6 + 0x7C240200, // 00C1 CALL R9 1 + 0x00265209, // 00C2 ADD R9 K41 R9 + 0x58280004, // 00C3 LDCONST R10 K4 + 0x7C1C0600, // 00C4 CALL R7 3 + 0xB81E0200, // 00C5 GETNGBL R7 K1 + 0x8C1C0F02, // 00C6 GETMET R7 R7 K2 + 0x60240008, // 00C7 GETGBL R9 G8 + 0x8C280D2B, // 00C8 GETMET R10 R6 K43 + 0x7C280200, // 00C9 CALL R10 1 + 0x7C240200, // 00CA CALL R9 1 + 0x00265409, // 00CB ADD R9 K42 R9 + 0x58280004, // 00CC LDCONST R10 K4 + 0x7C1C0600, // 00CD CALL R7 3 + 0x8C1C032C, // 00CE GETMET R7 R1 K44 + 0x54260008, // 00CF LDINT R9 9 + 0x50280200, // 00D0 LDBOOL R10 1 0 + 0x7C1C0600, // 00D1 CALL R7 3 + 0x8C200F2D, // 00D2 GETMET R8 R7 K45 + 0x8C280D2B, // 00D3 GETMET R10 R6 K43 + 0x7C280200, // 00D4 CALL R10 1 + 0x8C28152D, // 00D5 GETMET R10 R10 K45 + 0x7C280200, // 00D6 CALL R10 1 + 0x7C200400, // 00D7 CALL R8 2 + 0x8C200F2E, // 00D8 GETMET R8 R7 K46 + 0x7C200200, // 00D9 CALL R8 1 + 0x8820011A, // 00DA GETMBR R8 R0 K26 + 0x8C20112F, // 00DB GETMET R8 R8 K47 + 0x88280F30, // 00DC GETMBR R10 R7 K48 + 0x882C0317, // 00DD GETMBR R11 R1 K23 + 0x88300318, // 00DE GETMBR R12 R1 K24 + 0x88340F31, // 00DF GETMBR R13 R7 K49 + 0x7C200A00, // 00E0 CALL R8 5 + 0x7002000E, // 00E1 JMP #00F1 + 0x881C0332, // 00E2 GETMBR R7 R1 K50 + 0x781E000C, // 00E3 JMPF R7 #00F1 + 0x8C1C0333, // 00E4 GETMET R7 R1 K51 + 0x7C1C0200, // 00E5 CALL R7 1 + 0x8C200F2D, // 00E6 GETMET R8 R7 K45 + 0x7C200200, // 00E7 CALL R8 1 + 0x8C200F2E, // 00E8 GETMET R8 R7 K46 + 0x7C200200, // 00E9 CALL R8 1 + 0x8820011A, // 00EA GETMBR R8 R0 K26 + 0x8C20112F, // 00EB GETMET R8 R8 K47 + 0x88280F30, // 00EC GETMBR R10 R7 K48 + 0x882C0317, // 00ED GETMBR R11 R1 K23 + 0x88300318, // 00EE GETMBR R12 R1 K24 + 0x88340F31, // 00EF GETMBR R13 R7 K49 + 0x7C200A00, // 00F0 CALL R8 5 + 0x80000000, // 00F1 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_IM_init, /* name */ + be_nested_proto( + 3, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(responder), + /* K1 */ be_nested_str_weak(device), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +extern const bclass be_class_Matter_Attr_Report; + +/******************************************************************** +** Solidified class: Matter_Attr_Report +********************************************************************/ +be_local_class(Matter_Attr_Report, + 3, + NULL, + be_nested_map(3, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_weak(ret, 1), be_const_var(0) }, + { be_const_key_weak(expiration, 2), be_const_var(2) }, + { be_const_key_weak(resp, -1), be_const_var(1) }, + })), + be_str_weak(Matter_Attr_Report) +); + +/******************************************************************** +** Solidified function: send_attr_report +********************************************************************/ +be_local_closure(Matter_IM_send_attr_report, /* name */ + be_nested_proto( + 14, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[23]) { /* constants */ + /* K0 */ be_const_class(be_class_Matter_Attr_Report), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(attribute_reports), + /* K3 */ be_nested_str_weak(to_TLV), + /* K4 */ be_nested_str_weak(encode), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(MAX_MESSAGE), + /* K7 */ be_const_int(2147483647), + /* K8 */ be_nested_str_weak(more_chunked_messages), + /* K9 */ be_nested_str_weak(build_response), + /* K10 */ be_nested_str_weak(encrypt), + /* K11 */ be_nested_str_weak(responder), + /* K12 */ be_nested_str_weak(send_response), + /* K13 */ be_nested_str_weak(raw), + /* K14 */ be_nested_str_weak(remote_ip), + /* K15 */ be_nested_str_weak(remote_port), + /* K16 */ be_nested_str_weak(message_counter), + /* K17 */ be_nested_str_weak(ret), + /* K18 */ be_nested_str_weak(resp), + /* K19 */ be_nested_str_weak(expiration), + /* K20 */ be_nested_str_weak(tasmota), + /* K21 */ be_nested_str_weak(millis), + /* K22 */ be_nested_str_weak(MSG_TIMEOUT), + }), + be_str_weak(send_attr_report), + &be_const_str_solidified, + ( &(const binstruction[93]) { /* code */ + 0x580C0000, // 0000 LDCONST R3 K0 + 0xB4000000, // 0001 CLASS K0 + 0x58100001, // 0002 LDCONST R4 K1 + 0x58140001, // 0003 LDCONST R5 K1 + 0x6018000C, // 0004 GETGBL R6 G12 + 0x881C0502, // 0005 GETMBR R7 R2 K2 + 0x7C180200, // 0006 CALL R6 1 + 0x24180D01, // 0007 GT R6 R6 K1 + 0x781A0009, // 0008 JMPF R6 #0013 + 0x6018000C, // 0009 GETGBL R6 G12 + 0x881C0502, // 000A GETMBR R7 R2 K2 + 0x941C0F01, // 000B GETIDX R7 R7 K1 + 0x8C1C0F03, // 000C GETMET R7 R7 K3 + 0x7C1C0200, // 000D CALL R7 1 + 0x8C1C0F04, // 000E GETMET R7 R7 K4 + 0x7C1C0200, // 000F CALL R7 1 + 0x7C180200, // 0010 CALL R6 1 + 0x5C100C00, // 0011 MOVE R4 R6 + 0x58140005, // 0012 LDCONST R5 K5 + 0x88180106, // 0013 GETMBR R6 R0 K6 + 0x14180806, // 0014 LT R6 R4 R6 + 0x781A0013, // 0015 JMPF R6 #002A + 0x6018000C, // 0016 GETGBL R6 G12 + 0x881C0502, // 0017 GETMBR R7 R2 K2 + 0x7C180200, // 0018 CALL R6 1 + 0x14180A06, // 0019 LT R6 R5 R6 + 0x781A000E, // 001A JMPF R6 #002A + 0x6018000C, // 001B GETGBL R6 G12 + 0x881C0502, // 001C GETMBR R7 R2 K2 + 0x941C0E05, // 001D GETIDX R7 R7 R5 + 0x8C1C0F03, // 001E GETMET R7 R7 K3 + 0x7C1C0200, // 001F CALL R7 1 + 0x8C1C0F04, // 0020 GETMET R7 R7 K4 + 0x7C1C0200, // 0021 CALL R7 1 + 0x7C180200, // 0022 CALL R6 1 + 0x001C0806, // 0023 ADD R7 R4 R6 + 0x88200106, // 0024 GETMBR R8 R0 K6 + 0x141C0E08, // 0025 LT R7 R7 R8 + 0x781E0001, // 0026 JMPF R7 #0029 + 0x00100806, // 0027 ADD R4 R4 R6 + 0x00140B05, // 0028 ADD R5 R5 K5 + 0x7001FFE8, // 0029 JMP #0013 + 0x40180B07, // 002A CONNECT R6 R5 K7 + 0x881C0502, // 002B GETMBR R7 R2 K2 + 0x94180E06, // 002C GETIDX R6 R7 R6 + 0x04200B05, // 002D SUB R8 R5 K5 + 0x40220208, // 002E CONNECT R8 K1 R8 + 0x88240502, // 002F GETMBR R9 R2 K2 + 0x94201208, // 0030 GETIDX R8 R9 R8 + 0x900A0408, // 0031 SETMBR R2 K2 R8 + 0x6020000C, // 0032 GETGBL R8 G12 + 0x5C240C00, // 0033 MOVE R9 R6 + 0x7C200200, // 0034 CALL R8 1 + 0x24201101, // 0035 GT R8 R8 K1 + 0x78220001, // 0036 JMPF R8 #0039 + 0x50200200, // 0037 LDBOOL R8 1 0 + 0x900A1008, // 0038 SETMBR R2 K8 R8 + 0x8C1C0309, // 0039 GETMET R7 R1 K9 + 0x54260004, // 003A LDINT R9 5 + 0x50280200, // 003B LDBOOL R10 1 0 + 0x7C1C0600, // 003C CALL R7 3 + 0x8C200F04, // 003D GETMET R8 R7 K4 + 0x8C280503, // 003E GETMET R10 R2 K3 + 0x7C280200, // 003F CALL R10 1 + 0x8C281504, // 0040 GETMET R10 R10 K4 + 0x7C280200, // 0041 CALL R10 1 + 0x7C200400, // 0042 CALL R8 2 + 0x8C200F0A, // 0043 GETMET R8 R7 K10 + 0x7C200200, // 0044 CALL R8 1 + 0x8820010B, // 0045 GETMBR R8 R0 K11 + 0x8C20110C, // 0046 GETMET R8 R8 K12 + 0x88280F0D, // 0047 GETMBR R10 R7 K13 + 0x882C030E, // 0048 GETMBR R11 R1 K14 + 0x8830030F, // 0049 GETMBR R12 R1 K15 + 0x88340F10, // 004A GETMBR R13 R7 K16 + 0x7C200A00, // 004B CALL R8 5 + 0x6020000C, // 004C GETGBL R8 G12 + 0x5C240C00, // 004D MOVE R9 R6 + 0x7C200200, // 004E CALL R8 1 + 0x24201101, // 004F GT R8 R8 K1 + 0x7822000A, // 0050 JMPF R8 #005C + 0x900A0406, // 0051 SETMBR R2 K2 R6 + 0x5C200600, // 0052 MOVE R8 R3 + 0x7C200000, // 0053 CALL R8 0 + 0x90222202, // 0054 SETMBR R8 K17 R2 + 0x90222407, // 0055 SETMBR R8 K18 R7 + 0xB8262800, // 0056 GETNGBL R9 K20 + 0x8C241315, // 0057 GETMET R9 R9 K21 + 0x7C240200, // 0058 CALL R9 1 + 0x88280116, // 0059 GETMBR R10 R0 K22 + 0x0024120A, // 005A ADD R9 R9 R10 + 0x90222609, // 005B SETMBR R8 K19 R9 + 0x80000000, // 005C RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: subscribe_response +********************************************************************/ +be_local_closure(Matter_IM_subscribe_response, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(SubscribeResponseMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20SubscribeResponsetMessage_X3D), + /* K7 */ be_const_int(3), + }), + be_str_weak(subscribe_response), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: subscribe_request +********************************************************************/ +be_local_closure(Matter_IM_subscribe_request, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(SubscribeRequestMessage), + /* K3 */ be_nested_str_weak(from_TLV), + /* K4 */ be_nested_str_weak(tasmota), + /* K5 */ be_nested_str_weak(log), + /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20SubscribeRequestMessage_X3D), + /* K7 */ be_const_int(3), + }), + be_str_weak(subscribe_request), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: process_write_response ********************************************************************/ be_local_closure(Matter_IM_process_write_response, /* name */ be_nested_proto( - 11, /* nstack */ - 5, /* argc */ + 9, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -256,23 +1490,23 @@ be_local_closure(Matter_IM_process_write_response, /* name */ be_str_weak(process_write_response), &be_const_str_solidified, ( &(const binstruction[17]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x8C180D02, // 0002 GETMET R6 R6 K2 - 0x7C180200, // 0003 CALL R6 1 - 0x8C180D03, // 0004 GETMET R6 R6 K3 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C180400, // 0006 CALL R6 2 - 0xB81E0800, // 0007 GETNGBL R7 K4 - 0x8C1C0F05, // 0008 GETMET R7 R7 K5 - 0x60240008, // 0009 GETGBL R9 G8 - 0x5C280C00, // 000A MOVE R10 R6 - 0x7C240200, // 000B CALL R9 1 - 0x00260C09, // 000C ADD R9 K6 R9 - 0x58280007, // 000D LDCONST R10 K7 - 0x7C1C0600, // 000E CALL R7 3 - 0x501C0000, // 000F LDBOOL R7 0 0 - 0x80040E00, // 0010 RET 1 R7 + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x8C100902, // 0002 GETMET R4 R4 K2 + 0x7C100200, // 0003 CALL R4 1 + 0x8C100903, // 0004 GETMET R4 R4 K3 + 0x5C180400, // 0005 MOVE R6 R2 + 0x7C100400, // 0006 CALL R4 2 + 0xB8160800, // 0007 GETNGBL R5 K4 + 0x8C140B05, // 0008 GETMET R5 R5 K5 + 0x601C0008, // 0009 GETGBL R7 G8 + 0x5C200800, // 000A MOVE R8 R4 + 0x7C1C0200, // 000B CALL R7 1 + 0x001E0C07, // 000C ADD R7 K6 R7 + 0x58200007, // 000D LDCONST R8 K7 + 0x7C140600, // 000E CALL R5 3 + 0x50140000, // 000F LDBOOL R5 0 0 + 0x80040A00, // 0010 RET 1 R5 }) ) ); @@ -284,8 +1518,8 @@ be_local_closure(Matter_IM_process_write_response, /* name */ ********************************************************************/ be_local_closure(Matter_IM_process_incoming, /* name */ be_nested_proto( - 13, /* nstack */ - 4, /* argc */ + 9, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -323,915 +1557,135 @@ be_local_closure(Matter_IM_process_incoming, /* name */ }), be_str_weak(process_incoming), &be_const_str_solidified, - ( &(const binstruction[148]) { /* code */ - 0xB8120000, // 0000 GETNGBL R4 K0 - 0x8C100901, // 0001 GETMET R4 R4 K1 - 0xB81A0600, // 0002 GETNGBL R6 K3 - 0x8C180D04, // 0003 GETMET R6 R6 K4 - 0x5C200200, // 0004 MOVE R8 R1 - 0x7C180400, // 0005 CALL R6 2 - 0x001A0406, // 0006 ADD R6 K2 R6 - 0x581C0005, // 0007 LDCONST R7 K5 - 0x7C100600, // 0008 CALL R4 3 - 0xB8120600, // 0009 GETNGBL R4 K3 - 0x88100906, // 000A GETMBR R4 R4 K6 - 0x8C100907, // 000B GETMET R4 R4 K7 - 0x88180308, // 000C GETMBR R6 R1 K8 - 0x881C0309, // 000D GETMBR R7 R1 K9 - 0x7C100600, // 000E CALL R4 3 - 0xB8160000, // 000F GETNGBL R5 K0 - 0x8C140B01, // 0010 GETMET R5 R5 K1 - 0x601C0008, // 0011 GETGBL R7 G8 - 0x5C200800, // 0012 MOVE R8 R4 - 0x7C1C0200, // 0013 CALL R7 1 - 0x001E1407, // 0014 ADD R7 K10 R7 - 0x58200005, // 0015 LDCONST R8 K5 - 0x7C140600, // 0016 CALL R5 3 - 0x8C14090B, // 0017 GETMET R5 R4 K11 - 0x541E00FE, // 0018 LDINT R7 255 - 0x7C140400, // 0019 CALL R5 2 - 0xB81A0000, // 001A GETNGBL R6 K0 - 0x8C180D01, // 001B GETMET R6 R6 K1 - 0x4C200000, // 001C LDNIL R8 - 0x20200A08, // 001D NE R8 R5 R8 - 0x78220003, // 001E JMPF R8 #0023 - 0x60200008, // 001F GETGBL R8 G8 - 0x5C240A00, // 0020 MOVE R9 R5 - 0x7C200200, // 0021 CALL R8 1 + ( &(const binstruction[128]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0xB8120600, // 0002 GETNGBL R4 K3 + 0x8C100904, // 0003 GETMET R4 R4 K4 + 0x5C180200, // 0004 MOVE R6 R1 + 0x7C100400, // 0005 CALL R4 2 + 0x00120404, // 0006 ADD R4 K2 R4 + 0x58140005, // 0007 LDCONST R5 K5 + 0x7C080600, // 0008 CALL R2 3 + 0xB80A0600, // 0009 GETNGBL R2 K3 + 0x88080506, // 000A GETMBR R2 R2 K6 + 0x8C080507, // 000B GETMET R2 R2 K7 + 0x88100308, // 000C GETMBR R4 R1 K8 + 0x88140309, // 000D GETMBR R5 R1 K9 + 0x7C080600, // 000E CALL R2 3 + 0xB80E0000, // 000F GETNGBL R3 K0 + 0x8C0C0701, // 0010 GETMET R3 R3 K1 + 0x60140008, // 0011 GETGBL R5 G8 + 0x5C180400, // 0012 MOVE R6 R2 + 0x7C140200, // 0013 CALL R5 1 + 0x00161405, // 0014 ADD R5 K10 R5 + 0x58180005, // 0015 LDCONST R6 K5 + 0x7C0C0600, // 0016 CALL R3 3 + 0x8C0C050B, // 0017 GETMET R3 R2 K11 + 0x541600FE, // 0018 LDINT R5 255 + 0x7C0C0400, // 0019 CALL R3 2 + 0xB8120000, // 001A GETNGBL R4 K0 + 0x8C100901, // 001B GETMET R4 R4 K1 + 0x4C180000, // 001C LDNIL R6 + 0x20180606, // 001D NE R6 R3 R6 + 0x781A0003, // 001E JMPF R6 #0023 + 0x60180008, // 001F GETGBL R6 G8 + 0x5C1C0600, // 0020 MOVE R7 R3 + 0x7C180200, // 0021 CALL R6 1 0x70020000, // 0022 JMP #0024 - 0x5820000D, // 0023 LDCONST R8 K13 - 0x00221808, // 0024 ADD R8 K12 R8 - 0x58240005, // 0025 LDCONST R9 K5 - 0x7C180600, // 0026 CALL R6 3 - 0x8818030E, // 0027 GETMBR R6 R1 K14 - 0x1C1C0D0F, // 0028 EQ R7 R6 K15 - 0x781E0007, // 0029 JMPF R7 #0032 - 0x8C1C0110, // 002A GETMET R7 R0 K16 - 0x5C240200, // 002B MOVE R9 R1 - 0x5C280800, // 002C MOVE R10 R4 - 0x5C2C0400, // 002D MOVE R11 R2 - 0x5C300600, // 002E MOVE R12 R3 - 0x7C1C0A00, // 002F CALL R7 5 - 0x80040E00, // 0030 RET 1 R7 - 0x7002005F, // 0031 JMP #0092 - 0x1C1C0D11, // 0032 EQ R7 R6 K17 - 0x781E0007, // 0033 JMPF R7 #003C - 0x8C1C0112, // 0034 GETMET R7 R0 K18 - 0x5C240200, // 0035 MOVE R9 R1 - 0x5C280800, // 0036 MOVE R10 R4 - 0x5C2C0400, // 0037 MOVE R11 R2 - 0x5C300600, // 0038 MOVE R12 R3 - 0x7C1C0A00, // 0039 CALL R7 5 - 0x80040E00, // 003A RET 1 R7 - 0x70020055, // 003B JMP #0092 - 0x1C1C0D05, // 003C EQ R7 R6 K5 - 0x781E0007, // 003D JMPF R7 #0046 - 0x8C1C0113, // 003E GETMET R7 R0 K19 - 0x5C240200, // 003F MOVE R9 R1 - 0x5C280800, // 0040 MOVE R10 R4 - 0x5C2C0400, // 0041 MOVE R11 R2 - 0x5C300600, // 0042 MOVE R12 R3 - 0x7C1C0A00, // 0043 CALL R7 5 - 0x80040E00, // 0044 RET 1 R7 - 0x7002004B, // 0045 JMP #0092 - 0x541E0003, // 0046 LDINT R7 4 - 0x1C1C0C07, // 0047 EQ R7 R6 R7 - 0x781E0007, // 0048 JMPF R7 #0051 - 0x8C1C0114, // 0049 GETMET R7 R0 K20 - 0x5C240200, // 004A MOVE R9 R1 - 0x5C280800, // 004B MOVE R10 R4 - 0x5C2C0400, // 004C MOVE R11 R2 - 0x5C300600, // 004D MOVE R12 R3 - 0x7C1C0A00, // 004E CALL R7 5 - 0x80040E00, // 004F RET 1 R7 - 0x70020040, // 0050 JMP #0092 - 0x541E0004, // 0051 LDINT R7 5 - 0x1C1C0C07, // 0052 EQ R7 R6 R7 - 0x781E0007, // 0053 JMPF R7 #005C - 0x8C1C0115, // 0054 GETMET R7 R0 K21 - 0x5C240200, // 0055 MOVE R9 R1 - 0x5C280800, // 0056 MOVE R10 R4 - 0x5C2C0400, // 0057 MOVE R11 R2 - 0x5C300600, // 0058 MOVE R12 R3 - 0x7C1C0A00, // 0059 CALL R7 5 - 0x80040E00, // 005A RET 1 R7 - 0x70020035, // 005B JMP #0092 - 0x541E0005, // 005C LDINT R7 6 - 0x1C1C0C07, // 005D EQ R7 R6 R7 - 0x781E0007, // 005E JMPF R7 #0067 - 0x8C1C0116, // 005F GETMET R7 R0 K22 - 0x5C240200, // 0060 MOVE R9 R1 - 0x5C280800, // 0061 MOVE R10 R4 - 0x5C2C0400, // 0062 MOVE R11 R2 - 0x5C300600, // 0063 MOVE R12 R3 - 0x7C1C0A00, // 0064 CALL R7 5 - 0x80040E00, // 0065 RET 1 R7 - 0x7002002A, // 0066 JMP #0092 - 0x541E0006, // 0067 LDINT R7 7 - 0x1C1C0C07, // 0068 EQ R7 R6 R7 - 0x781E0007, // 0069 JMPF R7 #0072 - 0x8C1C0117, // 006A GETMET R7 R0 K23 - 0x5C240200, // 006B MOVE R9 R1 - 0x5C280800, // 006C MOVE R10 R4 - 0x5C2C0400, // 006D MOVE R11 R2 - 0x5C300600, // 006E MOVE R12 R3 - 0x7C1C0A00, // 006F CALL R7 5 - 0x80040E00, // 0070 RET 1 R7 - 0x7002001F, // 0071 JMP #0092 - 0x541E0007, // 0072 LDINT R7 8 - 0x1C1C0C07, // 0073 EQ R7 R6 R7 - 0x781E0007, // 0074 JMPF R7 #007D - 0x8C1C0118, // 0075 GETMET R7 R0 K24 - 0x5C240200, // 0076 MOVE R9 R1 - 0x5C280800, // 0077 MOVE R10 R4 - 0x5C2C0400, // 0078 MOVE R11 R2 - 0x5C300600, // 0079 MOVE R12 R3 - 0x7C1C0A00, // 007A CALL R7 5 - 0x80040E00, // 007B RET 1 R7 - 0x70020014, // 007C JMP #0092 - 0x541E0008, // 007D LDINT R7 9 - 0x1C1C0C07, // 007E EQ R7 R6 R7 - 0x781E0007, // 007F JMPF R7 #0088 - 0x8C1C0119, // 0080 GETMET R7 R0 K25 - 0x5C240200, // 0081 MOVE R9 R1 - 0x5C280800, // 0082 MOVE R10 R4 - 0x5C2C0400, // 0083 MOVE R11 R2 - 0x5C300600, // 0084 MOVE R12 R3 - 0x7C1C0A00, // 0085 CALL R7 5 - 0x80040E00, // 0086 RET 1 R7 - 0x70020009, // 0087 JMP #0092 - 0x541E0009, // 0088 LDINT R7 10 - 0x1C1C0C07, // 0089 EQ R7 R6 R7 - 0x781E0006, // 008A JMPF R7 #0092 - 0x8C1C011A, // 008B GETMET R7 R0 K26 - 0x5C240200, // 008C MOVE R9 R1 - 0x5C280800, // 008D MOVE R10 R4 - 0x5C2C0400, // 008E MOVE R11 R2 - 0x5C300600, // 008F MOVE R12 R3 - 0x7C1C0A00, // 0090 CALL R7 5 - 0x80040E00, // 0091 RET 1 R7 - 0x501C0000, // 0092 LDBOOL R7 0 0 - 0x80040E00, // 0093 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_write_request -********************************************************************/ -be_local_closure(Matter_IM_process_write_request, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(WriteRequestMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20WriteRequestMessage_X3D), - /* K7 */ be_const_int(3), - }), - be_str_weak(process_write_request), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x8C180D02, // 0002 GETMET R6 R6 K2 - 0x7C180200, // 0003 CALL R6 1 - 0x8C180D03, // 0004 GETMET R6 R6 K3 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C180400, // 0006 CALL R6 2 - 0xB81E0800, // 0007 GETNGBL R7 K4 - 0x8C1C0F05, // 0008 GETMET R7 R7 K5 - 0x60240008, // 0009 GETGBL R9 G8 - 0x5C280C00, // 000A MOVE R10 R6 - 0x7C240200, // 000B CALL R9 1 - 0x00260C09, // 000C ADD R9 K6 R9 - 0x58280007, // 000D LDCONST R10 K7 - 0x7C1C0600, // 000E CALL R7 3 - 0x501C0000, // 000F LDBOOL R7 0 0 - 0x80040E00, // 0010 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_invoke_request -********************************************************************/ -be_local_closure(Matter_IM_process_invoke_request, /* name */ - be_nested_proto( - 20, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[50]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(tasmota), - /* K2 */ be_nested_str_weak(log), - /* K3 */ be_nested_str_weak(MTR_X3A_X20IM_X3Ainvoke_request_X20processing_X20start), - /* K4 */ be_const_int(3), - /* K5 */ be_nested_str_weak(matter), - /* K6 */ be_nested_str_weak(Response_container), - /* K7 */ be_nested_str_weak(InvokeRequestMessage), - /* K8 */ be_nested_str_weak(from_TLV), - /* K9 */ be_nested_str_weak(invoke_requests), - /* K10 */ be_nested_str_weak(InvokeResponseMessage), - /* K11 */ be_nested_str_weak(suppress_response), - /* K12 */ be_nested_str_weak(invoke_responses), - /* K13 */ be_nested_str_weak(endpoint), - /* K14 */ be_nested_str_weak(command_path), - /* K15 */ be_nested_str_weak(cluster), - /* K16 */ be_nested_str_weak(command), - /* K17 */ be_nested_str_weak(status), - /* K18 */ be_nested_str_weak(UNSUPPORTED_COMMAND), - /* K19 */ be_nested_str_weak(get_command_name), - /* K20 */ be_nested_str_weak(format), - /* K21 */ be_nested_str_weak(0x_X2504X_X2F0x02X), - /* K22 */ be_nested_str_weak(MTR_X3A_X20_X3EReceived_cmd_X20_X20_X25s_X20from_X20_X5B_X25s_X5D_X3A_X25i), - /* K23 */ be_const_int(2), - /* K24 */ be_nested_str_weak(responder), - /* K25 */ be_nested_str_weak(device), - /* K26 */ be_nested_str_weak(invoke_request), - /* K27 */ be_nested_str_weak(command_fields), - /* K28 */ be_nested_str_weak(InvokeResponseIB), - /* K29 */ be_nested_str_weak(CommandDataIB), - /* K30 */ be_nested_str_weak(CommandPathIB), - /* K31 */ be_nested_str_weak(push), - /* K32 */ be_nested_str_weak(0x_X2504X_X2F0x_X2502X), - /* K33 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_cmd_X20_X20_X20_X25s), - /* K34 */ be_nested_str_weak(CommandStatusIB), - /* K35 */ be_nested_str_weak(StatusIB), - /* K36 */ be_nested_str_weak(stop_iteration), - /* K37 */ be_nested_str_weak(MTR_X3A_X20invoke_responses_X3D), - /* K38 */ be_const_int(0), - /* K39 */ be_nested_str_weak(MTR_X3A_X20InvokeResponse_X3D), - /* K40 */ be_nested_str_weak(MTR_X3A_X20InvokeResponseTLV_X3D), - /* K41 */ be_nested_str_weak(to_TLV), - /* K42 */ be_nested_str_weak(build_response), - /* K43 */ be_nested_str_weak(encode), - /* K44 */ be_nested_str_weak(encrypt), - /* K45 */ be_nested_str_weak(send_response), - /* K46 */ be_nested_str_weak(raw), - /* K47 */ be_nested_str_weak(message_counter), - /* K48 */ be_nested_str_weak(x_flag_r), - /* K49 */ be_nested_str_weak(build_standalone_ack), - }), - be_str_weak(process_invoke_request), - &be_const_str_solidified, - ( &(const binstruction[242]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x8C180D02, // 0002 GETMET R6 R6 K2 - 0x58200003, // 0003 LDCONST R8 K3 - 0x58240004, // 0004 LDCONST R9 K4 - 0x7C180600, // 0005 CALL R6 3 - 0xB81A0A00, // 0006 GETNGBL R6 K5 - 0x8C180D06, // 0007 GETMET R6 R6 K6 - 0x7C180200, // 0008 CALL R6 1 - 0xB81E0A00, // 0009 GETNGBL R7 K5 - 0x8C1C0F07, // 000A GETMET R7 R7 K7 - 0x7C1C0200, // 000B CALL R7 1 - 0x8C1C0F08, // 000C GETMET R7 R7 K8 - 0x5C240400, // 000D MOVE R9 R2 - 0x7C1C0400, // 000E CALL R7 2 - 0x88200F09, // 000F GETMBR R8 R7 K9 - 0x4C240000, // 0010 LDNIL R9 - 0x20201009, // 0011 NE R8 R8 R9 - 0x782200DD, // 0012 JMPF R8 #00F1 - 0xB8220A00, // 0013 GETNGBL R8 K5 - 0x8C20110A, // 0014 GETMET R8 R8 K10 - 0x7C200200, // 0015 CALL R8 1 - 0x50240000, // 0016 LDBOOL R9 0 0 - 0x90221609, // 0017 SETMBR R8 K11 R9 - 0x60240012, // 0018 GETGBL R9 G18 - 0x7C240000, // 0019 CALL R9 0 - 0x90221809, // 001A SETMBR R8 K12 R9 - 0x60240010, // 001B GETGBL R9 G16 - 0x88280F09, // 001C GETMBR R10 R7 K9 - 0x7C240200, // 001D CALL R9 1 - 0xA802008D, // 001E EXBLK 0 #00AD - 0x5C281200, // 001F MOVE R10 R9 - 0x7C280000, // 0020 CALL R10 0 - 0x882C150E, // 0021 GETMBR R11 R10 K14 - 0x882C170D, // 0022 GETMBR R11 R11 K13 - 0x901A1A0B, // 0023 SETMBR R6 K13 R11 - 0x882C150E, // 0024 GETMBR R11 R10 K14 - 0x882C170F, // 0025 GETMBR R11 R11 K15 - 0x901A1E0B, // 0026 SETMBR R6 K15 R11 - 0x882C150E, // 0027 GETMBR R11 R10 K14 - 0x882C1710, // 0028 GETMBR R11 R11 K16 - 0x901A200B, // 0029 SETMBR R6 K16 R11 - 0xB82E0A00, // 002A GETNGBL R11 K5 - 0x882C1712, // 002B GETMBR R11 R11 K18 - 0x901A220B, // 002C SETMBR R6 K17 R11 - 0xB82E0A00, // 002D GETNGBL R11 K5 - 0x8C2C1713, // 002E GETMET R11 R11 K19 - 0x88340D0F, // 002F GETMBR R13 R6 K15 - 0x88380D10, // 0030 GETMBR R14 R6 K16 - 0x7C2C0600, // 0031 CALL R11 3 - 0x4C300000, // 0032 LDNIL R12 - 0x1C30160C, // 0033 EQ R12 R11 R12 - 0x78320005, // 0034 JMPF R12 #003B - 0x8C300B14, // 0035 GETMET R12 R5 K20 - 0x58380015, // 0036 LDCONST R14 K21 - 0x883C0D0F, // 0037 GETMBR R15 R6 K15 - 0x88400D10, // 0038 GETMBR R16 R6 K16 - 0x7C300800, // 0039 CALL R12 4 - 0x5C2C1800, // 003A MOVE R11 R12 - 0xB8320200, // 003B GETNGBL R12 K1 - 0x8C301902, // 003C GETMET R12 R12 K2 - 0x8C380B14, // 003D GETMET R14 R5 K20 - 0x58400016, // 003E LDCONST R16 K22 - 0x5C441600, // 003F MOVE R17 R11 - 0x5C480600, // 0040 MOVE R18 R3 - 0x5C4C0800, // 0041 MOVE R19 R4 - 0x7C380A00, // 0042 CALL R14 5 - 0x583C0017, // 0043 LDCONST R15 K23 - 0x7C300600, // 0044 CALL R12 3 - 0x88300118, // 0045 GETMBR R12 R0 K24 - 0x88301919, // 0046 GETMBR R12 R12 K25 - 0x8C30191A, // 0047 GETMET R12 R12 K26 - 0x5C380200, // 0048 MOVE R14 R1 - 0x883C151B, // 0049 GETMBR R15 R10 K27 - 0x5C400C00, // 004A MOVE R16 R6 - 0x7C300800, // 004B CALL R12 4 - 0xB8360A00, // 004C GETNGBL R13 K5 - 0x8C341B1C, // 004D GETMET R13 R13 K28 - 0x7C340200, // 004E CALL R13 1 - 0x4C380000, // 004F LDNIL R14 - 0x2038180E, // 0050 NE R14 R12 R14 - 0x783A0032, // 0051 JMPF R14 #0085 - 0xB83A0A00, // 0052 GETNGBL R14 K5 - 0x8C381D1D, // 0053 GETMET R14 R14 K29 - 0x7C380200, // 0054 CALL R14 1 - 0x9036200E, // 0055 SETMBR R13 K16 R14 - 0x88381B10, // 0056 GETMBR R14 R13 K16 - 0xB83E0A00, // 0057 GETNGBL R15 K5 - 0x8C3C1F1E, // 0058 GETMET R15 R15 K30 - 0x7C3C0200, // 0059 CALL R15 1 - 0x903A1C0F, // 005A SETMBR R14 K14 R15 - 0x88381B10, // 005B GETMBR R14 R13 K16 - 0x88381D0E, // 005C GETMBR R14 R14 K14 - 0x883C0D0D, // 005D GETMBR R15 R6 K13 - 0x903A1A0F, // 005E SETMBR R14 K13 R15 - 0x88381B10, // 005F GETMBR R14 R13 K16 - 0x88381D0E, // 0060 GETMBR R14 R14 K14 - 0x883C0D0F, // 0061 GETMBR R15 R6 K15 - 0x903A1E0F, // 0062 SETMBR R14 K15 R15 - 0x88381B10, // 0063 GETMBR R14 R13 K16 - 0x88381D0E, // 0064 GETMBR R14 R14 K14 - 0x883C0D10, // 0065 GETMBR R15 R6 K16 - 0x903A200F, // 0066 SETMBR R14 K16 R15 - 0x88381B10, // 0067 GETMBR R14 R13 K16 - 0x903A360C, // 0068 SETMBR R14 K27 R12 - 0x8838110C, // 0069 GETMBR R14 R8 K12 - 0x8C381D1F, // 006A GETMET R14 R14 K31 - 0x5C401A00, // 006B MOVE R16 R13 - 0x7C380400, // 006C CALL R14 2 - 0xB83A0A00, // 006D GETNGBL R14 K5 - 0x8C381D13, // 006E GETMET R14 R14 K19 - 0x88400D0F, // 006F GETMBR R16 R6 K15 - 0x88440D10, // 0070 GETMBR R17 R6 K16 - 0x7C380600, // 0071 CALL R14 3 - 0x5C2C1C00, // 0072 MOVE R11 R14 - 0x4C380000, // 0073 LDNIL R14 - 0x1C38160E, // 0074 EQ R14 R11 R14 - 0x783A0005, // 0075 JMPF R14 #007C - 0x8C380B14, // 0076 GETMET R14 R5 K20 - 0x58400020, // 0077 LDCONST R16 K32 - 0x88440D0F, // 0078 GETMBR R17 R6 K15 - 0x88480D10, // 0079 GETMBR R18 R6 K16 - 0x7C380800, // 007A CALL R14 4 - 0x5C2C1C00, // 007B MOVE R11 R14 - 0xB83A0200, // 007C GETNGBL R14 K1 - 0x8C381D02, // 007D GETMET R14 R14 K2 - 0x8C400B14, // 007E GETMET R16 R5 K20 - 0x58480021, // 007F LDCONST R18 K33 - 0x5C4C1600, // 0080 MOVE R19 R11 - 0x7C400600, // 0081 CALL R16 3 - 0x58440017, // 0082 LDCONST R17 K23 - 0x7C380600, // 0083 CALL R14 3 - 0x70020026, // 0084 JMP #00AC - 0x88380D11, // 0085 GETMBR R14 R6 K17 - 0x4C3C0000, // 0086 LDNIL R15 - 0x20381C0F, // 0087 NE R14 R14 R15 - 0x783A0022, // 0088 JMPF R14 #00AC - 0xB83A0A00, // 0089 GETNGBL R14 K5 - 0x8C381D22, // 008A GETMET R14 R14 K34 - 0x7C380200, // 008B CALL R14 1 - 0x9036220E, // 008C SETMBR R13 K17 R14 - 0x88381B11, // 008D GETMBR R14 R13 K17 - 0xB83E0A00, // 008E GETNGBL R15 K5 - 0x8C3C1F1E, // 008F GETMET R15 R15 K30 - 0x7C3C0200, // 0090 CALL R15 1 - 0x903A1C0F, // 0091 SETMBR R14 K14 R15 - 0x88381B11, // 0092 GETMBR R14 R13 K17 - 0x88381D0E, // 0093 GETMBR R14 R14 K14 - 0x883C0D0D, // 0094 GETMBR R15 R6 K13 - 0x903A1A0F, // 0095 SETMBR R14 K13 R15 - 0x88381B11, // 0096 GETMBR R14 R13 K17 - 0x88381D0E, // 0097 GETMBR R14 R14 K14 - 0x883C0D0F, // 0098 GETMBR R15 R6 K15 - 0x903A1E0F, // 0099 SETMBR R14 K15 R15 - 0x88381B11, // 009A GETMBR R14 R13 K17 - 0x88381D0E, // 009B GETMBR R14 R14 K14 - 0x883C0D10, // 009C GETMBR R15 R6 K16 - 0x903A200F, // 009D SETMBR R14 K16 R15 - 0x88381B11, // 009E GETMBR R14 R13 K17 - 0xB83E0A00, // 009F GETNGBL R15 K5 - 0x8C3C1F23, // 00A0 GETMET R15 R15 K35 - 0x7C3C0200, // 00A1 CALL R15 1 - 0x903A220F, // 00A2 SETMBR R14 K17 R15 - 0x88381B11, // 00A3 GETMBR R14 R13 K17 - 0x88381D11, // 00A4 GETMBR R14 R14 K17 - 0x883C0D11, // 00A5 GETMBR R15 R6 K17 - 0x903A220F, // 00A6 SETMBR R14 K17 R15 - 0x8838110C, // 00A7 GETMBR R14 R8 K12 - 0x8C381D1F, // 00A8 GETMET R14 R14 K31 - 0x5C401A00, // 00A9 MOVE R16 R13 - 0x7C380400, // 00AA CALL R14 2 - 0x7001FFFF, // 00AB JMP #00AC - 0x7001FF71, // 00AC JMP #001F - 0x58240024, // 00AD LDCONST R9 K36 - 0xAC240200, // 00AE CATCH R9 1 0 - 0xB0080000, // 00AF RAISE 2 R0 R0 - 0xB8260200, // 00B0 GETNGBL R9 K1 - 0x8C241302, // 00B1 GETMET R9 R9 K2 - 0x602C0008, // 00B2 GETGBL R11 G8 - 0x8830110C, // 00B3 GETMBR R12 R8 K12 - 0x7C2C0200, // 00B4 CALL R11 1 - 0x002E4A0B, // 00B5 ADD R11 K37 R11 - 0x58300004, // 00B6 LDCONST R12 K4 - 0x7C240600, // 00B7 CALL R9 3 - 0x6024000C, // 00B8 GETGBL R9 G12 - 0x8828110C, // 00B9 GETMBR R10 R8 K12 - 0x7C240200, // 00BA CALL R9 1 - 0x24241326, // 00BB GT R9 R9 K38 - 0x78260024, // 00BC JMPF R9 #00E2 - 0xB8260200, // 00BD GETNGBL R9 K1 - 0x8C241302, // 00BE GETMET R9 R9 K2 - 0x602C0008, // 00BF GETGBL R11 G8 - 0x5C301000, // 00C0 MOVE R12 R8 - 0x7C2C0200, // 00C1 CALL R11 1 - 0x002E4E0B, // 00C2 ADD R11 K39 R11 - 0x58300004, // 00C3 LDCONST R12 K4 - 0x7C240600, // 00C4 CALL R9 3 - 0xB8260200, // 00C5 GETNGBL R9 K1 - 0x8C241302, // 00C6 GETMET R9 R9 K2 - 0x602C0008, // 00C7 GETGBL R11 G8 - 0x8C301129, // 00C8 GETMET R12 R8 K41 - 0x7C300200, // 00C9 CALL R12 1 - 0x7C2C0200, // 00CA CALL R11 1 - 0x002E500B, // 00CB ADD R11 K40 R11 - 0x58300004, // 00CC LDCONST R12 K4 - 0x7C240600, // 00CD CALL R9 3 - 0x8C24032A, // 00CE GETMET R9 R1 K42 - 0x542E0008, // 00CF LDINT R11 9 - 0x50300200, // 00D0 LDBOOL R12 1 0 - 0x7C240600, // 00D1 CALL R9 3 - 0x8C28132B, // 00D2 GETMET R10 R9 K43 - 0x8C301129, // 00D3 GETMET R12 R8 K41 - 0x7C300200, // 00D4 CALL R12 1 - 0x8C30192B, // 00D5 GETMET R12 R12 K43 - 0x7C300200, // 00D6 CALL R12 1 - 0x7C280400, // 00D7 CALL R10 2 - 0x8C28132C, // 00D8 GETMET R10 R9 K44 - 0x7C280200, // 00D9 CALL R10 1 - 0x88280118, // 00DA GETMBR R10 R0 K24 - 0x8C28152D, // 00DB GETMET R10 R10 K45 - 0x8830132E, // 00DC GETMBR R12 R9 K46 - 0x5C340600, // 00DD MOVE R13 R3 - 0x5C380800, // 00DE MOVE R14 R4 - 0x883C132F, // 00DF GETMBR R15 R9 K47 - 0x7C280A00, // 00E0 CALL R10 5 - 0x7002000E, // 00E1 JMP #00F1 - 0x88240330, // 00E2 GETMBR R9 R1 K48 - 0x7826000C, // 00E3 JMPF R9 #00F1 - 0x8C240331, // 00E4 GETMET R9 R1 K49 - 0x7C240200, // 00E5 CALL R9 1 - 0x8C28132B, // 00E6 GETMET R10 R9 K43 - 0x7C280200, // 00E7 CALL R10 1 - 0x8C28132C, // 00E8 GETMET R10 R9 K44 - 0x7C280200, // 00E9 CALL R10 1 - 0x88280118, // 00EA GETMBR R10 R0 K24 - 0x8C28152D, // 00EB GETMET R10 R10 K45 - 0x8830132E, // 00EC GETMBR R12 R9 K46 - 0x5C340600, // 00ED MOVE R13 R3 - 0x5C380800, // 00EE MOVE R14 R4 - 0x883C132F, // 00EF GETMBR R15 R9 K47 - 0x7C280A00, // 00F0 CALL R10 5 - 0x80000000, // 00F1 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_response -********************************************************************/ -be_local_closure(Matter_IM_subscribe_response, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(SubscribeResponseMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20SubscribeResponsetMessage_X3D), - /* K7 */ be_const_int(3), - }), - be_str_weak(subscribe_response), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x8C180D02, // 0002 GETMET R6 R6 K2 - 0x7C180200, // 0003 CALL R6 1 - 0x8C180D03, // 0004 GETMET R6 R6 K3 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C180400, // 0006 CALL R6 2 - 0xB81E0800, // 0007 GETNGBL R7 K4 - 0x8C1C0F05, // 0008 GETMET R7 R7 K5 - 0x60240008, // 0009 GETGBL R9 G8 - 0x5C280C00, // 000A MOVE R10 R6 - 0x7C240200, // 000B CALL R9 1 - 0x00260C09, // 000C ADD R9 K6 R9 - 0x58280007, // 000D LDCONST R10 K7 - 0x7C1C0600, // 000E CALL R7 3 - 0x501C0000, // 000F LDBOOL R7 0 0 - 0x80040E00, // 0010 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_request -********************************************************************/ -be_local_closure(Matter_IM_subscribe_request, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(SubscribeRequestMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20SubscribeRequestMessage_X3D), - /* K7 */ be_const_int(3), - }), - be_str_weak(subscribe_request), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x8C180D02, // 0002 GETMET R6 R6 K2 - 0x7C180200, // 0003 CALL R6 1 - 0x8C180D03, // 0004 GETMET R6 R6 K3 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C180400, // 0006 CALL R6 2 - 0xB81E0800, // 0007 GETNGBL R7 K4 - 0x8C1C0F05, // 0008 GETMET R7 R7 K5 - 0x60240008, // 0009 GETGBL R9 G8 - 0x5C280C00, // 000A MOVE R10 R6 - 0x7C240200, // 000B CALL R9 1 - 0x00260C09, // 000C ADD R9 K6 R9 - 0x58280007, // 000D LDCONST R10 K7 - 0x7C1C0600, // 000E CALL R7 3 - 0x501C0000, // 000F LDBOOL R7 0 0 - 0x80040E00, // 0010 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_read_request -********************************************************************/ -be_local_closure(Matter_IM_process_read_request, /* name */ - be_nested_proto( - 16, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[43]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(log), - /* K2 */ be_nested_str_weak(MTR_X3A_X20IM_X3Aread_request_X20processing_X20start), - /* K3 */ be_const_int(3), - /* K4 */ be_nested_str_weak(matter), - /* K5 */ be_nested_str_weak(ReadRequestMessage), - /* K6 */ be_nested_str_weak(from_TLV), - /* K7 */ be_nested_str_weak(attributes_requests), - /* K8 */ be_nested_str_weak(ReportDataMessage), - /* K9 */ be_nested_str_weak(suppress_response), - /* K10 */ be_nested_str_weak(attribute_reports), - /* K11 */ be_nested_str_weak(get_attribute_name), - /* K12 */ be_nested_str_weak(cluster), - /* K13 */ be_nested_str_weak(attribute), - /* K14 */ be_nested_str_weak(MTR_X3A_X20Read_X20Attribute_X20), - /* K15 */ be_nested_str_weak(_X20_X28), - /* K16 */ be_nested_str_weak(_X29), - /* K17 */ be_nested_str_weak(), - /* K18 */ be_const_int(2), - /* K19 */ be_nested_str_weak(responder), - /* K20 */ be_nested_str_weak(device), - /* K21 */ be_nested_str_weak(read_attribute), - /* K22 */ be_nested_str_weak(endpoint), - /* K23 */ be_nested_str_weak(AttributeReportIB), - /* K24 */ be_nested_str_weak(attribute_data), - /* K25 */ be_nested_str_weak(AttributeDataIB), - /* K26 */ be_nested_str_weak(data_version), - /* K27 */ be_const_int(1), - /* K28 */ be_nested_str_weak(path), - /* K29 */ be_nested_str_weak(AttributePathIB), - /* K30 */ be_const_int(0), - /* K31 */ be_nested_str_weak(data), - /* K32 */ be_nested_str_weak(push), - /* K33 */ be_nested_str_weak(stop_iteration), - /* K34 */ be_nested_str_weak(MTR_X3A_X20ReportDataMessage_X3D), - /* K35 */ be_nested_str_weak(MTR_X3A_X20ReportDataMessageTLV_X3D), - /* K36 */ be_nested_str_weak(to_TLV), - /* K37 */ be_nested_str_weak(build_response), - /* K38 */ be_nested_str_weak(encode), - /* K39 */ be_nested_str_weak(encrypt), - /* K40 */ be_nested_str_weak(send_response), - /* K41 */ be_nested_str_weak(raw), - /* K42 */ be_nested_str_weak(message_counter), - }), - be_str_weak(process_read_request), - &be_const_str_solidified, - ( &(const binstruction[132]) { /* code */ - 0xB8160000, // 0000 GETNGBL R5 K0 - 0x8C140B01, // 0001 GETMET R5 R5 K1 - 0x581C0002, // 0002 LDCONST R7 K2 - 0x58200003, // 0003 LDCONST R8 K3 - 0x7C140600, // 0004 CALL R5 3 - 0xB8160800, // 0005 GETNGBL R5 K4 - 0x8C140B05, // 0006 GETMET R5 R5 K5 - 0x7C140200, // 0007 CALL R5 1 - 0x8C140B06, // 0008 GETMET R5 R5 K6 - 0x5C1C0400, // 0009 MOVE R7 R2 - 0x7C140400, // 000A CALL R5 2 - 0x88180B07, // 000B GETMBR R6 R5 K7 - 0x4C1C0000, // 000C LDNIL R7 - 0x20180C07, // 000D NE R6 R6 R7 - 0x781A0072, // 000E JMPF R6 #0082 - 0xB81A0800, // 000F GETNGBL R6 K4 - 0x8C180D08, // 0010 GETMET R6 R6 K8 - 0x7C180200, // 0011 CALL R6 1 - 0x501C0200, // 0012 LDBOOL R7 1 0 - 0x901A1207, // 0013 SETMBR R6 K9 R7 - 0x601C0012, // 0014 GETGBL R7 G18 - 0x7C1C0000, // 0015 CALL R7 0 - 0x901A1407, // 0016 SETMBR R6 K10 R7 - 0x601C0010, // 0017 GETGBL R7 G16 - 0x88200B07, // 0018 GETMBR R8 R5 K7 - 0x7C1C0200, // 0019 CALL R7 1 - 0xA802003F, // 001A EXBLK 0 #005B - 0x5C200E00, // 001B MOVE R8 R7 - 0x7C200000, // 001C CALL R8 0 - 0xB8260800, // 001D GETNGBL R9 K4 - 0x8C24130B, // 001E GETMET R9 R9 K11 - 0x882C110C, // 001F GETMBR R11 R8 K12 - 0x8830110D, // 0020 GETMBR R12 R8 K13 - 0x7C240600, // 0021 CALL R9 3 - 0xB82A0000, // 0022 GETNGBL R10 K0 - 0x8C281501, // 0023 GETMET R10 R10 K1 - 0x60300008, // 0024 GETGBL R12 G8 - 0x5C341000, // 0025 MOVE R13 R8 - 0x7C300200, // 0026 CALL R12 1 - 0x00321C0C, // 0027 ADD R12 K14 R12 - 0x78260002, // 0028 JMPF R9 #002C - 0x00361E09, // 0029 ADD R13 K15 R9 - 0x00341B10, // 002A ADD R13 R13 K16 - 0x70020000, // 002B JMP #002D - 0x58340011, // 002C LDCONST R13 K17 - 0x0030180D, // 002D ADD R12 R12 R13 - 0x58340012, // 002E LDCONST R13 K18 - 0x7C280600, // 002F CALL R10 3 - 0x88280113, // 0030 GETMBR R10 R0 K19 - 0x88281514, // 0031 GETMBR R10 R10 K20 - 0x8C281515, // 0032 GETMET R10 R10 K21 - 0x5C300200, // 0033 MOVE R12 R1 - 0x88341116, // 0034 GETMBR R13 R8 K22 - 0x8838110C, // 0035 GETMBR R14 R8 K12 - 0x883C110D, // 0036 GETMBR R15 R8 K13 - 0x7C280A00, // 0037 CALL R10 5 - 0x4C2C0000, // 0038 LDNIL R11 - 0x202C140B, // 0039 NE R11 R10 R11 - 0x782E001E, // 003A JMPF R11 #005A - 0xB82E0800, // 003B GETNGBL R11 K4 - 0x8C2C1717, // 003C GETMET R11 R11 K23 - 0x7C2C0200, // 003D CALL R11 1 - 0xB8320800, // 003E GETNGBL R12 K4 - 0x8C301919, // 003F GETMET R12 R12 K25 - 0x7C300200, // 0040 CALL R12 1 - 0x902E300C, // 0041 SETMBR R11 K24 R12 - 0x88301718, // 0042 GETMBR R12 R11 K24 - 0x9032351B, // 0043 SETMBR R12 K26 K27 - 0x88301718, // 0044 GETMBR R12 R11 K24 - 0xB8360800, // 0045 GETNGBL R13 K4 - 0x8C341B1D, // 0046 GETMET R13 R13 K29 - 0x7C340200, // 0047 CALL R13 1 - 0x9032380D, // 0048 SETMBR R12 K28 R13 - 0x88301718, // 0049 GETMBR R12 R11 K24 - 0x8830191C, // 004A GETMBR R12 R12 K28 - 0x90322D1E, // 004B SETMBR R12 K22 K30 - 0x88301718, // 004C GETMBR R12 R11 K24 - 0x8830191C, // 004D GETMBR R12 R12 K28 - 0x8834110C, // 004E GETMBR R13 R8 K12 - 0x9032180D, // 004F SETMBR R12 K12 R13 - 0x88301718, // 0050 GETMBR R12 R11 K24 - 0x8830191C, // 0051 GETMBR R12 R12 K28 - 0x8834110D, // 0052 GETMBR R13 R8 K13 - 0x90321A0D, // 0053 SETMBR R12 K13 R13 - 0x88301718, // 0054 GETMBR R12 R11 K24 - 0x90323E0A, // 0055 SETMBR R12 K31 R10 - 0x88300D0A, // 0056 GETMBR R12 R6 K10 - 0x8C301920, // 0057 GETMET R12 R12 K32 - 0x5C381600, // 0058 MOVE R14 R11 - 0x7C300400, // 0059 CALL R12 2 - 0x7001FFBF, // 005A JMP #001B - 0x581C0021, // 005B LDCONST R7 K33 - 0xAC1C0200, // 005C CATCH R7 1 0 - 0xB0080000, // 005D RAISE 2 R0 R0 - 0xB81E0000, // 005E GETNGBL R7 K0 - 0x8C1C0F01, // 005F GETMET R7 R7 K1 - 0x60240008, // 0060 GETGBL R9 G8 - 0x5C280C00, // 0061 MOVE R10 R6 - 0x7C240200, // 0062 CALL R9 1 - 0x00264409, // 0063 ADD R9 K34 R9 - 0x58280003, // 0064 LDCONST R10 K3 - 0x7C1C0600, // 0065 CALL R7 3 - 0xB81E0000, // 0066 GETNGBL R7 K0 - 0x8C1C0F01, // 0067 GETMET R7 R7 K1 - 0x60240008, // 0068 GETGBL R9 G8 - 0x8C280D24, // 0069 GETMET R10 R6 K36 - 0x7C280200, // 006A CALL R10 1 - 0x7C240200, // 006B CALL R9 1 - 0x00264609, // 006C ADD R9 K35 R9 - 0x58280003, // 006D LDCONST R10 K3 - 0x7C1C0600, // 006E CALL R7 3 - 0x8C1C0325, // 006F GETMET R7 R1 K37 - 0x54260004, // 0070 LDINT R9 5 - 0x50280200, // 0071 LDBOOL R10 1 0 - 0x7C1C0600, // 0072 CALL R7 3 - 0x8C200F26, // 0073 GETMET R8 R7 K38 - 0x8C280D24, // 0074 GETMET R10 R6 K36 - 0x7C280200, // 0075 CALL R10 1 - 0x8C281526, // 0076 GETMET R10 R10 K38 - 0x7C280200, // 0077 CALL R10 1 - 0x7C200400, // 0078 CALL R8 2 - 0x8C200F27, // 0079 GETMET R8 R7 K39 - 0x7C200200, // 007A CALL R8 1 - 0x88200113, // 007B GETMBR R8 R0 K19 - 0x8C201128, // 007C GETMET R8 R8 K40 - 0x88280F29, // 007D GETMBR R10 R7 K41 - 0x5C2C0600, // 007E MOVE R11 R3 - 0x5C300800, // 007F MOVE R12 R4 - 0x88340F2A, // 0080 GETMBR R13 R7 K42 - 0x7C200A00, // 0081 CALL R8 5 - 0x50180200, // 0082 LDBOOL R6 1 0 - 0x80040C00, // 0083 RET 1 R6 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: report_data -********************************************************************/ -be_local_closure(Matter_IM_report_data, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(ReportDataMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20ReportDataMessage_X3D), - /* K7 */ be_const_int(3), - }), - be_str_weak(report_data), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x8C180D02, // 0002 GETMET R6 R6 K2 - 0x7C180200, // 0003 CALL R6 1 - 0x8C180D03, // 0004 GETMET R6 R6 K3 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C180400, // 0006 CALL R6 2 - 0xB81E0800, // 0007 GETNGBL R7 K4 - 0x8C1C0F05, // 0008 GETMET R7 R7 K5 - 0x60240008, // 0009 GETGBL R9 G8 - 0x5C280C00, // 000A MOVE R10 R6 - 0x7C240200, // 000B CALL R9 1 - 0x00260C09, // 000C ADD R9 K6 R9 - 0x58280007, // 000D LDCONST R10 K7 - 0x7C1C0600, // 000E CALL R7 3 - 0x501C0000, // 000F LDBOOL R7 0 0 - 0x80040E00, // 0010 RET 1 R7 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: process_invoke_response -********************************************************************/ -be_local_closure(Matter_IM_process_invoke_response, /* name */ - be_nested_proto( - 11, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(InvokeResponseMessage), - /* K3 */ be_nested_str_weak(from_TLV), - /* K4 */ be_nested_str_weak(tasmota), - /* K5 */ be_nested_str_weak(log), - /* K6 */ be_nested_str_weak(MTR_X3A_X20received_X20InvokeResponseMessage_X3D), - /* K7 */ be_const_int(3), - }), - be_str_weak(process_invoke_response), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x8C180D02, // 0002 GETMET R6 R6 K2 - 0x7C180200, // 0003 CALL R6 1 - 0x8C180D03, // 0004 GETMET R6 R6 K3 - 0x5C200400, // 0005 MOVE R8 R2 - 0x7C180400, // 0006 CALL R6 2 - 0xB81E0800, // 0007 GETNGBL R7 K4 - 0x8C1C0F05, // 0008 GETMET R7 R7 K5 - 0x60240008, // 0009 GETGBL R9 G8 - 0x5C280C00, // 000A MOVE R10 R6 - 0x7C240200, // 000B CALL R9 1 - 0x00260C09, // 000C ADD R9 K6 R9 - 0x58280007, // 000D LDCONST R10 K7 - 0x7C1C0600, // 000E CALL R7 3 - 0x501C0000, // 000F LDBOOL R7 0 0 - 0x80040E00, // 0010 RET 1 R7 + 0x5818000D, // 0023 LDCONST R6 K13 + 0x001A1806, // 0024 ADD R6 K12 R6 + 0x581C0005, // 0025 LDCONST R7 K5 + 0x7C100600, // 0026 CALL R4 3 + 0x8810030E, // 0027 GETMBR R4 R1 K14 + 0x1C14090F, // 0028 EQ R5 R4 K15 + 0x78160005, // 0029 JMPF R5 #0030 + 0x8C140110, // 002A GETMET R5 R0 K16 + 0x5C1C0200, // 002B MOVE R7 R1 + 0x5C200400, // 002C MOVE R8 R2 + 0x7C140600, // 002D CALL R5 3 + 0x80040A00, // 002E RET 1 R5 + 0x7002004D, // 002F JMP #007E + 0x1C140911, // 0030 EQ R5 R4 K17 + 0x78160005, // 0031 JMPF R5 #0038 + 0x8C140112, // 0032 GETMET R5 R0 K18 + 0x5C1C0200, // 0033 MOVE R7 R1 + 0x5C200400, // 0034 MOVE R8 R2 + 0x7C140600, // 0035 CALL R5 3 + 0x80040A00, // 0036 RET 1 R5 + 0x70020045, // 0037 JMP #007E + 0x1C140905, // 0038 EQ R5 R4 K5 + 0x78160005, // 0039 JMPF R5 #0040 + 0x8C140113, // 003A GETMET R5 R0 K19 + 0x5C1C0200, // 003B MOVE R7 R1 + 0x5C200400, // 003C MOVE R8 R2 + 0x7C140600, // 003D CALL R5 3 + 0x80040A00, // 003E RET 1 R5 + 0x7002003D, // 003F JMP #007E + 0x54160003, // 0040 LDINT R5 4 + 0x1C140805, // 0041 EQ R5 R4 R5 + 0x78160005, // 0042 JMPF R5 #0049 + 0x8C140114, // 0043 GETMET R5 R0 K20 + 0x5C1C0200, // 0044 MOVE R7 R1 + 0x5C200400, // 0045 MOVE R8 R2 + 0x7C140600, // 0046 CALL R5 3 + 0x80040A00, // 0047 RET 1 R5 + 0x70020034, // 0048 JMP #007E + 0x54160004, // 0049 LDINT R5 5 + 0x1C140805, // 004A EQ R5 R4 R5 + 0x78160005, // 004B JMPF R5 #0052 + 0x8C140115, // 004C GETMET R5 R0 K21 + 0x5C1C0200, // 004D MOVE R7 R1 + 0x5C200400, // 004E MOVE R8 R2 + 0x7C140600, // 004F CALL R5 3 + 0x80040A00, // 0050 RET 1 R5 + 0x7002002B, // 0051 JMP #007E + 0x54160005, // 0052 LDINT R5 6 + 0x1C140805, // 0053 EQ R5 R4 R5 + 0x78160005, // 0054 JMPF R5 #005B + 0x8C140116, // 0055 GETMET R5 R0 K22 + 0x5C1C0200, // 0056 MOVE R7 R1 + 0x5C200400, // 0057 MOVE R8 R2 + 0x7C140600, // 0058 CALL R5 3 + 0x80040A00, // 0059 RET 1 R5 + 0x70020022, // 005A JMP #007E + 0x54160006, // 005B LDINT R5 7 + 0x1C140805, // 005C EQ R5 R4 R5 + 0x78160005, // 005D JMPF R5 #0064 + 0x8C140117, // 005E GETMET R5 R0 K23 + 0x5C1C0200, // 005F MOVE R7 R1 + 0x5C200400, // 0060 MOVE R8 R2 + 0x7C140600, // 0061 CALL R5 3 + 0x80040A00, // 0062 RET 1 R5 + 0x70020019, // 0063 JMP #007E + 0x54160007, // 0064 LDINT R5 8 + 0x1C140805, // 0065 EQ R5 R4 R5 + 0x78160005, // 0066 JMPF R5 #006D + 0x8C140118, // 0067 GETMET R5 R0 K24 + 0x5C1C0200, // 0068 MOVE R7 R1 + 0x5C200400, // 0069 MOVE R8 R2 + 0x7C140600, // 006A CALL R5 3 + 0x80040A00, // 006B RET 1 R5 + 0x70020010, // 006C JMP #007E + 0x54160008, // 006D LDINT R5 9 + 0x1C140805, // 006E EQ R5 R4 R5 + 0x78160005, // 006F JMPF R5 #0076 + 0x8C140119, // 0070 GETMET R5 R0 K25 + 0x5C1C0200, // 0071 MOVE R7 R1 + 0x5C200400, // 0072 MOVE R8 R2 + 0x7C140600, // 0073 CALL R5 3 + 0x80040A00, // 0074 RET 1 R5 + 0x70020007, // 0075 JMP #007E + 0x54160009, // 0076 LDINT R5 10 + 0x1C140805, // 0077 EQ R5 R4 R5 + 0x78160004, // 0078 JMPF R5 #007E + 0x8C14011A, // 0079 GETMET R5 R0 K26 + 0x5C1C0200, // 007A MOVE R7 R1 + 0x5C200400, // 007B MOVE R8 R2 + 0x7C140600, // 007C CALL R5 3 + 0x80040A00, // 007D RET 1 R5 + 0x50140000, // 007E LDBOOL R5 0 0 + 0x80040A00, // 007F RET 1 R5 }) ) ); @@ -1242,24 +1696,28 @@ be_local_closure(Matter_IM_process_invoke_response, /* name */ ** Solidified class: Matter_IM ********************************************************************/ be_local_class(Matter_IM, - 1, + 2, NULL, - be_nested_map(14, + be_nested_map(18, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(process_timed_request, -1), be_const_closure(Matter_IM_process_timed_request_closure) }, - { be_const_key_weak(process_status_response, -1), be_const_closure(Matter_IM_process_status_response_closure) }, - { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_IM_process_incoming_closure) }, - { be_const_key_weak(every_second, -1), be_const_closure(Matter_IM_every_second_closure) }, - { be_const_key_weak(process_write_response, -1), be_const_closure(Matter_IM_process_write_response_closure) }, - { be_const_key_weak(init, 10), be_const_closure(Matter_IM_init_closure) }, - { be_const_key_weak(process_write_request, -1), be_const_closure(Matter_IM_process_write_request_closure) }, - { be_const_key_weak(process_invoke_request, 2), be_const_closure(Matter_IM_process_invoke_request_closure) }, + { be_const_key_weak(process_timed_request, 14), be_const_closure(Matter_IM_process_timed_request_closure) }, + { be_const_key_weak(responder, -1), be_const_var(0) }, { be_const_key_weak(process_read_request, -1), be_const_closure(Matter_IM_process_read_request_closure) }, - { be_const_key_weak(subscribe_response, -1), be_const_closure(Matter_IM_subscribe_response_closure) }, - { be_const_key_weak(subscribe_request, 7), be_const_closure(Matter_IM_subscribe_request_closure) }, - { be_const_key_weak(responder, 8), be_const_var(0) }, + { be_const_key_weak(every_second, 2), be_const_closure(Matter_IM_every_second_closure) }, { be_const_key_weak(report_data, -1), be_const_closure(Matter_IM_report_data_closure) }, { be_const_key_weak(process_invoke_response, -1), be_const_closure(Matter_IM_process_invoke_response_closure) }, + { be_const_key_weak(process_write_response, -1), be_const_closure(Matter_IM_process_write_response_closure) }, + { be_const_key_weak(device, -1), be_const_var(1) }, + { be_const_key_weak(subscribe_request, -1), be_const_closure(Matter_IM_subscribe_request_closure) }, + { be_const_key_weak(process_invoke_request, -1), be_const_closure(Matter_IM_process_invoke_request_closure) }, + { be_const_key_weak(MAX_MESSAGE, -1), be_const_int(1200) }, + { be_const_key_weak(process_status_response, 10), be_const_closure(Matter_IM_process_status_response_closure) }, + { be_const_key_weak(send_attr_report, -1), be_const_closure(Matter_IM_send_attr_report_closure) }, + { be_const_key_weak(subscribe_response, 8), be_const_closure(Matter_IM_subscribe_response_closure) }, + { be_const_key_weak(process_write_request, -1), be_const_closure(Matter_IM_process_write_request_closure) }, + { be_const_key_weak(init, 7), be_const_closure(Matter_IM_init_closure) }, + { be_const_key_weak(MSG_TIMEOUT, 6), be_const_int(10000) }, + { be_const_key_weak(process_incoming, -1), be_const_closure(Matter_IM_process_incoming_closure) }, })), be_str_weak(Matter_IM) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h index b0fe641e7..738b9ec91 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_IM_Data.h @@ -2429,7 +2429,7 @@ be_local_closure(Matter_StatusIB_to_TLV, /* name */ ( &(const bvalue[ 9]) { /* constants */ /* K0 */ be_nested_str_weak(matter), /* K1 */ be_nested_str_weak(TLV), - /* K2 */ be_nested_str_weak(Matter_TLV_list), + /* K2 */ be_nested_str_weak(Matter_TLV_struct), /* K3 */ be_nested_str_weak(add_TLV), /* K4 */ be_const_int(0), /* K5 */ be_nested_str_weak(U2), diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h index 4ea63aebd..76f644b3a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Message.h @@ -6,6 +6,799 @@ extern const bclass be_class_Matter_Frame; +/******************************************************************** +** Solidified function: encrypt +********************************************************************/ +be_local_closure(Matter_Frame_encrypt, /* name */ + be_nested_proto( + 15, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[30]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(raw), + /* K2 */ be_nested_str_weak(session), + /* K3 */ be_nested_str_weak(get_r2i), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(payload_idx), + /* K6 */ be_const_int(1), + /* K7 */ be_const_int(2147483647), + /* K8 */ be_nested_str_weak(add), + /* K9 */ be_nested_str_weak(flags), + /* K10 */ be_nested_str_weak(message_counter), + /* K11 */ be_nested_str_weak(get_mode), + /* K12 */ be_nested_str_weak(__CASE), + /* K13 */ be_nested_str_weak(deviceid), + /* K14 */ be_nested_str_weak(resize), + /* K15 */ be_nested_str_weak(tasmota), + /* K16 */ be_nested_str_weak(log), + /* K17 */ be_nested_str_weak(MTR_X3A_X20cleartext_X3A_X20), + /* K18 */ be_nested_str_weak(tohex), + /* K19 */ be_const_int(3), + /* K20 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A), + /* K21 */ be_nested_str_weak(MTR_X3A_X20r2i_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), + /* K22 */ be_nested_str_weak(MTR_X3A_X20p_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), + /* K23 */ be_nested_str_weak(MTR_X3A_X20a_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), + /* K24 */ be_nested_str_weak(MTR_X3A_X20n_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), + /* K25 */ be_nested_str_weak(AES_CCM), + /* K26 */ be_nested_str_weak(encrypt), + /* K27 */ be_nested_str_weak(tag), + /* K28 */ be_nested_str_weak(MTR_X3A_X20ciphertext_X20_X20_X3D), + /* K29 */ be_nested_str_weak(MTR_X3A_X20tag_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), + }), + be_str_weak(encrypt), + &be_const_str_solidified, + ( &(const binstruction[122]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x880C0102, // 0002 GETMBR R3 R0 K2 + 0x8C100703, // 0003 GETMET R4 R3 K3 + 0x7C100200, // 0004 CALL R4 1 + 0x88140105, // 0005 GETMBR R5 R0 K5 + 0x04140B06, // 0006 SUB R5 R5 K6 + 0x40160805, // 0007 CONNECT R5 K4 R5 + 0x94140405, // 0008 GETIDX R5 R2 R5 + 0x88180105, // 0009 GETMBR R6 R0 K5 + 0x40180D07, // 000A CONNECT R6 R6 K7 + 0x94180406, // 000B GETIDX R6 R2 R6 + 0x601C0015, // 000C GETGBL R7 G21 + 0x7C1C0000, // 000D CALL R7 0 + 0x8C200F08, // 000E GETMET R8 R7 K8 + 0x88280109, // 000F GETMBR R10 R0 K9 + 0x582C0006, // 0010 LDCONST R11 K6 + 0x7C200600, // 0011 CALL R8 3 + 0x8C200F08, // 0012 GETMET R8 R7 K8 + 0x8828010A, // 0013 GETMBR R10 R0 K10 + 0x542E0003, // 0014 LDINT R11 4 + 0x7C200600, // 0015 CALL R8 3 + 0x8C20070B, // 0016 GETMET R8 R3 K11 + 0x7C200200, // 0017 CALL R8 1 + 0x8824070C, // 0018 GETMBR R9 R3 K12 + 0x1C201009, // 0019 EQ R8 R8 R9 + 0x78220003, // 001A JMPF R8 #001F + 0x8820070D, // 001B GETMBR R8 R3 K13 + 0x78220001, // 001C JMPF R8 #001F + 0x8820070D, // 001D GETMBR R8 R3 K13 + 0x40200E08, // 001E CONNECT R8 R7 R8 + 0x8C200F0E, // 001F GETMET R8 R7 K14 + 0x542A000C, // 0020 LDINT R10 13 + 0x7C200400, // 0021 CALL R8 2 + 0xB8221E00, // 0022 GETNGBL R8 K15 + 0x8C201110, // 0023 GETMET R8 R8 K16 + 0x88280101, // 0024 GETMBR R10 R0 K1 + 0x8C281512, // 0025 GETMET R10 R10 K18 + 0x7C280200, // 0026 CALL R10 1 + 0x002A220A, // 0027 ADD R10 K17 R10 + 0x582C0013, // 0028 LDCONST R11 K19 + 0x7C200600, // 0029 CALL R8 3 + 0xB8221E00, // 002A GETNGBL R8 K15 + 0x8C201110, // 002B GETMET R8 R8 K16 + 0x58280014, // 002C LDCONST R10 K20 + 0x582C0013, // 002D LDCONST R11 K19 + 0x7C200600, // 002E CALL R8 3 + 0xB8221E00, // 002F GETNGBL R8 K15 + 0x8C201110, // 0030 GETMET R8 R8 K16 + 0x8C280912, // 0031 GETMET R10 R4 K18 + 0x7C280200, // 0032 CALL R10 1 + 0x002A2A0A, // 0033 ADD R10 K21 R10 + 0x582C0013, // 0034 LDCONST R11 K19 + 0x7C200600, // 0035 CALL R8 3 + 0xB8221E00, // 0036 GETNGBL R8 K15 + 0x8C201110, // 0037 GETMET R8 R8 K16 + 0x8C280D12, // 0038 GETMET R10 R6 K18 + 0x7C280200, // 0039 CALL R10 1 + 0x002A2C0A, // 003A ADD R10 K22 R10 + 0x582C0013, // 003B LDCONST R11 K19 + 0x7C200600, // 003C CALL R8 3 + 0xB8221E00, // 003D GETNGBL R8 K15 + 0x8C201110, // 003E GETMET R8 R8 K16 + 0x8C280B12, // 003F GETMET R10 R5 K18 + 0x7C280200, // 0040 CALL R10 1 + 0x002A2E0A, // 0041 ADD R10 K23 R10 + 0x582C0013, // 0042 LDCONST R11 K19 + 0x7C200600, // 0043 CALL R8 3 + 0xB8221E00, // 0044 GETNGBL R8 K15 + 0x8C201110, // 0045 GETMET R8 R8 K16 + 0x8C280F12, // 0046 GETMET R10 R7 K18 + 0x7C280200, // 0047 CALL R10 1 + 0x002A300A, // 0048 ADD R10 K24 R10 + 0x582C0013, // 0049 LDCONST R11 K19 + 0x7C200600, // 004A CALL R8 3 + 0x8C200319, // 004B GETMET R8 R1 K25 + 0x5C280800, // 004C MOVE R10 R4 + 0x5C2C0E00, // 004D MOVE R11 R7 + 0x5C300A00, // 004E MOVE R12 R5 + 0x6034000C, // 004F GETGBL R13 G12 + 0x5C380C00, // 0050 MOVE R14 R6 + 0x7C340200, // 0051 CALL R13 1 + 0x543A000F, // 0052 LDINT R14 16 + 0x7C200C00, // 0053 CALL R8 6 + 0x8C24111A, // 0054 GETMET R9 R8 K26 + 0x5C2C0C00, // 0055 MOVE R11 R6 + 0x7C240400, // 0056 CALL R9 2 + 0x8C28111B, // 0057 GETMET R10 R8 K27 + 0x7C280200, // 0058 CALL R10 1 + 0xB82E1E00, // 0059 GETNGBL R11 K15 + 0x8C2C1710, // 005A GETMET R11 R11 K16 + 0x58340014, // 005B LDCONST R13 K20 + 0x58380013, // 005C LDCONST R14 K19 + 0x7C2C0600, // 005D CALL R11 3 + 0xB82E1E00, // 005E GETNGBL R11 K15 + 0x8C2C1710, // 005F GETMET R11 R11 K16 + 0x8C341312, // 0060 GETMET R13 R9 K18 + 0x7C340200, // 0061 CALL R13 1 + 0x0036380D, // 0062 ADD R13 K28 R13 + 0x58380013, // 0063 LDCONST R14 K19 + 0x7C2C0600, // 0064 CALL R11 3 + 0xB82E1E00, // 0065 GETNGBL R11 K15 + 0x8C2C1710, // 0066 GETMET R11 R11 K16 + 0x8C341512, // 0067 GETMET R13 R10 K18 + 0x7C340200, // 0068 CALL R13 1 + 0x00363A0D, // 0069 ADD R13 K29 R13 + 0x58380013, // 006A LDCONST R14 K19 + 0x7C2C0600, // 006B CALL R11 3 + 0xB82E1E00, // 006C GETNGBL R11 K15 + 0x8C2C1710, // 006D GETMET R11 R11 K16 + 0x58340014, // 006E LDCONST R13 K20 + 0x58380013, // 006F LDCONST R14 K19 + 0x7C2C0600, // 0070 CALL R11 3 + 0x882C0101, // 0071 GETMBR R11 R0 K1 + 0x8C2C170E, // 0072 GETMET R11 R11 K14 + 0x88340105, // 0073 GETMBR R13 R0 K5 + 0x7C2C0400, // 0074 CALL R11 2 + 0x882C0101, // 0075 GETMBR R11 R0 K1 + 0x402C1609, // 0076 CONNECT R11 R11 R9 + 0x882C0101, // 0077 GETMBR R11 R0 K1 + 0x402C160A, // 0078 CONNECT R11 R11 R10 + 0x80000000, // 0079 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: build_response +********************************************************************/ +be_local_closure(Matter_Frame_build_response, /* name */ + be_nested_proto( + 12, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[32]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(message_handler), + /* K2 */ be_nested_str_weak(remote_ip), + /* K3 */ be_nested_str_weak(remote_port), + /* K4 */ be_nested_str_weak(flag_s), + /* K5 */ be_nested_str_weak(flag_dsiz), + /* K6 */ be_const_int(1), + /* K7 */ be_nested_str_weak(dest_node_id_8), + /* K8 */ be_nested_str_weak(source_node_id), + /* K9 */ be_const_int(0), + /* K10 */ be_nested_str_weak(session), + /* 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), + /* K17 */ be_nested_str_weak(x_flag_i), + /* K18 */ be_nested_str_weak(opcode), + /* K19 */ be_nested_str_weak(exchange_id), + /* K20 */ be_nested_str_weak(protocol_id), + /* K21 */ be_nested_str_weak(x_flag_r), + /* K22 */ be_nested_str_weak(x_flag_a), + /* K23 */ be_nested_str_weak(ack_message_counter), + /* K24 */ be_nested_str_weak(matter), + /* K25 */ be_nested_str_weak(get_opcode_name), + /* K26 */ be_nested_str_weak(format), + /* K27 */ be_nested_str_weak(0x_X2502X), + /* K28 */ be_nested_str_weak(tasmota), + /* K29 */ be_nested_str_weak(log), + /* K30 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X20_X20_X20_X20_X25s), + /* K31 */ be_const_int(2), + }), + be_str_weak(build_response), + &be_const_str_solidified, + ( &(const binstruction[82]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0x60100006, // 0001 GETGBL R4 G6 + 0x5C140000, // 0002 MOVE R5 R0 + 0x7C100200, // 0003 CALL R4 1 + 0x88140101, // 0004 GETMBR R5 R0 K1 + 0x7C100200, // 0005 CALL R4 1 + 0x88140102, // 0006 GETMBR R5 R0 K2 + 0x90120405, // 0007 SETMBR R4 K2 R5 + 0x88140103, // 0008 GETMBR R5 R0 K3 + 0x90120605, // 0009 SETMBR R4 K3 R5 + 0x88140104, // 000A GETMBR R5 R0 K4 + 0x78160003, // 000B JMPF R5 #0010 + 0x90120B06, // 000C SETMBR R4 K5 K6 + 0x88140108, // 000D GETMBR R5 R0 K8 + 0x90120E05, // 000E SETMBR R4 K7 R5 + 0x70020000, // 000F JMP #0011 + 0x90120B09, // 0010 SETMBR R4 K5 K9 + 0x8814010A, // 0011 GETMBR R5 R0 K10 + 0x90121405, // 0012 SETMBR R4 K10 R5 + 0x8814010B, // 0013 GETMBR R5 R0 K11 + 0x20140B09, // 0014 NE R5 R5 K9 + 0x7816000E, // 0015 JMPF R5 #0025 + 0x8814010A, // 0016 GETMBR R5 R0 K10 + 0x7816000C, // 0017 JMPF R5 #0025 + 0x8814010A, // 0018 GETMBR R5 R0 K10 + 0x88140B0C, // 0019 GETMBR R5 R5 K12 + 0x20140B09, // 001A NE R5 R5 K9 + 0x78160008, // 001B JMPF R5 #0025 + 0x8814010A, // 001C GETMBR R5 R0 K10 + 0x88140B0E, // 001D GETMBR R5 R5 K14 + 0x8C140B0F, // 001E GETMET R5 R5 K15 + 0x7C140200, // 001F CALL R5 1 + 0x90121A05, // 0020 SETMBR R4 K13 R5 + 0x8814010A, // 0021 GETMBR R5 R0 K10 + 0x88140B0C, // 0022 GETMBR R5 R5 K12 + 0x90121605, // 0023 SETMBR R4 K11 R5 + 0x70020005, // 0024 JMP #002B + 0x8814010A, // 0025 GETMBR R5 R0 K10 + 0x88140B10, // 0026 GETMBR R5 R5 K16 + 0x8C140B0F, // 0027 GETMET R5 R5 K15 + 0x7C140200, // 0028 CALL R5 1 + 0x90121A05, // 0029 SETMBR R4 K13 R5 + 0x90121709, // 002A SETMBR R4 K11 K9 + 0x90122309, // 002B SETMBR R4 K17 K9 + 0x90122401, // 002C SETMBR R4 K18 R1 + 0x88140113, // 002D GETMBR R5 R0 K19 + 0x90122605, // 002E SETMBR R4 K19 R5 + 0x88140114, // 002F GETMBR R5 R0 K20 + 0x90122805, // 0030 SETMBR R4 K20 R5 + 0x88140115, // 0031 GETMBR R5 R0 K21 + 0x78160002, // 0032 JMPF R5 #0036 + 0x90122D06, // 0033 SETMBR R4 K22 K6 + 0x8814010D, // 0034 GETMBR R5 R0 K13 + 0x90122E05, // 0035 SETMBR R4 K23 R5 + 0x780A0001, // 0036 JMPF R2 #0039 + 0x58140006, // 0037 LDCONST R5 K6 + 0x70020000, // 0038 JMP #003A + 0x58140009, // 0039 LDCONST R5 K9 + 0x90122A05, // 003A SETMBR R4 K21 R5 + 0x8814090B, // 003B GETMBR R5 R4 K11 + 0x1C140B09, // 003C EQ R5 R5 K9 + 0x78160012, // 003D JMPF R5 #0051 + 0xB8163000, // 003E GETNGBL R5 K24 + 0x8C140B19, // 003F GETMET R5 R5 K25 + 0x881C0912, // 0040 GETMBR R7 R4 K18 + 0x7C140400, // 0041 CALL R5 2 + 0x5C180A00, // 0042 MOVE R6 R5 + 0x741A0004, // 0043 JMPT R6 #0049 + 0x8C18071A, // 0044 GETMET R6 R3 K26 + 0x5820001B, // 0045 LDCONST R8 K27 + 0x88240912, // 0046 GETMBR R9 R4 K18 + 0x7C180600, // 0047 CALL R6 3 + 0x5C140C00, // 0048 MOVE R5 R6 + 0xB81A3800, // 0049 GETNGBL R6 K28 + 0x8C180D1D, // 004A GETMET R6 R6 K29 + 0x8C20071A, // 004B GETMET R8 R3 K26 + 0x5828001E, // 004C LDCONST R10 K30 + 0x5C2C0A00, // 004D MOVE R11 R5 + 0x7C200600, // 004E CALL R8 3 + 0x5824001F, // 004F LDCONST R9 K31 + 0x7C180600, // 0050 CALL R6 3 + 0x80040800, // 0051 RET 1 R4 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_Frame_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(message_handler), + /* K1 */ be_nested_str_weak(raw), + /* K2 */ be_nested_str_weak(remote_ip), + /* K3 */ be_nested_str_weak(remote_port), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x90020604, // 0003 SETMBR R0 K3 R4 + 0x80000000, // 0004 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: decode_header +********************************************************************/ +be_local_closure(Matter_Frame_decode_header, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[21]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(raw), + /* K2 */ be_nested_str_weak(flags), + /* K3 */ be_nested_str_weak(get), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(flag_s), + /* K6 */ be_nested_str_weak(getbits), + /* K7 */ be_const_int(2), + /* K8 */ be_nested_str_weak(flag_dsiz), + /* K9 */ be_const_int(3), + /* K10 */ be_nested_str_weak(sec_flags), + /* K11 */ be_nested_str_weak(sec_p), + /* K12 */ be_nested_str_weak(sec_c), + /* K13 */ be_nested_str_weak(sec_mx), + /* K14 */ be_nested_str_weak(sec_sesstype), + /* K15 */ be_nested_str_weak(local_session_id), + /* K16 */ be_nested_str_weak(message_counter), + /* K17 */ be_nested_str_weak(source_node_id), + /* K18 */ be_nested_str_weak(dest_node_id_8), + /* K19 */ be_nested_str_weak(dest_node_id_2), + /* K20 */ be_nested_str_weak(payload_idx), + }), + be_str_weak(decode_header), + &be_const_str_solidified, + ( &(const binstruction[121]) { /* code */ + 0x58040000, // 0000 LDCONST R1 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C0C0503, // 0002 GETMET R3 R2 K3 + 0x58140000, // 0003 LDCONST R5 K0 + 0x58180004, // 0004 LDCONST R6 K4 + 0x7C0C0600, // 0005 CALL R3 3 + 0x90020403, // 0006 SETMBR R0 K2 R3 + 0x880C0102, // 0007 GETMBR R3 R0 K2 + 0x541200F7, // 0008 LDINT R4 248 + 0x2C0C0604, // 0009 AND R3 R3 R4 + 0x200C0700, // 000A NE R3 R3 K0 + 0x780E0001, // 000B JMPF R3 #000E + 0x500C0000, // 000C LDBOOL R3 0 0 + 0x80040600, // 000D RET 1 R3 + 0x8C0C0506, // 000E GETMET R3 R2 K6 + 0x58140007, // 000F LDCONST R5 K7 + 0x58180004, // 0010 LDCONST R6 K4 + 0x7C0C0600, // 0011 CALL R3 3 + 0x90020A03, // 0012 SETMBR R0 K5 R3 + 0x8C0C0506, // 0013 GETMET R3 R2 K6 + 0x58140000, // 0014 LDCONST R5 K0 + 0x58180007, // 0015 LDCONST R6 K7 + 0x7C0C0600, // 0016 CALL R3 3 + 0x90021003, // 0017 SETMBR R0 K8 R3 + 0x880C0108, // 0018 GETMBR R3 R0 K8 + 0x1C0C0709, // 0019 EQ R3 R3 K9 + 0x780E0001, // 001A JMPF R3 #001D + 0x500C0000, // 001B LDBOOL R3 0 0 + 0x80040600, // 001C RET 1 R3 + 0x8C0C0503, // 001D GETMET R3 R2 K3 + 0x58140009, // 001E LDCONST R5 K9 + 0x58180004, // 001F LDCONST R6 K4 + 0x7C0C0600, // 0020 CALL R3 3 + 0x90021403, // 0021 SETMBR R0 K10 R3 + 0x8C0C0506, // 0022 GETMET R3 R2 K6 + 0x54160007, // 0023 LDINT R5 8 + 0x08161205, // 0024 MUL R5 K9 R5 + 0x541A0006, // 0025 LDINT R6 7 + 0x00140A06, // 0026 ADD R5 R5 R6 + 0x58180004, // 0027 LDCONST R6 K4 + 0x7C0C0600, // 0028 CALL R3 3 + 0x90021603, // 0029 SETMBR R0 K11 R3 + 0x8C0C0506, // 002A GETMET R3 R2 K6 + 0x54160007, // 002B LDINT R5 8 + 0x08161205, // 002C MUL R5 K9 R5 + 0x541A0005, // 002D LDINT R6 6 + 0x00140A06, // 002E ADD R5 R5 R6 + 0x58180004, // 002F LDCONST R6 K4 + 0x7C0C0600, // 0030 CALL R3 3 + 0x90021803, // 0031 SETMBR R0 K12 R3 + 0x8C0C0506, // 0032 GETMET R3 R2 K6 + 0x54160007, // 0033 LDINT R5 8 + 0x08161205, // 0034 MUL R5 K9 R5 + 0x541A0004, // 0035 LDINT R6 5 + 0x00140A06, // 0036 ADD R5 R5 R6 + 0x58180004, // 0037 LDCONST R6 K4 + 0x7C0C0600, // 0038 CALL R3 3 + 0x90021A03, // 0039 SETMBR R0 K13 R3 + 0x8C0C0506, // 003A GETMET R3 R2 K6 + 0x54160007, // 003B LDINT R5 8 + 0x08161205, // 003C MUL R5 K9 R5 + 0x58180007, // 003D LDCONST R6 K7 + 0x7C0C0600, // 003E CALL R3 3 + 0x90021C03, // 003F SETMBR R0 K14 R3 + 0x880C010E, // 0040 GETMBR R3 R0 K14 + 0x240C0704, // 0041 GT R3 R3 K4 + 0x780E0001, // 0042 JMPF R3 #0045 + 0x500C0000, // 0043 LDBOOL R3 0 0 + 0x80040600, // 0044 RET 1 R3 + 0x8C0C0503, // 0045 GETMET R3 R2 K3 + 0x58140004, // 0046 LDCONST R5 K4 + 0x58180007, // 0047 LDCONST R6 K7 + 0x7C0C0600, // 0048 CALL R3 3 + 0x90021E03, // 0049 SETMBR R0 K15 R3 + 0x8C0C0503, // 004A GETMET R3 R2 K3 + 0x54160003, // 004B LDINT R5 4 + 0x541A0003, // 004C LDINT R6 4 + 0x7C0C0600, // 004D CALL R3 3 + 0x90022003, // 004E SETMBR R0 K16 R3 + 0x540E0007, // 004F LDINT R3 8 + 0x00040203, // 0050 ADD R1 R1 R3 + 0x880C0105, // 0051 GETMBR R3 R0 K5 + 0x780E0006, // 0052 JMPF R3 #005A + 0x540E0006, // 0053 LDINT R3 7 + 0x000C0203, // 0054 ADD R3 R1 R3 + 0x400C0203, // 0055 CONNECT R3 R1 R3 + 0x940C0403, // 0056 GETIDX R3 R2 R3 + 0x90022203, // 0057 SETMBR R0 K17 R3 + 0x540E0007, // 0058 LDINT R3 8 + 0x00040203, // 0059 ADD R1 R1 R3 + 0x880C0108, // 005A GETMBR R3 R0 K8 + 0x1C0C0704, // 005B EQ R3 R3 K4 + 0x780E0007, // 005C JMPF R3 #0065 + 0x540E0006, // 005D LDINT R3 7 + 0x000C0203, // 005E ADD R3 R1 R3 + 0x400C0203, // 005F CONNECT R3 R1 R3 + 0x940C0403, // 0060 GETIDX R3 R2 R3 + 0x90022403, // 0061 SETMBR R0 K18 R3 + 0x540E0007, // 0062 LDINT R3 8 + 0x00040203, // 0063 ADD R1 R1 R3 + 0x70020008, // 0064 JMP #006E + 0x880C0108, // 0065 GETMBR R3 R0 K8 + 0x1C0C0707, // 0066 EQ R3 R3 K7 + 0x780E0005, // 0067 JMPF R3 #006E + 0x8C0C0503, // 0068 GETMET R3 R2 K3 + 0x5C140200, // 0069 MOVE R5 R1 + 0x58180007, // 006A LDCONST R6 K7 + 0x7C0C0600, // 006B CALL R3 3 + 0x90022603, // 006C SETMBR R0 K19 R3 + 0x00040307, // 006D ADD R1 R1 K7 + 0x880C010D, // 006E GETMBR R3 R0 K13 + 0x780E0005, // 006F JMPF R3 #0076 + 0x8C0C0503, // 0070 GETMET R3 R2 K3 + 0x5C140200, // 0071 MOVE R5 R1 + 0x58180007, // 0072 LDCONST R6 K7 + 0x7C0C0600, // 0073 CALL R3 3 + 0x00100707, // 0074 ADD R4 R3 K7 + 0x00040204, // 0075 ADD R1 R1 R4 + 0x90022801, // 0076 SETMBR R0 K20 R1 + 0x500C0200, // 0077 LDBOOL R3 1 0 + 0x80040600, // 0078 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: decode_payload +********************************************************************/ +be_local_closure(Matter_Frame_decode_payload, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[19]) { /* constants */ + /* K0 */ be_nested_str_weak(payload_idx), + /* K1 */ be_nested_str_weak(raw), + /* K2 */ be_nested_str_weak(x_flags), + /* K3 */ be_nested_str_weak(get), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(x_flag_v), + /* K6 */ be_nested_str_weak(getbits), + /* K7 */ be_nested_str_weak(x_flag_sx), + /* K8 */ be_const_int(3), + /* K9 */ be_nested_str_weak(x_flag_r), + /* K10 */ be_const_int(2), + /* K11 */ be_nested_str_weak(x_flag_a), + /* K12 */ be_nested_str_weak(x_flag_i), + /* K13 */ be_nested_str_weak(opcode), + /* K14 */ be_nested_str_weak(exchange_id), + /* K15 */ be_nested_str_weak(protocol_id), + /* K16 */ be_nested_str_weak(vendor_id), + /* K17 */ be_nested_str_weak(ack_message_counter), + /* K18 */ be_nested_str_weak(app_payload_idx), + }), + be_str_weak(decode_payload), + &be_const_str_solidified, + ( &(const binstruction[87]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88080101, // 0001 GETMBR R2 R0 K1 + 0x8C0C0503, // 0002 GETMET R3 R2 K3 + 0x5C140200, // 0003 MOVE R5 R1 + 0x58180004, // 0004 LDCONST R6 K4 + 0x7C0C0600, // 0005 CALL R3 3 + 0x90020403, // 0006 SETMBR R0 K2 R3 + 0x8C0C0506, // 0007 GETMET R3 R2 K6 + 0x54160007, // 0008 LDINT R5 8 + 0x08140205, // 0009 MUL R5 R1 R5 + 0x541A0003, // 000A LDINT R6 4 + 0x00140A06, // 000B ADD R5 R5 R6 + 0x58180004, // 000C LDCONST R6 K4 + 0x7C0C0600, // 000D CALL R3 3 + 0x90020A03, // 000E SETMBR R0 K5 R3 + 0x8C0C0506, // 000F GETMET R3 R2 K6 + 0x54160007, // 0010 LDINT R5 8 + 0x08140205, // 0011 MUL R5 R1 R5 + 0x00140B08, // 0012 ADD R5 R5 K8 + 0x58180004, // 0013 LDCONST R6 K4 + 0x7C0C0600, // 0014 CALL R3 3 + 0x90020E03, // 0015 SETMBR R0 K7 R3 + 0x8C0C0506, // 0016 GETMET R3 R2 K6 + 0x54160007, // 0017 LDINT R5 8 + 0x08140205, // 0018 MUL R5 R1 R5 + 0x00140B0A, // 0019 ADD R5 R5 K10 + 0x58180004, // 001A LDCONST R6 K4 + 0x7C0C0600, // 001B CALL R3 3 + 0x90021203, // 001C SETMBR R0 K9 R3 + 0x8C0C0506, // 001D GETMET R3 R2 K6 + 0x54160007, // 001E LDINT R5 8 + 0x08140205, // 001F MUL R5 R1 R5 + 0x00140B04, // 0020 ADD R5 R5 K4 + 0x58180004, // 0021 LDCONST R6 K4 + 0x7C0C0600, // 0022 CALL R3 3 + 0x90021603, // 0023 SETMBR R0 K11 R3 + 0x8C0C0506, // 0024 GETMET R3 R2 K6 + 0x54160007, // 0025 LDINT R5 8 + 0x08140205, // 0026 MUL R5 R1 R5 + 0x58180004, // 0027 LDCONST R6 K4 + 0x7C0C0600, // 0028 CALL R3 3 + 0x90021803, // 0029 SETMBR R0 K12 R3 + 0x8C0C0503, // 002A GETMET R3 R2 K3 + 0x00140304, // 002B ADD R5 R1 K4 + 0x58180004, // 002C LDCONST R6 K4 + 0x7C0C0600, // 002D CALL R3 3 + 0x90021A03, // 002E SETMBR R0 K13 R3 + 0x8C0C0503, // 002F GETMET R3 R2 K3 + 0x0014030A, // 0030 ADD R5 R1 K10 + 0x5818000A, // 0031 LDCONST R6 K10 + 0x7C0C0600, // 0032 CALL R3 3 + 0x90021C03, // 0033 SETMBR R0 K14 R3 + 0x8C0C0503, // 0034 GETMET R3 R2 K3 + 0x54160003, // 0035 LDINT R5 4 + 0x00140205, // 0036 ADD R5 R1 R5 + 0x5818000A, // 0037 LDCONST R6 K10 + 0x7C0C0600, // 0038 CALL R3 3 + 0x90021E03, // 0039 SETMBR R0 K15 R3 + 0x540E0005, // 003A LDINT R3 6 + 0x00040203, // 003B ADD R1 R1 R3 + 0x880C0105, // 003C GETMBR R3 R0 K5 + 0x780E0005, // 003D JMPF R3 #0044 + 0x8C0C0503, // 003E GETMET R3 R2 K3 + 0x5C140200, // 003F MOVE R5 R1 + 0x5818000A, // 0040 LDCONST R6 K10 + 0x7C0C0600, // 0041 CALL R3 3 + 0x90022003, // 0042 SETMBR R0 K16 R3 + 0x0004030A, // 0043 ADD R1 R1 K10 + 0x880C010B, // 0044 GETMBR R3 R0 K11 + 0x780E0006, // 0045 JMPF R3 #004D + 0x8C0C0503, // 0046 GETMET R3 R2 K3 + 0x5C140200, // 0047 MOVE R5 R1 + 0x541A0003, // 0048 LDINT R6 4 + 0x7C0C0600, // 0049 CALL R3 3 + 0x90022203, // 004A SETMBR R0 K17 R3 + 0x540E0003, // 004B LDINT R3 4 + 0x00040203, // 004C ADD R1 R1 R3 + 0x880C0107, // 004D GETMBR R3 R0 K7 + 0x780E0005, // 004E JMPF R3 #0055 + 0x8C0C0503, // 004F GETMET R3 R2 K3 + 0x5C140200, // 0050 MOVE R5 R1 + 0x5818000A, // 0051 LDCONST R6 K10 + 0x7C0C0600, // 0052 CALL R3 3 + 0x0010070A, // 0053 ADD R4 R3 K10 + 0x00040204, // 0054 ADD R1 R1 R4 + 0x90022401, // 0055 SETMBR R0 K18 R1 + 0x80040000, // 0056 RET 1 R0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: debug +********************************************************************/ +be_local_closure(Matter_Frame_debug, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(matter), + /* K1 */ be_nested_str_weak(Frame), + /* K2 */ be_nested_str_weak(message_handler), + /* K3 */ be_nested_str_weak(decode_header), + /* K4 */ be_nested_str_weak(decode_payload), + /* K5 */ be_nested_str_weak(tasmota), + /* K6 */ be_nested_str_weak(log), + /* K7 */ be_nested_str_weak(MTR_X3A_X20sending_X20decode_X3A_X20), + /* K8 */ be_nested_str_weak(inspect), + /* K9 */ be_const_int(3), + }), + be_str_weak(debug), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0xB80A0000, // 0000 GETNGBL R2 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x88100102, // 0002 GETMBR R4 R0 K2 + 0x5C140200, // 0003 MOVE R5 R1 + 0x7C080600, // 0004 CALL R2 3 + 0x8C0C0503, // 0005 GETMET R3 R2 K3 + 0x7C0C0200, // 0006 CALL R3 1 + 0x8C0C0504, // 0007 GETMET R3 R2 K4 + 0x7C0C0200, // 0008 CALL R3 1 + 0xB80E0A00, // 0009 GETNGBL R3 K5 + 0x8C0C0706, // 000A GETMET R3 R3 K6 + 0xB8160000, // 000B GETNGBL R5 K0 + 0x8C140B08, // 000C GETMET R5 R5 K8 + 0x5C1C0400, // 000D MOVE R7 R2 + 0x7C140400, // 000E CALL R5 2 + 0x00160E05, // 000F ADD R5 K7 R5 + 0x58180009, // 0010 LDCONST R6 K9 + 0x7C0C0600, // 0011 CALL R3 3 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: build_standalone_ack +********************************************************************/ +be_local_closure(Matter_Frame_build_standalone_ack, /* name */ + be_nested_proto( + 11, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[28]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(message_handler), + /* K2 */ be_nested_str_weak(flag_s), + /* K3 */ be_nested_str_weak(flag_dsiz), + /* K4 */ be_const_int(1), + /* K5 */ be_nested_str_weak(dest_node_id_8), + /* K6 */ be_nested_str_weak(source_node_id), + /* K7 */ be_const_int(0), + /* K8 */ be_nested_str_weak(session), + /* K9 */ be_nested_str_weak(message_counter), + /* K10 */ be_nested_str_weak(counter_snd), + /* K11 */ be_nested_str_weak(next), + /* K12 */ be_nested_str_weak(local_session_id), + /* K13 */ be_nested_str_weak(initiator_session_id), + /* K14 */ be_nested_str_weak(x_flag_i), + /* K15 */ be_nested_str_weak(opcode), + /* K16 */ be_nested_str_weak(exchange_id), + /* K17 */ be_nested_str_weak(protocol_id), + /* K18 */ be_nested_str_weak(x_flag_a), + /* K19 */ be_nested_str_weak(ack_message_counter), + /* K20 */ be_nested_str_weak(x_flag_r), + /* K21 */ be_nested_str_weak(tasmota), + /* K22 */ be_nested_str_weak(log), + /* K23 */ be_nested_str_weak(format), + /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X20_X20_X20_X20_X25s), + /* K25 */ be_nested_str_weak(matter), + /* K26 */ be_nested_str_weak(get_opcode_name), + /* K27 */ be_const_int(2), + }), + be_str_weak(build_standalone_ack), + &be_const_str_solidified, + ( &(const binstruction[45]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x60080006, // 0001 GETGBL R2 G6 + 0x5C0C0000, // 0002 MOVE R3 R0 + 0x7C080200, // 0003 CALL R2 1 + 0x880C0101, // 0004 GETMBR R3 R0 K1 + 0x7C080200, // 0005 CALL R2 1 + 0x880C0102, // 0006 GETMBR R3 R0 K2 + 0x780E0003, // 0007 JMPF R3 #000C + 0x900A0704, // 0008 SETMBR R2 K3 K4 + 0x880C0106, // 0009 GETMBR R3 R0 K6 + 0x900A0A03, // 000A SETMBR R2 K5 R3 + 0x70020000, // 000B JMP #000D + 0x900A0707, // 000C SETMBR R2 K3 K7 + 0x880C0108, // 000D GETMBR R3 R0 K8 + 0x900A1003, // 000E SETMBR R2 K8 R3 + 0x880C0108, // 000F GETMBR R3 R0 K8 + 0x880C070A, // 0010 GETMBR R3 R3 K10 + 0x8C0C070B, // 0011 GETMET R3 R3 K11 + 0x7C0C0200, // 0012 CALL R3 1 + 0x900A1203, // 0013 SETMBR R2 K9 R3 + 0x880C0108, // 0014 GETMBR R3 R0 K8 + 0x880C070D, // 0015 GETMBR R3 R3 K13 + 0x900A1803, // 0016 SETMBR R2 K12 R3 + 0x900A1D07, // 0017 SETMBR R2 K14 K7 + 0x540E000F, // 0018 LDINT R3 16 + 0x900A1E03, // 0019 SETMBR R2 K15 R3 + 0x880C0110, // 001A GETMBR R3 R0 K16 + 0x900A2003, // 001B SETMBR R2 K16 R3 + 0x900A2307, // 001C SETMBR R2 K17 K7 + 0x900A2504, // 001D SETMBR R2 K18 K4 + 0x880C0109, // 001E GETMBR R3 R0 K9 + 0x900A2603, // 001F SETMBR R2 K19 R3 + 0x900A2907, // 0020 SETMBR R2 K20 K7 + 0xB80E2A00, // 0021 GETNGBL R3 K21 + 0x8C0C0716, // 0022 GETMET R3 R3 K22 + 0x8C140317, // 0023 GETMET R5 R1 K23 + 0x581C0018, // 0024 LDCONST R7 K24 + 0xB8223200, // 0025 GETNGBL R8 K25 + 0x8C20111A, // 0026 GETMET R8 R8 K26 + 0x8828050F, // 0027 GETMBR R10 R2 K15 + 0x7C200400, // 0028 CALL R8 2 + 0x7C140600, // 0029 CALL R5 3 + 0x5818001B, // 002A LDCONST R6 K27 + 0x7C0C0600, // 002B CALL R3 3 + 0x80040400, // 002C RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: decrypt ********************************************************************/ @@ -231,491 +1024,6 @@ be_local_closure(Matter_Frame_decrypt, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_Frame_init, /* name */ - be_nested_proto( - 3, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(message_handler), - /* K1 */ be_nested_str_weak(raw), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: decode_payload -********************************************************************/ -be_local_closure(Matter_Frame_decode_payload, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[19]) { /* constants */ - /* K0 */ be_nested_str_weak(payload_idx), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(x_flags), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(x_flag_v), - /* K6 */ be_nested_str_weak(getbits), - /* K7 */ be_nested_str_weak(x_flag_sx), - /* K8 */ be_const_int(3), - /* K9 */ be_nested_str_weak(x_flag_r), - /* K10 */ be_const_int(2), - /* K11 */ be_nested_str_weak(x_flag_a), - /* K12 */ be_nested_str_weak(x_flag_i), - /* K13 */ be_nested_str_weak(opcode), - /* K14 */ be_nested_str_weak(exchange_id), - /* K15 */ be_nested_str_weak(protocol_id), - /* K16 */ be_nested_str_weak(vendor_id), - /* K17 */ be_nested_str_weak(ack_message_counter), - /* K18 */ be_nested_str_weak(app_payload_idx), - }), - be_str_weak(decode_payload), - &be_const_str_solidified, - ( &(const binstruction[87]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C0C0503, // 0002 GETMET R3 R2 K3 - 0x5C140200, // 0003 MOVE R5 R1 - 0x58180004, // 0004 LDCONST R6 K4 - 0x7C0C0600, // 0005 CALL R3 3 - 0x90020403, // 0006 SETMBR R0 K2 R3 - 0x8C0C0506, // 0007 GETMET R3 R2 K6 - 0x54160007, // 0008 LDINT R5 8 - 0x08140205, // 0009 MUL R5 R1 R5 - 0x541A0003, // 000A LDINT R6 4 - 0x00140A06, // 000B ADD R5 R5 R6 - 0x58180004, // 000C LDCONST R6 K4 - 0x7C0C0600, // 000D CALL R3 3 - 0x90020A03, // 000E SETMBR R0 K5 R3 - 0x8C0C0506, // 000F GETMET R3 R2 K6 - 0x54160007, // 0010 LDINT R5 8 - 0x08140205, // 0011 MUL R5 R1 R5 - 0x00140B08, // 0012 ADD R5 R5 K8 - 0x58180004, // 0013 LDCONST R6 K4 - 0x7C0C0600, // 0014 CALL R3 3 - 0x90020E03, // 0015 SETMBR R0 K7 R3 - 0x8C0C0506, // 0016 GETMET R3 R2 K6 - 0x54160007, // 0017 LDINT R5 8 - 0x08140205, // 0018 MUL R5 R1 R5 - 0x00140B0A, // 0019 ADD R5 R5 K10 - 0x58180004, // 001A LDCONST R6 K4 - 0x7C0C0600, // 001B CALL R3 3 - 0x90021203, // 001C SETMBR R0 K9 R3 - 0x8C0C0506, // 001D GETMET R3 R2 K6 - 0x54160007, // 001E LDINT R5 8 - 0x08140205, // 001F MUL R5 R1 R5 - 0x00140B04, // 0020 ADD R5 R5 K4 - 0x58180004, // 0021 LDCONST R6 K4 - 0x7C0C0600, // 0022 CALL R3 3 - 0x90021603, // 0023 SETMBR R0 K11 R3 - 0x8C0C0506, // 0024 GETMET R3 R2 K6 - 0x54160007, // 0025 LDINT R5 8 - 0x08140205, // 0026 MUL R5 R1 R5 - 0x58180004, // 0027 LDCONST R6 K4 - 0x7C0C0600, // 0028 CALL R3 3 - 0x90021803, // 0029 SETMBR R0 K12 R3 - 0x8C0C0503, // 002A GETMET R3 R2 K3 - 0x00140304, // 002B ADD R5 R1 K4 - 0x58180004, // 002C LDCONST R6 K4 - 0x7C0C0600, // 002D CALL R3 3 - 0x90021A03, // 002E SETMBR R0 K13 R3 - 0x8C0C0503, // 002F GETMET R3 R2 K3 - 0x0014030A, // 0030 ADD R5 R1 K10 - 0x5818000A, // 0031 LDCONST R6 K10 - 0x7C0C0600, // 0032 CALL R3 3 - 0x90021C03, // 0033 SETMBR R0 K14 R3 - 0x8C0C0503, // 0034 GETMET R3 R2 K3 - 0x54160003, // 0035 LDINT R5 4 - 0x00140205, // 0036 ADD R5 R1 R5 - 0x5818000A, // 0037 LDCONST R6 K10 - 0x7C0C0600, // 0038 CALL R3 3 - 0x90021E03, // 0039 SETMBR R0 K15 R3 - 0x540E0005, // 003A LDINT R3 6 - 0x00040203, // 003B ADD R1 R1 R3 - 0x880C0105, // 003C GETMBR R3 R0 K5 - 0x780E0005, // 003D JMPF R3 #0044 - 0x8C0C0503, // 003E GETMET R3 R2 K3 - 0x5C140200, // 003F MOVE R5 R1 - 0x5818000A, // 0040 LDCONST R6 K10 - 0x7C0C0600, // 0041 CALL R3 3 - 0x90022003, // 0042 SETMBR R0 K16 R3 - 0x0004030A, // 0043 ADD R1 R1 K10 - 0x880C010B, // 0044 GETMBR R3 R0 K11 - 0x780E0006, // 0045 JMPF R3 #004D - 0x8C0C0503, // 0046 GETMET R3 R2 K3 - 0x5C140200, // 0047 MOVE R5 R1 - 0x541A0003, // 0048 LDINT R6 4 - 0x7C0C0600, // 0049 CALL R3 3 - 0x90022203, // 004A SETMBR R0 K17 R3 - 0x540E0003, // 004B LDINT R3 4 - 0x00040203, // 004C ADD R1 R1 R3 - 0x880C0107, // 004D GETMBR R3 R0 K7 - 0x780E0005, // 004E JMPF R3 #0055 - 0x8C0C0503, // 004F GETMET R3 R2 K3 - 0x5C140200, // 0050 MOVE R5 R1 - 0x5818000A, // 0051 LDCONST R6 K10 - 0x7C0C0600, // 0052 CALL R3 3 - 0x0010070A, // 0053 ADD R4 R3 K10 - 0x00040204, // 0054 ADD R1 R1 R4 - 0x90022401, // 0055 SETMBR R0 K18 R1 - 0x80040000, // 0056 RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: encrypt -********************************************************************/ -be_local_closure(Matter_Frame_encrypt, /* name */ - be_nested_proto( - 15, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(session), - /* K3 */ be_nested_str_weak(get_r2i), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(payload_idx), - /* K6 */ be_const_int(1), - /* K7 */ be_const_int(2147483647), - /* K8 */ be_nested_str_weak(add), - /* K9 */ be_nested_str_weak(flags), - /* K10 */ be_nested_str_weak(message_counter), - /* K11 */ be_nested_str_weak(get_mode), - /* K12 */ be_nested_str_weak(__CASE), - /* K13 */ be_nested_str_weak(deviceid), - /* K14 */ be_nested_str_weak(resize), - /* K15 */ be_nested_str_weak(tasmota), - /* K16 */ be_nested_str_weak(log), - /* K17 */ be_nested_str_weak(MTR_X3A_X20cleartext_X3A_X20), - /* K18 */ be_nested_str_weak(tohex), - /* K19 */ be_const_int(3), - /* K20 */ be_nested_str_weak(MTR_X3A_X20_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A_X2A), - /* K21 */ be_nested_str_weak(MTR_X3A_X20r2i_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), - /* K22 */ be_nested_str_weak(MTR_X3A_X20p_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), - /* K23 */ be_nested_str_weak(MTR_X3A_X20a_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), - /* K24 */ be_nested_str_weak(MTR_X3A_X20n_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), - /* K25 */ be_nested_str_weak(AES_CCM), - /* K26 */ be_nested_str_weak(encrypt), - /* K27 */ be_nested_str_weak(tag), - /* K28 */ be_nested_str_weak(MTR_X3A_X20ciphertext_X20_X20_X3D), - /* K29 */ be_nested_str_weak(MTR_X3A_X20tag_X20_X20_X20_X20_X20_X20_X20_X20_X20_X3D), - }), - be_str_weak(encrypt), - &be_const_str_solidified, - ( &(const binstruction[122]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x880C0102, // 0002 GETMBR R3 R0 K2 - 0x8C100703, // 0003 GETMET R4 R3 K3 - 0x7C100200, // 0004 CALL R4 1 - 0x88140105, // 0005 GETMBR R5 R0 K5 - 0x04140B06, // 0006 SUB R5 R5 K6 - 0x40160805, // 0007 CONNECT R5 K4 R5 - 0x94140405, // 0008 GETIDX R5 R2 R5 - 0x88180105, // 0009 GETMBR R6 R0 K5 - 0x40180D07, // 000A CONNECT R6 R6 K7 - 0x94180406, // 000B GETIDX R6 R2 R6 - 0x601C0015, // 000C GETGBL R7 G21 - 0x7C1C0000, // 000D CALL R7 0 - 0x8C200F08, // 000E GETMET R8 R7 K8 - 0x88280109, // 000F GETMBR R10 R0 K9 - 0x582C0006, // 0010 LDCONST R11 K6 - 0x7C200600, // 0011 CALL R8 3 - 0x8C200F08, // 0012 GETMET R8 R7 K8 - 0x8828010A, // 0013 GETMBR R10 R0 K10 - 0x542E0003, // 0014 LDINT R11 4 - 0x7C200600, // 0015 CALL R8 3 - 0x8C20070B, // 0016 GETMET R8 R3 K11 - 0x7C200200, // 0017 CALL R8 1 - 0x8824070C, // 0018 GETMBR R9 R3 K12 - 0x1C201009, // 0019 EQ R8 R8 R9 - 0x78220003, // 001A JMPF R8 #001F - 0x8820070D, // 001B GETMBR R8 R3 K13 - 0x78220001, // 001C JMPF R8 #001F - 0x8820070D, // 001D GETMBR R8 R3 K13 - 0x40200E08, // 001E CONNECT R8 R7 R8 - 0x8C200F0E, // 001F GETMET R8 R7 K14 - 0x542A000C, // 0020 LDINT R10 13 - 0x7C200400, // 0021 CALL R8 2 - 0xB8221E00, // 0022 GETNGBL R8 K15 - 0x8C201110, // 0023 GETMET R8 R8 K16 - 0x88280101, // 0024 GETMBR R10 R0 K1 - 0x8C281512, // 0025 GETMET R10 R10 K18 - 0x7C280200, // 0026 CALL R10 1 - 0x002A220A, // 0027 ADD R10 K17 R10 - 0x582C0013, // 0028 LDCONST R11 K19 - 0x7C200600, // 0029 CALL R8 3 - 0xB8221E00, // 002A GETNGBL R8 K15 - 0x8C201110, // 002B GETMET R8 R8 K16 - 0x58280014, // 002C LDCONST R10 K20 - 0x582C0013, // 002D LDCONST R11 K19 - 0x7C200600, // 002E CALL R8 3 - 0xB8221E00, // 002F GETNGBL R8 K15 - 0x8C201110, // 0030 GETMET R8 R8 K16 - 0x8C280912, // 0031 GETMET R10 R4 K18 - 0x7C280200, // 0032 CALL R10 1 - 0x002A2A0A, // 0033 ADD R10 K21 R10 - 0x582C0013, // 0034 LDCONST R11 K19 - 0x7C200600, // 0035 CALL R8 3 - 0xB8221E00, // 0036 GETNGBL R8 K15 - 0x8C201110, // 0037 GETMET R8 R8 K16 - 0x8C280D12, // 0038 GETMET R10 R6 K18 - 0x7C280200, // 0039 CALL R10 1 - 0x002A2C0A, // 003A ADD R10 K22 R10 - 0x582C0013, // 003B LDCONST R11 K19 - 0x7C200600, // 003C CALL R8 3 - 0xB8221E00, // 003D GETNGBL R8 K15 - 0x8C201110, // 003E GETMET R8 R8 K16 - 0x8C280B12, // 003F GETMET R10 R5 K18 - 0x7C280200, // 0040 CALL R10 1 - 0x002A2E0A, // 0041 ADD R10 K23 R10 - 0x582C0013, // 0042 LDCONST R11 K19 - 0x7C200600, // 0043 CALL R8 3 - 0xB8221E00, // 0044 GETNGBL R8 K15 - 0x8C201110, // 0045 GETMET R8 R8 K16 - 0x8C280F12, // 0046 GETMET R10 R7 K18 - 0x7C280200, // 0047 CALL R10 1 - 0x002A300A, // 0048 ADD R10 K24 R10 - 0x582C0013, // 0049 LDCONST R11 K19 - 0x7C200600, // 004A CALL R8 3 - 0x8C200319, // 004B GETMET R8 R1 K25 - 0x5C280800, // 004C MOVE R10 R4 - 0x5C2C0E00, // 004D MOVE R11 R7 - 0x5C300A00, // 004E MOVE R12 R5 - 0x6034000C, // 004F GETGBL R13 G12 - 0x5C380C00, // 0050 MOVE R14 R6 - 0x7C340200, // 0051 CALL R13 1 - 0x543A000F, // 0052 LDINT R14 16 - 0x7C200C00, // 0053 CALL R8 6 - 0x8C24111A, // 0054 GETMET R9 R8 K26 - 0x5C2C0C00, // 0055 MOVE R11 R6 - 0x7C240400, // 0056 CALL R9 2 - 0x8C28111B, // 0057 GETMET R10 R8 K27 - 0x7C280200, // 0058 CALL R10 1 - 0xB82E1E00, // 0059 GETNGBL R11 K15 - 0x8C2C1710, // 005A GETMET R11 R11 K16 - 0x58340014, // 005B LDCONST R13 K20 - 0x58380013, // 005C LDCONST R14 K19 - 0x7C2C0600, // 005D CALL R11 3 - 0xB82E1E00, // 005E GETNGBL R11 K15 - 0x8C2C1710, // 005F GETMET R11 R11 K16 - 0x8C341312, // 0060 GETMET R13 R9 K18 - 0x7C340200, // 0061 CALL R13 1 - 0x0036380D, // 0062 ADD R13 K28 R13 - 0x58380013, // 0063 LDCONST R14 K19 - 0x7C2C0600, // 0064 CALL R11 3 - 0xB82E1E00, // 0065 GETNGBL R11 K15 - 0x8C2C1710, // 0066 GETMET R11 R11 K16 - 0x8C341512, // 0067 GETMET R13 R10 K18 - 0x7C340200, // 0068 CALL R13 1 - 0x00363A0D, // 0069 ADD R13 K29 R13 - 0x58380013, // 006A LDCONST R14 K19 - 0x7C2C0600, // 006B CALL R11 3 - 0xB82E1E00, // 006C GETNGBL R11 K15 - 0x8C2C1710, // 006D GETMET R11 R11 K16 - 0x58340014, // 006E LDCONST R13 K20 - 0x58380013, // 006F LDCONST R14 K19 - 0x7C2C0600, // 0070 CALL R11 3 - 0x882C0101, // 0071 GETMBR R11 R0 K1 - 0x8C2C170E, // 0072 GETMET R11 R11 K14 - 0x88340105, // 0073 GETMBR R13 R0 K5 - 0x7C2C0400, // 0074 CALL R11 2 - 0x882C0101, // 0075 GETMBR R11 R0 K1 - 0x402C1609, // 0076 CONNECT R11 R11 R9 - 0x882C0101, // 0077 GETMBR R11 R0 K1 - 0x402C160A, // 0078 CONNECT R11 R11 R10 - 0x80000000, // 0079 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: build_standalone_ack -********************************************************************/ -be_local_closure(Matter_Frame_build_standalone_ack, /* name */ - be_nested_proto( - 11, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[28]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(message_handler), - /* K2 */ be_nested_str_weak(flag_s), - /* K3 */ be_nested_str_weak(flag_dsiz), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(dest_node_id_8), - /* K6 */ be_nested_str_weak(source_node_id), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(session), - /* K9 */ be_nested_str_weak(message_counter), - /* K10 */ be_nested_str_weak(counter_snd), - /* K11 */ be_nested_str_weak(next), - /* K12 */ be_nested_str_weak(local_session_id), - /* K13 */ be_nested_str_weak(initiator_session_id), - /* K14 */ be_nested_str_weak(x_flag_i), - /* K15 */ be_nested_str_weak(opcode), - /* K16 */ be_nested_str_weak(exchange_id), - /* K17 */ be_nested_str_weak(protocol_id), - /* K18 */ be_nested_str_weak(x_flag_a), - /* K19 */ be_nested_str_weak(ack_message_counter), - /* K20 */ be_nested_str_weak(x_flag_r), - /* K21 */ be_nested_str_weak(tasmota), - /* K22 */ be_nested_str_weak(log), - /* K23 */ be_nested_str_weak(format), - /* K24 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X20_X20_X20_X20_X25s), - /* K25 */ be_nested_str_weak(matter), - /* K26 */ be_nested_str_weak(get_opcode_name), - /* K27 */ be_const_int(2), - }), - be_str_weak(build_standalone_ack), - &be_const_str_solidified, - ( &(const binstruction[45]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x60080006, // 0001 GETGBL R2 G6 - 0x5C0C0000, // 0002 MOVE R3 R0 - 0x7C080200, // 0003 CALL R2 1 - 0x880C0101, // 0004 GETMBR R3 R0 K1 - 0x7C080200, // 0005 CALL R2 1 - 0x880C0102, // 0006 GETMBR R3 R0 K2 - 0x780E0003, // 0007 JMPF R3 #000C - 0x900A0704, // 0008 SETMBR R2 K3 K4 - 0x880C0106, // 0009 GETMBR R3 R0 K6 - 0x900A0A03, // 000A SETMBR R2 K5 R3 - 0x70020000, // 000B JMP #000D - 0x900A0707, // 000C SETMBR R2 K3 K7 - 0x880C0108, // 000D GETMBR R3 R0 K8 - 0x900A1003, // 000E SETMBR R2 K8 R3 - 0x880C0108, // 000F GETMBR R3 R0 K8 - 0x880C070A, // 0010 GETMBR R3 R3 K10 - 0x8C0C070B, // 0011 GETMET R3 R3 K11 - 0x7C0C0200, // 0012 CALL R3 1 - 0x900A1203, // 0013 SETMBR R2 K9 R3 - 0x880C0108, // 0014 GETMBR R3 R0 K8 - 0x880C070D, // 0015 GETMBR R3 R3 K13 - 0x900A1803, // 0016 SETMBR R2 K12 R3 - 0x900A1D07, // 0017 SETMBR R2 K14 K7 - 0x540E000F, // 0018 LDINT R3 16 - 0x900A1E03, // 0019 SETMBR R2 K15 R3 - 0x880C0110, // 001A GETMBR R3 R0 K16 - 0x900A2003, // 001B SETMBR R2 K16 R3 - 0x900A2307, // 001C SETMBR R2 K17 K7 - 0x900A2504, // 001D SETMBR R2 K18 K4 - 0x880C0109, // 001E GETMBR R3 R0 K9 - 0x900A2603, // 001F SETMBR R2 K19 R3 - 0x900A2907, // 0020 SETMBR R2 K20 K7 - 0xB80E2A00, // 0021 GETNGBL R3 K21 - 0x8C0C0716, // 0022 GETMET R3 R3 K22 - 0x8C140317, // 0023 GETMET R5 R1 K23 - 0x581C0018, // 0024 LDCONST R7 K24 - 0xB8223200, // 0025 GETNGBL R8 K25 - 0x8C20111A, // 0026 GETMET R8 R8 K26 - 0x8828050F, // 0027 GETMBR R10 R2 K15 - 0x7C200400, // 0028 CALL R8 2 - 0x7C140600, // 0029 CALL R5 3 - 0x5818001B, // 002A LDCONST R6 K27 - 0x7C0C0600, // 002B CALL R3 3 - 0x80040400, // 002C RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: debug -********************************************************************/ -be_local_closure(Matter_Frame_debug, /* name */ - be_nested_proto( - 8, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(matter), - /* K1 */ be_nested_str_weak(Frame), - /* K2 */ be_nested_str_weak(message_handler), - /* K3 */ be_nested_str_weak(decode_header), - /* K4 */ be_nested_str_weak(decode_payload), - /* K5 */ be_nested_str_weak(tasmota), - /* K6 */ be_nested_str_weak(log), - /* K7 */ be_nested_str_weak(MTR_X3A_X20sending_X20decode_X3A_X20), - /* K8 */ be_nested_str_weak(inspect), - /* K9 */ be_const_int(3), - }), - be_str_weak(debug), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0xB80A0000, // 0000 GETNGBL R2 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x88100102, // 0002 GETMBR R4 R0 K2 - 0x5C140200, // 0003 MOVE R5 R1 - 0x7C080600, // 0004 CALL R2 3 - 0x8C0C0503, // 0005 GETMET R3 R2 K3 - 0x7C0C0200, // 0006 CALL R3 1 - 0x8C0C0504, // 0007 GETMET R3 R2 K4 - 0x7C0C0200, // 0008 CALL R3 1 - 0xB80E0A00, // 0009 GETNGBL R3 K5 - 0x8C0C0706, // 000A GETMET R3 R3 K6 - 0xB8160000, // 000B GETNGBL R5 K0 - 0x8C140B08, // 000C GETMET R5 R5 K8 - 0x5C1C0400, // 000D MOVE R7 R2 - 0x7C140400, // 000E CALL R5 2 - 0x00160E05, // 000F ADD R5 K7 R5 - 0x58180009, // 0010 LDCONST R6 K9 - 0x7C0C0600, // 0011 CALL R3 3 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: encode ********************************************************************/ @@ -914,351 +1222,55 @@ be_local_closure(Matter_Frame_encode, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: build_response -********************************************************************/ -be_local_closure(Matter_Frame_build_response, /* name */ - be_nested_proto( - 12, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[30]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(message_handler), - /* K2 */ be_nested_str_weak(flag_s), - /* K3 */ be_nested_str_weak(flag_dsiz), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(dest_node_id_8), - /* K6 */ be_nested_str_weak(source_node_id), - /* K7 */ be_const_int(0), - /* K8 */ be_nested_str_weak(session), - /* K9 */ be_nested_str_weak(local_session_id), - /* K10 */ be_nested_str_weak(initiator_session_id), - /* 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(_counter_insecure_snd), - /* 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_r), - /* K20 */ be_nested_str_weak(x_flag_a), - /* K21 */ be_nested_str_weak(ack_message_counter), - /* K22 */ be_nested_str_weak(matter), - /* K23 */ be_nested_str_weak(get_opcode_name), - /* K24 */ be_nested_str_weak(format), - /* K25 */ be_nested_str_weak(0x_X2502X), - /* K26 */ be_nested_str_weak(tasmota), - /* K27 */ be_nested_str_weak(log), - /* K28 */ be_nested_str_weak(MTR_X3A_X20_X3CReplied_X20_X20_X20_X20_X20_X20_X20_X25s), - /* K29 */ be_const_int(2), - }), - be_str_weak(build_response), - &be_const_str_solidified, - ( &(const binstruction[78]) { /* code */ - 0xA40E0000, // 0000 IMPORT R3 K0 - 0x60100006, // 0001 GETGBL R4 G6 - 0x5C140000, // 0002 MOVE R5 R0 - 0x7C100200, // 0003 CALL R4 1 - 0x88140101, // 0004 GETMBR R5 R0 K1 - 0x7C100200, // 0005 CALL R4 1 - 0x88140102, // 0006 GETMBR R5 R0 K2 - 0x78160003, // 0007 JMPF R5 #000C - 0x90120704, // 0008 SETMBR R4 K3 K4 - 0x88140106, // 0009 GETMBR R5 R0 K6 - 0x90120A05, // 000A SETMBR R4 K5 R5 - 0x70020000, // 000B JMP #000D - 0x90120707, // 000C SETMBR R4 K3 K7 - 0x88140108, // 000D GETMBR R5 R0 K8 - 0x90121005, // 000E SETMBR R4 K8 R5 - 0x88140109, // 000F GETMBR R5 R0 K9 - 0x20140B07, // 0010 NE R5 R5 K7 - 0x7816000E, // 0011 JMPF R5 #0021 - 0x88140108, // 0012 GETMBR R5 R0 K8 - 0x7816000C, // 0013 JMPF R5 #0021 - 0x88140108, // 0014 GETMBR R5 R0 K8 - 0x88140B0A, // 0015 GETMBR R5 R5 K10 - 0x20140B07, // 0016 NE R5 R5 K7 - 0x78160008, // 0017 JMPF R5 #0021 - 0x88140108, // 0018 GETMBR R5 R0 K8 - 0x88140B0C, // 0019 GETMBR R5 R5 K12 - 0x8C140B0D, // 001A GETMET R5 R5 K13 - 0x7C140200, // 001B CALL R5 1 - 0x90121605, // 001C SETMBR R4 K11 R5 - 0x88140108, // 001D GETMBR R5 R0 K8 - 0x88140B0A, // 001E GETMBR R5 R5 K10 - 0x90121205, // 001F SETMBR R4 K9 R5 - 0x70020005, // 0020 JMP #0027 - 0x88140108, // 0021 GETMBR R5 R0 K8 - 0x88140B0E, // 0022 GETMBR R5 R5 K14 - 0x8C140B0D, // 0023 GETMET R5 R5 K13 - 0x7C140200, // 0024 CALL R5 1 - 0x90121605, // 0025 SETMBR R4 K11 R5 - 0x90121307, // 0026 SETMBR R4 K9 K7 - 0x90121F07, // 0027 SETMBR R4 K15 K7 - 0x90122001, // 0028 SETMBR R4 K16 R1 - 0x88140111, // 0029 GETMBR R5 R0 K17 - 0x90122205, // 002A SETMBR R4 K17 R5 - 0x88140112, // 002B GETMBR R5 R0 K18 - 0x90122405, // 002C SETMBR R4 K18 R5 - 0x88140113, // 002D GETMBR R5 R0 K19 - 0x78160002, // 002E JMPF R5 #0032 - 0x90122904, // 002F SETMBR R4 K20 K4 - 0x8814010B, // 0030 GETMBR R5 R0 K11 - 0x90122A05, // 0031 SETMBR R4 K21 R5 - 0x780A0001, // 0032 JMPF R2 #0035 - 0x58140004, // 0033 LDCONST R5 K4 - 0x70020000, // 0034 JMP #0036 - 0x58140007, // 0035 LDCONST R5 K7 - 0x90122605, // 0036 SETMBR R4 K19 R5 - 0x88140909, // 0037 GETMBR R5 R4 K9 - 0x1C140B07, // 0038 EQ R5 R5 K7 - 0x78160012, // 0039 JMPF R5 #004D - 0xB8162C00, // 003A GETNGBL R5 K22 - 0x8C140B17, // 003B GETMET R5 R5 K23 - 0x881C0910, // 003C GETMBR R7 R4 K16 - 0x7C140400, // 003D CALL R5 2 - 0x5C180A00, // 003E MOVE R6 R5 - 0x741A0004, // 003F JMPT R6 #0045 - 0x8C180718, // 0040 GETMET R6 R3 K24 - 0x58200019, // 0041 LDCONST R8 K25 - 0x88240910, // 0042 GETMBR R9 R4 K16 - 0x7C180600, // 0043 CALL R6 3 - 0x5C140C00, // 0044 MOVE R5 R6 - 0xB81A3400, // 0045 GETNGBL R6 K26 - 0x8C180D1B, // 0046 GETMET R6 R6 K27 - 0x8C200718, // 0047 GETMET R8 R3 K24 - 0x5828001C, // 0048 LDCONST R10 K28 - 0x5C2C0A00, // 0049 MOVE R11 R5 - 0x7C200600, // 004A CALL R8 3 - 0x5824001D, // 004B LDCONST R9 K29 - 0x7C180600, // 004C CALL R6 3 - 0x80040800, // 004D RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: decode_header -********************************************************************/ -be_local_closure(Matter_Frame_decode_header, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[21]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(raw), - /* K2 */ be_nested_str_weak(flags), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(1), - /* K5 */ be_nested_str_weak(flag_s), - /* K6 */ be_nested_str_weak(getbits), - /* K7 */ be_const_int(2), - /* K8 */ be_nested_str_weak(flag_dsiz), - /* K9 */ be_const_int(3), - /* K10 */ be_nested_str_weak(sec_flags), - /* K11 */ be_nested_str_weak(sec_p), - /* K12 */ be_nested_str_weak(sec_c), - /* K13 */ be_nested_str_weak(sec_mx), - /* K14 */ be_nested_str_weak(sec_sesstype), - /* K15 */ be_nested_str_weak(local_session_id), - /* K16 */ be_nested_str_weak(message_counter), - /* K17 */ be_nested_str_weak(source_node_id), - /* K18 */ be_nested_str_weak(dest_node_id_8), - /* K19 */ be_nested_str_weak(dest_node_id_2), - /* K20 */ be_nested_str_weak(payload_idx), - }), - be_str_weak(decode_header), - &be_const_str_solidified, - ( &(const binstruction[121]) { /* code */ - 0x58040000, // 0000 LDCONST R1 K0 - 0x88080101, // 0001 GETMBR R2 R0 K1 - 0x8C0C0503, // 0002 GETMET R3 R2 K3 - 0x58140000, // 0003 LDCONST R5 K0 - 0x58180004, // 0004 LDCONST R6 K4 - 0x7C0C0600, // 0005 CALL R3 3 - 0x90020403, // 0006 SETMBR R0 K2 R3 - 0x880C0102, // 0007 GETMBR R3 R0 K2 - 0x541200F7, // 0008 LDINT R4 248 - 0x2C0C0604, // 0009 AND R3 R3 R4 - 0x200C0700, // 000A NE R3 R3 K0 - 0x780E0001, // 000B JMPF R3 #000E - 0x500C0000, // 000C LDBOOL R3 0 0 - 0x80040600, // 000D RET 1 R3 - 0x8C0C0506, // 000E GETMET R3 R2 K6 - 0x58140007, // 000F LDCONST R5 K7 - 0x58180004, // 0010 LDCONST R6 K4 - 0x7C0C0600, // 0011 CALL R3 3 - 0x90020A03, // 0012 SETMBR R0 K5 R3 - 0x8C0C0506, // 0013 GETMET R3 R2 K6 - 0x58140000, // 0014 LDCONST R5 K0 - 0x58180007, // 0015 LDCONST R6 K7 - 0x7C0C0600, // 0016 CALL R3 3 - 0x90021003, // 0017 SETMBR R0 K8 R3 - 0x880C0108, // 0018 GETMBR R3 R0 K8 - 0x1C0C0709, // 0019 EQ R3 R3 K9 - 0x780E0001, // 001A JMPF R3 #001D - 0x500C0000, // 001B LDBOOL R3 0 0 - 0x80040600, // 001C RET 1 R3 - 0x8C0C0503, // 001D GETMET R3 R2 K3 - 0x58140009, // 001E LDCONST R5 K9 - 0x58180004, // 001F LDCONST R6 K4 - 0x7C0C0600, // 0020 CALL R3 3 - 0x90021403, // 0021 SETMBR R0 K10 R3 - 0x8C0C0506, // 0022 GETMET R3 R2 K6 - 0x54160007, // 0023 LDINT R5 8 - 0x08161205, // 0024 MUL R5 K9 R5 - 0x541A0006, // 0025 LDINT R6 7 - 0x00140A06, // 0026 ADD R5 R5 R6 - 0x58180004, // 0027 LDCONST R6 K4 - 0x7C0C0600, // 0028 CALL R3 3 - 0x90021603, // 0029 SETMBR R0 K11 R3 - 0x8C0C0506, // 002A GETMET R3 R2 K6 - 0x54160007, // 002B LDINT R5 8 - 0x08161205, // 002C MUL R5 K9 R5 - 0x541A0005, // 002D LDINT R6 6 - 0x00140A06, // 002E ADD R5 R5 R6 - 0x58180004, // 002F LDCONST R6 K4 - 0x7C0C0600, // 0030 CALL R3 3 - 0x90021803, // 0031 SETMBR R0 K12 R3 - 0x8C0C0506, // 0032 GETMET R3 R2 K6 - 0x54160007, // 0033 LDINT R5 8 - 0x08161205, // 0034 MUL R5 K9 R5 - 0x541A0004, // 0035 LDINT R6 5 - 0x00140A06, // 0036 ADD R5 R5 R6 - 0x58180004, // 0037 LDCONST R6 K4 - 0x7C0C0600, // 0038 CALL R3 3 - 0x90021A03, // 0039 SETMBR R0 K13 R3 - 0x8C0C0506, // 003A GETMET R3 R2 K6 - 0x54160007, // 003B LDINT R5 8 - 0x08161205, // 003C MUL R5 K9 R5 - 0x58180007, // 003D LDCONST R6 K7 - 0x7C0C0600, // 003E CALL R3 3 - 0x90021C03, // 003F SETMBR R0 K14 R3 - 0x880C010E, // 0040 GETMBR R3 R0 K14 - 0x240C0704, // 0041 GT R3 R3 K4 - 0x780E0001, // 0042 JMPF R3 #0045 - 0x500C0000, // 0043 LDBOOL R3 0 0 - 0x80040600, // 0044 RET 1 R3 - 0x8C0C0503, // 0045 GETMET R3 R2 K3 - 0x58140004, // 0046 LDCONST R5 K4 - 0x58180007, // 0047 LDCONST R6 K7 - 0x7C0C0600, // 0048 CALL R3 3 - 0x90021E03, // 0049 SETMBR R0 K15 R3 - 0x8C0C0503, // 004A GETMET R3 R2 K3 - 0x54160003, // 004B LDINT R5 4 - 0x541A0003, // 004C LDINT R6 4 - 0x7C0C0600, // 004D CALL R3 3 - 0x90022003, // 004E SETMBR R0 K16 R3 - 0x540E0007, // 004F LDINT R3 8 - 0x00040203, // 0050 ADD R1 R1 R3 - 0x880C0105, // 0051 GETMBR R3 R0 K5 - 0x780E0006, // 0052 JMPF R3 #005A - 0x540E0006, // 0053 LDINT R3 7 - 0x000C0203, // 0054 ADD R3 R1 R3 - 0x400C0203, // 0055 CONNECT R3 R1 R3 - 0x940C0403, // 0056 GETIDX R3 R2 R3 - 0x90022203, // 0057 SETMBR R0 K17 R3 - 0x540E0007, // 0058 LDINT R3 8 - 0x00040203, // 0059 ADD R1 R1 R3 - 0x880C0108, // 005A GETMBR R3 R0 K8 - 0x1C0C0704, // 005B EQ R3 R3 K4 - 0x780E0007, // 005C JMPF R3 #0065 - 0x540E0006, // 005D LDINT R3 7 - 0x000C0203, // 005E ADD R3 R1 R3 - 0x400C0203, // 005F CONNECT R3 R1 R3 - 0x940C0403, // 0060 GETIDX R3 R2 R3 - 0x90022403, // 0061 SETMBR R0 K18 R3 - 0x540E0007, // 0062 LDINT R3 8 - 0x00040203, // 0063 ADD R1 R1 R3 - 0x70020008, // 0064 JMP #006E - 0x880C0108, // 0065 GETMBR R3 R0 K8 - 0x1C0C0707, // 0066 EQ R3 R3 K7 - 0x780E0005, // 0067 JMPF R3 #006E - 0x8C0C0503, // 0068 GETMET R3 R2 K3 - 0x5C140200, // 0069 MOVE R5 R1 - 0x58180007, // 006A LDCONST R6 K7 - 0x7C0C0600, // 006B CALL R3 3 - 0x90022603, // 006C SETMBR R0 K19 R3 - 0x00040307, // 006D ADD R1 R1 K7 - 0x880C010D, // 006E GETMBR R3 R0 K13 - 0x780E0005, // 006F JMPF R3 #0076 - 0x8C0C0503, // 0070 GETMET R3 R2 K3 - 0x5C140200, // 0071 MOVE R5 R1 - 0x58180007, // 0072 LDCONST R6 K7 - 0x7C0C0600, // 0073 CALL R3 3 - 0x00100707, // 0074 ADD R4 R3 K7 - 0x00040204, // 0075 ADD R1 R1 R4 - 0x90022801, // 0076 SETMBR R0 K20 R1 - 0x500C0200, // 0077 LDBOOL R3 1 0 - 0x80040600, // 0078 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_Frame ********************************************************************/ be_local_class(Matter_Frame, - 30, + 32, NULL, - be_nested_map(39, + be_nested_map(41, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(ack_message_counter, -1), be_const_var(27) }, - { be_const_key_weak(x_flag_r, -1), be_const_var(20) }, - { be_const_key_weak(dest_node_id_2, -1), be_const_var(15) }, - { be_const_key_weak(message_counter, -1), be_const_var(13) }, - { be_const_key_weak(sec_p, 15), be_const_var(9) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_Frame_init_closure) }, - { be_const_key_weak(protocol_id, 31), be_const_var(25) }, - { be_const_key_weak(session, -1), be_const_var(1) }, - { be_const_key_weak(sec_flags, 13), be_const_var(8) }, - { be_const_key_weak(x_flag_sx, 20), be_const_var(19) }, - { be_const_key_weak(sec_mx, -1), be_const_var(11) }, - { be_const_key_weak(encode, -1), be_const_closure(Matter_Frame_encode_closure) }, - { be_const_key_weak(local_session_id, -1), be_const_var(7) }, - { be_const_key_weak(flags, 38), be_const_var(4) }, - { be_const_key_weak(exchange_id, -1), be_const_var(24) }, - { be_const_key_weak(payload_idx, 10), be_const_var(3) }, - { be_const_key_weak(dest_node_id_8, -1), be_const_var(16) }, - { be_const_key_weak(x_flag_i, -1), be_const_var(22) }, - { be_const_key_weak(flag_s, -1), be_const_var(5) }, - { be_const_key_weak(app_payload_idx, 14), be_const_var(29) }, - { be_const_key_weak(flag_dsiz, 12), be_const_var(6) }, - { be_const_key_weak(encrypt, -1), be_const_closure(Matter_Frame_encrypt_closure) }, + { be_const_key_weak(x_flag_a, 8), be_const_var(21) }, { be_const_key_weak(x_flags, -1), be_const_var(17) }, - { be_const_key_weak(x_flag_v, 22), be_const_var(18) }, - { be_const_key_weak(sec_sesstype, -1), be_const_var(12) }, - { be_const_key_weak(x_flag_a, -1), be_const_var(21) }, - { be_const_key_weak(message_handler, 28), be_const_var(0) }, - { be_const_key_weak(sec_extensions, 24), be_const_var(28) }, - { be_const_key_weak(raw, -1), be_const_var(2) }, - { be_const_key_weak(opcode, -1), be_const_var(23) }, - { be_const_key_weak(sec_c, 17), be_const_var(10) }, - { be_const_key_weak(decode_payload, 5), be_const_closure(Matter_Frame_decode_payload_closure) }, - { be_const_key_weak(build_standalone_ack, 2), be_const_closure(Matter_Frame_build_standalone_ack_closure) }, - { be_const_key_weak(vendor_id, -1), be_const_var(26) }, - { be_const_key_weak(debug, -1), be_const_closure(Matter_Frame_debug_closure) }, - { be_const_key_weak(source_node_id, 11), be_const_var(14) }, - { be_const_key_weak(build_response, -1), be_const_closure(Matter_Frame_build_response_closure) }, - { be_const_key_weak(decode_header, -1), be_const_closure(Matter_Frame_decode_header_closure) }, + { be_const_key_weak(raw, 37), be_const_var(2) }, + { be_const_key_weak(sec_sesstype, 0), be_const_var(12) }, + { be_const_key_weak(build_response, 5), be_const_closure(Matter_Frame_build_response_closure) }, + { be_const_key_weak(sec_mx, -1), be_const_var(11) }, + { be_const_key_weak(dest_node_id_2, 32), be_const_var(15) }, + { be_const_key_weak(encode, -1), be_const_closure(Matter_Frame_encode_closure) }, { be_const_key_weak(decrypt, -1), be_const_closure(Matter_Frame_decrypt_closure) }, + { be_const_key_weak(sec_extensions, -1), be_const_var(28) }, + { be_const_key_weak(remote_ip, 7), be_const_var(30) }, + { be_const_key_weak(message_counter, 33), be_const_var(13) }, + { be_const_key_weak(ack_message_counter, -1), be_const_var(27) }, + { be_const_key_weak(x_flag_i, -1), be_const_var(22) }, + { be_const_key_weak(dest_node_id_8, -1), be_const_var(16) }, + { be_const_key_weak(x_flag_r, 2), be_const_var(20) }, + { be_const_key_weak(x_flag_v, -1), be_const_var(18) }, + { be_const_key_weak(opcode, -1), be_const_var(23) }, + { be_const_key_weak(sec_c, 25), be_const_var(10) }, + { be_const_key_weak(sec_p, -1), be_const_var(9) }, + { be_const_key_weak(protocol_id, 29), be_const_var(25) }, + { be_const_key_weak(sec_flags, -1), be_const_var(8) }, + { be_const_key_weak(message_handler, -1), be_const_var(0) }, + { be_const_key_weak(init, -1), be_const_closure(Matter_Frame_init_closure) }, + { be_const_key_weak(encrypt, 19), be_const_closure(Matter_Frame_encrypt_closure) }, + { be_const_key_weak(build_standalone_ack, 27), be_const_closure(Matter_Frame_build_standalone_ack_closure) }, + { be_const_key_weak(decode_payload, -1), be_const_closure(Matter_Frame_decode_payload_closure) }, + { be_const_key_weak(remote_port, 36), be_const_var(31) }, + { be_const_key_weak(flag_dsiz, -1), be_const_var(6) }, + { be_const_key_weak(vendor_id, 16), be_const_var(26) }, + { be_const_key_weak(payload_idx, -1), be_const_var(3) }, + { be_const_key_weak(debug, -1), be_const_closure(Matter_Frame_debug_closure) }, + { be_const_key_weak(x_flag_sx, 39), be_const_var(19) }, + { be_const_key_weak(decode_header, -1), be_const_closure(Matter_Frame_decode_header_closure) }, + { be_const_key_weak(flag_s, -1), be_const_var(5) }, + { be_const_key_weak(app_payload_idx, -1), be_const_var(29) }, + { be_const_key_weak(source_node_id, -1), be_const_var(14) }, + { be_const_key_weak(session, -1), be_const_var(1) }, + { be_const_key_weak(flags, -1), be_const_var(4) }, + { be_const_key_weak(local_session_id, 40), be_const_var(7) }, + { be_const_key_weak(exchange_id, -1), be_const_var(24) }, })), be_str_weak(Matter_Frame) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h index d5e22cd1b..453348f65 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_MessageHandler.h @@ -116,9 +116,9 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ }), be_str_weak(msg_received), &be_const_str_solidified, - ( &(const binstruction[289]) { /* code */ + ( &(const binstruction[291]) { /* code */ 0xA4120000, // 0000 IMPORT R4 K0 - 0xA8020108, // 0001 EXBLK 0 #010B + 0xA802010A, // 0001 EXBLK 0 #010D 0xB8160200, // 0002 GETNGBL R5 K1 0x8C140B02, // 0003 GETMET R5 R5 K2 0x8C1C0304, // 0004 GETMET R7 R1 K4 @@ -130,282 +130,284 @@ be_local_closure(Matter_MessageHandler_msg_received, /* name */ 0x8C140B06, // 000A GETMET R5 R5 K6 0x5C1C0000, // 000B MOVE R7 R0 0x5C200200, // 000C MOVE R8 R1 - 0x7C140600, // 000D CALL R5 3 - 0x8C180B07, // 000E GETMET R6 R5 K7 - 0x7C180200, // 000F CALL R6 1 - 0x5C1C0C00, // 0010 MOVE R7 R6 - 0x741E0002, // 0011 JMPT R7 #0015 - 0x501C0000, // 0012 LDBOOL R7 0 0 - 0xA8040001, // 0013 EXBLK 1 1 - 0x80040E00, // 0014 RET 1 R7 - 0x881C0B08, // 0015 GETMBR R7 R5 K8 - 0x1C1C0F09, // 0016 EQ R7 R7 K9 - 0x781E0057, // 0017 JMPF R7 #0070 - 0x881C0B0A, // 0018 GETMBR R7 R5 K10 - 0x1C1C0F09, // 0019 EQ R7 R7 K9 - 0x781E0054, // 001A JMPF R7 #0070 - 0x881C010B, // 001B GETMBR R7 R0 K11 - 0x881C0F0C, // 001C GETMBR R7 R7 K12 - 0x8C1C0F0D, // 001D GETMET R7 R7 K13 - 0x88240B0E, // 001E GETMBR R9 R5 K14 - 0x542A0059, // 001F LDINT R10 90 - 0x7C1C0600, // 0020 CALL R7 3 - 0xB8220200, // 0021 GETNGBL R8 K1 - 0x8C201102, // 0022 GETMET R8 R8 K2 - 0x60280008, // 0023 GETGBL R10 G8 - 0x882C0B0E, // 0024 GETMBR R11 R5 K14 - 0x7C280200, // 0025 CALL R10 1 - 0x002A1E0A, // 0026 ADD R10 K15 R10 - 0x00281510, // 0027 ADD R10 R10 K16 - 0x602C0008, // 0028 GETGBL R11 G8 - 0x88300F08, // 0029 GETMBR R12 R7 K8 - 0x7C2C0200, // 002A CALL R11 1 - 0x0028140B, // 002B ADD R10 R10 R11 - 0x582C0011, // 002C LDCONST R11 K17 - 0x7C200600, // 002D CALL R8 3 - 0x90162407, // 002E SETMBR R5 K18 R7 - 0x88200113, // 002F GETMBR R8 R0 K19 - 0x8C201114, // 0030 GETMET R8 R8 K20 - 0x88280B15, // 0031 GETMBR R10 R5 K21 - 0x502C0000, // 0032 LDBOOL R11 0 0 - 0x7C200600, // 0033 CALL R8 3 - 0x7422000D, // 0034 JMPT R8 #0043 - 0xB8220200, // 0035 GETNGBL R8 K1 - 0x8C201102, // 0036 GETMET R8 R8 K2 - 0x8C280916, // 0037 GETMET R10 R4 K22 - 0x58300017, // 0038 LDCONST R12 K23 - 0x88340B15, // 0039 GETMBR R13 R5 K21 - 0x88380113, // 003A GETMBR R14 R0 K19 - 0x8C381D18, // 003B GETMET R14 R14 K24 - 0x7C380200, // 003C CALL R14 1 - 0x7C280800, // 003D CALL R10 4 - 0x582C0011, // 003E LDCONST R11 K17 - 0x7C200600, // 003F CALL R8 3 - 0x50200000, // 0040 LDBOOL R8 0 0 - 0xA8040001, // 0041 EXBLK 1 1 - 0x80041000, // 0042 RET 1 R8 - 0x8C200B19, // 0043 GETMET R8 R5 K25 - 0x7C200200, // 0044 CALL R8 1 - 0x74220002, // 0045 JMPT R8 #0049 - 0x50200000, // 0046 LDBOOL R8 0 0 - 0xA8040001, // 0047 EXBLK 1 1 - 0x80041000, // 0048 RET 1 R8 - 0x8820010B, // 0049 GETMBR R8 R0 K11 - 0x8C20111A, // 004A GETMET R8 R8 K26 - 0x88280B1B, // 004B GETMBR R10 R5 K27 - 0x7C200400, // 004C CALL R8 2 - 0x88200B1C, // 004D GETMBR R8 R5 K28 - 0x5426000F, // 004E LDINT R9 16 - 0x20201009, // 004F NE R8 R8 R9 - 0x78220014, // 0050 JMPF R8 #0066 - 0xB8220A00, // 0051 GETNGBL R8 K5 - 0x8C20111D, // 0052 GETMET R8 R8 K29 - 0x88280B1C, // 0053 GETMBR R10 R5 K28 - 0x7C200400, // 0054 CALL R8 2 - 0x5C241000, // 0055 MOVE R9 R8 - 0x74260004, // 0056 JMPT R9 #005C - 0x8C240916, // 0057 GETMET R9 R4 K22 - 0x582C001E, // 0058 LDCONST R11 K30 - 0x88300B1C, // 0059 GETMBR R12 R5 K28 - 0x7C240600, // 005A CALL R9 3 - 0x5C201200, // 005B MOVE R8 R9 - 0xB8260200, // 005C GETNGBL R9 K1 - 0x8C241302, // 005D GETMET R9 R9 K2 - 0x8C2C0916, // 005E GETMET R11 R4 K22 - 0x5834001F, // 005F LDCONST R13 K31 - 0x5C381000, // 0060 MOVE R14 R8 - 0x5C3C0400, // 0061 MOVE R15 R2 - 0x5C400600, // 0062 MOVE R16 R3 - 0x7C2C0A00, // 0063 CALL R11 5 - 0x58300020, // 0064 LDCONST R12 K32 - 0x7C240600, // 0065 CALL R9 3 - 0x88200121, // 0066 GETMBR R8 R0 K33 - 0x8C201122, // 0067 GETMET R8 R8 K34 - 0x5C280A00, // 0068 MOVE R10 R5 - 0x5C2C0400, // 0069 MOVE R11 R2 - 0x5C300600, // 006A MOVE R12 R3 - 0x7C200800, // 006B CALL R8 4 - 0x50200200, // 006C LDBOOL R8 1 0 - 0xA8040001, // 006D EXBLK 1 1 - 0x80041000, // 006E RET 1 R8 - 0x70020095, // 006F JMP #0106 - 0xB81E0200, // 0070 GETNGBL R7 K1 - 0x8C1C0F02, // 0071 GETMET R7 R7 K2 - 0x8C240916, // 0072 GETMET R9 R4 K22 - 0x582C0023, // 0073 LDCONST R11 K35 - 0x88300B08, // 0074 GETMBR R12 R5 K8 - 0x88340B15, // 0075 GETMBR R13 R5 K21 - 0x7C240800, // 0076 CALL R9 4 - 0x58280011, // 0077 LDCONST R10 K17 - 0x7C1C0600, // 0078 CALL R7 3 - 0x881C010B, // 0079 GETMBR R7 R0 K11 - 0x881C0F0C, // 007A GETMBR R7 R7 K12 - 0x8C1C0F24, // 007B GETMET R7 R7 K36 - 0x88240B08, // 007C GETMBR R9 R5 K8 - 0x7C1C0400, // 007D CALL R7 2 - 0x4C200000, // 007E LDNIL R8 - 0x1C200E08, // 007F EQ R8 R7 R8 - 0x78220013, // 0080 JMPF R8 #0095 - 0xB8220200, // 0081 GETNGBL R8 K1 - 0x8C201102, // 0082 GETMET R8 R8 K2 - 0x60280008, // 0083 GETGBL R10 G8 - 0x882C0B08, // 0084 GETMBR R11 R5 K8 - 0x7C280200, // 0085 CALL R10 1 - 0x002A4A0A, // 0086 ADD R10 K37 R10 - 0x582C0011, // 0087 LDCONST R11 K17 - 0x7C200600, // 0088 CALL R8 3 - 0xB8220200, // 0089 GETNGBL R8 K1 - 0x8C201102, // 008A GETMET R8 R8 K2 - 0xB82A0A00, // 008B GETNGBL R10 K5 - 0x8C281527, // 008C GETMET R10 R10 K39 - 0x5C300A00, // 008D MOVE R12 R5 - 0x7C280400, // 008E CALL R10 2 - 0x002A4C0A, // 008F ADD R10 K38 R10 - 0x582C0011, // 0090 LDCONST R11 K17 - 0x7C200600, // 0091 CALL R8 3 - 0x50200000, // 0092 LDBOOL R8 0 0 - 0xA8040001, // 0093 EXBLK 1 1 - 0x80041000, // 0094 RET 1 R8 - 0x90162407, // 0095 SETMBR R5 K18 R7 - 0x88200F13, // 0096 GETMBR R8 R7 K19 - 0x8C201114, // 0097 GETMET R8 R8 K20 - 0x88280B15, // 0098 GETMBR R10 R5 K21 - 0x502C0200, // 0099 LDBOOL R11 1 0 - 0x7C200600, // 009A CALL R8 3 - 0x74220011, // 009B JMPT R8 #00AE - 0xB8220200, // 009C GETNGBL R8 K1 - 0x8C201102, // 009D GETMET R8 R8 K2 - 0x60280008, // 009E GETGBL R10 G8 - 0x882C0B15, // 009F GETMBR R11 R5 K21 - 0x7C280200, // 00A0 CALL R10 1 - 0x002A500A, // 00A1 ADD R10 K40 R10 - 0x00281529, // 00A2 ADD R10 R10 K41 - 0x602C0008, // 00A3 GETGBL R11 G8 - 0x88300F13, // 00A4 GETMBR R12 R7 K19 - 0x8C301918, // 00A5 GETMET R12 R12 K24 - 0x7C300200, // 00A6 CALL R12 1 - 0x7C2C0200, // 00A7 CALL R11 1 - 0x0028140B, // 00A8 ADD R10 R10 R11 - 0x582C0011, // 00A9 LDCONST R11 K17 - 0x7C200600, // 00AA CALL R8 3 - 0x50200000, // 00AB LDBOOL R8 0 0 - 0xA8040001, // 00AC EXBLK 1 1 - 0x80041000, // 00AD RET 1 R8 - 0x8C200B2A, // 00AE GETMET R8 R5 K42 - 0x7C200200, // 00AF CALL R8 1 - 0x5C241000, // 00B0 MOVE R9 R8 - 0x74260002, // 00B1 JMPT R9 #00B5 - 0x50240000, // 00B2 LDBOOL R9 0 0 - 0xA8040001, // 00B3 EXBLK 1 1 - 0x80041200, // 00B4 RET 1 R9 - 0x88240B2C, // 00B5 GETMBR R9 R5 K44 - 0x0424132D, // 00B6 SUB R9 R9 K45 - 0x40261209, // 00B7 CONNECT R9 K9 R9 - 0x88280B2B, // 00B8 GETMBR R10 R5 K43 - 0x94241409, // 00B9 GETIDX R9 R10 R9 - 0x90165609, // 00BA SETMBR R5 K43 R9 - 0x88240B2B, // 00BB GETMBR R9 R5 K43 - 0x40241208, // 00BC CONNECT R9 R9 R8 - 0xB8260200, // 00BD GETNGBL R9 K1 - 0x8C241302, // 00BE GETMET R9 R9 K2 - 0x8C2C0916, // 00BF GETMET R11 R4 K22 - 0x5834002E, // 00C0 LDCONST R13 K46 - 0x88380B2C, // 00C1 GETMBR R14 R5 K44 - 0x883C0B2B, // 00C2 GETMBR R15 R5 K43 - 0x8C3C1F04, // 00C3 GETMET R15 R15 K4 - 0x7C3C0200, // 00C4 CALL R15 1 - 0x7C2C0800, // 00C5 CALL R11 4 - 0x58300011, // 00C6 LDCONST R12 K17 - 0x7C240600, // 00C7 CALL R9 3 - 0x8C240B19, // 00C8 GETMET R9 R5 K25 - 0x7C240200, // 00C9 CALL R9 1 - 0xB8260200, // 00CA GETNGBL R9 K1 - 0x8C241302, // 00CB GETMET R9 R9 K2 - 0x602C0008, // 00CC GETGBL R11 G8 - 0x88300B30, // 00CD GETMBR R12 R5 K48 - 0x7C2C0200, // 00CE CALL R11 1 - 0x002E5E0B, // 00CF ADD R11 K47 R11 - 0x002C1731, // 00D0 ADD R11 R11 K49 - 0x60300008, // 00D1 GETGBL R12 G8 - 0x88340B1C, // 00D2 GETMBR R13 R5 K28 - 0x7C300200, // 00D3 CALL R12 1 - 0x002C160C, // 00D4 ADD R11 R11 R12 - 0x002C1732, // 00D5 ADD R11 R11 K50 - 0x60300008, // 00D6 GETGBL R12 G8 - 0x88340B33, // 00D7 GETMBR R13 R5 K51 - 0x7C300200, // 00D8 CALL R12 1 - 0x002C160C, // 00D9 ADD R11 R11 R12 - 0x58300011, // 00DA LDCONST R12 K17 - 0x7C240600, // 00DB CALL R9 3 - 0x8824010B, // 00DC GETMBR R9 R0 K11 - 0x8C24131A, // 00DD GETMET R9 R9 K26 - 0x882C0B1B, // 00DE GETMBR R11 R5 K27 - 0x7C240400, // 00DF CALL R9 2 - 0x88240B30, // 00E0 GETMBR R9 R5 K48 - 0x1C281309, // 00E1 EQ R10 R9 K9 - 0x782A000C, // 00E2 JMPF R10 #00F0 - 0xB82A0200, // 00E3 GETNGBL R10 K1 - 0x8C281502, // 00E4 GETMET R10 R10 K2 - 0xB8320A00, // 00E5 GETNGBL R12 K5 - 0x8C301927, // 00E6 GETMET R12 R12 K39 - 0x5C380A00, // 00E7 MOVE R14 R5 - 0x7C300400, // 00E8 CALL R12 2 - 0x0032680C, // 00E9 ADD R12 K52 R12 - 0x58340011, // 00EA LDCONST R13 K17 - 0x7C280600, // 00EB CALL R10 3 - 0x50280200, // 00EC LDBOOL R10 1 0 - 0xA8040001, // 00ED EXBLK 1 1 - 0x80041400, // 00EE RET 1 R10 - 0x70020015, // 00EF JMP #0106 - 0x1C28132D, // 00F0 EQ R10 R9 K45 - 0x782A0008, // 00F1 JMPF R10 #00FB - 0x88280135, // 00F2 GETMBR R10 R0 K53 - 0x8C281522, // 00F3 GETMET R10 R10 K34 - 0x5C300A00, // 00F4 MOVE R12 R5 - 0x5C340400, // 00F5 MOVE R13 R2 - 0x5C380600, // 00F6 MOVE R14 R3 - 0x7C280800, // 00F7 CALL R10 4 - 0xA8040001, // 00F8 EXBLK 1 1 - 0x80041400, // 00F9 RET 1 R10 - 0x7002000A, // 00FA JMP #0106 - 0xB82A0200, // 00FB GETNGBL R10 K1 - 0x8C281502, // 00FC GETMET R10 R10 K2 - 0x60300008, // 00FD GETGBL R12 G8 - 0x5C341200, // 00FE MOVE R13 R9 - 0x7C300200, // 00FF CALL R12 1 - 0x00326C0C, // 0100 ADD R12 K54 R12 - 0x58340011, // 0101 LDCONST R13 K17 - 0x7C280600, // 0102 CALL R10 3 - 0x50280000, // 0103 LDBOOL R10 0 0 - 0xA8040001, // 0104 EXBLK 1 1 - 0x80041400, // 0105 RET 1 R10 - 0x501C0200, // 0106 LDBOOL R7 1 0 - 0xA8040001, // 0107 EXBLK 1 1 - 0x80040E00, // 0108 RET 1 R7 + 0x5C240400, // 000D MOVE R9 R2 + 0x5C280600, // 000E MOVE R10 R3 + 0x7C140A00, // 000F CALL R5 5 + 0x8C180B07, // 0010 GETMET R6 R5 K7 + 0x7C180200, // 0011 CALL R6 1 + 0x5C1C0C00, // 0012 MOVE R7 R6 + 0x741E0002, // 0013 JMPT R7 #0017 + 0x501C0000, // 0014 LDBOOL R7 0 0 + 0xA8040001, // 0015 EXBLK 1 1 + 0x80040E00, // 0016 RET 1 R7 + 0x881C0B08, // 0017 GETMBR R7 R5 K8 + 0x1C1C0F09, // 0018 EQ R7 R7 K9 + 0x781E0057, // 0019 JMPF R7 #0072 + 0x881C0B0A, // 001A GETMBR R7 R5 K10 + 0x1C1C0F09, // 001B EQ R7 R7 K9 + 0x781E0054, // 001C JMPF R7 #0072 + 0x881C010B, // 001D GETMBR R7 R0 K11 + 0x881C0F0C, // 001E GETMBR R7 R7 K12 + 0x8C1C0F0D, // 001F GETMET R7 R7 K13 + 0x88240B0E, // 0020 GETMBR R9 R5 K14 + 0x542A0059, // 0021 LDINT R10 90 + 0x7C1C0600, // 0022 CALL R7 3 + 0xB8220200, // 0023 GETNGBL R8 K1 + 0x8C201102, // 0024 GETMET R8 R8 K2 + 0x60280008, // 0025 GETGBL R10 G8 + 0x882C0B0E, // 0026 GETMBR R11 R5 K14 + 0x7C280200, // 0027 CALL R10 1 + 0x002A1E0A, // 0028 ADD R10 K15 R10 + 0x00281510, // 0029 ADD R10 R10 K16 + 0x602C0008, // 002A GETGBL R11 G8 + 0x88300F08, // 002B GETMBR R12 R7 K8 + 0x7C2C0200, // 002C CALL R11 1 + 0x0028140B, // 002D ADD R10 R10 R11 + 0x582C0011, // 002E LDCONST R11 K17 + 0x7C200600, // 002F CALL R8 3 + 0x90162407, // 0030 SETMBR R5 K18 R7 + 0x88200113, // 0031 GETMBR R8 R0 K19 + 0x8C201114, // 0032 GETMET R8 R8 K20 + 0x88280B15, // 0033 GETMBR R10 R5 K21 + 0x502C0000, // 0034 LDBOOL R11 0 0 + 0x7C200600, // 0035 CALL R8 3 + 0x7422000D, // 0036 JMPT R8 #0045 + 0xB8220200, // 0037 GETNGBL R8 K1 + 0x8C201102, // 0038 GETMET R8 R8 K2 + 0x8C280916, // 0039 GETMET R10 R4 K22 + 0x58300017, // 003A LDCONST R12 K23 + 0x88340B15, // 003B GETMBR R13 R5 K21 + 0x88380113, // 003C GETMBR R14 R0 K19 + 0x8C381D18, // 003D GETMET R14 R14 K24 + 0x7C380200, // 003E CALL R14 1 + 0x7C280800, // 003F CALL R10 4 + 0x582C0011, // 0040 LDCONST R11 K17 + 0x7C200600, // 0041 CALL R8 3 + 0x50200000, // 0042 LDBOOL R8 0 0 + 0xA8040001, // 0043 EXBLK 1 1 + 0x80041000, // 0044 RET 1 R8 + 0x8C200B19, // 0045 GETMET R8 R5 K25 + 0x7C200200, // 0046 CALL R8 1 + 0x74220002, // 0047 JMPT R8 #004B + 0x50200000, // 0048 LDBOOL R8 0 0 + 0xA8040001, // 0049 EXBLK 1 1 + 0x80041000, // 004A RET 1 R8 + 0x8820010B, // 004B GETMBR R8 R0 K11 + 0x8C20111A, // 004C GETMET R8 R8 K26 + 0x88280B1B, // 004D GETMBR R10 R5 K27 + 0x7C200400, // 004E CALL R8 2 + 0x88200B1C, // 004F GETMBR R8 R5 K28 + 0x5426000F, // 0050 LDINT R9 16 + 0x20201009, // 0051 NE R8 R8 R9 + 0x78220014, // 0052 JMPF R8 #0068 + 0xB8220A00, // 0053 GETNGBL R8 K5 + 0x8C20111D, // 0054 GETMET R8 R8 K29 + 0x88280B1C, // 0055 GETMBR R10 R5 K28 + 0x7C200400, // 0056 CALL R8 2 + 0x5C241000, // 0057 MOVE R9 R8 + 0x74260004, // 0058 JMPT R9 #005E + 0x8C240916, // 0059 GETMET R9 R4 K22 + 0x582C001E, // 005A LDCONST R11 K30 + 0x88300B1C, // 005B GETMBR R12 R5 K28 + 0x7C240600, // 005C CALL R9 3 + 0x5C201200, // 005D MOVE R8 R9 + 0xB8260200, // 005E GETNGBL R9 K1 + 0x8C241302, // 005F GETMET R9 R9 K2 + 0x8C2C0916, // 0060 GETMET R11 R4 K22 + 0x5834001F, // 0061 LDCONST R13 K31 + 0x5C381000, // 0062 MOVE R14 R8 + 0x5C3C0400, // 0063 MOVE R15 R2 + 0x5C400600, // 0064 MOVE R16 R3 + 0x7C2C0A00, // 0065 CALL R11 5 + 0x58300020, // 0066 LDCONST R12 K32 + 0x7C240600, // 0067 CALL R9 3 + 0x88200121, // 0068 GETMBR R8 R0 K33 + 0x8C201122, // 0069 GETMET R8 R8 K34 + 0x5C280A00, // 006A MOVE R10 R5 + 0x5C2C0400, // 006B MOVE R11 R2 + 0x5C300600, // 006C MOVE R12 R3 + 0x7C200800, // 006D CALL R8 4 + 0x50200200, // 006E LDBOOL R8 1 0 + 0xA8040001, // 006F EXBLK 1 1 + 0x80041000, // 0070 RET 1 R8 + 0x70020095, // 0071 JMP #0108 + 0xB81E0200, // 0072 GETNGBL R7 K1 + 0x8C1C0F02, // 0073 GETMET R7 R7 K2 + 0x8C240916, // 0074 GETMET R9 R4 K22 + 0x582C0023, // 0075 LDCONST R11 K35 + 0x88300B08, // 0076 GETMBR R12 R5 K8 + 0x88340B15, // 0077 GETMBR R13 R5 K21 + 0x7C240800, // 0078 CALL R9 4 + 0x58280011, // 0079 LDCONST R10 K17 + 0x7C1C0600, // 007A CALL R7 3 + 0x881C010B, // 007B GETMBR R7 R0 K11 + 0x881C0F0C, // 007C GETMBR R7 R7 K12 + 0x8C1C0F24, // 007D GETMET R7 R7 K36 + 0x88240B08, // 007E GETMBR R9 R5 K8 + 0x7C1C0400, // 007F CALL R7 2 + 0x4C200000, // 0080 LDNIL R8 + 0x1C200E08, // 0081 EQ R8 R7 R8 + 0x78220013, // 0082 JMPF R8 #0097 + 0xB8220200, // 0083 GETNGBL R8 K1 + 0x8C201102, // 0084 GETMET R8 R8 K2 + 0x60280008, // 0085 GETGBL R10 G8 + 0x882C0B08, // 0086 GETMBR R11 R5 K8 + 0x7C280200, // 0087 CALL R10 1 + 0x002A4A0A, // 0088 ADD R10 K37 R10 + 0x582C0011, // 0089 LDCONST R11 K17 + 0x7C200600, // 008A CALL R8 3 + 0xB8220200, // 008B GETNGBL R8 K1 + 0x8C201102, // 008C GETMET R8 R8 K2 + 0xB82A0A00, // 008D GETNGBL R10 K5 + 0x8C281527, // 008E GETMET R10 R10 K39 + 0x5C300A00, // 008F MOVE R12 R5 + 0x7C280400, // 0090 CALL R10 2 + 0x002A4C0A, // 0091 ADD R10 K38 R10 + 0x582C0011, // 0092 LDCONST R11 K17 + 0x7C200600, // 0093 CALL R8 3 + 0x50200000, // 0094 LDBOOL R8 0 0 + 0xA8040001, // 0095 EXBLK 1 1 + 0x80041000, // 0096 RET 1 R8 + 0x90162407, // 0097 SETMBR R5 K18 R7 + 0x88200F13, // 0098 GETMBR R8 R7 K19 + 0x8C201114, // 0099 GETMET R8 R8 K20 + 0x88280B15, // 009A GETMBR R10 R5 K21 + 0x502C0200, // 009B LDBOOL R11 1 0 + 0x7C200600, // 009C CALL R8 3 + 0x74220011, // 009D JMPT R8 #00B0 + 0xB8220200, // 009E GETNGBL R8 K1 + 0x8C201102, // 009F GETMET R8 R8 K2 + 0x60280008, // 00A0 GETGBL R10 G8 + 0x882C0B15, // 00A1 GETMBR R11 R5 K21 + 0x7C280200, // 00A2 CALL R10 1 + 0x002A500A, // 00A3 ADD R10 K40 R10 + 0x00281529, // 00A4 ADD R10 R10 K41 + 0x602C0008, // 00A5 GETGBL R11 G8 + 0x88300F13, // 00A6 GETMBR R12 R7 K19 + 0x8C301918, // 00A7 GETMET R12 R12 K24 + 0x7C300200, // 00A8 CALL R12 1 + 0x7C2C0200, // 00A9 CALL R11 1 + 0x0028140B, // 00AA ADD R10 R10 R11 + 0x582C0011, // 00AB LDCONST R11 K17 + 0x7C200600, // 00AC CALL R8 3 + 0x50200000, // 00AD LDBOOL R8 0 0 + 0xA8040001, // 00AE EXBLK 1 1 + 0x80041000, // 00AF RET 1 R8 + 0x8C200B2A, // 00B0 GETMET R8 R5 K42 + 0x7C200200, // 00B1 CALL R8 1 + 0x5C241000, // 00B2 MOVE R9 R8 + 0x74260002, // 00B3 JMPT R9 #00B7 + 0x50240000, // 00B4 LDBOOL R9 0 0 + 0xA8040001, // 00B5 EXBLK 1 1 + 0x80041200, // 00B6 RET 1 R9 + 0x88240B2C, // 00B7 GETMBR R9 R5 K44 + 0x0424132D, // 00B8 SUB R9 R9 K45 + 0x40261209, // 00B9 CONNECT R9 K9 R9 + 0x88280B2B, // 00BA GETMBR R10 R5 K43 + 0x94241409, // 00BB GETIDX R9 R10 R9 + 0x90165609, // 00BC SETMBR R5 K43 R9 + 0x88240B2B, // 00BD GETMBR R9 R5 K43 + 0x40241208, // 00BE CONNECT R9 R9 R8 + 0xB8260200, // 00BF GETNGBL R9 K1 + 0x8C241302, // 00C0 GETMET R9 R9 K2 + 0x8C2C0916, // 00C1 GETMET R11 R4 K22 + 0x5834002E, // 00C2 LDCONST R13 K46 + 0x88380B2C, // 00C3 GETMBR R14 R5 K44 + 0x883C0B2B, // 00C4 GETMBR R15 R5 K43 + 0x8C3C1F04, // 00C5 GETMET R15 R15 K4 + 0x7C3C0200, // 00C6 CALL R15 1 + 0x7C2C0800, // 00C7 CALL R11 4 + 0x58300011, // 00C8 LDCONST R12 K17 + 0x7C240600, // 00C9 CALL R9 3 + 0x8C240B19, // 00CA GETMET R9 R5 K25 + 0x7C240200, // 00CB CALL R9 1 + 0xB8260200, // 00CC GETNGBL R9 K1 + 0x8C241302, // 00CD GETMET R9 R9 K2 + 0x602C0008, // 00CE GETGBL R11 G8 + 0x88300B30, // 00CF GETMBR R12 R5 K48 + 0x7C2C0200, // 00D0 CALL R11 1 + 0x002E5E0B, // 00D1 ADD R11 K47 R11 + 0x002C1731, // 00D2 ADD R11 R11 K49 + 0x60300008, // 00D3 GETGBL R12 G8 + 0x88340B1C, // 00D4 GETMBR R13 R5 K28 + 0x7C300200, // 00D5 CALL R12 1 + 0x002C160C, // 00D6 ADD R11 R11 R12 + 0x002C1732, // 00D7 ADD R11 R11 K50 + 0x60300008, // 00D8 GETGBL R12 G8 + 0x88340B33, // 00D9 GETMBR R13 R5 K51 + 0x7C300200, // 00DA CALL R12 1 + 0x002C160C, // 00DB ADD R11 R11 R12 + 0x58300011, // 00DC LDCONST R12 K17 + 0x7C240600, // 00DD CALL R9 3 + 0x8824010B, // 00DE GETMBR R9 R0 K11 + 0x8C24131A, // 00DF GETMET R9 R9 K26 + 0x882C0B1B, // 00E0 GETMBR R11 R5 K27 + 0x7C240400, // 00E1 CALL R9 2 + 0x88240B30, // 00E2 GETMBR R9 R5 K48 + 0x1C281309, // 00E3 EQ R10 R9 K9 + 0x782A000C, // 00E4 JMPF R10 #00F2 + 0xB82A0200, // 00E5 GETNGBL R10 K1 + 0x8C281502, // 00E6 GETMET R10 R10 K2 + 0xB8320A00, // 00E7 GETNGBL R12 K5 + 0x8C301927, // 00E8 GETMET R12 R12 K39 + 0x5C380A00, // 00E9 MOVE R14 R5 + 0x7C300400, // 00EA CALL R12 2 + 0x0032680C, // 00EB ADD R12 K52 R12 + 0x58340011, // 00EC LDCONST R13 K17 + 0x7C280600, // 00ED CALL R10 3 + 0x50280200, // 00EE LDBOOL R10 1 0 + 0xA8040001, // 00EF EXBLK 1 1 + 0x80041400, // 00F0 RET 1 R10 + 0x70020015, // 00F1 JMP #0108 + 0x1C28132D, // 00F2 EQ R10 R9 K45 + 0x782A0008, // 00F3 JMPF R10 #00FD + 0x88280135, // 00F4 GETMBR R10 R0 K53 + 0x8C281522, // 00F5 GETMET R10 R10 K34 + 0x5C300A00, // 00F6 MOVE R12 R5 + 0x5C340400, // 00F7 MOVE R13 R2 + 0x5C380600, // 00F8 MOVE R14 R3 + 0x7C280800, // 00F9 CALL R10 4 + 0xA8040001, // 00FA EXBLK 1 1 + 0x80041400, // 00FB RET 1 R10 + 0x7002000A, // 00FC JMP #0108 + 0xB82A0200, // 00FD GETNGBL R10 K1 + 0x8C281502, // 00FE GETMET R10 R10 K2 + 0x60300008, // 00FF GETGBL R12 G8 + 0x5C341200, // 0100 MOVE R13 R9 + 0x7C300200, // 0101 CALL R12 1 + 0x00326C0C, // 0102 ADD R12 K54 R12 + 0x58340011, // 0103 LDCONST R13 K17 + 0x7C280600, // 0104 CALL R10 3 + 0x50280000, // 0105 LDBOOL R10 0 0 + 0xA8040001, // 0106 EXBLK 1 1 + 0x80041400, // 0107 RET 1 R10 + 0x501C0200, // 0108 LDBOOL R7 1 0 0xA8040001, // 0109 EXBLK 1 1 - 0x70020014, // 010A JMP #0120 - 0xAC140002, // 010B CATCH R5 0 2 - 0x70020011, // 010C JMP #011F - 0xB81E0200, // 010D GETNGBL R7 K1 - 0x8C1C0F02, // 010E GETMET R7 R7 K2 - 0x60240008, // 010F GETGBL R9 G8 - 0x5C280A00, // 0110 MOVE R10 R5 - 0x7C240200, // 0111 CALL R9 1 - 0x00266E09, // 0112 ADD R9 K55 R9 - 0x00241338, // 0113 ADD R9 R9 K56 - 0x60280008, // 0114 GETGBL R10 G8 - 0x5C2C0C00, // 0115 MOVE R11 R6 - 0x7C280200, // 0116 CALL R10 1 - 0x0024120A, // 0117 ADD R9 R9 R10 - 0x7C1C0400, // 0118 CALL R7 2 - 0xA41E7200, // 0119 IMPORT R7 K57 - 0x8C200F3A, // 011A GETMET R8 R7 K58 - 0x7C200200, // 011B CALL R8 1 - 0x50200000, // 011C LDBOOL R8 0 0 - 0x80041000, // 011D RET 1 R8 - 0x70020000, // 011E JMP #0120 - 0xB0080000, // 011F RAISE 2 R0 R0 - 0x80000000, // 0120 RET 0 + 0x80040E00, // 010A RET 1 R7 + 0xA8040001, // 010B EXBLK 1 1 + 0x70020014, // 010C JMP #0122 + 0xAC140002, // 010D CATCH R5 0 2 + 0x70020011, // 010E JMP #0121 + 0xB81E0200, // 010F GETNGBL R7 K1 + 0x8C1C0F02, // 0110 GETMET R7 R7 K2 + 0x60240008, // 0111 GETGBL R9 G8 + 0x5C280A00, // 0112 MOVE R10 R5 + 0x7C240200, // 0113 CALL R9 1 + 0x00266E09, // 0114 ADD R9 K55 R9 + 0x00241338, // 0115 ADD R9 R9 K56 + 0x60280008, // 0116 GETGBL R10 G8 + 0x5C2C0C00, // 0117 MOVE R11 R6 + 0x7C280200, // 0118 CALL R10 1 + 0x0024120A, // 0119 ADD R9 R9 R10 + 0x7C1C0400, // 011A CALL R7 2 + 0xA41E7200, // 011B IMPORT R7 K57 + 0x8C200F3A, // 011C GETMET R8 R7 K58 + 0x7C200200, // 011D CALL R8 1 + 0x50200000, // 011E LDBOOL R8 0 0 + 0x80041000, // 011F RET 1 R8 + 0x70020000, // 0120 JMP #0122 + 0xB0080000, // 0121 RAISE 2 R0 R0 + 0x80000000, // 0122 RET 0 }) ) ); @@ -474,7 +476,7 @@ be_local_closure(Matter_MessageHandler_add_session, /* name */ ********************************************************************/ be_local_closure(Matter_MessageHandler_init, /* name */ be_nested_proto( - 5, /* nstack */ + 6, /* nstack */ 2, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -494,7 +496,7 @@ be_local_closure(Matter_MessageHandler_init, /* name */ }), be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ + ( &(const binstruction[17]) { /* code */ 0x90020001, // 0000 SETMBR R0 K0 R1 0xB80A0400, // 0001 GETNGBL R2 K2 0x8C080503, // 0002 GETMET R2 R2 K3 @@ -504,13 +506,14 @@ be_local_closure(Matter_MessageHandler_init, /* name */ 0xB80A0400, // 0006 GETNGBL R2 K2 0x8C080505, // 0007 GETMET R2 R2 K5 0x5C100000, // 0008 MOVE R4 R0 - 0x7C080400, // 0009 CALL R2 2 - 0x90020802, // 000A SETMBR R0 K4 R2 - 0xB80A0400, // 000B GETNGBL R2 K2 - 0x8C080507, // 000C GETMET R2 R2 K7 - 0x7C080200, // 000D CALL R2 1 - 0x90020C02, // 000E SETMBR R0 K6 R2 - 0x80000000, // 000F RET 0 + 0x5C140200, // 0009 MOVE R5 R1 + 0x7C080600, // 000A CALL R2 3 + 0x90020802, // 000B SETMBR R0 K4 R2 + 0xB80A0400, // 000C GETNGBL R2 K2 + 0x8C080507, // 000D GETMET R2 R2 K7 + 0x7C080200, // 000E CALL R2 1 + 0x90020C02, // 000F SETMBR R0 K6 R2 + 0x80000000, // 0010 RET 0 }) ) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h index 5ba1f7814..8091439a8 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin.h @@ -7,26 +7,180 @@ extern const bclass be_class_Matter_Plugin; /******************************************************************** -** Solidified function: get_endpoints +** Solidified function: read_event ********************************************************************/ -be_local_closure(Matter_Plugin_get_endpoints, /* name */ +be_local_closure(Matter_Plugin_read_event, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(read_event), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_Plugin_init, /* name */ + be_nested_proto( + 3, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(endpoints), + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(device), + /* K1 */ be_nested_str_weak(endpoints), + /* K2 */ be_nested_str_weak(EMPTY_LIST), + /* K3 */ be_nested_str_weak(clusters), }), - be_str_weak(get_endpoints), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[ 6]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x88080102, // 0001 GETMBR R2 R0 K2 + 0x90020202, // 0002 SETMBR R0 K1 R2 + 0x88080102, // 0003 GETMBR R2 R0 K2 + 0x90020602, // 0004 SETMBR R0 K3 R2 + 0x80000000, // 0005 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: has +********************************************************************/ +be_local_closure(Matter_Plugin_has, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(contains), + /* K2 */ be_nested_str_weak(endpoints), + /* K3 */ be_nested_str_weak(find), + }), + be_str_weak(has), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140200, // 0002 MOVE R5 R1 + 0x7C0C0400, // 0003 CALL R3 2 + 0x780E0006, // 0004 JMPF R3 #000C + 0x880C0102, // 0005 GETMBR R3 R0 K2 + 0x8C0C0703, // 0006 GETMET R3 R3 K3 + 0x5C140400, // 0007 MOVE R5 R2 + 0x7C0C0400, // 0008 CALL R3 2 + 0x4C100000, // 0009 LDNIL R4 + 0x200C0604, // 000A NE R3 R3 R4 + 0x740E0000, // 000B JMPT R3 #000D + 0x500C0001, // 000C LDBOOL R3 0 1 + 0x500C0200, // 000D LDBOOL R3 1 0 + 0x80040600, // 000E RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_attribute_list +********************************************************************/ +be_local_closure(Matter_Plugin_get_attribute_list, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(find), + /* K2 */ be_nested_str_weak(EMPTY_LIST), + }), + be_str_weak(get_attribute_list), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x8C0C0701, // 0001 GETMET R3 R3 K1 + 0x5C140400, // 0002 MOVE R5 R2 + 0x88180102, // 0003 GETMBR R6 R0 K2 + 0x7C0C0600, // 0004 CALL R3 3 + 0x80040600, // 0005 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_cluster_list +********************************************************************/ +be_local_closure(Matter_Plugin_get_cluster_list, /* name */ + be_nested_proto( + 8, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + /* K1 */ be_nested_str_weak(keys), + /* K2 */ be_nested_str_weak(push), + /* K3 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(get_cluster_list), + &be_const_str_solidified, + ( &(const binstruction[18]) { /* code */ + 0x60080012, // 0000 GETGBL R2 G18 + 0x7C080000, // 0001 CALL R2 0 + 0x600C0010, // 0002 GETGBL R3 G16 + 0x88100100, // 0003 GETMBR R4 R0 K0 + 0x8C100901, // 0004 GETMET R4 R4 K1 + 0x7C100200, // 0005 CALL R4 1 + 0x7C0C0200, // 0006 CALL R3 1 + 0xA8020005, // 0007 EXBLK 0 #000E + 0x5C100600, // 0008 MOVE R4 R3 + 0x7C100000, // 0009 CALL R4 0 + 0x8C140502, // 000A GETMET R5 R2 K2 + 0x5C1C0800, // 000B MOVE R7 R4 + 0x7C140400, // 000C CALL R5 2 + 0x7001FFF9, // 000D JMP #0008 + 0x580C0003, // 000E LDCONST R3 K3 + 0xAC0C0200, // 000F CATCH R3 1 0 + 0xB0080000, // 0010 RAISE 2 R0 R0 + 0x80040400, // 0011 RET 1 R2 }) ) ); @@ -58,44 +212,13 @@ be_local_closure(Matter_Plugin_invoke_request, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_Plugin_init, /* name */ - be_nested_proto( - 3, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(device), - /* K1 */ be_nested_str_weak(endpoints), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x60080012, // 0001 GETGBL R2 G18 - 0x7C080000, // 0002 CALL R2 0 - 0x90020202, // 0003 SETMBR R0 K1 R2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: read_attribute ********************************************************************/ be_local_closure(Matter_Plugin_read_attribute, /* name */ be_nested_proto( - 6, /* nstack */ - 5, /* argc */ + 4, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -106,58 +229,8 @@ be_local_closure(Matter_Plugin_read_attribute, /* name */ be_str_weak(read_attribute), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: read_event -********************************************************************/ -be_local_closure(Matter_Plugin_read_event, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(read_event), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: subscribe_attribute -********************************************************************/ -be_local_closure(Matter_Plugin_subscribe_attribute, /* name */ - be_nested_proto( - 6, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ - be_str_weak(subscribe_attribute), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x4C140000, // 0000 LDNIL R5 - 0x80040A00, // 0001 RET 1 R5 + 0x4C0C0000, // 0000 LDNIL R3 + 0x80040600, // 0001 RET 1 R3 }) ) ); @@ -189,6 +262,60 @@ be_local_closure(Matter_Plugin_subscribe_event, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: get_cluster_map +********************************************************************/ +be_local_closure(Matter_Plugin_get_cluster_map, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(clusters), + }), + be_str_weak(get_cluster_map), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_endpoints +********************************************************************/ +be_local_closure(Matter_Plugin_get_endpoints, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(endpoints), + }), + be_str_weak(get_endpoints), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: write_attribute ********************************************************************/ @@ -239,25 +366,63 @@ be_local_closure(Matter_Plugin_timed_request, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: subscribe_attribute +********************************************************************/ +be_local_closure(Matter_Plugin_subscribe_attribute, /* name */ + be_nested_proto( + 6, /* nstack */ + 5, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 0, /* has constants */ + NULL, /* no const */ + be_str_weak(subscribe_attribute), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x4C140000, // 0000 LDNIL R5 + 0x80040A00, // 0001 RET 1 R5 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin ********************************************************************/ be_local_class(Matter_Plugin, - 2, + 3, NULL, - be_nested_map(11, + be_nested_map(18, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(get_endpoints, -1), be_const_closure(Matter_Plugin_get_endpoints_closure) }, - { be_const_key_weak(endpoints, 7), be_const_var(1) }, - { be_const_key_weak(timed_request, 8), be_const_closure(Matter_Plugin_timed_request_closure) }, - { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_read_attribute_closure) }, { be_const_key_weak(read_event, -1), be_const_closure(Matter_Plugin_read_event_closure) }, + { be_const_key_weak(get_cluster_list, -1), be_const_closure(Matter_Plugin_get_cluster_list_closure) }, + { be_const_key_weak(endpoints, 1), be_const_var(1) }, + { be_const_key_weak(get_attribute_list, 9), be_const_closure(Matter_Plugin_get_attribute_list_closure) }, { be_const_key_weak(device, -1), be_const_var(0) }, - { be_const_key_weak(subscribe_attribute, -1), be_const_closure(Matter_Plugin_subscribe_attribute_closure) }, - { be_const_key_weak(write_attribute, -1), be_const_closure(Matter_Plugin_write_attribute_closure) }, + { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_invoke_request_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_read_attribute_closure) }, + { be_const_key_weak(has, 13), be_const_closure(Matter_Plugin_has_closure) }, { be_const_key_weak(subscribe_event, -1), be_const_closure(Matter_Plugin_subscribe_event_closure) }, - { be_const_key_weak(init, 2), be_const_closure(Matter_Plugin_init_closure) }, - { be_const_key_weak(invoke_request, 1), be_const_closure(Matter_Plugin_invoke_request_closure) }, + { be_const_key_weak(get_cluster_map, -1), be_const_closure(Matter_Plugin_get_cluster_map_closure) }, + { be_const_key_weak(clusters, -1), be_const_var(2) }, + { be_const_key_weak(EMPTY_MAP, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(0, + ( (struct bmapnode*) &(const bmapnode[]) { + })) ) } )) }, + { be_const_key_weak(get_endpoints, -1), be_const_closure(Matter_Plugin_get_endpoints_closure) }, + { be_const_key_weak(write_attribute, 2), be_const_closure(Matter_Plugin_write_attribute_closure) }, + { be_const_key_weak(timed_request, -1), be_const_closure(Matter_Plugin_timed_request_closure) }, + { be_const_key_weak(init, 4), be_const_closure(Matter_Plugin_init_closure) }, + { be_const_key_weak(subscribe_attribute, -1), be_const_closure(Matter_Plugin_subscribe_attribute_closure) }, + { be_const_key_weak(EMPTY_LIST, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, })), be_str_weak(Matter_Plugin) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Relay.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Relay.h index f03a26eb5..8a68d6822 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Relay.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_Relay.h @@ -11,19 +11,102 @@ extern const bclass be_class_Matter_Plugin_Relay; ********************************************************************/ be_local_closure(Matter_Plugin_Relay_read_attribute, /* name */ be_nested_proto( - 5, /* nstack */ - 5, /* argc */ + 15, /* nstack */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ - 0, /* has constants */ - NULL, /* no const */ + 1, /* has constants */ + ( &(const bvalue[17]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(Matter_TLV_array), + /* K7 */ be_nested_str_weak(add_struct), + /* K8 */ be_nested_str_weak(add_TLV), + /* K9 */ be_nested_str_weak(U2), + /* K10 */ be_nested_str_weak(TYPES), + /* K11 */ be_const_int(1), + /* K12 */ be_nested_str_weak(get_cluster_list), + /* K13 */ be_nested_str_weak(U4), + /* K14 */ be_nested_str_weak(stop_iteration), + /* K15 */ be_const_int(2), + /* K16 */ be_const_int(3), + }), be_str_weak(read_attribute), &be_const_str_solidified, - ( &(const binstruction[ 1]) { /* code */ - 0x80000000, // 0000 RET 0 + ( &(const binstruction[66]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x88100902, // 0002 GETMBR R4 R4 K2 + 0x88140503, // 0003 GETMBR R5 R2 K3 + 0x88180504, // 0004 GETMBR R6 R2 K4 + 0x541E001C, // 0005 LDINT R7 29 + 0x1C1C0A07, // 0006 EQ R7 R5 R7 + 0x781E0038, // 0007 JMPF R7 #0041 + 0x1C1C0D05, // 0008 EQ R7 R6 K5 + 0x781E0010, // 0009 JMPF R7 #001B + 0x8C1C0906, // 000A GETMET R7 R4 K6 + 0x7C1C0200, // 000B CALL R7 1 + 0x8C200F07, // 000C GETMET R8 R7 K7 + 0x7C200200, // 000D CALL R8 1 + 0x8C241108, // 000E GETMET R9 R8 K8 + 0x582C0005, // 000F LDCONST R11 K5 + 0x88300909, // 0010 GETMBR R12 R4 K9 + 0x8834010A, // 0011 GETMBR R13 R0 K10 + 0x94341B05, // 0012 GETIDX R13 R13 K5 + 0x7C240800, // 0013 CALL R9 4 + 0x8C241108, // 0014 GETMET R9 R8 K8 + 0x582C000B, // 0015 LDCONST R11 K11 + 0x88300909, // 0016 GETMBR R12 R4 K9 + 0x5834000B, // 0017 LDCONST R13 K11 + 0x7C240800, // 0018 CALL R9 4 + 0x80040E00, // 0019 RET 1 R7 + 0x70020025, // 001A JMP #0041 + 0x1C1C0D0B, // 001B EQ R7 R6 K11 + 0x781E0013, // 001C JMPF R7 #0031 + 0x8C1C0906, // 001D GETMET R7 R4 K6 + 0x7C1C0200, // 001E CALL R7 1 + 0x60200010, // 001F GETGBL R8 G16 + 0x8C24010C, // 0020 GETMET R9 R0 K12 + 0x7C240200, // 0021 CALL R9 1 + 0x7C200200, // 0022 CALL R8 1 + 0xA8020007, // 0023 EXBLK 0 #002C + 0x5C241000, // 0024 MOVE R9 R8 + 0x7C240000, // 0025 CALL R9 0 + 0x8C280F08, // 0026 GETMET R10 R7 K8 + 0x4C300000, // 0027 LDNIL R12 + 0x8834090D, // 0028 GETMBR R13 R4 K13 + 0x5C381200, // 0029 MOVE R14 R9 + 0x7C280800, // 002A CALL R10 4 + 0x7001FFF7, // 002B JMP #0024 + 0x5820000E, // 002C LDCONST R8 K14 + 0xAC200200, // 002D CATCH R8 1 0 + 0xB0080000, // 002E RAISE 2 R0 R0 + 0x80040E00, // 002F RET 1 R7 + 0x7002000F, // 0030 JMP #0041 + 0x1C1C0D0F, // 0031 EQ R7 R6 K15 + 0x781E0008, // 0032 JMPF R7 #003C + 0x8C1C0906, // 0033 GETMET R7 R4 K6 + 0x7C1C0200, // 0034 CALL R7 1 + 0x8C200F08, // 0035 GETMET R8 R7 K8 + 0x4C280000, // 0036 LDNIL R10 + 0x882C0909, // 0037 GETMBR R11 R4 K9 + 0x54320005, // 0038 LDINT R12 6 + 0x7C200800, // 0039 CALL R8 4 + 0x80040E00, // 003A RET 1 R7 + 0x70020004, // 003B JMP #0041 + 0x1C1C0D10, // 003C EQ R7 R6 K16 + 0x781E0002, // 003D JMPF R7 #0041 + 0x8C1C0906, // 003E GETMET R7 R4 K6 + 0x7C1C0200, // 003F CALL R7 1 + 0x80040E00, // 0040 RET 1 R7 + 0x80000000, // 0041 RET 0 }) ) ); @@ -43,10 +126,12 @@ be_local_closure(Matter_Plugin_Relay_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 5]) { /* constants */ /* K0 */ be_nested_str_weak(init), /* K1 */ be_nested_str_weak(endpoints), - /* K2 */ be_const_int(1), + /* K2 */ be_nested_str_weak(ENDPOINTS), + /* K3 */ be_nested_str_weak(clusters), + /* K4 */ be_nested_str_weak(CLUSTERS), }), be_str_weak(init), &be_const_str_solidified, @@ -57,10 +142,10 @@ be_local_closure(Matter_Plugin_Relay_init, /* name */ 0x8C080500, // 0003 GETMET R2 R2 K0 0x5C100200, // 0004 MOVE R4 R1 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x400C0502, // 0008 CONNECT R3 R2 K2 - 0x90020202, // 0009 SETMBR R0 K1 R2 + 0x88080102, // 0006 GETMBR R2 R0 K2 + 0x90020202, // 0007 SETMBR R0 K1 R2 + 0x88080104, // 0008 GETMBR R2 R0 K4 + 0x90020602, // 0009 SETMBR R0 K3 R2 0x80000000, // 000A RET 0 }) ) @@ -99,10 +184,53 @@ extern const bclass be_class_Matter_Plugin; be_local_class(Matter_Plugin_Relay, 0, &be_class_Matter_Plugin, - be_nested_map(3, + be_nested_map(6, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, 1), be_const_closure(Matter_Plugin_Relay_read_attribute_closure) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_Relay_read_attribute_closure) }, + { be_const_key_weak(ENDPOINTS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(1), + })) ) } )) }, + { be_const_key_weak(TYPES, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(256), + })) ) } )) }, { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_Relay_init_closure) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(6, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(6, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + })) ) } )) }, + { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(4, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + })) ) } )) }, + { be_const_key_int(8, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, + { be_const_key_int(3, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, + { be_const_key_int(4, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, + { be_const_key_int(5, 1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, + })) ) } )) }, { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_Relay_invoke_request_closure) }, })), be_str_weak(Matter_Plugin_Relay) diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_core.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_core.h index de1617ce8..10592a17a 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_core.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Plugin_core.h @@ -6,793 +6,6 @@ extern const bclass be_class_Matter_Plugin_core; -/******************************************************************** -** Solidified function: read_attribute -********************************************************************/ -be_local_closure(Matter_Plugin_core_read_attribute, /* name */ - be_nested_proto( - 24, /* nstack */ - 5, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[76]) { /* constants */ - /* K0 */ be_nested_str_weak(string), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(create_TLV), - /* K5 */ be_nested_str_weak(U8), - /* K6 */ be_nested_str_weak(session), - /* K7 */ be_nested_str_weak(breadcrumb), - /* K8 */ be_const_int(1), - /* K9 */ be_nested_str_weak(Matter_TLV_struct), - /* K10 */ be_nested_str_weak(add_TLV), - /* K11 */ be_nested_str_weak(U2), - /* K12 */ be_const_int(2), - /* K13 */ be_nested_str_weak(U1), - /* K14 */ be_const_int(3), - /* K15 */ be_nested_str_weak(BOOL), - /* K16 */ be_nested_str_weak(Matter_TLV_array), - /* K17 */ be_nested_str_weak(tasmota), - /* K18 */ be_nested_str_weak(eth), - /* K19 */ be_nested_str_weak(up), - /* K20 */ be_nested_str_weak(add_struct), - /* K21 */ be_nested_str_weak(UTF1), - /* K22 */ be_nested_str_weak(ethernet), - /* K23 */ be_nested_str_weak(NULL), - /* K24 */ be_nested_str_weak(fromhex), - /* K25 */ be_nested_str_weak(replace), - /* K26 */ be_nested_str_weak(find), - /* K27 */ be_nested_str_weak(mac), - /* K28 */ be_nested_str_weak(), - /* K29 */ be_nested_str_weak(_X3A), - /* K30 */ be_nested_str_weak(B1), - /* K31 */ be_nested_str_weak(add_array), - /* K32 */ be_nested_str_weak(get_ip_bytes), - /* K33 */ be_nested_str_weak(ip), - /* K34 */ be_nested_str_weak(ip6local), - /* K35 */ be_nested_str_weak(ip6), - /* K36 */ be_nested_str_weak(wifi), - /* K37 */ be_nested_str_weak(cmd), - /* K38 */ be_nested_str_weak(Status_X201), - /* K39 */ be_nested_str_weak(StatusPRM), - /* K40 */ be_nested_str_weak(BootCount), - /* K41 */ be_nested_str_weak(U4), - /* K42 */ be_nested_str_weak(Status_X2011), - /* K43 */ be_nested_str_weak(StatusSTS), - /* K44 */ be_nested_str_weak(UptimeSec), - /* K45 */ be_nested_str_weak(int64), - /* K46 */ be_nested_str_weak(rtc), - /* K47 */ be_nested_str_weak(utc), - /* K48 */ be_const_int(1000000), - /* K49 */ be_nested_str_weak(local), - /* K50 */ be_nested_str_weak(device), - /* K51 */ be_nested_str_weak(sessions), - /* K52 */ be_nested_str_weak(sessions_active), - /* K53 */ be_nested_str_weak(B2), - /* K54 */ be_nested_str_weak(noc), - /* K55 */ be_nested_str_weak(icac), - /* K56 */ be_nested_str_weak(stop_iteration), - /* K57 */ be_nested_str_weak(parse), - /* K58 */ be_nested_str_weak(get_ca), - /* K59 */ be_nested_str_weak(findsubval), - /* K60 */ be_nested_str_weak(admin_vendor), - /* K61 */ be_nested_str_weak(fabric), - /* K62 */ be_nested_str_weak(deviceid), - /* K63 */ be_nested_str_weak(fabric_label), - /* K64 */ be_nested_str_weak(Tasmota), - /* K65 */ be_nested_str_weak(vendorid), - /* K66 */ be_nested_str_weak(DeviceName), - /* K67 */ be_nested_str_weak(FriendlyName), - /* K68 */ be_nested_str_weak(FriendlyName1), - /* K69 */ be_nested_str_weak(XX), - /* K70 */ be_nested_str_weak(Status_X202), - /* K71 */ be_nested_str_weak(StatusFWR), - /* K72 */ be_nested_str_weak(Hardware), - /* K73 */ be_nested_str_weak(Version), - /* K74 */ be_nested_str_weak(locale), - /* K75 */ be_nested_str_weak(Matter_TLV_list), - }), - be_str_weak(read_attribute), - &be_const_str_solidified, - ( &(const binstruction[649]) { /* code */ - 0xA4160000, // 0000 IMPORT R5 K0 - 0xB81A0200, // 0001 GETNGBL R6 K1 - 0x88180D02, // 0002 GETMBR R6 R6 K2 - 0x541E002F, // 0003 LDINT R7 48 - 0x1C1C0607, // 0004 EQ R7 R3 R7 - 0x781E0031, // 0005 JMPF R7 #0038 - 0x1C1C0903, // 0006 EQ R7 R4 K3 - 0x781E0006, // 0007 JMPF R7 #000F - 0x8C1C0D04, // 0008 GETMET R7 R6 K4 - 0x88240D05, // 0009 GETMBR R9 R6 K5 - 0x88280306, // 000A GETMBR R10 R1 K6 - 0x88281507, // 000B GETMBR R10 R10 K7 - 0x7C1C0600, // 000C CALL R7 3 - 0x80040E00, // 000D RET 1 R7 - 0x70020027, // 000E JMP #0037 - 0x1C1C0908, // 000F EQ R7 R4 K8 - 0x781E000D, // 0010 JMPF R7 #001F - 0x8C1C0D09, // 0011 GETMET R7 R6 K9 - 0x7C1C0200, // 0012 CALL R7 1 - 0x8C200F0A, // 0013 GETMET R8 R7 K10 - 0x58280003, // 0014 LDCONST R10 K3 - 0x882C0D0B, // 0015 GETMBR R11 R6 K11 - 0x5432003B, // 0016 LDINT R12 60 - 0x7C200800, // 0017 CALL R8 4 - 0x8C200F0A, // 0018 GETMET R8 R7 K10 - 0x58280008, // 0019 LDCONST R10 K8 - 0x882C0D0B, // 001A GETMBR R11 R6 K11 - 0x54320383, // 001B LDINT R12 900 - 0x7C200800, // 001C CALL R8 4 - 0x80040E00, // 001D RET 1 R7 - 0x70020017, // 001E JMP #0037 - 0x1C1C090C, // 001F EQ R7 R4 K12 - 0x781E0005, // 0020 JMPF R7 #0027 - 0x8C1C0D04, // 0021 GETMET R7 R6 K4 - 0x88240D0D, // 0022 GETMBR R9 R6 K13 - 0x5828000C, // 0023 LDCONST R10 K12 - 0x7C1C0600, // 0024 CALL R7 3 - 0x80040E00, // 0025 RET 1 R7 - 0x7002000F, // 0026 JMP #0037 - 0x1C1C090E, // 0027 EQ R7 R4 K14 - 0x781E0005, // 0028 JMPF R7 #002F - 0x8C1C0D04, // 0029 GETMET R7 R6 K4 - 0x88240D0D, // 002A GETMBR R9 R6 K13 - 0x5828000C, // 002B LDCONST R10 K12 - 0x7C1C0600, // 002C CALL R7 3 - 0x80040E00, // 002D RET 1 R7 - 0x70020007, // 002E JMP #0037 - 0x541E0003, // 002F LDINT R7 4 - 0x1C1C0807, // 0030 EQ R7 R4 R7 - 0x781E0004, // 0031 JMPF R7 #0037 - 0x8C1C0D04, // 0032 GETMET R7 R6 K4 - 0x88240D0F, // 0033 GETMBR R9 R6 K15 - 0x50280000, // 0034 LDBOOL R10 0 0 - 0x7C1C0600, // 0035 CALL R7 3 - 0x80040E00, // 0036 RET 1 R7 - 0x7002024F, // 0037 JMP #0288 - 0x541E0031, // 0038 LDINT R7 50 - 0x1C1C0607, // 0039 EQ R7 R3 R7 - 0x781E0000, // 003A JMPF R7 #003C - 0x7002024B, // 003B JMP #0288 - 0x541E0032, // 003C LDINT R7 51 - 0x1C1C0607, // 003D EQ R7 R3 R7 - 0x781E00DA, // 003E JMPF R7 #011A - 0x1C1C0903, // 003F EQ R7 R4 K3 - 0x781E00B5, // 0040 JMPF R7 #00F7 - 0x8C1C0D10, // 0041 GETMET R7 R6 K16 - 0x7C1C0200, // 0042 CALL R7 1 - 0xB8222200, // 0043 GETNGBL R8 K17 - 0x8C201112, // 0044 GETMET R8 R8 K18 - 0x7C200200, // 0045 CALL R8 1 - 0x94241113, // 0046 GETIDX R9 R8 K19 - 0x78260053, // 0047 JMPF R9 #009C - 0x8C240F14, // 0048 GETMET R9 R7 K20 - 0x4C2C0000, // 0049 LDNIL R11 - 0x7C240400, // 004A CALL R9 2 - 0x8C28130A, // 004B GETMET R10 R9 K10 - 0x58300003, // 004C LDCONST R12 K3 - 0x88340D15, // 004D GETMBR R13 R6 K21 - 0x58380016, // 004E LDCONST R14 K22 - 0x7C280800, // 004F CALL R10 4 - 0x8C28130A, // 0050 GETMET R10 R9 K10 - 0x58300008, // 0051 LDCONST R12 K8 - 0x88340D0F, // 0052 GETMBR R13 R6 K15 - 0x58380008, // 0053 LDCONST R14 K8 - 0x7C280800, // 0054 CALL R10 4 - 0x8C28130A, // 0055 GETMET R10 R9 K10 - 0x5830000C, // 0056 LDCONST R12 K12 - 0x88340D0F, // 0057 GETMBR R13 R6 K15 - 0x58380008, // 0058 LDCONST R14 K8 - 0x7C280800, // 0059 CALL R10 4 - 0x8C28130A, // 005A GETMET R10 R9 K10 - 0x5830000E, // 005B LDCONST R12 K14 - 0x88340D17, // 005C GETMBR R13 R6 K23 - 0x4C380000, // 005D LDNIL R14 - 0x7C280800, // 005E CALL R10 4 - 0x60280015, // 005F GETGBL R10 G21 - 0x7C280000, // 0060 CALL R10 0 - 0x8C281518, // 0061 GETMET R10 R10 K24 - 0x8C300B19, // 0062 GETMET R12 R5 K25 - 0x8C38111A, // 0063 GETMET R14 R8 K26 - 0x5840001B, // 0064 LDCONST R16 K27 - 0x5844001C, // 0065 LDCONST R17 K28 - 0x7C380600, // 0066 CALL R14 3 - 0x583C001D, // 0067 LDCONST R15 K29 - 0x5840001C, // 0068 LDCONST R16 K28 - 0x7C300800, // 0069 CALL R12 4 - 0x7C280400, // 006A CALL R10 2 - 0x8C2C130A, // 006B GETMET R11 R9 K10 - 0x54360003, // 006C LDINT R13 4 - 0x88380D1E, // 006D GETMBR R14 R6 K30 - 0x5C3C1400, // 006E MOVE R15 R10 - 0x7C2C0800, // 006F CALL R11 4 - 0x8C2C131F, // 0070 GETMET R11 R9 K31 - 0x54360004, // 0071 LDINT R13 5 - 0x7C2C0400, // 0072 CALL R11 2 - 0x8C30170A, // 0073 GETMET R12 R11 K10 - 0x4C380000, // 0074 LDNIL R14 - 0x883C0D1E, // 0075 GETMBR R15 R6 K30 - 0xB8420200, // 0076 GETNGBL R16 K1 - 0x8C402120, // 0077 GETMET R16 R16 K32 - 0x8C48111A, // 0078 GETMET R18 R8 K26 - 0x58500021, // 0079 LDCONST R20 K33 - 0x5854001C, // 007A LDCONST R21 K28 - 0x7C480600, // 007B CALL R18 3 - 0x7C400400, // 007C CALL R16 2 - 0x7C300800, // 007D CALL R12 4 - 0x8C30131F, // 007E GETMET R12 R9 K31 - 0x543A0005, // 007F LDINT R14 6 - 0x7C300400, // 0080 CALL R12 2 - 0x8C34190A, // 0081 GETMET R13 R12 K10 - 0x4C3C0000, // 0082 LDNIL R15 - 0x88400D1E, // 0083 GETMBR R16 R6 K30 - 0xB8460200, // 0084 GETNGBL R17 K1 - 0x8C442320, // 0085 GETMET R17 R17 K32 - 0x8C4C111A, // 0086 GETMET R19 R8 K26 - 0x58540022, // 0087 LDCONST R21 K34 - 0x5858001C, // 0088 LDCONST R22 K28 - 0x7C4C0600, // 0089 CALL R19 3 - 0x7C440400, // 008A CALL R17 2 - 0x7C340800, // 008B CALL R13 4 - 0x8C34190A, // 008C GETMET R13 R12 K10 - 0x4C3C0000, // 008D LDNIL R15 - 0x88400D1E, // 008E GETMBR R16 R6 K30 - 0xB8460200, // 008F GETNGBL R17 K1 - 0x8C442320, // 0090 GETMET R17 R17 K32 - 0x8C4C111A, // 0091 GETMET R19 R8 K26 - 0x58540023, // 0092 LDCONST R21 K35 - 0x5858001C, // 0093 LDCONST R22 K28 - 0x7C4C0600, // 0094 CALL R19 3 - 0x7C440400, // 0095 CALL R17 2 - 0x7C340800, // 0096 CALL R13 4 - 0x8C34130A, // 0097 GETMET R13 R9 K10 - 0x543E0006, // 0098 LDINT R15 7 - 0x88400D0D, // 0099 GETMBR R16 R6 K13 - 0x5844000C, // 009A LDCONST R17 K12 - 0x7C340800, // 009B CALL R13 4 - 0xB8262200, // 009C GETNGBL R9 K17 - 0x8C241324, // 009D GETMET R9 R9 K36 - 0x7C240200, // 009E CALL R9 1 - 0x94281313, // 009F GETIDX R10 R9 K19 - 0x782A0053, // 00A0 JMPF R10 #00F5 - 0x8C280F14, // 00A1 GETMET R10 R7 K20 - 0x4C300000, // 00A2 LDNIL R12 - 0x7C280400, // 00A3 CALL R10 2 - 0x8C2C150A, // 00A4 GETMET R11 R10 K10 - 0x58340003, // 00A5 LDCONST R13 K3 - 0x88380D15, // 00A6 GETMBR R14 R6 K21 - 0x583C0024, // 00A7 LDCONST R15 K36 - 0x7C2C0800, // 00A8 CALL R11 4 - 0x8C2C150A, // 00A9 GETMET R11 R10 K10 - 0x58340008, // 00AA LDCONST R13 K8 - 0x88380D0F, // 00AB GETMBR R14 R6 K15 - 0x583C0008, // 00AC LDCONST R15 K8 - 0x7C2C0800, // 00AD CALL R11 4 - 0x8C2C150A, // 00AE GETMET R11 R10 K10 - 0x5834000C, // 00AF LDCONST R13 K12 - 0x88380D0F, // 00B0 GETMBR R14 R6 K15 - 0x583C0008, // 00B1 LDCONST R15 K8 - 0x7C2C0800, // 00B2 CALL R11 4 - 0x8C2C150A, // 00B3 GETMET R11 R10 K10 - 0x5834000E, // 00B4 LDCONST R13 K14 - 0x88380D17, // 00B5 GETMBR R14 R6 K23 - 0x4C3C0000, // 00B6 LDNIL R15 - 0x7C2C0800, // 00B7 CALL R11 4 - 0x602C0015, // 00B8 GETGBL R11 G21 - 0x7C2C0000, // 00B9 CALL R11 0 - 0x8C2C1718, // 00BA GETMET R11 R11 K24 - 0x8C340B19, // 00BB GETMET R13 R5 K25 - 0x8C3C131A, // 00BC GETMET R15 R9 K26 - 0x5844001B, // 00BD LDCONST R17 K27 - 0x5848001C, // 00BE LDCONST R18 K28 - 0x7C3C0600, // 00BF CALL R15 3 - 0x5840001D, // 00C0 LDCONST R16 K29 - 0x5844001C, // 00C1 LDCONST R17 K28 - 0x7C340800, // 00C2 CALL R13 4 - 0x7C2C0400, // 00C3 CALL R11 2 - 0x8C30150A, // 00C4 GETMET R12 R10 K10 - 0x543A0003, // 00C5 LDINT R14 4 - 0x883C0D1E, // 00C6 GETMBR R15 R6 K30 - 0x5C401600, // 00C7 MOVE R16 R11 - 0x7C300800, // 00C8 CALL R12 4 - 0x8C30151F, // 00C9 GETMET R12 R10 K31 - 0x543A0004, // 00CA LDINT R14 5 - 0x7C300400, // 00CB CALL R12 2 - 0x8C34190A, // 00CC GETMET R13 R12 K10 - 0x4C3C0000, // 00CD LDNIL R15 - 0x88400D1E, // 00CE GETMBR R16 R6 K30 - 0xB8460200, // 00CF GETNGBL R17 K1 - 0x8C442320, // 00D0 GETMET R17 R17 K32 - 0x8C4C131A, // 00D1 GETMET R19 R9 K26 - 0x58540021, // 00D2 LDCONST R21 K33 - 0x5858001C, // 00D3 LDCONST R22 K28 - 0x7C4C0600, // 00D4 CALL R19 3 - 0x7C440400, // 00D5 CALL R17 2 - 0x7C340800, // 00D6 CALL R13 4 - 0x8C34151F, // 00D7 GETMET R13 R10 K31 - 0x543E0005, // 00D8 LDINT R15 6 - 0x7C340400, // 00D9 CALL R13 2 - 0x8C381B0A, // 00DA GETMET R14 R13 K10 - 0x4C400000, // 00DB LDNIL R16 - 0x88440D1E, // 00DC GETMBR R17 R6 K30 - 0xB84A0200, // 00DD GETNGBL R18 K1 - 0x8C482520, // 00DE GETMET R18 R18 K32 - 0x8C50131A, // 00DF GETMET R20 R9 K26 - 0x58580022, // 00E0 LDCONST R22 K34 - 0x585C001C, // 00E1 LDCONST R23 K28 - 0x7C500600, // 00E2 CALL R20 3 - 0x7C480400, // 00E3 CALL R18 2 - 0x7C380800, // 00E4 CALL R14 4 - 0x8C381B0A, // 00E5 GETMET R14 R13 K10 - 0x4C400000, // 00E6 LDNIL R16 - 0x88440D1E, // 00E7 GETMBR R17 R6 K30 - 0xB84A0200, // 00E8 GETNGBL R18 K1 - 0x8C482520, // 00E9 GETMET R18 R18 K32 - 0x8C50131A, // 00EA GETMET R20 R9 K26 - 0x58580023, // 00EB LDCONST R22 K35 - 0x585C001C, // 00EC LDCONST R23 K28 - 0x7C500600, // 00ED CALL R20 3 - 0x7C480400, // 00EE CALL R18 2 - 0x7C380800, // 00EF CALL R14 4 - 0x8C38150A, // 00F0 GETMET R14 R10 K10 - 0x54420006, // 00F1 LDINT R16 7 - 0x88440D0D, // 00F2 GETMBR R17 R6 K13 - 0x58480008, // 00F3 LDCONST R18 K8 - 0x7C380800, // 00F4 CALL R14 4 - 0x80040E00, // 00F5 RET 1 R7 - 0x70020021, // 00F6 JMP #0119 - 0x1C1C0908, // 00F7 EQ R7 R4 K8 - 0x781E000A, // 00F8 JMPF R7 #0104 - 0x8C1C0D04, // 00F9 GETMET R7 R6 K4 - 0x88240D0B, // 00FA GETMBR R9 R6 K11 - 0xB82A2200, // 00FB GETNGBL R10 K17 - 0x8C281525, // 00FC GETMET R10 R10 K37 - 0x58300026, // 00FD LDCONST R12 K38 - 0x7C280400, // 00FE CALL R10 2 - 0x94281527, // 00FF GETIDX R10 R10 K39 - 0x94281528, // 0100 GETIDX R10 R10 K40 - 0x7C1C0600, // 0101 CALL R7 3 - 0x80040E00, // 0102 RET 1 R7 - 0x70020014, // 0103 JMP #0119 - 0x1C1C090C, // 0104 EQ R7 R4 K12 - 0x781E000A, // 0105 JMPF R7 #0111 - 0x8C1C0D04, // 0106 GETMET R7 R6 K4 - 0x88240D29, // 0107 GETMBR R9 R6 K41 - 0xB82A2200, // 0108 GETNGBL R10 K17 - 0x8C281525, // 0109 GETMET R10 R10 K37 - 0x5830002A, // 010A LDCONST R12 K42 - 0x7C280400, // 010B CALL R10 2 - 0x9428152B, // 010C GETIDX R10 R10 K43 - 0x9428152C, // 010D GETIDX R10 R10 K44 - 0x7C1C0600, // 010E CALL R7 3 - 0x80040E00, // 010F RET 1 R7 - 0x70020007, // 0110 JMP #0119 - 0x541E0007, // 0111 LDINT R7 8 - 0x1C1C0807, // 0112 EQ R7 R4 R7 - 0x781E0004, // 0113 JMPF R7 #0119 - 0x8C1C0D04, // 0114 GETMET R7 R6 K4 - 0x88240D0F, // 0115 GETMBR R9 R6 K15 - 0x50280000, // 0116 LDBOOL R10 0 0 - 0x7C1C0600, // 0117 CALL R7 3 - 0x80040E00, // 0118 RET 1 R7 - 0x7002016D, // 0119 JMP #0288 - 0x541E0033, // 011A LDINT R7 52 - 0x1C1C0607, // 011B EQ R7 R3 R7 - 0x781E0000, // 011C JMPF R7 #011E - 0x70020169, // 011D JMP #0288 - 0x541E0037, // 011E LDINT R7 56 - 0x1C1C0607, // 011F EQ R7 R3 R7 - 0x781E002C, // 0120 JMPF R7 #014E - 0x1C1C0903, // 0121 EQ R7 R4 K3 - 0x781E000F, // 0122 JMPF R7 #0133 - 0xB81E5A00, // 0123 GETNGBL R7 K45 - 0xB8222200, // 0124 GETNGBL R8 K17 - 0x8C20112E, // 0125 GETMET R8 R8 K46 - 0x7C200200, // 0126 CALL R8 1 - 0x9420112F, // 0127 GETIDX R8 R8 K47 - 0x7C1C0200, // 0128 CALL R7 1 - 0xB8225A00, // 0129 GETNGBL R8 K45 - 0x58240030, // 012A LDCONST R9 K48 - 0x7C200200, // 012B CALL R8 1 - 0x081C0E08, // 012C MUL R7 R7 R8 - 0x8C200D04, // 012D GETMET R8 R6 K4 - 0x88280D05, // 012E GETMBR R10 R6 K5 - 0x5C2C0E00, // 012F MOVE R11 R7 - 0x7C200600, // 0130 CALL R8 3 - 0x80041000, // 0131 RET 1 R8 - 0x70020019, // 0132 JMP #014D - 0x1C1C0908, // 0133 EQ R7 R4 K8 - 0x781E0005, // 0134 JMPF R7 #013B - 0x8C1C0D04, // 0135 GETMET R7 R6 K4 - 0x88240D0D, // 0136 GETMBR R9 R6 K13 - 0x5828000E, // 0137 LDCONST R10 K14 - 0x7C1C0600, // 0138 CALL R7 3 - 0x80040E00, // 0139 RET 1 R7 - 0x70020011, // 013A JMP #014D - 0x541E0006, // 013B LDINT R7 7 - 0x1C1C0807, // 013C EQ R7 R4 R7 - 0x781E000E, // 013D JMPF R7 #014D - 0xB81E5A00, // 013E GETNGBL R7 K45 - 0xB8222200, // 013F GETNGBL R8 K17 - 0x8C20112E, // 0140 GETMET R8 R8 K46 - 0x7C200200, // 0141 CALL R8 1 - 0x94201131, // 0142 GETIDX R8 R8 K49 - 0x7C1C0200, // 0143 CALL R7 1 - 0xB8225A00, // 0144 GETNGBL R8 K45 - 0x58240030, // 0145 LDCONST R9 K48 - 0x7C200200, // 0146 CALL R8 1 - 0x081C0E08, // 0147 MUL R7 R7 R8 - 0x8C200D04, // 0148 GETMET R8 R6 K4 - 0x88280D05, // 0149 GETMBR R10 R6 K5 - 0x5C2C0E00, // 014A MOVE R11 R7 - 0x7C200600, // 014B CALL R8 3 - 0x80041000, // 014C RET 1 R8 - 0x70020139, // 014D JMP #0288 - 0x541E003D, // 014E LDINT R7 62 - 0x1C1C0607, // 014F EQ R7 R3 R7 - 0x781E006C, // 0150 JMPF R7 #01BE - 0x1C1C0903, // 0151 EQ R7 R4 K3 - 0x781E001D, // 0152 JMPF R7 #0171 - 0x8C1C0D10, // 0153 GETMET R7 R6 K16 - 0x7C1C0200, // 0154 CALL R7 1 - 0x60200010, // 0155 GETGBL R8 G16 - 0x88240132, // 0156 GETMBR R9 R0 K50 - 0x88241333, // 0157 GETMBR R9 R9 K51 - 0x8C241334, // 0158 GETMET R9 R9 K52 - 0x7C240200, // 0159 CALL R9 1 - 0x7C200200, // 015A CALL R8 1 - 0xA802000F, // 015B EXBLK 0 #016C - 0x5C241000, // 015C MOVE R9 R8 - 0x7C240000, // 015D CALL R9 0 - 0x8C280F14, // 015E GETMET R10 R7 K20 - 0x4C300000, // 015F LDNIL R12 - 0x7C280400, // 0160 CALL R10 2 - 0x8C2C150A, // 0161 GETMET R11 R10 K10 - 0x58340008, // 0162 LDCONST R13 K8 - 0x88380D35, // 0163 GETMBR R14 R6 K53 - 0x883C1336, // 0164 GETMBR R15 R9 K54 - 0x7C2C0800, // 0165 CALL R11 4 - 0x8C2C150A, // 0166 GETMET R11 R10 K10 - 0x5834000C, // 0167 LDCONST R13 K12 - 0x88380D35, // 0168 GETMBR R14 R6 K53 - 0x883C1337, // 0169 GETMBR R15 R9 K55 - 0x7C2C0800, // 016A CALL R11 4 - 0x7001FFEF, // 016B JMP #015C - 0x58200038, // 016C LDCONST R8 K56 - 0xAC200200, // 016D CATCH R8 1 0 - 0xB0080000, // 016E RAISE 2 R0 R0 - 0x80040E00, // 016F RET 1 R7 - 0x7002004B, // 0170 JMP #01BD - 0x1C1C0908, // 0171 EQ R7 R4 K8 - 0x781E0032, // 0172 JMPF R7 #01A6 - 0x8C1C0D10, // 0173 GETMET R7 R6 K16 - 0x7C1C0200, // 0174 CALL R7 1 - 0x60200010, // 0175 GETGBL R8 G16 - 0x88240132, // 0176 GETMBR R9 R0 K50 - 0x88241333, // 0177 GETMBR R9 R9 K51 - 0x8C241334, // 0178 GETMET R9 R9 K52 - 0x7C240200, // 0179 CALL R9 1 - 0x7C200200, // 017A CALL R8 1 - 0xA8020024, // 017B EXBLK 0 #01A1 - 0x5C241000, // 017C MOVE R9 R8 - 0x7C240000, // 017D CALL R9 0 - 0x8C280D39, // 017E GETMET R10 R6 K57 - 0x8C30133A, // 017F GETMET R12 R9 K58 - 0x7C300200, // 0180 CALL R12 1 - 0x7C280400, // 0181 CALL R10 2 - 0x8C2C0F14, // 0182 GETMET R11 R7 K20 - 0x4C340000, // 0183 LDNIL R13 - 0x7C2C0400, // 0184 CALL R11 2 - 0x8C30170A, // 0185 GETMET R12 R11 K10 - 0x58380008, // 0186 LDCONST R14 K8 - 0x883C0D35, // 0187 GETMBR R15 R6 K53 - 0x8C40153B, // 0188 GETMET R16 R10 K59 - 0x544A0008, // 0189 LDINT R18 9 - 0x7C400400, // 018A CALL R16 2 - 0x7C300800, // 018B CALL R12 4 - 0x8C30170A, // 018C GETMET R12 R11 K10 - 0x5838000C, // 018D LDCONST R14 K12 - 0x883C0D0B, // 018E GETMBR R15 R6 K11 - 0x8840133C, // 018F GETMBR R16 R9 K60 - 0x7C300800, // 0190 CALL R12 4 - 0x8C30170A, // 0191 GETMET R12 R11 K10 - 0x5838000E, // 0192 LDCONST R14 K14 - 0x883C0D05, // 0193 GETMBR R15 R6 K5 - 0x8840133D, // 0194 GETMBR R16 R9 K61 - 0x7C300800, // 0195 CALL R12 4 - 0x8C30170A, // 0196 GETMET R12 R11 K10 - 0x543A0003, // 0197 LDINT R14 4 - 0x883C0D05, // 0198 GETMBR R15 R6 K5 - 0x8840133E, // 0199 GETMBR R16 R9 K62 - 0x7C300800, // 019A CALL R12 4 - 0x8C30170A, // 019B GETMET R12 R11 K10 - 0x543A0004, // 019C LDINT R14 5 - 0x883C0D15, // 019D GETMBR R15 R6 K21 - 0x8840133F, // 019E GETMBR R16 R9 K63 - 0x7C300800, // 019F CALL R12 4 - 0x7001FFDA, // 01A0 JMP #017C - 0x58200038, // 01A1 LDCONST R8 K56 - 0xAC200200, // 01A2 CATCH R8 1 0 - 0xB0080000, // 01A3 RAISE 2 R0 R0 - 0x80040E00, // 01A4 RET 1 R7 - 0x70020016, // 01A5 JMP #01BD - 0x1C1C090C, // 01A6 EQ R7 R4 K12 - 0x781E0005, // 01A7 JMPF R7 #01AE - 0x8C1C0D04, // 01A8 GETMET R7 R6 K4 - 0x88240D0D, // 01A9 GETMBR R9 R6 K13 - 0x542A0004, // 01AA LDINT R10 5 - 0x7C1C0600, // 01AB CALL R7 3 - 0x80040E00, // 01AC RET 1 R7 - 0x7002000E, // 01AD JMP #01BD - 0x1C1C090E, // 01AE EQ R7 R4 K14 - 0x781E0005, // 01AF JMPF R7 #01B6 - 0x8C1C0D04, // 01B0 GETMET R7 R6 K4 - 0x88240D0D, // 01B1 GETMBR R9 R6 K13 - 0x58280008, // 01B2 LDCONST R10 K8 - 0x7C1C0600, // 01B3 CALL R7 3 - 0x80040E00, // 01B4 RET 1 R7 - 0x70020006, // 01B5 JMP #01BD - 0x541E0003, // 01B6 LDINT R7 4 - 0x1C1C0807, // 01B7 EQ R7 R4 R7 - 0x781E0000, // 01B8 JMPF R7 #01BA - 0x70020002, // 01B9 JMP #01BD - 0x541E0004, // 01BA LDINT R7 5 - 0x1C1C0807, // 01BB EQ R7 R4 R7 - 0x781DFFFF, // 01BC JMPF R7 #01BD - 0x700200C9, // 01BD JMP #0288 - 0x541E003B, // 01BE LDINT R7 60 - 0x1C1C0607, // 01BF EQ R7 R3 R7 - 0x781E0000, // 01C0 JMPF R7 #01C2 - 0x700200C5, // 01C1 JMP #0288 - 0x541E0027, // 01C2 LDINT R7 40 - 0x1C1C0607, // 01C3 EQ R7 R3 R7 - 0x781E0071, // 01C4 JMPF R7 #0237 - 0x1C1C0903, // 01C5 EQ R7 R4 K3 - 0x781E0005, // 01C6 JMPF R7 #01CD - 0x8C1C0D04, // 01C7 GETMET R7 R6 K4 - 0x88240D0B, // 01C8 GETMBR R9 R6 K11 - 0x58280003, // 01C9 LDCONST R10 K3 - 0x7C1C0600, // 01CA CALL R7 3 - 0x80040E00, // 01CB RET 1 R7 - 0x70020068, // 01CC JMP #0236 - 0x1C1C0908, // 01CD EQ R7 R4 K8 - 0x781E0005, // 01CE JMPF R7 #01D5 - 0x8C1C0D04, // 01CF GETMET R7 R6 K4 - 0x88240D15, // 01D0 GETMBR R9 R6 K21 - 0x58280040, // 01D1 LDCONST R10 K64 - 0x7C1C0600, // 01D2 CALL R7 3 - 0x80040E00, // 01D3 RET 1 R7 - 0x70020060, // 01D4 JMP #0236 - 0x1C1C090C, // 01D5 EQ R7 R4 K12 - 0x781E0006, // 01D6 JMPF R7 #01DE - 0x8C1C0D04, // 01D7 GETMET R7 R6 K4 - 0x88240D0B, // 01D8 GETMBR R9 R6 K11 - 0x88280132, // 01D9 GETMBR R10 R0 K50 - 0x88281541, // 01DA GETMBR R10 R10 K65 - 0x7C1C0600, // 01DB CALL R7 3 - 0x80040E00, // 01DC RET 1 R7 - 0x70020057, // 01DD JMP #0236 - 0x1C1C090E, // 01DE EQ R7 R4 K14 - 0x781E0009, // 01DF JMPF R7 #01EA - 0x8C1C0D04, // 01E0 GETMET R7 R6 K4 - 0x88240D15, // 01E1 GETMBR R9 R6 K21 - 0xB82A2200, // 01E2 GETNGBL R10 K17 - 0x8C281525, // 01E3 GETMET R10 R10 K37 - 0x58300042, // 01E4 LDCONST R12 K66 - 0x7C280400, // 01E5 CALL R10 2 - 0x94281542, // 01E6 GETIDX R10 R10 K66 - 0x7C1C0600, // 01E7 CALL R7 3 - 0x80040E00, // 01E8 RET 1 R7 - 0x7002004B, // 01E9 JMP #0236 - 0x541E0003, // 01EA LDINT R7 4 - 0x1C1C0807, // 01EB EQ R7 R4 R7 - 0x781E0005, // 01EC JMPF R7 #01F3 - 0x8C1C0D04, // 01ED GETMET R7 R6 K4 - 0x88240D0B, // 01EE GETMBR R9 R6 K11 - 0x542A7FFF, // 01EF LDINT R10 32768 - 0x7C1C0600, // 01F0 CALL R7 3 - 0x80040E00, // 01F1 RET 1 R7 - 0x70020042, // 01F2 JMP #0236 - 0x541E0004, // 01F3 LDINT R7 5 - 0x1C1C0807, // 01F4 EQ R7 R4 R7 - 0x781E0009, // 01F5 JMPF R7 #0200 - 0x8C1C0D04, // 01F6 GETMET R7 R6 K4 - 0x88240D15, // 01F7 GETMBR R9 R6 K21 - 0xB82A2200, // 01F8 GETNGBL R10 K17 - 0x8C281525, // 01F9 GETMET R10 R10 K37 - 0x58300043, // 01FA LDCONST R12 K67 - 0x7C280400, // 01FB CALL R10 2 - 0x94281544, // 01FC GETIDX R10 R10 K68 - 0x7C1C0600, // 01FD CALL R7 3 - 0x80040E00, // 01FE RET 1 R7 - 0x70020035, // 01FF JMP #0236 - 0x541E0005, // 0200 LDINT R7 6 - 0x1C1C0807, // 0201 EQ R7 R4 R7 - 0x781E0005, // 0202 JMPF R7 #0209 - 0x8C1C0D04, // 0203 GETMET R7 R6 K4 - 0x88240D15, // 0204 GETMBR R9 R6 K21 - 0x58280045, // 0205 LDCONST R10 K69 - 0x7C1C0600, // 0206 CALL R7 3 - 0x80040E00, // 0207 RET 1 R7 - 0x7002002C, // 0208 JMP #0236 - 0x541E0006, // 0209 LDINT R7 7 - 0x1C1C0807, // 020A EQ R7 R4 R7 - 0x781E0005, // 020B JMPF R7 #0212 - 0x8C1C0D04, // 020C GETMET R7 R6 K4 - 0x88240D0B, // 020D GETMBR R9 R6 K11 - 0x58280003, // 020E LDCONST R10 K3 - 0x7C1C0600, // 020F CALL R7 3 - 0x80040E00, // 0210 RET 1 R7 - 0x70020023, // 0211 JMP #0236 - 0x541E0007, // 0212 LDINT R7 8 - 0x1C1C0807, // 0213 EQ R7 R4 R7 - 0x781E000A, // 0214 JMPF R7 #0220 - 0x8C1C0D04, // 0215 GETMET R7 R6 K4 - 0x88240D15, // 0216 GETMBR R9 R6 K21 - 0xB82A2200, // 0217 GETNGBL R10 K17 - 0x8C281525, // 0218 GETMET R10 R10 K37 - 0x58300046, // 0219 LDCONST R12 K70 - 0x7C280400, // 021A CALL R10 2 - 0x94281547, // 021B GETIDX R10 R10 K71 - 0x94281548, // 021C GETIDX R10 R10 K72 - 0x7C1C0600, // 021D CALL R7 3 - 0x80040E00, // 021E RET 1 R7 - 0x70020015, // 021F JMP #0236 - 0x541E0008, // 0220 LDINT R7 9 - 0x1C1C0807, // 0221 EQ R7 R4 R7 - 0x781E0005, // 0222 JMPF R7 #0229 - 0x8C1C0D04, // 0223 GETMET R7 R6 K4 - 0x88240D0B, // 0224 GETMBR R9 R6 K11 - 0x58280003, // 0225 LDCONST R10 K3 - 0x7C1C0600, // 0226 CALL R7 3 - 0x80040E00, // 0227 RET 1 R7 - 0x7002000C, // 0228 JMP #0236 - 0x541E0009, // 0229 LDINT R7 10 - 0x1C1C0807, // 022A EQ R7 R4 R7 - 0x781E0009, // 022B JMPF R7 #0236 - 0x8C1C0D04, // 022C GETMET R7 R6 K4 - 0x88240D15, // 022D GETMBR R9 R6 K21 - 0xB82A2200, // 022E GETNGBL R10 K17 - 0x8C281525, // 022F GETMET R10 R10 K37 - 0x58300046, // 0230 LDCONST R12 K70 - 0x7C280400, // 0231 CALL R10 2 - 0x94281547, // 0232 GETIDX R10 R10 K71 - 0x94281549, // 0233 GETIDX R10 R10 K73 - 0x7C1C0600, // 0234 CALL R7 3 - 0x80040E00, // 0235 RET 1 R7 - 0x70020050, // 0236 JMP #0288 - 0x541E003E, // 0237 LDINT R7 63 - 0x1C1C0607, // 0238 EQ R7 R3 R7 - 0x781E0000, // 0239 JMPF R7 #023B - 0x7002004C, // 023A JMP #0288 - 0x541E002A, // 023B LDINT R7 43 - 0x1C1C0607, // 023C EQ R7 R3 R7 - 0x781E0016, // 023D JMPF R7 #0255 - 0x1C1C0903, // 023E EQ R7 R4 K3 - 0x781E0007, // 023F JMPF R7 #0248 - 0x8C1C0D04, // 0240 GETMET R7 R6 K4 - 0x88240D15, // 0241 GETMBR R9 R6 K21 - 0xB82A2200, // 0242 GETNGBL R10 K17 - 0x8C28154A, // 0243 GETMET R10 R10 K74 - 0x7C280200, // 0244 CALL R10 1 - 0x7C1C0600, // 0245 CALL R7 3 - 0x80040E00, // 0246 RET 1 R7 - 0x7002000B, // 0247 JMP #0254 - 0x1C1C0908, // 0248 EQ R7 R4 K8 - 0x781E0009, // 0249 JMPF R7 #0254 - 0x8C1C0D4B, // 024A GETMET R7 R6 K75 - 0x7C1C0200, // 024B CALL R7 1 - 0x8C200F0A, // 024C GETMET R8 R7 K10 - 0x4C280000, // 024D LDNIL R10 - 0x882C0D15, // 024E GETMBR R11 R6 K21 - 0xB8322200, // 024F GETNGBL R12 K17 - 0x8C30194A, // 0250 GETMET R12 R12 K74 - 0x7C300200, // 0251 CALL R12 1 - 0x7C200800, // 0252 CALL R8 4 - 0x80040E00, // 0253 RET 1 R7 - 0x70020032, // 0254 JMP #0288 - 0x541E002B, // 0255 LDINT R7 44 - 0x1C1C0607, // 0256 EQ R7 R3 R7 - 0x781E001C, // 0257 JMPF R7 #0275 - 0x1C1C0903, // 0258 EQ R7 R4 K3 - 0x781E0005, // 0259 JMPF R7 #0260 - 0x8C1C0D04, // 025A GETMET R7 R6 K4 - 0x88240D0D, // 025B GETMBR R9 R6 K13 - 0x58280008, // 025C LDCONST R10 K8 - 0x7C1C0600, // 025D CALL R7 3 - 0x80040E00, // 025E RET 1 R7 - 0x70020013, // 025F JMP #0274 - 0x1C1C0908, // 0260 EQ R7 R4 K8 - 0x781E0005, // 0261 JMPF R7 #0268 - 0x8C1C0D04, // 0262 GETMET R7 R6 K4 - 0x88240D0D, // 0263 GETMBR R9 R6 K13 - 0x542A0003, // 0264 LDINT R10 4 - 0x7C1C0600, // 0265 CALL R7 3 - 0x80040E00, // 0266 RET 1 R7 - 0x7002000B, // 0267 JMP #0274 - 0x1C1C090C, // 0268 EQ R7 R4 K12 - 0x781E0009, // 0269 JMPF R7 #0274 - 0x8C1C0D4B, // 026A GETMET R7 R6 K75 - 0x7C1C0200, // 026B CALL R7 1 - 0x8C200F0A, // 026C GETMET R8 R7 K10 - 0x4C280000, // 026D LDNIL R10 - 0x8C2C0D04, // 026E GETMET R11 R6 K4 - 0x88340D0D, // 026F GETMBR R13 R6 K13 - 0x543A0003, // 0270 LDINT R14 4 - 0x7C2C0600, // 0271 CALL R11 3 - 0x7C200600, // 0272 CALL R8 3 - 0x80040E00, // 0273 RET 1 R7 - 0x70020012, // 0274 JMP #0288 - 0x541E0030, // 0275 LDINT R7 49 - 0x1C1C0607, // 0276 EQ R7 R3 R7 - 0x781E000F, // 0277 JMPF R7 #0288 - 0x1C1C090E, // 0278 EQ R7 R4 K14 - 0x781E0005, // 0279 JMPF R7 #0280 - 0x8C1C0D04, // 027A GETMET R7 R6 K4 - 0x88240D0D, // 027B GETMBR R9 R6 K13 - 0x542A001D, // 027C LDINT R10 30 - 0x7C1C0600, // 027D CALL R7 3 - 0x80040E00, // 027E RET 1 R7 - 0x70020007, // 027F JMP #0288 - 0x541EFFFB, // 0280 LDINT R7 65532 - 0x1C1C0807, // 0281 EQ R7 R4 R7 - 0x781E0004, // 0282 JMPF R7 #0288 - 0x8C1C0D04, // 0283 GETMET R7 R6 K4 - 0x88240D29, // 0284 GETMBR R9 R6 K41 - 0x58280003, // 0285 LDCONST R10 K3 - 0x7C1C0600, // 0286 CALL R7 3 - 0x80040E00, // 0287 RET 1 R7 - 0x80000000, // 0288 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_Plugin_core_init, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(endpoints), - /* K2 */ be_const_int(0), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x60080012, // 0006 GETGBL R2 G18 - 0x7C080000, // 0007 CALL R2 0 - 0x400C0502, // 0008 CONNECT R3 R2 K2 - 0x90020202, // 0009 SETMBR R0 K1 R2 - 0x80000000, // 000A RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: invoke_request ********************************************************************/ @@ -1385,6 +598,888 @@ be_local_closure(Matter_Plugin_core_invoke_request, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: read_attribute +********************************************************************/ +be_local_closure(Matter_Plugin_core_read_attribute, /* name */ + be_nested_proto( + 24, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[82]) { /* constants */ + /* K0 */ be_nested_str_weak(string), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(cluster), + /* K4 */ be_nested_str_weak(attribute), + /* K5 */ be_const_int(0), + /* K6 */ be_nested_str_weak(create_TLV), + /* K7 */ be_nested_str_weak(U8), + /* K8 */ be_nested_str_weak(session), + /* K9 */ be_nested_str_weak(breadcrumb), + /* K10 */ be_const_int(1), + /* K11 */ be_nested_str_weak(Matter_TLV_struct), + /* K12 */ be_nested_str_weak(add_TLV), + /* K13 */ be_nested_str_weak(U2), + /* K14 */ be_const_int(2), + /* K15 */ be_nested_str_weak(U1), + /* K16 */ be_const_int(3), + /* K17 */ be_nested_str_weak(BOOL), + /* K18 */ be_nested_str_weak(Matter_TLV_array), + /* K19 */ be_nested_str_weak(tasmota), + /* K20 */ be_nested_str_weak(eth), + /* K21 */ be_nested_str_weak(up), + /* K22 */ be_nested_str_weak(add_struct), + /* K23 */ be_nested_str_weak(UTF1), + /* K24 */ be_nested_str_weak(ethernet), + /* K25 */ be_nested_str_weak(NULL), + /* K26 */ be_nested_str_weak(fromhex), + /* K27 */ be_nested_str_weak(replace), + /* K28 */ be_nested_str_weak(find), + /* K29 */ be_nested_str_weak(mac), + /* K30 */ be_nested_str_weak(), + /* K31 */ be_nested_str_weak(_X3A), + /* K32 */ be_nested_str_weak(B1), + /* K33 */ be_nested_str_weak(add_array), + /* K34 */ be_nested_str_weak(get_ip_bytes), + /* K35 */ be_nested_str_weak(ip), + /* K36 */ be_nested_str_weak(ip6local), + /* K37 */ be_nested_str_weak(ip6), + /* K38 */ be_nested_str_weak(wifi), + /* K39 */ be_nested_str_weak(cmd), + /* K40 */ be_nested_str_weak(Status_X201), + /* K41 */ be_nested_str_weak(StatusPRM), + /* K42 */ be_nested_str_weak(BootCount), + /* K43 */ be_nested_str_weak(U4), + /* K44 */ be_nested_str_weak(Status_X2011), + /* K45 */ be_nested_str_weak(StatusSTS), + /* K46 */ be_nested_str_weak(UptimeSec), + /* K47 */ be_nested_str_weak(int64), + /* K48 */ be_nested_str_weak(rtc), + /* K49 */ be_nested_str_weak(utc), + /* K50 */ be_const_int(1000000), + /* K51 */ be_nested_str_weak(local), + /* K52 */ be_nested_str_weak(device), + /* K53 */ be_nested_str_weak(sessions), + /* K54 */ be_nested_str_weak(sessions_active), + /* K55 */ be_nested_str_weak(B2), + /* K56 */ be_nested_str_weak(noc), + /* K57 */ be_nested_str_weak(icac), + /* K58 */ be_nested_str_weak(stop_iteration), + /* K59 */ be_nested_str_weak(parse), + /* K60 */ be_nested_str_weak(get_ca), + /* K61 */ be_nested_str_weak(findsubval), + /* K62 */ be_nested_str_weak(admin_vendor), + /* K63 */ be_nested_str_weak(fabric), + /* K64 */ be_nested_str_weak(deviceid), + /* K65 */ be_nested_str_weak(fabric_label), + /* K66 */ be_nested_str_weak(Tasmota), + /* K67 */ be_nested_str_weak(vendorid), + /* K68 */ be_nested_str_weak(DeviceName), + /* K69 */ be_nested_str_weak(FriendlyName), + /* K70 */ be_nested_str_weak(FriendlyName1), + /* K71 */ be_nested_str_weak(XX), + /* K72 */ be_nested_str_weak(Status_X202), + /* K73 */ be_nested_str_weak(StatusFWR), + /* K74 */ be_nested_str_weak(Hardware), + /* K75 */ be_nested_str_weak(Version), + /* K76 */ be_nested_str_weak(locale), + /* K77 */ be_nested_str_weak(Matter_TLV_list), + /* K78 */ be_nested_str_weak(get_cluster_list), + /* K79 */ be_nested_str_weak(get_active_endpoints), + /* K80 */ be_nested_str_weak(status), + /* K81 */ be_nested_str_weak(UNSUPPORTED_CLUSTER), + }), + be_str_weak(read_attribute), + &be_const_str_solidified, + ( &(const binstruction[736]) { /* code */ + 0xA40E0000, // 0000 IMPORT R3 K0 + 0xB8120200, // 0001 GETNGBL R4 K1 + 0x88100902, // 0002 GETMBR R4 R4 K2 + 0x88140503, // 0003 GETMBR R5 R2 K3 + 0x88180504, // 0004 GETMBR R6 R2 K4 + 0x541E002F, // 0005 LDINT R7 48 + 0x1C1C0A07, // 0006 EQ R7 R5 R7 + 0x781E0031, // 0007 JMPF R7 #003A + 0x1C1C0D05, // 0008 EQ R7 R6 K5 + 0x781E0006, // 0009 JMPF R7 #0011 + 0x8C1C0906, // 000A GETMET R7 R4 K6 + 0x88240907, // 000B GETMBR R9 R4 K7 + 0x88280308, // 000C GETMBR R10 R1 K8 + 0x88281509, // 000D GETMBR R10 R10 K9 + 0x7C1C0600, // 000E CALL R7 3 + 0x80040E00, // 000F RET 1 R7 + 0x70020027, // 0010 JMP #0039 + 0x1C1C0D0A, // 0011 EQ R7 R6 K10 + 0x781E000D, // 0012 JMPF R7 #0021 + 0x8C1C090B, // 0013 GETMET R7 R4 K11 + 0x7C1C0200, // 0014 CALL R7 1 + 0x8C200F0C, // 0015 GETMET R8 R7 K12 + 0x58280005, // 0016 LDCONST R10 K5 + 0x882C090D, // 0017 GETMBR R11 R4 K13 + 0x5432003B, // 0018 LDINT R12 60 + 0x7C200800, // 0019 CALL R8 4 + 0x8C200F0C, // 001A GETMET R8 R7 K12 + 0x5828000A, // 001B LDCONST R10 K10 + 0x882C090D, // 001C GETMBR R11 R4 K13 + 0x54320383, // 001D LDINT R12 900 + 0x7C200800, // 001E CALL R8 4 + 0x80040E00, // 001F RET 1 R7 + 0x70020017, // 0020 JMP #0039 + 0x1C1C0D0E, // 0021 EQ R7 R6 K14 + 0x781E0005, // 0022 JMPF R7 #0029 + 0x8C1C0906, // 0023 GETMET R7 R4 K6 + 0x8824090F, // 0024 GETMBR R9 R4 K15 + 0x5828000E, // 0025 LDCONST R10 K14 + 0x7C1C0600, // 0026 CALL R7 3 + 0x80040E00, // 0027 RET 1 R7 + 0x7002000F, // 0028 JMP #0039 + 0x1C1C0D10, // 0029 EQ R7 R6 K16 + 0x781E0005, // 002A JMPF R7 #0031 + 0x8C1C0906, // 002B GETMET R7 R4 K6 + 0x8824090F, // 002C GETMBR R9 R4 K15 + 0x5828000E, // 002D LDCONST R10 K14 + 0x7C1C0600, // 002E CALL R7 3 + 0x80040E00, // 002F RET 1 R7 + 0x70020007, // 0030 JMP #0039 + 0x541E0003, // 0031 LDINT R7 4 + 0x1C1C0C07, // 0032 EQ R7 R6 R7 + 0x781E0004, // 0033 JMPF R7 #0039 + 0x8C1C0906, // 0034 GETMET R7 R4 K6 + 0x88240911, // 0035 GETMBR R9 R4 K17 + 0x50280000, // 0036 LDBOOL R10 0 0 + 0x7C1C0600, // 0037 CALL R7 3 + 0x80040E00, // 0038 RET 1 R7 + 0x700202A4, // 0039 JMP #02DF + 0x541E0031, // 003A LDINT R7 50 + 0x1C1C0A07, // 003B EQ R7 R5 R7 + 0x781E0000, // 003C JMPF R7 #003E + 0x700202A0, // 003D JMP #02DF + 0x541E0032, // 003E LDINT R7 51 + 0x1C1C0A07, // 003F EQ R7 R5 R7 + 0x781E00DA, // 0040 JMPF R7 #011C + 0x1C1C0D05, // 0041 EQ R7 R6 K5 + 0x781E00B5, // 0042 JMPF R7 #00F9 + 0x8C1C0912, // 0043 GETMET R7 R4 K18 + 0x7C1C0200, // 0044 CALL R7 1 + 0xB8222600, // 0045 GETNGBL R8 K19 + 0x8C201114, // 0046 GETMET R8 R8 K20 + 0x7C200200, // 0047 CALL R8 1 + 0x94241115, // 0048 GETIDX R9 R8 K21 + 0x78260053, // 0049 JMPF R9 #009E + 0x8C240F16, // 004A GETMET R9 R7 K22 + 0x4C2C0000, // 004B LDNIL R11 + 0x7C240400, // 004C CALL R9 2 + 0x8C28130C, // 004D GETMET R10 R9 K12 + 0x58300005, // 004E LDCONST R12 K5 + 0x88340917, // 004F GETMBR R13 R4 K23 + 0x58380018, // 0050 LDCONST R14 K24 + 0x7C280800, // 0051 CALL R10 4 + 0x8C28130C, // 0052 GETMET R10 R9 K12 + 0x5830000A, // 0053 LDCONST R12 K10 + 0x88340911, // 0054 GETMBR R13 R4 K17 + 0x5838000A, // 0055 LDCONST R14 K10 + 0x7C280800, // 0056 CALL R10 4 + 0x8C28130C, // 0057 GETMET R10 R9 K12 + 0x5830000E, // 0058 LDCONST R12 K14 + 0x88340911, // 0059 GETMBR R13 R4 K17 + 0x5838000A, // 005A LDCONST R14 K10 + 0x7C280800, // 005B CALL R10 4 + 0x8C28130C, // 005C GETMET R10 R9 K12 + 0x58300010, // 005D LDCONST R12 K16 + 0x88340919, // 005E GETMBR R13 R4 K25 + 0x4C380000, // 005F LDNIL R14 + 0x7C280800, // 0060 CALL R10 4 + 0x60280015, // 0061 GETGBL R10 G21 + 0x7C280000, // 0062 CALL R10 0 + 0x8C28151A, // 0063 GETMET R10 R10 K26 + 0x8C30071B, // 0064 GETMET R12 R3 K27 + 0x8C38111C, // 0065 GETMET R14 R8 K28 + 0x5840001D, // 0066 LDCONST R16 K29 + 0x5844001E, // 0067 LDCONST R17 K30 + 0x7C380600, // 0068 CALL R14 3 + 0x583C001F, // 0069 LDCONST R15 K31 + 0x5840001E, // 006A LDCONST R16 K30 + 0x7C300800, // 006B CALL R12 4 + 0x7C280400, // 006C CALL R10 2 + 0x8C2C130C, // 006D GETMET R11 R9 K12 + 0x54360003, // 006E LDINT R13 4 + 0x88380920, // 006F GETMBR R14 R4 K32 + 0x5C3C1400, // 0070 MOVE R15 R10 + 0x7C2C0800, // 0071 CALL R11 4 + 0x8C2C1321, // 0072 GETMET R11 R9 K33 + 0x54360004, // 0073 LDINT R13 5 + 0x7C2C0400, // 0074 CALL R11 2 + 0x8C30170C, // 0075 GETMET R12 R11 K12 + 0x4C380000, // 0076 LDNIL R14 + 0x883C0920, // 0077 GETMBR R15 R4 K32 + 0xB8420200, // 0078 GETNGBL R16 K1 + 0x8C402122, // 0079 GETMET R16 R16 K34 + 0x8C48111C, // 007A GETMET R18 R8 K28 + 0x58500023, // 007B LDCONST R20 K35 + 0x5854001E, // 007C LDCONST R21 K30 + 0x7C480600, // 007D CALL R18 3 + 0x7C400400, // 007E CALL R16 2 + 0x7C300800, // 007F CALL R12 4 + 0x8C301321, // 0080 GETMET R12 R9 K33 + 0x543A0005, // 0081 LDINT R14 6 + 0x7C300400, // 0082 CALL R12 2 + 0x8C34190C, // 0083 GETMET R13 R12 K12 + 0x4C3C0000, // 0084 LDNIL R15 + 0x88400920, // 0085 GETMBR R16 R4 K32 + 0xB8460200, // 0086 GETNGBL R17 K1 + 0x8C442322, // 0087 GETMET R17 R17 K34 + 0x8C4C111C, // 0088 GETMET R19 R8 K28 + 0x58540024, // 0089 LDCONST R21 K36 + 0x5858001E, // 008A LDCONST R22 K30 + 0x7C4C0600, // 008B CALL R19 3 + 0x7C440400, // 008C CALL R17 2 + 0x7C340800, // 008D CALL R13 4 + 0x8C34190C, // 008E GETMET R13 R12 K12 + 0x4C3C0000, // 008F LDNIL R15 + 0x88400920, // 0090 GETMBR R16 R4 K32 + 0xB8460200, // 0091 GETNGBL R17 K1 + 0x8C442322, // 0092 GETMET R17 R17 K34 + 0x8C4C111C, // 0093 GETMET R19 R8 K28 + 0x58540025, // 0094 LDCONST R21 K37 + 0x5858001E, // 0095 LDCONST R22 K30 + 0x7C4C0600, // 0096 CALL R19 3 + 0x7C440400, // 0097 CALL R17 2 + 0x7C340800, // 0098 CALL R13 4 + 0x8C34130C, // 0099 GETMET R13 R9 K12 + 0x543E0006, // 009A LDINT R15 7 + 0x8840090F, // 009B GETMBR R16 R4 K15 + 0x5844000E, // 009C LDCONST R17 K14 + 0x7C340800, // 009D CALL R13 4 + 0xB8262600, // 009E GETNGBL R9 K19 + 0x8C241326, // 009F GETMET R9 R9 K38 + 0x7C240200, // 00A0 CALL R9 1 + 0x94281315, // 00A1 GETIDX R10 R9 K21 + 0x782A0053, // 00A2 JMPF R10 #00F7 + 0x8C280F16, // 00A3 GETMET R10 R7 K22 + 0x4C300000, // 00A4 LDNIL R12 + 0x7C280400, // 00A5 CALL R10 2 + 0x8C2C150C, // 00A6 GETMET R11 R10 K12 + 0x58340005, // 00A7 LDCONST R13 K5 + 0x88380917, // 00A8 GETMBR R14 R4 K23 + 0x583C0026, // 00A9 LDCONST R15 K38 + 0x7C2C0800, // 00AA CALL R11 4 + 0x8C2C150C, // 00AB GETMET R11 R10 K12 + 0x5834000A, // 00AC LDCONST R13 K10 + 0x88380911, // 00AD GETMBR R14 R4 K17 + 0x583C000A, // 00AE LDCONST R15 K10 + 0x7C2C0800, // 00AF CALL R11 4 + 0x8C2C150C, // 00B0 GETMET R11 R10 K12 + 0x5834000E, // 00B1 LDCONST R13 K14 + 0x88380911, // 00B2 GETMBR R14 R4 K17 + 0x583C000A, // 00B3 LDCONST R15 K10 + 0x7C2C0800, // 00B4 CALL R11 4 + 0x8C2C150C, // 00B5 GETMET R11 R10 K12 + 0x58340010, // 00B6 LDCONST R13 K16 + 0x88380919, // 00B7 GETMBR R14 R4 K25 + 0x4C3C0000, // 00B8 LDNIL R15 + 0x7C2C0800, // 00B9 CALL R11 4 + 0x602C0015, // 00BA GETGBL R11 G21 + 0x7C2C0000, // 00BB CALL R11 0 + 0x8C2C171A, // 00BC GETMET R11 R11 K26 + 0x8C34071B, // 00BD GETMET R13 R3 K27 + 0x8C3C131C, // 00BE GETMET R15 R9 K28 + 0x5844001D, // 00BF LDCONST R17 K29 + 0x5848001E, // 00C0 LDCONST R18 K30 + 0x7C3C0600, // 00C1 CALL R15 3 + 0x5840001F, // 00C2 LDCONST R16 K31 + 0x5844001E, // 00C3 LDCONST R17 K30 + 0x7C340800, // 00C4 CALL R13 4 + 0x7C2C0400, // 00C5 CALL R11 2 + 0x8C30150C, // 00C6 GETMET R12 R10 K12 + 0x543A0003, // 00C7 LDINT R14 4 + 0x883C0920, // 00C8 GETMBR R15 R4 K32 + 0x5C401600, // 00C9 MOVE R16 R11 + 0x7C300800, // 00CA CALL R12 4 + 0x8C301521, // 00CB GETMET R12 R10 K33 + 0x543A0004, // 00CC LDINT R14 5 + 0x7C300400, // 00CD CALL R12 2 + 0x8C34190C, // 00CE GETMET R13 R12 K12 + 0x4C3C0000, // 00CF LDNIL R15 + 0x88400920, // 00D0 GETMBR R16 R4 K32 + 0xB8460200, // 00D1 GETNGBL R17 K1 + 0x8C442322, // 00D2 GETMET R17 R17 K34 + 0x8C4C131C, // 00D3 GETMET R19 R9 K28 + 0x58540023, // 00D4 LDCONST R21 K35 + 0x5858001E, // 00D5 LDCONST R22 K30 + 0x7C4C0600, // 00D6 CALL R19 3 + 0x7C440400, // 00D7 CALL R17 2 + 0x7C340800, // 00D8 CALL R13 4 + 0x8C341521, // 00D9 GETMET R13 R10 K33 + 0x543E0005, // 00DA LDINT R15 6 + 0x7C340400, // 00DB CALL R13 2 + 0x8C381B0C, // 00DC GETMET R14 R13 K12 + 0x4C400000, // 00DD LDNIL R16 + 0x88440920, // 00DE GETMBR R17 R4 K32 + 0xB84A0200, // 00DF GETNGBL R18 K1 + 0x8C482522, // 00E0 GETMET R18 R18 K34 + 0x8C50131C, // 00E1 GETMET R20 R9 K28 + 0x58580024, // 00E2 LDCONST R22 K36 + 0x585C001E, // 00E3 LDCONST R23 K30 + 0x7C500600, // 00E4 CALL R20 3 + 0x7C480400, // 00E5 CALL R18 2 + 0x7C380800, // 00E6 CALL R14 4 + 0x8C381B0C, // 00E7 GETMET R14 R13 K12 + 0x4C400000, // 00E8 LDNIL R16 + 0x88440920, // 00E9 GETMBR R17 R4 K32 + 0xB84A0200, // 00EA GETNGBL R18 K1 + 0x8C482522, // 00EB GETMET R18 R18 K34 + 0x8C50131C, // 00EC GETMET R20 R9 K28 + 0x58580025, // 00ED LDCONST R22 K37 + 0x585C001E, // 00EE LDCONST R23 K30 + 0x7C500600, // 00EF CALL R20 3 + 0x7C480400, // 00F0 CALL R18 2 + 0x7C380800, // 00F1 CALL R14 4 + 0x8C38150C, // 00F2 GETMET R14 R10 K12 + 0x54420006, // 00F3 LDINT R16 7 + 0x8844090F, // 00F4 GETMBR R17 R4 K15 + 0x5848000A, // 00F5 LDCONST R18 K10 + 0x7C380800, // 00F6 CALL R14 4 + 0x80040E00, // 00F7 RET 1 R7 + 0x70020021, // 00F8 JMP #011B + 0x1C1C0D0A, // 00F9 EQ R7 R6 K10 + 0x781E000A, // 00FA JMPF R7 #0106 + 0x8C1C0906, // 00FB GETMET R7 R4 K6 + 0x8824090D, // 00FC GETMBR R9 R4 K13 + 0xB82A2600, // 00FD GETNGBL R10 K19 + 0x8C281527, // 00FE GETMET R10 R10 K39 + 0x58300028, // 00FF LDCONST R12 K40 + 0x7C280400, // 0100 CALL R10 2 + 0x94281529, // 0101 GETIDX R10 R10 K41 + 0x9428152A, // 0102 GETIDX R10 R10 K42 + 0x7C1C0600, // 0103 CALL R7 3 + 0x80040E00, // 0104 RET 1 R7 + 0x70020014, // 0105 JMP #011B + 0x1C1C0D0E, // 0106 EQ R7 R6 K14 + 0x781E000A, // 0107 JMPF R7 #0113 + 0x8C1C0906, // 0108 GETMET R7 R4 K6 + 0x8824092B, // 0109 GETMBR R9 R4 K43 + 0xB82A2600, // 010A GETNGBL R10 K19 + 0x8C281527, // 010B GETMET R10 R10 K39 + 0x5830002C, // 010C LDCONST R12 K44 + 0x7C280400, // 010D CALL R10 2 + 0x9428152D, // 010E GETIDX R10 R10 K45 + 0x9428152E, // 010F GETIDX R10 R10 K46 + 0x7C1C0600, // 0110 CALL R7 3 + 0x80040E00, // 0111 RET 1 R7 + 0x70020007, // 0112 JMP #011B + 0x541E0007, // 0113 LDINT R7 8 + 0x1C1C0C07, // 0114 EQ R7 R6 R7 + 0x781E0004, // 0115 JMPF R7 #011B + 0x8C1C0906, // 0116 GETMET R7 R4 K6 + 0x88240911, // 0117 GETMBR R9 R4 K17 + 0x50280000, // 0118 LDBOOL R10 0 0 + 0x7C1C0600, // 0119 CALL R7 3 + 0x80040E00, // 011A RET 1 R7 + 0x700201C2, // 011B JMP #02DF + 0x541E0033, // 011C LDINT R7 52 + 0x1C1C0A07, // 011D EQ R7 R5 R7 + 0x781E0000, // 011E JMPF R7 #0120 + 0x700201BE, // 011F JMP #02DF + 0x541E0037, // 0120 LDINT R7 56 + 0x1C1C0A07, // 0121 EQ R7 R5 R7 + 0x781E002C, // 0122 JMPF R7 #0150 + 0x1C1C0D05, // 0123 EQ R7 R6 K5 + 0x781E000F, // 0124 JMPF R7 #0135 + 0xB81E5E00, // 0125 GETNGBL R7 K47 + 0xB8222600, // 0126 GETNGBL R8 K19 + 0x8C201130, // 0127 GETMET R8 R8 K48 + 0x7C200200, // 0128 CALL R8 1 + 0x94201131, // 0129 GETIDX R8 R8 K49 + 0x7C1C0200, // 012A CALL R7 1 + 0xB8225E00, // 012B GETNGBL R8 K47 + 0x58240032, // 012C LDCONST R9 K50 + 0x7C200200, // 012D CALL R8 1 + 0x081C0E08, // 012E MUL R7 R7 R8 + 0x8C200906, // 012F GETMET R8 R4 K6 + 0x88280907, // 0130 GETMBR R10 R4 K7 + 0x5C2C0E00, // 0131 MOVE R11 R7 + 0x7C200600, // 0132 CALL R8 3 + 0x80041000, // 0133 RET 1 R8 + 0x70020019, // 0134 JMP #014F + 0x1C1C0D0A, // 0135 EQ R7 R6 K10 + 0x781E0005, // 0136 JMPF R7 #013D + 0x8C1C0906, // 0137 GETMET R7 R4 K6 + 0x8824090F, // 0138 GETMBR R9 R4 K15 + 0x58280010, // 0139 LDCONST R10 K16 + 0x7C1C0600, // 013A CALL R7 3 + 0x80040E00, // 013B RET 1 R7 + 0x70020011, // 013C JMP #014F + 0x541E0006, // 013D LDINT R7 7 + 0x1C1C0C07, // 013E EQ R7 R6 R7 + 0x781E000E, // 013F JMPF R7 #014F + 0xB81E5E00, // 0140 GETNGBL R7 K47 + 0xB8222600, // 0141 GETNGBL R8 K19 + 0x8C201130, // 0142 GETMET R8 R8 K48 + 0x7C200200, // 0143 CALL R8 1 + 0x94201133, // 0144 GETIDX R8 R8 K51 + 0x7C1C0200, // 0145 CALL R7 1 + 0xB8225E00, // 0146 GETNGBL R8 K47 + 0x58240032, // 0147 LDCONST R9 K50 + 0x7C200200, // 0148 CALL R8 1 + 0x081C0E08, // 0149 MUL R7 R7 R8 + 0x8C200906, // 014A GETMET R8 R4 K6 + 0x88280907, // 014B GETMBR R10 R4 K7 + 0x5C2C0E00, // 014C MOVE R11 R7 + 0x7C200600, // 014D CALL R8 3 + 0x80041000, // 014E RET 1 R8 + 0x7002018E, // 014F JMP #02DF + 0x541E003D, // 0150 LDINT R7 62 + 0x1C1C0A07, // 0151 EQ R7 R5 R7 + 0x781E0082, // 0152 JMPF R7 #01D6 + 0x1C1C0D05, // 0153 EQ R7 R6 K5 + 0x781E001D, // 0154 JMPF R7 #0173 + 0x8C1C0912, // 0155 GETMET R7 R4 K18 + 0x7C1C0200, // 0156 CALL R7 1 + 0x60200010, // 0157 GETGBL R8 G16 + 0x88240134, // 0158 GETMBR R9 R0 K52 + 0x88241335, // 0159 GETMBR R9 R9 K53 + 0x8C241336, // 015A GETMET R9 R9 K54 + 0x7C240200, // 015B CALL R9 1 + 0x7C200200, // 015C CALL R8 1 + 0xA802000F, // 015D EXBLK 0 #016E + 0x5C241000, // 015E MOVE R9 R8 + 0x7C240000, // 015F CALL R9 0 + 0x8C280F16, // 0160 GETMET R10 R7 K22 + 0x4C300000, // 0161 LDNIL R12 + 0x7C280400, // 0162 CALL R10 2 + 0x8C2C150C, // 0163 GETMET R11 R10 K12 + 0x5834000A, // 0164 LDCONST R13 K10 + 0x88380937, // 0165 GETMBR R14 R4 K55 + 0x883C1338, // 0166 GETMBR R15 R9 K56 + 0x7C2C0800, // 0167 CALL R11 4 + 0x8C2C150C, // 0168 GETMET R11 R10 K12 + 0x5834000E, // 0169 LDCONST R13 K14 + 0x88380937, // 016A GETMBR R14 R4 K55 + 0x883C1339, // 016B GETMBR R15 R9 K57 + 0x7C2C0800, // 016C CALL R11 4 + 0x7001FFEF, // 016D JMP #015E + 0x5820003A, // 016E LDCONST R8 K58 + 0xAC200200, // 016F CATCH R8 1 0 + 0xB0080000, // 0170 RAISE 2 R0 R0 + 0x80040E00, // 0171 RET 1 R7 + 0x70020061, // 0172 JMP #01D5 + 0x1C1C0D0A, // 0173 EQ R7 R6 K10 + 0x781E0032, // 0174 JMPF R7 #01A8 + 0x8C1C0912, // 0175 GETMET R7 R4 K18 + 0x7C1C0200, // 0176 CALL R7 1 + 0x60200010, // 0177 GETGBL R8 G16 + 0x88240134, // 0178 GETMBR R9 R0 K52 + 0x88241335, // 0179 GETMBR R9 R9 K53 + 0x8C241336, // 017A GETMET R9 R9 K54 + 0x7C240200, // 017B CALL R9 1 + 0x7C200200, // 017C CALL R8 1 + 0xA8020024, // 017D EXBLK 0 #01A3 + 0x5C241000, // 017E MOVE R9 R8 + 0x7C240000, // 017F CALL R9 0 + 0x8C28093B, // 0180 GETMET R10 R4 K59 + 0x8C30133C, // 0181 GETMET R12 R9 K60 + 0x7C300200, // 0182 CALL R12 1 + 0x7C280400, // 0183 CALL R10 2 + 0x8C2C0F16, // 0184 GETMET R11 R7 K22 + 0x4C340000, // 0185 LDNIL R13 + 0x7C2C0400, // 0186 CALL R11 2 + 0x8C30170C, // 0187 GETMET R12 R11 K12 + 0x5838000A, // 0188 LDCONST R14 K10 + 0x883C0937, // 0189 GETMBR R15 R4 K55 + 0x8C40153D, // 018A GETMET R16 R10 K61 + 0x544A0008, // 018B LDINT R18 9 + 0x7C400400, // 018C CALL R16 2 + 0x7C300800, // 018D CALL R12 4 + 0x8C30170C, // 018E GETMET R12 R11 K12 + 0x5838000E, // 018F LDCONST R14 K14 + 0x883C090D, // 0190 GETMBR R15 R4 K13 + 0x8840133E, // 0191 GETMBR R16 R9 K62 + 0x7C300800, // 0192 CALL R12 4 + 0x8C30170C, // 0193 GETMET R12 R11 K12 + 0x58380010, // 0194 LDCONST R14 K16 + 0x883C0907, // 0195 GETMBR R15 R4 K7 + 0x8840133F, // 0196 GETMBR R16 R9 K63 + 0x7C300800, // 0197 CALL R12 4 + 0x8C30170C, // 0198 GETMET R12 R11 K12 + 0x543A0003, // 0199 LDINT R14 4 + 0x883C0907, // 019A GETMBR R15 R4 K7 + 0x88401340, // 019B GETMBR R16 R9 K64 + 0x7C300800, // 019C CALL R12 4 + 0x8C30170C, // 019D GETMET R12 R11 K12 + 0x543A0004, // 019E LDINT R14 5 + 0x883C0917, // 019F GETMBR R15 R4 K23 + 0x88401341, // 01A0 GETMBR R16 R9 K65 + 0x7C300800, // 01A1 CALL R12 4 + 0x7001FFDA, // 01A2 JMP #017E + 0x5820003A, // 01A3 LDCONST R8 K58 + 0xAC200200, // 01A4 CATCH R8 1 0 + 0xB0080000, // 01A5 RAISE 2 R0 R0 + 0x80040E00, // 01A6 RET 1 R7 + 0x7002002C, // 01A7 JMP #01D5 + 0x1C1C0D0E, // 01A8 EQ R7 R6 K14 + 0x781E0005, // 01A9 JMPF R7 #01B0 + 0x8C1C0906, // 01AA GETMET R7 R4 K6 + 0x8824090F, // 01AB GETMBR R9 R4 K15 + 0x542A0004, // 01AC LDINT R10 5 + 0x7C1C0600, // 01AD CALL R7 3 + 0x80040E00, // 01AE RET 1 R7 + 0x70020024, // 01AF JMP #01D5 + 0x1C1C0D10, // 01B0 EQ R7 R6 K16 + 0x781E000B, // 01B1 JMPF R7 #01BE + 0x881C0134, // 01B2 GETMBR R7 R0 K52 + 0x881C0F35, // 01B3 GETMBR R7 R7 K53 + 0x8C1C0F36, // 01B4 GETMET R7 R7 K54 + 0x7C1C0200, // 01B5 CALL R7 1 + 0x8C200906, // 01B6 GETMET R8 R4 K6 + 0x8828090F, // 01B7 GETMBR R10 R4 K15 + 0x602C000C, // 01B8 GETGBL R11 G12 + 0x5C300E00, // 01B9 MOVE R12 R7 + 0x7C2C0200, // 01BA CALL R11 1 + 0x7C200600, // 01BB CALL R8 3 + 0x80041000, // 01BC RET 1 R8 + 0x70020016, // 01BD JMP #01D5 + 0x541E0003, // 01BE LDINT R7 4 + 0x1C1C0C07, // 01BF EQ R7 R6 R7 + 0x781E0000, // 01C0 JMPF R7 #01C2 + 0x70020012, // 01C1 JMP #01D5 + 0x541E0004, // 01C2 LDINT R7 5 + 0x1C1C0C07, // 01C3 EQ R7 R6 R7 + 0x781E000F, // 01C4 JMPF R7 #01D5 + 0x881C0134, // 01C5 GETMBR R7 R0 K52 + 0x881C0F35, // 01C6 GETMBR R7 R7 K53 + 0x8C1C0F36, // 01C7 GETMET R7 R7 K54 + 0x7C1C0200, // 01C8 CALL R7 1 + 0x8C200F1C, // 01C9 GETMET R8 R7 K28 + 0x88280308, // 01CA GETMBR R10 R1 K8 + 0x7C200400, // 01CB CALL R8 2 + 0x4C240000, // 01CC LDNIL R9 + 0x1C241009, // 01CD EQ R9 R8 R9 + 0x78260000, // 01CE JMPF R9 #01D0 + 0x58200005, // 01CF LDCONST R8 K5 + 0x8C240906, // 01D0 GETMET R9 R4 K6 + 0x882C090F, // 01D1 GETMBR R11 R4 K15 + 0x5C301000, // 01D2 MOVE R12 R8 + 0x7C240600, // 01D3 CALL R9 3 + 0x80041200, // 01D4 RET 1 R9 + 0x70020108, // 01D5 JMP #02DF + 0x541E003B, // 01D6 LDINT R7 60 + 0x1C1C0A07, // 01D7 EQ R7 R5 R7 + 0x781E0000, // 01D8 JMPF R7 #01DA + 0x70020104, // 01D9 JMP #02DF + 0x541E0027, // 01DA LDINT R7 40 + 0x1C1C0A07, // 01DB EQ R7 R5 R7 + 0x781E0071, // 01DC JMPF R7 #024F + 0x1C1C0D05, // 01DD EQ R7 R6 K5 + 0x781E0005, // 01DE JMPF R7 #01E5 + 0x8C1C0906, // 01DF GETMET R7 R4 K6 + 0x8824090D, // 01E0 GETMBR R9 R4 K13 + 0x58280005, // 01E1 LDCONST R10 K5 + 0x7C1C0600, // 01E2 CALL R7 3 + 0x80040E00, // 01E3 RET 1 R7 + 0x70020068, // 01E4 JMP #024E + 0x1C1C0D0A, // 01E5 EQ R7 R6 K10 + 0x781E0005, // 01E6 JMPF R7 #01ED + 0x8C1C0906, // 01E7 GETMET R7 R4 K6 + 0x88240917, // 01E8 GETMBR R9 R4 K23 + 0x58280042, // 01E9 LDCONST R10 K66 + 0x7C1C0600, // 01EA CALL R7 3 + 0x80040E00, // 01EB RET 1 R7 + 0x70020060, // 01EC JMP #024E + 0x1C1C0D0E, // 01ED EQ R7 R6 K14 + 0x781E0006, // 01EE JMPF R7 #01F6 + 0x8C1C0906, // 01EF GETMET R7 R4 K6 + 0x8824090D, // 01F0 GETMBR R9 R4 K13 + 0x88280134, // 01F1 GETMBR R10 R0 K52 + 0x88281543, // 01F2 GETMBR R10 R10 K67 + 0x7C1C0600, // 01F3 CALL R7 3 + 0x80040E00, // 01F4 RET 1 R7 + 0x70020057, // 01F5 JMP #024E + 0x1C1C0D10, // 01F6 EQ R7 R6 K16 + 0x781E0009, // 01F7 JMPF R7 #0202 + 0x8C1C0906, // 01F8 GETMET R7 R4 K6 + 0x88240917, // 01F9 GETMBR R9 R4 K23 + 0xB82A2600, // 01FA GETNGBL R10 K19 + 0x8C281527, // 01FB GETMET R10 R10 K39 + 0x58300044, // 01FC LDCONST R12 K68 + 0x7C280400, // 01FD CALL R10 2 + 0x94281544, // 01FE GETIDX R10 R10 K68 + 0x7C1C0600, // 01FF CALL R7 3 + 0x80040E00, // 0200 RET 1 R7 + 0x7002004B, // 0201 JMP #024E + 0x541E0003, // 0202 LDINT R7 4 + 0x1C1C0C07, // 0203 EQ R7 R6 R7 + 0x781E0005, // 0204 JMPF R7 #020B + 0x8C1C0906, // 0205 GETMET R7 R4 K6 + 0x8824090D, // 0206 GETMBR R9 R4 K13 + 0x542A7FFF, // 0207 LDINT R10 32768 + 0x7C1C0600, // 0208 CALL R7 3 + 0x80040E00, // 0209 RET 1 R7 + 0x70020042, // 020A JMP #024E + 0x541E0004, // 020B LDINT R7 5 + 0x1C1C0C07, // 020C EQ R7 R6 R7 + 0x781E0009, // 020D JMPF R7 #0218 + 0x8C1C0906, // 020E GETMET R7 R4 K6 + 0x88240917, // 020F GETMBR R9 R4 K23 + 0xB82A2600, // 0210 GETNGBL R10 K19 + 0x8C281527, // 0211 GETMET R10 R10 K39 + 0x58300045, // 0212 LDCONST R12 K69 + 0x7C280400, // 0213 CALL R10 2 + 0x94281546, // 0214 GETIDX R10 R10 K70 + 0x7C1C0600, // 0215 CALL R7 3 + 0x80040E00, // 0216 RET 1 R7 + 0x70020035, // 0217 JMP #024E + 0x541E0005, // 0218 LDINT R7 6 + 0x1C1C0C07, // 0219 EQ R7 R6 R7 + 0x781E0005, // 021A JMPF R7 #0221 + 0x8C1C0906, // 021B GETMET R7 R4 K6 + 0x88240917, // 021C GETMBR R9 R4 K23 + 0x58280047, // 021D LDCONST R10 K71 + 0x7C1C0600, // 021E CALL R7 3 + 0x80040E00, // 021F RET 1 R7 + 0x7002002C, // 0220 JMP #024E + 0x541E0006, // 0221 LDINT R7 7 + 0x1C1C0C07, // 0222 EQ R7 R6 R7 + 0x781E0005, // 0223 JMPF R7 #022A + 0x8C1C0906, // 0224 GETMET R7 R4 K6 + 0x8824090D, // 0225 GETMBR R9 R4 K13 + 0x58280005, // 0226 LDCONST R10 K5 + 0x7C1C0600, // 0227 CALL R7 3 + 0x80040E00, // 0228 RET 1 R7 + 0x70020023, // 0229 JMP #024E + 0x541E0007, // 022A LDINT R7 8 + 0x1C1C0C07, // 022B EQ R7 R6 R7 + 0x781E000A, // 022C JMPF R7 #0238 + 0x8C1C0906, // 022D GETMET R7 R4 K6 + 0x88240917, // 022E GETMBR R9 R4 K23 + 0xB82A2600, // 022F GETNGBL R10 K19 + 0x8C281527, // 0230 GETMET R10 R10 K39 + 0x58300048, // 0231 LDCONST R12 K72 + 0x7C280400, // 0232 CALL R10 2 + 0x94281549, // 0233 GETIDX R10 R10 K73 + 0x9428154A, // 0234 GETIDX R10 R10 K74 + 0x7C1C0600, // 0235 CALL R7 3 + 0x80040E00, // 0236 RET 1 R7 + 0x70020015, // 0237 JMP #024E + 0x541E0008, // 0238 LDINT R7 9 + 0x1C1C0C07, // 0239 EQ R7 R6 R7 + 0x781E0005, // 023A JMPF R7 #0241 + 0x8C1C0906, // 023B GETMET R7 R4 K6 + 0x8824090D, // 023C GETMBR R9 R4 K13 + 0x58280005, // 023D LDCONST R10 K5 + 0x7C1C0600, // 023E CALL R7 3 + 0x80040E00, // 023F RET 1 R7 + 0x7002000C, // 0240 JMP #024E + 0x541E0009, // 0241 LDINT R7 10 + 0x1C1C0C07, // 0242 EQ R7 R6 R7 + 0x781E0009, // 0243 JMPF R7 #024E + 0x8C1C0906, // 0244 GETMET R7 R4 K6 + 0x88240917, // 0245 GETMBR R9 R4 K23 + 0xB82A2600, // 0246 GETNGBL R10 K19 + 0x8C281527, // 0247 GETMET R10 R10 K39 + 0x58300048, // 0248 LDCONST R12 K72 + 0x7C280400, // 0249 CALL R10 2 + 0x94281549, // 024A GETIDX R10 R10 K73 + 0x9428154B, // 024B GETIDX R10 R10 K75 + 0x7C1C0600, // 024C CALL R7 3 + 0x80040E00, // 024D RET 1 R7 + 0x7002008F, // 024E JMP #02DF + 0x541E003E, // 024F LDINT R7 63 + 0x1C1C0A07, // 0250 EQ R7 R5 R7 + 0x781E0000, // 0251 JMPF R7 #0253 + 0x7002008B, // 0252 JMP #02DF + 0x541E002A, // 0253 LDINT R7 43 + 0x1C1C0A07, // 0254 EQ R7 R5 R7 + 0x781E0016, // 0255 JMPF R7 #026D + 0x1C1C0D05, // 0256 EQ R7 R6 K5 + 0x781E0007, // 0257 JMPF R7 #0260 + 0x8C1C0906, // 0258 GETMET R7 R4 K6 + 0x88240917, // 0259 GETMBR R9 R4 K23 + 0xB82A2600, // 025A GETNGBL R10 K19 + 0x8C28154C, // 025B GETMET R10 R10 K76 + 0x7C280200, // 025C CALL R10 1 + 0x7C1C0600, // 025D CALL R7 3 + 0x80040E00, // 025E RET 1 R7 + 0x7002000B, // 025F JMP #026C + 0x1C1C0D0A, // 0260 EQ R7 R6 K10 + 0x781E0009, // 0261 JMPF R7 #026C + 0x8C1C094D, // 0262 GETMET R7 R4 K77 + 0x7C1C0200, // 0263 CALL R7 1 + 0x8C200F0C, // 0264 GETMET R8 R7 K12 + 0x4C280000, // 0265 LDNIL R10 + 0x882C0917, // 0266 GETMBR R11 R4 K23 + 0xB8322600, // 0267 GETNGBL R12 K19 + 0x8C30194C, // 0268 GETMET R12 R12 K76 + 0x7C300200, // 0269 CALL R12 1 + 0x7C200800, // 026A CALL R8 4 + 0x80040E00, // 026B RET 1 R7 + 0x70020071, // 026C JMP #02DF + 0x541E002B, // 026D LDINT R7 44 + 0x1C1C0A07, // 026E EQ R7 R5 R7 + 0x781E001C, // 026F JMPF R7 #028D + 0x1C1C0D05, // 0270 EQ R7 R6 K5 + 0x781E0005, // 0271 JMPF R7 #0278 + 0x8C1C0906, // 0272 GETMET R7 R4 K6 + 0x8824090F, // 0273 GETMBR R9 R4 K15 + 0x5828000A, // 0274 LDCONST R10 K10 + 0x7C1C0600, // 0275 CALL R7 3 + 0x80040E00, // 0276 RET 1 R7 + 0x70020013, // 0277 JMP #028C + 0x1C1C0D0A, // 0278 EQ R7 R6 K10 + 0x781E0005, // 0279 JMPF R7 #0280 + 0x8C1C0906, // 027A GETMET R7 R4 K6 + 0x8824090F, // 027B GETMBR R9 R4 K15 + 0x542A0003, // 027C LDINT R10 4 + 0x7C1C0600, // 027D CALL R7 3 + 0x80040E00, // 027E RET 1 R7 + 0x7002000B, // 027F JMP #028C + 0x1C1C0D0E, // 0280 EQ R7 R6 K14 + 0x781E0009, // 0281 JMPF R7 #028C + 0x8C1C094D, // 0282 GETMET R7 R4 K77 + 0x7C1C0200, // 0283 CALL R7 1 + 0x8C200F0C, // 0284 GETMET R8 R7 K12 + 0x4C280000, // 0285 LDNIL R10 + 0x8C2C0906, // 0286 GETMET R11 R4 K6 + 0x8834090F, // 0287 GETMBR R13 R4 K15 + 0x543A0003, // 0288 LDINT R14 4 + 0x7C2C0600, // 0289 CALL R11 3 + 0x7C200600, // 028A CALL R8 3 + 0x80040E00, // 028B RET 1 R7 + 0x70020051, // 028C JMP #02DF + 0x541E0030, // 028D LDINT R7 49 + 0x1C1C0A07, // 028E EQ R7 R5 R7 + 0x781E0010, // 028F JMPF R7 #02A1 + 0x1C1C0D10, // 0290 EQ R7 R6 K16 + 0x781E0005, // 0291 JMPF R7 #0298 + 0x8C1C0906, // 0292 GETMET R7 R4 K6 + 0x8824090F, // 0293 GETMBR R9 R4 K15 + 0x542A001D, // 0294 LDINT R10 30 + 0x7C1C0600, // 0295 CALL R7 3 + 0x80040E00, // 0296 RET 1 R7 + 0x70020007, // 0297 JMP #02A0 + 0x541EFFFB, // 0298 LDINT R7 65532 + 0x1C1C0C07, // 0299 EQ R7 R6 R7 + 0x781E0004, // 029A JMPF R7 #02A0 + 0x8C1C0906, // 029B GETMET R7 R4 K6 + 0x8824092B, // 029C GETMBR R9 R4 K43 + 0x58280005, // 029D LDCONST R10 K5 + 0x7C1C0600, // 029E CALL R7 3 + 0x80040E00, // 029F RET 1 R7 + 0x7002003D, // 02A0 JMP #02DF + 0x541E001C, // 02A1 LDINT R7 29 + 0x1C1C0A07, // 02A2 EQ R7 R5 R7 + 0x781E0037, // 02A3 JMPF R7 #02DC + 0x1C1C0D05, // 02A4 EQ R7 R6 K5 + 0x781E0000, // 02A5 JMPF R7 #02A7 + 0x70020033, // 02A6 JMP #02DB + 0x1C1C0D0A, // 02A7 EQ R7 R6 K10 + 0x781E0013, // 02A8 JMPF R7 #02BD + 0x8C1C0912, // 02A9 GETMET R7 R4 K18 + 0x7C1C0200, // 02AA CALL R7 1 + 0x60200010, // 02AB GETGBL R8 G16 + 0x8C24014E, // 02AC GETMET R9 R0 K78 + 0x7C240200, // 02AD CALL R9 1 + 0x7C200200, // 02AE CALL R8 1 + 0xA8020007, // 02AF EXBLK 0 #02B8 + 0x5C241000, // 02B0 MOVE R9 R8 + 0x7C240000, // 02B1 CALL R9 0 + 0x8C280F0C, // 02B2 GETMET R10 R7 K12 + 0x4C300000, // 02B3 LDNIL R12 + 0x8834092B, // 02B4 GETMBR R13 R4 K43 + 0x5C381200, // 02B5 MOVE R14 R9 + 0x7C280800, // 02B6 CALL R10 4 + 0x7001FFF7, // 02B7 JMP #02B0 + 0x5820003A, // 02B8 LDCONST R8 K58 + 0xAC200200, // 02B9 CATCH R8 1 0 + 0xB0080000, // 02BA RAISE 2 R0 R0 + 0x80040E00, // 02BB RET 1 R7 + 0x7002001D, // 02BC JMP #02DB + 0x1C1C0D0E, // 02BD EQ R7 R6 K14 + 0x781E0003, // 02BE JMPF R7 #02C3 + 0x8C1C0912, // 02BF GETMET R7 R4 K18 + 0x7C1C0200, // 02C0 CALL R7 1 + 0x80040E00, // 02C1 RET 1 R7 + 0x70020017, // 02C2 JMP #02DB + 0x1C1C0D10, // 02C3 EQ R7 R6 K16 + 0x781E0015, // 02C4 JMPF R7 #02DB + 0x881C0134, // 02C5 GETMBR R7 R0 K52 + 0x8C1C0F4F, // 02C6 GETMET R7 R7 K79 + 0x50240200, // 02C7 LDBOOL R9 1 0 + 0x7C1C0400, // 02C8 CALL R7 2 + 0x8C200912, // 02C9 GETMET R8 R4 K18 + 0x7C200200, // 02CA CALL R8 1 + 0x60240010, // 02CB GETGBL R9 G16 + 0x5C280E00, // 02CC MOVE R10 R7 + 0x7C240200, // 02CD CALL R9 1 + 0xA8020007, // 02CE EXBLK 0 #02D7 + 0x5C281200, // 02CF MOVE R10 R9 + 0x7C280000, // 02D0 CALL R10 0 + 0x8C2C110C, // 02D1 GETMET R11 R8 K12 + 0x4C340000, // 02D2 LDNIL R13 + 0x8838090D, // 02D3 GETMBR R14 R4 K13 + 0x5C3C1400, // 02D4 MOVE R15 R10 + 0x7C2C0800, // 02D5 CALL R11 4 + 0x7001FFF7, // 02D6 JMP #02CF + 0x5824003A, // 02D7 LDCONST R9 K58 + 0xAC240200, // 02D8 CATCH R9 1 0 + 0xB0080000, // 02D9 RAISE 2 R0 R0 + 0x80041000, // 02DA RET 1 R8 + 0x70020002, // 02DB JMP #02DF + 0xB81E0200, // 02DC GETNGBL R7 K1 + 0x881C0F51, // 02DD GETMBR R7 R7 K81 + 0x900AA007, // 02DE SETMBR R2 K80 R7 + 0x80000000, // 02DF RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_Plugin_core_init, /* name */ + be_nested_proto( + 5, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(endpoints), + /* K2 */ be_nested_str_weak(ENDPOINTS), + /* K3 */ be_nested_str_weak(clusters), + /* K4 */ be_nested_str_weak(CLUSTERS), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080102, // 0006 GETMBR R2 R0 K2 + 0x90020202, // 0007 SETMBR R0 K1 R2 + 0x88080104, // 0008 GETMBR R2 R0 K4 + 0x90020602, // 0009 SETMBR R0 K3 R2 + 0x80000000, // 000A RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified class: Matter_Plugin_core ********************************************************************/ @@ -1392,11 +1487,111 @@ extern const bclass be_class_Matter_Plugin; be_local_class(Matter_Plugin_core, 0, &be_class_Matter_Plugin, - be_nested_map(3, + be_nested_map(5, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(read_attribute, 1), be_const_closure(Matter_Plugin_core_read_attribute_closure) }, + { be_const_key_weak(ENDPOINTS, 3), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(1, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + })) ) } )) }, + { be_const_key_weak(read_attribute, -1), be_const_closure(Matter_Plugin_core_read_attribute_closure) }, + { be_const_key_weak(invoke_request, 1), be_const_closure(Matter_Plugin_core_invoke_request_closure) }, { be_const_key_weak(init, -1), be_const_closure(Matter_Plugin_core_init_closure) }, - { be_const_key_weak(invoke_request, -1), be_const_closure(Matter_Plugin_core_invoke_request_closure) }, + { be_const_key_weak(CLUSTERS, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_map, { + be_const_map( * be_nested_map(13, + ( (struct bmapnode*) &(const bmapnode[]) { + { be_const_key_int(52, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, + { be_const_key_int(40, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(10, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + be_const_int(6), + be_const_int(7), + be_const_int(8), + be_const_int(9), + })) ) } )) }, + { be_const_key_int(43, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(2, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + })) ) } )) }, + { be_const_key_int(29, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(4, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + })) ) } )) }, + { be_const_key_int(56, 2), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(3, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(7), + })) ) } )) }, + { be_const_key_int(44, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(3, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + })) ) } )) }, + { be_const_key_int(62, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(6, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + be_const_int(5), + })) ) } )) }, + { be_const_key_int(50, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, + { be_const_key_int(60, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, + { be_const_key_int(48, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(5, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(3), + be_const_int(4), + })) ) } )) }, + { be_const_key_int(49, 6), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(2, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(3), + be_const_int(65532), + })) ) } )) }, + { be_const_key_int(63, 7), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(0, + ( (struct bvalue*) &(const bvalue[]) { + })) ) } )) }, + { be_const_key_int(51, -1), be_const_simple_instance(be_nested_simple_instance(&be_class_list, { + be_const_list( * be_nested_list(4, + ( (struct bvalue*) &(const bvalue[]) { + be_const_int(0), + be_const_int(1), + be_const_int(2), + be_const_int(8), + })) ) } )) }, + })) ) } )) }, })), be_str_weak(Matter_Plugin_core) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h index 3b4a450b0..45fcfe981 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_Session.h @@ -7,11 +7,11 @@ extern const bclass be_class_Matter_Session; /******************************************************************** -** Solidified function: get_ca_pub +** Solidified function: save ********************************************************************/ -be_local_closure(Matter_Session_get_ca_pub, /* name */ +be_local_closure(Matter_Session_save, /* name */ be_nested_proto( - 5, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -19,28 +19,345 @@ be_local_closure(Matter_Session_get_ca_pub, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(root_ca_certificate), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(parse), - /* K4 */ be_nested_str_weak(findsubval), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(__store), + /* K1 */ be_nested_str_weak(save), }), - be_str_weak(get_ca_pub), + be_str_weak(save), &be_const_str_solidified, - ( &(const binstruction[12]) { /* code */ + ( &(const binstruction[ 4]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x78060008, // 0001 JMPF R1 #000B - 0xB8060200, // 0002 GETNGBL R1 K1 - 0x88040302, // 0003 GETMBR R1 R1 K2 - 0x8C040303, // 0004 GETMET R1 R1 K3 - 0x880C0100, // 0005 GETMBR R3 R0 K0 - 0x7C040400, // 0006 CALL R1 2 - 0x8C080304, // 0007 GETMET R2 R1 K4 - 0x54120008, // 0008 LDINT R4 9 - 0x7C080400, // 0009 CALL R2 2 - 0x80040400, // 000A RET 1 R2 - 0x80000000, // 000B RET 0 + 0x8C040301, // 0001 GETMET R1 R1 K1 + 0x7C040200, // 0002 CALL R1 1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_expire_in_seconds +********************************************************************/ +be_local_closure(Matter_Session_set_expire_in_seconds, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(rtc), + /* K2 */ be_nested_str_weak(utc), + /* K3 */ be_nested_str_weak(set_expire_time), + }), + be_str_weak(set_expire_in_seconds), + &be_const_str_solidified, + ( &(const binstruction[15]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x1C0C0203, // 0001 EQ R3 R1 R3 + 0x780E0000, // 0002 JMPF R3 #0004 + 0x80000600, // 0003 RET 0 + 0x4C0C0000, // 0004 LDNIL R3 + 0x1C0C0403, // 0005 EQ R3 R2 R3 + 0x780E0003, // 0006 JMPF R3 #000B + 0xB80E0000, // 0007 GETNGBL R3 K0 + 0x8C0C0701, // 0008 GETMET R3 R3 K1 + 0x7C0C0200, // 0009 CALL R3 1 + 0x94080702, // 000A GETIDX R2 R3 K2 + 0x8C0C0103, // 000B GETMET R3 R0 K3 + 0x00140401, // 000C ADD R5 R2 R1 + 0x7C0C0400, // 000D CALL R3 2 + 0x80000000, // 000E RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_i2r_privacy +********************************************************************/ +be_local_closure(Matter_Session_get_i2r_privacy, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(_i2r_privacy), + /* K1 */ be_nested_str_weak(crypto), + /* K2 */ be_nested_str_weak(HKDF_SHA256), + /* K3 */ be_nested_str_weak(derive), + /* K4 */ be_nested_str_weak(get_i2r), + /* K5 */ be_nested_str_weak(fromstring), + /* K6 */ be_nested_str_weak(PrivacyKey), + }), + be_str_weak(get_i2r_privacy), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x4C080000, // 0001 LDNIL R2 + 0x1C040202, // 0002 EQ R1 R1 R2 + 0x7806000F, // 0003 JMPF R1 #0014 + 0xA4060200, // 0004 IMPORT R1 K1 + 0x8C080302, // 0005 GETMET R2 R1 K2 + 0x7C080200, // 0006 CALL R2 1 + 0x8C080503, // 0007 GETMET R2 R2 K3 + 0x8C100104, // 0008 GETMET R4 R0 K4 + 0x7C100200, // 0009 CALL R4 1 + 0x60140015, // 000A GETGBL R5 G21 + 0x7C140000, // 000B CALL R5 0 + 0x60180015, // 000C GETGBL R6 G21 + 0x7C180000, // 000D CALL R6 0 + 0x8C180D05, // 000E GETMET R6 R6 K5 + 0x58200006, // 000F LDCONST R8 K6 + 0x7C180400, // 0010 CALL R6 2 + 0x541E000F, // 0011 LDINT R7 16 + 0x7C080A00, // 0012 CALL R2 5 + 0x90020002, // 0013 SETMBR R0 K0 R2 + 0x88040100, // 0014 GETMBR R1 R0 K0 + 0x80040200, // 0015 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: has_expired +********************************************************************/ +be_local_closure(Matter_Session_has_expired, /* name */ + be_nested_proto( + 4, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(tasmota), + /* K1 */ be_nested_str_weak(rtc), + /* K2 */ be_nested_str_weak(utc), + /* K3 */ be_nested_str_weak(expiration), + }), + be_str_weak(has_expired), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0003, // 0002 JMPF R2 #0007 + 0xB80A0000, // 0003 GETNGBL R2 K0 + 0x8C080501, // 0004 GETMET R2 R2 K1 + 0x7C080200, // 0005 CALL R2 1 + 0x94040502, // 0006 GETIDX R1 R2 K2 + 0x88080103, // 0007 GETMBR R2 R0 K3 + 0x4C0C0000, // 0008 LDNIL R3 + 0x20080403, // 0009 NE R2 R2 R3 + 0x780A0002, // 000A JMPF R2 #000E + 0x88080103, // 000B GETMBR R2 R0 K3 + 0x28080202, // 000C GE R2 R1 R2 + 0x80040400, // 000D RET 1 R2 + 0x50080000, // 000E LDBOOL R2 0 0 + 0x80040400, // 000F RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_icac +********************************************************************/ +be_local_closure(Matter_Session_get_icac, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(icac), + }), + be_str_weak(get_icac), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_deviceid +********************************************************************/ +be_local_closure(Matter_Session_get_deviceid, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(deviceid), + }), + be_str_weak(get_deviceid), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_noc +********************************************************************/ +be_local_closure(Matter_Session_get_noc, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(noc), + }), + be_str_weak(get_noc), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: close +********************************************************************/ +be_local_closure(Matter_Session_close, /* name */ + be_nested_proto( + 9, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[24]) { /* constants */ + /* K0 */ be_nested_str_weak(_persist), + /* K1 */ be_nested_str_weak(local_session_id), + /* K2 */ be_nested_str_weak(_future_local_session_id), + /* K3 */ be_nested_str_weak(initiator_session_id), + /* K4 */ be_nested_str_weak(_future_initiator_session_id), + /* K5 */ be_nested_str_weak(source_node_id), + /* K6 */ be_nested_str_weak(counter_rcv), + /* K7 */ be_nested_str_weak(reset), + /* K8 */ be_nested_str_weak(counter_snd), + /* K9 */ be_nested_str_weak(i2rkey), + /* K10 */ be_nested_str_weak(_i2r_privacy), + /* K11 */ be_nested_str_weak(r2ikey), + /* K12 */ be_nested_str_weak(attestation_challenge), + /* K13 */ be_nested_str_weak(fabric_label), + /* K14 */ be_nested_str_weak(), + /* K15 */ be_nested_str_weak(introspect), + /* K16 */ be_nested_str_weak(members), + /* K17 */ be_nested_str_weak(get), + /* K18 */ be_nested_str_weak(function), + /* K19 */ be_nested_str_weak(instance), + /* K20 */ be_const_int(0), + /* K21 */ be_nested_str_weak(_), + /* K22 */ be_const_int(1), + /* K23 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(close), + &be_const_str_solidified, + ( &(const binstruction[59]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x88080102, // 0001 GETMBR R2 R0 K2 + 0x90020202, // 0002 SETMBR R0 K1 R2 + 0x88080104, // 0003 GETMBR R2 R0 K4 + 0x90020602, // 0004 SETMBR R0 K3 R2 + 0x4C080000, // 0005 LDNIL R2 + 0x90020A02, // 0006 SETMBR R0 K5 R2 + 0x88080106, // 0007 GETMBR R2 R0 K6 + 0x8C080507, // 0008 GETMET R2 R2 K7 + 0x7C080200, // 0009 CALL R2 1 + 0x88080108, // 000A GETMBR R2 R0 K8 + 0x8C080507, // 000B GETMET R2 R2 K7 + 0x7C080200, // 000C CALL R2 1 + 0x4C080000, // 000D LDNIL R2 + 0x90021202, // 000E SETMBR R0 K9 R2 + 0x4C080000, // 000F LDNIL R2 + 0x90021402, // 0010 SETMBR R0 K10 R2 + 0x4C080000, // 0011 LDNIL R2 + 0x90021602, // 0012 SETMBR R0 K11 R2 + 0x4C080000, // 0013 LDNIL R2 + 0x90021802, // 0014 SETMBR R0 K12 R2 + 0x90021B0E, // 0015 SETMBR R0 K13 K14 + 0xA40A1E00, // 0016 IMPORT R2 K15 + 0x600C0010, // 0017 GETGBL R3 G16 + 0x8C100510, // 0018 GETMET R4 R2 K16 + 0x5C180000, // 0019 MOVE R6 R0 + 0x7C100400, // 001A CALL R4 2 + 0x7C0C0200, // 001B CALL R3 1 + 0xA8020018, // 001C EXBLK 0 #0036 + 0x5C100600, // 001D MOVE R4 R3 + 0x7C100000, // 001E CALL R4 0 + 0x8C140511, // 001F GETMET R5 R2 K17 + 0x5C1C0000, // 0020 MOVE R7 R0 + 0x5C200800, // 0021 MOVE R8 R4 + 0x7C140600, // 0022 CALL R5 3 + 0x60180004, // 0023 GETGBL R6 G4 + 0x5C1C0A00, // 0024 MOVE R7 R5 + 0x7C180200, // 0025 CALL R6 1 + 0x20180D12, // 0026 NE R6 R6 K18 + 0x781A000C, // 0027 JMPF R6 #0035 + 0x60180004, // 0028 GETGBL R6 G4 + 0x5C1C0A00, // 0029 MOVE R7 R5 + 0x7C180200, // 002A CALL R6 1 + 0x20180D13, // 002B NE R6 R6 K19 + 0x781A0007, // 002C JMPF R6 #0035 + 0x94180914, // 002D GETIDX R6 R4 K20 + 0x1C180D15, // 002E EQ R6 R6 K21 + 0x781A0004, // 002F JMPF R6 #0035 + 0x94180916, // 0030 GETIDX R6 R4 K22 + 0x20180D15, // 0031 NE R6 R6 K21 + 0x781A0001, // 0032 JMPF R6 #0035 + 0x4C180000, // 0033 LDNIL R6 + 0x90000806, // 0034 SETMBR R0 R4 R6 + 0x7001FFE6, // 0035 JMP #001D + 0x580C0017, // 0036 LDCONST R3 K23 + 0xAC0C0200, // 0037 CATCH R3 1 0 + 0xB0080000, // 0038 RAISE 2 R0 R0 + 0x90020001, // 0039 SETMBR R0 K0 R1 + 0x80000000, // 003A RET 0 }) ) ); @@ -179,9 +496,9 @@ be_local_closure(Matter_Session_fromjson, /* name */ /******************************************************************** -** Solidified function: get_fabric_compressed +** Solidified function: get_ipk_epoch_key ********************************************************************/ -be_local_closure(Matter_Session_get_fabric_compressed, /* name */ +be_local_closure(Matter_Session_get_ipk_epoch_key, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -192,136 +509,9 @@ be_local_closure(Matter_Session_get_fabric_compressed, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric_compressed), - }), - be_str_weak(get_fabric_compressed), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_expire_time -********************************************************************/ -be_local_closure(Matter_Session_set_expire_time, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(expiration), - }), - be_str_weak(set_expire_time), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x60080009, // 0000 GETGBL R2 G9 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_expire_in_seconds -********************************************************************/ -be_local_closure(Matter_Session_set_expire_in_seconds, /* name */ - be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(rtc), - /* K2 */ be_nested_str_weak(utc), - /* K3 */ be_nested_str_weak(set_expire_time), - }), - be_str_weak(set_expire_in_seconds), - &be_const_str_solidified, - ( &(const binstruction[15]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0203, // 0001 EQ R3 R1 R3 - 0x780E0000, // 0002 JMPF R3 #0004 - 0x80000600, // 0003 RET 0 - 0x4C0C0000, // 0004 LDNIL R3 - 0x1C0C0403, // 0005 EQ R3 R2 R3 - 0x780E0003, // 0006 JMPF R3 #000B - 0xB80E0000, // 0007 GETNGBL R3 K0 - 0x8C0C0701, // 0008 GETMET R3 R3 K1 - 0x7C0C0200, // 0009 CALL R3 1 - 0x94080702, // 000A GETIDX R2 R3 K2 - 0x8C0C0103, // 000B GETMET R3 R0 K3 - 0x00140401, // 000C ADD R5 R2 R1 - 0x7C0C0400, // 000D CALL R3 2 - 0x80000000, // 000E RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: set_ipk_epoch_key -********************************************************************/ -be_local_closure(Matter_Session_set_ipk_epoch_key, /* name */ - be_nested_proto( - 2, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(ipk_epoch_key), }), - be_str_weak(set_ipk_epoch_key), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_noc -********************************************************************/ -be_local_closure(Matter_Session_get_noc, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(noc), - }), - be_str_weak(get_noc), + be_str_weak(get_ipk_epoch_key), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -479,46 +669,9 @@ be_local_closure(Matter_Session_tojson, /* name */ /******************************************************************** -** Solidified function: set_fabric_device +** Solidified function: get_ac ********************************************************************/ -be_local_closure(Matter_Session_set_fabric_device, /* name */ - be_nested_proto( - 7, /* nstack */ - 4, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric), - /* K1 */ be_nested_str_weak(deviceid), - /* K2 */ be_nested_str_weak(fabric_compressed), - /* K3 */ be_nested_str_weak(__store), - /* K4 */ be_nested_str_weak(remove_redundant_session), - }), - be_str_weak(set_fabric_device), - &be_const_str_solidified, - ( &(const binstruction[ 8]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x90020403, // 0002 SETMBR R0 K2 R3 - 0x88100103, // 0003 GETMBR R4 R0 K3 - 0x8C100904, // 0004 GETMET R4 R4 K4 - 0x5C180000, // 0005 MOVE R6 R0 - 0x7C100400, // 0006 CALL R4 2 - 0x80000000, // 0007 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_deviceid -********************************************************************/ -be_local_closure(Matter_Session_get_deviceid, /* name */ +be_local_closure(Matter_Session_get_ac, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -529,9 +682,9 @@ be_local_closure(Matter_Session_get_deviceid, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(deviceid), + /* K0 */ be_nested_str_weak(attestation_challenge), }), - be_str_weak(get_deviceid), + be_str_weak(get_ac), &be_const_str_solidified, ( &(const binstruction[ 2]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 @@ -542,6 +695,34 @@ be_local_closure(Matter_Session_get_deviceid, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: set_no_expiration +********************************************************************/ +be_local_closure(Matter_Session_set_no_expiration, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(expiration), + }), + be_str_weak(set_no_expiration), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x4C040000, // 0000 LDNIL R1 + 0x90020001, // 0001 SETMBR R0 K0 R1 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: get_r2i ********************************************************************/ @@ -569,6 +750,33 @@ be_local_closure(Matter_Session_get_r2i, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: get_fabric_compressed +********************************************************************/ +be_local_closure(Matter_Session_get_fabric_compressed, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(fabric_compressed), + }), + be_str_weak(get_fabric_compressed), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: set_fabric_label ********************************************************************/ @@ -603,106 +811,26 @@ be_local_closure(Matter_Session_set_fabric_label, /* name */ /******************************************************************** -** Solidified function: close +** Solidified function: set_ipk_epoch_key ********************************************************************/ -be_local_closure(Matter_Session_close, /* name */ +be_local_closure(Matter_Session_set_ipk_epoch_key, /* name */ be_nested_proto( - 9, /* nstack */ - 1, /* argc */ + 2, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[24]) { /* constants */ - /* K0 */ be_nested_str_weak(_persist), - /* K1 */ be_nested_str_weak(local_session_id), - /* K2 */ be_nested_str_weak(_future_local_session_id), - /* K3 */ be_nested_str_weak(initiator_session_id), - /* K4 */ be_nested_str_weak(_future_initiator_session_id), - /* K5 */ be_nested_str_weak(source_node_id), - /* K6 */ be_nested_str_weak(counter_rcv), - /* K7 */ be_nested_str_weak(reset), - /* K8 */ be_nested_str_weak(counter_snd), - /* K9 */ be_nested_str_weak(i2rkey), - /* K10 */ be_nested_str_weak(_i2r_privacy), - /* K11 */ be_nested_str_weak(r2ikey), - /* K12 */ be_nested_str_weak(attestation_challenge), - /* K13 */ be_nested_str_weak(fabric_label), - /* K14 */ be_nested_str_weak(), - /* K15 */ be_nested_str_weak(introspect), - /* K16 */ be_nested_str_weak(members), - /* K17 */ be_nested_str_weak(get), - /* K18 */ be_nested_str_weak(function), - /* K19 */ be_nested_str_weak(instance), - /* K20 */ be_const_int(0), - /* K21 */ be_nested_str_weak(_), - /* K22 */ be_const_int(1), - /* K23 */ be_nested_str_weak(stop_iteration), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(ipk_epoch_key), }), - be_str_weak(close), + be_str_weak(set_ipk_epoch_key), &be_const_str_solidified, - ( &(const binstruction[59]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x88080102, // 0001 GETMBR R2 R0 K2 - 0x90020202, // 0002 SETMBR R0 K1 R2 - 0x88080104, // 0003 GETMBR R2 R0 K4 - 0x90020602, // 0004 SETMBR R0 K3 R2 - 0x4C080000, // 0005 LDNIL R2 - 0x90020A02, // 0006 SETMBR R0 K5 R2 - 0x88080106, // 0007 GETMBR R2 R0 K6 - 0x8C080507, // 0008 GETMET R2 R2 K7 - 0x7C080200, // 0009 CALL R2 1 - 0x88080108, // 000A GETMBR R2 R0 K8 - 0x8C080507, // 000B GETMET R2 R2 K7 - 0x7C080200, // 000C CALL R2 1 - 0x4C080000, // 000D LDNIL R2 - 0x90021202, // 000E SETMBR R0 K9 R2 - 0x4C080000, // 000F LDNIL R2 - 0x90021402, // 0010 SETMBR R0 K10 R2 - 0x4C080000, // 0011 LDNIL R2 - 0x90021602, // 0012 SETMBR R0 K11 R2 - 0x4C080000, // 0013 LDNIL R2 - 0x90021802, // 0014 SETMBR R0 K12 R2 - 0x90021B0E, // 0015 SETMBR R0 K13 K14 - 0xA40A1E00, // 0016 IMPORT R2 K15 - 0x600C0010, // 0017 GETGBL R3 G16 - 0x8C100510, // 0018 GETMET R4 R2 K16 - 0x5C180000, // 0019 MOVE R6 R0 - 0x7C100400, // 001A CALL R4 2 - 0x7C0C0200, // 001B CALL R3 1 - 0xA8020018, // 001C EXBLK 0 #0036 - 0x5C100600, // 001D MOVE R4 R3 - 0x7C100000, // 001E CALL R4 0 - 0x8C140511, // 001F GETMET R5 R2 K17 - 0x5C1C0000, // 0020 MOVE R7 R0 - 0x5C200800, // 0021 MOVE R8 R4 - 0x7C140600, // 0022 CALL R5 3 - 0x60180004, // 0023 GETGBL R6 G4 - 0x5C1C0A00, // 0024 MOVE R7 R5 - 0x7C180200, // 0025 CALL R6 1 - 0x20180D12, // 0026 NE R6 R6 K18 - 0x781A000C, // 0027 JMPF R6 #0035 - 0x60180004, // 0028 GETGBL R6 G4 - 0x5C1C0A00, // 0029 MOVE R7 R5 - 0x7C180200, // 002A CALL R6 1 - 0x20180D13, // 002B NE R6 R6 K19 - 0x781A0007, // 002C JMPF R6 #0035 - 0x94180914, // 002D GETIDX R6 R4 K20 - 0x1C180D15, // 002E EQ R6 R6 K21 - 0x781A0004, // 002F JMPF R6 #0035 - 0x94180916, // 0030 GETIDX R6 R4 K22 - 0x20180D15, // 0031 NE R6 R6 K21 - 0x781A0001, // 0032 JMPF R6 #0035 - 0x4C180000, // 0033 LDNIL R6 - 0x90000806, // 0034 SETMBR R0 R4 R6 - 0x7001FFE6, // 0035 JMP #001D - 0x580C0017, // 0036 LDCONST R3 K23 - 0xAC0C0200, // 0037 CATCH R3 1 0 - 0xB0080000, // 0038 RAISE 2 R0 R0 - 0x90020001, // 0039 SETMBR R0 K0 R1 - 0x80000000, // 003A RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x80000000, // 0001 RET 0 }) ) ); @@ -710,28 +838,36 @@ be_local_closure(Matter_Session_close, /* name */ /******************************************************************** -** Solidified function: set_noc +** Solidified function: set_fabric_device ********************************************************************/ -be_local_closure(Matter_Session_set_noc, /* name */ +be_local_closure(Matter_Session_set_fabric_device, /* name */ be_nested_proto( - 3, /* nstack */ - 3, /* argc */ + 7, /* nstack */ + 4, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(noc), - /* K1 */ be_nested_str_weak(icac), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(fabric), + /* K1 */ be_nested_str_weak(deviceid), + /* K2 */ be_nested_str_weak(fabric_compressed), + /* K3 */ be_nested_str_weak(__store), + /* K4 */ be_nested_str_weak(remove_redundant_session), }), - be_str_weak(set_noc), + be_str_weak(set_fabric_device), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ + ( &(const binstruction[ 8]) { /* code */ 0x90020001, // 0000 SETMBR R0 K0 R1 0x90020202, // 0001 SETMBR R0 K1 R2 - 0x80000000, // 0002 RET 0 + 0x90020403, // 0002 SETMBR R0 K2 R3 + 0x88100103, // 0003 GETMBR R4 R0 K3 + 0x8C100904, // 0004 GETMET R4 R4 K4 + 0x5C180000, // 0005 MOVE R6 R0 + 0x7C100400, // 0006 CALL R4 2 + 0x80000000, // 0007 RET 0 }) ) ); @@ -739,12 +875,12 @@ be_local_closure(Matter_Session_set_noc, /* name */ /******************************************************************** -** Solidified function: get_mode +** Solidified function: set_persist ********************************************************************/ -be_local_closure(Matter_Session_get_mode, /* name */ +be_local_closure(Matter_Session_set_persist, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 4, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -752,159 +888,16 @@ be_local_closure(Matter_Session_get_mode, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), + /* K0 */ be_nested_str_weak(_persist), }), - be_str_weak(get_mode), + be_str_weak(set_persist), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_ipk_epoch_key -********************************************************************/ -be_local_closure(Matter_Session_get_ipk_epoch_key, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(ipk_epoch_key), - }), - be_str_weak(get_ipk_epoch_key), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_ipk_group_key -********************************************************************/ -be_local_closure(Matter_Session_get_ipk_group_key, /* name */ - be_nested_proto( - 10, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(ipk_epoch_key), - /* K1 */ be_nested_str_weak(fabric_compressed), - /* K2 */ be_nested_str_weak(crypto), - /* K3 */ be_nested_str_weak(HKDF_SHA256), - /* K4 */ be_nested_str_weak(fromstring), - /* K5 */ be_nested_str_weak(__GROUP_KEY), - /* K6 */ be_nested_str_weak(derive), - }), - be_str_weak(get_ipk_group_key), - &be_const_str_solidified, - ( &(const binstruction[25]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x4C080000, // 0001 LDNIL R2 - 0x1C040202, // 0002 EQ R1 R1 R2 - 0x74060003, // 0003 JMPT R1 #0008 - 0x88040101, // 0004 GETMBR R1 R0 K1 - 0x4C080000, // 0005 LDNIL R2 - 0x1C040202, // 0006 EQ R1 R1 R2 - 0x78060001, // 0007 JMPF R1 #000A - 0x4C040000, // 0008 LDNIL R1 - 0x80040200, // 0009 RET 1 R1 - 0xA4060400, // 000A IMPORT R1 K2 - 0x8C080303, // 000B GETMET R2 R1 K3 - 0x7C080200, // 000C CALL R2 1 - 0x600C0015, // 000D GETGBL R3 G21 - 0x7C0C0000, // 000E CALL R3 0 - 0x8C0C0704, // 000F GETMET R3 R3 K4 - 0x88140105, // 0010 GETMBR R5 R0 K5 - 0x7C0C0400, // 0011 CALL R3 2 - 0x8C100506, // 0012 GETMET R4 R2 K6 - 0x88180100, // 0013 GETMBR R6 R0 K0 - 0x881C0101, // 0014 GETMBR R7 R0 K1 - 0x5C200600, // 0015 MOVE R8 R3 - 0x5426000F, // 0016 LDINT R9 16 - 0x7C100A00, // 0017 CALL R4 5 - 0x80040800, // 0018 RET 1 R4 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_pk -********************************************************************/ -be_local_closure(Matter_Session_get_pk, /* name */ - be_nested_proto( - 5, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(no_private_key), - /* K1 */ be_nested_str_weak(crypto), - /* K2 */ be_nested_str_weak(random), - }), - be_str_weak(get_pk), - &be_const_str_solidified, - ( &(const binstruction[ 9]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x74060004, // 0001 JMPT R1 #0007 - 0xA4060200, // 0002 IMPORT R1 K1 - 0x8C080302, // 0003 GETMET R2 R1 K2 - 0x5412001F, // 0004 LDINT R4 32 - 0x7C080400, // 0005 CALL R2 2 - 0x90020002, // 0006 SETMBR R0 K0 R2 - 0x88040100, // 0007 GETMBR R1 R0 K0 - 0x80040200, // 0008 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_ac -********************************************************************/ -be_local_closure(Matter_Session_get_ac, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(attestation_challenge), - }), - be_str_weak(get_ac), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0x60080017, // 0000 GETGBL R2 G23 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x80000000, // 0004 RET 0 }) ) ); @@ -1020,63 +1013,6 @@ be_local_closure(Matter_Session_gen_CSR, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: set_persist -********************************************************************/ -be_local_closure(Matter_Session_set_persist, /* name */ - be_nested_proto( - 4, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_persist), - }), - be_str_weak(set_persist), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x60080017, // 0000 GETGBL R2 G23 - 0x5C0C0200, // 0001 MOVE R3 R1 - 0x7C080200, // 0002 CALL R2 1 - 0x90020002, // 0003 SETMBR R0 K0 R2 - 0x80000000, // 0004 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_icac -********************************************************************/ -be_local_closure(Matter_Session_get_icac, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(icac), - }), - be_str_weak(get_icac), - &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: set_ca ********************************************************************/ @@ -1105,12 +1041,12 @@ be_local_closure(Matter_Session_set_ca, /* name */ /******************************************************************** -** Solidified function: get_fabric +** Solidified function: set_expire_time ********************************************************************/ -be_local_closure(Matter_Session_get_fabric, /* name */ +be_local_closure(Matter_Session_set_expire_time, /* name */ be_nested_proto( - 2, /* nstack */ - 1, /* argc */ + 4, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1118,13 +1054,16 @@ be_local_closure(Matter_Session_get_fabric, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(fabric), + /* K0 */ be_nested_str_weak(expiration), }), - be_str_weak(get_fabric), + be_str_weak(set_expire_time), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x80040200, // 0001 RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0x60080009, // 0000 GETGBL R2 G9 + 0x5C0C0200, // 0001 MOVE R3 R1 + 0x7C080200, // 0002 CALL R2 1 + 0x90020002, // 0003 SETMBR R0 K0 R2 + 0x80000000, // 0004 RET 0 }) ) ); @@ -1159,43 +1098,35 @@ be_local_closure(Matter_Session_get_i2r, /* name */ /******************************************************************** -** Solidified function: has_expired +** Solidified function: set_keys ********************************************************************/ -be_local_closure(Matter_Session_has_expired, /* name */ +be_local_closure(Matter_Session_set_keys, /* name */ be_nested_proto( - 4, /* nstack */ - 2, /* argc */ + 6, /* nstack */ + 5, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(tasmota), - /* K1 */ be_nested_str_weak(rtc), - /* K2 */ be_nested_str_weak(utc), - /* K3 */ be_nested_str_weak(expiration), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(i2rkey), + /* K1 */ be_nested_str_weak(_i2r_privacy), + /* K2 */ be_nested_str_weak(r2ikey), + /* K3 */ be_nested_str_weak(attestation_challenge), + /* K4 */ be_nested_str_weak(session_timestamp), }), - be_str_weak(has_expired), + be_str_weak(set_keys), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0003, // 0002 JMPF R2 #0007 - 0xB80A0000, // 0003 GETNGBL R2 K0 - 0x8C080501, // 0004 GETMET R2 R2 K1 - 0x7C080200, // 0005 CALL R2 1 - 0x94040502, // 0006 GETIDX R1 R2 K2 - 0x88080103, // 0007 GETMBR R2 R0 K3 - 0x4C0C0000, // 0008 LDNIL R3 - 0x20080403, // 0009 NE R2 R2 R3 - 0x780A0002, // 000A JMPF R2 #000E - 0x88080103, // 000B GETMBR R2 R0 K3 - 0x28080202, // 000C GE R2 R1 R2 - 0x80040400, // 000D RET 1 R2 - 0x50080000, // 000E LDBOOL R2 0 0 - 0x80040400, // 000F RET 1 R2 + ( &(const binstruction[ 7]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x4C140000, // 0001 LDNIL R5 + 0x90020205, // 0002 SETMBR R0 K1 R5 + 0x90020402, // 0003 SETMBR R0 K2 R2 + 0x90020603, // 0004 SETMBR R0 K3 R3 + 0x90020804, // 0005 SETMBR R0 K4 R4 + 0x80000000, // 0006 RET 0 }) ) ); @@ -1230,26 +1161,76 @@ be_local_closure(Matter_Session_get_ca, /* name */ /******************************************************************** -** Solidified function: set_mode +** Solidified function: get_pk ********************************************************************/ -be_local_closure(Matter_Session_set_mode, /* name */ +be_local_closure(Matter_Session_get_pk, /* name */ be_nested_proto( - 2, /* nstack */ - 2, /* argc */ + 5, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(mode), + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(no_private_key), + /* K1 */ be_nested_str_weak(crypto), + /* K2 */ be_nested_str_weak(random), }), - be_str_weak(set_mode), + be_str_weak(get_pk), &be_const_str_solidified, - ( &(const binstruction[ 2]) { /* code */ - 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x80000000, // 0001 RET 0 + ( &(const binstruction[ 9]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x74060004, // 0001 JMPT R1 #0007 + 0xA4060200, // 0002 IMPORT R1 K1 + 0x8C080302, // 0003 GETMET R2 R1 K2 + 0x5412001F, // 0004 LDINT R4 32 + 0x7C080400, // 0005 CALL R2 2 + 0x90020002, // 0006 SETMBR R0 K0 R2 + 0x88040100, // 0007 GETMBR R1 R0 K0 + 0x80040200, // 0008 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_ca_pub +********************************************************************/ +be_local_closure(Matter_Session_get_ca_pub, /* name */ + be_nested_proto( + 5, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(root_ca_certificate), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(parse), + /* K4 */ be_nested_str_weak(findsubval), + }), + be_str_weak(get_ca_pub), + &be_const_str_solidified, + ( &(const binstruction[12]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x78060008, // 0001 JMPF R1 #000B + 0xB8060200, // 0002 GETNGBL R1 K1 + 0x88040302, // 0003 GETMBR R1 R1 K2 + 0x8C040303, // 0004 GETMET R1 R1 K3 + 0x880C0100, // 0005 GETMBR R3 R0 K0 + 0x7C040400, // 0006 CALL R1 2 + 0x8C080304, // 0007 GETMET R2 R1 K4 + 0x54120008, // 0008 LDINT R4 9 + 0x7C080400, // 0009 CALL R2 2 + 0x80040400, // 000A RET 1 R2 + 0x80000000, // 000B RET 0 }) ) ); @@ -1318,11 +1299,11 @@ be_local_closure(Matter_Session_init, /* name */ /******************************************************************** -** Solidified function: get_i2r_privacy +** Solidified function: get_ipk_group_key ********************************************************************/ -be_local_closure(Matter_Session_get_i2r_privacy, /* name */ +be_local_closure(Matter_Session_get_ipk_group_key, /* name */ be_nested_proto( - 9, /* nstack */ + 10, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1331,39 +1312,42 @@ be_local_closure(Matter_Session_get_i2r_privacy, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(_i2r_privacy), - /* K1 */ be_nested_str_weak(crypto), - /* K2 */ be_nested_str_weak(HKDF_SHA256), - /* K3 */ be_nested_str_weak(derive), - /* K4 */ be_nested_str_weak(get_i2r), - /* K5 */ be_nested_str_weak(fromstring), - /* K6 */ be_nested_str_weak(PrivacyKey), + /* K0 */ be_nested_str_weak(ipk_epoch_key), + /* K1 */ be_nested_str_weak(fabric_compressed), + /* K2 */ be_nested_str_weak(crypto), + /* K3 */ be_nested_str_weak(HKDF_SHA256), + /* K4 */ be_nested_str_weak(fromstring), + /* K5 */ be_nested_str_weak(__GROUP_KEY), + /* K6 */ be_nested_str_weak(derive), }), - be_str_weak(get_i2r_privacy), + be_str_weak(get_ipk_group_key), &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ + ( &(const binstruction[25]) { /* code */ 0x88040100, // 0000 GETMBR R1 R0 K0 0x4C080000, // 0001 LDNIL R2 0x1C040202, // 0002 EQ R1 R1 R2 - 0x7806000F, // 0003 JMPF R1 #0014 - 0xA4060200, // 0004 IMPORT R1 K1 - 0x8C080302, // 0005 GETMET R2 R1 K2 - 0x7C080200, // 0006 CALL R2 1 - 0x8C080503, // 0007 GETMET R2 R2 K3 - 0x8C100104, // 0008 GETMET R4 R0 K4 - 0x7C100200, // 0009 CALL R4 1 - 0x60140015, // 000A GETGBL R5 G21 - 0x7C140000, // 000B CALL R5 0 - 0x60180015, // 000C GETGBL R6 G21 - 0x7C180000, // 000D CALL R6 0 - 0x8C180D05, // 000E GETMET R6 R6 K5 - 0x58200006, // 000F LDCONST R8 K6 - 0x7C180400, // 0010 CALL R6 2 - 0x541E000F, // 0011 LDINT R7 16 - 0x7C080A00, // 0012 CALL R2 5 - 0x90020002, // 0013 SETMBR R0 K0 R2 - 0x88040100, // 0014 GETMBR R1 R0 K0 - 0x80040200, // 0015 RET 1 R1 + 0x74060003, // 0003 JMPT R1 #0008 + 0x88040101, // 0004 GETMBR R1 R0 K1 + 0x4C080000, // 0005 LDNIL R2 + 0x1C040202, // 0006 EQ R1 R1 R2 + 0x78060001, // 0007 JMPF R1 #000A + 0x4C040000, // 0008 LDNIL R1 + 0x80040200, // 0009 RET 1 R1 + 0xA4060400, // 000A IMPORT R1 K2 + 0x8C080303, // 000B GETMET R2 R1 K3 + 0x7C080200, // 000C CALL R2 1 + 0x600C0015, // 000D GETGBL R3 G21 + 0x7C0C0000, // 000E CALL R3 0 + 0x8C0C0704, // 000F GETMET R3 R3 K4 + 0x88140105, // 0010 GETMBR R5 R0 K5 + 0x7C0C0400, // 0011 CALL R3 2 + 0x8C100506, // 0012 GETMET R4 R2 K6 + 0x88180100, // 0013 GETMBR R6 R0 K0 + 0x881C0101, // 0014 GETMBR R7 R0 K1 + 0x5C200600, // 0015 MOVE R8 R3 + 0x5426000F, // 0016 LDINT R9 16 + 0x7C100A00, // 0017 CALL R4 5 + 0x80040800, // 0018 RET 1 R4 }) ) ); @@ -1371,12 +1355,12 @@ be_local_closure(Matter_Session_get_i2r_privacy, /* name */ /******************************************************************** -** Solidified function: save +** Solidified function: set_noc ********************************************************************/ -be_local_closure(Matter_Session_save, /* name */ +be_local_closure(Matter_Session_set_noc, /* name */ be_nested_proto( 3, /* nstack */ - 1, /* argc */ + 3, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ @@ -1384,16 +1368,15 @@ be_local_closure(Matter_Session_save, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(__store), - /* K1 */ be_nested_str_weak(save), + /* K0 */ be_nested_str_weak(noc), + /* K1 */ be_nested_str_weak(icac), }), - be_str_weak(save), + be_str_weak(set_noc), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x88040100, // 0000 GETMBR R1 R0 K0 - 0x8C040301, // 0001 GETMET R1 R1 K1 - 0x7C040200, // 0002 CALL R1 1 - 0x80000000, // 0003 RET 0 + ( &(const binstruction[ 3]) { /* code */ + 0x90020001, // 0000 SETMBR R0 K0 R1 + 0x90020202, // 0001 SETMBR R0 K1 R2 + 0x80000000, // 0002 RET 0 }) ) ); @@ -1401,9 +1384,9 @@ be_local_closure(Matter_Session_save, /* name */ /******************************************************************** -** Solidified function: set_no_expiration +** Solidified function: get_fabric ********************************************************************/ -be_local_closure(Matter_Session_set_no_expiration, /* name */ +be_local_closure(Matter_Session_get_fabric, /* name */ be_nested_proto( 2, /* nstack */ 1, /* argc */ @@ -1414,14 +1397,13 @@ be_local_closure(Matter_Session_set_no_expiration, /* name */ NULL, /* no sub protos */ 1, /* has constants */ ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(expiration), + /* K0 */ be_nested_str_weak(fabric), }), - be_str_weak(set_no_expiration), + be_str_weak(get_fabric), &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x4C040000, // 0000 LDNIL R1 - 0x90020001, // 0001 SETMBR R0 K0 R1 - 0x80000000, // 0002 RET 0 + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 }) ) ); @@ -1429,35 +1411,53 @@ be_local_closure(Matter_Session_set_no_expiration, /* name */ /******************************************************************** -** Solidified function: set_keys +** Solidified function: get_mode ********************************************************************/ -be_local_closure(Matter_Session_set_keys, /* name */ +be_local_closure(Matter_Session_get_mode, /* name */ be_nested_proto( - 6, /* nstack */ - 5, /* argc */ + 2, /* nstack */ + 1, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(i2rkey), - /* K1 */ be_nested_str_weak(_i2r_privacy), - /* K2 */ be_nested_str_weak(r2ikey), - /* K3 */ be_nested_str_weak(attestation_challenge), - /* K4 */ be_nested_str_weak(session_timestamp), + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(mode), }), - be_str_weak(set_keys), + be_str_weak(get_mode), &be_const_str_solidified, - ( &(const binstruction[ 7]) { /* code */ + ( &(const binstruction[ 2]) { /* code */ + 0x88040100, // 0000 GETMBR R1 R0 K0 + 0x80040200, // 0001 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: set_mode +********************************************************************/ +be_local_closure(Matter_Session_set_mode, /* name */ + be_nested_proto( + 2, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(mode), + }), + be_str_weak(set_mode), + &be_const_str_solidified, + ( &(const binstruction[ 2]) { /* code */ 0x90020001, // 0000 SETMBR R0 K0 R1 - 0x4C140000, // 0001 LDNIL R5 - 0x90020205, // 0002 SETMBR R0 K1 R5 - 0x90020402, // 0003 SETMBR R0 K2 R2 - 0x90020603, // 0004 SETMBR R0 K3 R3 - 0x90020804, // 0005 SETMBR R0 K4 R4 - 0x80000000, // 0006 RET 0 + 0x80000000, // 0001 RET 0 }) ) ); @@ -1468,81 +1468,82 @@ be_local_closure(Matter_Session_set_keys, /* name */ ** Solidified class: Matter_Session ********************************************************************/ be_local_class(Matter_Session, - 35, + 36, NULL, - be_nested_map(71, + be_nested_map(72, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(get_ca_pub, -1), be_const_closure(Matter_Session_get_ca_pub_closure) }, - { be_const_key_weak(source_node_id, -1), be_const_var(5) }, - { be_const_key_weak(breadcrumb, -1), be_const_var(17) }, - { be_const_key_weak(set_expire_time, 55), be_const_closure(Matter_Session_set_expire_time_closure) }, - { be_const_key_weak(attestation_challenge, 70), be_const_var(15) }, - { be_const_key_weak(set_no_expiration, -1), be_const_closure(Matter_Session_set_no_expiration_closure) }, - { be_const_key_weak(_i2r_privacy, 51), be_const_var(14) }, - { be_const_key_weak(set_expire_in_seconds, -1), be_const_closure(Matter_Session_set_expire_in_seconds_closure) }, - { be_const_key_weak(set_ipk_epoch_key, -1), be_const_closure(Matter_Session_set_ipk_epoch_key_closure) }, - { be_const_key_weak(deviceid, -1), be_const_var(27) }, - { be_const_key_weak(get_noc, -1), be_const_closure(Matter_Session_get_noc_closure) }, - { be_const_key_weak(tojson, -1), be_const_closure(Matter_Session_tojson_closure) }, { be_const_key_weak(save, -1), be_const_closure(Matter_Session_save_closure) }, - { be_const_key_weak(get_i2r_privacy, 43), be_const_closure(Matter_Session_get_i2r_privacy_closure) }, - { be_const_key_weak(set_fabric_device, -1), be_const_closure(Matter_Session_set_fabric_device_closure) }, - { be_const_key_weak(get_deviceid, -1), be_const_closure(Matter_Session_get_deviceid_closure) }, - { be_const_key_weak(r2ikey, -1), be_const_var(13) }, - { be_const_key_weak(fromjson, 2), be_const_static_closure(Matter_Session_fromjson_closure) }, - { be_const_key_weak(set_fabric_label, -1), be_const_closure(Matter_Session_set_fabric_label_closure) }, - { be_const_key_weak(no_private_key, 50), be_const_var(18) }, - { be_const_key_weak(i2rkey, -1), be_const_var(12) }, - { be_const_key_weak(__CASE, -1), be_const_int(2) }, - { be_const_key_weak(local_session_id, 20), be_const_var(2) }, - { be_const_key_weak(set_noc, -1), be_const_closure(Matter_Session_set_noc_closure) }, - { be_const_key_weak(get_mode, 27), be_const_closure(Matter_Session_get_mode_closure) }, - { be_const_key_weak(peer_node_id, 66), be_const_var(16) }, - { be_const_key_weak(_persist, 19), be_const_var(33) }, - { be_const_key_weak(set_persist, -1), be_const_closure(Matter_Session_set_persist_closure) }, - { be_const_key_weak(initiator_session_id, -1), be_const_var(3) }, - { be_const_key_weak(set_ca, 28), be_const_closure(Matter_Session_set_ca_closure) }, - { be_const_key_weak(get_ipk_epoch_key, 41), be_const_closure(Matter_Session_get_ipk_epoch_key_closure) }, - { be_const_key_weak(_future_initiator_session_id, 22), be_const_var(6) }, - { be_const_key_weak(get_ipk_group_key, 39), be_const_closure(Matter_Session_get_ipk_group_key_closure) }, - { be_const_key_weak(get_pk, 56), be_const_closure(Matter_Session_get_pk_closure) }, - { be_const_key_weak(get_ac, -1), be_const_closure(Matter_Session_get_ac_closure) }, - { be_const_key_weak(gen_CSR, 1), be_const_closure(Matter_Session_gen_CSR_closure) }, { be_const_key_weak(set_mode, -1), be_const_closure(Matter_Session_set_mode_closure) }, - { be_const_key_weak(resumption_id, 29), be_const_var(23) }, - { be_const_key_weak(get_icac, -1), be_const_closure(Matter_Session_get_icac_closure) }, - { be_const_key_weak(_Msg1, -1), be_const_var(31) }, - { be_const_key_weak(__PASE, -1), be_const_int(1) }, - { be_const_key_weak(get_ca, -1), be_const_closure(Matter_Session_get_ca_closure) }, { be_const_key_weak(root_ca_certificate, -1), be_const_var(19) }, - { be_const_key_weak(expiration, -1), be_const_var(34) }, - { be_const_key_weak(get_fabric, -1), be_const_closure(Matter_Session_get_fabric_closure) }, - { be_const_key_weak(fabric_label, -1), be_const_var(28) }, - { be_const_key_weak(_future_local_session_id, -1), be_const_var(7) }, - { be_const_key_weak(close, 45), be_const_closure(Matter_Session_close_closure) }, - { be_const_key_weak(admin_vendor, 64), be_const_var(30) }, - { be_const_key_weak(icac, -1), be_const_var(21) }, - { be_const_key_weak(counter_snd, 48), be_const_var(9) }, - { be_const_key_weak(get_i2r, 63), be_const_closure(Matter_Session_get_i2r_closure) }, + { be_const_key_weak(admin_subject, 29), be_const_var(29) }, + { be_const_key_weak(get_i2r_privacy, 25), be_const_closure(Matter_Session_get_i2r_privacy_closure) }, { be_const_key_weak(has_expired, -1), be_const_closure(Matter_Session_has_expired_closure) }, - { be_const_key_weak(__GROUP_KEY, 12), be_nested_str_weak(GroupKey_X20v1_X2E0) }, - { be_const_key_weak(session_timestamp, -1), be_const_var(4) }, - { be_const_key_weak(shared_secret, -1), be_const_var(24) }, - { be_const_key_weak(fabric_compressed, -1), be_const_var(26) }, - { be_const_key_weak(get_fabric_compressed, 36), be_const_closure(Matter_Session_get_fabric_compressed_closure) }, - { be_const_key_weak(noc, 16), be_const_var(20) }, - { be_const_key_weak(_counter_insecure_rcv, -1), be_const_var(10) }, - { be_const_key_weak(admin_subject, -1), be_const_var(29) }, - { be_const_key_weak(init, -1), be_const_closure(Matter_Session_init_closure) }, - { be_const_key_weak(ipk_epoch_key, -1), be_const_var(22) }, - { be_const_key_weak(counter_rcv, -1), be_const_var(8) }, - { be_const_key_weak(fabric, -1), be_const_var(25) }, - { be_const_key_weak(__store, 13), be_const_var(0) }, - { be_const_key_weak(mode, -1), be_const_var(1) }, + { be_const_key_weak(set_no_expiration, -1), be_const_closure(Matter_Session_set_no_expiration_closure) }, + { be_const_key_weak(get_deviceid, 61), be_const_closure(Matter_Session_get_deviceid_closure) }, + { be_const_key_weak(local_session_id, -1), be_const_var(2) }, + { be_const_key_weak(get_mode, -1), be_const_closure(Matter_Session_get_mode_closure) }, + { be_const_key_weak(set_fabric_device, -1), be_const_closure(Matter_Session_set_fabric_device_closure) }, + { be_const_key_weak(fromjson, -1), be_const_static_closure(Matter_Session_fromjson_closure) }, + { be_const_key_weak(get_ipk_epoch_key, -1), be_const_closure(Matter_Session_get_ipk_epoch_key_closure) }, + { be_const_key_weak(get_fabric, 33), be_const_closure(Matter_Session_get_fabric_closure) }, + { be_const_key_weak(tojson, -1), be_const_closure(Matter_Session_tojson_closure) }, + { be_const_key_weak(set_noc, 37), be_const_closure(Matter_Session_set_noc_closure) }, + { be_const_key_weak(get_ac, -1), be_const_closure(Matter_Session_get_ac_closure) }, { be_const_key_weak(_counter_insecure_snd, 6), be_const_var(11) }, - { be_const_key_weak(_Msg2, 5), be_const_var(32) }, - { be_const_key_weak(set_keys, -1), be_const_closure(Matter_Session_set_keys_closure) }, - { be_const_key_weak(get_r2i, -1), be_const_closure(Matter_Session_get_r2i_closure) }, + { be_const_key_weak(initiator_session_id, -1), be_const_var(3) }, + { be_const_key_weak(get_fabric_compressed, -1), be_const_closure(Matter_Session_get_fabric_compressed_closure) }, + { be_const_key_weak(set_fabric_label, -1), be_const_closure(Matter_Session_set_fabric_label_closure) }, + { be_const_key_weak(shared_secret, 8), be_const_var(24) }, + { be_const_key_weak(get_ipk_group_key, 43), be_const_closure(Matter_Session_get_ipk_group_key_closure) }, + { be_const_key_weak(init, 42), be_const_closure(Matter_Session_init_closure) }, + { be_const_key_weak(_chunked_attr_reports, -1), be_const_var(35) }, + { be_const_key_weak(set_persist, -1), be_const_closure(Matter_Session_set_persist_closure) }, + { be_const_key_weak(_future_initiator_session_id, -1), be_const_var(6) }, + { be_const_key_weak(_Msg2, -1), be_const_var(32) }, + { be_const_key_weak(fabric, -1), be_const_var(25) }, + { be_const_key_weak(close, -1), be_const_closure(Matter_Session_close_closure) }, + { be_const_key_weak(_i2r_privacy, -1), be_const_var(14) }, + { be_const_key_weak(ipk_epoch_key, -1), be_const_var(22) }, + { be_const_key_weak(get_ca, 10), be_const_closure(Matter_Session_get_ca_closure) }, + { be_const_key_weak(resumption_id, -1), be_const_var(23) }, + { be_const_key_weak(gen_CSR, 38), be_const_closure(Matter_Session_gen_CSR_closure) }, + { be_const_key_weak(source_node_id, -1), be_const_var(5) }, + { be_const_key_weak(set_ca, -1), be_const_closure(Matter_Session_set_ca_closure) }, + { be_const_key_weak(set_ipk_epoch_key, -1), be_const_closure(Matter_Session_set_ipk_epoch_key_closure) }, + { be_const_key_weak(_future_local_session_id, -1), be_const_var(7) }, + { be_const_key_weak(get_r2i, 31), be_const_closure(Matter_Session_get_r2i_closure) }, + { be_const_key_weak(icac, -1), be_const_var(21) }, + { be_const_key_weak(fabric_label, -1), be_const_var(28) }, + { be_const_key_weak(attestation_challenge, -1), be_const_var(15) }, + { be_const_key_weak(peer_node_id, 49), be_const_var(16) }, + { be_const_key_weak(get_noc, 53), be_const_closure(Matter_Session_get_noc_closure) }, + { be_const_key_weak(set_expire_time, 40), be_const_closure(Matter_Session_set_expire_time_closure) }, + { be_const_key_weak(deviceid, -1), be_const_var(27) }, + { be_const_key_weak(__CASE, -1), be_const_int(2) }, + { be_const_key_weak(get_icac, 50), be_const_closure(Matter_Session_get_icac_closure) }, + { be_const_key_weak(_Msg1, -1), be_const_var(31) }, + { be_const_key_weak(set_keys, 58), be_const_closure(Matter_Session_set_keys_closure) }, + { be_const_key_weak(noc, 23), be_const_var(20) }, + { be_const_key_weak(__PASE, -1), be_const_int(1) }, + { be_const_key_weak(breadcrumb, 26), be_const_var(17) }, + { be_const_key_weak(__GROUP_KEY, -1), be_nested_str_weak(GroupKey_X20v1_X2E0) }, + { be_const_key_weak(counter_snd, -1), be_const_var(9) }, + { be_const_key_weak(fabric_compressed, 32), be_const_var(26) }, + { be_const_key_weak(get_pk, -1), be_const_closure(Matter_Session_get_pk_closure) }, + { be_const_key_weak(expiration, -1), be_const_var(34) }, + { be_const_key_weak(r2ikey, -1), be_const_var(13) }, + { be_const_key_weak(get_ca_pub, -1), be_const_closure(Matter_Session_get_ca_pub_closure) }, + { be_const_key_weak(counter_rcv, -1), be_const_var(8) }, + { be_const_key_weak(_persist, 22), be_const_var(33) }, + { be_const_key_weak(i2rkey, 18), be_const_var(12) }, + { be_const_key_weak(session_timestamp, 15), be_const_var(4) }, + { be_const_key_weak(set_expire_in_seconds, 13), be_const_closure(Matter_Session_set_expire_in_seconds_closure) }, + { be_const_key_weak(mode, -1), be_const_var(1) }, + { be_const_key_weak(get_i2r, 9), be_const_closure(Matter_Session_get_i2r_closure) }, + { be_const_key_weak(__store, -1), be_const_var(0) }, + { be_const_key_weak(_counter_insecure_rcv, -1), be_const_var(10) }, + { be_const_key_weak(no_private_key, 2), be_const_var(18) }, + { be_const_key_weak(admin_vendor, 1), be_const_var(30) }, })), be_str_weak(Matter_Session) ); @@ -1556,6 +1557,63 @@ void be_load_Matter_Session_class(bvm *vm) { extern const bclass be_class_Matter_Session_Store; +/******************************************************************** +** Solidified function: remove_expired +********************************************************************/ +be_local_closure(Matter_Session_Store_remove_expired, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(sessions), + /* K2 */ be_nested_str_weak(has_expired), + /* K3 */ be_nested_str_weak(_persist), + /* K4 */ be_nested_str_weak(remove), + /* K5 */ be_const_int(1), + /* K6 */ be_nested_str_weak(save), + }), + be_str_weak(remove_expired), + &be_const_str_solidified, + ( &(const binstruction[26]) { /* code */ + 0x50040000, // 0000 LDBOOL R1 0 0 + 0x58080000, // 0001 LDCONST R2 K0 + 0x880C0101, // 0002 GETMBR R3 R0 K1 + 0x6010000C, // 0003 GETGBL R4 G12 + 0x88140101, // 0004 GETMBR R5 R0 K1 + 0x7C100200, // 0005 CALL R4 1 + 0x14100404, // 0006 LT R4 R2 R4 + 0x7812000D, // 0007 JMPF R4 #0016 + 0x94100602, // 0008 GETIDX R4 R3 R2 + 0x8C100902, // 0009 GETMET R4 R4 K2 + 0x7C100200, // 000A CALL R4 1 + 0x78120007, // 000B JMPF R4 #0014 + 0x94100602, // 000C GETIDX R4 R3 R2 + 0x88100903, // 000D GETMBR R4 R4 K3 + 0x78120000, // 000E JMPF R4 #0010 + 0x50040200, // 000F LDBOOL R1 1 0 + 0x8C100704, // 0010 GETMET R4 R3 K4 + 0x5C180400, // 0011 MOVE R6 R2 + 0x7C100400, // 0012 CALL R4 2 + 0x70020000, // 0013 JMP #0015 + 0x00080505, // 0014 ADD R2 R2 K5 + 0x7001FFEC, // 0015 JMP #0003 + 0x78060001, // 0016 JMPF R1 #0019 + 0x8C100106, // 0017 GETMET R4 R0 K6 + 0x7C100200, // 0018 CALL R4 1 + 0x80000000, // 0019 RET 0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: remove_redundant_session ********************************************************************/ @@ -1611,89 +1669,6 @@ be_local_closure(Matter_Session_Store_remove_redundant_session, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_Session_Store_init, /* name */ - be_nested_proto( - 2, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - }), - be_str_weak(init), - &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x90020001, // 0002 SETMBR R0 K0 R1 - 0x80000000, // 0003 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: find_session_source_id_unsecure -********************************************************************/ -be_local_closure(Matter_Session_Store_find_session_source_id_unsecure, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 8]) { /* constants */ - /* K0 */ be_nested_str_weak(get_session_by_source_node_id), - /* K1 */ be_nested_str_weak(matter), - /* K2 */ be_nested_str_weak(Session), - /* K3 */ be_const_int(0), - /* K4 */ be_nested_str_weak(source_node_id), - /* K5 */ be_nested_str_weak(sessions), - /* K6 */ be_nested_str_weak(push), - /* K7 */ be_nested_str_weak(set_expire_in_seconds), - }), - be_str_weak(find_session_source_id_unsecure), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x4C100000, // 0003 LDNIL R4 - 0x1C100604, // 0004 EQ R4 R3 R4 - 0x7812000B, // 0005 JMPF R4 #0012 - 0xB8120200, // 0006 GETNGBL R4 K1 - 0x8C100902, // 0007 GETMET R4 R4 K2 - 0x5C180000, // 0008 MOVE R6 R0 - 0x581C0003, // 0009 LDCONST R7 K3 - 0x58200003, // 000A LDCONST R8 K3 - 0x7C100800, // 000B CALL R4 4 - 0x5C0C0800, // 000C MOVE R3 R4 - 0x900E0801, // 000D SETMBR R3 K4 R1 - 0x88100105, // 000E GETMBR R4 R0 K5 - 0x8C100906, // 000F GETMET R4 R4 K6 - 0x5C180600, // 0010 MOVE R6 R3 - 0x7C100400, // 0011 CALL R4 2 - 0x8C100707, // 0012 GETMET R4 R3 K7 - 0x5C180400, // 0013 MOVE R6 R2 - 0x7C100400, // 0014 CALL R4 2 - 0x80040600, // 0015 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: add_session ********************************************************************/ @@ -1732,6 +1707,58 @@ be_local_closure(Matter_Session_Store_add_session, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: sessions_active +********************************************************************/ +be_local_closure(Matter_Session_Store_sessions_active, /* name */ + be_nested_proto( + 7, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(sessions), + /* K2 */ be_nested_str_weak(get_deviceid), + /* K3 */ be_nested_str_weak(get_fabric), + /* K4 */ be_nested_str_weak(push), + /* K5 */ be_const_int(1), + }), + be_str_weak(sessions_active), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x58080000, // 0002 LDCONST R2 K0 + 0x600C000C, // 0003 GETGBL R3 G12 + 0x88100101, // 0004 GETMBR R4 R0 K1 + 0x7C0C0200, // 0005 CALL R3 1 + 0x140C0403, // 0006 LT R3 R2 R3 + 0x780E000C, // 0007 JMPF R3 #0015 + 0x880C0101, // 0008 GETMBR R3 R0 K1 + 0x940C0602, // 0009 GETIDX R3 R3 R2 + 0x8C100702, // 000A GETMET R4 R3 K2 + 0x7C100200, // 000B CALL R4 1 + 0x78120005, // 000C JMPF R4 #0013 + 0x8C100703, // 000D GETMET R4 R3 K3 + 0x7C100200, // 000E CALL R4 1 + 0x78120002, // 000F JMPF R4 #0013 + 0x8C100304, // 0010 GETMET R4 R1 K4 + 0x5C180600, // 0011 MOVE R6 R3 + 0x7C100400, // 0012 CALL R4 2 + 0x00080505, // 0013 ADD R2 R2 K5 + 0x7001FFED, // 0014 JMP #0003 + 0x80040200, // 0015 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: every_second ********************************************************************/ @@ -1760,108 +1787,6 @@ be_local_closure(Matter_Session_Store_every_second, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: remove_session -********************************************************************/ -be_local_closure(Matter_Session_Store_remove_session, /* name */ - be_nested_proto( - 7, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(sessions), - /* K2 */ be_nested_str_weak(remove), - /* K3 */ be_const_int(1), - }), - be_str_weak(remove_session), - &be_const_str_solidified, - ( &(const binstruction[17]) { /* code */ - 0x58080000, // 0000 LDCONST R2 K0 - 0x880C0101, // 0001 GETMBR R3 R0 K1 - 0x6010000C, // 0002 GETGBL R4 G12 - 0x88140101, // 0003 GETMBR R5 R0 K1 - 0x7C100200, // 0004 CALL R4 1 - 0x14100404, // 0005 LT R4 R2 R4 - 0x78120008, // 0006 JMPF R4 #0010 - 0x94100602, // 0007 GETIDX R4 R3 R2 - 0x1C100801, // 0008 EQ R4 R4 R1 - 0x78120003, // 0009 JMPF R4 #000E - 0x8C100702, // 000A GETMET R4 R3 K2 - 0x5C180400, // 000B MOVE R6 R2 - 0x7C100400, // 000C CALL R4 2 - 0x70020000, // 000D JMP #000F - 0x00080503, // 000E ADD R2 R2 K3 - 0x7001FFF1, // 000F JMP #0002 - 0x80000000, // 0010 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: remove_expired -********************************************************************/ -be_local_closure(Matter_Session_Store_remove_expired, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(sessions), - /* K2 */ be_nested_str_weak(has_expired), - /* K3 */ be_nested_str_weak(_persist), - /* K4 */ be_nested_str_weak(remove), - /* K5 */ be_const_int(1), - /* K6 */ be_nested_str_weak(save), - }), - be_str_weak(remove_expired), - &be_const_str_solidified, - ( &(const binstruction[26]) { /* code */ - 0x50040000, // 0000 LDBOOL R1 0 0 - 0x58080000, // 0001 LDCONST R2 K0 - 0x880C0101, // 0002 GETMBR R3 R0 K1 - 0x6010000C, // 0003 GETGBL R4 G12 - 0x88140101, // 0004 GETMBR R5 R0 K1 - 0x7C100200, // 0005 CALL R4 1 - 0x14100404, // 0006 LT R4 R2 R4 - 0x7812000D, // 0007 JMPF R4 #0016 - 0x94100602, // 0008 GETIDX R4 R3 R2 - 0x8C100902, // 0009 GETMET R4 R4 K2 - 0x7C100200, // 000A CALL R4 1 - 0x78120007, // 000B JMPF R4 #0014 - 0x94100602, // 000C GETIDX R4 R3 R2 - 0x88100903, // 000D GETMBR R4 R4 K3 - 0x78120000, // 000E JMPF R4 #0010 - 0x50040200, // 000F LDBOOL R1 1 0 - 0x8C100704, // 0010 GETMET R4 R3 K4 - 0x5C180400, // 0011 MOVE R6 R2 - 0x7C100400, // 0012 CALL R4 2 - 0x70020000, // 0013 JMP #0015 - 0x00080505, // 0014 ADD R2 R2 K5 - 0x7001FFEC, // 0015 JMP #0003 - 0x78060001, // 0016 JMPF R1 #0019 - 0x8C100106, // 0017 GETMET R4 R0 K6 - 0x7C100200, // 0018 CALL R4 1 - 0x80000000, // 0019 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: save ********************************************************************/ @@ -1981,6 +1906,331 @@ be_local_closure(Matter_Session_Store_save, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: find_session_by_resumption_id +********************************************************************/ +be_local_closure(Matter_Session_Store_find_session_by_resumption_id, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(sessions), + /* K2 */ be_nested_str_weak(resumption_id), + /* K3 */ be_const_int(1), + }), + be_str_weak(find_session_by_resumption_id), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x5C080200, // 0000 MOVE R2 R1 + 0x740A0001, // 0001 JMPT R2 #0004 + 0x4C080000, // 0002 LDNIL R2 + 0x80040400, // 0003 RET 1 R2 + 0x58080000, // 0004 LDCONST R2 K0 + 0x880C0101, // 0005 GETMBR R3 R0 K1 + 0x6010000C, // 0006 GETGBL R4 G12 + 0x5C140600, // 0007 MOVE R5 R3 + 0x7C100200, // 0008 CALL R4 1 + 0x14100404, // 0009 LT R4 R2 R4 + 0x78120007, // 000A JMPF R4 #0013 + 0x94100602, // 000B GETIDX R4 R3 R2 + 0x88100902, // 000C GETMBR R4 R4 K2 + 0x1C100801, // 000D EQ R4 R4 R1 + 0x78120001, // 000E JMPF R4 #0011 + 0x94100602, // 000F GETIDX R4 R3 R2 + 0x80040800, // 0010 RET 1 R4 + 0x00080503, // 0011 ADD R2 R2 K3 + 0x7001FFF2, // 0012 JMP #0006 + 0x80000000, // 0013 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: gen_local_session_id +********************************************************************/ +be_local_closure(Matter_Session_Store_gen_local_session_id, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(crypto), + /* K1 */ be_nested_str_weak(random), + /* K2 */ be_const_int(2), + /* K3 */ be_nested_str_weak(get), + /* K4 */ be_const_int(0), + /* K5 */ be_nested_str_weak(get_session_by_local_session_id), + }), + be_str_weak(gen_local_session_id), + &be_const_str_solidified, + ( &(const binstruction[19]) { /* code */ + 0xA4060000, // 0000 IMPORT R1 K0 + 0x50080200, // 0001 LDBOOL R2 1 0 + 0x780A000E, // 0002 JMPF R2 #0012 + 0x8C080301, // 0003 GETMET R2 R1 K1 + 0x58100002, // 0004 LDCONST R4 K2 + 0x7C080400, // 0005 CALL R2 2 + 0x8C080503, // 0006 GETMET R2 R2 K3 + 0x58100004, // 0007 LDCONST R4 K4 + 0x58140002, // 0008 LDCONST R5 K2 + 0x7C080600, // 0009 CALL R2 3 + 0x8C0C0105, // 000A GETMET R3 R0 K5 + 0x5C140400, // 000B MOVE R5 R2 + 0x7C0C0400, // 000C CALL R3 2 + 0x4C100000, // 000D LDNIL R4 + 0x1C0C0604, // 000E EQ R3 R3 R4 + 0x780E0000, // 000F JMPF R3 #0011 + 0x80040400, // 0010 RET 1 R2 + 0x7001FFEE, // 0011 JMP #0001 + 0x80000000, // 0012 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: get_session_by_local_session_id +********************************************************************/ +be_local_closure(Matter_Session_Store_get_session_by_local_session_id, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + /* K1 */ be_const_int(0), + /* K2 */ be_nested_str_weak(local_session_id), + /* K3 */ be_const_int(1), + }), + be_str_weak(get_session_by_local_session_id), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x4C080000, // 0000 LDNIL R2 + 0x1C080202, // 0001 EQ R2 R1 R2 + 0x780A0001, // 0002 JMPF R2 #0005 + 0x4C080000, // 0003 LDNIL R2 + 0x80040400, // 0004 RET 1 R2 + 0x6008000C, // 0005 GETGBL R2 G12 + 0x880C0100, // 0006 GETMBR R3 R0 K0 + 0x7C080200, // 0007 CALL R2 1 + 0x580C0001, // 0008 LDCONST R3 K1 + 0x88100100, // 0009 GETMBR R4 R0 K0 + 0x14140602, // 000A LT R5 R3 R2 + 0x78160007, // 000B JMPF R5 #0014 + 0x94140803, // 000C GETIDX R5 R4 R3 + 0x88140B02, // 000D GETMBR R5 R5 K2 + 0x1C140A01, // 000E EQ R5 R5 R1 + 0x78160001, // 000F JMPF R5 #0012 + 0x94140803, // 0010 GETIDX R5 R4 R3 + 0x80040A00, // 0011 RET 1 R5 + 0x000C0703, // 0012 ADD R3 R3 K3 + 0x7001FFF5, // 0013 JMP #000A + 0x80000000, // 0014 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: init +********************************************************************/ +be_local_closure(Matter_Session_Store_init, /* name */ + be_nested_proto( + 2, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(sessions), + }), + be_str_weak(init), + &be_const_str_solidified, + ( &(const binstruction[ 4]) { /* code */ + 0x60040012, // 0000 GETGBL R1 G18 + 0x7C040000, // 0001 CALL R1 0 + 0x90020001, // 0002 SETMBR R0 K0 R1 + 0x80000000, // 0003 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: find_session_source_id_unsecure +********************************************************************/ +be_local_closure(Matter_Session_Store_find_session_source_id_unsecure, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 8]) { /* constants */ + /* K0 */ be_nested_str_weak(get_session_by_source_node_id), + /* K1 */ be_nested_str_weak(matter), + /* K2 */ be_nested_str_weak(Session), + /* K3 */ be_const_int(0), + /* K4 */ be_nested_str_weak(source_node_id), + /* K5 */ be_nested_str_weak(sessions), + /* K6 */ be_nested_str_weak(push), + /* K7 */ be_nested_str_weak(set_expire_in_seconds), + }), + be_str_weak(find_session_source_id_unsecure), + &be_const_str_solidified, + ( &(const binstruction[22]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x4C100000, // 0003 LDNIL R4 + 0x1C100604, // 0004 EQ R4 R3 R4 + 0x7812000B, // 0005 JMPF R4 #0012 + 0xB8120200, // 0006 GETNGBL R4 K1 + 0x8C100902, // 0007 GETMET R4 R4 K2 + 0x5C180000, // 0008 MOVE R6 R0 + 0x581C0003, // 0009 LDCONST R7 K3 + 0x58200003, // 000A LDCONST R8 K3 + 0x7C100800, // 000B CALL R4 4 + 0x5C0C0800, // 000C MOVE R3 R4 + 0x900E0801, // 000D SETMBR R3 K4 R1 + 0x88100105, // 000E GETMBR R4 R0 K5 + 0x8C100906, // 000F GETMET R4 R4 K6 + 0x5C180600, // 0010 MOVE R6 R3 + 0x7C100400, // 0011 CALL R4 2 + 0x8C100707, // 0012 GETMET R4 R3 K7 + 0x5C180400, // 0013 MOVE R6 R2 + 0x7C100400, // 0014 CALL R4 2 + 0x80040600, // 0015 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: remove_session +********************************************************************/ +be_local_closure(Matter_Session_Store_remove_session, /* name */ + be_nested_proto( + 7, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_const_int(0), + /* K1 */ be_nested_str_weak(sessions), + /* K2 */ be_nested_str_weak(remove), + /* K3 */ be_const_int(1), + }), + be_str_weak(remove_session), + &be_const_str_solidified, + ( &(const binstruction[17]) { /* code */ + 0x58080000, // 0000 LDCONST R2 K0 + 0x880C0101, // 0001 GETMBR R3 R0 K1 + 0x6010000C, // 0002 GETGBL R4 G12 + 0x88140101, // 0003 GETMBR R5 R0 K1 + 0x7C100200, // 0004 CALL R4 1 + 0x14100404, // 0005 LT R4 R2 R4 + 0x78120008, // 0006 JMPF R4 #0010 + 0x94100602, // 0007 GETIDX R4 R3 R2 + 0x1C100801, // 0008 EQ R4 R4 R1 + 0x78120003, // 0009 JMPF R4 #000E + 0x8C100702, // 000A GETMET R4 R3 K2 + 0x5C180400, // 000B MOVE R6 R2 + 0x7C100400, // 000C CALL R4 2 + 0x70020000, // 000D JMP #000F + 0x00080503, // 000E ADD R2 R2 K3 + 0x7001FFF1, // 000F JMP #0002 + 0x80000000, // 0010 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: create_session +********************************************************************/ +be_local_closure(Matter_Session_Store_create_session, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 6]) { /* constants */ + /* K0 */ be_nested_str_weak(get_session_by_local_session_id), + /* K1 */ be_nested_str_weak(remove_session), + /* K2 */ be_nested_str_weak(matter), + /* K3 */ be_nested_str_weak(Session), + /* K4 */ be_nested_str_weak(sessions), + /* K5 */ be_nested_str_weak(push), + }), + be_str_weak(create_session), + &be_const_str_solidified, + ( &(const binstruction[21]) { /* code */ + 0x8C0C0100, // 0000 GETMET R3 R0 K0 + 0x5C140200, // 0001 MOVE R5 R1 + 0x7C0C0400, // 0002 CALL R3 2 + 0x4C100000, // 0003 LDNIL R4 + 0x20100604, // 0004 NE R4 R3 R4 + 0x78120002, // 0005 JMPF R4 #0009 + 0x8C100101, // 0006 GETMET R4 R0 K1 + 0x5C180600, // 0007 MOVE R6 R3 + 0x7C100400, // 0008 CALL R4 2 + 0xB8120400, // 0009 GETNGBL R4 K2 + 0x8C100903, // 000A GETMET R4 R4 K3 + 0x5C180000, // 000B MOVE R6 R0 + 0x5C1C0200, // 000C MOVE R7 R1 + 0x5C200400, // 000D MOVE R8 R2 + 0x7C100800, // 000E CALL R4 4 + 0x5C0C0800, // 000F MOVE R3 R4 + 0x88100104, // 0010 GETMBR R4 R0 K4 + 0x8C100905, // 0011 GETMET R4 R4 K5 + 0x5C180600, // 0012 MOVE R6 R3 + 0x7C100400, // 0013 CALL R4 2 + 0x80040600, // 0014 RET 1 R3 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: load ********************************************************************/ @@ -2103,207 +2353,6 @@ be_local_closure(Matter_Session_Store_load, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: create_session -********************************************************************/ -be_local_closure(Matter_Session_Store_create_session, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(get_session_by_local_session_id), - /* K1 */ be_nested_str_weak(remove_session), - /* K2 */ be_nested_str_weak(matter), - /* K3 */ be_nested_str_weak(Session), - /* K4 */ be_nested_str_weak(sessions), - /* K5 */ be_nested_str_weak(push), - }), - be_str_weak(create_session), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x8C0C0100, // 0000 GETMET R3 R0 K0 - 0x5C140200, // 0001 MOVE R5 R1 - 0x7C0C0400, // 0002 CALL R3 2 - 0x4C100000, // 0003 LDNIL R4 - 0x20100604, // 0004 NE R4 R3 R4 - 0x78120002, // 0005 JMPF R4 #0009 - 0x8C100101, // 0006 GETMET R4 R0 K1 - 0x5C180600, // 0007 MOVE R6 R3 - 0x7C100400, // 0008 CALL R4 2 - 0xB8120400, // 0009 GETNGBL R4 K2 - 0x8C100903, // 000A GETMET R4 R4 K3 - 0x5C180000, // 000B MOVE R6 R0 - 0x5C1C0200, // 000C MOVE R7 R1 - 0x5C200400, // 000D MOVE R8 R2 - 0x7C100800, // 000E CALL R4 4 - 0x5C0C0800, // 000F MOVE R3 R4 - 0x88100104, // 0010 GETMBR R4 R0 K4 - 0x8C100905, // 0011 GETMET R4 R4 K5 - 0x5C180600, // 0012 MOVE R6 R3 - 0x7C100400, // 0013 CALL R4 2 - 0x80040600, // 0014 RET 1 R3 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: sessions_active -********************************************************************/ -be_local_closure(Matter_Session_Store_sessions_active, /* name */ - be_nested_proto( - 7, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_const_int(0), - /* K1 */ be_nested_str_weak(sessions), - /* K2 */ be_nested_str_weak(get_deviceid), - /* K3 */ be_nested_str_weak(get_fabric), - /* K4 */ be_nested_str_weak(push), - /* K5 */ be_const_int(1), - }), - be_str_weak(sessions_active), - &be_const_str_solidified, - ( &(const binstruction[22]) { /* code */ - 0x60040012, // 0000 GETGBL R1 G18 - 0x7C040000, // 0001 CALL R1 0 - 0x58080000, // 0002 LDCONST R2 K0 - 0x600C000C, // 0003 GETGBL R3 G12 - 0x88100101, // 0004 GETMBR R4 R0 K1 - 0x7C0C0200, // 0005 CALL R3 1 - 0x140C0403, // 0006 LT R3 R2 R3 - 0x780E000C, // 0007 JMPF R3 #0015 - 0x880C0101, // 0008 GETMBR R3 R0 K1 - 0x940C0602, // 0009 GETIDX R3 R3 R2 - 0x8C100702, // 000A GETMET R4 R3 K2 - 0x7C100200, // 000B CALL R4 1 - 0x78120005, // 000C JMPF R4 #0013 - 0x8C100703, // 000D GETMET R4 R3 K3 - 0x7C100200, // 000E CALL R4 1 - 0x78120002, // 000F JMPF R4 #0013 - 0x8C100304, // 0010 GETMET R4 R1 K4 - 0x5C180600, // 0011 MOVE R6 R3 - 0x7C100400, // 0012 CALL R4 2 - 0x00080505, // 0013 ADD R2 R2 K5 - 0x7001FFED, // 0014 JMP #0003 - 0x80040200, // 0015 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: get_session_by_local_session_id -********************************************************************/ -be_local_closure(Matter_Session_Store_get_session_by_local_session_id, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(sessions), - /* K1 */ be_const_int(0), - /* K2 */ be_nested_str_weak(local_session_id), - /* K3 */ be_const_int(1), - }), - be_str_weak(get_session_by_local_session_id), - &be_const_str_solidified, - ( &(const binstruction[21]) { /* code */ - 0x4C080000, // 0000 LDNIL R2 - 0x1C080202, // 0001 EQ R2 R1 R2 - 0x780A0001, // 0002 JMPF R2 #0005 - 0x4C080000, // 0003 LDNIL R2 - 0x80040400, // 0004 RET 1 R2 - 0x6008000C, // 0005 GETGBL R2 G12 - 0x880C0100, // 0006 GETMBR R3 R0 K0 - 0x7C080200, // 0007 CALL R2 1 - 0x580C0001, // 0008 LDCONST R3 K1 - 0x88100100, // 0009 GETMBR R4 R0 K0 - 0x14140602, // 000A LT R5 R3 R2 - 0x78160007, // 000B JMPF R5 #0014 - 0x94140803, // 000C GETIDX R5 R4 R3 - 0x88140B02, // 000D GETMBR R5 R5 K2 - 0x1C140A01, // 000E EQ R5 R5 R1 - 0x78160001, // 000F JMPF R5 #0012 - 0x94140803, // 0010 GETIDX R5 R4 R3 - 0x80040A00, // 0011 RET 1 R5 - 0x000C0703, // 0012 ADD R3 R3 K3 - 0x7001FFF5, // 0013 JMP #000A - 0x80000000, // 0014 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: gen_local_session_id -********************************************************************/ -be_local_closure(Matter_Session_Store_gen_local_session_id, /* name */ - be_nested_proto( - 6, /* nstack */ - 1, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 6]) { /* constants */ - /* K0 */ be_nested_str_weak(crypto), - /* K1 */ be_nested_str_weak(random), - /* K2 */ be_const_int(2), - /* K3 */ be_nested_str_weak(get), - /* K4 */ be_const_int(0), - /* K5 */ be_nested_str_weak(get_session_by_local_session_id), - }), - be_str_weak(gen_local_session_id), - &be_const_str_solidified, - ( &(const binstruction[19]) { /* code */ - 0xA4060000, // 0000 IMPORT R1 K0 - 0x50080200, // 0001 LDBOOL R2 1 0 - 0x780A000E, // 0002 JMPF R2 #0012 - 0x8C080301, // 0003 GETMET R2 R1 K1 - 0x58100002, // 0004 LDCONST R4 K2 - 0x7C080400, // 0005 CALL R2 2 - 0x8C080503, // 0006 GETMET R2 R2 K3 - 0x58100004, // 0007 LDCONST R4 K4 - 0x58140002, // 0008 LDCONST R5 K2 - 0x7C080600, // 0009 CALL R2 3 - 0x8C0C0105, // 000A GETMET R3 R0 K5 - 0x5C140400, // 000B MOVE R5 R2 - 0x7C0C0400, // 000C CALL R3 2 - 0x4C100000, // 000D LDNIL R4 - 0x1C0C0604, // 000E EQ R3 R3 R4 - 0x780E0000, // 000F JMPF R3 #0011 - 0x80040400, // 0010 RET 1 R2 - 0x7001FFEE, // 0011 JMP #0001 - 0x80000000, // 0012 RET 0 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified function: get_session_by_source_node_id ********************************************************************/ @@ -2359,24 +2408,25 @@ be_local_closure(Matter_Session_Store_get_session_by_source_node_id, /* name * be_local_class(Matter_Session_Store, 1, NULL, - be_nested_map(16, + be_nested_map(17, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(remove_redundant_session, 15), be_const_closure(Matter_Session_Store_remove_redundant_session_closure) }, - { be_const_key_weak(get_session_by_source_node_id, 14), be_const_closure(Matter_Session_Store_get_session_by_source_node_id_closure) }, - { be_const_key_weak(gen_local_session_id, 6), be_const_closure(Matter_Session_Store_gen_local_session_id_closure) }, - { be_const_key_weak(init, 1), be_const_closure(Matter_Session_Store_init_closure) }, - { be_const_key_weak(save, -1), be_const_closure(Matter_Session_Store_save_closure) }, - { be_const_key_weak(load, -1), be_const_closure(Matter_Session_Store_load_closure) }, - { be_const_key_weak(create_session, -1), be_const_closure(Matter_Session_Store_create_session_closure) }, - { be_const_key_weak(remove_expired, -1), be_const_closure(Matter_Session_Store_remove_expired_closure) }, - { be_const_key_weak(FILENAME, 4), be_nested_str_weak(_matter_sessions_X2Ejson) }, - { be_const_key_weak(every_second, 5), be_const_closure(Matter_Session_Store_every_second_closure) }, - { be_const_key_weak(remove_session, 2), be_const_closure(Matter_Session_Store_remove_session_closure) }, - { be_const_key_weak(sessions_active, -1), be_const_closure(Matter_Session_Store_sessions_active_closure) }, - { be_const_key_weak(sessions, -1), be_const_var(0) }, - { be_const_key_weak(get_session_by_local_session_id, -1), be_const_closure(Matter_Session_Store_get_session_by_local_session_id_closure) }, + { be_const_key_weak(remove_expired, 6), be_const_closure(Matter_Session_Store_remove_expired_closure) }, + { be_const_key_weak(remove_redundant_session, -1), be_const_closure(Matter_Session_Store_remove_redundant_session_closure) }, { be_const_key_weak(add_session, -1), be_const_closure(Matter_Session_Store_add_session_closure) }, + { be_const_key_weak(sessions, 12), be_const_var(0) }, + { be_const_key_weak(sessions_active, -1), be_const_closure(Matter_Session_Store_sessions_active_closure) }, + { be_const_key_weak(every_second, 9), be_const_closure(Matter_Session_Store_every_second_closure) }, + { be_const_key_weak(find_session_by_resumption_id, -1), be_const_closure(Matter_Session_Store_find_session_by_resumption_id_closure) }, + { be_const_key_weak(load, -1), be_const_closure(Matter_Session_Store_load_closure) }, + { be_const_key_weak(gen_local_session_id, -1), be_const_closure(Matter_Session_Store_gen_local_session_id_closure) }, + { be_const_key_weak(get_session_by_local_session_id, -1), be_const_closure(Matter_Session_Store_get_session_by_local_session_id_closure) }, + { be_const_key_weak(FILENAME, -1), be_nested_str_weak(_matter_sessions_X2Ejson) }, + { be_const_key_weak(save, 10), be_const_closure(Matter_Session_Store_save_closure) }, { be_const_key_weak(find_session_source_id_unsecure, -1), be_const_closure(Matter_Session_Store_find_session_source_id_unsecure_closure) }, + { be_const_key_weak(remove_session, -1), be_const_closure(Matter_Session_Store_remove_session_closure) }, + { be_const_key_weak(create_session, -1), be_const_closure(Matter_Session_Store_create_session_closure) }, + { be_const_key_weak(init, 7), be_const_closure(Matter_Session_Store_init_closure) }, + { be_const_key_weak(get_session_by_source_node_id, -1), be_const_closure(Matter_Session_Store_get_session_by_source_node_id_closure) }, })), be_str_weak(Matter_Session_Store) ); diff --git a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h index 13d316a47..dc225d633 100644 --- a/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h +++ b/lib/libesp32/berry_matter/src/solidify/solidified_Matter_TLV.h @@ -1434,6 +1434,45 @@ void be_load_Matter_TLV_item_class(bvm *vm) { extern const bclass be_class_Matter_TLV_list; +/******************************************************************** +** Solidified function: add_obj +********************************************************************/ +be_local_closure(Matter_TLV_list_add_obj, /* name */ + be_nested_proto( + 7, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 4]) { /* constants */ + /* K0 */ be_nested_str_weak(to_TLV), + /* K1 */ be_nested_str_weak(tag_sub), + /* K2 */ be_nested_str_weak(val), + /* K3 */ be_nested_str_weak(push), + }), + be_str_weak(add_obj), + &be_const_str_solidified, + ( &(const binstruction[11]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x200C0403, // 0001 NE R3 R2 R3 + 0x780E0006, // 0002 JMPF R3 #000A + 0x8C0C0500, // 0003 GETMET R3 R2 K0 + 0x7C0C0200, // 0004 CALL R3 1 + 0x900E0201, // 0005 SETMBR R3 K1 R1 + 0x88100102, // 0006 GETMBR R4 R0 K2 + 0x8C100903, // 0007 GETMET R4 R4 K3 + 0x5C180600, // 0008 MOVE R6 R3 + 0x7C100400, // 0009 CALL R4 2 + 0x80040000, // 000A RET 1 R0 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: add_struct ********************************************************************/ @@ -1474,117 +1513,9 @@ be_local_closure(Matter_TLV_list_add_struct, /* name */ /******************************************************************** -** Solidified function: _encode_inner +** Solidified function: push ********************************************************************/ -be_local_closure(Matter_TLV_list__encode_inner, /* name */ - be_nested_proto( - 9, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[10]) { /* constants */ - /* K0 */ be_nested_str_weak(_encode_tag), - /* K1 */ be_nested_str_weak(val), - /* K2 */ be_nested_str_weak(copy), - /* K3 */ be_nested_str_weak(sort), - /* K4 */ be_nested_str_weak(encode), - /* K5 */ be_nested_str_weak(stop_iteration), - /* K6 */ be_nested_str_weak(add), - /* K7 */ be_nested_str_weak(TLV), - /* K8 */ be_nested_str_weak(EOC), - /* K9 */ be_const_int(1), - }), - be_str_weak(_encode_inner), - &be_const_str_solidified, - ( &(const binstruction[35]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x1C0C0203, // 0001 EQ R3 R1 R3 - 0x780E0002, // 0002 JMPF R3 #0006 - 0x600C0015, // 0003 GETGBL R3 G21 - 0x7C0C0000, // 0004 CALL R3 0 - 0x5C040600, // 0005 MOVE R1 R3 - 0x8C0C0100, // 0006 GETMET R3 R0 K0 - 0x5C140200, // 0007 MOVE R5 R1 - 0x7C0C0400, // 0008 CALL R3 2 - 0x880C0101, // 0009 GETMBR R3 R0 K1 - 0x8C0C0702, // 000A GETMET R3 R3 K2 - 0x7C0C0200, // 000B CALL R3 1 - 0x780A0002, // 000C JMPF R2 #0010 - 0x8C100103, // 000D GETMET R4 R0 K3 - 0x5C180600, // 000E MOVE R6 R3 - 0x7C100400, // 000F CALL R4 2 - 0x60100010, // 0010 GETGBL R4 G16 - 0x5C140600, // 0011 MOVE R5 R3 - 0x7C100200, // 0012 CALL R4 1 - 0xA8020005, // 0013 EXBLK 0 #001A - 0x5C140800, // 0014 MOVE R5 R4 - 0x7C140000, // 0015 CALL R5 0 - 0x8C180B04, // 0016 GETMET R6 R5 K4 - 0x5C200200, // 0017 MOVE R8 R1 - 0x7C180400, // 0018 CALL R6 2 - 0x7001FFF9, // 0019 JMP #0014 - 0x58100005, // 001A LDCONST R4 K5 - 0xAC100200, // 001B CATCH R4 1 0 - 0xB0080000, // 001C RAISE 2 R0 R0 - 0x8C100306, // 001D GETMET R4 R1 K6 - 0x88180107, // 001E GETMBR R6 R0 K7 - 0x88180D08, // 001F GETMBR R6 R6 K8 - 0x581C0009, // 0020 LDCONST R7 K9 - 0x7C100600, // 0021 CALL R4 3 - 0x80040200, // 0022 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: add_array -********************************************************************/ -be_local_closure(Matter_TLV_list_add_array, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(Matter_TLV_array), - /* K2 */ be_nested_str_weak(tag_sub), - /* K3 */ be_nested_str_weak(val), - /* K4 */ be_nested_str_weak(push), - }), - be_str_weak(add_array), - &be_const_str_solidified, - ( &(const binstruction[10]) { /* code */ - 0x88080100, // 0000 GETMBR R2 R0 K0 - 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100000, // 0002 MOVE R4 R0 - 0x7C080400, // 0003 CALL R2 2 - 0x900A0401, // 0004 SETMBR R2 K2 R1 - 0x880C0103, // 0005 GETMBR R3 R0 K3 - 0x8C0C0704, // 0006 GETMET R3 R3 K4 - 0x5C140400, // 0007 MOVE R5 R2 - 0x7C0C0400, // 0008 CALL R3 2 - 0x80040400, // 0009 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: init -********************************************************************/ -be_local_closure(Matter_TLV_list_init, /* name */ +be_local_closure(Matter_TLV_list_push, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -1594,29 +1525,18 @@ be_local_closure(Matter_TLV_list_init, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 5]) { /* constants */ - /* K0 */ be_nested_str_weak(init), - /* K1 */ be_nested_str_weak(typ), - /* K2 */ be_nested_str_weak(TLV), - /* K3 */ be_nested_str_weak(LIST), - /* K4 */ be_nested_str_weak(val), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(val), + /* K1 */ be_nested_str_weak(push), }), - be_str_weak(init), + be_str_weak(push), &be_const_str_solidified, - ( &(const binstruction[13]) { /* code */ - 0x60080003, // 0000 GETGBL R2 G3 - 0x5C0C0000, // 0001 MOVE R3 R0 - 0x7C080200, // 0002 CALL R2 1 - 0x8C080500, // 0003 GETMET R2 R2 K0 - 0x5C100200, // 0004 MOVE R4 R1 - 0x7C080400, // 0005 CALL R2 2 - 0x88080102, // 0006 GETMBR R2 R0 K2 - 0x88080503, // 0007 GETMBR R2 R2 K3 - 0x90020202, // 0008 SETMBR R0 K1 R2 - 0x60080012, // 0009 GETGBL R2 G18 - 0x7C080000, // 000A CALL R2 0 - 0x90020802, // 000B SETMBR R0 K4 R2 - 0x80000000, // 000C RET 0 + ( &(const binstruction[ 5]) { /* code */ + 0x88080100, // 0000 GETMBR R2 R0 K0 + 0x8C080501, // 0001 GETMET R2 R2 K1 + 0x5C100200, // 0002 MOVE R4 R1 + 0x7C080400, // 0003 CALL R2 2 + 0x80000000, // 0004 RET 0 }) ) ); @@ -1624,28 +1544,30 @@ be_local_closure(Matter_TLV_list_init, /* name */ /******************************************************************** -** Solidified function: size +** Solidified function: getsubval ********************************************************************/ -be_local_closure(Matter_TLV_list_size, /* name */ +be_local_closure(Matter_TLV_list_getsubval, /* name */ be_nested_proto( - 3, /* nstack */ - 1, /* argc */ + 5, /* nstack */ + 2, /* argc */ 2, /* varg */ 0, /* has upvals */ NULL, /* no upvals */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(val), + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(getsub), + /* K1 */ be_nested_str_weak(val), }), - be_str_weak(size), + be_str_weak(getsubval), &be_const_str_solidified, - ( &(const binstruction[ 4]) { /* code */ - 0x6004000C, // 0000 GETGBL R1 G12 - 0x88080100, // 0001 GETMBR R2 R0 K0 - 0x7C040200, // 0002 CALL R1 1 - 0x80040200, // 0003 RET 1 R1 + ( &(const binstruction[ 5]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x7C080400, // 0002 CALL R2 2 + 0x88080501, // 0003 GETMBR R2 R2 K1 + 0x80040400, // 0004 RET 1 R2 }) ) ); @@ -1720,11 +1642,11 @@ be_local_closure(Matter_TLV_list_item, /* name */ /******************************************************************** -** Solidified function: tostring +** Solidified function: size ********************************************************************/ -be_local_closure(Matter_TLV_list_tostring, /* name */ +be_local_closure(Matter_TLV_list_size, /* name */ be_nested_proto( - 6, /* nstack */ + 3, /* nstack */ 1, /* argc */ 2, /* varg */ 0, /* has upvals */ @@ -1732,63 +1654,16 @@ be_local_closure(Matter_TLV_list_tostring, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ - /* K0 */ be_nested_str_weak(tostring_inner), - /* K1 */ be_nested_str_weak(_X5B_X5B), - /* K2 */ be_nested_str_weak(_X5D_X5D), - }), - be_str_weak(tostring), - &be_const_str_solidified, - ( &(const binstruction[ 6]) { /* code */ - 0x8C040100, // 0000 GETMET R1 R0 K0 - 0x500C0000, // 0001 LDBOOL R3 0 0 - 0x58100001, // 0002 LDCONST R4 K1 - 0x58140002, // 0003 LDCONST R5 K2 - 0x7C040800, // 0004 CALL R1 4 - 0x80040200, // 0005 RET 1 R1 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: findsub -********************************************************************/ -be_local_closure(Matter_TLV_list_findsub, /* name */ - be_nested_proto( - 6, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 3]) { /* constants */ + ( &(const bvalue[ 1]) { /* constants */ /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(tag_sub), - /* K2 */ be_nested_str_weak(stop_iteration), }), - be_str_weak(findsub), + be_str_weak(size), &be_const_str_solidified, - ( &(const binstruction[16]) { /* code */ - 0x600C0010, // 0000 GETGBL R3 G16 - 0x88100100, // 0001 GETMBR R4 R0 K0 - 0x7C0C0200, // 0002 CALL R3 1 - 0xA8020007, // 0003 EXBLK 0 #000C - 0x5C100600, // 0004 MOVE R4 R3 - 0x7C100000, // 0005 CALL R4 0 - 0x88140901, // 0006 GETMBR R5 R4 K1 - 0x1C140A01, // 0007 EQ R5 R5 R1 - 0x78160001, // 0008 JMPF R5 #000B - 0xA8040001, // 0009 EXBLK 1 1 - 0x80040800, // 000A RET 1 R4 - 0x7001FFF7, // 000B JMP #0004 - 0x580C0002, // 000C LDCONST R3 K2 - 0xAC0C0200, // 000D CATCH R3 1 0 - 0xB0080000, // 000E RAISE 2 R0 R0 - 0x80040400, // 000F RET 1 R2 + ( &(const binstruction[ 4]) { /* code */ + 0x6004000C, // 0000 GETGBL R1 G12 + 0x88080100, // 0001 GETMBR R2 R0 K0 + 0x7C040200, // 0002 CALL R1 1 + 0x80040200, // 0003 RET 1 R1 }) ) ); @@ -1831,6 +1706,37 @@ be_local_closure(Matter_TLV_list_findsubtyp, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: encode +********************************************************************/ +be_local_closure(Matter_TLV_list_encode, /* name */ + be_nested_proto( + 6, /* nstack */ + 2, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 2]) { /* constants */ + /* K0 */ be_nested_str_weak(_encode_inner), + /* K1 */ be_nested_str_weak(is_struct), + }), + be_str_weak(encode), + &be_const_str_solidified, + ( &(const binstruction[ 5]) { /* code */ + 0x8C080100, // 0000 GETMET R2 R0 K0 + 0x5C100200, // 0001 MOVE R4 R1 + 0x88140101, // 0002 GETMBR R5 R0 K1 + 0x7C080600, // 0003 CALL R2 3 + 0x80040400, // 0004 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: tostring_inner ********************************************************************/ @@ -1958,6 +1864,39 @@ be_local_closure(Matter_TLV_list_tostring_inner, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: tostring +********************************************************************/ +be_local_closure(Matter_TLV_list_tostring, /* name */ + be_nested_proto( + 6, /* nstack */ + 1, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(tostring_inner), + /* K1 */ be_nested_str_weak(_X5B_X5B), + /* K2 */ be_nested_str_weak(_X5D_X5D), + }), + be_str_weak(tostring), + &be_const_str_solidified, + ( &(const binstruction[ 6]) { /* code */ + 0x8C040100, // 0000 GETMET R1 R0 K0 + 0x500C0000, // 0001 LDBOOL R3 0 0 + 0x58100001, // 0002 LDCONST R4 K1 + 0x58140002, // 0003 LDCONST R5 K2 + 0x7C040800, // 0004 CALL R1 4 + 0x80040200, // 0005 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: findsubval ********************************************************************/ @@ -1994,60 +1933,9 @@ be_local_closure(Matter_TLV_list_findsubval, /* name */ /******************************************************************** -** Solidified function: parse +** Solidified function: init ********************************************************************/ -be_local_closure(Matter_TLV_list_parse, /* name */ - be_nested_proto( - 8, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 7]) { /* constants */ - /* K0 */ be_nested_str_weak(TLV), - /* K1 */ be_nested_str_weak(EOC), - /* K2 */ be_nested_str_weak(parse), - /* K3 */ be_nested_str_weak(next_idx), - /* K4 */ be_nested_str_weak(val), - /* K5 */ be_nested_str_weak(push), - /* K6 */ be_const_int(1), - }), - be_str_weak(parse), - &be_const_str_solidified, - ( &(const binstruction[20]) { /* code */ - 0x940C0202, // 0000 GETIDX R3 R1 R2 - 0x88100100, // 0001 GETMBR R4 R0 K0 - 0x88100901, // 0002 GETMBR R4 R4 K1 - 0x200C0604, // 0003 NE R3 R3 R4 - 0x780E000B, // 0004 JMPF R3 #0011 - 0x880C0100, // 0005 GETMBR R3 R0 K0 - 0x8C0C0702, // 0006 GETMET R3 R3 K2 - 0x5C140200, // 0007 MOVE R5 R1 - 0x5C180400, // 0008 MOVE R6 R2 - 0x5C1C0000, // 0009 MOVE R7 R0 - 0x7C0C0800, // 000A CALL R3 4 - 0x88080703, // 000B GETMBR R2 R3 K3 - 0x88100104, // 000C GETMBR R4 R0 K4 - 0x8C100905, // 000D GETMET R4 R4 K5 - 0x5C180600, // 000E MOVE R6 R3 - 0x7C100400, // 000F CALL R4 2 - 0x7001FFEE, // 0010 JMP #0000 - 0x00080506, // 0011 ADD R2 R2 K6 - 0x90020602, // 0012 SETMBR R0 K3 R2 - 0x80040400, // 0013 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: getsubval -********************************************************************/ -be_local_closure(Matter_TLV_list_getsubval, /* name */ +be_local_closure(Matter_TLV_list_init, /* name */ be_nested_proto( 5, /* nstack */ 2, /* argc */ @@ -2057,18 +1945,29 @@ be_local_closure(Matter_TLV_list_getsubval, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(getsub), - /* K1 */ be_nested_str_weak(val), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(init), + /* K1 */ be_nested_str_weak(typ), + /* K2 */ be_nested_str_weak(TLV), + /* K3 */ be_nested_str_weak(LIST), + /* K4 */ be_nested_str_weak(val), }), - be_str_weak(getsubval), + be_str_weak(init), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x7C080400, // 0002 CALL R2 2 - 0x88080501, // 0003 GETMBR R2 R2 K1 - 0x80040400, // 0004 RET 1 R2 + ( &(const binstruction[13]) { /* code */ + 0x60080003, // 0000 GETGBL R2 G3 + 0x5C0C0000, // 0001 MOVE R3 R0 + 0x7C080200, // 0002 CALL R2 1 + 0x8C080500, // 0003 GETMET R2 R2 K0 + 0x5C100200, // 0004 MOVE R4 R1 + 0x7C080400, // 0005 CALL R2 2 + 0x88080102, // 0006 GETMBR R2 R0 K2 + 0x88080503, // 0007 GETMBR R2 R2 K3 + 0x90020202, // 0008 SETMBR R0 K1 R2 + 0x60080012, // 0009 GETGBL R2 G18 + 0x7C080000, // 000A CALL R2 0 + 0x90020802, // 000B SETMBR R0 K4 R2 + 0x80000000, // 000C RET 0 }) ) ); @@ -2076,48 +1975,9 @@ be_local_closure(Matter_TLV_list_getsubval, /* name */ /******************************************************************** -** Solidified function: add_obj +** Solidified function: add_array ********************************************************************/ -be_local_closure(Matter_TLV_list_add_obj, /* name */ - be_nested_proto( - 7, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 4]) { /* constants */ - /* K0 */ be_nested_str_weak(to_TLV), - /* K1 */ be_nested_str_weak(tag_sub), - /* K2 */ be_nested_str_weak(val), - /* K3 */ be_nested_str_weak(push), - }), - be_str_weak(add_obj), - &be_const_str_solidified, - ( &(const binstruction[11]) { /* code */ - 0x4C0C0000, // 0000 LDNIL R3 - 0x200C0403, // 0001 NE R3 R2 R3 - 0x780E0006, // 0002 JMPF R3 #000A - 0x8C0C0500, // 0003 GETMET R3 R2 K0 - 0x7C0C0200, // 0004 CALL R3 1 - 0x900E0201, // 0005 SETMBR R3 K1 R1 - 0x88100102, // 0006 GETMBR R4 R0 K2 - 0x8C100903, // 0007 GETMET R4 R4 K3 - 0x5C180600, // 0008 MOVE R6 R3 - 0x7C100400, // 0009 CALL R4 2 - 0x80040000, // 000A RET 1 R0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: encode -********************************************************************/ -be_local_closure(Matter_TLV_list_encode, /* name */ +be_local_closure(Matter_TLV_list_add_array, /* name */ be_nested_proto( 6, /* nstack */ 2, /* argc */ @@ -2127,76 +1987,26 @@ be_local_closure(Matter_TLV_list_encode, /* name */ 0, /* has sup protos */ NULL, /* no sub protos */ 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_encode_inner), + ( &(const bvalue[ 5]) { /* constants */ + /* K0 */ be_nested_str_weak(TLV), + /* K1 */ be_nested_str_weak(Matter_TLV_array), + /* K2 */ be_nested_str_weak(tag_sub), + /* K3 */ be_nested_str_weak(val), + /* K4 */ be_nested_str_weak(push), }), - be_str_weak(encode), + be_str_weak(add_array), &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x50140000, // 0002 LDBOOL R5 0 0 - 0x7C080600, // 0003 CALL R2 3 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: setitem -********************************************************************/ -be_local_closure(Matter_TLV_list_setitem, /* name */ - be_nested_proto( - 4, /* nstack */ - 3, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - }), - be_str_weak(setitem), - &be_const_str_solidified, - ( &(const binstruction[ 3]) { /* code */ - 0x880C0100, // 0000 GETMBR R3 R0 K0 - 0x980C0202, // 0001 SETIDX R3 R1 R2 - 0x80000000, // 0002 RET 0 - }) - ) -); -/*******************************************************************/ - - -/******************************************************************** -** Solidified function: push -********************************************************************/ -be_local_closure(Matter_TLV_list_push, /* name */ - be_nested_proto( - 5, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 2]) { /* constants */ - /* K0 */ be_nested_str_weak(val), - /* K1 */ be_nested_str_weak(push), - }), - be_str_weak(push), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ + ( &(const binstruction[10]) { /* code */ 0x88080100, // 0000 GETMBR R2 R0 K0 0x8C080501, // 0001 GETMET R2 R2 K1 - 0x5C100200, // 0002 MOVE R4 R1 + 0x5C100000, // 0002 MOVE R4 R0 0x7C080400, // 0003 CALL R2 2 - 0x80000000, // 0004 RET 0 + 0x900A0401, // 0004 SETMBR R2 K2 R1 + 0x880C0103, // 0005 GETMBR R3 R0 K3 + 0x8C0C0704, // 0006 GETMET R3 R3 K4 + 0x5C140400, // 0007 MOVE R5 R2 + 0x7C0C0400, // 0008 CALL R3 2 + 0x80040400, // 0009 RET 1 R2 }) ) ); @@ -2255,6 +2065,197 @@ be_local_closure(Matter_TLV_list_add_TLV, /* name */ /*******************************************************************/ +/******************************************************************** +** Solidified function: setitem +********************************************************************/ +be_local_closure(Matter_TLV_list_setitem, /* name */ + be_nested_proto( + 4, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 1]) { /* constants */ + /* K0 */ be_nested_str_weak(val), + }), + be_str_weak(setitem), + &be_const_str_solidified, + ( &(const binstruction[ 3]) { /* code */ + 0x880C0100, // 0000 GETMBR R3 R0 K0 + 0x980C0202, // 0001 SETIDX R3 R1 R2 + 0x80000000, // 0002 RET 0 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: _encode_inner +********************************************************************/ +be_local_closure(Matter_TLV_list__encode_inner, /* name */ + be_nested_proto( + 9, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[10]) { /* constants */ + /* K0 */ be_nested_str_weak(_encode_tag), + /* K1 */ be_nested_str_weak(val), + /* K2 */ be_nested_str_weak(copy), + /* K3 */ be_nested_str_weak(sort), + /* K4 */ be_nested_str_weak(encode), + /* K5 */ be_nested_str_weak(stop_iteration), + /* K6 */ be_nested_str_weak(add), + /* K7 */ be_nested_str_weak(TLV), + /* K8 */ be_nested_str_weak(EOC), + /* K9 */ be_const_int(1), + }), + be_str_weak(_encode_inner), + &be_const_str_solidified, + ( &(const binstruction[35]) { /* code */ + 0x4C0C0000, // 0000 LDNIL R3 + 0x1C0C0203, // 0001 EQ R3 R1 R3 + 0x780E0002, // 0002 JMPF R3 #0006 + 0x600C0015, // 0003 GETGBL R3 G21 + 0x7C0C0000, // 0004 CALL R3 0 + 0x5C040600, // 0005 MOVE R1 R3 + 0x8C0C0100, // 0006 GETMET R3 R0 K0 + 0x5C140200, // 0007 MOVE R5 R1 + 0x7C0C0400, // 0008 CALL R3 2 + 0x880C0101, // 0009 GETMBR R3 R0 K1 + 0x8C0C0702, // 000A GETMET R3 R3 K2 + 0x7C0C0200, // 000B CALL R3 1 + 0x780A0002, // 000C JMPF R2 #0010 + 0x8C100103, // 000D GETMET R4 R0 K3 + 0x5C180600, // 000E MOVE R6 R3 + 0x7C100400, // 000F CALL R4 2 + 0x60100010, // 0010 GETGBL R4 G16 + 0x5C140600, // 0011 MOVE R5 R3 + 0x7C100200, // 0012 CALL R4 1 + 0xA8020005, // 0013 EXBLK 0 #001A + 0x5C140800, // 0014 MOVE R5 R4 + 0x7C140000, // 0015 CALL R5 0 + 0x8C180B04, // 0016 GETMET R6 R5 K4 + 0x5C200200, // 0017 MOVE R8 R1 + 0x7C180400, // 0018 CALL R6 2 + 0x7001FFF9, // 0019 JMP #0014 + 0x58100005, // 001A LDCONST R4 K5 + 0xAC100200, // 001B CATCH R4 1 0 + 0xB0080000, // 001C RAISE 2 R0 R0 + 0x8C100306, // 001D GETMET R4 R1 K6 + 0x88180107, // 001E GETMBR R6 R0 K7 + 0x88180D08, // 001F GETMBR R6 R6 K8 + 0x581C0009, // 0020 LDCONST R7 K9 + 0x7C100600, // 0021 CALL R4 3 + 0x80040200, // 0022 RET 1 R1 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: findsub +********************************************************************/ +be_local_closure(Matter_TLV_list_findsub, /* name */ + be_nested_proto( + 6, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 3]) { /* constants */ + /* K0 */ be_nested_str_weak(val), + /* K1 */ be_nested_str_weak(tag_sub), + /* K2 */ be_nested_str_weak(stop_iteration), + }), + be_str_weak(findsub), + &be_const_str_solidified, + ( &(const binstruction[16]) { /* code */ + 0x600C0010, // 0000 GETGBL R3 G16 + 0x88100100, // 0001 GETMBR R4 R0 K0 + 0x7C0C0200, // 0002 CALL R3 1 + 0xA8020007, // 0003 EXBLK 0 #000C + 0x5C100600, // 0004 MOVE R4 R3 + 0x7C100000, // 0005 CALL R4 0 + 0x88140901, // 0006 GETMBR R5 R4 K1 + 0x1C140A01, // 0007 EQ R5 R5 R1 + 0x78160001, // 0008 JMPF R5 #000B + 0xA8040001, // 0009 EXBLK 1 1 + 0x80040800, // 000A RET 1 R4 + 0x7001FFF7, // 000B JMP #0004 + 0x580C0002, // 000C LDCONST R3 K2 + 0xAC0C0200, // 000D CATCH R3 1 0 + 0xB0080000, // 000E RAISE 2 R0 R0 + 0x80040400, // 000F RET 1 R2 + }) + ) +); +/*******************************************************************/ + + +/******************************************************************** +** Solidified function: parse +********************************************************************/ +be_local_closure(Matter_TLV_list_parse, /* name */ + be_nested_proto( + 8, /* nstack */ + 3, /* argc */ + 2, /* varg */ + 0, /* has upvals */ + NULL, /* no upvals */ + 0, /* has sup protos */ + NULL, /* no sub protos */ + 1, /* has constants */ + ( &(const bvalue[ 7]) { /* constants */ + /* K0 */ be_nested_str_weak(TLV), + /* K1 */ be_nested_str_weak(EOC), + /* K2 */ be_nested_str_weak(parse), + /* K3 */ be_nested_str_weak(next_idx), + /* K4 */ be_nested_str_weak(val), + /* K5 */ be_nested_str_weak(push), + /* K6 */ be_const_int(1), + }), + be_str_weak(parse), + &be_const_str_solidified, + ( &(const binstruction[20]) { /* code */ + 0x940C0202, // 0000 GETIDX R3 R1 R2 + 0x88100100, // 0001 GETMBR R4 R0 K0 + 0x88100901, // 0002 GETMBR R4 R4 K1 + 0x200C0604, // 0003 NE R3 R3 R4 + 0x780E000B, // 0004 JMPF R3 #0011 + 0x880C0100, // 0005 GETMBR R3 R0 K0 + 0x8C0C0702, // 0006 GETMET R3 R3 K2 + 0x5C140200, // 0007 MOVE R5 R1 + 0x5C180400, // 0008 MOVE R6 R2 + 0x5C1C0000, // 0009 MOVE R7 R0 + 0x7C0C0800, // 000A CALL R3 4 + 0x88080703, // 000B GETMBR R2 R3 K3 + 0x88100104, // 000C GETMBR R4 R0 K4 + 0x8C100905, // 000D GETMET R4 R4 K5 + 0x5C180600, // 000E MOVE R6 R3 + 0x7C100400, // 000F CALL R4 2 + 0x7001FFEE, // 0010 JMP #0000 + 0x00080506, // 0011 ADD R2 R2 K6 + 0x90020602, // 0012 SETMBR R0 K3 R2 + 0x80040400, // 0013 RET 1 R2 + }) + ) +); +/*******************************************************************/ + + /******************************************************************** ** Solidified function: getsub ********************************************************************/ @@ -2297,28 +2298,29 @@ extern const bclass be_class_Matter_TLV_item; be_local_class(Matter_TLV_list, 0, &be_class_Matter_TLV_item, - be_nested_map(20, + be_nested_map(21, ( (struct bmapnode*) &(const bmapnode[]) { - { be_const_key_weak(add_struct, -1), be_const_closure(Matter_TLV_list_add_struct_closure) }, - { be_const_key_weak(getsub, -1), be_const_closure(Matter_TLV_list_getsub_closure) }, - { be_const_key_weak(add_array, -1), be_const_closure(Matter_TLV_list_add_array_closure) }, - { be_const_key_weak(add_TLV, -1), be_const_closure(Matter_TLV_list_add_TLV_closure) }, - { be_const_key_weak(size, -1), be_const_closure(Matter_TLV_list_size_closure) }, - { be_const_key_weak(add_list, 18), be_const_closure(Matter_TLV_list_add_list_closure) }, - { be_const_key_weak(item, 13), be_const_closure(Matter_TLV_list_item_closure) }, - { be_const_key_weak(findsubval, -1), be_const_closure(Matter_TLV_list_findsubval_closure) }, - { be_const_key_weak(parse, -1), be_const_closure(Matter_TLV_list_parse_closure) }, - { be_const_key_weak(findsubtyp, 3), be_const_closure(Matter_TLV_list_findsubtyp_closure) }, - { be_const_key_weak(tostring_inner, -1), be_const_closure(Matter_TLV_list_tostring_inner_closure) }, - { be_const_key_weak(encode, 7), be_const_closure(Matter_TLV_list_encode_closure) }, - { be_const_key_weak(findsub, 8), be_const_closure(Matter_TLV_list_findsub_closure) }, - { be_const_key_weak(getsubval, -1), be_const_closure(Matter_TLV_list_getsubval_closure) }, { be_const_key_weak(add_obj, -1), be_const_closure(Matter_TLV_list_add_obj_closure) }, - { be_const_key_weak(init, 11), be_const_closure(Matter_TLV_list_init_closure) }, - { be_const_key_weak(setitem, -1), be_const_closure(Matter_TLV_list_setitem_closure) }, + { be_const_key_weak(add_struct, -1), be_const_closure(Matter_TLV_list_add_struct_closure) }, { be_const_key_weak(push, -1), be_const_closure(Matter_TLV_list_push_closure) }, - { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_list_tostring_closure) }, - { be_const_key_weak(_encode_inner, 1), be_const_closure(Matter_TLV_list__encode_inner_closure) }, + { be_const_key_weak(getsubval, 20), be_const_closure(Matter_TLV_list_getsubval_closure) }, + { be_const_key_weak(getsub, -1), be_const_closure(Matter_TLV_list_getsub_closure) }, + { be_const_key_weak(parse, -1), be_const_closure(Matter_TLV_list_parse_closure) }, + { be_const_key_weak(size, -1), be_const_closure(Matter_TLV_list_size_closure) }, + { be_const_key_weak(findsubtyp, -1), be_const_closure(Matter_TLV_list_findsubtyp_closure) }, + { be_const_key_weak(encode, -1), be_const_closure(Matter_TLV_list_encode_closure) }, + { be_const_key_weak(tostring_inner, 4), be_const_closure(Matter_TLV_list_tostring_inner_closure) }, + { be_const_key_weak(tostring, 16), be_const_closure(Matter_TLV_list_tostring_closure) }, + { be_const_key_weak(findsubval, -1), be_const_closure(Matter_TLV_list_findsubval_closure) }, + { be_const_key_weak(init, -1), be_const_closure(Matter_TLV_list_init_closure) }, + { be_const_key_weak(add_array, 15), be_const_closure(Matter_TLV_list_add_array_closure) }, + { be_const_key_weak(add_TLV, 18), be_const_closure(Matter_TLV_list_add_TLV_closure) }, + { be_const_key_weak(findsub, -1), be_const_closure(Matter_TLV_list_findsub_closure) }, + { be_const_key_weak(_encode_inner, -1), be_const_closure(Matter_TLV_list__encode_inner_closure) }, + { be_const_key_weak(is_struct, -1), be_const_bool(0) }, + { be_const_key_weak(setitem, -1), be_const_closure(Matter_TLV_list_setitem_closure) }, + { be_const_key_weak(item, 5), be_const_closure(Matter_TLV_list_item_closure) }, + { be_const_key_weak(add_list, -1), be_const_closure(Matter_TLV_list_add_list_closure) }, })), be_str_weak(Matter_TLV_list) ); @@ -2407,36 +2409,6 @@ be_local_closure(Matter_TLV_struct_tostring, /* name */ /*******************************************************************/ -/******************************************************************** -** Solidified function: encode -********************************************************************/ -be_local_closure(Matter_TLV_struct_encode, /* name */ - be_nested_proto( - 6, /* nstack */ - 2, /* argc */ - 2, /* varg */ - 0, /* has upvals */ - NULL, /* no upvals */ - 0, /* has sup protos */ - NULL, /* no sub protos */ - 1, /* has constants */ - ( &(const bvalue[ 1]) { /* constants */ - /* K0 */ be_nested_str_weak(_encode_inner), - }), - be_str_weak(encode), - &be_const_str_solidified, - ( &(const binstruction[ 5]) { /* code */ - 0x8C080100, // 0000 GETMET R2 R0 K0 - 0x5C100200, // 0001 MOVE R4 R1 - 0x50140200, // 0002 LDBOOL R5 1 0 - 0x7C080600, // 0003 CALL R2 3 - 0x80040400, // 0004 RET 1 R2 - }) - ) -); -/*******************************************************************/ - - /******************************************************************** ** Solidified class: Matter_TLV_struct ********************************************************************/ @@ -2448,7 +2420,7 @@ be_local_class(Matter_TLV_struct, ( (struct bmapnode*) &(const bmapnode[]) { { be_const_key_weak(init, -1), be_const_closure(Matter_TLV_struct_init_closure) }, { be_const_key_weak(tostring, -1), be_const_closure(Matter_TLV_struct_tostring_closure) }, - { be_const_key_weak(encode, -1), be_const_closure(Matter_TLV_struct_encode_closure) }, + { be_const_key_weak(is_struct, -1), be_const_bool(1) }, })), be_str_weak(Matter_TLV_struct) );