less flagrant move in the loop

Phillip Davis created

this way we can prevent having to remove and re-insert the resource
several times per call to `run_on_main_thread`

Change summary

xmpp/examples/api_sketching.rs |   49 
xmpp/out.txt                   | 3147 ++++++++++++++++++++++++++++++++++++
xmpp/src/component/mod.rs      |   54 
xmpp/src/component/system.rs   |   24 
4 files changed, 3,209 insertions(+), 65 deletions(-)

Detailed changes

xmpp/examples/api_sketching.rs 🔗

@@ -0,0 +1,49 @@
+use bevy_app::{App, RunMode, ScheduleRunnerPlugin};
+use bevy_ecs::message::{Message, MessageReader};
+use bevy_tokio_tasks::TokioTasksPlugin;
+use tokio_xmpp::Stanza;
+use xmpp::component::resource::{ComponentConfig, XmppComponent};
+use xmpp::component::{StanzaMatcher, StanzaMatcherPlugin};
+
+#[derive(Message)]
+struct TestMessage {
+    content: String,
+}
+
+#[derive(Clone)]
+struct TestMatcher;
+
+impl StanzaMatcher for TestMatcher {
+    type Message = TestMessage;
+
+    fn matches(&mut self, candidate: &Stanza) -> Option<Self::Message> {
+        match candidate {
+            Stanza::Message(msg) => {
+                let body = msg.bodies.get("")?.clone();
+                Some(TestMessage { content: body })
+            }
+            _ => None,
+        }
+    }
+}
+
+fn log_test_messages(mut messages: MessageReader<TestMessage>) {
+    for msg in messages.read() {
+        println!("Received message: {}", msg.content);
+    }
+}
+
+fn main() {
+    println!("finished connecting");
+
+    App::new()
+        .add_plugins(ScheduleRunnerPlugin {
+            run_mode: RunMode::Loop { wait: None },
+        })
+        .add_plugins(TokioTasksPlugin::default())
+        .add_plugins(StanzaMatcherPlugin::new().matcher(TestMatcher))
+        .init_resource::<ComponentConfig>()
+        .init_resource::<XmppComponent>()
+        .add_systems(bevy_app::Update, log_test_messages)
+        .run();
+}

xmpp/out.txt 🔗

@@ -0,0 +1,3147 @@
+.section ".text.xmpp::component::system::spawn_stanza_workers::{{closure}}::{{closure}}","ax",@progbits
+	.p2align	4
+.type	xmpp::component::system::spawn_stanza_workers::{{closure}}::{{closure}},@function
+xmpp::component::system::spawn_stanza_workers::{{closure}}::{{closure}}:
+		// src/component/system.rs:28
+		runtime.spawn_background_task(move |mut ctx| async move {
+	.cfi_startproc
+	.cfi_personality 155, DW.ref.rust_eh_personality
+	.cfi_lsda 27, .Lexception152
+	push rbp
+	.cfi_def_cfa_offset 16
+	push r15
+	.cfi_def_cfa_offset 24
+	push r14
+	.cfi_def_cfa_offset 32
+	push r13
+	.cfi_def_cfa_offset 40
+	push r12
+	.cfi_def_cfa_offset 48
+	push rbx
+	.cfi_def_cfa_offset 56
+	sub rsp, 4096
+	.cfi_adjust_cfa_offset 4096
+	mov qword ptr [rsp], 0
+	sub rsp, 424
+	.cfi_def_cfa_offset 4576
+	.cfi_offset rbx, -56
+	.cfi_offset r12, -48
+	.cfi_offset r13, -40
+	.cfi_offset r14, -32
+	.cfi_offset r15, -24
+	.cfi_offset rbp, -16
+	mov qword ptr [rsp + 56], rsi
+	mov r15, rdi
+	movzx eax, byte ptr [rdi + 105]
+	lea rcx, [rip + .LJTI288_0]
+	movsxd rax, dword ptr [rcx + 4*rax]
+	add rax, rcx
+	mov qword ptr [rsp + 24], rdi
+	jmp rax
+		// src/component/system.rs:29
+		let mut chunked = reader.ready_chunks(batch_size);
+	mov byte ptr [r15 + 104], 1
+	mov rax, qword ptr [r15 + 32]
+	mov rbx, qword ptr [r15 + 88]
+	mov qword ptr [rsp + 512], rbx
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:23
+		assert!(capacity > 0);
+	test rax, rax
+	je .LBB288_15
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:25
+		Self { stream: stream.fuse(), cap: capacity }
+	mov qword ptr [r15 + 48], rbx
+	mov byte ptr [r15 + 56], 0
+	mov qword ptr [r15 + 40], rax
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/mod.rs:1543
+		}
+	jmp .LBB288_57
+		// src/component/system.rs:31
+		while let Some(stanzas) = chunked.next().await {
+	mov r14, qword ptr [r15 + 112]
+		// src/component/system.rs:28
+		runtime.spawn_background_task(move |mut ctx| async move {
+	jmp .LBB288_58
+	lea rbx, [r15 + 160]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:232
+		{
+	movzx eax, byte ptr [r15 + 160]
+		// src/component/system.rs:39
+		.await;
+	lea rbp, [r15 + 112]
+	lea rcx, [rip + .LJTI288_1]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:232
+		{
+	movsxd rax, dword ptr [rcx + 4*rax]
+	add rax, rcx
+	jmp rax
+	lea r14, [r15 + 152]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:738
+		match *self {
+	mov r15, qword ptr [r15 + 152]
+	test r15, r15
+	jne .LBB288_26
+	mov qword ptr [rsp + 72], rbp
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/rt.rs:196
+		Arguments { pieces, fmt: None, args: &[] }
+	lea rax, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.268]
+	mov qword ptr [rsp + 512], rax
+	mov qword ptr [rsp + 520], 1
+	mov qword ptr [rsp + 528], 8
+	xorps xmm0, xmm0
+	movups xmmword ptr [rsp + 536], xmm0
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1289
+		panic!("called after complete");
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.269]
+	lea rdi, [rsp + 512]
+	call qword ptr [rip + core::panicking::panic_fmt@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_15:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:23
+		assert!(capacity > 0);
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.67]
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.68]
+	mov esi, 30
+	call qword ptr [rip + core::panicking::panic@GOTPCREL]
+	jmp .LBB288_16
+		// src/component/system.rs:28
+		runtime.spawn_background_task(move |mut ctx| async move {
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.169]
+	call qword ptr [rip + core::panicking::panic_const::panic_const_async_fn_resumed@GOTPCREL]
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.169]
+	call qword ptr [rip + core::panicking::panic_const::panic_const_async_fn_resumed_panic@GOTPCREL]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:232
+		{
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.90]
+	call qword ptr [rip + core::panicking::panic_const::panic_const_async_fn_resumed@GOTPCREL]
+	jmp .LBB288_16
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.90]
+	call qword ptr [rip + core::panicking::panic_const::panic_const_async_fn_resumed_panic@GOTPCREL]
+	jmp .LBB288_16
+	mov r13, rax
+	jmp .LBB288_18
+	mov r13, rax
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:4007
+		Release => intrinsics::atomic_xsub::<T, { AO::Release }>(dst, val),
+	lock dec	qword ptr [rbx]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2642
+		if self.inner().strong.fetch_sub(1, Release) != 1 {
+	jne .LBB288_13
+	#MEMBARRIER
+	lea rdi, [rsp + 512]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2685
+		self.drop_slow();
+	call alloc::sync::Arc<T,A>::drop_slow
+	mov r15, qword ptr [rsp + 24]
+	jmp .LBB288_448
+.LBB288_13:
+	mov r15, qword ptr [rsp + 24]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2642
+		if self.inner().strong.fetch_sub(1, Release) != 1 {
+	jmp .LBB288_448
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:22
+		pub(super) fn new(stream: St, capacity: usize) -> Self {
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+.LBB288_16:
+	ud2
+.LBB288_18:
+		// src/component/system.rs:39
+		.await;
+	mov rdi, rbp
+	call core::ptr::drop_in_place<bevy_tokio_tasks::TaskContext::run_on_main_thread<xmpp::component::system::spawn_stanza_workers<xmpp::component::stanza_matcher::HCons<xmpp::component::stanza_matcher::Matcher<api_sketching::TestMatcher>,xmpp::component::stanza_matcher::HNil>>::{{closure}}::{{closure}}::{{closure}},alloc::boxed::Box<xmpp::component::stanza_matcher::HCons<xmpp::component::stanza_matcher::Matcher<api_sketching::TestMatcher>,xmpp::component::stanza_matcher::HNil>>>::{{closure}}>
+	mov r15, qword ptr [rsp + 24]
+	jmp .LBB288_446
+.LBB288_19:
+	lea rax, [r15 + 64]
+		// src/component/system.rs:33
+		.run_on_main_thread(move |main_ctx| {
+	mov byte ptr [r15 + 104], 0
+	mov rcx, qword ptr [r15 + 96]
+		// src/component/system.rs:32
+		dispatchers = ctx
+	mov rdx, qword ptr [rax + 16]
+	mov qword ptr [rbp + 16], rdx
+	movups xmm0, xmmword ptr [rax]
+	movups xmmword ptr [rbp], xmm0
+	mov qword ptr [r15 + 136], rcx
+	mov qword ptr [r15 + 144], r15
+	lea rbx, [r15 + 160]
+	mov byte ptr [r15 + 160], 0
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:228
+		pub async fn run_on_main_thread<Runnable, Output>(&mut self, runnable: Runnable) -> Output
+	mov r14, qword ptr [r15 + 144]
+	mov byte ptr [r15 + 161], 1
+	movups xmm0, xmmword ptr [rbp]
+	movups xmm1, xmmword ptr [rbp + 16]
+	movaps xmmword ptr [rsp + 1376], xmm1
+	movaps xmmword ptr [rsp + 1360], xmm0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:409
+		let x: Box<_> = Box::new(ArcInner {
+	mov qword ptr [rsp + 512], 1
+	mov qword ptr [rsp + 520], 1
+	xorps xmm0, xmm0
+	movups xmmword ptr [rsp + 560], xmm0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:92
+		__rust_no_alloc_shim_is_unstable_v2();
+	call qword ptr [rip + __rustc::__rust_no_alloc_shim_is_unstable_v2@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:94
+		__rust_alloc(layout.size(), layout.align())
+	mov edi, 64
+	mov esi, 8
+	call qword ptr [rip + __rustc::__rust_alloc@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:351
+		match Global.allocate(layout) {
+	test rax, rax
+	je .LBB288_307
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:261
+		return box_new(x);
+	mov r15, rax
+	movups xmm0, xmmword ptr [rsp + 512]
+	movups xmm1, xmmword ptr [rsp + 528]
+	movups xmm2, xmmword ptr [rsp + 544]
+	movups xmm3, xmmword ptr [rsp + 560]
+	movups xmmword ptr [rax + 48], xmm3
+	movups xmmword ptr [rax + 32], xmm2
+	movups xmmword ptr [rax + 16], xmm1
+	movups xmmword ptr [rax], xmm0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:3988
+		Relaxed => intrinsics::atomic_xadd::<T, { AO::Relaxed }>(dst, val),
+	lock inc	qword ptr [rax]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2224
+		if old_size > MAX_REFCOUNT {
+	jle .LBB288_16
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:233
+		let (output_tx, output_rx) = tokio::sync::oneshot::channel();
+	mov qword ptr [rsp + 2576], r15
+	mov rax, qword ptr [rsp + 24]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:234
+		if self.update_run_tx.send(Box::new(move |ctx| {
+	mov byte ptr [rax + 161], 0
+	mov qword ptr [rsp + 544], r15
+	movaps xmm0, xmmword ptr [rsp + 1360]
+	movaps xmm1, xmmword ptr [rsp + 1376]
+	movaps xmmword ptr [rsp + 512], xmm0
+	movaps xmmword ptr [rsp + 528], xmm1
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:92
+		__rust_no_alloc_shim_is_unstable_v2();
+	call qword ptr [rip + __rustc::__rust_no_alloc_shim_is_unstable_v2@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:94
+		__rust_alloc(layout.size(), layout.align())
+	mov edi, 40
+	mov esi, 8
+	call qword ptr [rip + __rustc::__rust_alloc@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:351
+		match Global.allocate(layout) {
+	test rax, rax
+	je .LBB288_308
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:261
+		return box_new(x);
+	mov rcx, qword ptr [rsp + 544]
+	mov qword ptr [rax + 32], rcx
+	movaps xmm0, xmmword ptr [rsp + 512]
+	movaps xmm1, xmmword ptr [rsp + 528]
+	movups xmmword ptr [rax + 16], xmm1
+	movups xmmword ptr [rax], xmm0
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:234
+		if self.update_run_tx.send(Box::new(move |ctx| {
+	add r14, 16
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.86]
+	mov rdi, r14
+	mov rsi, rax
+	call tokio::sync::mpsc::unbounded::UnboundedSender<T>::send
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:585
+		matches!(*self, Ok(_))
+	test rax, rax
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:234
+		if self.update_run_tx.send(Box::new(move |ctx| {
+	jne .LBB288_314
+	mov rax, qword ptr [rsp + 24]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:241
+		output_rx
+	lea r14, [rax + 152]
+	mov qword ptr [rax + 152], r15
+.LBB288_26:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/thread_local/native/mod.rs:67
+		VAL.get()
+	mov r12, qword ptr [rip + tokio::runtime::context::CONTEXT::{{constant}}::{{closure}}::VAL@GOTTPOFF]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cell.rs:546
+		unsafe { *self.value.get() }
+	movzx eax, byte ptr fs:[r12 + 72]
+	cmp eax, 1
+	mov qword ptr [rsp + 72], rbp
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/thread_local/native/eager.rs:33
+		match self.state.get() {
+	je .LBB288_30
+	xor ebp, ebp
+	mov r13d, 0
+	cmp eax, 2
+	je .LBB288_34
+	mov rdi, qword ptr fs:[0]
+	add rdi, r12
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/thread_local/native/eager.rs:47
+		destructors::register(ptr::from_ref(self).cast_mut().cast(), destroy::<T>);
+	lea rsi, [rip + std::sys::thread_local::native::eager::destroy]
+	call qword ptr [rip + std::sys::thread_local::destructors::linux_like::register@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:891
+		crate::intrinsics::write_via_move(dest, src);
+	mov byte ptr fs:[r12 + 72], 1
+.LBB288_30:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cell.rs:546
+		unsafe { *self.value.get() }
+	movzx ebp, byte ptr fs:[r12 + 68]
+	movzx r13d, byte ptr fs:[r12 + 69]
+	mov eax, r13d
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:414
+		if let Some(num) = &mut self.0 {
+	cmp bpl, 1
+	jne .LBB288_33
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:415
+		if *num > 0 {
+	test r13b, r13b
+	je .LBB288_299
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:416
+		*num -= 1;
+	lea eax, [r13 - 1]
+.LBB288_33:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:891
+		crate::intrinsics::write_via_move(dest, src);
+	mov byte ptr fs:[r12 + 69], al
+	mov byte ptr [rsp + 514], 0
+	mov word ptr [rsp + 512], 0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	lea rdi, [rsp + 513]
+	call qword ptr [rip + <tokio::task::coop::RestoreOnPending as core::ops::drop::Drop>::drop@GOTPCREL]
+.LBB288_34:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1318
+		let coop = ready!(crate::task::coop::poll_proceed(cx));
+	mov byte ptr [rsp + 2152], bpl
+	mov byte ptr [rsp + 2153], r13b
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1321
+		let mut state = State::load(&self.state, Acquire);
+	lea r12, [r15 + 48]
+	mov rdi, r12
+	mov esi, 2
+	call qword ptr [rip + tokio::sync::oneshot::State::load@GOTPCREL]
+	mov r13, rax
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1498
+		self.0 & VALUE_SENT == VALUE_SENT
+	test r13b, 2
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1323
+		if state.is_complete() {
+	jne .LBB288_50
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1551
+		self.0 & CLOSED == CLOSED
+	test r13b, 4
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1329
+		} else if state.is_closed() {
+	jne .LBB288_48
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1537
+		self.0 & RX_TASK_SET == RX_TASK_SET
+	test r13b, 1
+	je .LBB288_43
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cell.rs:2215
+		self as *const UnsafeCell<T> as *const T as *mut T
+	lea rbp, [r15 + 32]
+	mov rax, qword ptr [rsp + 56]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/task/wake.rs:248
+		&self.waker
+	mov rax, qword ptr [rax]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/task/wake.rs:481
+		let RawWaker { data: a_data, vtable: a_vtable } = self.waker;
+	mov rcx, qword ptr [r15 + 40]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/task/wake.rs:483
+		a_data == b_data && ptr::eq(a_vtable, b_vtable)
+	cmp rcx, qword ptr [rax + 8]
+	jne .LBB288_40
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/task/wake.rs:481
+		let RawWaker { data: a_data, vtable: a_vtable } = self.waker;
+	mov rcx, qword ptr [rbp]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:2443
+		a == b
+	cmp rcx, qword ptr [rax]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1337
+		if !will_notify {
+	je .LBB288_43
+.LBB288_40:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1339
+		state = State::unset_rx_task(&self.state);
+	mov rdi, r12
+	call qword ptr [rip + tokio::sync::oneshot::State::unset_rx_task@GOTPCREL]
+	mov r13, rax
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1498
+		self.0 & VALUE_SENT == VALUE_SENT
+	test r13b, 2
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1340
+		if state.is_complete() {
+	jne .LBB288_49
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1355
+		unsafe { self.rx_task.drop_task() };
+	mov rdi, rbp
+	call qword ptr [rip + tokio::sync::oneshot::Task::drop_task@GOTPCREL]
+.LBB288_43:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1537
+		self.0 & RX_TASK_SET == RX_TASK_SET
+	test r13b, 1
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1360
+		if !state.is_rx_task_set() {
+	jne .LBB288_47
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1363
+		self.rx_task.set_task(cx);
+	lea rdi, [r15 + 32]
+	mov rsi, qword ptr [rsp + 56]
+	call qword ptr [rip + tokio::sync::oneshot::Task::set_task@GOTPCREL]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1367
+		state = State::set_rx_task(&self.state);
+	mov rdi, r12
+	call qword ptr [rip + tokio::sync::oneshot::State::set_rx_task@GOTPCREL]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1498
+		self.0 & VALUE_SENT == VALUE_SENT
+	test al, 2
+	jne .LBB288_50
+.LBB288_47:
+	lea rdi, [rsp + 2152]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	call qword ptr [rip + <tokio::task::coop::RestoreOnPending as core::ops::drop::Drop>::drop@GOTPCREL]
+	jmp .LBB288_301
+.LBB288_48:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:891
+		crate::intrinsics::write_via_move(dest, src);
+	mov byte ptr [rsp + 2152], 0
+	xor ebx, ebx
+	jmp .LBB288_51
+.LBB288_49:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1342
+		State::set_rx_task(&self.state);
+	mov rdi, r12
+	call qword ptr [rip + tokio::sync::oneshot::State::set_rx_task@GOTPCREL]
+.LBB288_50:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:891
+		crate::intrinsics::write_via_move(dest, src);
+	mov byte ptr [rsp + 2152], 0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:890
+		let result = crate::intrinsics::read_via_copy(dest);
+	mov rbx, qword ptr [r15 + 56]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:891
+		crate::intrinsics::write_via_move(dest, src);
+	mov qword ptr [r15 + 56], 0
+.LBB288_51:
+	lea rdi, [rsp + 2152]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	call qword ptr [rip + <tokio::task::coop::RestoreOnPending as core::ops::drop::Drop>::drop@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:4007
+		Release => intrinsics::atomic_xsub::<T, { AO::Release }>(dst, val),
+	lock dec	qword ptr [r15]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2642
+		if self.inner().strong.fetch_sub(1, Release) != 1 {
+	jne .LBB288_54
+	#MEMBARRIER
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2685
+		self.drop_slow();
+	mov rdi, r14
+	call alloc::sync::Arc<T,A>::drop_slow
+.LBB288_54:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1292
+		self.inner = None;
+	mov qword ptr [r14], 0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:1117
+		match self {
+	test rbx, rbx
+	mov rbp, qword ptr [rsp + 72]
+	je .LBB288_309
+	mov r15, qword ptr [rsp + 24]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:244
+		}
+	mov byte ptr [r15 + 161], 0
+	mov byte ptr [r15 + 160], 1
+		// src/component/system.rs:39
+		.await;
+	mov rdi, rbp
+	call core::ptr::drop_in_place<bevy_tokio_tasks::TaskContext::run_on_main_thread<xmpp::component::system::spawn_stanza_workers<xmpp::component::stanza_matcher::HCons<xmpp::component::stanza_matcher::Matcher<api_sketching::TestMatcher>,xmpp::component::stanza_matcher::HNil>>::{{closure}}::{{closure}}::{{closure}},alloc::boxed::Box<xmpp::component::stanza_matcher::HCons<xmpp::component::stanza_matcher::Matcher<api_sketching::TestMatcher>,xmpp::component::stanza_matcher::HNil>>>::{{closure}}>
+		// src/component/system.rs:32
+		dispatchers = ctx
+	mov byte ptr [r15 + 104], 1
+	mov qword ptr [r15 + 96], rbx
+.LBB288_57:
+		// src/component/system.rs:31
+		while let Some(stanzas) = chunked.next().await {
+	lea r14, [r15 + 40]
+	mov qword ptr [r15 + 112], r14
+.LBB288_58:
+	lea rbp, [r15 + 112]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:440
+		Vec { buf: RawVec::new(), len: 0 }
+	mov qword ptr [rsp + 80], 0
+	mov qword ptr [rsp + 88], 8
+	mov qword ptr [rsp + 96], 0
+	xor ebx, ebx
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/fuse.rs:49
+		if *this.done {
+	cmp byte ptr [r14 + 16], 0
+	movabs r15, -9223372036854775808
+	je .LBB288_61
+.LBB288_59:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov r14, qword ptr [rsp + 80]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:63
+		let last = if items.is_empty() { None } else { Some(items) };
+	test rbx, rbx
+	jne .LBB288_291
+	mov rax, r14
+	mov r14, r15
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rax, rax
+	jne .LBB288_288
+	jmp .LBB288_292
+.LBB288_61:
+	lea rax, [r14 + 8]
+	mov qword ptr [rsp + 504], rax
+	xor ebx, ebx
+	lea r13, [rsp + 512]
+	mov qword ptr [rsp + 168], r14
+	.p2align	4
+.LBB288_62:
+	mov rdi, qword ptr [rsp + 504]
+	mov rsi, qword ptr [rsp + 56]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/split.rs:41
+		ready!(self.0.poll_lock(cx)).as_pin_mut().poll_next(cx)
+	call futures_util::lock::bilock::BiLock<T>::poll_lock
+	mov r12, rax
+	test rax, rax
+	je .LBB288_286
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/non_null.rs:437
+		unsafe { &*self.as_ptr().cast_const() }
+	mov r14, qword ptr [r12]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:738
+		match *self {
+	test byte ptr [r14 + 16], 1
+	je .LBB288_303
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:739
+		Some(ref x) => Some(x),
+	lea r15, [r14 + 24]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:760
+		match *self {
+	mov rax, qword ptr [r14 + 1008]
+	cmp rax, 51
+	jne .LBB288_73
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:373
+		match ready!(this.inner.as_mut().poll_next(cx)) {
+	mov rdi, r13
+	mov rsi, r15
+	mov rdx, qword ptr [rsp + 56]
+	call <tokio_xmpp::xmlstream::common::RawXmlStream<Io> as futures_core::stream::Stream>::poll_next
+	movabs rax, -9223372036854775808
+	lea rbx, [rax + 7]
+.LBB288_68:
+	cmp qword ptr [rsp + 512], rbx
+	je .LBB288_128
+	movups xmm0, xmmword ptr [rsp + 512]
+	movups xmm1, xmmword ptr [rsp + 528]
+	movups xmm2, xmmword ptr [rsp + 544]
+	movups xmm3, xmmword ptr [rsp + 560]
+	movaps xmmword ptr [rsp + 1360], xmm0
+	movups xmm0, xmmword ptr [rsp + 576]
+	movaps xmmword ptr [rsp + 1424], xmm0
+	movaps xmmword ptr [rsp + 1408], xmm3
+	movaps xmmword ptr [rsp + 1392], xmm2
+	movaps xmmword ptr [rsp + 1376], xmm1
+	mov rax, qword ptr [rsp + 1360]
+	movabs rcx, -9223372036854775802
+	cmp rax, rcx
+	je .LBB288_181
+	movabs rcx, -9223372036854775803
+	cmp rax, rcx
+	jne .LBB288_311
+	mov rax, qword ptr [rsp + 1368]
+	test rax, rax
+	jne .LBB288_232
+	mov rdi, r13
+	mov rsi, r15
+	mov rdx, qword ptr [rsp + 56]
+	call <tokio_xmpp::xmlstream::common::RawXmlStream<Io> as futures_core::stream::Stream>::poll_next
+	jmp .LBB288_68
+	.p2align	4
+.LBB288_73:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:623
+		let text_buffering = !matches!(self, ReadXsoState::PreData);
+	cmp eax, 48
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rxml-0.13.3/src/parser/raw.rs:302
+		self.lexer.text_buffering = enabled;
+	setne byte ptr [r14 + 465]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:629
+		let ev = ready!(source.as_mut().poll_next(cx)).transpose();
+	mov rdi, r13
+	mov rsi, r15
+	mov rdx, qword ptr [rsp + 56]
+	call <tokio_xmpp::xmlstream::common::RawXmlStream<Io> as futures_core::stream::Stream>::poll_next
+	mov qword ptr [rsp + 152], r15
+	mov rax, qword ptr [rsp + 512]
+	movabs rcx, -9223372036854775808
+	add rcx, 7
+	mov qword ptr [rsp + 32], rcx
+	cmp rax, rcx
+	je .LBB288_128
+	lea rbx, [r14 + 1008]
+	lea rcx, [r14 + 680]
+	mov qword ptr [rsp + 312], rcx
+	lea r15, [r14 + 1016]
+	lea rcx, [r14 + 1017]
+	mov qword ptr [rsp + 496], rcx
+	lea rcx, [r14 + 1024]
+	mov qword ptr [rsp + 296], rcx
+	lea rcx, [r14 + 1064]
+	mov qword ptr [rsp + 304], rcx
+	mov qword ptr [rsp + 8], r12
+	mov qword ptr [rsp + 16], rbx
+	.p2align	4
+.LBB288_76:
+	mov rcx, qword ptr [rsp + 520]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:2117
+		match self {
+	movabs rdx, -9223372036854775803
+	cmp rax, rdx
+	je .LBB288_79
+	movabs rdx, -9223372036854775802
+	cmp rax, rdx
+	jne .LBB288_81
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:2120
+		None => Ok(None),
+	movabs rax, -9223372036854775808
+	add rax, 5
+	jmp .LBB288_80
+	.p2align	4
+.LBB288_79:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:2119
+		Some(Err(e)) => Err(e),
+	mov qword ptr [rsp + 328], rcx
+	movabs rax, -9223372036854775808
+	add rax, 6
+.LBB288_80:
+	mov qword ptr [rsp + 320], rax
+	jmp .LBB288_82
+	.p2align	4
+.LBB288_81:
+	lea rdx, [rsp + 528]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:2118
+		Some(Ok(x)) => Ok(Some(x)),
+	movups xmm0, xmmword ptr [rdx]
+	movups xmm1, xmmword ptr [rdx + 16]
+	movups xmm2, xmmword ptr [rdx + 32]
+	movups xmm3, xmmword ptr [rdx + 48]
+	lea rdx, [rsp + 336]
+	movups xmmword ptr [rdx + 48], xmm3
+	movups xmmword ptr [rdx + 32], xmm2
+	movups xmmword ptr [rdx + 16], xmm1
+	movups xmmword ptr [rdx], xmm0
+	mov qword ptr [rsp + 320], rax
+	mov qword ptr [rsp + 328], rcx
+.LBB288_82:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:630
+		match self {
+	mov rdx, qword ptr [rbx]
+	lea rcx, [rdx - 48]
+	cmp rdx, 48
+	mov edx, 1
+	cmovb rcx, rdx
+	test rcx, rcx
+	je .LBB288_99
+	cmp rcx, 1
+	jne .LBB288_304
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:3955
+		Relaxed => intrinsics::atomic_load::<T, { AO::Relaxed }>(dst),
+	mov rcx, qword ptr [rip + log::MAX_LOG_LEVEL_FILTER@GOTPCREL]
+	mov rcx, qword ptr [rcx]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:507
+		self.as_raw() <= 0
+	cmp rcx, 4
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:684
+		log::trace!("ReadXsoState::Parsing ev = {:?}", ev);
+	jbe .LBB288_88
+	lea rax, [rsp + 320]
+	mov qword ptr [rsp + 1360], rax
+	lea rax, [rip + <core::result::Result<T,E> as core::fmt::Debug>::fmt]
+	mov qword ptr [rsp + 1368], rax
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.38]
+	call qword ptr [rip + log::__private_api::loc@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/non_null.rs:437
+		unsafe { &*self.as_ptr().cast_const() }
+	movups xmm0, xmmword ptr [rax]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/location.rs:234
+		self.line
+	mov eax, dword ptr [rax + 16]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/log-0.4.29/src/lib.rs:841
+		#[derive(Clone, Debug)]
+	mov qword ptr [rsp + 560], 5
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.29]
+	mov qword ptr [rsp + 568], rdx
+	mov qword ptr [rsp + 576], 29
+	lea rcx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.37]
+	mov qword ptr [rsp + 592], rcx
+	mov qword ptr [rsp + 600], 1
+	lea rcx, [rsp + 1360]
+	mov qword ptr [rsp + 608], rcx
+	mov qword ptr [rsp + 616], 1
+	mov qword ptr [rsp + 624], 0
+	mov qword ptr [rsp + 512], 0
+	mov qword ptr [rsp + 520], rdx
+	mov qword ptr [rsp + 528], 29
+	mov qword ptr [rsp + 536], 0
+	movups xmmword ptr [rsp + 544], xmm0
+	mov dword ptr [rsp + 584], 1
+	mov dword ptr [rsp + 588], eax
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/log-0.4.29/src/__private_api.rs:81
+		logger.log(&builder.build());
+	lea rdi, [rsp + 400]
+	mov rsi, r13
+	call qword ptr [rip + <log::__private_api::GlobalLogger as log::Log>::log@GOTPCREL]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:685
+		let ev = match ev {
+	mov rax, qword ptr [rsp + 320]
+.LBB288_88:
+	movabs rcx, -9223372036854775803
+	cmp rax, rcx
+	je .LBB288_207
+	movabs rcx, -9223372036854775802
+	cmp rax, rcx
+	je .LBB288_197
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:686
+		Ok(Some(ev)) => ev,
+	movups xmm0, xmmword ptr [rsp + 384]
+	movaps xmmword ptr [rsp + 272], xmm0
+	movups xmm0, xmmword ptr [rsp + 320]
+	movups xmm1, xmmword ptr [rsp + 336]
+	movups xmm2, xmmword ptr [rsp + 352]
+	movups xmm3, xmmword ptr [rsp + 368]
+	movaps xmmword ptr [rsp + 256], xmm3
+	movaps xmmword ptr [rsp + 240], xmm2
+	movaps xmmword ptr [rsp + 224], xmm1
+	movaps xmmword ptr [rsp + 208], xmm0
+	mov rdi, qword ptr [rsp + 312]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:712
+		let ctx = xso::Context::empty().with_language(source_tmp.lang_stack.current());
+	call qword ptr [rip + rxml::xml_lang::XmlLangStack::current@GOTPCREL]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:109
+		self
+	mov qword ptr [rsp + 176], rax
+	mov qword ptr [rsp + 184], rdx
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:713
+		match builder.feed(ev, &ctx) {
+	movaps xmm0, xmmword ptr [rsp + 272]
+	movaps xmmword ptr [rsp + 464], xmm0
+	movaps xmm0, xmmword ptr [rsp + 208]
+	movaps xmm1, xmmword ptr [rsp + 224]
+	movaps xmm2, xmmword ptr [rsp + 240]
+	movaps xmm3, xmmword ptr [rsp + 256]
+	movaps xmmword ptr [rsp + 448], xmm3
+	movaps xmmword ptr [rsp + 432], xmm2
+	movaps xmmword ptr [rsp + 416], xmm1
+	movaps xmmword ptr [rsp + 400], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:205
+		match self.0 {
+	mov rcx, qword ptr [rbx]
+	sub rcx, 45
+	mov eax, 0
+	cmovae rax, rcx
+	test rax, rax
+	je .LBB288_119
+	cmp rax, 1
+	jne .LBB288_306
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:284
+		*depth = match ev {
+	mov rcx, qword ptr [rsp + 400]
+	movabs rdx, -9223372036854775808
+	lea rax, [rdx + rcx]
+	dec rax
+	cmp rcx, rdx
+	mov ecx, 1
+	cmovbe rax, rcx
+	lea rdx, [rip + .LJTI288_2]
+	movsxd rcx, dword ptr [rdx + 4*rax]
+	add rcx, rdx
+	jmp rcx
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	test rax, rax
+	je .LBB288_159
+	cmp rax, 1
+	je .LBB288_137
+	cmp rax, 2
+	je .LBB288_159
+	mov rsi, qword ptr [rsp + 408]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rsi, rsi
+	je .LBB288_159
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rdi, qword ptr [rsp + 416]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov edx, 1
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:262
+		if layout.size() != 0 {
+	jmp .LBB288_159
+	.p2align	4
+.LBB288_99:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:3955
+		Relaxed => intrinsics::atomic_load::<T, { AO::Relaxed }>(dst),
+	mov rcx, qword ptr [rip + log::MAX_LOG_LEVEL_FILTER@GOTPCREL]
+	mov rcx, qword ptr [rcx]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:507
+		self.as_raw() <= 0
+	cmp rcx, 4
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:632
+		log::trace!("ReadXsoState::PreData ev = {:?}", ev);
+	jbe .LBB288_103
+	lea rax, [rsp + 320]
+	mov qword ptr [rsp + 1360], rax
+	lea rax, [rip + <core::result::Result<T,E> as core::fmt::Debug>::fmt]
+	mov qword ptr [rsp + 1368], rax
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.28]
+	call qword ptr [rip + log::__private_api::loc@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/non_null.rs:437
+		unsafe { &*self.as_ptr().cast_const() }
+	movups xmm0, xmmword ptr [rax]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/location.rs:234
+		self.line
+	mov eax, dword ptr [rax + 16]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/log-0.4.29/src/lib.rs:841
+		#[derive(Clone, Debug)]
+	mov qword ptr [rsp + 560], 5
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.29]
+	mov qword ptr [rsp + 568], rdx
+	mov qword ptr [rsp + 576], 29
+	lea rcx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.26]
+	mov qword ptr [rsp + 592], rcx
+	mov qword ptr [rsp + 600], 1
+	lea rcx, [rsp + 1360]
+	mov qword ptr [rsp + 608], rcx
+	mov qword ptr [rsp + 616], 1
+	mov qword ptr [rsp + 624], 0
+	mov qword ptr [rsp + 512], 0
+	mov qword ptr [rsp + 520], rdx
+	mov qword ptr [rsp + 528], 29
+	mov qword ptr [rsp + 536], 0
+	movups xmmword ptr [rsp + 544], xmm0
+	mov dword ptr [rsp + 584], 1
+	mov dword ptr [rsp + 588], eax
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/log-0.4.29/src/__private_api.rs:81
+		logger.log(&builder.build());
+	lea rdi, [rsp + 400]
+	mov rsi, r13
+	call qword ptr [rip + <log::__private_api::GlobalLogger as log::Log>::log@GOTPCREL]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:633
+		match ev {
+	mov rax, qword ptr [rsp + 320]
+.LBB288_103:
+	movabs rcx, -9223372036854775803
+	cmp rax, rcx
+	je .LBB288_204
+	movabs rcx, -9223372036854775802
+	cmp rax, rcx
+	je .LBB288_200
+	movabs rdx, -9223372036854775808
+	lea rcx, [rdx + rax]
+	dec rcx
+	cmp rax, rdx
+	mov eax, 1
+	cmovbe rcx, rax
+	cmp rcx, 3
+	jne .LBB288_146
+	mov r12, rbp
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:635
+		Ok(Some(rxml::Event::Text(_, data))) => {
+	mov rbp, qword ptr [rsp + 328]
+	mov r13, qword ptr [rsp + 336]
+	mov rax, qword ptr [rsp + 344]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/non_null.rs:1654
+		self.as_ptr() == other.as_ptr()
+	test rax, rax
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/iter/macros.rs:179
+		if ptr == crate::intrinsics::transmute::<$ptr, NonNull<T>>(end_or_len) {
+	je .LBB288_111
+	xor ecx, ecx
+	.p2align	4
+.LBB288_108:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/iter/macros.rs:291
+		if !f(x) {
+	movzx edx, byte ptr [r13 + rcx]
+	cmp rdx, 32
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/lib.rs:780
+		.all(|b| *b == b' ' || *b == b'\t' || *b == b'\r' || *b == b'\n')
+	ja .LBB288_182
+	movabs rsi, 4294977024
+	bt rsi, rdx
+	jae .LBB288_182
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/non_null.rs:1654
+		self.as_ptr() == other.as_ptr()
+	inc rcx
+	cmp rax, rcx
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/iter/macros.rs:179
+		if ptr == crate::intrinsics::transmute::<$ptr, NonNull<T>>(end_or_len) {
+	jne .LBB288_108
+.LBB288_111:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:3955
+		Relaxed => intrinsics::atomic_load::<T, { AO::Relaxed }>(dst),
+	mov rcx, qword ptr [rip + log::MAX_LOG_LEVEL_FILTER@GOTPCREL]
+	mov rcx, qword ptr [rcx]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/cmp.rs:507
+		self.as_raw() <= 0
+	cmp rcx, 4
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:637
+		log::trace!("Received {} bytes of whitespace", data.len());
+	jbe .LBB288_114
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2846
+		let len = self.len;
+	mov qword ptr [rsp + 2576], rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:637
+		log::trace!("Received {} bytes of whitespace", data.len());
+	lea rax, [rsp + 2576]
+	mov qword ptr [rsp + 1360], rax
+	mov rax, qword ptr [rip + core::fmt::num::imp::<impl core::fmt::Display for usize>::fmt@GOTPCREL]
+	mov qword ptr [rsp + 1368], rax
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.35]
+	call qword ptr [rip + log::__private_api::loc@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/non_null.rs:437
+		unsafe { &*self.as_ptr().cast_const() }
+	movups xmm0, xmmword ptr [rax]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/panic/location.rs:234
+		self.line
+	mov eax, dword ptr [rax + 16]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/log-0.4.29/src/lib.rs:841
+		#[derive(Clone, Debug)]
+	mov qword ptr [rsp + 560], 5
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.29]
+	mov qword ptr [rsp + 568], rdx
+	mov qword ptr [rsp + 576], 29
+	lea rcx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.34]
+	mov qword ptr [rsp + 592], rcx
+	mov qword ptr [rsp + 600], 2
+	lea rcx, [rsp + 1360]
+	mov qword ptr [rsp + 608], rcx
+	mov qword ptr [rsp + 616], 1
+	mov qword ptr [rsp + 624], 0
+	mov qword ptr [rsp + 512], 0
+	mov qword ptr [rsp + 520], rdx
+	mov qword ptr [rsp + 528], 29
+	mov qword ptr [rsp + 536], 0
+	movups xmmword ptr [rsp + 544], xmm0
+	mov dword ptr [rsp + 584], 1
+	mov dword ptr [rsp + 588], eax
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/log-0.4.29/src/__private_api.rs:81
+		logger.log(&builder.build());
+	lea rdi, [rsp + 400]
+	lea rsi, [rsp + 512]
+	call qword ptr [rip + <log::__private_api::GlobalLogger as log::Log>::log@GOTPCREL]
+.LBB288_114:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:760
+		match *self {
+	movabs rax, -9223372036854775808
+	cmp qword ptr [r14 + 152], rax
+	je .LBB288_124
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2846
+		let len = self.len;
+	mov rax, qword ptr [r14 + 168]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/capture.rs:78
+		buf.drain(..*consumed_up_to);
+	mov rsi, qword ptr [r14 + 176]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/index.rs:874
+		if end > len {
+	mov rbx, rax
+	sub rbx, rsi
+	jb .LBB288_310
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:1969
+		self.len = new_len;
+	mov qword ptr [r14 + 168], 0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/drain.rs:219
+		if drop_len == 0 {
+	test rsi, rsi
+	je .LBB288_121
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/drain.rs:181
+		if self.0.tail_len > 0 {
+	cmp rax, rsi
+	je .LBB288_123
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/capture.rs:78
+		buf.drain(..*consumed_up_to);
+	mov rdi, qword ptr [r14 + 160]
+	add rsi, rdi
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:638
+		crate::intrinsics::copy(src, dst, count)
+	mov rdx, rbx
+	call qword ptr [rip + memmove@GOTPCREL]
+	jmp .LBB288_122
+	.p2align	4
+.LBB288_119:
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:210
+		let new_depth = match ev {
+	mov rax, qword ptr [rsp + 400]
+	movabs rdx, -9223372036854775808
+	lea rcx, [rdx + rax]
+	dec rcx
+	cmp rax, rdx
+	mov eax, 1
+	cmovbe rcx, rax
+	lea rdx, [rip + .LJTI288_3]
+	movsxd rax, dword ptr [rdx + 4*rcx]
+	add rax, rdx
+	jmp rax
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:239
+		rxml::Event::XmlDeclaration(..) | rxml::Event::Text(..) => Some(*depth),
+	mov r13, qword ptr [r14 + 1776]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:242
+		match builder.feed(ev, ctx) {
+	movaps xmm0, xmmword ptr [rsp + 272]
+	movaps xmmword ptr [rsp + 576], xmm0
+	movaps xmm0, xmmword ptr [rsp + 208]
+	movaps xmm1, xmmword ptr [rsp + 224]
+	movaps xmm2, xmmword ptr [rsp + 240]
+	movaps xmm3, xmmword ptr [rsp + 256]
+	movaps xmmword ptr [rsp + 560], xmm3
+	movaps xmmword ptr [rsp + 544], xmm2
+	movaps xmmword ptr [rsp + 528], xmm1
+	movaps xmmword ptr [rsp + 512], xmm0
+	lea rdi, [rsp + 1360]
+	mov rsi, rbx
+	lea rdx, [rsp + 512]
+	lea rcx, [rsp + 176]
+	call qword ptr [rip + <tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder as xso::FromEventsBuilder>::feed@GOTPCREL]
+	mov rbx, qword ptr [rsp + 1360]
+	cmp rbx, 33
+	jne .LBB288_142
+.LBB288_133:
+	mov rdi, qword ptr [rsp + 16]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:256
+		self.0 = FallibleBuilderInner::Failed {
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	mov qword ptr [r14 + 1008], 46
+	lea rcx, [rsp + 1368]
+	mov rax, qword ptr [rcx + 32]
+	mov qword ptr [r15 + 32], rax
+	movups xmm0, xmmword ptr [rcx]
+	movups xmm1, xmmword ptr [rcx + 16]
+	movups xmmword ptr [r15 + 16], xmm1
+	movups xmmword ptr [r15], xmm0
+	mov qword ptr [r14 + 1056], r13
+	mov ebx, 33
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:316
+		}
+	jmp .LBB288_158
+.LBB288_121:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/drain.rs:181
+		if self.0.tail_len > 0 {
+	cmp rax, rsi
+	je .LBB288_123
+.LBB288_122:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:1969
+		self.len = new_len;
+	mov qword ptr [r14 + 168], rbx
+.LBB288_123:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/capture.rs:79
+		*consumed_up_to = 0;
+	mov qword ptr [r14 + 176], 0
+	mov rbx, qword ptr [rsp + 16]
+.LBB288_124:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rbp, rbp
+	je .LBB288_126
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov edx, 1
+	mov rdi, r13
+	mov rsi, rbp
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+.LBB288_126:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:623
+		let text_buffering = !matches!(self, ReadXsoState::PreData);
+	cmp dword ptr [r14 + 1008], 48
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rxml-0.13.3/src/parser/raw.rs:302
+		self.lexer.text_buffering = enabled;
+	setne byte ptr [r14 + 465]
+	lea r13, [rsp + 512]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:629
+		let ev = ready!(source.as_mut().poll_next(cx)).transpose();
+	mov rdi, r13
+	mov rsi, qword ptr [rsp + 152]
+	mov rdx, qword ptr [rsp + 56]
+	call <tokio_xmpp::xmlstream::common::RawXmlStream<Io> as futures_core::stream::Stream>::poll_next
+	mov rax, qword ptr [rsp + 512]
+	cmp rax, qword ptr [rsp + 32]
+	mov rbp, r12
+	mov r12, qword ptr [rsp + 8]
+	jne .LBB288_76
+	jmp .LBB288_128
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:211
+		rxml::Event::StartElement(..) => match depth.checked_add(1) {
+	mov r13, qword ptr [r14 + 1776]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:521
+		if intrinsics::unlikely(intrinsics::add_with_overflow(self, rhs).1) {
+	cmp r13, -1
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/intrinsics/mod.rs:444
+		if b {
+	je .LBB288_178
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:242
+		match builder.feed(ev, ctx) {
+	movaps xmm0, xmmword ptr [rsp + 272]
+	movaps xmmword ptr [rsp + 576], xmm0
+	movaps xmm0, xmmword ptr [rsp + 208]
+	movaps xmm1, xmmword ptr [rsp + 224]
+	movaps xmm2, xmmword ptr [rsp + 240]
+	movaps xmm3, xmmword ptr [rsp + 256]
+	movaps xmmword ptr [rsp + 560], xmm3
+	movaps xmmword ptr [rsp + 544], xmm2
+	movaps xmmword ptr [rsp + 528], xmm1
+	movaps xmmword ptr [rsp + 512], xmm0
+	lea rdi, [rsp + 1360]
+	mov rsi, rbx
+	lea rdx, [rsp + 512]
+	lea rcx, [rsp + 176]
+	call qword ptr [rip + <tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder as xso::FromEventsBuilder>::feed@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:525
+		Some(unsafe { intrinsics::unchecked_add(self, rhs) })
+	inc r13
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:242
+		match builder.feed(ev, ctx) {
+	mov rbx, qword ptr [rsp + 1360]
+	cmp rbx, 33
+	je .LBB288_133
+.LBB288_142:
+	cmp ebx, 32
+	jne .LBB288_156
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:272
+		*depth = match new_depth {
+	mov qword ptr [r14 + 1776], r13
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:316
+		}
+	jmp .LBB288_159
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:285
+		rxml::Event::StartElement(..) => match depth.checked_add(1) {
+	mov rax, qword ptr [r14 + 1056]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:521
+		if intrinsics::unlikely(intrinsics::add_with_overflow(self, rhs).1) {
+	cmp rax, -1
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/intrinsics/mod.rs:444
+		if b {
+	je .LBB288_179
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:525
+		Some(unsafe { intrinsics::unchecked_add(self, rhs) })
+	inc rax
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:284
+		*depth = match ev {
+	mov qword ptr [r14 + 1056], rax
+.LBB288_137:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	lea rdi, [rsp + 400]
+	call core::ptr::drop_in_place<(rxml::strings::Namespace,rxml_validation::strings::NcName)>
+	lea rdi, [rsp + 456]
+	call core::ptr::drop_in_place<rxml::xml_map::XmlMap<alloc::string::String>>
+	jmp .LBB288_159
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:235
+		rxml::Event::EndElement(..) => depth.checked_sub(1),
+	mov r13, qword ptr [r14 + 1776]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:242
+		match builder.feed(ev, ctx) {
+	movaps xmm0, xmmword ptr [rsp + 272]
+	movaps xmmword ptr [rsp + 576], xmm0
+	movaps xmm0, xmmword ptr [rsp + 208]
+	movaps xmm1, xmmword ptr [rsp + 224]
+	movaps xmm2, xmmword ptr [rsp + 240]
+	movaps xmm3, xmmword ptr [rsp + 256]
+	movaps xmmword ptr [rsp + 560], xmm3
+	movaps xmmword ptr [rsp + 544], xmm2
+	movaps xmmword ptr [rsp + 528], xmm1
+	movaps xmmword ptr [rsp + 512], xmm0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:678
+		if self < rhs {
+	test r13, r13
+	je .LBB288_153
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:242
+		match builder.feed(ev, ctx) {
+	lea rdi, [rsp + 1360]
+	mov rsi, rbx
+	lea rdx, [rsp + 512]
+	lea rcx, [rsp + 176]
+	call qword ptr [rip + <tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder as xso::FromEventsBuilder>::feed@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:682
+		Some(unsafe { intrinsics::unchecked_sub(self, rhs) })
+	dec r13
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:242
+		match builder.feed(ev, ctx) {
+	mov rbx, qword ptr [rsp + 1360]
+	cmp rbx, 33
+	je .LBB288_133
+	jmp .LBB288_142
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:293
+		rxml::Event::EndElement(..) => match depth.checked_sub(1) {
+	mov rax, qword ptr [r14 + 1056]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:678
+		if self < rhs {
+	test rax, rax
+	je .LBB288_162
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:682
+		Some(unsafe { intrinsics::unchecked_sub(self, rhs) })
+	dec rax
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:284
+		*depth = match ev {
+	mov qword ptr [r14 + 1056], rax
+	jmp .LBB288_159
+.LBB288_146:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:633
+		match ev {
+	test rcx, rcx
+	je .LBB288_160
+	cmp rcx, 1
+	jne .LBB288_209
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:649
+		Ok(Some(rxml::Event::StartElement(_, name, attrs))) => {
+	movups xmm0, xmmword ptr [rsp + 320]
+	movups xmm1, xmmword ptr [rsp + 336]
+	movups xmm2, xmmword ptr [rsp + 352]
+	movaps xmmword ptr [rsp + 240], xmm2
+	movaps xmmword ptr [rsp + 224], xmm1
+	movaps xmmword ptr [rsp + 208], xmm0
+	lea rcx, [rsp + 376]
+	mov rax, qword ptr [rcx + 16]
+	mov qword ptr [rsp + 1296], rax
+	movups xmm0, xmmword ptr [rcx]
+	movaps xmmword ptr [rsp + 1280], xmm0
+	mov rdi, qword ptr [rsp + 312]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:652
+		.with_language(source_tmp.lang_stack.current());
+	call qword ptr [rip + rxml::xml_lang::XmlLangStack::current@GOTPCREL]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:109
+		self
+	mov qword ptr [rsp + 1312], rax
+	mov qword ptr [rsp + 1320], rdx
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:655
+		name, attrs, &ctx,
+	movaps xmm0, xmmword ptr [rsp + 208]
+	movaps xmm1, xmmword ptr [rsp + 224]
+	movaps xmm2, xmmword ptr [rsp + 240]
+	movaps xmmword ptr [rsp + 432], xmm2
+	movaps xmmword ptr [rsp + 416], xmm1
+	movaps xmmword ptr [rsp + 400], xmm0
+	mov rax, qword ptr [rsp + 1296]
+	mov qword ptr [rsp + 1344], rax
+	movaps xmm0, xmmword ptr [rsp + 1280]
+	movaps xmmword ptr [rsp + 1328], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:328
+		match T::from_events(name, attrs, ctx) {
+	mov rdi, r13
+	lea rsi, [rsp + 400]
+	lea rdx, [rsp + 1328]
+	lea rcx, [rsp + 1312]
+	call qword ptr [rip + <tokio_xmpp::xmlstream::xmpp::XmppStreamElement as xso::FromXml>::from_events@GOTPCREL]
+	mov rbx, qword ptr [rsp + 512]
+	cmp rbx, 46
+	mov qword ptr [rsp + 72], rbp
+	jne .LBB288_172
+	mov rax, qword ptr [rsp + 520]
+	movabs rcx, -9223372036854775808
+	inc rcx
+	cmp rax, rcx
+	jne .LBB288_281
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:336
+		Err(FromEventsError::Invalid(e)) => Ok(FallibleBuilder(FallibleBuilderInner::Failed {
+	mov rbp, qword ptr [rsp + 528]
+	lea rax, [rsp + 528]
+	movups xmm0, xmmword ptr [rax + 8]
+	movups xmm1, xmmword ptr [rax + 24]
+	movaps xmmword ptr [rsp + 176], xmm0
+	movaps xmmword ptr [rsp + 192], xmm1
+	mov qword ptr [rsp + 160], 0
+	mov r12, qword ptr [rip + memcpy@GOTPCREL]
+	lea r13, [rsp + 1360]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:339
+		})),
+	jmp .LBB288_173
+.LBB288_153:
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:242
+		match builder.feed(ev, ctx) {
+	lea rdi, [rsp + 1360]
+	mov rsi, rbx
+	lea rdx, [rsp + 512]
+	lea rcx, [rsp + 176]
+	call qword ptr [rip + <tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder as xso::FromEventsBuilder>::feed@GOTPCREL]
+	mov rbx, qword ptr [rsp + 1360]
+	cmp rbx, 33
+	je .LBB288_170
+	cmp ebx, 32
+	je .LBB288_316
+.LBB288_156:
+	mov r12, r15
+	mov r15, rbp
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:243
+		Ok(Some(v)) => {
+	mov edx, 424
+	lea rdi, [rsp + 512]
+	lea rsi, [rsp + 1360]
+	mov r13, qword ptr [rip + memcpy@GOTPCREL]
+	call r13
+	mov rbp, qword ptr [rsp + 16]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:244
+		self.0 = FallibleBuilderInner::Done;
+	mov rdi, rbp
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	mov qword ptr [rbp], 47
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:245
+		return Ok(Some(Ok(v)));
+	movzx eax, byte ptr [rsp + 1368]
+	mov byte ptr [rsp + 7], al
+	lea rcx, [rsp + 1368]
+	mov eax, dword ptr [rcx + 1]
+	mov ecx, dword ptr [rcx + 4]
+	mov dword ptr [rsp + 112], eax
+	mov dword ptr [rsp + 115], ecx
+	mov rax, qword ptr [rsp + 1376]
+	mov qword ptr [rsp + 64], rax
+	mov rax, qword ptr [rsp + 1384]
+	mov qword ptr [rsp + 104], rax
+	mov edx, 392
+	lea rdi, [rsp + 2576]
+	lea rsi, [rsp + 1392]
+	call r13
+	mov rbp, r15
+	mov r15, r12
+	mov r12, qword ptr [rsp + 8]
+.LBB288_158:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:713
+		match builder.feed(ev, &ctx) {
+	cmp ebx, 33
+	jne .LBB288_188
+.LBB288_159:
+	lea r13, [rsp + 512]
+	mov rbx, qword ptr [rsp + 16]
+.LBB288_160:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:623
+		let text_buffering = !matches!(self, ReadXsoState::PreData);
+	cmp dword ptr [r14 + 1008], 48
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/rxml-0.13.3/src/parser/raw.rs:302
+		self.lexer.text_buffering = enabled;
+	setne byte ptr [r14 + 465]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:629
+		let ev = ready!(source.as_mut().poll_next(cx)).transpose();
+	mov rdi, r13
+	mov rsi, qword ptr [rsp + 152]
+	mov rdx, qword ptr [rsp + 56]
+	call <tokio_xmpp::xmlstream::common::RawXmlStream<Io> as futures_core::stream::Stream>::poll_next
+	mov rax, qword ptr [rsp + 512]
+	cmp rax, qword ptr [rsp + 32]
+	jne .LBB288_76
+	jmp .LBB288_128
+.LBB288_162:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:890
+		let result = crate::intrinsics::read_via_copy(dest);
+	movzx eax, byte ptr [r15]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/mem/mod.rs:891
+		crate::intrinsics::write_via_move(dest, src);
+	mov byte ptr [r15], 21
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:962
+		match self {
+	cmp al, 21
+	je .LBB288_312
+	mov byte ptr [rsp + 7], al
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:963
+		Some(val) => val,
+	mov byte ptr [rsp + 512], al
+	mov rcx, qword ptr [rsp + 496]
+	mov rax, qword ptr [rcx + 31]
+	mov r13, rbx
+	lea rbx, [rsp + 528]
+	mov qword ptr [rbx + 16], rax
+	movups xmm0, xmmword ptr [rcx]
+	movups xmm1, xmmword ptr [rcx + 16]
+	movups xmmword ptr [rbx + 1], xmm1
+	movups xmmword ptr [rbx - 15], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:299
+		self.0 = FallibleBuilderInner::Done;
+	mov rdi, r13
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	mov qword ptr [r13], 47
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:300
+		return Ok(Some(Err(err)));
+	mov eax, dword ptr [rbx - 15]
+	mov ecx, dword ptr [rbx - 12]
+	mov dword ptr [rsp + 115], ecx
+	mov dword ptr [rsp + 112], eax
+	mov rax, qword ptr [rsp + 520]
+	mov qword ptr [rsp + 64], rax
+	mov rsi, qword ptr [rsp + 528]
+	movups xmm0, xmmword ptr [rbx + 8]
+	movaps xmmword ptr [rsp + 2576], xmm0
+	mov ebx, 32
+.LBB288_165:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rcx, qword ptr [rsp + 400]
+	movabs rdx, -9223372036854775808
+	lea rax, [rdx + rcx]
+	dec rax
+	cmp rcx, rdx
+	mov ecx, 1
+	cmovbe rax, rcx
+	test rax, rax
+	mov qword ptr [rsp + 104], rsi
+	je .LBB288_158
+	cmp rax, 1
+	je .LBB288_176
+	cmp rax, 2
+	je .LBB288_158
+	mov rsi, qword ptr [rsp + 408]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rsi, rsi
+	je .LBB288_158
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rdi, qword ptr [rsp + 416]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov edx, 1
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:262
+		if layout.size() != 0 {
+	jmp .LBB288_158
+.LBB288_170:
+	mov rbx, qword ptr [rsp + 16]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:265
+		self.0 = FallibleBuilderInner::Done;
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	mov qword ptr [rbx], 47
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:266
+		return Ok(Some(Err(e.into())));
+	movzx eax, byte ptr [rsp + 1368]
+	mov byte ptr [rsp + 7], al
+	lea rcx, [rsp + 1368]
+	mov eax, dword ptr [rcx + 1]
+	mov ecx, dword ptr [rcx + 4]
+	mov dword ptr [rsp + 112], eax
+	mov dword ptr [rsp + 115], ecx
+	mov rax, qword ptr [rsp + 1376]
+	mov qword ptr [rsp + 64], rax
+	mov rax, qword ptr [rsp + 1384]
+	mov qword ptr [rsp + 104], rax
+	lea rax, [rsp + 1392]
+	movups xmm0, xmmword ptr [rax]
+	movaps xmmword ptr [rsp + 2576], xmm0
+	mov ebx, 32
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:316
+		}
+	jmp .LBB288_158
+.LBB288_172:
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:329
+		Ok(builder) => Ok(FallibleBuilder(FallibleBuilderInner::Processing {
+	mov rbp, qword ptr [rsp + 520]
+	mov rax, qword ptr [rsp + 560]
+	mov qword ptr [rsp + 160], rax
+	lea rax, [rsp + 528]
+	movups xmm0, xmmword ptr [rax]
+	movups xmm1, xmmword ptr [rax + 16]
+	movaps xmmword ptr [rsp + 176], xmm0
+	movaps xmmword ptr [rsp + 192], xmm1
+	mov edx, 712
+	lea r13, [rsp + 1360]
+	mov rdi, r13
+	lea rsi, [rsp + 568]
+	mov r12, qword ptr [rip + memcpy@GOTPCREL]
+	call r12
+.LBB288_173:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:913
+		Ok(t) => Ok(t),
+	movaps xmm0, xmmword ptr [rsp + 176]
+	movaps xmm1, xmmword ptr [rsp + 192]
+	movaps xmmword ptr [rsp + 112], xmm0
+	movaps xmmword ptr [rsp + 128], xmm1
+	mov edx, 712
+	lea rdi, [rsp + 2576]
+	mov rsi, r13
+	call r12
+	mov rax, qword ptr [rsp + 16]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	cmp dword ptr [rax], 47
+	ja .LBB288_175
+	mov rdi, qword ptr [rsp + 16]
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_175:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:653
+		*self = ReadXsoState::Parsing(
+	mov qword ptr [r14 + 1008], rbx
+	mov qword ptr [r14 + 1016], rbp
+	movaps xmm0, xmmword ptr [rsp + 112]
+	movaps xmm1, xmmword ptr [rsp + 128]
+	mov rax, qword ptr [rsp + 296]
+	movups xmmword ptr [rax + 16], xmm1
+	movups xmmword ptr [rax], xmm0
+	mov rax, qword ptr [rsp + 160]
+	mov qword ptr [r14 + 1056], rax
+	mov edx, 712
+	mov rdi, qword ptr [rsp + 304]
+	lea rsi, [rsp + 2576]
+	call qword ptr [rip + memcpy@GOTPCREL]
+	mov qword ptr [r14 + 1776], 0
+	mov rbp, qword ptr [rsp + 72]
+	mov r12, qword ptr [rsp + 8]
+	jmp .LBB288_159
+.LBB288_176:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	lea rdi, [rsp + 400]
+	call core::ptr::drop_in_place<(rxml::strings::Namespace,rxml_validation::strings::NcName)>
+	lea rdi, [rsp + 456]
+	call core::ptr::drop_in_place<rxml::xml_map::XmlMap<alloc::string::String>>
+	jmp .LBB288_158
+.LBB288_178:
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:224
+		self.0 = FallibleBuilderInner::Done;
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	jmp .LBB288_180
+.LBB288_179:
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:288
+		self.0 = FallibleBuilderInner::Done;
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_180:
+	mov qword ptr [rbx], 47
+	mov byte ptr [rsp + 7], 19
+	mov ebx, 34
+	lea rax, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.257]
+	mov qword ptr [rsp + 64], rax
+	mov esi, 34
+	jmp .LBB288_165
+	.p2align	4
+.LBB288_181:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:374
+		None => break Poll::Ready(None),
+	mov qword ptr [rsp + 2152], 33
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:372
+		return loop {
+	jmp .LBB288_259
+.LBB288_182:
+	mov qword ptr [rsp + 32], r15
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	cmp dword ptr [rbx], 47
+	ja .LBB288_184
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_184:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:641
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:642
+		return Poll::Ready(Err(io::Error::new(
+	mov edx, 38
+	mov edi, 21
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.31]
+	call qword ptr [rip + std::io::error::Error::new@GOTPCREL]
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+	mov r15, rax
+	mov bl, 22
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rbp, rbp
+	je .LBB288_187
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov edx, 1
+	mov rdi, r13
+	mov rsi, rbp
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+.LBB288_187:
+	mov rbp, r12
+	mov r12, qword ptr [rsp + 8]
+	lea r13, [rsp + 512]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	jmp .LBB288_237
+.LBB288_188:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:713
+		match builder.feed(ev, &ctx) {
+	cmp ebx, 32
+	lea r13, [rsp + 512]
+	movzx eax, byte ptr [rsp + 7]
+	mov rdx, qword ptr [rsp + 64]
+	je .LBB288_213
+	cmp ebx, 34
+	jne .LBB288_219
+	mov qword ptr [rsp + 32], r15
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:714
+		Err(err) => {
+	mov byte ptr [rsp + 1360], al
+	mov eax, dword ptr [rsp + 112]
+	mov ecx, dword ptr [rsp + 115]
+	lea rdx, [rsp + 1368]
+	mov dword ptr [rdx - 4], ecx
+	mov dword ptr [rdx - 7], eax
+	mov rax, qword ptr [rsp + 64]
+	mov qword ptr [rsp + 1368], rax
+	mov rax, qword ptr [rsp + 104]
+	mov qword ptr [rsp + 1376], rax
+	movaps xmm0, xmmword ptr [rsp + 2576]
+	lea rax, [rsp + 1384]
+	movups xmmword ptr [rax], xmm0
+	mov rbx, qword ptr [rsp + 16]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	cmp dword ptr [rbx], 47
+	ja .LBB288_192
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_192:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:715
+		*self = ReadXsoState::Done;
+	mov qword ptr [r14 + 1008], 50
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:760
+		match *self {
+	movabs rax, -9223372036854775808
+	cmp qword ptr [r14 + 152], rax
+	je .LBB288_253
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2846
+		let len = self.len;
+	mov rax, qword ptr [r14 + 168]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/capture.rs:78
+		buf.drain(..*consumed_up_to);
+	mov rsi, qword ptr [r14 + 176]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/index.rs:874
+		if end > len {
+	mov r15, rax
+	sub r15, rsi
+	jb .LBB288_313
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:1969
+		self.len = new_len;
+	mov qword ptr [r14 + 168], 0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/drain.rs:219
+		if drop_len == 0 {
+	test rsi, rsi
+	je .LBB288_250
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/drain.rs:181
+		if self.0.tail_len > 0 {
+	cmp rax, rsi
+	je .LBB288_252
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/capture.rs:78
+		buf.drain(..*consumed_up_to);
+	mov rdi, qword ptr [r14 + 160]
+	add rsi, rdi
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:638
+		crate::intrinsics::copy(src, dst, count)
+	mov rdx, r15
+	call qword ptr [rip + memmove@GOTPCREL]
+	jmp .LBB288_251
+.LBB288_197:
+	mov qword ptr [rsp + 32], r15
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:685
+		let ev = match ev {
+	mov r15, qword ptr [rsp + 328]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rax, qword ptr [rbx]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:685
+		let ev = match ev {
+	test r15, r15
+	je .LBB288_227
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	cmp eax, 47
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+	ja .LBB288_203
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	jmp .LBB288_203
+.LBB288_200:
+	mov qword ptr [rsp + 32], r15
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:633
+		match ev {
+	mov r15, qword ptr [rsp + 328]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rax, qword ptr [rbx]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:633
+		match ev {
+	test r15, r15
+	je .LBB288_229
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	cmp eax, 47
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+	ja .LBB288_203
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_203:
+	mov qword ptr [rbx], 50
+	jmp .LBB288_236
+.LBB288_204:
+	mov qword ptr [rsp + 32], r15
+	cmp dword ptr [rbx], 47
+	ja .LBB288_206
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_206:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:666
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:667
+		return Poll::Ready(Err(io::Error::new(
+	mov edx, 22
+	mov edi, 21
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.30]
+	call qword ptr [rip + std::io::error::Error::new@GOTPCREL]
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+	jmp .LBB288_235
+.LBB288_207:
+	mov qword ptr [rsp + 32], r15
+	mov qword ptr [rsp + 72], rbp
+	mov r15d, 22
+	mov bpl, 37
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	cmp dword ptr [rbx], 47
+	ja .LBB288_212
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.39]
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+	jmp .LBB288_234
+.LBB288_209:
+	mov qword ptr [rsp + 32], r15
+	cmp dword ptr [rbx], 47
+	ja .LBB288_211
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_211:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:662
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+	mov bl, 21
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:663
+		return Poll::Ready(Err(ReadXsoError::Footer));
+	jmp .LBB288_237
+.LBB288_212:
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.39]
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	jmp .LBB288_234
+.LBB288_213:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:723
+		Ok(Some(Err(err))) => {
+	mov byte ptr [rsp + 512], al
+	mov eax, dword ptr [rsp + 112]
+	mov ecx, dword ptr [rsp + 115]
+	lea r14, [rsp + 528]
+	mov dword ptr [r14 - 12], ecx
+	mov dword ptr [r14 - 15], eax
+	mov qword ptr [rsp + 520], rdx
+	mov rax, qword ptr [rsp + 104]
+	mov qword ptr [rsp + 528], rax
+	movaps xmm0, xmmword ptr [rsp + 2576]
+	movups xmmword ptr [r14 + 8], xmm0
+	mov rbx, qword ptr [rsp + 16]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	cmp dword ptr [rbx], 47
+	ja .LBB288_215
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_215:
+	mov qword ptr [rsp + 32], r15
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:724
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+	lea rbx, [rsp + 1360]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:725
+		log_recv(Some(&err), source.as_mut().stream_pinned().take_capture());
+	mov rdi, rbx
+	mov rsi, qword ptr [rsp + 152]
+	call tokio_xmpp::xmlstream::capture::CaptureBufRead<T>::take_capture
+	mov rdi, r13
+	mov rsi, rbx
+	call qword ptr [rip + tokio_xmpp::xmlstream::capture::log_recv@GOTPCREL]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:726
+		return Poll::Ready(Err(ReadXsoError::Parse(err)));
+	movzx ebx, byte ptr [rsp + 512]
+	mov eax, dword ptr [r14 - 15]
+	mov ecx, dword ptr [r14 - 12]
+	mov dword ptr [rsp + 40], eax
+	mov dword ptr [rsp + 43], ecx
+	mov r15, qword ptr [rsp + 520]
+	mov rax, qword ptr [r14 + 16]
+	mov qword ptr [rsp + 3312], rax
+	movups xmm0, xmmword ptr [r14]
+	movaps xmmword ptr [rsp + 3296], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:385
+		Some(read_state) => ready!(read_state.poll_advance(this.inner, cx)),
+	mov eax, dword ptr [rsp + 40]
+	mov ecx, dword ptr [rsp + 43]
+	mov dword ptr [rsp + 51], ecx
+	mov dword ptr [rsp + 48], eax
+	mov edx, 400
+	lea rdi, [rsp + 3704]
+	lea rsi, [rsp + 3296]
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+	call r14
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:387
+		let result = match result {
+	cmp bl, 21
+	jb .LBB288_244
+	movzx eax, bl
+	add eax, -21
+	lea rcx, [rip + .LJTI288_4]
+	movsxd rax, dword ptr [rcx + 4*rax]
+	add rax, rcx
+	jmp rax
+.LBB288_219:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:728
+		Ok(Some(Ok(value))) => {
+	mov qword ptr [rsp + 512], rbx
+	mov byte ptr [rsp + 520], al
+	mov eax, dword ptr [rsp + 112]
+	mov ecx, dword ptr [rsp + 115]
+	lea rdx, [rsp + 528]
+	mov dword ptr [rdx - 4], ecx
+	mov dword ptr [rdx - 7], eax
+	mov rax, qword ptr [rsp + 64]
+	mov qword ptr [rsp + 528], rax
+	mov rax, qword ptr [rsp + 104]
+	mov qword ptr [rsp + 536], rax
+	mov edx, 392
+	lea rdi, [rsp + 544]
+	lea rsi, [rsp + 2576]
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+	call r14
+	mov r14, qword ptr [rsp + 16]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	cmp dword ptr [r14], 47
+	ja .LBB288_221
+	mov rdi, r14
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_221:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:729
+		*self = ReadXsoState::Done;
+	mov qword ptr [r14], 50
+	lea r14, [rsp + 1360]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:730
+		log_recv(None, source.as_mut().stream_pinned().take_capture());
+	mov rdi, r14
+	mov rsi, qword ptr [rsp + 152]
+	call tokio_xmpp::xmlstream::capture::CaptureBufRead<T>::take_capture
+	xor edi, edi
+	mov rsi, r14
+	call qword ptr [rip + tokio_xmpp::xmlstream::capture::log_recv@GOTPCREL]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:731
+		return Poll::Ready(Ok(value));
+	mov eax, dword ptr [rsp + 112]
+	mov ecx, dword ptr [rsp + 115]
+	mov dword ptr [rsp + 40], eax
+	mov dword ptr [rsp + 43], ecx
+	mov edx, 400
+	lea rdi, [rsp + 3296]
+	lea rsi, [rsp + 536]
+	mov r15, qword ptr [rip + memcpy@GOTPCREL]
+	call r15
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:385
+		Some(read_state) => ready!(read_state.poll_advance(this.inner, cx)),
+	mov eax, dword ptr [rsp + 40]
+	mov ecx, dword ptr [rsp + 43]
+	mov dword ptr [rsp + 48], eax
+	mov dword ptr [rsp + 51], ecx
+	mov edx, 400
+	lea r14, [rsp + 3704]
+	mov rdi, r14
+	lea rsi, [rsp + 3296]
+	call r15
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:388
+		Ok(v) => Poll::Ready(Some(Ok(v))),
+	mov eax, dword ptr [rsp + 48]
+	mov ecx, dword ptr [rsp + 51]
+	lea rdx, [rsp + 1368]
+	mov dword ptr [rdx + 4], ecx
+	mov dword ptr [rdx + 1], eax
+	mov edx, 400
+	lea rdi, [rsp + 1384]
+	mov rsi, r14
+	call r15
+	mov qword ptr [rsp + 1360], rbx
+	movzx eax, byte ptr [rsp + 7]
+	mov byte ptr [rsp + 1368], al
+	mov rax, qword ptr [rsp + 64]
+	mov qword ptr [rsp + 1376], rax
+	mov rbx, qword ptr [rsp + 16]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rax, qword ptr [rbx]
+	cmp rax, 51
+	je .LBB288_226
+	cmp eax, 47
+	ja .LBB288_226
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_226:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:399
+		*this.read_state = Some(ReadXsoState::default());
+	mov qword ptr [rbx], 48
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:400
+		result
+	mov edx, 424
+	lea rdi, [rsp + 2152]
+	lea rsi, [rsp + 1360]
+	call r15
+	jmp .LBB288_259
+.LBB288_227:
+	mov qword ptr [rsp + 72], rbp
+	mov r15d, 31
+	mov bpl, 22
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	cmp eax, 47
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+	ja .LBB288_233
+	mov rbx, qword ptr [rsp + 16]
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.40]
+	jmp .LBB288_234
+.LBB288_229:
+	cmp eax, 47
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+	ja .LBB288_231
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_231:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:674
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+	mov bl, 23
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:675
+		return Poll::Ready(Err(ReadXsoError::SoftTimeout));
+	jmp .LBB288_237
+.LBB288_232:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:377
+		break Poll::Ready(Some(Err(ReadError::HardError(e))))
+	mov qword ptr [rsp + 2152], 32
+	mov byte ptr [rsp + 2160], 22
+	mov qword ptr [rsp + 2168], rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:372
+		return loop {
+	jmp .LBB288_259
+.LBB288_233:
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.40]
+	mov rbx, qword ptr [rsp + 16]
+.LBB288_234:
+	mov qword ptr [rbx], 50
+	movzx edi, bpl
+	mov rdx, r15
+	call qword ptr [rip + std::io::error::Error::new@GOTPCREL]
+	mov rbp, qword ptr [rsp + 72]
+.LBB288_235:
+	mov r15, rax
+.LBB288_236:
+	mov bl, 22
+.LBB288_237:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:385
+		Some(read_state) => ready!(read_state.poll_advance(this.inner, cx)),
+	mov eax, dword ptr [rsp + 40]
+	mov ecx, dword ptr [rsp + 43]
+	mov dword ptr [rsp + 48], eax
+	mov dword ptr [rsp + 51], ecx
+	mov edx, 400
+	lea rdi, [rsp + 3704]
+	lea rsi, [rsp + 3296]
+	call r14
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:387
+		let result = match result {
+	movzx ebx, bl
+	lea eax, [rbx - 21]
+	lea rcx, [rip + .LJTI288_4]
+	movsxd rax, dword ptr [rcx + 4*rax]
+	add rax, rcx
+	jmp rax
+	mov rbx, qword ptr [rsp + 16]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rax, qword ptr [rbx]
+	cmp rax, 51
+	je .LBB288_241
+	cmp eax, 47
+	ja .LBB288_241
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_241:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:392
+		*this.read_state = None;
+	mov qword ptr [rbx], 51
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:395
+		return Poll::Ready(Some(Err(ReadError::StreamFooterReceived)));
+	mov qword ptr [rsp + 2152], 32
+	mov byte ptr [rsp + 2160], 24
+	jmp .LBB288_242
+.LBB288_244:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:390
+		Err(ReadXsoError::Parse(e)) => Poll::Ready(Some(Err(ReadError::ParseError(e)))),
+	mov eax, dword ptr [rsp + 48]
+	mov ecx, dword ptr [rsp + 51]
+	lea rdx, [rsp + 1368]
+	mov dword ptr [rdx + 4], ecx
+	mov dword ptr [rdx + 1], eax
+	mov rax, qword ptr [rsp + 3720]
+	lea rcx, [rsp + 1384]
+	mov qword ptr [rcx + 16], rax
+	movups xmm0, xmmword ptr [rsp + 3704]
+	movups xmmword ptr [rcx], xmm0
+	mov qword ptr [rsp + 1360], 32
+	mov byte ptr [rsp + 1368], bl
+	mov qword ptr [rsp + 1376], r15
+	mov rbx, qword ptr [rsp + 16]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rax, qword ptr [rbx]
+	cmp rax, 51
+	je .LBB288_258
+	cmp eax, 47
+	ja .LBB288_258
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	jmp .LBB288_258
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:397
+		Err(ReadXsoError::SoftTimeout) => Poll::Ready(Some(Err(ReadError::SoftTimeout))),
+	mov qword ptr [rsp + 1360], 32
+	mov byte ptr [rsp + 1368], 21
+	mov rbx, qword ptr [rsp + 16]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rax, qword ptr [rbx]
+	cmp rax, 51
+	je .LBB288_258
+	cmp eax, 47
+	ja .LBB288_258
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+	jmp .LBB288_258
+.LBB288_250:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/drain.rs:181
+		if self.0.tail_len > 0 {
+	cmp rax, rsi
+	je .LBB288_252
+.LBB288_251:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:1969
+		self.len = new_len;
+	mov qword ptr [r14 + 168], r15
+.LBB288_252:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/capture.rs:79
+		*consumed_up_to = 0;
+	mov qword ptr [r14 + 176], 0
+.LBB288_253:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:719
+		err,
+	mov rax, qword ptr [rsp + 1392]
+	mov qword ptr [rsp + 544], rax
+	movups xmm0, xmmword ptr [rsp + 1360]
+	movups xmm1, xmmword ptr [rsp + 1376]
+	movaps xmmword ptr [rsp + 528], xmm1
+	movaps xmmword ptr [rsp + 512], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:717
+		return Poll::Ready(Err(io::Error::new(
+	mov edi, 21
+	mov rsi, r13
+	call qword ptr [rip + std::io::error::Error::new@GOTPCREL]
+	mov r15, rax
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:389
+		Err(ReadXsoError::Hard(e)) => Poll::Ready(Some(Err(ReadError::HardError(e)))),
+	mov qword ptr [rsp + 1360], 32
+	mov byte ptr [rsp + 1368], 22
+	mov qword ptr [rsp + 1376], r15
+	mov rbx, qword ptr [rsp + 16]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rax, qword ptr [rbx]
+	cmp rax, 51
+	je .LBB288_258
+	cmp eax, 47
+	ja .LBB288_258
+	mov rdi, rbx
+	call core::ptr::drop_in_place<xso::fromxml::FallibleBuilderInner<tokio_xmpp::xmlstream::xmpp::XmppStreamElementFromXmlBuilder,xso::error::Error>>
+.LBB288_258:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:399
+		*this.read_state = Some(ReadXsoState::default());
+	mov qword ptr [rbx], 48
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:400
+		result
+	mov edx, 424
+	lea rdi, [rsp + 2152]
+	lea rsi, [rsp + 1360]
+	call r14
+.LBB288_259:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/component/stream.rs:20
+		match Pin::new(&mut self.stream).poll_next(cx) {
+	mov r14, qword ptr [rsp + 2152]
+	cmp r14, 32
+	je .LBB288_242
+	cmp r14, 34
+	je .LBB288_128
+	mov ebx, 27
+	cmp r14, 33
+	je .LBB288_268
+	cmp r14, 26
+	ja .LBB288_264
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/component/stream.rs:21
+		Poll::Ready(Some(Ok(XmppStreamElement::Stanza(stanza)))) => {
+	mov edx, 416
+	lea rdi, [rsp + 4104]
+	lea rsi, [rsp + 2160]
+	call qword ptr [rip + memcpy@GOTPCREL]
+	mov rbx, r14
+.LBB288_264:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/component/stream.rs:33
+		}
+	lea rax, [r14 - 33]
+	cmp rax, 2
+	jb .LBB288_268
+	cmp r14, 32
+	je .LBB288_243
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/component/stream.rs:20
+		match Pin::new(&mut self.stream).poll_next(cx) {
+	cmp r14, 27
+	jb .LBB288_268
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/component/stream.rs:33
+		}
+	lea rdi, [rsp + 2152]
+	call core::ptr::drop_in_place<tokio_xmpp::xmlstream::xmpp::XmppStreamElement>
+	jmp .LBB288_268
+	.p2align	4
+.LBB288_128:
+	mov ebx, 28
+	jmp .LBB288_268
+.LBB288_242:
+	mov ebx, 27
+.LBB288_243:
+	lea rdi, [rsp + 2152]
+	call core::ptr::drop_in_place<core::result::Result<tokio_xmpp::xmlstream::xmpp::XmppStreamElement,tokio_xmpp::xmlstream::ReadError>>
+	.p2align	4
+.LBB288_268:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:264
+		self.bilock.unlock();
+	mov rax, qword ptr [r12]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:3975
+		SeqCst => intrinsics::atomic_xchg::<T, { AO::SeqCst }>(dst, val),
+	xor r14d, r14d
+	xchg qword ptr [rax + 1824], r14
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:177
+		match n as usize {
+	cmp r14, 1
+	movabs r15, -9223372036854775808
+	je .LBB288_272
+	test r14, r14
+	je .LBB288_305
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:188
+		Box::from_raw(n).wake();
+	mov rax, qword ptr [r14]
+	mov rdi, qword ptr [r14 + 8]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/task/wake.rs:448
+		unsafe { (this.waker.vtable.wake)(this.waker.data) };
+	call qword ptr [rax + 8]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov esi, 16
+	mov edx, 8
+	mov rdi, r14
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+.LBB288_272:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/fuse.rs:53
+		let item = ready!(this.stream.poll_next(cx));
+	cmp rbx, 27
+	je .LBB288_289
+	cmp rbx, 28
+	je .LBB288_285
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/fuse.rs:57
+		Poll::Ready(item)
+	mov edx, 416
+	lea rdi, [rsp + 1368]
+	lea rsi, [rsp + 4104]
+	call qword ptr [rip + memcpy@GOTPCREL]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:50
+		Poll::Ready(Some(item)) => {
+	mov qword ptr [rsp + 1360], rbx
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:517
+		if elem_size == 0 { usize::MAX } else { self.cap.as_inner() }
+	mov r14, qword ptr [rsp + 80]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2846
+		let len = self.len;
+	mov rbx, qword ptr [rsp + 96]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:51
+		if items.is_empty() {
+	test rbx, rbx
+	jne .LBB288_277
+	mov rax, qword ptr [rsp + 168]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:52
+		items.reserve(*this.cap);
+	mov rdx, qword ptr [rax]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:627
+		additional > self.capacity(elem_layout.size()).wrapping_sub(len)
+	cmp rdx, r14
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:562
+		if self.needs_to_grow(len, additional, elem_layout) {
+	ja .LBB288_283
+	xor ebx, ebx
+.LBB288_277:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:54
+		items.push(item);
+	mov edx, 424
+	mov rdi, r13
+	lea rsi, [rsp + 1360]
+	call qword ptr [rip + memcpy@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2604
+		if len == self.buf.capacity() {
+	cmp rbx, r14
+	jne .LBB288_279
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2605
+		self.buf.grow_one();
+	lea rdi, [rsp + 80]
+	call alloc::raw_vec::RawVec<T,A>::grow_one
+.LBB288_279:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mut_ptr.rs:1008
+		unsafe { intrinsics::offset(self, count) }
+	imul rdi, rbx, 424
+	add rdi, qword ptr [rsp + 88]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:1939
+		intrinsics::write_via_move(dst, src)
+	mov edx, 424
+	lea rsi, [rsp + 1360]
+	call qword ptr [rip + memcpy@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2610
+		self.len = len + 1;
+	inc rbx
+	mov qword ptr [rsp + 96], rbx
+	mov r14, qword ptr [rsp + 168]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:55
+		if items.len() >= *this.cap {
+	cmp rbx, qword ptr [r14]
+	jae .LBB288_290
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/fuse.rs:49
+		if *this.done {
+	cmp byte ptr [r14 + 16], 0
+	je .LBB288_62
+	jmp .LBB288_59
+.LBB288_281:
+	mov qword ptr [rsp + 32], r15
+	lea rcx, [rsp + 528]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:334
+		Err(FromEventsError::Mismatch { name, attrs })
+	movups xmm0, xmmword ptr [rcx]
+	movups xmm1, xmmword ptr [rcx + 16]
+	movaps xmmword ptr [rsp + 192], xmm1
+	movaps xmmword ptr [rsp + 176], xmm0
+	mov rcx, qword ptr [rsp + 560]
+	lea rdx, [rsp + 568]
+	movups xmm2, xmmword ptr [rdx]
+	movaps xmmword ptr [rsp + 1360], xmm2
+	mov rdx, qword ptr [rdx + 16]
+	mov qword ptr [rsp + 1376], rdx
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:914
+		Err(e) => Err(op(e)),
+	mov qword ptr [rsp + 2080], rax
+	lea rdx, [rsp + 2088]
+	movups xmmword ptr [rdx + 16], xmm1
+	movups xmmword ptr [rdx], xmm0
+	mov qword ptr [rsp + 2120], rcx
+	mov rax, qword ptr [rsp + 1376]
+	mov qword ptr [rdx + 56], rax
+	movaps xmm0, xmmword ptr [rsp + 1360]
+	movups xmmword ptr [rdx + 40], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:657
+		.map_err(|e| io::Error::new(io::ErrorKind::InvalidData, e))?,
+	mov edi, 21
+	lea rsi, [rsp + 2080]
+	call qword ptr [rip + std::io::error::Error::new@GOTPCREL]
+	mov r15, rax
+	mov bl, 22
+	mov r14, qword ptr [rip + memcpy@GOTPCREL]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:663
+		return Poll::Ready(Err(ReadXsoError::Footer));
+	jmp .LBB288_237
+.LBB288_283:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:563
+		do_reserve_and_handle(self, len, additional, elem_layout);
+	mov ecx, 8
+	mov r8d, 424
+	lea rdi, [rsp + 80]
+	xor esi, esi
+	call alloc::raw_vec::RawVecInner<A>::reserve::do_reserve_and_handle
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:517
+		if elem_size == 0 { usize::MAX } else { self.cap.as_inner() }
+	mov r14, qword ptr [rsp + 80]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2601
+		let len = self.len;
+	mov rbx, qword ptr [rsp + 96]
+	jmp .LBB288_277
+.LBB288_285:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2846
+		let len = self.len;
+	mov rbx, qword ptr [rsp + 96]
+.LBB288_286:
+	lea rcx, [r15 + 1]
+	mov r14, qword ptr [rsp + 80]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:44
+		return if items.is_empty() { Poll::Pending } else { Poll::Ready(Some(items)) }
+	test rbx, rbx
+	jne .LBB288_291
+	mov rax, r14
+	mov r14, rcx
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rax, rax
+	je .LBB288_292
+.LBB288_288:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov rdi, qword ptr [rsp + 88]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:991
+		intrinsics::unchecked_mul(self, rhs)
+	imul rsi, rax, 424
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov edx, 8
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:262
+		if layout.size() != 0 {
+	jmp .LBB288_292
+.LBB288_289:
+	mov rax, qword ptr [rsp + 168]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/fuse.rs:55
+		*this.done = true;
+	mov byte ptr [rax + 16], 1
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2846
+		let len = self.len;
+	mov rbx, qword ptr [rsp + 96]
+	jmp .LBB288_59
+.LBB288_290:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:56
+		return Poll::Ready(Some(items));
+	mov r14, qword ptr [rsp + 80]
+.LBB288_291:
+	lea rax, [rsp + 88]
+	movups xmm0, xmmword ptr [rax]
+	movaps xmmword ptr [rsp + 480], xmm0
+.LBB288_292:
+		// src/component/system.rs:31
+		while let Some(stanzas) = chunked.next().await {
+	lea rax, [r15 + 1]
+	cmp r14, rax
+	je .LBB288_298
+	mov rax, r15
+	mov r15, qword ptr [rsp + 24]
+	mov qword ptr [r15 + 64], r14
+	movaps xmm0, xmmword ptr [rsp + 480]
+	movups xmmword ptr [r15 + 72], xmm0
+	cmp r14, rax
+	jne .LBB288_19
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/non_null.rs:437
+		unsafe { &*self.as_ptr().cast_const() }
+	mov rax, qword ptr [r15 + 48]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:4007
+		Release => intrinsics::atomic_xsub::<T, { AO::Release }>(dst, val),
+	lock dec	qword ptr [rax]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2642
+		if self.inner().strong.fetch_sub(1, Release) != 1 {
+	jne .LBB288_296
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	lea rdi, [r15 + 48]
+	#MEMBARRIER
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2685
+		self.drop_slow();
+	call alloc::sync::Arc<T,A>::drop_slow
+.LBB288_296:
+		// src/component/system.rs:41
+		});
+	mov rdi, r15
+	call core::ptr::drop_in_place<bevy_tokio_tasks::TaskContext>
+	mov cl, 1
+	xor eax, eax
+	jmp .LBB288_302
+.LBB288_298:
+	mov al, 1
+	mov cl, 3
+		// src/component/system.rs:31
+		while let Some(stanzas) = chunked.next().await {
+	jmp .LBB288_302
+.LBB288_299:
+	mov rdi, qword ptr [rsp + 56]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/task/coop/mod.rs:360
+		register_waker(cx);
+	call qword ptr [rip + tokio::task::coop::register_waker@GOTPCREL]
+	mov byte ptr [rsp + 514], 0
+	mov word ptr [rsp + 512], 0
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	lea rdi, [rsp + 513]
+	call qword ptr [rip + <tokio::task::coop::RestoreOnPending as core::ops::drop::Drop>::drop@GOTPCREL]
+.LBB288_301:
+	mov byte ptr [rbx], 3
+	mov al, 1
+	mov cl, 4
+.LBB288_302:
+	mov rdx, qword ptr [rsp + 24]
+	mov byte ptr [rdx + 105], cl
+	add rsp, 4520
+	.cfi_def_cfa_offset 56
+	pop rbx
+	.cfi_def_cfa_offset 48
+	pop r12
+	.cfi_def_cfa_offset 40
+	pop r13
+	.cfi_def_cfa_offset 32
+	pop r14
+	.cfi_def_cfa_offset 24
+	pop r15
+	.cfi_def_cfa_offset 16
+	pop rbp
+	.cfi_def_cfa_offset 8
+	ret
+.LBB288_303:
+	.cfi_def_cfa_offset 4576
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:1009
+		None => unwrap_failed(),
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.66]
+	call qword ptr [rip + core::option::unwrap_failed@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_304:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/rt.rs:196
+		Arguments { pieces, fmt: None, args: &[] }
+	lea rax, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.42]
+	mov qword ptr [rsp + 512], rax
+	mov qword ptr [rsp + 520], 1
+	mov qword ptr [rsp + 528], 8
+	xorps xmm0, xmm0
+	movups xmmword ptr [rsp + 536], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:739
+		ReadXsoState::Done => panic!("future polled after completion"),
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.43]
+	lea rdi, [rsp + 512]
+	call qword ptr [rip + core::panicking::panic_fmt@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_305:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:180
+		0 => panic!("invalid unlocked state"),
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.60]
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.62]
+	mov esi, 22
+	call qword ptr [rip + core::panicking::panic@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_306:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/rt.rs:196
+		Arguments { pieces, fmt: None, args: &[] }
+	lea rax, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.265]
+	mov qword ptr [rsp + 512], rax
+	mov qword ptr [rsp + 520], 1
+	mov qword ptr [rsp + 528], 8
+	xorps xmm0, xmm0
+	movups xmmword ptr [rsp + 536], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:313
+		panic!("FromEventsBuilder called after it returned a value")
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.266]
+	lea rdi, [rsp + 512]
+	call qword ptr [rip + core::panicking::panic_fmt@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_307:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:353
+		Err(_) => handle_alloc_error(layout),
+	mov edi, 8
+	mov esi, 64
+	call qword ptr [rip + alloc::alloc::handle_alloc_error@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_308:
+	mov edi, 8
+	mov esi, 40
+	call qword ptr [rip + alloc::alloc::handle_alloc_error@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_309:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/result.rs:1119
+		Err(e) => unwrap_failed(msg, &e),
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.91]
+	lea rcx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.131]
+	lea r8, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.92]
+	lea rdx, [rsp + 400]
+	mov esi, 54
+	call qword ptr [rip + core::result::unwrap_failed@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_310:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/index.rs:875
+		slice_end_index_len_fail(end, len);
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.183]
+	mov rdi, rsi
+	mov rsi, rax
+	call qword ptr [rip + core::slice::index::slice_end_index_len_fail@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_311:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/rt.rs:214
+		Arguments { pieces, fmt: None, args }
+	lea rax, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.344]
+	mov qword ptr [rsp + 2576], rax
+	mov qword ptr [rsp + 2584], 1
+	mov qword ptr [rsp + 2592], 8
+	xorps xmm0, xmm0
+	movups xmmword ptr [rsp + 2600], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:375
+		Some(Ok(_)) => unreachable!("xml parser allowed data after stream footer"),
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.346]
+	lea rdi, [rsp + 2576]
+	call qword ptr [rip + core::panicking::panic_fmt@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_312:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:964
+		None => expect_failed(msg),
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.262]
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.263]
+	mov esi, 39
+	call qword ptr [rip + core::option::expect_failed@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_313:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/slice/index.rs:875
+		slice_end_index_len_fail(end, len);
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.183]
+	mov rdi, rsi
+	mov rsi, rax
+	call qword ptr [rip + core::slice::index::slice_end_index_len_fail@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_314:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:238
+		})).is_err() {
+	mov rdi, rax
+	mov rsi, rdx
+	call core::ptr::drop_in_place<core::option::Option<alloc::boxed::Box<dyn core::ops::function::FnMut<(&mut bevy_ecs::world::World,&mut bevy_ecs::world::World)>+Output = ()+core::marker::Send>>>
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/rt.rs:196
+		Arguments { pieces, fmt: None, args: &[] }
+	lea rax, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.88]
+	mov qword ptr [rsp + 512], rax
+	mov qword ptr [rsp + 520], 1
+	mov qword ptr [rsp + 528], 8
+	xorps xmm0, xmm0
+	movups xmmword ptr [rsp + 536], xmm0
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:239
+		panic!("Failed to send operation to be run on main thread");
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.89]
+	lea rdi, [rsp + 512]
+	call qword ptr [rip + core::panicking::panic_fmt@GOTPCREL]
+	jmp .LBB288_16
+.LBB288_316:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/fmt/rt.rs:214
+		Arguments { pieces, fmt: None, args }
+	lea rax, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.259]
+	mov qword ptr [rsp + 512], rax
+	mov qword ptr [rsp + 520], 1
+	mov qword ptr [rsp + 528], 8
+	xorps xmm0, xmm0
+	movups xmmword ptr [rsp + 536], xmm0
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:274
+		None => unreachable!("fallible parsing continued beyond end of element"),
+	lea rsi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.261]
+	lea rdi, [rsp + 512]
+	call qword ptr [rip + core::panicking::panic_fmt@GOTPCREL]
+	jmp .LBB288_16
+	mov r13, rax
+	lea rdi, [rsp + 1360]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/stream/stream/ready_chunks.rs:58
+		}
+	call core::ptr::drop_in_place<tokio_xmpp::event::Stanza>
+	jmp .LBB288_440
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+	jmp .LBB288_321
+.LBB288_321:
+	mov r13, rax
+	mov qword ptr [rbx], 47
+	jmp .LBB288_410
+	mov r13, rax
+	jmp .LBB288_352
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:399
+		*this.read_state = Some(ReadXsoState::default());
+	mov qword ptr [rbx], 48
+	jmp .LBB288_355
+	jmp .LBB288_341
+	jmp .LBB288_341
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:724
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+	jmp .LBB288_346
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:729
+		*self = ReadXsoState::Done;
+	mov qword ptr [r14], 50
+	jmp .LBB288_348
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:715
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+	jmp .LBB288_387
+	mov r13, rax
+	jmp .LBB288_448
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:696
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:698
+		}
+	mov rdi, r15
+	call core::ptr::drop_in_place<std::io::error::Error>
+	jmp .LBB288_332
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:678
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:680
+		}
+	mov rdi, r15
+	call core::ptr::drop_in_place<std::io::error::Error>
+.LBB288_332:
+	mov bl, 1
+	mov al, 1
+	mov cl, 1
+	mov dl, 1
+	jmp .LBB288_419
+	mov r13, rax
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	lea rdi, [rsp + 456]
+	call core::ptr::drop_in_place<rxml::xml_map::XmlMap<alloc::string::String>>
+	jmp .LBB288_361
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+	mov r13, rax
+	jmp .LBB288_388
+	mov r13, rax
+	mov r15, qword ptr [rsp + 24]
+		// src/component/system.rs:28
+		runtime.spawn_background_task(move |mut ctx| async move {
+	mov byte ptr [r15 + 105], 2
+	mov rdi, r13
+	call _Unwind_Resume@PLT
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:653
+		*self = ReadXsoState::Parsing(
+	mov qword ptr [r14 + 1008], rbx
+	mov qword ptr [r14 + 1016], rbp
+	movaps xmm0, xmmword ptr [rsp + 112]
+	movaps xmm1, xmmword ptr [rsp + 128]
+	mov rax, qword ptr [rsp + 296]
+	movups xmmword ptr [rax + 16], xmm1
+	movups xmmword ptr [rax], xmm0
+	mov rax, qword ptr [rsp + 160]
+	mov qword ptr [r14 + 1056], rax
+	lea rsi, [rsp + 2576]
+	mov edx, 712
+	mov rdi, qword ptr [rsp + 304]
+	call qword ptr [rip + memcpy@GOTPCREL]
+	mov qword ptr [r14 + 1776], 0
+	mov bl, 1
+	xor ecx, ecx
+	mov al, 1
+	jmp .LBB288_362
+	jmp .LBB288_341
+	jmp .LBB288_341
+.LBB288_341:
+	mov r13, rax
+	mov qword ptr [rbx], 50
+	jmp .LBB288_418
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:392
+		*this.read_state = None;
+	mov qword ptr [rbx], 51
+	jmp .LBB288_436
+	mov r13, rax
+	jmp .LBB288_361
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:265
+		self.0 = FallibleBuilderInner::Done;
+	mov qword ptr [rbx], 47
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:269
+		}
+	lea rdi, [rsp + 1368]
+	call core::ptr::drop_in_place<xso::error::Error>
+	movabs r14, -9223372036854775808
+	jmp .LBB288_412
+	mov r13, rax
+.LBB288_346:
+	lea rdi, [rsp + 512]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:727
+		}
+	call core::ptr::drop_in_place<xso::error::Error>
+	mov r12, qword ptr [rsp + 8]
+	jmp .LBB288_388
+	mov r13, rax
+.LBB288_348:
+	lea rdi, [rsp + 512]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:732
+		}
+	call core::ptr::drop_in_place<tokio_xmpp::xmlstream::xmpp::XmppStreamElement>
+	mov r12, qword ptr [rsp + 8]
+	jmp .LBB288_388
+	mov r13, rax
+	jmp .LBB288_352
+	mov r13, rax
+	lea rdi, [rsp + 1280]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:659
+		}
+	call core::ptr::drop_in_place<rxml::xml_map::XmlMap<alloc::string::String>>
+	lea rdi, [rsp + 208]
+	call core::ptr::drop_in_place<(rxml::strings::Namespace,rxml_validation::strings::NcName)>
+.LBB288_352:
+	mov bl, 1
+	xor ecx, ecx
+	mov al, 1
+	jmp .LBB288_389
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:299
+		self.0 = FallibleBuilderInner::Done;
+	mov qword ptr [r13], 47
+	mov r13, rax
+	lea rdi, [rsp + 512]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:301
+		}
+	call core::ptr::drop_in_place<xso::error::Error>
+	movabs r14, -9223372036854775808
+	jmp .LBB288_411
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:399
+		*this.read_state = Some(ReadXsoState::default());
+	mov qword ptr [rbx], 48
+	lea rsi, [rsp + 512]
+	mov edx, 768
+	mov rdi, qword ptr [rsp + 32]
+	call qword ptr [rip + memcpy@GOTPCREL]
+.LBB288_355:
+	lea rdi, [rsp + 1360]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	call core::ptr::drop_in_place<core::result::Result<tokio_xmpp::xmlstream::xmpp::XmppStreamElement,tokio_xmpp::xmlstream::ReadError>>
+	mov r12, qword ptr [rsp + 8]
+	jmp .LBB288_436
+	mov r15, rax
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:641
+		*self = ReadXsoState::Done;
+	mov qword ptr [rbx], 50
+	jmp .LBB288_396
+	jmp .LBB288_417
+	jmp .LBB288_395
+	mov r13, rax
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:244
+		self.0 = FallibleBuilderInner::Done;
+	mov qword ptr [rbp], 47
+	lea rdi, [rsp + 512]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:246
+		}
+	call core::ptr::drop_in_place<tokio_xmpp::xmlstream::xmpp::XmppStreamElement>
+	movabs r14, -9223372036854775808
+	mov r12, qword ptr [rsp + 8]
+	jmp .LBB288_412
+	mov r13, rax
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	lea rdi, [rsp + 456]
+	call core::ptr::drop_in_place<rxml::xml_map::XmlMap<alloc::string::String>>
+.LBB288_361:
+	xor ebx, ebx
+	xor eax, eax
+	xor ecx, ecx
+.LBB288_362:
+	xor edx, edx
+	movabs r14, -9223372036854775808
+	mov r12, qword ptr [rsp + 8]
+	jmp .LBB288_420
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+	mov r13, rax
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1292
+		self.inner = None;
+	mov qword ptr [r14], 0
+	jmp .LBB288_391
+	jmp .LBB288_371
+	jmp .LBB288_371
+	mov rdx, rax
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:256
+		self.0 = FallibleBuilderInner::Failed {
+	mov qword ptr [r14 + 1008], 46
+	lea rcx, [rsp + 1368]
+	mov rax, qword ptr [rcx + 32]
+	mov qword ptr [r15 + 32], rax
+	movups xmm0, xmmword ptr [rcx]
+	movups xmm1, xmmword ptr [rcx + 16]
+	movups xmmword ptr [r15 + 16], xmm1
+	movups xmmword ptr [r15], xmm0
+	mov qword ptr [r14 + 1056], r13
+	mov r13, rdx
+	jmp .LBB288_388
+	jmp .LBB288_435
+	mov r13, rax
+	jmp .LBB288_446
+.LBB288_371:
+	mov r13, rax
+	jmp .LBB288_401
+	mov r13, rax
+	lea rdi, [rsp + 512]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2614
+		}
+	call core::ptr::drop_in_place<tokio_xmpp::event::Stanza>
+	jmp .LBB288_440
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/vec/mod.rs:2599
+		pub fn push_mut(&mut self, value: T) -> &mut T {
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+	mov r13, rax
+	jmp .LBB288_388
+	mov r13, rax
+	lea rdi, [rsp + 2152]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	call qword ptr [rip + <tokio::task::coop::RestoreOnPending as core::ops::drop::Drop>::drop@GOTPCREL]
+	jmp .LBB288_391
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.49.0/src/sync/oneshot.rs:1315
+		fn poll_recv(&self, cx: &mut Context<'_>) -> Poll<Result<T, RecvError>> {
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+	mov r13, rax
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	jmp .LBB288_439
+	mov r13, rax
+	mov r12, qword ptr [rsp + 8]
+	jmp .LBB288_436
+	jmp .LBB288_395
+	mov r13, rax
+	lea rdi, [rsp + 208]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:735
+		}
+	call core::ptr::drop_in_place<rxml::parser::namespaces::Event>
+	jmp .LBB288_388
+	jmp .LBB288_435
+	jmp .LBB288_417
+	jmp .LBB288_417
+	jmp .LBB288_415
+	jmp .LBB288_435
+	mov r13, rax
+.LBB288_387:
+	lea rdi, [rsp + 1360]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:722
+		}
+	call core::ptr::drop_in_place<xso::error::Error>
+	mov r12, qword ptr [rsp + 8]
+.LBB288_388:
+	xor ebx, ebx
+	xor eax, eax
+	xor ecx, ecx
+.LBB288_389:
+	xor edx, edx
+	jmp .LBB288_419
+	mov r13, rax
+.LBB288_391:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:242
+		.await
+	mov rdi, r14
+	call core::ptr::drop_in_place<tokio::sync::oneshot::Receiver<alloc::boxed::Box<xmpp::component::stanza_matcher::HCons<xmpp::component::stanza_matcher::Matcher<api_sketching::TestMatcher>,xmpp::component::stanza_matcher::HNil>>>>
+	mov rbp, qword ptr [rsp + 72]
+	jmp .LBB288_404
+	mov r13, rax
+	lea rdi, [rsp + 1360]
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:383
+		};
+	call core::ptr::drop_in_place<core::result::Result<rxml::parser::namespaces::Event,tokio_xmpp::xmlstream::common::RawError>>
+	jmp .LBB288_436
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/mod.rs:367
+		fn poll_next(self: Pin<&mut Self>, cx: &mut Context<'_>) -> Poll<Option<Self::Item>> {
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+.LBB288_395:
+	mov r15, rax
+.LBB288_396:
+	movabs r14, -9223372036854775808
+	mov r12, qword ptr [rsp + 8]
+	mov bl, 1
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rbp, rbp
+	je .LBB288_398
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov edx, 1
+	mov rdi, r13
+	mov rsi, rbp
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+.LBB288_398:
+	xor eax, eax
+	mov cl, 1
+	xor edx, edx
+	mov r13, r15
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	jmp .LBB288_420
+	mov r13, rax
+	jmp .LBB288_404
+	mov r13, rax
+	lea rdi, [rsp + 512]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:262
+		}
+	call core::ptr::drop_in_place<bevy_tokio_tasks::TaskContext::run_on_main_thread<xmpp::component::system::spawn_stanza_workers<xmpp::component::stanza_matcher::HCons<xmpp::component::stanza_matcher::Matcher<api_sketching::TestMatcher>,xmpp::component::stanza_matcher::HNil>>::{{closure}}::{{closure}}::{{closure}},alloc::boxed::Box<xmpp::component::stanza_matcher::HCons<xmpp::component::stanza_matcher::Matcher<api_sketching::TestMatcher>,xmpp::component::stanza_matcher::HNil>>>::{{closure}}::{{closure}}>
+.LBB288_401:
+	lea rdi, [rsp + 2576]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:244
+		}
+	call core::ptr::drop_in_place<tokio::sync::oneshot::Receiver<alloc::boxed::Box<xmpp::component::stanza_matcher::HCons<xmpp::component::stanza_matcher::Matcher<api_sketching::TestMatcher>,xmpp::component::stanza_matcher::HNil>>>>
+	jmp .LBB288_404
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:260
+		pub fn new(x: T) -> Self {
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+	mov r13, rax
+	lea rdi, [rsp + 512]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:262
+		}
+	call core::ptr::drop_in_place<alloc::sync::ArcInner<tokio::sync::oneshot::Inner<alloc::boxed::Box<xmpp::component::stanza_matcher::HCons<xmpp::component::stanza_matcher::Matcher<api_sketching::TestMatcher>,xmpp::component::stanza_matcher::HNil>>>>>
+.LBB288_404:
+	mov rax, qword ptr [rsp + 24]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:244
+		}
+	cmp byte ptr [rax + 161], 0
+	je .LBB288_406
+	lea rdi, [rsp + 1360]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	call core::ptr::drop_in_place<alloc::vec::Vec<tokio_xmpp::event::Stanza>>
+.LBB288_406:
+	mov rax, qword ptr [rsp + 24]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:244
+		}
+	mov byte ptr [rax + 161], 0
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:232
+		{
+	mov byte ptr [rax + 160], 2
+	jmp .LBB288_18
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/boxed.rs:260
+		pub fn new(x: T) -> Self {
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/bevy-tokio-tasks-0.18.0/src/lib.rs:232
+		{
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+	mov r13, rax
+.LBB288_410:
+	movabs r14, -9223372036854775808
+.LBB288_411:
+	lea rdi, [rsp + 400]
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:316
+		}
+	call core::ptr::drop_in_place<rxml::parser::namespaces::Event>
+.LBB288_412:
+	xor ebx, ebx
+	xor eax, eax
+	xor ecx, ecx
+	xor edx, edx
+	jmp .LBB288_420
+		// ~/everyday/dev/mboa/xmpp-rs/xso/src/fromxml.rs:204
+		fn feed(&mut self, ev: rxml::Event, ctx: &Context<'_>) -> Result<Option<Self::Output>, Error> {
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+.LBB288_415:
+	mov r13, rax
+	jmp .LBB288_440
+.LBB288_417:
+	mov r13, rax
+.LBB288_418:
+	mov bl, 1
+	xor edx, edx
+	mov al, 1
+	mov cl, 1
+.LBB288_419:
+	movabs r14, -9223372036854775808
+.LBB288_420:
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:741
+		}
+	mov rsi, qword ptr [rsp + 320]
+	movabs rdi, -9223372036854775803
+	cmp rsi, rdi
+	je .LBB288_436
+	movabs rdi, -9223372036854775802
+	cmp rsi, rdi
+	jne .LBB288_424
+	mov rdi, qword ptr [rsp + 328]
+	test rdi, rdi
+	sete al
+	or dl, al
+	jne .LBB288_436
+	call core::ptr::drop_in_place<std::io::error::Error>
+	jmp .LBB288_436
+.LBB288_424:
+	test bl, bl
+	je .LBB288_436
+	lea rdi, [r14 + rsi]
+	dec rdi
+	cmp rsi, r14
+	mov edx, 1
+	cmova rdx, rdi
+	cmp rdx, 3
+	je .LBB288_430
+	cmp rdx, 1
+	jne .LBB288_436
+	test cl, cl
+	je .LBB288_436
+	lea rdi, [rsp + 320]
+	call core::ptr::drop_in_place<(rxml::strings::Namespace,rxml_validation::strings::NcName)>
+	lea rdi, [rsp + 376]
+	call core::ptr::drop_in_place<rxml::xml_map::XmlMap<alloc::string::String>>
+	jmp .LBB288_436
+.LBB288_430:
+	test al, al
+	je .LBB288_436
+	mov rsi, qword ptr [rsp + 328]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rsi, rsi
+	je .LBB288_436
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:741
+		}
+	mov rdi, qword ptr [rsp + 336]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov edx, 1
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:262
+		if layout.size() != 0 {
+	jmp .LBB288_436
+		// ~/everyday/dev/mboa/xmpp-rs/tokio-xmpp/src/xmlstream/common.rs:612
+		pub(super) fn poll_advance<Io: AsyncBufRead>(
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+.LBB288_435:
+	mov r13, rax
+.LBB288_436:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:264
+		self.bilock.unlock();
+	mov rax, qword ptr [r12]
+	xor r14d, r14d
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:3975
+		SeqCst => intrinsics::atomic_xchg::<T, { AO::SeqCst }>(dst, val),
+	xchg qword ptr [rax + 1824], r14
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:177
+		match n as usize {
+	cmp r14, 1
+	je .LBB288_440
+	test r14, r14
+	je .LBB288_450
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:188
+		Box::from_raw(n).wake();
+	mov rax, qword ptr [r14]
+	mov rdi, qword ptr [r14 + 8]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/task/wake.rs:448
+		unsafe { (this.waker.vtable.wake)(this.waker.data) };
+	call qword ptr [rax + 8]
+.LBB288_439:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:188
+		Box::from_raw(n).wake();
+	mov esi, 16
+	mov edx, 8
+	mov rdi, r14
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+.LBB288_440:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	mov r14, qword ptr [rsp + 88]
+	mov rbx, qword ptr [rsp + 96]
+	inc rbx
+	mov rdi, r14
+	.p2align	4
+.LBB288_441:
+	cmp rbx, 1
+	je .LBB288_443
+	lea r15, [rdi + 424]
+	dec rbx
+	call core::ptr::drop_in_place<tokio_xmpp::event::Stanza>
+	mov rdi, r15
+	jmp .LBB288_441
+.LBB288_443:
+	mov rax, qword ptr [rsp + 80]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rax, rax
+	je .LBB288_445
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:991
+		intrinsics::unchecked_mul(self, rhs)
+	imul rsi, rax, 424
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov edx, 8
+	mov rdi, r14
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+.LBB288_445:
+	mov r15, qword ptr [rsp + 24]
+.LBB288_446:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/non_null.rs:437
+		unsafe { &*self.as_ptr().cast_const() }
+	mov rax, qword ptr [r15 + 48]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/sync/atomic.rs:4007
+		Release => intrinsics::atomic_xsub::<T, { AO::Release }>(dst, val),
+	lock dec	qword ptr [rax]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2642
+		if self.inner().strong.fetch_sub(1, Release) != 1 {
+	jne .LBB288_448
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	lea rdi, [r15 + 48]
+	#MEMBARRIER
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/sync.rs:2685
+		self.drop_slow();
+	call alloc::sync::Arc<T,A>::drop_slow
+.LBB288_448:
+		// src/component/system.rs:41
+		});
+	mov rdi, r15
+	call core::ptr::drop_in_place<bevy_tokio_tasks::TaskContext>
+		// src/component/system.rs:28
+		runtime.spawn_background_task(move |mut ctx| async move {
+	mov byte ptr [r15 + 105], 2
+	mov rdi, r13
+	call _Unwind_Resume@PLT
+.LBB288_450:
+		// ~/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/futures-util-0.3.31/src/lock/bilock.rs:180
+		0 => panic!("invalid unlocked state"),
+	lea rdi, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.60]
+	lea rdx, [rip + .Lanon.13af49fbaf1c1a65ef6d8496418418f5.62]
+	mov esi, 22
+	call qword ptr [rip + core::panicking::panic@GOTPCREL]
+	jmp .LBB288_16
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/alloc.rs:114
+		unsafe { __rust_dealloc(ptr, layout.size(), layout.align()) }
+	mov esi, 16
+	mov edx, 8
+	mov rdi, r14
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+		// src/component/system.rs:28
+		runtime.spawn_background_task(move |mut ctx| async move {
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+	.p2align	4
+.LBB288_455:
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ptr/mod.rs:804
+		pub unsafe fn drop_in_place<T: PointeeSized>(to_drop: *mut T) {
+	dec rbx
+	je .LBB288_457
+	lea r12, [r15 + 424]
+	mov rdi, r15
+	call core::ptr::drop_in_place<tokio_xmpp::event::Stanza>
+	mov r15, r12
+	jmp .LBB288_455
+.LBB288_457:
+	mov rax, qword ptr [rsp + 80]
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/alloc/src/raw_vec/mod.rs:527
+		if elem_layout.size() == 0 || self.cap.as_inner() == 0 {
+	test rax, rax
+	je .LBB288_460
+		// ~/.rustup/toolchains/1.90-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/num/uint_macros.rs:991
+		intrinsics::unchecked_mul(self, rhs)
+	imul rsi, rax, 424
+	mov edx, 8
+	mov rdi, r14
+	call qword ptr [rip + __rustc::__rust_dealloc@GOTPCREL]
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]
+.LBB288_460:
+	call qword ptr [rip + core::panicking::panic_in_cleanup@GOTPCREL]

xmpp/src/component/mod.rs 🔗

@@ -5,57 +5,3 @@ mod system;
 pub use stanza_matcher::{
     HCons, HNil, Matcher, MatcherRegistry, StanzaDispatch, StanzaMatcher, StanzaMatcherPlugin,
 };
-
-#[cfg(test)]
-mod test {
-    use super::*;
-    use crate::component::resource::{ComponentConfig, XmppComponent};
-    use bevy_app::{App, RunMode, ScheduleRunnerPlugin};
-    use bevy_ecs::message::{Message, MessageReader};
-    use bevy_tokio_tasks::TokioTasksPlugin;
-    use tokio_xmpp::Stanza;
-
-    #[derive(Message)]
-    struct TestMessage {
-        content: String,
-    }
-
-    #[derive(Clone)]
-    struct TestMatcher;
-
-    impl StanzaMatcher for TestMatcher {
-        type Message = TestMessage;
-
-        fn matches(&mut self, candidate: &Stanza) -> Option<Self::Message> {
-            match candidate {
-                Stanza::Message(msg) => {
-                    let body = msg.bodies.get("")?.clone();
-                    Some(TestMessage { content: body })
-                }
-                _ => None,
-            }
-        }
-    }
-
-    fn log_test_messages(mut messages: MessageReader<TestMessage>) {
-        for msg in messages.read() {
-            println!("Received message: {}", msg.content);
-        }
-    }
-
-    #[test]
-    fn api_sketching() {
-        println!("finished connecting");
-
-        App::new()
-            .add_plugins(ScheduleRunnerPlugin {
-                run_mode: RunMode::Loop { wait: None },
-            })
-            .add_plugins(TokioTasksPlugin::default())
-            .add_plugins(StanzaMatcherPlugin::new().matcher(TestMatcher))
-            .init_resource::<ComponentConfig>()
-            .init_resource::<XmppComponent>()
-            .add_systems(bevy_app::Update, log_test_messages)
-            .run();
-    }
-}

xmpp/src/component/system.rs 🔗

@@ -11,6 +11,11 @@ pub(crate) fn spawn_stanza_workers<D: StanzaDispatch>(world: &mut World) {
     };
     let XmppComponent { reader, writer } = xmpp;
 
+    let registry = world
+        .remove_resource::<MatcherRegistry<D>>()
+        .expect("MatcherRegistry should exist");
+    let mut dispatchers = Box::new(registry.dispatchers);
+
     let batch_size = world
         .get_resource::<ComponentConfig>()
         .map(|c| c.max_stanzas_per_tick)
@@ -24,17 +29,14 @@ pub(crate) fn spawn_stanza_workers<D: StanzaDispatch>(world: &mut World) {
         let mut chunked = reader.ready_chunks(batch_size);
 
         while let Some(stanzas) = chunked.next().await {
-            ctx.run_on_main_thread(move |main_ctx| {
-                let world = &mut *main_ctx.world;
-                let mut registry = world
-                    .remove_resource::<MatcherRegistry<D>>()
-                    .expect("MatcherRegistry should exist");
-                for stanza in stanzas {
-                    registry.dispatchers.dispatch(&stanza, world);
-                }
-                world.insert_resource(registry);
-            })
-            .await;
+            dispatchers = ctx
+                .run_on_main_thread(move |main_ctx| {
+                    for stanza in stanzas {
+                        dispatchers.dispatch(&stanza, main_ctx.world);
+                    }
+                    dispatchers
+                })
+                .await;
         }
     });