Skip to content

runtime perf regression between nightly 2023-06-14 and 2023-06-15 #113600

Open
@ForsakenHarmony

Description

@ForsakenHarmony

I noticed my runtime performance got significantly worse, I'm trying to update LEDs 60 times per second.

The host system is an M1 MacBook Pro.
It's talking to an rp2040 over serial.

Observations:

  • 2023-06-14: the update time is around 15.4ms.
  • 2023-06-15: it goes up to around 18ms.
  • later nightlies: it either stays the same or even goes up to around 20ms

Code

Repo: https://github.com/ForsakenHarmony/serial-ws2812

Optional:

To run:

  1. rustup target add thumbv6m-none-eabi (optional, installs toolchain and target).
  2. cd firmware && cargo run --release (Flash and run code on the rp2040, this can be left running, but you need to wait for it to finish flashing).
  3. cargo run --example example --release (Run example control software on the host).

After that changing rust-toolchain to nightly-2023-06-15 and going back to step 1 you should see different timings being printed in the terminal.

Version it worked on

It most recently worked on: nightly-2023-06-14

rustc 1.72.0-nightly (371994e0d 2023-06-13)
binary: rustc
commit-hash: 371994e0d8380600ddda78ca1be937c7fb179b49
commit-date: 2023-06-13
host: aarch64-apple-darwin
release: 1.72.0-nightly
LLVM version: 16.0.5

Version with regression

rustc --version --verbose:

rustc 1.72.0-nightly (8c74a5d27 2023-06-14)
binary: rustc
commit-hash: 8c74a5d27c644a0f7a22bb2fa8dd3ff8257bc220
commit-date: 2023-06-14
host: aarch64-apple-darwin
release: 1.72.0-nightly
LLVM version: 16.0.5

binaries + dump with patches to see the actual difference
outputs.zip

diff after cleaning up
diff --git a/.bins/2023-06-14/dumped/HardFault_.s b/.bins/2023-06-15/dumped/HardFault_.s
index beca585..f64b2ab 100644
--- a/.bins/2023-06-14/dumped/HardFault_.s
+++ b/.bins/2023-06-15/dumped/HardFault_.s
@@ -1,2 +1,2 @@
 b	0x1000 <HardFault_> @ imm = #0x0
-bmi	0x1000 <compiler_builtins::int::specialized_div_rem::u32_div_rem+0x146> @ imm = #0x0
\ No newline at end of file
+bmi	0x1000 <__aeabi_lmul+0x24> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/TIMER_IRQ_0.s b/.bins/2023-06-15/dumped/TIMER_IRQ_0.s
index 1eccfe6..fc69f09 100644
--- a/.bins/2023-06-14/dumped/TIMER_IRQ_0.s
+++ b/.bins/2023-06-15/dumped/TIMER_IRQ_0.s
@@ -1,87 +1,5 @@
-push	{r4, r5, r6, r7, lr}
+push	{r7, lr}
 add	r7, sp, #0x0
-sub	sp, #0x0
-bl	0x1000 <__primask_r> @ imm = #0x0
-mov	r4, r0
-movs	r2, #0x0
 movs	r0, #0x0
-lsls	r0, r0, #0x0
-ldr	r0, [r0]
-ldr	r1, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_0+0xbc>
-ldrb	r1, [r1]
-dmb	sy
-adds	r6, r0, #0x0
-uxtb	r0, r6
-cmp	r1, r0
-str	r2, [sp]
-bne	0x1000 <TIMER_IRQ_0+0x2a> @ imm = #0x0
-movs	r6, #0x0
-b	0x1000 <TIMER_IRQ_0+0x5c> @ imm = #0x0
-ands	r4, r2
-ldr	r5, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_0+0xc0>
-bne	0x1000 <TIMER_IRQ_0+0x4a> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-bne	0x1000 <TIMER_IRQ_0+0x54> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <TIMER_IRQ_0+0x3a> @ imm = #0x0
-b	0x1000 <TIMER_IRQ_0+0x54> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <TIMER_IRQ_0+0x4a> @ imm = #0x0
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_0+0xbc>
-strb	r6, [r0]
-rsbs	r6, r4, #0
-adcs	r6, r4
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_0+0xc4>
-ldm	r0!, {r1, r2}
-ldr	r4, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_0+0xc8>
-ldr	r3, [r4]
-ldr	r5, [r4, #0x0]
-ldr	r0, [r4]
-cmp	r3, r0
-beq	0x1000 <TIMER_IRQ_0+0x76> @ imm = #0x0
-ldr	r3, [r4]
-ldr	r5, [r4, #0x0]
-ldr	r0, [r4]
-cmp	r3, r0
-bne	0x1000 <TIMER_IRQ_0+0x62> @ imm = #0x0
-subs	r0, r5, r1
-sbcs	r3, r2
-bhs	0x1000 <TIMER_IRQ_0+0x86> @ imm = #0x0
-mov	r0, r4
-subs	r0, #0x0
-str	r1, [r0]
-ldr	r5, [sp]
-b	0x1000 <TIMER_IRQ_0+0xa0> @ imm = #0x0
-subs	r0, r4, #0x0
-ldr	r5, [sp]
-str	r5, [r0]
-movs	r0, #0x0
-mvns	r0, r0
-ldr	r2, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_0+0xc4>
-str	r0, [r2]
-str	r0, [r2, #0x0]
-ldr	r1, [r2, #0x0]
-cmp	r1, #0x0
-beq	0x1000 <TIMER_IRQ_0+0xa0> @ imm = #0x0
-ldr	r0, [r2, #0x0]
-blx	r1
-cmp	r6, #0x0
-beq	0x1000 <TIMER_IRQ_0+0xb6> @ imm = #0x0
-movs	r0, #0x0
-ldr	r1, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_0+0xbc>
-strb	r0, [r1]
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_0+0xc0>
-str	r5, [r0]
-cmp	r6, #0x0
-beq	0x1000 <TIMER_IRQ_0+0xb6> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-str	r5, [r4, #0x0]
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
\ No newline at end of file
+bl	0x1000 <embassy_rp::timer::TimerDriver::check_alarm> @ imm = #0x0
+pop	{r7, pc}
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/TIMER_IRQ_1.s b/.bins/2023-06-15/dumped/TIMER_IRQ_1.s
index f9999a1..fc69f09 100644
--- a/.bins/2023-06-14/dumped/TIMER_IRQ_1.s
+++ b/.bins/2023-06-15/dumped/TIMER_IRQ_1.s
@@ -1,89 +1,5 @@
-push	{r4, r5, r6, r7, lr}
+push	{r7, lr}
 add	r7, sp, #0x0
-sub	sp, #0x0
-bl	0x1000 <__primask_r> @ imm = #0x0
-mov	r4, r0
-movs	r2, #0x0
 movs	r0, #0x0
-lsls	r0, r0, #0x0
-ldr	r0, [r0]
-ldr	r1, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_1+0xc0>
-ldrb	r1, [r1]
-dmb	sy
-adds	r6, r0, #0x0
-uxtb	r0, r6
-cmp	r1, r0
-str	r2, [sp]
-bne	0x1000 <TIMER_IRQ_1+0x2a> @ imm = #0x0
-movs	r6, #0x0
-b	0x1000 <TIMER_IRQ_1+0x5c> @ imm = #0x0
-ands	r4, r2
-ldr	r5, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_1+0xc4>
-bne	0x1000 <TIMER_IRQ_1+0x4a> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-bne	0x1000 <TIMER_IRQ_1+0x54> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <TIMER_IRQ_1+0x3a> @ imm = #0x0
-b	0x1000 <TIMER_IRQ_1+0x54> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <TIMER_IRQ_1+0x4a> @ imm = #0x0
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_1+0xc0>
-strb	r6, [r0]
-rsbs	r6, r4, #0
-adcs	r6, r4
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_1+0xc8>
-ldr	r1, [r0, #0x0]
-ldr	r2, [r0, #0x0]
-ldr	r4, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_1+0xcc>
-ldr	r3, [r4]
-ldr	r5, [r4, #0x0]
-ldr	r0, [r4]
-cmp	r3, r0
-beq	0x1000 <TIMER_IRQ_1+0x78> @ imm = #0x0
-ldr	r3, [r4]
-ldr	r5, [r4, #0x0]
-ldr	r0, [r4]
-cmp	r3, r0
-bne	0x1000 <TIMER_IRQ_1+0x64> @ imm = #0x0
-subs	r0, r5, r1
-sbcs	r3, r2
-bhs	0x1000 <TIMER_IRQ_1+0x86> @ imm = #0x0
-mov	r0, r4
-subs	r0, #0x0
-str	r1, [r0]
-b	0x1000 <TIMER_IRQ_1+0xa0> @ imm = #0x0
-subs	r0, r4, #0x0
-movs	r1, #0x0
-str	r1, [r0]
-movs	r0, #0x0
-mvns	r0, r0
-ldr	r2, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_1+0xc8>
-str	r0, [r2, #0x0]
-str	r0, [r2, #0x0]
-ldr	r1, [r2, #0x0]
-cmp	r1, #0x0
-beq	0x1000 <TIMER_IRQ_1+0xa0> @ imm = #0x0
-ldr	r0, [r2, #0x0]
-blx	r1
-cmp	r6, #0x0
-beq	0x1000 <TIMER_IRQ_1+0xb8> @ imm = #0x0
-movs	r0, #0x0
-ldr	r1, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_1+0xc0>
-strb	r0, [r1]
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_1+0xc4>
-ldr	r1, [sp]
-str	r1, [r0]
-cmp	r6, #0x0
-beq	0x1000 <TIMER_IRQ_1+0xb8> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-movs	r0, #0x0
-str	r0, [r4, #0x0]
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
\ No newline at end of file
+bl	0x1000 <embassy_rp::timer::TimerDriver::check_alarm> @ imm = #0x0
+pop	{r7, pc}
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/TIMER_IRQ_2.s b/.bins/2023-06-15/dumped/TIMER_IRQ_2.s
index 267b4d1..fc69f09 100644
--- a/.bins/2023-06-14/dumped/TIMER_IRQ_2.s
+++ b/.bins/2023-06-15/dumped/TIMER_IRQ_2.s
@@ -1,89 +1,5 @@
-push	{r4, r5, r6, r7, lr}
+push	{r7, lr}
 add	r7, sp, #0x0
-sub	sp, #0x0
-bl	0x1000 <__primask_r> @ imm = #0x0
-mov	r4, r0
-movs	r2, #0x0
 movs	r0, #0x0
-lsls	r0, r0, #0x0
-ldr	r0, [r0]
-ldr	r1, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_2+0xc0>
-ldrb	r1, [r1]
-dmb	sy
-adds	r6, r0, #0x0
-uxtb	r0, r6
-cmp	r1, r0
-str	r2, [sp]
-bne	0x1000 <TIMER_IRQ_2+0x2a> @ imm = #0x0
-movs	r6, #0x0
-b	0x1000 <TIMER_IRQ_2+0x5c> @ imm = #0x0
-ands	r4, r2
-ldr	r5, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_2+0xc4>
-bne	0x1000 <TIMER_IRQ_2+0x4a> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-bne	0x1000 <TIMER_IRQ_2+0x54> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <TIMER_IRQ_2+0x3a> @ imm = #0x0
-b	0x1000 <TIMER_IRQ_2+0x54> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <TIMER_IRQ_2+0x4a> @ imm = #0x0
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_2+0xc0>
-strb	r6, [r0]
-rsbs	r6, r4, #0
-adcs	r6, r4
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_2+0xc8>
-ldr	r1, [r0, #0x0]
-ldr	r2, [r0, #0x0]
-ldr	r4, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_2+0xcc>
-ldr	r3, [r4]
-ldr	r5, [r4, #0x0]
-ldr	r0, [r4]
-cmp	r3, r0
-beq	0x1000 <TIMER_IRQ_2+0x78> @ imm = #0x0
-ldr	r3, [r4]
-ldr	r5, [r4, #0x0]
-ldr	r0, [r4]
-cmp	r3, r0
-bne	0x1000 <TIMER_IRQ_2+0x64> @ imm = #0x0
-subs	r0, r5, r1
-sbcs	r3, r2
-bhs	0x1000 <TIMER_IRQ_2+0x86> @ imm = #0x0
-mov	r0, r4
-subs	r0, #0x0
-str	r1, [r0]
-b	0x1000 <TIMER_IRQ_2+0xa0> @ imm = #0x0
-subs	r0, r4, #0x0
-movs	r1, #0x0
-str	r1, [r0]
-movs	r0, #0x0
-mvns	r0, r0
-ldr	r2, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_2+0xc8>
-str	r0, [r2, #0x0]
-str	r0, [r2, #0x0]
-ldr	r1, [r2, #0x0]
-cmp	r1, #0x0
-beq	0x1000 <TIMER_IRQ_2+0xa0> @ imm = #0x0
-ldr	r0, [r2, #0x0]
-blx	r1
-cmp	r6, #0x0
-beq	0x1000 <TIMER_IRQ_2+0xb8> @ imm = #0x0
-movs	r0, #0x0
-ldr	r1, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_2+0xc0>
-strb	r0, [r1]
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_2+0xc4>
-ldr	r1, [sp]
-str	r1, [r0]
-cmp	r6, #0x0
-beq	0x1000 <TIMER_IRQ_2+0xb8> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-movs	r0, #0x0
-str	r0, [r4, #0x0]
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
\ No newline at end of file
+bl	0x1000 <embassy_rp::timer::TimerDriver::check_alarm> @ imm = #0x0
+pop	{r7, pc}
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/TIMER_IRQ_3.s b/.bins/2023-06-15/dumped/TIMER_IRQ_3.s
index 34f9d15..fc69f09 100644
--- a/.bins/2023-06-14/dumped/TIMER_IRQ_3.s
+++ b/.bins/2023-06-15/dumped/TIMER_IRQ_3.s
@@ -1,89 +1,5 @@
-push	{r4, r5, r6, r7, lr}
+push	{r7, lr}
 add	r7, sp, #0x0
-sub	sp, #0x0
-bl	0x1000 <__primask_r> @ imm = #0x0
-mov	r4, r0
-movs	r2, #0x0
 movs	r0, #0x0
-lsls	r0, r0, #0x0
-ldr	r0, [r0]
-ldr	r1, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_3+0xc0>
-ldrb	r1, [r1]
-dmb	sy
-adds	r6, r0, #0x0
-uxtb	r0, r6
-cmp	r1, r0
-str	r2, [sp]
-bne	0x1000 <TIMER_IRQ_3+0x2a> @ imm = #0x0
-movs	r6, #0x0
-b	0x1000 <TIMER_IRQ_3+0x5c> @ imm = #0x0
-ands	r4, r2
-ldr	r5, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_3+0xc4>
-bne	0x1000 <TIMER_IRQ_3+0x4a> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-bne	0x1000 <TIMER_IRQ_3+0x54> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <TIMER_IRQ_3+0x3a> @ imm = #0x0
-b	0x1000 <TIMER_IRQ_3+0x54> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <TIMER_IRQ_3+0x4a> @ imm = #0x0
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_3+0xc0>
-strb	r6, [r0]
-rsbs	r6, r4, #0
-adcs	r6, r4
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_3+0xc8>
-ldr	r1, [r0, #0x0]
-ldr	r2, [r0, #0x0]
-ldr	r4, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_3+0xcc>
-ldr	r3, [r4]
-ldr	r5, [r4, #0x0]
-ldr	r0, [r4]
-cmp	r3, r0
-beq	0x1000 <TIMER_IRQ_3+0x78> @ imm = #0x0
-ldr	r3, [r4]
-ldr	r5, [r4, #0x0]
-ldr	r0, [r4]
-cmp	r3, r0
-bne	0x1000 <TIMER_IRQ_3+0x64> @ imm = #0x0
-subs	r0, r5, r1
-sbcs	r3, r2
-bhs	0x1000 <TIMER_IRQ_3+0x86> @ imm = #0x0
-mov	r0, r4
-subs	r0, #0x0
-str	r1, [r0]
-b	0x1000 <TIMER_IRQ_3+0xa0> @ imm = #0x0
-subs	r0, r4, #0x0
-movs	r1, #0x0
-str	r1, [r0]
-movs	r0, #0x0
-mvns	r0, r0
-ldr	r2, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_3+0xc8>
-str	r0, [r2, #0x0]
-str	r0, [r2, #0x0]
-ldr	r1, [r2, #0x0]
-cmp	r1, #0x0
-beq	0x1000 <TIMER_IRQ_3+0xa0> @ imm = #0x0
-ldr	r0, [r2, #0x0]
-blx	r1
-cmp	r6, #0x0
-beq	0x1000 <TIMER_IRQ_3+0xb8> @ imm = #0x0
-movs	r0, #0x0
-ldr	r1, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_3+0xc0>
-strb	r0, [r1]
-ldr	r0, [pc, #0x0]         @ 0x1000 <TIMER_IRQ_3+0xc4>
-ldr	r1, [sp]
-str	r1, [r0]
-cmp	r6, #0x0
-beq	0x1000 <TIMER_IRQ_3+0xb8> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-movs	r0, #0x0
-str	r0, [r4, #0x0]
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
\ No newline at end of file
+bl	0x1000 <embassy_rp::timer::TimerDriver::check_alarm> @ imm = #0x0
+pop	{r7, pc}
\ No newline at end of file
diff --git a/.bins/2023-06-15/dumped/_<defmt_rtt::Logger as defmt::traits::Logger>/release.s b/.bins/2023-06-15/dumped/_<defmt_rtt::Logger as defmt::traits::Logger>/release.s
new file mode 100644
index 0000000..096d4f2
--- /dev/null
+++ b/.bins/2023-06-15/dumped/_<defmt_rtt::Logger as defmt::traits::Logger>/release.s	
@@ -0,0 +1,92 @@
+push	{r4, r5, r6, r7, lr}
+add	r7, sp, #0x0
+sub	sp, #0x0
+ldr	r2, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xbc>
+ldrb	r0, [r2, #0x0]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x74> @ imm = #0x0
+cmp	r0, #0x0
+bhs	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x34> @ imm = #0x0
+movs	r1, #0x0
+mvns	r1, r1
+lsls	r1, r0
+ldrb	r0, [r2, #0x0]
+orrs	r0, r1
+movs	r1, #0x0
+ands	r1, r0
+add	r0, sp, #0x0
+strb	r1, [r0]
+ldr	r4, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xc0>
+ldr	r0, [r4, #0x0]
+movs	r1, #0x0
+ands	r1, r0
+cmp	r1, #0x0
+beq	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x4e> @ imm = #0x0
+ldr	r5, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xc8>
+b	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x50> @ imm = #0x0
+adds	r0, #0x0
+movs	r1, #0x0
+orrs	r1, r0
+mov	r0, sp
+strb	r1, [r0]
+ldr	r4, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xc0>
+ldr	r0, [r4, #0x0]
+movs	r1, #0x0
+ands	r1, r0
+cmp	r1, #0x0
+beq	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x60> @ imm = #0x0
+ldr	r5, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xc8>
+b	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x62> @ imm = #0x0
+ldr	r5, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xc4>
+adds	r4, #0x0
+add	r1, sp, #0x0
+movs	r2, #0x0
+mov	r0, r4
+blx	r5
+cmp	r0, #0x0
+beq	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x52> @ imm = #0x0
+b	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x70> @ imm = #0x0
+ldr	r5, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xc4>
+adds	r4, #0x0
+mov	r1, sp
+movs	r2, #0x0
+mov	r0, r4
+blx	r5
+cmp	r0, #0x0
+beq	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x64> @ imm = #0x0
+cmp	r0, #0x0
+bne	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xb0> @ imm = #0x0
+add	r0, sp, #0x0
+movs	r6, #0x0
+strb	r6, [r0]
+ldr	r4, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xc0>
+ldr	r0, [r4, #0x0]
+movs	r1, #0x0
+ands	r1, r0
+cmp	r1, #0x0
+beq	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x8a> @ imm = #0x0
+ldr	r5, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xc8>
+b	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x8c> @ imm = #0x0
+ldr	r5, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xc4>
+adds	r4, #0x0
+add	r1, sp, #0x0
+movs	r2, #0x0
+mov	r0, r4
+blx	r5
+cmp	r0, #0x0
+beq	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0x8e> @ imm = #0x0
+cmp	r0, #0x0
+bne	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xb0> @ imm = #0x0
+ldr	r0, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xbc>
+strb	r6, [r0, #0x0]
+strb	r6, [r0, #0x0]
+strb	r6, [r0]
+ldrb	r0, [r0, #0x0]
+bl	0x1000 <_critical_section_1_0_release> @ imm = #0x0
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+movs	r1, #0x0
+ldr	r2, [pc, #0x0]         @ 0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release+0xcc>
+bl	0x1000 <core::slice::index::slice_start_index_len_fail> @ imm = #0x0
+trap
+mov	r8, r8
\ No newline at end of file
diff --git a/.bins/2023-06-15/dumped/_<embassy_rp::timer::TimerDriver as embassy_time::driver::Driver>/set_alarm.s b/.bins/2023-06-15/dumped/_<embassy_rp::timer::TimerDriver as embassy_time::driver::Driver>/set_alarm.s
new file mode 100644
index 0000000..9a85b31
--- /dev/null
+++ b/.bins/2023-06-15/dumped/_<embassy_rp::timer::TimerDriver as embassy_time::driver::Driver>/set_alarm.s	
@@ -0,0 +1,123 @@
+push	{r4, r5, r6, r7, lr}
+add	r7, sp, #0x0
+sub	sp, #0x0
+mov	r6, r3
+str	r2, [sp, #0x0]
+str	r0, [sp, #0x0]
+add	r0, sp, #0x0
+strb	r1, [r0]
+bl	0x1000 <embassy_time::driver::AlarmHandle::id> @ imm = #0x0
+mov	r4, r0
+bl	0x1000 <__primask_r> @ imm = #0x0
+mov	r5, r0
+movs	r2, #0x0
+movs	r0, #0x0
+lsls	r0, r0, #0x0
+ldr	r0, [r0]
+ldr	r1, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x108>
+ldrb	r1, [r1]
+dmb	sy
+str	r4, [sp]
+uxtb	r4, r4
+adds	r3, r0, #0x0
+uxtb	r0, r3
+cmp	r1, r0
+str	r2, [sp, #0x0]
+str	r6, [sp, #0x0]
+bne	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x40> @ imm = #0x0
+movs	r0, #0x0
+b	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x78> @ imm = #0x0
+str	r3, [sp, #0x0]
+ands	r5, r2
+ldr	r6, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x10c>
+bne	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x62> @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+bne	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x6c> @ imm = #0x0
+bl	0x1000 <__cpsie>    @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x52> @ imm = #0x0
+b	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x6c> @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x62> @ imm = #0x0
+ldr	r0, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x108>
+ldr	r1, [sp, #0x0]
+strb	r1, [r0]
+rsbs	r0, r5, #0
+adcs	r0, r5
+ldr	r6, [sp, #0x0]
+cmp	r4, #0x0
+bhs	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0xfc> @ imm = #0x0
+str	r0, [sp, #0x0]
+lsls	r1, r4, #0x0
+ldr	r5, [sp, #0x0]
+ldr	r0, [sp, #0x0]
+str	r5, [r0, r1]
+adds	r1, r0, r1
+str	r6, [r1, #0x0]
+lsls	r3, r4, #0x0
+adds	r3, #0x0
+ldr	r2, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x114>
+adds	r3, r3, r2
+subs	r3, #0x0
+str	r5, [r3]
+ldr	r4, [r2]
+ldr	r5, [r2, #0x0]
+ldr	r3, [r2]
+cmp	r4, r3
+beq	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0xaa> @ imm = #0x0
+ldr	r4, [r2]
+ldr	r5, [r2, #0x0]
+ldr	r3, [r2]
+cmp	r4, r3
+bne	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x96> @ imm = #0x0
+ldr	r3, [sp, #0x0]
+subs	r3, r5, r3
+mov	r3, r4
+sbcs	r3, r6
+blo	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0xd0> @ imm = #0x0
+movs	r3, #0x0
+ldr	r0, [sp]
+ands	r0, r3
+ldr	r3, [sp, #0x0]
+lsls	r3, r0
+movs	r6, #0x0
+ands	r6, r3
+subs	r2, r2, #0x0
+str	r6, [r2]
+ldr	r6, [sp, #0x0]
+movs	r2, #0x0
+mvns	r2, r2
+str	r2, [r1]
+str	r2, [r1, #0x0]
+ldr	r0, [sp, #0x0]
+cmp	r0, #0x0
+ldr	r2, [sp, #0x0]
+beq	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0xec> @ imm = #0x0
+movs	r1, #0x0
+ldr	r3, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x108>
+strb	r1, [r3]
+ldr	r1, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x10c>
+str	r2, [r1]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0xec> @ imm = #0x0
+bl	0x1000 <__cpsie>    @ imm = #0x0
+ldr	r2, [sp, #0x0]
+ldr	r0, [sp, #0x0]
+subs	r0, r5, r0
+sbcs	r4, r6
+blo	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0xf6> @ imm = #0x0
+movs	r2, #0x0
+mov	r0, r2
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+movs	r1, #0x0
+ldr	r2, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm+0x110>
+mov	r0, r4
+bl	0x1000 <core::panicking::panic_bounds_check> @ imm = #0x0
+trap
\ No newline at end of file
diff --git a/.bins/2023-06-15/dumped/_<embassy_rp::timer::TimerDriver as embassy_time::driver::Driver>/set_alarm_callback.s b/.bins/2023-06-15/dumped/_<embassy_rp::timer::TimerDriver as embassy_time::driver::Driver>/set_alarm_callback.s
new file mode 100644
index 0000000..adb67b3
--- /dev/null
+++ b/.bins/2023-06-15/dumped/_<embassy_rp::timer::TimerDriver as embassy_time::driver::Driver>/set_alarm_callback.s	
@@ -0,0 +1,79 @@
+push	{r4, r5, r6, r7, lr}
+add	r7, sp, #0x0
+sub	sp, #0x0
+add	r4, sp, #0x0
+stm	r4!, {r0, r2, r3}
+add	r0, sp, #0x0
+strb	r1, [r0]
+bl	0x1000 <embassy_time::driver::AlarmHandle::id> @ imm = #0x0
+mov	r5, r0
+bl	0x1000 <__primask_r> @ imm = #0x0
+movs	r1, #0x0
+lsls	r1, r1, #0x0
+ldr	r2, [r1]
+ldr	r1, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0xb0>
+ldrb	r1, [r1]
+dmb	sy
+uxtb	r5, r5
+adds	r4, r2, #0x0
+uxtb	r2, r4
+cmp	r1, r2
+bne	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0x46> @ imm = #0x0
+cmp	r5, #0x0
+bhi	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0xa2> @ imm = #0x0
+lsls	r0, r5, #0x0
+ldr	r1, [sp, #0x0]
+adds	r0, r1, r0
+ldr	r1, [sp, #0x0]
+str	r1, [r0, #0x0]
+ldr	r1, [sp, #0x0]
+str	r1, [r0, #0x0]
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+movs	r1, #0x0
+str	r1, [sp, #0x0]
+ands	r0, r1
+str	r0, [sp, #0x0]
+ldr	r6, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0xb4>
+bne	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0x6c> @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+bne	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0x76> @ imm = #0x0
+bl	0x1000 <__cpsie>    @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0x5c> @ imm = #0x0
+b	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0x76> @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0x6c> @ imm = #0x0
+ldr	r2, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0xb0>
+strb	r4, [r2]
+cmp	r5, #0x0
+bhs	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0xa2> @ imm = #0x0
+lsls	r0, r5, #0x0
+ldr	r1, [sp, #0x0]
+adds	r0, r1, r0
+ldr	r1, [sp, #0x0]
+str	r1, [r0, #0x0]
+ldr	r1, [sp, #0x0]
+str	r1, [r0, #0x0]
+movs	r0, #0x0
+strb	r0, [r2]
+ldr	r0, [sp, #0x0]
+str	r0, [r6]
+ldr	r0, [sp, #0x0]
+cmp	r0, #0x0
+bne	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0x9e> @ imm = #0x0
+bl	0x1000 <__cpsie>    @ imm = #0x0
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+movs	r1, #0x0
+ldr	r2, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback+0xb8>
+mov	r0, r5
+bl	0x1000 <core::panicking::panic_bounds_check> @ imm = #0x0
+trap
+mov	r8, r8
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/_<core::future::poll_fn::PollFn<F> as core::future::future::Future>/poll.s b/.bins/2023-06-15/dumped/_<embassy_rp::usb::Bus<T> as embassy_usb_driver::Bus>/poll/_{{closure}}.s
similarity index 70%
rename from .bins/2023-06-14/dumped/_<core::future::poll_fn::PollFn<F> as core::future::future::Future>/poll.s
rename to .bins/2023-06-15/dumped/_<embassy_rp::usb::Bus<T> as embassy_usb_driver::Bus>/poll/_{{closure}}.s
index 92c4c44..1eae907 100644
--- a/.bins/2023-06-14/dumped/_<core::future::poll_fn::PollFn<F> as core::future::future::Future>/poll.s	
+++ b/.bins/2023-06-15/dumped/_<embassy_rp::usb::Bus<T> as embassy_usb_driver::Bus>/poll/_{{closure}}.s	
@@ -1,266 +1,293 @@
-push	{r4, r5, r7, lr}
+push	{r4, r5, r6, r7, lr}
 add	r7, sp, #0x0
-ldr	r4, [r0]
-ldr	r1, [r1]
-ldr	r0, [pc, #0x0]        @ 0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x294>
+sub	sp, #0x0
+mov	r4, r0
+ldrb	r0, [r0, #0x0]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x18> @ imm = #0x0
+cmp	r0, #0x0
+beq	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x14> @ imm = #0x0
+b	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x2c0> @ imm = #0x0
+ldr	r6, [r4, #0x0]
+b	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x1c> @ imm = #0x0
+ldr	r6, [r4]
+str	r6, [r4, #0x0]
+ldr	r0, [pc, #0x0]        @ 0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x2d4>
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::register> @ imm = #0x0
 movs	r0, #0x0
-ldrb	r0, [r4, r0]
+ldrb	r0, [r6, r0]
 cmp	r0, #0x0
-beq	0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x38> @ imm = #0x0
-movs	r4, #0x0
+beq	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x52> @ imm = #0x0
+movs	r5, #0x0
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::regs> @ imm = #0x0
 ldr	r1, [r0, #0x0]
 lsls	r2, r1, #0x0
-bmi	0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x42> @ imm = #0x0
+bmi	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x60> @ imm = #0x0
 lsls	r2, r1, #0x0
-bmi	0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x4a> @ imm = #0x0
+bmi	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x6c> @ imm = #0x0
 lsls	r1, r1, #0x0
-bpl	0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x2c> @ imm = #0x0
-b	0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x28a> @ imm = #0x0
+bpl	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x40> @ imm = #0x0
+b	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x2b2> @ imm = #0x0
 movs	r1, #0x0
 lsls	r1, r1, #0x0
-ldr	r2, [pc, #0x0]        @ 0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x2a4>
+ldr	r2, [pc, #0x0]        @ 0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x2e4>
 str	r1, [r0, r2]
+movs	r5, #0x0
 movs	r0, #0x0
-pop	{r4, r5, r7, pc}
-adds	r4, #0x0
-movs	r0, #0x0
-strb	r0, [r4]
+strb	r5, [r4, #0x0]
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+adds	r6, #0x0
+movs	r5, #0x0
+strb	r5, [r6]
 movs	r0, #0x0
-pop	{r4, r5, r7, pc}
-lsls	r1, r4, #0x0
+strb	r5, [r4, #0x0]
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+lsls	r1, r5, #0x0
 str	r1, [r0, #0x0]
 movs	r0, #0x0
-pop	{r4, r5, r7, pc}
+strb	r5, [r4, #0x0]
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
 movs	r1, #0x0
 lsls	r1, r1, #0x0
 str	r1, [r0, #0x0]
-movs	r4, #0x0
-mvns	r1, r4
+movs	r2, #0x0
+str	r2, [sp]
+mvns	r1, r2
 str	r1, [r0, #0x0]
-str	r4, [r0]
+str	r2, [r0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ldr	r5, [pc, #0x0]        @ 0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x298>
-ands	r1, r5
+ldr	r6, [pc, #0x0]        @ 0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x2d8>
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r0, #0x0]
-ands	r1, r5
+ands	r1, r6
 str	r1, [r0, #0x0]
-ldr	r5, [pc, #0x0]        @ 0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x29c>
-mov	r0, r5
+ldr	r6, [pc, #0x0]        @ 0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x2dc>
+mov	r0, r6
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-adds	r5, #0x0
-mov	r0, r5
+adds	r6, #0x0
+mov	r0, r6
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-ldr	r5, [pc, #0x0]         @ 0x1000 <_$LT$core..future..poll_fn..PollFn$LT$F$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x2a0>
-mov	r0, r5
+ldr	r6, [pc, #0x0]         @ 0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x2e0>
+mov	r0, r6
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r5
+mov	r0, r6
 adds	r0, #0x0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-adds	r5, #0x0
-mov	r0, r5
+adds	r6, #0x0
+mov	r0, r6
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake> @ imm = #0x0
-mov	r0, r4
-pop	{r4, r5, r7, pc}
+ldr	r0, [sp]
+strb	r5, [r4, #0x0]
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
 movs	r1, #0x0
 str	r1, [r0, #0x0]
-mov	r0, r4
-pop	{r4, r5, r7, pc}
-mov	r8, r8
\ No newline at end of file
+movs	r0, #0x0
+mov	r5, r0
+strb	r5, [r4, #0x0]
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+ldr	r0, [pc, #0x0]          @ 0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x2cc>
+movs	r1, #0x0
+ldr	r2, [pc, #0x0]          @ 0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::poll::_$u7b$$u7b$closure$u7d$$u7d$+0x2d0>
+bl	0x1000 <core::panicking::panic> @ imm = #0x0
+trap
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/_<embassy_rp::usb::Out as embassy_rp::usb::Dir>/dir.s b/.bins/2023-06-15/dumped/_<embassy_rp::usb::Out as embassy_rp::usb::Dir>/dir.s
index 405b409..df5797d 100644
--- a/.bins/2023-06-14/dumped/_<embassy_rp::usb::Out as embassy_rp::usb::Dir>/dir.s	
+++ b/.bins/2023-06-15/dumped/_<embassy_rp::usb::Out as embassy_rp::usb::Dir>/dir.s	
@@ -1,3 +1,3 @@
 movs	r0, #0x0
 bx	lr
-bmi	0x1000 <_$LT$embassy_rp..config..Config$u20$as$u20$core..default..Default$GT$::default+0x26> @ imm = #0x0
\ No newline at end of file
+bmi	0x1000 <_$LT$embassy_usb..descriptor_reader..DescriptorIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::next+0x1c> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/_<embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex as embassy_sync::blocking_mutex::raw::RawMutex>/lock.s b/.bins/2023-06-14/dumped/_<embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex as embassy_sync::blocking_mutex::raw::RawMutex>/lock.s
deleted file mode 100644
index 4c38fc3..0000000
--- a/.bins/2023-06-14/dumped/_<embassy_sync::blocking_mutex::raw::CriticalSectionRawMutex as embassy_sync::blocking_mutex::raw::RawMutex>/lock.s	
+++ /dev/null
@@ -1,75 +0,0 @@
-push	{r4, r5, r6, r7, lr}
-add	r7, sp, #0x0
-sub	sp, #0x0
-str	r2, [sp, #0x0]
-mov	r5, r1
-bl	0x1000 <_critical_section_1_0_acquire> @ imm = #0x0
-ldr	r1, [r5]
-cmp	r1, #0x0
-bne	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x8e> @ imm = #0x0
-str	r0, [sp, #0x0]
-movs	r0, #0x0
-str	r0, [sp, #0x0]
-mvns	r0, r0
-mov	r4, r5
-stm	r4!, {r0}
-mov	r6, r4
-adds	r6, #0x0
-ldrb	r0, [r4, #0x0]
-cmp	r0, #0x0
-beq	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x42> @ imm = #0x0
-mov	r0, r5
-adds	r0, #0x0
-bl	0x1000 <embassy_sync::waitqueue::waker_registration::WakerRegistration::wake> @ imm = #0x0
-ldrb	r0, [r6]
-rsbs	r1, r0, #0
-adcs	r1, r0
-ldr	r3, [r5, #0x0]
-ldr	r2, [r5, #0x0]
-cmp	r3, r2
-beq	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x4c> @ imm = #0x0
-b	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x64> @ imm = #0x0
-movs	r1, #0x0
-ldr	r3, [r5, #0x0]
-ldr	r2, [r5, #0x0]
-cmp	r3, r2
-bne	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x64> @ imm = #0x0
-cmp	r1, #0x0
-beq	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x64> @ imm = #0x0
-ldr	r0, [sp, #0x0]
-cmp	r0, #0x0
-beq	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x5e> @ imm = #0x0
-ldr	r1, [r0]
-mov	r0, r4
-bl	0x1000 <embassy_sync::waitqueue::waker_registration::WakerRegistration::register> @ imm = #0x0
-ldr	r0, [sp, #0x0]
-ldr	r4, [sp, #0x0]
-b	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x7e> @ imm = #0x0
-mov	r1, r5
-adds	r1, #0x0
-ldr	r0, [sp, #0x0]
-strb	r0, [r6]
-cmp	r3, #0x0
-bne	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x74> @ imm = #0x0
-mov	r2, r3
-b	0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0x76> @ imm = #0x0
-adds	r2, r3, #0x0
-ldr	r0, [sp, #0x0]
-str	r2, [r5, #0x0]
-lsls	r2, r3, #0x0
-ldr	r4, [r1, r2]
-ldr	r1, [r5]
-adds	r1, r1, #0x0
-str	r1, [r5]
-bl	0x1000 <_critical_section_1_0_release> @ imm = #0x0
-mov	r0, r4
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
-ldr	r0, [pc, #0x0]         @ 0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0xa0>
-str	r0, [sp]
-ldr	r0, [pc, #0x0]         @ 0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0xa4>
-movs	r1, #0x0
-add	r2, sp, #0x0
-ldr	r3, [pc, #0x0]          @ 0x1000 <_$LT$embassy_sync..blocking_mutex..raw..CriticalSectionRawMutex$u20$as$u20$embassy_sync..blocking_mutex..raw..RawMutex$GT$::lock+0xa8>
-bl	0x1000 <core::result::unwrap_failed> @ imm = #0x0
-trap
\ No newline at end of file
diff --git a/.bins/2023-06-15/dumped/_<embassy_sync::channel::RecvFuture<M,T,_> as core::future::future::Future>/poll.s b/.bins/2023-06-15/dumped/_<embassy_sync::channel::RecvFuture<M,T,_> as core::future::future::Future>/poll.s
new file mode 100644
index 0000000..bb9589f
--- /dev/null
+++ b/.bins/2023-06-15/dumped/_<embassy_sync::channel::RecvFuture<M,T,_> as core::future::future::Future>/poll.s	
@@ -0,0 +1,73 @@
+push	{r4, r5, r6, r7, lr}
+add	r7, sp, #0x0
+sub	sp, #0x0
+str	r1, [sp, #0x0]
+ldr	r6, [r0]
+bl	0x1000 <_critical_section_1_0_acquire> @ imm = #0x0
+ldr	r1, [r6]
+cmp	r1, #0x0
+bne	0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x8a> @ imm = #0x0
+str	r0, [sp, #0x0]
+movs	r0, #0x0
+str	r0, [sp, #0x0]
+mvns	r0, r0
+mov	r4, r6
+stm	r4!, {r0}
+mov	r5, r4
+adds	r5, #0x0
+ldrb	r0, [r4, #0x0]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x42> @ imm = #0x0
+mov	r0, r6
+adds	r0, #0x0
+bl	0x1000 <embassy_sync::waitqueue::waker_registration::WakerRegistration::wake> @ imm = #0x0
+ldrb	r0, [r5]
+rsbs	r1, r0, #0
+adcs	r1, r0
+ldr	r3, [r6, #0x0]
+ldr	r2, [r6, #0x0]
+cmp	r3, r2
+beq	0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x4c> @ imm = #0x0
+b	0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x60> @ imm = #0x0
+movs	r1, #0x0
+ldr	r3, [r6, #0x0]
+ldr	r2, [r6, #0x0]
+cmp	r3, r2
+bne	0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x60> @ imm = #0x0
+cmp	r1, #0x0
+beq	0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x60> @ imm = #0x0
+ldr	r0, [sp, #0x0]
+ldr	r1, [r0]
+mov	r0, r4
+bl	0x1000 <embassy_sync::waitqueue::waker_registration::WakerRegistration::register> @ imm = #0x0
+ldr	r0, [sp, #0x0]
+ldr	r4, [sp, #0x0]
+b	0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x7a> @ imm = #0x0
+mov	r1, r6
+adds	r1, #0x0
+ldr	r0, [sp, #0x0]
+strb	r0, [r5]
+cmp	r3, #0x0
+bne	0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x70> @ imm = #0x0
+mov	r2, r3
+b	0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x72> @ imm = #0x0
+adds	r2, r3, #0x0
+ldr	r0, [sp, #0x0]
+str	r2, [r6, #0x0]
+lsls	r2, r3, #0x0
+ldr	r4, [r1, r2]
+ldr	r1, [r6]
+adds	r1, r1, #0x0
+str	r1, [r6]
+bl	0x1000 <_critical_section_1_0_release> @ imm = #0x0
+mov	r0, r4
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+ldr	r0, [pc, #0x0]         @ 0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x9c>
+str	r0, [sp]
+ldr	r0, [pc, #0x0]         @ 0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0xa0>
+movs	r1, #0x0
+add	r2, sp, #0x0
+ldr	r3, [pc, #0x0]          @ 0x1000 <_$LT$embassy_sync..channel..RecvFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0xa4>
+bl	0x1000 <core::result::unwrap_failed> @ imm = #0x0
+trap
\ No newline at end of file
diff --git a/.bins/2023-06-15/dumped/_<embassy_sync::channel::SendFuture<M,T,_> as core::future::future::Future>/poll.s b/.bins/2023-06-15/dumped/_<embassy_sync::channel::SendFuture<M,T,_> as core::future::future::Future>/poll.s
new file mode 100644
index 0000000..2cda2d8
--- /dev/null
+++ b/.bins/2023-06-15/dumped/_<embassy_sync::channel::SendFuture<M,T,_> as core::future::future::Future>/poll.s	
@@ -0,0 +1,76 @@
+push	{r4, r5, r6, r7, lr}
+add	r7, sp, #0x0
+sub	sp, #0x0
+str	r1, [sp, #0x0]
+mov	r4, r0
+ldr	r0, [r0, #0x0]
+movs	r5, #0x0
+str	r5, [r4, #0x0]
+str	r0, [sp, #0x0]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x8c> @ imm = #0x0
+ldr	r6, [r4]
+ldr	r0, [r4, #0x0]
+str	r0, [sp, #0x0]
+bl	0x1000 <_critical_section_1_0_acquire> @ imm = #0x0
+ldr	r1, [r6]
+cmp	r1, #0x0
+bne	0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x92> @ imm = #0x0
+mvns	r1, r5
+str	r1, [r6]
+movs	r1, #0x0
+ldrb	r1, [r6, r1]
+cmp	r1, #0x0
+str	r0, [sp, #0x0]
+beq	0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x44> @ imm = #0x0
+ldr	r0, [sp, #0x0]
+ldr	r1, [r0]
+mov	r0, r6
+adds	r0, #0x0
+bl	0x1000 <embassy_sync::waitqueue::waker_registration::WakerRegistration::register> @ imm = #0x0
+ldr	r5, [sp, #0x0]
+b	0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x70> @ imm = #0x0
+ldr	r1, [r6, #0x0]
+lsls	r1, r1, #0x0
+adds	r1, r6, r1
+ldr	r2, [sp, #0x0]
+str	r2, [r1, #0x0]
+ldr	r2, [sp, #0x0]
+str	r2, [r1, #0x0]
+ldr	r2, [r6, #0x0]
+cmp	r2, #0x0
+beq	0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x5a> @ imm = #0x0
+adds	r2, r2, #0x0
+str	r2, [r6, #0x0]
+ldr	r1, [r6, #0x0]
+cmp	r1, r2
+bne	0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x6a> @ imm = #0x0
+mov	r0, r6
+adds	r0, #0x0
+movs	r1, #0x0
+strb	r1, [r0]
+adds	r0, r6, #0x0
+bl	0x1000 <embassy_sync::waitqueue::waker_registration::WakerRegistration::wake> @ imm = #0x0
+ldr	r0, [r6]
+adds	r0, r0, #0x0
+str	r0, [r6]
+ldr	r0, [sp, #0x0]
+bl	0x1000 <_critical_section_1_0_release> @ imm = #0x0
+cmp	r5, #0x0
+beq	0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x82> @ imm = #0x0
+str	r5, [r4, #0x0]
+subs	r0, r5, #0x0
+sbcs	r5, r0
+mov	r0, r5
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+bl	0x1000 <_defmt_panic> @ imm = #0x0
+trap
+ldr	r0, [pc, #0x0]         @ 0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0xa4>
+str	r0, [sp]
+ldr	r0, [pc, #0x0]         @ 0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0xa8>
+movs	r1, #0x0
+add	r2, sp, #0x0
+ldr	r3, [pc, #0x0]          @ 0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0xac>
+bl	0x1000 <core::result::unwrap_failed> @ imm = #0x0
+trap
\ No newline at end of file
diff --git a/.bins/2023-06-15/dumped/_<futures_util::future::join::Join<Fut1,Fut2> as core::future::future::Future>/poll.s b/.bins/2023-06-15/dumped/_<futures_util::future::join::Join<Fut1,Fut2> as core::future::future::Future>/poll.s
new file mode 100644
index 0000000..c7c4a6f
--- /dev/null
+++ b/.bins/2023-06-15/dumped/_<futures_util::future::join::Join<Fut1,Fut2> as core::future::future::Future>/poll.s	
@@ -0,0 +1,85 @@
+push	{r4, r5, r6, r7, lr}
+add	r7, sp, #0x0
+sub	sp, #0x0
+mov	r4, r1
+mov	r5, r0
+ldr	r1, [pc, #0x0]        @ 0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x17c>
+ldrb	r0, [r0, r1]
+subs	r2, r0, #0x0
+uxtb	r2, r2
+movs	r3, #0x0
+cmp	r2, #0x0
+str	r3, [sp, #0x0]
+blo	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x1e> @ imm = #0x0
+mov	r2, r3
+b	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x20> @ imm = #0x0
+adds	r2, r2, #0x0
+ldr	r3, [pc, #0x0]        @ 0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x180>
+adds	r3, r5, r3
+str	r3, [sp, #0x0]
+adds	r1, r5, r1
+str	r1, [sp, #0x0]
+movs	r1, #0x0
+str	r1, [sp, #0x0]
+cmp	r2, #0x0
+str	r5, [sp, #0x0]
+beq	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x40> @ imm = #0x0
+cmp	r2, #0x0
+ldr	r2, [sp, #0x0]
+bne	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x3e> @ imm = #0x0
+bl	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0xa18> @ imm = #0x0
+b	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x268> @ imm = #0x0
+ldr	r1, [pc, #0x0]        @ 0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x184>
+adds	r1, r5, r1
+str	r1, [sp, #0x0]
+ldr	r1, [pc, #0x0]        @ 0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x188>
+adds	r1, r5, r1
+str	r1, [sp, #0x0]
+movs	r1, #0x0
+lsls	r1, r1, #0x0
+adds	r2, r5, r1
+movs	r1, #0x0
+lsls	r1, r1, #0x0
+adds	r1, r5, r1
+str	r1, [sp, #0x0]
+movs	r1, #0x0
+lsls	r1, r1, #0x0
+adds	r1, r5, r1
+str	r1, [sp, #0x0]
+ldr	r1, [r4]
+str	r1, [sp, #0x0]
+movs	r3, #0x0
+lsls	r1, r3, #0x0
+str	r1, [sp, #0x0]
+lsls	r1, r3, #0x0
+str	r1, [sp, #0x0]
+lsls	r1, r3, #0x0
+str	r1, [sp, #0x0]
+movs	r1, #0x0
+str	r1, [sp, #0x0]
+lsls	r1, r1, #0x0
+str	r1, [sp, #0x0]
+movs	r1, #0x0
+lsls	r1, r1, #0x0
+str	r1, [sp, #0x0]
+str	r3, [sp, #0x0]
+lsls	r1, r3, #0x0
+str	r1, [sp, #0x0]
+cmp	r0, #0x0
+str	r4, [sp, #0x0]
+beq	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x11c> @ imm = #0x0
+ldrb	r0, [r2]
+cmp	r0, #0x0
+beq	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x126> @ imm = #0x0
+cmp	r0, #0x0
+bne	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x12e> @ imm = #0x0
+mov	r0, r2
+adds	r0, #0x0
+str	r0, [sp, #0x0]
+ldrb	r0, [r2, #0x0]
+lsls	r0, r0, #0x0
+mov	r8, r8
+add	r0, pc
+ldrh	r0, [r0, #0x0]
+lsls	r0, r0, #0x0
+add	pc, r0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/_<futures_util::future::maybe_done::MaybeDone<Fut> as core::future::future::Future>/poll.s b/.bins/2023-06-14/dumped/_<futures_util::future::maybe_done::MaybeDone<Fut> as core::future::future::Future>/poll.s
deleted file mode 100644
index d500796..0000000
--- a/.bins/2023-06-14/dumped/_<futures_util::future::maybe_done::MaybeDone<Fut> as core::future::future::Future>/poll.s	
+++ /dev/null
@@ -1,72 +0,0 @@
-push	{r4, r5, r6, r7, lr}
-add	r7, sp, #0x0
-sub	sp, #0x0
-mov	r4, r0
-movs	r0, #0x0
-ldrb	r3, [r4, r0]
-subs	r0, r3, #0x0
-uxtb	r2, r0
-movs	r0, #0x0
-cmp	r2, #0x0
-blo	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x26> @ imm = #0x0
-mov	r2, r0
-cmp	r2, #0x0
-beq	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x2c> @ imm = #0x0
-cmp	r2, #0x0
-beq	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x22> @ imm = #0x0
-b	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x1fc> @ imm = #0x0
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
-adds	r2, r2, #0x0
-cmp	r2, #0x0
-bne	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x1c> @ imm = #0x0
-mov	r5, r4
-adds	r5, #0x0
-mov	r0, r4
-adds	r0, #0x0
-str	r0, [sp, #0x0]
-mov	r0, r4
-adds	r0, #0x0
-str	r0, [sp, #0x0]
-mov	r0, r4
-adds	r0, #0x0
-str	r0, [sp, #0x0]
-movs	r2, #0x0
-lsls	r0, r2, #0x0
-str	r0, [sp, #0x0]
-lsls	r0, r2, #0x0
-str	r0, [sp, #0x0]
-lsls	r0, r2, #0x0
-str	r0, [sp, #0x0]
-movs	r0, #0x0
-str	r0, [sp]
-lsls	r0, r0, #0x0
-str	r0, [sp, #0x0]
-movs	r0, #0x0
-lsls	r0, r0, #0x0
-str	r0, [sp, #0x0]
-str	r2, [sp, #0x0]
-lsls	r0, r2, #0x0
-str	r0, [sp, #0x0]
-cmp	r3, #0x0
-str	r4, [sp, #0x0]
-str	r1, [sp, #0x0]
-str	r5, [sp, #0x0]
-beq	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0xac> @ imm = #0x0
-ldrb	r0, [r4, #0x0]
-mov	r1, r4
-adds	r1, #0x0
-cmp	r0, #0x0
-str	r1, [sp, #0x0]
-beq	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0xba> @ imm = #0x0
-cmp	r0, #0x0
-bne	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0xc0> @ imm = #0x0
-mov	r0, r4
-adds	r0, #0x0
-str	r0, [sp, #0x0]
-ldrb	r0, [r4, #0x0]
-lsls	r0, r0, #0x0
-add	r0, pc
-ldrh	r0, [r0, #0x0]
-lsls	r0, r0, #0x0
-add	pc, r0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/__pre_init.s b/.bins/2023-06-15/dumped/__pre_init.s
index 530d6ba..cc81151 100644
--- a/.bins/2023-06-14/dumped/__pre_init.s
+++ b/.bins/2023-06-15/dumped/__pre_init.s
@@ -1 +1,2 @@
-bx	lr
\ No newline at end of file
+bx	lr
+bmi	0x1000 <_$LT$embassy_rp..config..Config$u20$as$u20$core..default..Default$GT$::default+0x1e> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/__wfe.s b/.bins/2023-06-15/dumped/__wfe.s
index 76aaf72..b198cfb 100644
--- a/.bins/2023-06-14/dumped/__wfe.s
+++ b/.bins/2023-06-15/dumped/__wfe.s
@@ -1,3 +1,2 @@
 wfe
-bx	lr
-bmi	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::wake+0x3c> @ imm = #0x0
\ No newline at end of file
+bx	lr
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/_defmt_acquire.s b/.bins/2023-06-15/dumped/_defmt_acquire.s
index 944018c..c7805fa 100644
--- a/.bins/2023-06-14/dumped/_defmt_acquire.s
+++ b/.bins/2023-06-15/dumped/_defmt_acquire.s
@@ -1,65 +1,55 @@
-push	{r4, r5, r6, r7, lr}
+push	{r4, r5, r7, lr}
 add	r7, sp, #0x0
 sub	sp, #0x0
 bl	0x1000 <_critical_section_1_0_acquire> @ imm = #0x0
-ldr	r1, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x88>
+ldr	r1, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x74>
 ldrb	r2, [r1]
 cmp	r2, #0x0
-bne	0x1000 <_defmt_acquire+0x6a> @ imm = #0x0
-movs	r4, #0x0
-strb	r4, [r1]
+bne	0x1000 <_defmt_acquire+0x58> @ imm = #0x0
+movs	r2, #0x0
+strb	r2, [r1]
 strb	r0, [r1, #0x0]
 ldrb	r0, [r1, #0x0]
 cmp	r0, #0x0
-beq	0x1000 <_defmt_acquire+0x22> @ imm = #0x0
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
-strb	r4, [r1, #0x0]
-add	r5, sp, #0x0
-movs	r0, #0x0
-strb	r0, [r5]
-ldr	r0, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x98>
-str	r0, [sp]
-ldr	r0, [r0, #0x0]
+bne	0x1000 <_defmt_acquire+0x4a> @ imm = #0x0
+strb	r2, [r1, #0x0]
+mov	r0, sp
+movs	r1, #0x0
+strb	r1, [r0]
+ldr	r4, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x84>
+ldr	r0, [r4, #0x0]
 movs	r1, #0x0
 ands	r1, r0
 cmp	r1, #0x0
-beq	0x1000 <_defmt_acquire+0x3c> @ imm = #0x0
-ldr	r6, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0xa0>
-b	0x1000 <_defmt_acquire+0x3e> @ imm = #0x0
-ldr	r6, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x9c>
-ldr	r0, [sp]
-adds	r0, #0x0
-str	r0, [sp]
-b	0x1000 <_defmt_acquire+0x4a> @ imm = #0x0
-cmp	r4, #0x0
-beq	0x1000 <_defmt_acquire+0x1e> @ imm = #0x0
-ldr	r0, [sp]
-mov	r1, r5
-mov	r2, r4
-blx	r6
+beq	0x1000 <_defmt_acquire+0x36> @ imm = #0x0
+ldr	r5, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x8c>
+b	0x1000 <_defmt_acquire+0x38> @ imm = #0x0
+ldr	r5, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x88>
+adds	r4, #0x0
+mov	r1, sp
+movs	r2, #0x0
+mov	r0, r4
+blx	r5
+cmp	r0, #0x0
+beq	0x1000 <_defmt_acquire+0x3a> @ imm = #0x0
 cmp	r0, #0x0
-beq	0x1000 <_defmt_acquire+0x46> @ imm = #0x0
-cmp	r4, r0
-blo	0x1000 <_defmt_acquire+0x60> @ imm = #0x0
-adds	r5, r5, r0
-subs	r4, r4, r0
-b	0x1000 <_defmt_acquire+0x46> @ imm = #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0xa4>
-mov	r1, r4
+bne	0x1000 <_defmt_acquire+0x4e> @ imm = #0x0
+add	sp, #0x0
+pop	{r4, r5, r7, pc}
+movs	r1, #0x0
+ldr	r2, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x90>
 bl	0x1000 <core::slice::index::slice_start_index_len_fail> @ imm = #0x0
 trap
 movs	r0, #0x0
 str	r0, [sp, #0x0]
 movs	r1, #0x0
 str	r1, [sp, #0x0]
-ldr	r1, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x8c>
-str	r1, [sp, #0x0]
+ldr	r1, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x78>
+str	r1, [sp]
 str	r0, [sp, #0x0]
-ldr	r0, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x90>
+ldr	r0, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x7c>
 str	r0, [sp, #0x0]
-add	r0, sp, #0x0
-ldr	r1, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x94>
+mov	r0, sp
+ldr	r1, [pc, #0x0]         @ 0x1000 <_defmt_acquire+0x80>
 bl	0x1000 <core::panicking::panic_fmt> @ imm = #0x0
-trap
-mov	r8, r8
\ No newline at end of file
+trap
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/_defmt_release.s b/.bins/2023-06-15/dumped/_defmt_release.s
index 6c28410..0e75745 100644
--- a/.bins/2023-06-14/dumped/_defmt_release.s
+++ b/.bins/2023-06-15/dumped/_defmt_release.s
@@ -1,10 +1,4 @@
-push	{r4, r6, r7, lr}
+push	{r7, lr}
 add	r7, sp, #0x0
-ldr	r4, [pc, #0x0]         @ 0x1000 <_defmt_release+0x18>
-adds	r0, r4, #0x0
-bl	0x1000 <defmt::encoding::inner::Encoder::end_frame> @ imm = #0x0
-movs	r0, #0x0
-strb	r0, [r4]
-ldrb	r0, [r4, #0x0]
-bl	0x1000 <_critical_section_1_0_release> @ imm = #0x0
-pop	{r4, r6, r7, pc}
\ No newline at end of file
+bl	0x1000 <_$LT$defmt_rtt..Logger$u20$as$u20$defmt..traits..Logger$GT$::release> @ imm = #0x0
+pop	{r7, pc}
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/_embassy_time_set_alarm.s b/.bins/2023-06-15/dumped/_embassy_time_set_alarm.s
index e05aa09..6edc702 100644
--- a/.bins/2023-06-14/dumped/_embassy_time_set_alarm.s
+++ b/.bins/2023-06-15/dumped/_embassy_time_set_alarm.s
@@ -1,121 +1,7 @@
-push	{r4, r5, r6, r7, lr}
+push	{r7, lr}
 add	r7, sp, #0x0
-sub	sp, #0x0
-str	r3, [sp, #0x0]
-str	r2, [sp, #0x0]
-add	r1, sp, #0x0
-strb	r0, [r1]
-mov	r0, r1
-bl	0x1000 <embassy_time::driver::AlarmHandle::id> @ imm = #0x0
-mov	r5, r0
-bl	0x1000 <__primask_r> @ imm = #0x0
-mov	r4, r0
-movs	r2, #0x0
-movs	r0, #0x0
-lsls	r0, r0, #0x0
-ldr	r0, [r0]
-ldr	r1, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm+0x104>
-ldrb	r1, [r1]
-dmb	sy
-str	r5, [sp, #0x0]
-uxtb	r6, r5
-adds	r3, r0, #0x0
-uxtb	r0, r3
-cmp	r1, r0
-str	r2, [sp, #0x0]
-bne	0x1000 <_embassy_time_set_alarm+0x3e> @ imm = #0x0
-movs	r1, #0x0
-b	0x1000 <_embassy_time_set_alarm+0x74> @ imm = #0x0
-str	r3, [sp, #0x0]
-ands	r4, r2
-ldr	r5, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm+0x108>
-bne	0x1000 <_embassy_time_set_alarm+0x60> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-bne	0x1000 <_embassy_time_set_alarm+0x6a> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <_embassy_time_set_alarm+0x50> @ imm = #0x0
-b	0x1000 <_embassy_time_set_alarm+0x6a> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <_embassy_time_set_alarm+0x60> @ imm = #0x0
-ldr	r0, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm+0x104>
-ldr	r1, [sp, #0x0]
-strb	r1, [r0]
-rsbs	r1, r4, #0
-adcs	r1, r4
-ldr	r0, [sp, #0x0]
-cmp	r6, #0x0
-ldr	r5, [sp, #0x0]
-bhs	0x1000 <_embassy_time_set_alarm+0xf8> @ imm = #0x0
-str	r1, [sp, #0x0]
-lsls	r1, r6, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm+0x110>
-str	r5, [r2, r1]
-adds	r1, r2, r1
-str	r0, [r1, #0x0]
-lsls	r3, r6, #0x0
-adds	r3, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm+0x114>
-adds	r3, r3, r2
-subs	r3, #0x0
-str	r5, [r3]
-ldr	r4, [r2]
-ldr	r6, [r2, #0x0]
-ldr	r3, [r2]
-cmp	r4, r3
-beq	0x1000 <_embassy_time_set_alarm+0xa8> @ imm = #0x0
-ldr	r4, [r2]
-ldr	r6, [r2, #0x0]
-ldr	r3, [r2]
-cmp	r4, r3
-bne	0x1000 <_embassy_time_set_alarm+0x94> @ imm = #0x0
-subs	r3, r6, r5
-mov	r3, r4
-sbcs	r3, r0
-blo	0x1000 <_embassy_time_set_alarm+0xcc> @ imm = #0x0
-movs	r3, #0x0
-ldr	r0, [sp, #0x0]
-ands	r0, r3
-ldr	r3, [sp, #0x0]
-lsls	r3, r0
-movs	r5, #0x0
-ands	r5, r3
-subs	r2, r2, #0x0
-str	r5, [r2]
-ldr	r5, [sp, #0x0]
-movs	r2, #0x0
-mvns	r2, r2
-str	r2, [r1]
-str	r2, [r1, #0x0]
-ldr	r3, [sp, #0x0]
-cmp	r3, #0x0
-ldr	r0, [sp, #0x0]
-beq	0x1000 <_embassy_time_set_alarm+0xea> @ imm = #0x0
-movs	r1, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm+0x104>
-strb	r1, [r2]
-ldr	r1, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm+0x108>
-str	r0, [r1]
-cmp	r3, #0x0
-beq	0x1000 <_embassy_time_set_alarm+0xea> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-ldr	r0, [sp, #0x0]
-ldr	r5, [sp, #0x0]
-subs	r1, r6, r5
-ldr	r1, [sp, #0x0]
-sbcs	r4, r1
-blo	0x1000 <_embassy_time_set_alarm+0xf4> @ imm = #0x0
-movs	r0, #0x0
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
-movs	r1, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm+0x10c>
-mov	r0, r6
-bl	0x1000 <core::panicking::panic_bounds_check> @ imm = #0x0
-trap
\ No newline at end of file
+mov	r1, r0
+ldr	r0, [pc, #0x0]          @ 0x1000 <_embassy_time_set_alarm+0x10>
+adds	r0, #0x0
+bl	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm> @ imm = #0x0
+pop	{r7, pc}
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/_embassy_time_set_alarm_callback.s b/.bins/2023-06-15/dumped/_embassy_time_set_alarm_callback.s
index e27f32c..335b811 100644
--- a/.bins/2023-06-14/dumped/_embassy_time_set_alarm_callback.s
+++ b/.bins/2023-06-15/dumped/_embassy_time_set_alarm_callback.s
@@ -1,79 +1,9 @@
-push	{r4, r5, r6, r7, lr}
+push	{r7, lr}
 add	r7, sp, #0x0
-sub	sp, #0x0
-str	r2, [sp, #0x0]
-str	r1, [sp, #0x0]
-add	r1, sp, #0x0
-strb	r0, [r1]
-mov	r0, r1
-bl	0x1000 <embassy_time::driver::AlarmHandle::id> @ imm = #0x0
-mov	r4, r0
-bl	0x1000 <__primask_r> @ imm = #0x0
-movs	r1, #0x0
-lsls	r1, r1, #0x0
-ldr	r2, [r1]
-ldr	r1, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm_callback+0xb0>
-ldrb	r1, [r1]
-dmb	sy
-uxtb	r4, r4
-adds	r6, r2, #0x0
-uxtb	r2, r6
-cmp	r1, r2
-bne	0x1000 <_embassy_time_set_alarm_callback+0x48> @ imm = #0x0
-cmp	r4, #0x0
-bhi	0x1000 <_embassy_time_set_alarm_callback+0xa4> @ imm = #0x0
-lsls	r0, r4, #0x0
-ldr	r1, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm_callback+0xb8>
-adds	r0, r1, r0
-ldr	r1, [sp, #0x0]
-str	r1, [r0, #0x0]
-ldr	r1, [sp, #0x0]
-str	r1, [r0, #0x0]
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
-movs	r1, #0x0
-str	r1, [sp]
-ands	r0, r1
-str	r0, [sp, #0x0]
-ldr	r5, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm_callback+0xb4>
-bne	0x1000 <_embassy_time_set_alarm_callback+0x6e> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-bne	0x1000 <_embassy_time_set_alarm_callback+0x78> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <_embassy_time_set_alarm_callback+0x5e> @ imm = #0x0
-b	0x1000 <_embassy_time_set_alarm_callback+0x78> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <_embassy_time_set_alarm_callback+0x6e> @ imm = #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm_callback+0xb0>
-strb	r6, [r2]
-cmp	r4, #0x0
-bhs	0x1000 <_embassy_time_set_alarm_callback+0xa4> @ imm = #0x0
-lsls	r0, r4, #0x0
-ldr	r1, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm_callback+0xb8>
-adds	r0, r1, r0
-ldr	r1, [sp, #0x0]
-str	r1, [r0, #0x0]
-ldr	r1, [sp, #0x0]
-str	r1, [r0, #0x0]
-movs	r0, #0x0
-strb	r0, [r2]
-ldr	r0, [sp]
-str	r0, [r5]
-ldr	r0, [sp, #0x0]
-cmp	r0, #0x0
-bne	0x1000 <_embassy_time_set_alarm_callback+0xa0> @ imm = #0x0
-bl	0x1000 <__cpsie>    @ imm = #0x0
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
-movs	r1, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <_embassy_time_set_alarm_callback+0xbc>
-mov	r0, r4
-bl	0x1000 <core::panicking::panic_bounds_check> @ imm = #0x0
-trap
\ No newline at end of file
+mov	r3, r2
+mov	r2, r1
+mov	r1, r0
+ldr	r0, [pc, #0x0]          @ 0x1000 <_embassy_time_set_alarm_callback+0x14>
+adds	r0, #0x0
+bl	0x1000 <_$LT$embassy_rp..timer..TimerDriver$u20$as$u20$embassy_time..driver..Driver$GT$::set_alarm_callback> @ imm = #0x0
+pop	{r7, pc}
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/core/ptr/drop_in_place<core::cell::BorrowMutError>.s b/.bins/2023-06-14/dumped/core/ptr/drop_in_place<core::cell::BorrowMutError>.s
deleted file mode 100644
index 530d6ba..0000000
--- a/.bins/2023-06-14/dumped/core/ptr/drop_in_place<core::cell::BorrowMutError>.s
+++ /dev/null
@@ -1 +0,0 @@
-bx	lr
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/core/ptr/drop_in_place<core::fmt::Error>.s b/.bins/2023-06-15/dumped/core/ptr/drop_in_place<core::fmt::Error>.s
index 07961dd..b8c8aab 100644
--- a/.bins/2023-06-14/dumped/core/ptr/drop_in_place<core::fmt::Error>.s
+++ b/.bins/2023-06-15/dumped/core/ptr/drop_in_place<core::fmt::Error>.s
@@ -1,2 +1,2 @@
 bx	lr
-bmi	0x1000 <defmt_rtt::channel::Channel::nonblocking_write (.llvm)+0x24> @ imm = #0x0
\ No newline at end of file
+bmi	0x1000 <_defmt_acquire+0x6a> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/core/ptr/drop_in_place<embassy_usb_driver::EndpointAllocError>.s b/.bins/2023-06-15/dumped/core/ptr/drop_in_place<embassy_usb_driver::EndpointAllocError>.s
index 8cc3bc8..530d6ba 100644
--- a/.bins/2023-06-14/dumped/core/ptr/drop_in_place<embassy_usb_driver::EndpointAllocError>.s
+++ b/.bins/2023-06-15/dumped/core/ptr/drop_in_place<embassy_usb_driver::EndpointAllocError>.s
@@ -1,2 +1 @@
-bx	lr
-bmi	0x1000 <embassy_usb::builder::Builder$LT$D$GT$::build+0x10a> @ imm = #0x0
\ No newline at end of file
+bx	lr
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/defmt/encoding/inner/Encoder/end_frame.s b/.bins/2023-06-14/dumped/defmt/encoding/inner/Encoder/end_frame.s
deleted file mode 100644
index eed85a8..0000000
--- a/.bins/2023-06-14/dumped/defmt/encoding/inner/Encoder/end_frame.s
+++ /dev/null
@@ -1,123 +0,0 @@
-push	{r4, r5, r6, r7, lr}
-add	r7, sp, #0x0
-sub	sp, #0x0
-str	r0, [sp, #0x0]
-ldrb	r0, [r0, #0x0]
-cmp	r0, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xa0> @ imm = #0x0
-cmp	r0, #0x0
-bhs	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x38> @ imm = #0x0
-movs	r1, #0x0
-mvns	r1, r1
-lsls	r1, r0
-ldr	r0, [sp, #0x0]
-ldrb	r0, [r0, #0x0]
-orrs	r0, r1
-movs	r1, #0x0
-ands	r1, r0
-add	r5, sp, #0x0
-strb	r1, [r5]
-ldr	r0, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0xf8>
-str	r0, [sp, #0x0]
-ldr	r0, [r0, #0x0]
-movs	r1, #0x0
-ands	r1, r0
-cmp	r1, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x54> @ imm = #0x0
-ldr	r6, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0x100>
-b	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x56> @ imm = #0x0
-adds	r0, #0x0
-movs	r1, #0x0
-orrs	r1, r0
-add	r5, sp, #0x0
-strb	r1, [r5]
-ldr	r0, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0xf8>
-str	r0, [sp, #0x0]
-ldr	r0, [r0, #0x0]
-movs	r1, #0x0
-ands	r1, r0
-cmp	r1, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x7a> @ imm = #0x0
-ldr	r6, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0x100>
-b	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x7c> @ imm = #0x0
-ldr	r6, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0xfc>
-movs	r4, #0x0
-ldr	r0, [sp, #0x0]
-adds	r0, #0x0
-str	r0, [sp, #0x0]
-b	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x64> @ imm = #0x0
-cmp	r4, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xa0> @ imm = #0x0
-ldr	r0, [sp, #0x0]
-mov	r1, r5
-mov	r2, r4
-blx	r6
-cmp	r0, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x60> @ imm = #0x0
-cmp	r4, r0
-blo	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xec> @ imm = #0x0
-adds	r5, r5, r0
-subs	r4, r4, r0
-b	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x60> @ imm = #0x0
-ldr	r6, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0xfc>
-movs	r4, #0x0
-ldr	r0, [sp, #0x0]
-adds	r0, #0x0
-str	r0, [sp, #0x0]
-b	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x8a> @ imm = #0x0
-cmp	r4, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xa0> @ imm = #0x0
-ldr	r0, [sp, #0x0]
-mov	r1, r5
-mov	r2, r4
-blx	r6
-cmp	r0, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x86> @ imm = #0x0
-cmp	r4, r0
-blo	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xec> @ imm = #0x0
-adds	r5, r5, r0
-subs	r4, r4, r0
-b	0x1000 <defmt::encoding::inner::Encoder::end_frame+0x86> @ imm = #0x0
-add	r5, sp, #0x0
-movs	r0, #0x0
-str	r0, [sp, #0x0]
-strb	r0, [r5]
-ldr	r0, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0xf8>
-str	r0, [sp, #0x0]
-ldr	r0, [r0, #0x0]
-movs	r1, #0x0
-ands	r1, r0
-cmp	r1, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xba> @ imm = #0x0
-ldr	r6, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0x100>
-b	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xbc> @ imm = #0x0
-ldr	r6, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0xfc>
-movs	r4, #0x0
-ldr	r0, [sp, #0x0]
-adds	r0, #0x0
-str	r0, [sp, #0x0]
-b	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xca> @ imm = #0x0
-cmp	r4, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xe0> @ imm = #0x0
-ldr	r0, [sp, #0x0]
-mov	r1, r5
-mov	r2, r4
-blx	r6
-cmp	r0, #0x0
-beq	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xc6> @ imm = #0x0
-cmp	r4, r0
-blo	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xec> @ imm = #0x0
-adds	r5, r5, r0
-subs	r4, r4, r0
-b	0x1000 <defmt::encoding::inner::Encoder::end_frame+0xc6> @ imm = #0x0
-ldr	r0, [sp, #0x0]
-ldr	r1, [sp, #0x0]
-strb	r1, [r0, #0x0]
-strb	r1, [r0, #0x0]
-add	sp, #0x0
-pop	{r4, r5, r6, r7, pc}
-ldr	r2, [pc, #0x0]         @ 0x1000 <defmt::encoding::inner::Encoder::end_frame+0x104>
-mov	r1, r4
-bl	0x1000 <core::slice::index::slice_start_index_len_fail> @ imm = #0x0
-trap
-mov	r8, r8
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/defmt_rtt/channel/Channel/blocking_write.s b/.bins/2023-06-15/dumped/defmt_rtt/channel/Channel/blocking_write.s
index d64264e..d3933ab 100644
--- a/.bins/2023-06-14/dumped/defmt_rtt/channel/Channel/blocking_write.s
+++ b/.bins/2023-06-15/dumped/defmt_rtt/channel/Channel/blocking_write.s
@@ -4,7 +4,7 @@ sub	sp, #0x0
 mov	r5, r0
 movs	r0, #0x0
 cmp	r2, #0x0
-beq	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x3a> @ imm = #0x0
+beq	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x3a> @ imm = #0x0
 mov	r4, r2
 str	r1, [sp, #0x0]
 ldr	r2, [r5, #0x0]
@@ -13,32 +13,32 @@ dmb	sy
 movs	r3, #0x0
 lsls	r3, r3, #0x0
 cmp	r2, r1
-bls	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x30> @ imm = #0x0
+bls	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x30> @ imm = #0x0
 mov	r6, r3
 mvns	r3, r1
 adds	r2, r2, r3
 mov	r3, r6
 cmp	r2, #0x0
-bne	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x46> @ imm = #0x0
-b	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x3a> @ imm = #0x0
+bne	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x46> @ imm = #0x0
+b	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x3a> @ imm = #0x0
 cmp	r2, #0x0
-beq	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x3e> @ imm = #0x0
+beq	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x3e> @ imm = #0x0
 subs	r2, r3, r1
 cmp	r2, #0x0
-bne	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x46> @ imm = #0x0
+bne	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x46> @ imm = #0x0
 add	sp, #0x0
 pop	{r4, r5, r6, r7, pc}
 mvns	r2, r1
 adds	r2, r2, r3
 cmp	r2, #0x0
-beq	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x3a> @ imm = #0x0
+beq	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x3a> @ imm = #0x0
 cmp	r4, r2
-blo	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x4c> @ imm = #0x0
+blo	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x4c> @ imm = #0x0
 mov	r4, r2
 adds	r6, r4, r1
 cmp	r6, r3
 str	r3, [sp, #0x0]
-bls	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x70> @ imm = #0x0
+bls	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x70> @ imm = #0x0
 subs	r0, r3, r1
 str	r0, [sp]
 ldr	r0, [r5, #0x0]
@@ -51,7 +51,7 @@ ldr	r1, [sp, #0x0]
 adds	r1, r1, r0
 subs	r2, r4, r0
 ldr	r0, [r5, #0x0]
-b	0x1000 <defmt_rtt::channel::Channel::blocking_write (.llvm)+0x78> @ imm = #0x0
+b	0x1000 <defmt_rtt::channel::Channel::blocking_write+0x78> @ imm = #0x0
 ldr	r0, [r5, #0x0]
 adds	r0, r0, r1
 ldr	r1, [sp, #0x0]
diff --git a/.bins/2023-06-14/dumped/defmt_rtt/channel/Channel/nonblocking_write.s b/.bins/2023-06-15/dumped/defmt_rtt/channel/Channel/nonblocking_write.s
index 4a1ab42..aa4a0bc 100644
--- a/.bins/2023-06-14/dumped/defmt_rtt/channel/Channel/nonblocking_write.s
+++ b/.bins/2023-06-15/dumped/defmt_rtt/channel/Channel/nonblocking_write.s
@@ -5,14 +5,14 @@ mov	r6, r2
 movs	r2, #0x0
 lsls	r4, r2, #0x0
 cmp	r6, r4
-blo	0x1000 <defmt_rtt::channel::Channel::nonblocking_write (.llvm)+0x12> @ imm = #0x0
+blo	0x1000 <defmt_rtt::channel::Channel::nonblocking_write+0x12> @ imm = #0x0
 mov	r6, r4
 ldr	r3, [r0, #0x0]
 adds	r5, r3, r6
 dmb	sy
 cmp	r5, r4
 str	r0, [sp, #0x0]
-bls	0x1000 <defmt_rtt::channel::Channel::nonblocking_write (.llvm)+0x3c> @ imm = #0x0
+bls	0x1000 <defmt_rtt::channel::Channel::nonblocking_write+0x3c> @ imm = #0x0
 subs	r2, r4, r3
 str	r2, [sp]
 ldr	r0, [r0, #0x0]
@@ -25,7 +25,7 @@ adds	r1, r1, r0
 subs	r2, r6, r0
 ldr	r0, [sp, #0x0]
 ldr	r0, [r0, #0x0]
-b	0x1000 <defmt_rtt::channel::Channel::nonblocking_write (.llvm)+0x42> @ imm = #0x0
+b	0x1000 <defmt_rtt::channel::Channel::nonblocking_write+0x42> @ imm = #0x0
 ldr	r0, [r0, #0x0]
 adds	r0, r0, r3
 mov	r2, r6
diff --git a/.bins/2023-06-14/dumped/embassy_executor/arch/thread/Executor/run.s b/.bins/2023-06-15/dumped/embassy_executor/arch/thread/Executor/run.s
index a996c7f..1d662c3 100644
--- a/.bins/2023-06-14/dumped/embassy_executor/arch/thread/Executor/run.s
+++ b/.bins/2023-06-15/dumped/embassy_executor/arch/thread/Executor/run.s
@@ -2,7 +2,7 @@ push	{r7, lr}
 add	r7, sp, #0x0
 sub	sp, #0x0
 mov	r4, r0
-bl	0x1000 <embassy_executor::raw::Executor::spawner> @ imm = #0x0
+bl	0x1000 <embassy_executor::spawner::Spawner::new> @ imm = #0x0
 str	r0, [sp, #0x0]
 movs	r0, #0x0
 str	r0, [sp]
diff --git a/.bins/2023-06-14/dumped/embassy_executor/raw/Executor/poll.s b/.bins/2023-06-15/dumped/embassy_executor/raw/Executor/poll.s
index 91cbba6..246a6fa 100644
--- a/.bins/2023-06-14/dumped/embassy_executor/raw/Executor/poll.s
+++ b/.bins/2023-06-15/dumped/embassy_executor/raw/Executor/poll.s
@@ -23,7 +23,7 @@ str	r0, [sp, #0x0]
 ldr	r0, [sp]
 ldrb	r4, [r0, #0x0]
 add	r0, sp, #0x0
-bl	0x1000 <embassy_time::instant::Instant::as_micros> @ imm = #0x0
+bl	0x1000 <embassy_time::duration::Duration::as_micros> @ imm = #0x0
 mov	r2, r0
 mov	r0, r4
 mov	r3, r1
diff --git a/.bins/2023-06-14/dumped/embassy_executor/raw/Executor/spawner.s b/.bins/2023-06-14/dumped/embassy_executor/raw/Executor/spawner.s
deleted file mode 100644
index ce8a1ad..0000000
--- a/.bins/2023-06-14/dumped/embassy_executor/raw/Executor/spawner.s
+++ /dev/null
@@ -1,2 +0,0 @@
-bx	lr
-bmi	0x1000 <serial_ws2812_firmware::__cortex_m_rt_main+0x13a> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_executor/raw/SyncExecutor/alarm_callback.s b/.bins/2023-06-15/dumped/embassy_executor/raw/SyncExecutor/alarm_callback.s
index 78fddfb..601dfb7 100644
--- a/.bins/2023-06-14/dumped/embassy_executor/raw/SyncExecutor/alarm_callback.s
+++ b/.bins/2023-06-15/dumped/embassy_executor/raw/SyncExecutor/alarm_callback.s
@@ -2,22 +2,22 @@ push	{r7, lr}
 add	r7, sp, #0x0
 ldrh	r1, [r0]
 cmp	r1, #0x0
-beq	0x1000 <embassy_executor::raw::SyncExecutor::alarm_callback (.llvm)+0x22> @ imm = #0x0
+beq	0x1000 <embassy_executor::raw::SyncExecutor::alarm_callback+0x22> @ imm = #0x0
 ldrh	r1, [r0, #0x0]
 lsrs	r0, r1, #0x0
 lsrs	r2, r1, #0x0
-bne	0x1000 <embassy_executor::raw::SyncExecutor::alarm_callback (.llvm)+0x26> @ imm = #0x0
+bne	0x1000 <embassy_executor::raw::SyncExecutor::alarm_callback+0x26> @ imm = #0x0
 movs	r2, #0x0
 ands	r1, r2
 movs	r2, #0x0
 lsls	r2, r1
 lsls	r0, r0, #0x0
-ldr	r1, [pc, #0x0]         @ 0x1000 <embassy_executor::raw::SyncExecutor::alarm_callback (.llvm)+0x34>
+ldr	r1, [pc, #0x0]         @ 0x1000 <embassy_executor::raw::SyncExecutor::alarm_callback+0x34>
 str	r2, [r0, r1]
 pop	{r7, pc}
 sev
 pop	{r7, pc}
 movs	r1, #0x0
-ldr	r2, [pc, #0x0]          @ 0x1000 <embassy_executor::raw::SyncExecutor::alarm_callback (.llvm)+0x30>
+ldr	r2, [pc, #0x0]          @ 0x1000 <embassy_executor::raw::SyncExecutor::alarm_callback+0x30>
 bl	0x1000 <core::panicking::panic_bounds_check> @ imm = #0x0
 trap
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_executor/raw/TaskRef/as_ptr.s b/.bins/2023-06-15/dumped/embassy_executor/raw/TaskRef/as_ptr.s
index b952f9d..08905b1 100644
--- a/.bins/2023-06-14/dumped/embassy_executor/raw/TaskRef/as_ptr.s
+++ b/.bins/2023-06-15/dumped/embassy_executor/raw/TaskRef/as_ptr.s
@@ -1,2 +1,2 @@
 bx	lr
-bmi	0x1000 <serial_ws2812_firmware::__cortex_m_rt_main+0xfe> @ imm = #0x0
\ No newline at end of file
+bmi	0x1000 <serial_ws2812_firmware::__cortex_m_rt_main+0x142> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_executor/raw/TaskStorage<F>/poll.s b/.bins/2023-06-15/dumped/embassy_executor/raw/TaskStorage<F>/poll.s
index e381bfb..c18ccc8 100644
--- a/.bins/2023-06-14/dumped/embassy_executor/raw/TaskStorage<F>/poll.s
+++ b/.bins/2023-06-15/dumped/embassy_executor/raw/TaskStorage<F>/poll.s
@@ -11,38 +11,40 @@ str	r1, [sp, #0x0]
 str	r0, [sp, #0x0]
 add	r0, sp, #0x0
 str	r0, [sp, #0x0]
-ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1a0>
-adds	r1, r4, r0
-ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1a4>
-adds	r3, r4, r0
-ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1a8>
-adds	r2, r4, r0
-ldr	r6, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1ac>
-ldrb	r0, [r4, r6]
+ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x168>
+adds	r0, r4, r0
+ldr	r2, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x174>
+ldrb	r1, [r4, r2]
 add	r5, sp, #0x0
-cmp	r0, #0x0
-str	r1, [sp, #0x0]
-str	r2, [sp, #0x0]
-beq	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x48> @ imm = #0x0
-cmp	r0, #0x0
-beq	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x132> @ imm = #0x0
-ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1b0>
+cmp	r1, #0x0
+beq	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x3e> @ imm = #0x0
+cmp	r1, #0x0
+bne	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x32> @ imm = #0x0
+b	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x136> @ imm = #0x0
+ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x178>
 movs	r1, #0x0
-ldr	r2, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1b4>
+ldr	r2, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x17c>
 bl	0x1000 <core::panicking::panic> @ imm = #0x0
 trap
+ldr	r1, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x16c>
+adds	r1, r4, r1
+str	r1, [sp, #0x0]
+ldr	r1, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x170>
+adds	r1, r4, r1
+str	r1, [sp, #0x0]
 adds	r5, #0x0
-movs	r0, #0x0
-lsls	r0, r0, #0x0
-adds	r1, r4, r0
-add	r0, sp, #0x0
+movs	r1, #0x0
+lsls	r1, r1, #0x0
+adds	r1, r4, r1
+add	r3, sp, #0x0
+str	r3, [sp, #0x0]
 str	r0, [sp, #0x0]
 movs	r2, #0x0
-str	r3, [sp, #0x0]
+mov	r0, r3
 bl	0x1000 <__aeabi_memcpy4> @ imm = #0x0
 add	r6, sp, #0x0
-ldr	r1, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1b8>
-ldr	r2, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1bc>
+ldr	r1, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x180>
+ldr	r2, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x184>
 mov	r0, r6
 bl	0x1000 <embassy_usb::builder::Config::new> @ imm = #0x0
 movs	r0, #0x0
@@ -50,14 +52,14 @@ strh	r0, [r6, #0x0]
 movs	r1, #0x0
 str	r1, [sp, #0x0]
 strb	r1, [r5, #0x0]
-ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1c0>
+ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x188>
 str	r0, [r5]
 str	r1, [sp, #0x0]
-ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1c4>
+ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x18c>
 str	r0, [sp, #0x0]
-ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1c8>
+ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x190>
 str	r0, [sp, #0x0]
-ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1cc>
+ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x194>
 str	r0, [sp, #0x0]
 movs	r0, #0x0
 str	r0, [sp, #0x0]
@@ -111,7 +113,7 @@ ldr	r1, [sp, #0x0]
 ldr	r2, [sp, #0x0]
 ldr	r3, [sp, #0x0]
 bl	0x1000 <embassy_usb::builder::Builder$LT$D$GT$::new> @ imm = #0x0
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1d0>
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x198>
 adds	r0, r4, r0
 str	r0, [sp, #0x0]
 mov	r1, r6
@@ -130,45 +132,29 @@ adds	r6, r4, r0
 mov	r0, r6
 mov	r1, r5
 bl	0x1000 <embassy_usb::builder::Builder$LT$D$GT$::build> @ imm = #0x0
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x174>
+ldr	r0, [sp, #0x0]
+movs	r1, #0x0
+strb	r1, [r0, #0x0]
+ldr	r3, [sp, #0x0]
+str	r3, [r0]
 ldr	r3, [sp, #0x0]
-movs	r0, #0x0
-ldr	r1, [sp, #0x0]
-strb	r0, [r1, #0x0]
-ldr	r2, [sp, #0x0]
-str	r2, [r1]
 str	r6, [r3]
-ldr	r6, [pc, #0x0]         @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1ac>
-ldr	r1, [sp, #0x0]
-strb	r0, [r1]
-adds	r0, r4, r6
-str	r0, [sp, #0x0]
-add	r5, sp, #0x0
-mov	r0, r3
-mov	r1, r5
-bl	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll> @ imm = #0x0
-mov	r6, r0
-ldr	r0, [sp, #0x0]
-mov	r1, r5
-bl	0x1000 <_$LT$futures_util..future..maybe_done..MaybeDone$LT$Fut$GT$$u20$as$u20$core..future..future..Future$GT$::poll> @ imm = #0x0
-cmp	r6, #0x0
-bne	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x184> @ imm = #0x0
-cmp	r0, #0x0
-bne	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x184> @ imm = #0x0
-ldr	r1, [sp, #0x0]
-ldrb	r0, [r1]
-cmp	r0, #0x0
-bne	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x192> @ imm = #0x0
-movs	r0, #0x0
-strb	r0, [r1]
-ldr	r1, [sp, #0x0]
-ldrb	r0, [r1, #0x0]
+ldr	r3, [sp, #0x0]
+strb	r1, [r3]
+adds	r5, r4, r2
+add	r1, sp, #0x0
+bl	0x1000 <_$LT$futures_util..future..join..Join$LT$Fut1$C$Fut2$GT$$u20$as$u20$core..future..future..Future$GT$::poll> @ imm = #0x0
 cmp	r0, #0x0
-bne	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x192> @ imm = #0x0
+beq	0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x14e> @ imm = #0x0
 movs	r0, #0x0
-strb	r0, [r1, #0x0]
+strb	r0, [r5]
+subs	r4, r7, #0x0
+subs	r4, #0x0
+mov	sp, r4
+pop	{r4, r5, r6, r7, pc}
 movs	r0, #0x0
-ldr	r1, [sp, #0x0]
-strb	r0, [r1]
+strb	r0, [r5]
 adds	r4, #0x0
 mvns	r1, r0
 movs	r2, #0x0
@@ -178,16 +164,4 @@ subs	r4, r7, #0x0
 subs	r4, #0x0
 mov	sp, r4
 pop	{r4, r5, r6, r7, pc}
-movs	r0, #0x0
-ldr	r1, [sp, #0x0]
-strb	r0, [r1]
-subs	r4, r7, #0x0
-subs	r4, #0x0
-mov	sp, r4
-pop	{r4, r5, r6, r7, pc}
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1d4>
-movs	r1, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_executor::raw::TaskStorage$LT$F$GT$::poll (.llvm)+0x1d8>
-bl	0x1000 <core::panicking::panic> @ imm = #0x0
-trap
 mov	r8, r8
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_executor/raw/waker/clone.s b/.bins/2023-06-15/dumped/embassy_executor/raw/waker/clone.s
index 4c856f8..8443ee8 100644
--- a/.bins/2023-06-14/dumped/embassy_executor/raw/waker/clone.s
+++ b/.bins/2023-06-15/dumped/embassy_executor/raw/waker/clone.s
@@ -1,4 +1,4 @@
 mov	r1, r0
-ldr	r0, [pc, #0x0]          @ 0x1000 <embassy_executor::raw::waker::clone (.llvm)+0x8>
+ldr	r0, [pc, #0x0]          @ 0x1000 <embassy_executor::raw::waker::clone+0x8>
 bx	lr
 mov	r8, r8
\ No newline at end of file
diff --git a/.bins/2023-06-15/dumped/embassy_executor/spawner/Spawner/new.s b/.bins/2023-06-15/dumped/embassy_executor/spawner/Spawner/new.s
new file mode 100644
index 0000000..31d9813
--- /dev/null
+++ b/.bins/2023-06-15/dumped/embassy_executor/spawner/Spawner/new.s
@@ -0,0 +1,2 @@
+bx	lr
+bmi	0x1000 <embassy_executor::raw::waker::wake+0x2> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_rp/clocks/init.s b/.bins/2023-06-15/dumped/embassy_rp/clocks/init.s
index 902ca82..f4fd301 100644
--- a/.bins/2023-06-14/dumped/embassy_rp/clocks/init.s
+++ b/.bins/2023-06-15/dumped/embassy_rp/clocks/init.s
@@ -126,7 +126,7 @@ ldrb	r0, [r0, #0x0]
 str	r0, [sp, #0x0]
 ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_rp::clocks::init+0x484>
 str	r2, [sp, #0x0]
-bl	0x1000 <rp_pac::rosc::vals::FreqRange::to_bits> @ imm = #0x0
+bl	0x1000 <rp_pac::xosc::vals::Enable::to_bits> @ imm = #0x0
 lsls	r0, r0, #0x0
 adds	r0, r0, r5
 ldr	r1, [sp, #0x0]
@@ -147,7 +147,7 @@ mov	r5, r1
 ldr	r0, [sp, #0x0]
 ands	r4, r0
 ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_rp::clocks::init+0x484>
-bl	0x1000 <rp_pac::rosc::vals::FreqRange::to_bits> @ imm = #0x0
+bl	0x1000 <rp_pac::xosc::vals::Enable::to_bits> @ imm = #0x0
 lsls	r0, r0, #0x0
 adds	r0, r0, r4
 ldr	r4, [sp, #0x0]
@@ -168,16 +168,16 @@ movs	r0, #0x0
 lsls	r0, r0, #0x0
 ldr	r1, [sp, #0x0]
 adds	r0, r1, r0
-bl	0x1000 <rp_pac::rosc::vals::FreqRange::to_bits> @ imm = #0x0
+bl	0x1000 <rp_pac::xosc::vals::Enable::to_bits> @ imm = #0x0
 ldr	r1, [pc, #0x0]        @ 0x1000 <embassy_rp::clocks::init+0x480>
 ands	r0, r1
 str	r0, [r5, #0x0]
 mov	r0, r1
 subs	r0, #0x0
-bl	0x1000 <rp_pac::rosc::vals::FreqRange::to_bits> @ imm = #0x0
+bl	0x1000 <rp_pac::xosc::vals::Enable::to_bits> @ imm = #0x0
 mov	r5, r0
 ldr	r0, [sp, #0x0]
-bl	0x1000 <rp_pac::rosc::vals::FreqRange::to_bits> @ imm = #0x0
+bl	0x1000 <rp_pac::xosc::vals::Enable::to_bits> @ imm = #0x0
 ldr	r1, [pc, #0x0]        @ 0x1000 <embassy_rp::clocks::init+0x480>
 ands	r0, r1
 ands	r5, r1
diff --git a/.bins/2023-06-14/dumped/embassy_rp/init.s b/.bins/2023-06-15/dumped/embassy_rp/init.s
index 4d3b1fa..a0fca71 100644
--- a/.bins/2023-06-14/dumped/embassy_rp/init.s
+++ b/.bins/2023-06-15/dumped/embassy_rp/init.s
@@ -3,56 +3,55 @@ add	r7, sp, #0x0
 sub	sp, #0x0
 mov	r4, r0
 bl	0x1000 <__primask_r> @ imm = #0x0
-movs	r2, #0x0
+movs	r6, #0x0
 movs	r1, #0x0
-lsls	r1, r1, #0x0
-ldr	r3, [r1]
-ldr	r1, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0xac>
+lsls	r2, r1, #0x0
+ldr	r3, [r2]
+ldr	r1, [pc, #0x0]        @ 0x1000 <embassy_rp::init+0x13c>
 ldrb	r1, [r1]
 dmb	sy
-adds	r6, r3, #0x0
-uxtb	r3, r6
+adds	r5, r3, #0x0
+uxtb	r3, r5
 cmp	r1, r3
-bne	0x1000 <embassy_rp::init+0x30> @ imm = #0x0
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0xb4>
+str	r2, [sp, #0x0]
+str	r6, [sp, #0x0]
+bne	0x1000 <embassy_rp::init+0x36> @ imm = #0x0
+ldr	r0, [pc, #0x0]        @ 0x1000 <embassy_rp::init+0x144>
 ldrb	r1, [r0]
 cmp	r1, #0x0
-bne	0x1000 <embassy_rp::init+0xa6> @ imm = #0x0
-strb	r2, [r0]
-b	0x1000 <embassy_rp::init+0x7e> @ imm = #0x0
-str	r2, [sp, #0x0]
-ands	r0, r2
-str	r0, [sp, #0x0]
-ldr	r5, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0xb0>
-bne	0x1000 <embassy_rp::init+0x54> @ imm = #0x0
+beq	0x1000 <embassy_rp::init+0x32> @ imm = #0x0
+b	0x1000 <embassy_rp::init+0x134> @ imm = #0x0
+strb	r6, [r0]
+b	0x1000 <embassy_rp::init+0x7a> @ imm = #0x0
+ands	r0, r6
+str	r0, [sp]
+bne	0x1000 <embassy_rp::init+0x4e> @ imm = #0x0
 bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x140>
+ldr	r0, [r2]
 cmp	r0, #0x0
-bne	0x1000 <embassy_rp::init+0x5e> @ imm = #0x0
+bne	0x1000 <embassy_rp::init+0x5a> @ imm = #0x0
 bl	0x1000 <__cpsie>    @ imm = #0x0
+b	0x1000 <embassy_rp::init+0x3c> @ imm = #0x0
 bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x140>
+ldr	r0, [r2]
 cmp	r0, #0x0
-beq	0x1000 <embassy_rp::init+0x44> @ imm = #0x0
-b	0x1000 <embassy_rp::init+0x5e> @ imm = #0x0
-bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r5]
-cmp	r0, #0x0
-beq	0x1000 <embassy_rp::init+0x54> @ imm = #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0xac>
-strb	r6, [r2]
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0xb4>
+beq	0x1000 <embassy_rp::init+0x4e> @ imm = #0x0
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x13c>
+strb	r5, [r0]
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x144>
 ldrb	r1, [r0]
 cmp	r1, #0x0
-ldr	r1, [sp, #0x0]
-bne	0x1000 <embassy_rp::init+0xa6> @ imm = #0x0
-strb	r1, [r0]
+bne	0x1000 <embassy_rp::init+0x134> @ imm = #0x0
+strb	r6, [r0]
 movs	r0, #0x0
-strb	r0, [r2]
-str	r1, [r5]
-ldr	r0, [sp, #0x0]
+ldr	r1, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x13c>
+strb	r0, [r1]
+str	r6, [r2]
+ldr	r0, [sp]
 cmp	r0, #0x0
-bne	0x1000 <embassy_rp::init+0x7e> @ imm = #0x0
+bne	0x1000 <embassy_rp::init+0x7a> @ imm = #0x0
 bl	0x1000 <__cpsie>    @ imm = #0x0
 add	r0, sp, #0x0
 mov	r1, r0
@@ -67,8 +66,75 @@ stm	r1!, {r2, r3, r5, r6}
 bl	0x1000 <embassy_rp::clocks::init> @ imm = #0x0
 bl	0x1000 <embassy_rp::timer::init> @ imm = #0x0
 bl	0x1000 <embassy_rp::dma::init> @ imm = #0x0
-bl	0x1000 <embassy_rp::gpio::init> @ imm = #0x0
+ldr	r5, [sp, #0x0]
+lsls	r6, r5, #0x0
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x148>
+str	r6, [r0]
+bl	0x1000 <__primask_r> @ imm = #0x0
+mov	r4, r0
+ldr	r0, [sp, #0x0]
+ldr	r0, [r0]
+ldr	r1, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x13c>
+ldrb	r1, [r1]
+dmb	sy
+adds	r2, r0, #0x0
+uxtb	r0, r2
+cmp	r1, r0
+bne	0x1000 <embassy_rp::init+0xc0> @ imm = #0x0
+movs	r5, #0x0
+b	0x1000 <embassy_rp::init+0xfc> @ imm = #0x0
+mov	r0, r5
+mov	r5, r2
+str	r6, [sp, #0x0]
+ands	r4, r0
+bne	0x1000 <embassy_rp::init+0xe6> @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r6, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x140>
+ldr	r0, [r6]
+cmp	r0, #0x0
+bne	0x1000 <embassy_rp::init+0xf2> @ imm = #0x0
+bl	0x1000 <__cpsie>    @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+beq	0x1000 <embassy_rp::init+0xd6> @ imm = #0x0
+b	0x1000 <embassy_rp::init+0xf2> @ imm = #0x0
+ldr	r6, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x140>
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+beq	0x1000 <embassy_rp::init+0xe8> @ imm = #0x0
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x13c>
+strb	r5, [r0]
+rsbs	r5, r4, #0
+adcs	r5, r4
+ldr	r6, [sp, #0x0]
+movs	r0, #0x0
+bl	0x1000 <embassy_hal_common::interrupt::_$LT$impl$u20$core..convert..From$LT$embassy_hal_common..interrupt..Priority$GT$$u20$for$u20$u8$GT$::from> @ imm = #0x0
+movs	r1, #0x0
+lsls	r1, r1, #0x0
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x14c>
+ldr	r3, [r2]
+bics	r3, r1
+uxtb	r0, r0
+lsls	r0, r0, #0x0
+adds	r0, r3, r0
+str	r0, [r2]
+cmp	r5, #0x0
+beq	0x1000 <embassy_rp::init+0x12c> @ imm = #0x0
+movs	r0, #0x0
+ldr	r1, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x13c>
+strb	r0, [r1]
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x140>
+ldr	r1, [sp, #0x0]
+str	r1, [r0]
+cmp	r5, #0x0
+beq	0x1000 <embassy_rp::init+0x12c> @ imm = #0x0
+bl	0x1000 <__cpsie>    @ imm = #0x0
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::init+0x150>
+str	r6, [r0]
 add	sp, #0x0
 pop	{r4, r5, r6, r7, pc}
 bl	0x1000 <_defmt_panic> @ imm = #0x0
-trap
\ No newline at end of file
+trap
+mov	r8, r8
\ No newline at end of file
diff --git a/.bins/2023-06-15/dumped/embassy_rp/timer/TimerDriver/check_alarm.s b/.bins/2023-06-15/dumped/embassy_rp/timer/TimerDriver/check_alarm.s
new file mode 100644
index 0000000..a6acca2
--- /dev/null
+++ b/.bins/2023-06-15/dumped/embassy_rp/timer/TimerDriver/check_alarm.s
@@ -0,0 +1,109 @@
+push	{r4, r5, r6, r7, lr}
+add	r7, sp, #0x0
+sub	sp, #0x0
+mov	r6, r0
+bl	0x1000 <__primask_r> @ imm = #0x0
+mov	r5, r0
+movs	r2, #0x0
+movs	r0, #0x0
+lsls	r0, r0, #0x0
+ldr	r0, [r0]
+ldr	r3, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xe8>
+ldrb	r1, [r3]
+dmb	sy
+adds	r4, r0, #0x0
+uxtb	r0, r4
+cmp	r1, r0
+str	r6, [sp, #0x0]
+str	r2, [sp, #0x0]
+bne	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0x30> @ imm = #0x0
+movs	r0, #0x0
+str	r0, [sp, #0x0]
+b	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0x66> @ imm = #0x0
+ands	r5, r2
+ldr	r6, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xec>
+bne	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0x50> @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+bne	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0x5a> @ imm = #0x0
+bl	0x1000 <__cpsie>    @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+beq	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0x40> @ imm = #0x0
+b	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0x5a> @ imm = #0x0
+bl	0x1000 <__cpsid>    @ imm = #0x0
+ldr	r0, [r6]
+cmp	r0, #0x0
+beq	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0x50> @ imm = #0x0
+ldr	r3, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xe8>
+strb	r4, [r3]
+rsbs	r0, r5, #0
+adcs	r0, r5
+str	r0, [sp, #0x0]
+ldr	r6, [sp, #0x0]
+lsls	r0, r6, #0x0
+adds	r0, r3, r0
+ldr	r2, [r0, #0x0]
+ldr	r1, [r0, #0x0]
+str	r1, [sp, #0x0]
+mov	r1, r0
+adds	r1, #0x0
+ldr	r5, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xf0>
+ldr	r6, [r5]
+ldr	r4, [r5, #0x0]
+ldr	r3, [r5]
+cmp	r6, r3
+beq	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0x8a> @ imm = #0x0
+ldr	r6, [r5]
+ldr	r4, [r5, #0x0]
+ldr	r3, [r5]
+cmp	r6, r3
+bne	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0x76> @ imm = #0x0
+subs	r3, r4, r2
+ldr	r3, [sp, #0x0]
+sbcs	r6, r3
+bhs	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xa0> @ imm = #0x0
+ldr	r4, [sp, #0x0]
+lsls	r0, r4, #0x0
+adds	r0, r0, r5
+subs	r0, #0x0
+str	r2, [r0]
+ldr	r6, [sp, #0x0]
+b	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xc6> @ imm = #0x0
+movs	r2, #0x0
+ldr	r4, [sp, #0x0]
+ands	r2, r4
+ldr	r6, [sp, #0x0]
+mov	r3, r6
+lsls	r3, r2
+movs	r2, #0x0
+ands	r2, r3
+subs	r3, r5, #0x0
+str	r2, [r3]
+movs	r2, #0x0
+mvns	r2, r2
+str	r2, [r1]
+str	r2, [r1, #0x0]
+ldr	r1, [r0, #0x0]
+cmp	r1, #0x0
+beq	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xc6> @ imm = #0x0
+ldr	r0, [r0, #0x0]
+blx	r1
+ldr	r2, [sp, #0x0]
+cmp	r2, #0x0
+beq	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xde> @ imm = #0x0
+movs	r0, #0x0
+ldr	r1, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xe8>
+strb	r0, [r1]
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xec>
+str	r6, [r0]
+cmp	r2, #0x0
+beq	0x1000 <embassy_rp::timer::TimerDriver::check_alarm+0xde> @ imm = #0x0
+bl	0x1000 <__cpsie>    @ imm = #0x0
+lsls	r6, r4
+str	r6, [r5, #0x0]
+add	sp, #0x0
+pop	{r4, r5, r6, r7, pc}
+mov	r8, r8
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_rp/timer/init.s b/.bins/2023-06-15/dumped/embassy_rp/timer/init.s
index fab3134..481d2f1 100644
--- a/.bins/2023-06-14/dumped/embassy_rp/timer/init.s
+++ b/.bins/2023-06-15/dumped/embassy_rp/timer/init.s
@@ -2,73 +2,71 @@ push	{r4, r5, r6, r7, lr}
 add	r7, sp, #0x0
 sub	sp, #0x0
 bl	0x1000 <__primask_r> @ imm = #0x0
-mov	r4, r0
-movs	r6, #0x0
-movs	r0, #0x0
-lsls	r0, r0, #0x0
-ldr	r0, [r0]
-ldr	r1, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xac>
-ldrb	r1, [r1]
+movs	r5, #0x0
+movs	r1, #0x0
+lsls	r1, r1, #0x0
+ldr	r2, [r1]
+ldr	r6, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xa8>
+ldrb	r1, [r6]
 dmb	sy
-adds	r5, r0, #0x0
-uxtb	r0, r5
-cmp	r1, r0
-bne	0x1000 <embassy_rp::timer::init+0x3c> @ imm = #0x0
+adds	r4, r2, #0x0
+uxtb	r2, r4
+cmp	r1, r2
+bne	0x1000 <embassy_rp::timer::init+0x38> @ imm = #0x0
 movs	r0, #0x0
 mvns	r0, r0
-ldr	r1, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xb4>
-str	r0, [r1, #0x0]
-str	r0, [r1, #0x0]
-str	r0, [r1, #0x0]
-str	r0, [r1, #0x0]
-str	r0, [r1, #0x0]
-str	r0, [r1, #0x0]
-str	r0, [r1]
-str	r0, [r1, #0x0]
-b	0x1000 <embassy_rp::timer::init+0x92> @ imm = #0x0
-str	r6, [sp]
-ands	r4, r6
-ldr	r6, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xb0>
-bne	0x1000 <embassy_rp::timer::init+0x5e> @ imm = #0x0
+str	r0, [r6, #0x0]
+str	r0, [r6, #0x0]
+str	r0, [r6, #0x0]
+str	r0, [r6, #0x0]
+str	r0, [r6, #0x0]
+str	r0, [r6, #0x0]
+str	r0, [r6, #0x0]
+str	r0, [r6, #0x0]
+b	0x1000 <embassy_rp::timer::init+0x8e> @ imm = #0x0
+str	r5, [sp, #0x0]
+ands	r0, r5
+str	r0, [sp, #0x0]
+ldr	r5, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xac>
+bne	0x1000 <embassy_rp::timer::init+0x5c> @ imm = #0x0
 bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r6]
+ldr	r0, [r5]
 cmp	r0, #0x0
-bne	0x1000 <embassy_rp::timer::init+0x68> @ imm = #0x0
+bne	0x1000 <embassy_rp::timer::init+0x66> @ imm = #0x0
 bl	0x1000 <__cpsie>    @ imm = #0x0
 bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r6]
+ldr	r0, [r5]
 cmp	r0, #0x0
-beq	0x1000 <embassy_rp::timer::init+0x4e> @ imm = #0x0
-b	0x1000 <embassy_rp::timer::init+0x68> @ imm = #0x0
+beq	0x1000 <embassy_rp::timer::init+0x4c> @ imm = #0x0
+b	0x1000 <embassy_rp::timer::init+0x66> @ imm = #0x0
 bl	0x1000 <__cpsid>    @ imm = #0x0
-ldr	r0, [r6]
+ldr	r0, [r5]
 cmp	r0, #0x0
-beq	0x1000 <embassy_rp::timer::init+0x5e> @ imm = #0x0
-ldr	r3, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xac>
-strb	r5, [r3]
+beq	0x1000 <embassy_rp::timer::init+0x5c> @ imm = #0x0
+strb	r4, [r6]
 movs	r0, #0x0
 mvns	r1, r0
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xb4>
-str	r1, [r2, #0x0]
-str	r1, [r2, #0x0]
-str	r1, [r2, #0x0]
-str	r1, [r2, #0x0]
-str	r1, [r2, #0x0]
-str	r1, [r2, #0x0]
-str	r1, [r2]
-str	r1, [r2, #0x0]
-strb	r0, [r3]
-ldr	r0, [sp]
-str	r0, [r6]
-mov	r6, r0
-cmp	r4, #0x0
-bne	0x1000 <embassy_rp::timer::init+0x92> @ imm = #0x0
+str	r1, [r6, #0x0]
+str	r1, [r6, #0x0]
+str	r1, [r6, #0x0]
+str	r1, [r6, #0x0]
+str	r1, [r6, #0x0]
+str	r1, [r6, #0x0]
+str	r1, [r6, #0x0]
+str	r1, [r6, #0x0]
+strb	r0, [r6]
+ldr	r0, [sp, #0x0]
+str	r0, [r5]
+mov	r5, r0
+ldr	r0, [sp, #0x0]
+cmp	r0, #0x0
+bne	0x1000 <embassy_rp::timer::init+0x8e> @ imm = #0x0
 bl	0x1000 <__cpsie>    @ imm = #0x0
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xb8>
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xb0>
 movs	r1, #0x0
 str	r1, [r0]
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xbc>
-str	r6, [r0]
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_rp::timer::init+0xb4>
+str	r5, [r0]
 movs	r1, #0x0
 str	r1, [r0]
 movs	r1, #0x0
diff --git a/.bins/2023-06-14/dumped/embassy_time/driver/set_alarm.s b/.bins/2023-06-15/dumped/embassy_time/driver/set_alarm.s
index 9e00fce..7b0ce63 100644
--- a/.bins/2023-06-14/dumped/embassy_time/driver/set_alarm.s
+++ b/.bins/2023-06-15/dumped/embassy_time/driver/set_alarm.s
@@ -1,4 +1,5 @@
 push	{r7, lr}
 add	r7, sp, #0x0
 bl	0x1000 <_embassy_time_set_alarm> @ imm = #0x0
-pop	{r7, pc}
\ No newline at end of file
+pop	{r7, pc}
+bmi	0x1000 <atomic_polyfill::polyfill::AtomicU32::fetch_and+0x1a> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-15/dumped/embassy_time/duration/Duration/as_micros.s b/.bins/2023-06-15/dumped/embassy_time/duration/Duration/as_micros.s
new file mode 100644
index 0000000..5e83c68
--- /dev/null
+++ b/.bins/2023-06-15/dumped/embassy_time/duration/Duration/as_micros.s
@@ -0,0 +1,5 @@
+ldr	r2, [r0]
+ldr	r1, [r0, #0x0]
+mov	r0, r2
+bx	lr
+bmi	0x1000 <embassy_time::driver::allocate_alarm+0x2> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_time/duration/Duration/from_micros_floor.s b/.bins/2023-06-15/dumped/embassy_time/duration/Duration/from_micros_floor.s
index f1fbaa0..530d6ba 100644
--- a/.bins/2023-06-14/dumped/embassy_time/duration/Duration/from_micros_floor.s
+++ b/.bins/2023-06-15/dumped/embassy_time/duration/Duration/from_micros_floor.s
@@ -1,2 +1 @@
-bx	lr
-bmi	0x1000 <atomic_polyfill::polyfill::AtomicU32::fetch_or+0x8> @ imm = #0x0
\ No newline at end of file
+bx	lr
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_time/instant/Instant/as_micros.s b/.bins/2023-06-14/dumped/embassy_time/instant/Instant/as_micros.s
deleted file mode 100644
index 5fcdc6e..0000000
--- a/.bins/2023-06-14/dumped/embassy_time/instant/Instant/as_micros.s
+++ /dev/null
@@ -1,5 +0,0 @@
-ldr	r2, [r0]
-ldr	r1, [r0, #0x0]
-mov	r0, r2
-bx	lr
-bmi	0x1000 <atomic_polyfill::polyfill::AtomicU32::compare_exchange+0x26> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_usb/class/cdc_acm/CdcAcmClass<D>/write_packet/_{{closure}}.s b/.bins/2023-06-15/dumped/embassy_usb/class/cdc_acm/CdcAcmClass<D>/write_packet/_{{closure}}.s
index 6035060..ff6c1f3 100644
--- a/.bins/2023-06-14/dumped/embassy_usb/class/cdc_acm/CdcAcmClass<D>/write_packet/_{{closure}}.s
+++ b/.bins/2023-06-15/dumped/embassy_usb/class/cdc_acm/CdcAcmClass<D>/write_packet/_{{closure}}.s
@@ -15,7 +15,7 @@ cmp	r0, #0x0
 beq	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x3a> @ imm = #0x0
 cmp	r0, #0x0
 beq	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x24> @ imm = #0x0
-b	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x134> @ imm = #0x0
+b	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x128> @ imm = #0x0
 ldr	r6, [r4, #0x0]
 ldr	r0, [r6]
 b	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x5e> @ imm = #0x0
@@ -48,7 +48,7 @@ str	r6, [r4, #0x0]
 cmp	r0, #0x0
 bhi	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x106> @ imm = #0x0
 lsls	r0, r0, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x158>
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x14c>
 adds	r0, r2, r0
 bl	0x1000 <embassy_sync::waitqueue::atomic_waker::AtomicWaker::register> @ imm = #0x0
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
@@ -59,7 +59,7 @@ lsls	r1, r1, #0x0
 adds	r0, r1, r0
 movs	r3, #0x0
 ldr	r1, [r0, r3]
-ldr	r6, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x15c>
+ldr	r6, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x150>
 adds	r0, r6, #0x0
 tst	r1, r0
 beq	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x92> @ imm = #0x0
@@ -74,18 +74,18 @@ ldr	r2, [r4, #0x0]
 ldr	r0, [r4, #0x0]
 ldrh	r1, [r0, #0x0]
 cmp	r2, r1
-bhi	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x140> @ imm = #0x0
+bhi	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x134> @ imm = #0x0
 str	r3, [sp, #0x0]
 ldr	r1, [r4, #0x0]
 ldrh	r0, [r0]
-ldr	r3, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x160>
+ldr	r3, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x154>
 adds	r0, r0, r3
 bl	0x1000 <__aeabi_memcpy> @ imm = #0x0
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 str	r0, [sp]
 ldr	r0, [r4, #0x0]
 cmp	r0, #0x0
-bhs	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x128> @ imm = #0x0
+bhs	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x110> @ imm = #0x0
 ldr	r2, [r4, #0x0]
 ands	r2, r6
 movs	r3, #0x0
@@ -105,11 +105,11 @@ bl	0x1000 <__delay>    @ imm = #0x0
 bl	0x1000 <embassy_rp::usb::_$LT$impl$u20$embassy_rp..usb..sealed..Instance$u20$for$u20$embassy_rp..peripherals..USB$GT$::dpram> @ imm = #0x0
 ldr	r1, [r4, #0x0]
 cmp	r1, #0x0
-bhs	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x128> @ imm = #0x0
+bhs	0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x110> @ imm = #0x0
 lsls	r1, r1, #0x0
 adds	r0, r1, r0
 ldr	r1, [r4, #0x0]
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x15c>
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x150>
 ands	r1, r2
 orrs	r6, r1
 movs	r1, #0x0
@@ -124,27 +124,22 @@ strb	r1, [r5, #0x0]
 add	sp, #0x0
 pop	{r4, r5, r6, r7, pc}
 movs	r1, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x154>
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x148>
 bl	0x1000 <core::panicking::panic_bounds_check> @ imm = #0x0
 trap
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x16c>
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x158>
 movs	r1, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x170>
-bl	0x1000 <core::panicking::panic> @ imm = #0x0
-trap
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x148>
-movs	r1, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x150>
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x15c>
 bl	0x1000 <core::panicking::panic> @ imm = #0x0
 trap
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x164>
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x13c>
 movs	r1, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x168>
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x144>
 bl	0x1000 <core::panicking::panic> @ imm = #0x0
 trap
-ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x148>
+ldr	r0, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x13c>
 movs	r1, #0x0
-ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x14c>
+ldr	r2, [pc, #0x0]         @ 0x1000 <embassy_usb::class::cdc_acm::CdcAcmClass$LT$D$GT$::write_packet::_$u7b$$u7b$closure$u7d$$u7d$+0x140>
 bl	0x1000 <core::panicking::panic> @ imm = #0x0
 trap
 bl	0x1000 <_defmt_panic> @ imm = #0x0
diff --git a/.bins/2023-06-14/dumped/embassy_usb/descriptor/DescriptorWriter/new.s b/.bins/2023-06-15/dumped/embassy_usb/descriptor/DescriptorWriter/new.s
index 8cd7f9b..7b84a59 100644
--- a/.bins/2023-06-14/dumped/embassy_usb/descriptor/DescriptorWriter/new.s
+++ b/.bins/2023-06-15/dumped/embassy_usb/descriptor/DescriptorWriter/new.s
@@ -5,4 +5,4 @@ str	r3, [r0, #0x0]
 str	r3, [r0, #0x0]
 str	r3, [r0]
 bx	lr
-bmi	0x1000 <_$LT$embassy_usb..class..cdc_acm..Control$u20$as$u20$embassy_usb..Handler$GT$::control_in+0x38> @ imm = #0x0
\ No newline at end of file
+bmi	0x1000 <_embassy_time_schedule_wake+0x4e> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/embassy_usb/descriptor_reader/foreach_endpoint.s b/.bins/2023-06-15/dumped/embassy_usb/descriptor_reader/foreach_endpoint.s
index 76456c9..d6706c1 100644
--- a/.bins/2023-06-14/dumped/embassy_usb/descriptor_reader/foreach_endpoint.s
+++ b/.bins/2023-06-15/dumped/embassy_usb/descriptor_reader/foreach_endpoint.s
@@ -1,13 +1,16 @@
 push	{r4, r5, r6, r7, lr}
 add	r7, sp, #0x0
 sub	sp, #0x0
-mov	r4, r2
+mov	r4, r3
+str	r2, [sp]
 bl	0x1000 <embassy_usb::descriptor_reader::Reader::new> @ imm = #0x0
 str	r1, [sp, #0x0]
-str	r0, [sp]
-mov	r0, sp
+str	r0, [sp, #0x0]
+add	r0, sp, #0x0
 bl	0x1000 <embassy_usb::descriptor_reader::Reader::read_descriptors> @ imm = #0x0
 str	r0, [sp, #0x0]
+ldr	r0, [r4, #0x0]
+str	r0, [sp, #0x0]
 add	r0, sp, #0x0
 add	r1, sp, #0x0
 bl	0x1000 <_$LT$embassy_usb..descriptor_reader..DescriptorIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::next> @ imm = #0x0
@@ -16,8 +19,7 @@ cmp	r0, #0x0
 beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xbc> @ imm = #0x0
 movs	r5, #0x0
 mov	r6, r5
-b	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x3c> @ imm = #0x0
-mov	r6, r1
+b	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x40> @ imm = #0x0
 add	r0, sp, #0x0
 add	r1, sp, #0x0
 bl	0x1000 <_$LT$embassy_usb..descriptor_reader..DescriptorIter$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::next> @ imm = #0x0
@@ -26,62 +28,67 @@ cmp	r0, #0x0
 beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xbc> @ imm = #0x0
 ldr	r1, [sp, #0x0]
 cmp	r1, #0x0
-beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xb6> @ imm = #0x0
+beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xc2> @ imm = #0x0
 add	r0, sp, #0x0
 ldrb	r0, [r0, #0x0]
 ldr	r2, [sp, #0x0]
 str	r2, [sp, #0x0]
 str	r1, [sp, #0x0]
 cmp	r0, #0x0
-beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x80> @ imm = #0x0
+beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x82> @ imm = #0x0
 cmp	r0, #0x0
-beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xa0> @ imm = #0x0
+beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xa2> @ imm = #0x0
 cmp	r0, #0x0
-bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x2e> @ imm = #0x0
+bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x32> @ imm = #0x0
 add	r0, sp, #0x0
 bl	0x1000 <embassy_usb::descriptor_reader::Reader::read_u8> @ imm = #0x0
 lsls	r0, r0, #0x0
-bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xb6> @ imm = #0x0
+bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xc2> @ imm = #0x0
 uxtb	r0, r5
-ldr	r2, [r4]
-ldrb	r2, [r2]
+ldr	r2, [sp, #0x0]
 cmp	r2, r0
-bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x2e> @ imm = #0x0
-uxtb	r0, r6
-ldr	r2, [r4, #0x0]
-ldrb	r2, [r2]
-subs	r0, r2, r0
+bls	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xc8> @ imm = #0x0
+lsls	r0, r0, #0x0
+ldrb	r0, [r4, r0]
+uxtb	r2, r6
+subs	r0, r0, r2
 rsbs	r2, r0, #0
 adcs	r2, r0
-ldr	r0, [r4, #0x0]
+ldr	r0, [sp]
 bl	0x1000 <_$LT$embassy_rp..usb..Bus$LT$T$GT$$u20$as$u20$embassy_usb_driver..Bus$GT$::endpoint_set_enabled> @ imm = #0x0
-b	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x2e> @ imm = #0x0
+b	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x32> @ imm = #0x0
 add	r0, sp, #0x0
 bl	0x1000 <embassy_usb::descriptor_reader::Reader::read_u16> @ imm = #0x0
 lsls	r0, r0, #0x0
-bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xb6> @ imm = #0x0
+bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xc2> @ imm = #0x0
 add	r0, sp, #0x0
 bl	0x1000 <embassy_usb::descriptor_reader::Reader::read_u8> @ imm = #0x0
 lsls	r0, r0, #0x0
-bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xb6> @ imm = #0x0
+bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xc2> @ imm = #0x0
 add	r0, sp, #0x0
 bl	0x1000 <embassy_usb::descriptor_reader::Reader::read_u8> @ imm = #0x0
 lsls	r0, r0, #0x0
-beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x2e> @ imm = #0x0
-b	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xb6> @ imm = #0x0
+beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x32> @ imm = #0x0
+b	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xc2> @ imm = #0x0
 add	r0, sp, #0x0
 bl	0x1000 <embassy_usb::descriptor_reader::Reader::read_u8> @ imm = #0x0
 lsls	r0, r0, #0x0
-bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xb6> @ imm = #0x0
+bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xc2> @ imm = #0x0
 mov	r5, r1
 add	r0, sp, #0x0
 bl	0x1000 <embassy_usb::descriptor_reader::Reader::read_u8> @ imm = #0x0
 lsls	r0, r0, #0x0
-beq	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x2c> @ imm = #0x0
+bne	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xc2> @ imm = #0x0
+mov	r6, r1
+b	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x32> @ imm = #0x0
 movs	r0, #0x0
 add	sp, #0x0
 pop	{r4, r5, r6, r7, pc}
 movs	r0, #0x0
 add	sp, #0x0
 pop	{r4, r5, r6, r7, pc}
-bmi	0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0x6e> @ imm = #0x0
\ No newline at end of file
+ldr	r2, [pc, #0x0]          @ 0x1000 <embassy_usb::descriptor_reader::foreach_endpoint+0xd4>
+ldr	r1, [sp, #0x0]
+bl	0x1000 <core::panicking::panic_bounds_check> @ imm = #0x0
+trap
+mov	r8, r8
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/main.s b/.bins/2023-06-15/dumped/main.s
index 1035621..7a14cba 100644
--- a/.bins/2023-06-14/dumped/main.s
+++ b/.bins/2023-06-15/dumped/main.s
@@ -2,4 +2,4 @@ push	{r7, lr}
 add	r7, sp, #0x0
 bl	0x1000 <serial_ws2812_firmware::__cortex_m_rt_main> @ imm = #0x0
 trap
-bmi	0x1000 <embassy_executor::arch::thread::Executor::run+0x32> @ imm = #0x0
\ No newline at end of file
+bmi	0x1000 <_$LT$embassy_sync..channel..SendFuture$LT$M$C$T$C$_$GT$$u20$as$u20$core..future..future..Future$GT$::poll+0x7a> @ imm = #0x0
\ No newline at end of file
diff --git a/.bins/2023-06-14/dumped/rp_pac/rosc/vals/FreqRange/to_bits.s b/.bins/2023-06-14/dumped/rp_pac/rosc/vals/FreqRange/to_bits.s
deleted file mode 100644
index 530d6ba..0000000
--- a/.bins/2023-06-14/dumped/rp_pac/rosc/vals/FreqRange/to_bits.s
+++ /dev/null
@@ -1 +0,0 @@
-bx	lr
\ No newline at end of file

Metadata

Metadata

Assignees

No one assigned

    Labels

    C-bugCategory: This is a bug.E-needs-bisectionCall for participation: This issue needs bisection: https://github.com/rust-lang/cargo-bisect-rustcO-ArmTarget: 32-bit Arm processors (armv6, armv7, thumb...), including 64-bit Arm in AArch32 stateO-bare-metalTarget: Rust without an operating systemregression-untriagedUntriaged performance or correctness regression.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions