From 39f87ea7a9d0f26a3a848985a9ce63f6ba725094 Mon Sep 17 00:00:00 2001 From: Phillip Davis Date: Wed, 21 Jan 2026 12:51:14 -0500 Subject: [PATCH] less flagrant move in the loop this way we can prevent having to remove and re-insert the resource several times per call to `run_on_main_thread` --- 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, 3209 insertions(+), 65 deletions(-) create mode 100644 xmpp/examples/api_sketching.rs create mode 100644 xmpp/out.txt diff --git a/xmpp/examples/api_sketching.rs b/xmpp/examples/api_sketching.rs new file mode 100644 index 0000000000000000000000000000000000000000..bfe616d6b5de7281c0b50eaa858de0f75ccd87ba --- /dev/null +++ b/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 { + match candidate { + Stanza::Message(msg) => { + let body = msg.bodies.get("")?.clone(); + Some(TestMessage { content: body }) + } + _ => None, + } + } +} + +fn log_test_messages(mut messages: MessageReader) { + 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::() + .init_resource::() + .add_systems(bevy_app::Update, log_test_messages) + .run(); +} diff --git a/xmpp/out.txt b/xmpp/out.txt new file mode 100644 index 0000000000000000000000000000000000000000..8e4c3d858d5a8d0afcba566427d74db4c625cd2e --- /dev/null +++ b/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::(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::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,xmpp::component::stanza_matcher::HNil>>::{{closure}}::{{closure}}::{{closure}},alloc::boxed::Box,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(&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::(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::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::); + 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(to_drop: *mut T) { + lea rdi, [rsp + 513] + call qword ptr [rip + ::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 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(to_drop: *mut T) { + call qword ptr [rip + ::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(to_drop: *mut T) { + call qword ptr [rip + ::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::(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::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,xmpp::component::stanza_matcher::HNil>>::{{closure}}::{{closure}}::{{closure}},alloc::boxed::Box,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(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::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 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 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 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::(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 + 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@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(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(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::(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 + 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@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>(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>(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::(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::::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@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 + ::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> + 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 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 + ::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(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> + 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 + ::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 + ::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 + ::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> + 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 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> + 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(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(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> + 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(to_drop: *mut T) { + cmp dword ptr [rax], 47 + ja .LBB288_175 + mov rdi, qword ptr [rsp + 16] + call core::ptr::drop_in_place> +.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(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> + 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> + 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> +.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(to_drop: *mut T) { + cmp dword ptr [rbx], 47 + ja .LBB288_184 + mov rdi, rbx + call core::ptr::drop_in_place> +.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(to_drop: *mut T) { + cmp dword ptr [rbx], 47 + ja .LBB288_192 + mov rdi, rbx + call core::ptr::drop_in_place> +.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(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(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> + 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(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(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> +.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> +.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(to_drop: *mut T) { + cmp dword ptr [rbx], 47 + ja .LBB288_212 + mov rdi, rbx + call core::ptr::drop_in_place> + 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> +.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(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(to_drop: *mut T) { + cmp dword ptr [rbx], 47 + ja .LBB288_215 + mov rdi, rbx + call core::ptr::drop_in_place> +.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::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(to_drop: *mut T) { + cmp dword ptr [r14], 47 + ja .LBB288_221 + mov rdi, r14 + call core::ptr::drop_in_place> +.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::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(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> +.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(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> + 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> +.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(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> +.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(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> + 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(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> + 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(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> +.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 + 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> + .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::(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::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::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(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::(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(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::drop_slow +.LBB288_296: + // src/component/system.rs:41 + }); + mov rdi, r15 + call core::ptr::drop_in_place + 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(to_drop: *mut T) { + lea rdi, [rsp + 513] + call qword ptr [rip + ::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+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 + 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 + 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 +.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(to_drop: *mut T) { + lea rdi, [rsp + 456] + call core::ptr::drop_in_place> + 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 + 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 + 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 + 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> + 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 + 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(to_drop: *mut T) { + call core::ptr::drop_in_place> + 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 + 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(to_drop: *mut T) { + lea rdi, [rsp + 456] + call core::ptr::drop_in_place> +.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 + 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(to_drop: *mut T) { + call qword ptr [rip + ::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> { + 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 + 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 + 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,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> + 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> { + 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,xmpp::component::stanza_matcher::HNil>>::{{closure}}::{{closure}}::{{closure}},alloc::boxed::Box,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,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,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(to_drop: *mut T) { + call core::ptr::drop_in_place> +.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 +.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, 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 + 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> + 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( + 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::(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(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 + 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::(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(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::drop_slow +.LBB288_448: + // src/component/system.rs:41 + }); + mov rdi, r15 + call core::ptr::drop_in_place + // 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(to_drop: *mut T) { + dec rbx + je .LBB288_457 + lea r12, [r15 + 424] + mov rdi, r15 + call core::ptr::drop_in_place + 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] diff --git a/xmpp/src/component/mod.rs b/xmpp/src/component/mod.rs index f1494c9b78b49a7455199330be1d48eccee63f66..5c79a9e43dc822784b3b7d07a73d071d724f40f6 100644 --- a/xmpp/src/component/mod.rs +++ b/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 { - match candidate { - Stanza::Message(msg) => { - let body = msg.bodies.get("")?.clone(); - Some(TestMessage { content: body }) - } - _ => None, - } - } - } - - fn log_test_messages(mut messages: MessageReader) { - 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::() - .init_resource::() - .add_systems(bevy_app::Update, log_test_messages) - .run(); - } -} diff --git a/xmpp/src/component/system.rs b/xmpp/src/component/system.rs index 9c3bf80bbc97b2baf014867a7af63d977b43649b..7c5e7c80e8eabcac05fd5b068da3efdd709ac38b 100644 --- a/xmpp/src/component/system.rs +++ b/xmpp/src/component/system.rs @@ -11,6 +11,11 @@ pub(crate) fn spawn_stanza_workers(world: &mut World) { }; let XmppComponent { reader, writer } = xmpp; + let registry = world + .remove_resource::>() + .expect("MatcherRegistry should exist"); + let mut dispatchers = Box::new(registry.dispatchers); + let batch_size = world .get_resource::() .map(|c| c.max_stanzas_per_tick) @@ -24,17 +29,14 @@ pub(crate) fn spawn_stanza_workers(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::>() - .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; } });