
/Users/guman/Documents/Codex/2026-09-27/https-www-amazon-com-electric-drill/work/tri-product-continuation-2026-10-10.nosync/drill_timebase_A73/firmware/固件/drill_target/build/drill_control_g431cb.elf:     file format elf32-littlearm


Disassembly of section .text:

08000400 <Reset_Handler>:
 8000400:	480c      	ldr	r0, [pc, #48]	@ (8000434 <Reset_Handler+0x34>)
 8000402:	4685      	mov	sp, r0
 8000404:	480c      	ldr	r0, [pc, #48]	@ (8000438 <Reset_Handler+0x38>)
 8000406:	490d      	ldr	r1, [pc, #52]	@ (800043c <Reset_Handler+0x3c>)
 8000408:	4a0d      	ldr	r2, [pc, #52]	@ (8000440 <Reset_Handler+0x40>)
 800040a:	4291      	cmp	r1, r2
 800040c:	d204      	bcs.n	8000418 <Reset_Handler+0x18>
 800040e:	6803      	ldr	r3, [r0, #0]
 8000410:	600b      	str	r3, [r1, #0]
 8000412:	3004      	adds	r0, #4
 8000414:	3104      	adds	r1, #4
 8000416:	e7f8      	b.n	800040a <Reset_Handler+0xa>
 8000418:	490a      	ldr	r1, [pc, #40]	@ (8000444 <Reset_Handler+0x44>)
 800041a:	4a0b      	ldr	r2, [pc, #44]	@ (8000448 <Reset_Handler+0x48>)
 800041c:	2300      	movs	r3, #0
 800041e:	4291      	cmp	r1, r2
 8000420:	d202      	bcs.n	8000428 <Reset_Handler+0x28>
 8000422:	600b      	str	r3, [r1, #0]
 8000424:	3104      	adds	r1, #4
 8000426:	e7fa      	b.n	800041e <Reset_Handler+0x1e>
 8000428:	f000 f812 	bl	8000450 <SystemInit>
 800042c:	f000 f8a6 	bl	800057c <main>
 8000430:	e7fe      	b.n	8000430 <Reset_Handler+0x30>
 8000432:	0000      	.short	0x0000
 8000434:	20005800 	.word	0x20005800
 8000438:	080023a0 	.word	0x080023a0
 800043c:	20000000 	.word	0x20000000
 8000440:	20000004 	.word	0x20000004
 8000444:	20000004 	.word	0x20000004
 8000448:	20000038 	.word	0x20000038

0800044c <Default_Handler>:
 800044c:	f7ff bffe 	b.w	800044c <Default_Handler>

08000450 <SystemInit>:
 8000450:	4770      	bx	lr

08000452 <SystemCoreClockUpdate>:
 8000452:	4819      	ldr	r0, [pc, #100]	@ (80004b8 <SystemCoreClockUpdate+0x66>)
 8000454:	6883      	ldr	r3, [r0, #8]
 8000456:	f003 030c 	and.w	r3, r3, #12
 800045a:	2b08      	cmp	r3, #8
 800045c:	b510      	push	{r4, lr}
 800045e:	4c17      	ldr	r4, [pc, #92]	@ (80004bc <SystemCoreClockUpdate+0x6a>)
 8000460:	d00e      	beq.n	8000480 <SystemCoreClockUpdate+0x2e>
 8000462:	2b0c      	cmp	r3, #12
 8000464:	d00e      	beq.n	8000484 <SystemCoreClockUpdate+0x32>
 8000466:	2b04      	cmp	r3, #4
 8000468:	d101      	bne.n	800046e <SystemCoreClockUpdate+0x1c>
 800046a:	4b15      	ldr	r3, [pc, #84]	@ (80004c0 <SystemCoreClockUpdate+0x6e>)
 800046c:	6023      	str	r3, [r4, #0]
 800046e:	6883      	ldr	r3, [r0, #8]
 8000470:	4a14      	ldr	r2, [pc, #80]	@ (80004c4 <SystemCoreClockUpdate+0x72>)
 8000472:	f3c3 1303 	ubfx	r3, r3, #4, #4
 8000476:	5cd2      	ldrb	r2, [r2, r3]
 8000478:	6823      	ldr	r3, [r4, #0]
 800047a:	40d3      	lsrs	r3, r2
 800047c:	6023      	str	r3, [r4, #0]
 800047e:	bd10      	pop	{r4, pc}
 8000480:	4b11      	ldr	r3, [pc, #68]	@ (80004c8 <SystemCoreClockUpdate+0x76>)
 8000482:	e7f3      	b.n	800046c <SystemCoreClockUpdate+0x1a>
 8000484:	68c2      	ldr	r2, [r0, #12]
 8000486:	68c3      	ldr	r3, [r0, #12]
 8000488:	f002 0203 	and.w	r2, r2, #3
 800048c:	2a02      	cmp	r2, #2
 800048e:	f3c3 1303 	ubfx	r3, r3, #4, #4
 8000492:	bf0c      	ite	eq
 8000494:	4a0a      	ldreq	r2, [pc, #40]	@ (80004c0 <SystemCoreClockUpdate+0x6e>)
 8000496:	4a0c      	ldrne	r2, [pc, #48]	@ (80004c8 <SystemCoreClockUpdate+0x76>)
 8000498:	3301      	adds	r3, #1
 800049a:	fbb2 f3f3 	udiv	r3, r2, r3
 800049e:	68c2      	ldr	r2, [r0, #12]
 80004a0:	68c1      	ldr	r1, [r0, #12]
 80004a2:	f3c2 2206 	ubfx	r2, r2, #8, #7
 80004a6:	4353      	muls	r3, r2
 80004a8:	f3c1 6241 	ubfx	r2, r1, #25, #2
 80004ac:	3201      	adds	r2, #1
 80004ae:	0052      	lsls	r2, r2, #1
 80004b0:	fbb3 f3f2 	udiv	r3, r3, r2
 80004b4:	e7da      	b.n	800046c <SystemCoreClockUpdate+0x1a>
 80004b6:	bf00      	nop
 80004b8:	40021000 	.word	0x40021000
 80004bc:	20000000 	.word	0x20000000
 80004c0:	00f42400 	.word	0x00f42400
 80004c4:	08002300 	.word	0x08002300
 80004c8:	016e3600 	.word	0x016e3600

080004cc <memcpy>:
 80004cc:	b510      	push	{r4, lr}
 80004ce:	2300      	movs	r3, #0
 80004d0:	4293      	cmp	r3, r2
 80004d2:	d100      	bne.n	80004d6 <memcpy+0xa>
 80004d4:	bd10      	pop	{r4, pc}
 80004d6:	5ccc      	ldrb	r4, [r1, r3]
 80004d8:	54c4      	strb	r4, [r0, r3]
 80004da:	3301      	adds	r3, #1
 80004dc:	e7f8      	b.n	80004d0 <memcpy+0x4>

080004de <memset>:
 80004de:	4603      	mov	r3, r0
 80004e0:	4402      	add	r2, r0
 80004e2:	4293      	cmp	r3, r2
 80004e4:	d100      	bne.n	80004e8 <memset+0xa>
 80004e6:	4770      	bx	lr
 80004e8:	f803 1b01 	strb.w	r1, [r3], #1
 80004ec:	e7f9      	b.n	80004e2 <memset+0x4>

080004ee <memcmp>:
 80004ee:	b530      	push	{r4, r5, lr}
 80004f0:	2300      	movs	r3, #0
 80004f2:	4293      	cmp	r3, r2
 80004f4:	d101      	bne.n	80004fa <memcmp+0xc>
 80004f6:	2000      	movs	r0, #0
 80004f8:	e006      	b.n	8000508 <memcmp+0x1a>
 80004fa:	5cc5      	ldrb	r5, [r0, r3]
 80004fc:	5ccc      	ldrb	r4, [r1, r3]
 80004fe:	42a5      	cmp	r5, r4
 8000500:	d003      	beq.n	800050a <memcmp+0x1c>
 8000502:	d204      	bcs.n	800050e <memcmp+0x20>
 8000504:	f04f 30ff 	mov.w	r0, #4294967295	@ 0xffffffff
 8000508:	bd30      	pop	{r4, r5, pc}
 800050a:	3301      	adds	r3, #1
 800050c:	e7f1      	b.n	80004f2 <memcmp+0x4>
 800050e:	2001      	movs	r0, #1
 8000510:	e7fa      	b.n	8000508 <memcmp+0x1a>

08000512 <__aeabi_idiv0>:
 8000512:	be00      	bkpt	0x0000
 8000514:	e7fd      	b.n	8000512 <__aeabi_idiv0>

08000516 <__aeabi_ldiv0>:
 8000516:	be00      	bkpt	0x0000
 8000518:	e7fd      	b.n	8000516 <__aeabi_ldiv0>

0800051a <__libc_init_array>:
 800051a:	4770      	bx	lr

0800051c <drill_safe_boot>:
 800051c:	b510      	push	{r4, lr}
 800051e:	4c15      	ldr	r4, [pc, #84]	@ (8000574 <drill_safe_boot+0x58>)
 8000520:	6823      	ldr	r3, [r4, #0]
 8000522:	f413 2fa0 	tst.w	r3, #327680	@ 0x50000
 8000526:	b092      	sub	sp, #72	@ 0x48
 8000528:	d001      	beq.n	800052e <drill_safe_boot+0x12>
 800052a:	bf30      	wfi
 800052c:	e7fd      	b.n	800052a <drill_safe_boot+0xe>
 800052e:	4912      	ldr	r1, [pc, #72]	@ (8000578 <drill_safe_boot+0x5c>)
 8000530:	2248      	movs	r2, #72	@ 0x48
 8000532:	4668      	mov	r0, sp
 8000534:	f7ff ffca 	bl	80004cc <memcpy>
 8000538:	6ce3      	ldr	r3, [r4, #76]	@ 0x4c
 800053a:	f043 0323 	orr.w	r3, r3, #35	@ 0x23
 800053e:	64e3      	str	r3, [r4, #76]	@ 0x4c
 8000540:	4668      	mov	r0, sp
 8000542:	6ce3      	ldr	r3, [r4, #76]	@ 0x4c
 8000544:	f000 f84e 	bl	80005e4 <drill_safe_gpio_validate>
 8000548:	b908      	cbnz	r0, 800054e <drill_safe_boot+0x32>
 800054a:	bf30      	wfi
 800054c:	e7fd      	b.n	800054a <drill_safe_boot+0x2e>
 800054e:	4668      	mov	r0, sp
 8000550:	f000 f865 	bl	800061e <drill_safe_gpio_preload>
 8000554:	b908      	cbnz	r0, 800055a <drill_safe_boot+0x3e>
 8000556:	bf30      	wfi
 8000558:	e7fd      	b.n	8000556 <drill_safe_boot+0x3a>
 800055a:	f3bf 8f4f 	dsb	sy
 800055e:	4668      	mov	r0, sp
 8000560:	f000 f870 	bl	8000644 <drill_safe_gpio_configure_outputs>
 8000564:	b908      	cbnz	r0, 800056a <drill_safe_boot+0x4e>
 8000566:	bf30      	wfi
 8000568:	e7fd      	b.n	8000566 <drill_safe_boot+0x4a>
 800056a:	f3bf 8f4f 	dsb	sy
 800056e:	b012      	add	sp, #72	@ 0x48
 8000570:	bd10      	pop	{r4, pc}
 8000572:	bf00      	nop
 8000574:	40021000 	.word	0x40021000
 8000578:	08002318 	.word	0x08002318

0800057c <main>:
 800057c:	b507      	push	{r0, r1, r2, lr}
 800057e:	f7ff ffcd 	bl	800051c <drill_safe_boot>
 8000582:	f000 f957 	bl	8000834 <drill_pwm_stage_init>
 8000586:	4c16      	ldr	r4, [pc, #88]	@ (80005e0 <main+0x64>)
 8000588:	6020      	str	r0, [r4, #0]
 800058a:	6820      	ldr	r0, [r4, #0]
 800058c:	b108      	cbz	r0, 8000592 <main+0x16>
 800058e:	f000 fcad 	bl	8000eec <drill_timebase_init>
 8000592:	2300      	movs	r3, #0
 8000594:	6060      	str	r0, [r4, #4]
 8000596:	9301      	str	r3, [sp, #4]
 8000598:	6863      	ldr	r3, [r4, #4]
 800059a:	b11b      	cbz	r3, 80005a4 <main+0x28>
 800059c:	a801      	add	r0, sp, #4
 800059e:	f000 fcfd 	bl	8000f9c <drill_timebase_get>
 80005a2:	b908      	cbnz	r0, 80005a8 <main+0x2c>
 80005a4:	bf30      	wfi
 80005a6:	e7fd      	b.n	80005a4 <main+0x28>
 80005a8:	9801      	ldr	r0, [sp, #4]
 80005aa:	f000 faf9 	bl	8000ba0 <drill_spi_init>
 80005ae:	60a0      	str	r0, [r4, #8]
 80005b0:	68a3      	ldr	r3, [r4, #8]
 80005b2:	b94b      	cbnz	r3, 80005c8 <main+0x4c>
 80005b4:	bf30      	wfi
 80005b6:	e7fd      	b.n	80005b4 <main+0x38>
 80005b8:	9801      	ldr	r0, [sp, #4]
 80005ba:	60e0      	str	r0, [r4, #12]
 80005bc:	f000 fbaa 	bl	8000d14 <drill_spi_poll>
 80005c0:	f000 fc26 	bl	8000e10 <drill_spi_active>
 80005c4:	b900      	cbnz	r0, 80005c8 <main+0x4c>
 80005c6:	bf30      	wfi
 80005c8:	a801      	add	r0, sp, #4
 80005ca:	f000 fce7 	bl	8000f9c <drill_timebase_get>
 80005ce:	6060      	str	r0, [r4, #4]
 80005d0:	6863      	ldr	r3, [r4, #4]
 80005d2:	2b00      	cmp	r3, #0
 80005d4:	d1f0      	bne.n	80005b8 <main+0x3c>
 80005d6:	f000 fc27 	bl	8000e28 <drill_spi_abort>
 80005da:	bf30      	wfi
 80005dc:	e7fd      	b.n	80005da <main+0x5e>
 80005de:	bf00      	nop
 80005e0:	20000004 	.word	0x20000004

080005e4 <drill_safe_gpio_validate>:
 80005e4:	b908      	cbnz	r0, 80005ea <drill_safe_gpio_validate+0x6>
 80005e6:	2000      	movs	r0, #0
 80005e8:	4770      	bx	lr
 80005ea:	f100 0248 	add.w	r2, r0, #72	@ 0x48
 80005ee:	6803      	ldr	r3, [r0, #0]
 80005f0:	2b00      	cmp	r3, #0
 80005f2:	d0f8      	beq.n	80005e6 <drill_safe_gpio_validate+0x2>
 80005f4:	6843      	ldr	r3, [r0, #4]
 80005f6:	2b00      	cmp	r3, #0
 80005f8:	d0f5      	beq.n	80005e6 <drill_safe_gpio_validate+0x2>
 80005fa:	6883      	ldr	r3, [r0, #8]
 80005fc:	2b00      	cmp	r3, #0
 80005fe:	d0f2      	beq.n	80005e6 <drill_safe_gpio_validate+0x2>
 8000600:	68c3      	ldr	r3, [r0, #12]
 8000602:	2b00      	cmp	r3, #0
 8000604:	d0ef      	beq.n	80005e6 <drill_safe_gpio_validate+0x2>
 8000606:	6903      	ldr	r3, [r0, #16]
 8000608:	2b00      	cmp	r3, #0
 800060a:	d0ec      	beq.n	80005e6 <drill_safe_gpio_validate+0x2>
 800060c:	8a81      	ldrh	r1, [r0, #20]
 800060e:	8ac3      	ldrh	r3, [r0, #22]
 8000610:	438b      	bics	r3, r1
 8000612:	d1e8      	bne.n	80005e6 <drill_safe_gpio_validate+0x2>
 8000614:	3018      	adds	r0, #24
 8000616:	4290      	cmp	r0, r2
 8000618:	d1e9      	bne.n	80005ee <drill_safe_gpio_validate+0xa>
 800061a:	2001      	movs	r0, #1
 800061c:	4770      	bx	lr

0800061e <drill_safe_gpio_preload>:
 800061e:	b538      	push	{r3, r4, r5, lr}
 8000620:	4604      	mov	r4, r0
 8000622:	f7ff ffdf 	bl	80005e4 <drill_safe_gpio_validate>
 8000626:	b160      	cbz	r0, 8000642 <drill_safe_gpio_preload+0x24>
 8000628:	4623      	mov	r3, r4
 800062a:	3448      	adds	r4, #72	@ 0x48
 800062c:	8ada      	ldrh	r2, [r3, #22]
 800062e:	8a99      	ldrh	r1, [r3, #20]
 8000630:	691d      	ldr	r5, [r3, #16]
 8000632:	ea21 0102 	bic.w	r1, r1, r2
 8000636:	3318      	adds	r3, #24
 8000638:	ea42 4201 	orr.w	r2, r2, r1, lsl #16
 800063c:	429c      	cmp	r4, r3
 800063e:	602a      	str	r2, [r5, #0]
 8000640:	d1f4      	bne.n	800062c <drill_safe_gpio_preload+0xe>
 8000642:	bd38      	pop	{r3, r4, r5, pc}

08000644 <drill_safe_gpio_configure_outputs>:
 8000644:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}
 8000648:	4604      	mov	r4, r0
 800064a:	f7ff ffcb 	bl	80005e4 <drill_safe_gpio_validate>
 800064e:	b3a8      	cbz	r0, 80006bc <drill_safe_gpio_configure_outputs+0x78>
 8000650:	4623      	mov	r3, r4
 8000652:	f104 0c48 	add.w	ip, r4, #72	@ 0x48
 8000656:	2601      	movs	r6, #1
 8000658:	f04f 0e03 	mov.w	lr, #3
 800065c:	8a9f      	ldrh	r7, [r3, #20]
 800065e:	2200      	movs	r2, #0
 8000660:	fa06 f802 	lsl.w	r8, r6, r2
 8000664:	ea17 0f08 	tst.w	r7, r8
 8000668:	d022      	beq.n	80006b0 <drill_safe_gpio_configure_outputs+0x6c>
 800066a:	685d      	ldr	r5, [r3, #4]
 800066c:	6829      	ldr	r1, [r5, #0]
 800066e:	ea21 0108 	bic.w	r1, r1, r8
 8000672:	f8d3 8008 	ldr.w	r8, [r3, #8]
 8000676:	6029      	str	r1, [r5, #0]
 8000678:	f8d8 1000 	ldr.w	r1, [r8]
 800067c:	0054      	lsls	r4, r2, #1
 800067e:	fa0e f504 	lsl.w	r5, lr, r4
 8000682:	ea21 0105 	bic.w	r1, r1, r5
 8000686:	f8c8 1000 	str.w	r1, [r8]
 800068a:	f8d3 800c 	ldr.w	r8, [r3, #12]
 800068e:	f8d8 1000 	ldr.w	r1, [r8]
 8000692:	ea21 0105 	bic.w	r1, r1, r5
 8000696:	f8c8 1000 	str.w	r1, [r8]
 800069a:	f8d3 8000 	ldr.w	r8, [r3]
 800069e:	f8d8 1000 	ldr.w	r1, [r8]
 80006a2:	fa06 f404 	lsl.w	r4, r6, r4
 80006a6:	ea21 0105 	bic.w	r1, r1, r5
 80006aa:	4321      	orrs	r1, r4
 80006ac:	f8c8 1000 	str.w	r1, [r8]
 80006b0:	3201      	adds	r2, #1
 80006b2:	2a10      	cmp	r2, #16
 80006b4:	d1d4      	bne.n	8000660 <drill_safe_gpio_configure_outputs+0x1c>
 80006b6:	3318      	adds	r3, #24
 80006b8:	4563      	cmp	r3, ip
 80006ba:	d1cf      	bne.n	800065c <drill_safe_gpio_configure_outputs+0x18>
 80006bc:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}

080006c0 <clock_ok>:
 80006c0:	4b0a      	ldr	r3, [pc, #40]	@ (80006ec <clock_ok+0x2c>)
 80006c2:	6898      	ldr	r0, [r3, #8]
 80006c4:	681a      	ldr	r2, [r3, #0]
 80006c6:	f402 62a0 	and.w	r2, r2, #1280	@ 0x500
 80006ca:	f5b2 6fa0 	cmp.w	r2, #1280	@ 0x500
 80006ce:	d001      	beq.n	80006d4 <clock_ok+0x14>
 80006d0:	2000      	movs	r0, #0
 80006d2:	4770      	bx	lr
 80006d4:	681b      	ldr	r3, [r3, #0]
 80006d6:	f413 2fa0 	tst.w	r3, #327680	@ 0x50000
 80006da:	d1f9      	bne.n	80006d0 <clock_ok+0x10>
 80006dc:	f420 60e0 	bic.w	r0, r0, #1792	@ 0x700
 80006e0:	0480      	lsls	r0, r0, #18
 80006e2:	0c80      	lsrs	r0, r0, #18
 80006e4:	1f43      	subs	r3, r0, #5
 80006e6:	4258      	negs	r0, r3
 80006e8:	4158      	adcs	r0, r3
 80006ea:	4770      	bx	lr
 80006ec:	40021000 	.word	0x40021000

080006f0 <low_output>:
 80006f0:	6803      	ldr	r3, [r0, #0]
 80006f2:	004a      	lsls	r2, r1, #1
 80006f4:	40d3      	lsrs	r3, r2
 80006f6:	f003 0303 	and.w	r3, r3, #3
 80006fa:	2b01      	cmp	r3, #1
 80006fc:	d001      	beq.n	8000702 <low_output+0x12>
 80006fe:	2000      	movs	r0, #0
 8000700:	4770      	bx	lr
 8000702:	fa03 f101 	lsl.w	r1, r3, r1
 8000706:	6843      	ldr	r3, [r0, #4]
 8000708:	420b      	tst	r3, r1
 800070a:	d1f8      	bne.n	80006fe <low_output+0xe>
 800070c:	6943      	ldr	r3, [r0, #20]
 800070e:	420b      	tst	r3, r1
 8000710:	d1f5      	bne.n	80006fe <low_output+0xe>
 8000712:	6903      	ldr	r3, [r0, #16]
 8000714:	420b      	tst	r3, r1
 8000716:	bf0c      	ite	eq
 8000718:	2001      	moveq	r0, #1
 800071a:	2000      	movne	r0, #0
 800071c:	4770      	bx	lr

0800071e <blank_pins>:
 800071e:	b508      	push	{r3, lr}
 8000720:	4b1f      	ldr	r3, [pc, #124]	@ (80007a0 <blank_pins+0x82>)
 8000722:	6cdb      	ldr	r3, [r3, #76]	@ 0x4c
 8000724:	f003 0323 	and.w	r3, r3, #35	@ 0x23
 8000728:	2b23      	cmp	r3, #35	@ 0x23
 800072a:	d136      	bne.n	800079a <blank_pins+0x7c>
 800072c:	2105      	movs	r1, #5
 800072e:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 8000732:	f7ff ffdd 	bl	80006f0 <low_output>
 8000736:	b918      	cbnz	r0, 8000740 <blank_pins+0x22>
 8000738:	2000      	movs	r0, #0
 800073a:	f000 0001 	and.w	r0, r0, #1
 800073e:	bd08      	pop	{r3, pc}
 8000740:	4818      	ldr	r0, [pc, #96]	@ (80007a4 <blank_pins+0x86>)
 8000742:	2101      	movs	r1, #1
 8000744:	f7ff ffd4 	bl	80006f0 <low_output>
 8000748:	2800      	cmp	r0, #0
 800074a:	d0f5      	beq.n	8000738 <blank_pins+0x1a>
 800074c:	2107      	movs	r1, #7
 800074e:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 8000752:	f7ff ffcd 	bl	80006f0 <low_output>
 8000756:	2800      	cmp	r0, #0
 8000758:	d0ee      	beq.n	8000738 <blank_pins+0x1a>
 800075a:	2108      	movs	r1, #8
 800075c:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 8000760:	f7ff ffc6 	bl	80006f0 <low_output>
 8000764:	2800      	cmp	r0, #0
 8000766:	d0e7      	beq.n	8000738 <blank_pins+0x1a>
 8000768:	2109      	movs	r1, #9
 800076a:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 800076e:	f7ff ffbf 	bl	80006f0 <low_output>
 8000772:	2800      	cmp	r0, #0
 8000774:	d0e0      	beq.n	8000738 <blank_pins+0x1a>
 8000776:	210a      	movs	r1, #10
 8000778:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 800077c:	f7ff ffb8 	bl	80006f0 <low_output>
 8000780:	2800      	cmp	r0, #0
 8000782:	d0d9      	beq.n	8000738 <blank_pins+0x1a>
 8000784:	4808      	ldr	r0, [pc, #32]	@ (80007a8 <blank_pins+0x8a>)
 8000786:	2100      	movs	r1, #0
 8000788:	f7ff ffb2 	bl	80006f0 <low_output>
 800078c:	2800      	cmp	r0, #0
 800078e:	d0d3      	beq.n	8000738 <blank_pins+0x1a>
 8000790:	2101      	movs	r1, #1
 8000792:	4805      	ldr	r0, [pc, #20]	@ (80007a8 <blank_pins+0x8a>)
 8000794:	f7ff ffac 	bl	80006f0 <low_output>
 8000798:	e7cf      	b.n	800073a <blank_pins+0x1c>
 800079a:	2000      	movs	r0, #0
 800079c:	e7cf      	b.n	800073e <blank_pins+0x20>
 800079e:	bf00      	nop
 80007a0:	40021000 	.word	0x40021000
 80007a4:	48001400 	.word	0x48001400
 80007a8:	48000400 	.word	0x48000400

080007ac <drill_pwm_stage_available>:
 80007ac:	b508      	push	{r3, lr}
 80007ae:	4b1e      	ldr	r3, [pc, #120]	@ (8000828 <drill_pwm_stage_available+0x7c>)
 80007b0:	781b      	ldrb	r3, [r3, #0]
 80007b2:	b90b      	cbnz	r3, 80007b8 <drill_pwm_stage_available+0xc>
 80007b4:	2000      	movs	r0, #0
 80007b6:	bd08      	pop	{r3, pc}
 80007b8:	f7ff ff82 	bl	80006c0 <clock_ok>
 80007bc:	2800      	cmp	r0, #0
 80007be:	d0f9      	beq.n	80007b4 <drill_pwm_stage_available+0x8>
 80007c0:	f7ff ffad 	bl	800071e <blank_pins>
 80007c4:	2800      	cmp	r0, #0
 80007c6:	d0f5      	beq.n	80007b4 <drill_pwm_stage_available+0x8>
 80007c8:	4b18      	ldr	r3, [pc, #96]	@ (800082c <drill_pwm_stage_available+0x80>)
 80007ca:	6e1a      	ldr	r2, [r3, #96]	@ 0x60
 80007cc:	0511      	lsls	r1, r2, #20
 80007ce:	d5f1      	bpl.n	80007b4 <drill_pwm_stage_available+0x8>
 80007d0:	6c1b      	ldr	r3, [r3, #64]	@ 0x40
 80007d2:	051a      	lsls	r2, r3, #20
 80007d4:	d4ee      	bmi.n	80007b4 <drill_pwm_stage_available+0x8>
 80007d6:	4b16      	ldr	r3, [pc, #88]	@ (8000830 <drill_pwm_stage_available+0x84>)
 80007d8:	681a      	ldr	r2, [r3, #0]
 80007da:	2ae0      	cmp	r2, #224	@ 0xe0
 80007dc:	d1ea      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 80007de:	685a      	ldr	r2, [r3, #4]
 80007e0:	2a00      	cmp	r2, #0
 80007e2:	d1e7      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 80007e4:	689a      	ldr	r2, [r3, #8]
 80007e6:	2a00      	cmp	r2, #0
 80007e8:	d1e4      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 80007ea:	68da      	ldr	r2, [r3, #12]
 80007ec:	2a00      	cmp	r2, #0
 80007ee:	d1e1      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 80007f0:	6a1b      	ldr	r3, [r3, #32]
 80007f2:	2b00      	cmp	r3, #0
 80007f4:	d1de      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 80007f6:	4b0e      	ldr	r3, [pc, #56]	@ (8000830 <drill_pwm_stage_available+0x84>)
 80007f8:	6c5a      	ldr	r2, [r3, #68]	@ 0x44
 80007fa:	2a10      	cmp	r2, #16
 80007fc:	d1da      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 80007fe:	6a9a      	ldr	r2, [r3, #40]	@ 0x28
 8000800:	2a00      	cmp	r2, #0
 8000802:	d1d7      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 8000804:	6ada      	ldr	r2, [r3, #44]	@ 0x2c
 8000806:	f5b2 7fc8 	cmp.w	r2, #400	@ 0x190
 800080a:	d1d3      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 800080c:	6b1a      	ldr	r2, [r3, #48]	@ 0x30
 800080e:	2a00      	cmp	r2, #0
 8000810:	d1d0      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 8000812:	6999      	ldr	r1, [r3, #24]
 8000814:	f646 0268 	movw	r2, #26728	@ 0x6868
 8000818:	4291      	cmp	r1, r2
 800081a:	d1cb      	bne.n	80007b4 <drill_pwm_stage_available+0x8>
 800081c:	69d8      	ldr	r0, [r3, #28]
 800081e:	f1a0 0368 	sub.w	r3, r0, #104	@ 0x68
 8000822:	4258      	negs	r0, r3
 8000824:	4158      	adcs	r0, r3
 8000826:	e7c6      	b.n	80007b6 <drill_pwm_stage_available+0xa>
 8000828:	20000014 	.word	0x20000014
 800082c:	40021000 	.word	0x40021000
 8000830:	40012c00 	.word	0x40012c00

08000834 <drill_pwm_stage_init>:
 8000834:	b510      	push	{r4, lr}
 8000836:	4c27      	ldr	r4, [pc, #156]	@ (80008d4 <drill_pwm_stage_init+0xa0>)
 8000838:	7823      	ldrb	r3, [r4, #0]
 800083a:	b11b      	cbz	r3, 8000844 <drill_pwm_stage_init+0x10>
 800083c:	e8bd 4010 	ldmia.w	sp!, {r4, lr}
 8000840:	f7ff bfb4 	b.w	80007ac <drill_pwm_stage_available>
 8000844:	f7ff ff3c 	bl	80006c0 <clock_ok>
 8000848:	2800      	cmp	r0, #0
 800084a:	d040      	beq.n	80008ce <drill_pwm_stage_init+0x9a>
 800084c:	f7ff ff67 	bl	800071e <blank_pins>
 8000850:	2800      	cmp	r0, #0
 8000852:	d03c      	beq.n	80008ce <drill_pwm_stage_init+0x9a>
 8000854:	4b20      	ldr	r3, [pc, #128]	@ (80008d8 <drill_pwm_stage_init+0xa4>)
 8000856:	6e1a      	ldr	r2, [r3, #96]	@ 0x60
 8000858:	0512      	lsls	r2, r2, #20
 800085a:	d438      	bmi.n	80008ce <drill_pwm_stage_init+0x9a>
 800085c:	6e1a      	ldr	r2, [r3, #96]	@ 0x60
 800085e:	f442 6200 	orr.w	r2, r2, #2048	@ 0x800
 8000862:	661a      	str	r2, [r3, #96]	@ 0x60
 8000864:	6e1a      	ldr	r2, [r3, #96]	@ 0x60
 8000866:	f3bf 8f4f 	dsb	sy
 800086a:	6c1a      	ldr	r2, [r3, #64]	@ 0x40
 800086c:	f412 6200 	ands.w	r2, r2, #2048	@ 0x800
 8000870:	d12d      	bne.n	80008ce <drill_pwm_stage_init+0x9a>
 8000872:	6c19      	ldr	r1, [r3, #64]	@ 0x40
 8000874:	f441 6100 	orr.w	r1, r1, #2048	@ 0x800
 8000878:	6419      	str	r1, [r3, #64]	@ 0x40
 800087a:	f3bf 8f4f 	dsb	sy
 800087e:	6c19      	ldr	r1, [r3, #64]	@ 0x40
 8000880:	f421 6100 	bic.w	r1, r1, #2048	@ 0x800
 8000884:	6419      	str	r1, [r3, #64]	@ 0x40
 8000886:	f3bf 8f4f 	dsb	sy
 800088a:	f5a3 4364 	sub.w	r3, r3, #58368	@ 0xe400
 800088e:	f44f 71c8 	mov.w	r1, #400	@ 0x190
 8000892:	601a      	str	r2, [r3, #0]
 8000894:	621a      	str	r2, [r3, #32]
 8000896:	645a      	str	r2, [r3, #68]	@ 0x44
 8000898:	60da      	str	r2, [r3, #12]
 800089a:	605a      	str	r2, [r3, #4]
 800089c:	609a      	str	r2, [r3, #8]
 800089e:	629a      	str	r2, [r3, #40]	@ 0x28
 80008a0:	62d9      	str	r1, [r3, #44]	@ 0x2c
 80008a2:	f646 0168 	movw	r1, #26728	@ 0x6868
 80008a6:	631a      	str	r2, [r3, #48]	@ 0x30
 80008a8:	625a      	str	r2, [r3, #36]	@ 0x24
 80008aa:	635a      	str	r2, [r3, #52]	@ 0x34
 80008ac:	639a      	str	r2, [r3, #56]	@ 0x38
 80008ae:	63da      	str	r2, [r3, #60]	@ 0x3c
 80008b0:	641a      	str	r2, [r3, #64]	@ 0x40
 80008b2:	6199      	str	r1, [r3, #24]
 80008b4:	2168      	movs	r1, #104	@ 0x68
 80008b6:	61d9      	str	r1, [r3, #28]
 80008b8:	2110      	movs	r1, #16
 80008ba:	6459      	str	r1, [r3, #68]	@ 0x44
 80008bc:	21e0      	movs	r1, #224	@ 0xe0
 80008be:	6019      	str	r1, [r3, #0]
 80008c0:	2101      	movs	r1, #1
 80008c2:	6159      	str	r1, [r3, #20]
 80008c4:	611a      	str	r2, [r3, #16]
 80008c6:	f3bf 8f4f 	dsb	sy
 80008ca:	7021      	strb	r1, [r4, #0]
 80008cc:	e7b6      	b.n	800083c <drill_pwm_stage_init+0x8>
 80008ce:	2000      	movs	r0, #0
 80008d0:	bd10      	pop	{r4, pc}
 80008d2:	bf00      	nop
 80008d4:	20000014 	.word	0x20000014
 80008d8:	40021000 	.word	0x40021000

080008dc <drill_pwm_stage_write>:
 80008dc:	b570      	push	{r4, r5, r6, lr}
 80008de:	4606      	mov	r6, r0
 80008e0:	460d      	mov	r5, r1
 80008e2:	4614      	mov	r4, r2
 80008e4:	f7ff ff62 	bl	80007ac <drill_pwm_stage_available>
 80008e8:	b340      	cbz	r0, 800093c <drill_pwm_stage_write+0x60>
 80008ea:	4b15      	ldr	r3, [pc, #84]	@ (8000940 <drill_pwm_stage_write+0x64>)
 80008ec:	f44f 72c8 	mov.w	r2, #400	@ 0x190
 80008f0:	fb02 f006 	mul.w	r0, r2, r6
 80008f4:	4e13      	ldr	r6, [pc, #76]	@ (8000944 <drill_pwm_stage_write+0x68>)
 80008f6:	18c1      	adds	r1, r0, r3
 80008f8:	42b1      	cmp	r1, r6
 80008fa:	d81f      	bhi.n	800093c <drill_pwm_stage_write+0x60>
 80008fc:	fb02 f105 	mul.w	r1, r2, r5
 8000900:	18cd      	adds	r5, r1, r3
 8000902:	42b5      	cmp	r5, r6
 8000904:	d81a      	bhi.n	800093c <drill_pwm_stage_write+0x60>
 8000906:	4362      	muls	r2, r4
 8000908:	4413      	add	r3, r2
 800090a:	42b3      	cmp	r3, r6
 800090c:	d816      	bhi.n	800093c <drill_pwm_stage_write+0x60>
 800090e:	f647 74ff 	movw	r4, #32767	@ 0x7fff
 8000912:	f64f 73ff 	movw	r3, #65535	@ 0xffff
 8000916:	4420      	add	r0, r4
 8000918:	4421      	add	r1, r4
 800091a:	fbb0 f0f3 	udiv	r0, r0, r3
 800091e:	fbb1 f1f3 	udiv	r1, r1, r3
 8000922:	4422      	add	r2, r4
 8000924:	fbb2 f2f3 	udiv	r2, r2, r3
 8000928:	4b07      	ldr	r3, [pc, #28]	@ (8000948 <drill_pwm_stage_write+0x6c>)
 800092a:	6358      	str	r0, [r3, #52]	@ 0x34
 800092c:	6399      	str	r1, [r3, #56]	@ 0x38
 800092e:	63da      	str	r2, [r3, #60]	@ 0x3c
 8000930:	f3bf 8f4f 	dsb	sy
 8000934:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}
 8000938:	f7ff bf38 	b.w	80007ac <drill_pwm_stage_available>
 800093c:	2000      	movs	r0, #0
 800093e:	bd70      	pop	{r4, r5, r6, pc}
 8000940:	ffef8010 	.word	0xffef8010
 8000944:	016efe90 	.word	0x016efe90
 8000948:	40012c00 	.word	0x40012c00

0800094c <spi_clock_ok>:
 800094c:	4b0c      	ldr	r3, [pc, #48]	@ (8000980 <spi_clock_ok+0x34>)
 800094e:	681a      	ldr	r2, [r3, #0]
 8000950:	f402 62a0 	and.w	r2, r2, #1280	@ 0x500
 8000954:	f5b2 6fa0 	cmp.w	r2, #1280	@ 0x500
 8000958:	d001      	beq.n	800095e <spi_clock_ok+0x12>
 800095a:	2000      	movs	r0, #0
 800095c:	4770      	bx	lr
 800095e:	681a      	ldr	r2, [r3, #0]
 8000960:	f412 2fa0 	tst.w	r2, #327680	@ 0x50000
 8000964:	d1f9      	bne.n	800095a <spi_clock_ok+0xe>
 8000966:	689a      	ldr	r2, [r3, #8]
 8000968:	f3c2 020a 	ubfx	r2, r2, #0, #11
 800096c:	2a05      	cmp	r2, #5
 800096e:	d1f4      	bne.n	800095a <spi_clock_ok+0xe>
 8000970:	6cd8      	ldr	r0, [r3, #76]	@ 0x4c
 8000972:	f000 0023 	and.w	r0, r0, #35	@ 0x23
 8000976:	f1a0 0323 	sub.w	r3, r0, #35	@ 0x23
 800097a:	4258      	negs	r0, r3
 800097c:	4158      	adcs	r0, r3
 800097e:	4770      	bx	lr
 8000980:	40021000 	.word	0x40021000

08000984 <fault>:
 8000984:	4b1b      	ldr	r3, [pc, #108]	@ (80009f4 <fault+0x70>)
 8000986:	6cda      	ldr	r2, [r3, #76]	@ 0x4c
 8000988:	f042 0223 	orr.w	r2, r2, #35	@ 0x23
 800098c:	64da      	str	r2, [r3, #76]	@ 0x4c
 800098e:	6cda      	ldr	r2, [r3, #76]	@ 0x4c
 8000990:	f04f 4290 	mov.w	r2, #1207959552	@ 0x48000000
 8000994:	f04f 61f4 	mov.w	r1, #127926272	@ 0x7a00000
 8000998:	6191      	str	r1, [r2, #24]
 800099a:	f44f 3140 	mov.w	r1, #196608	@ 0x30000
 800099e:	f8c2 1418 	str.w	r1, [r2, #1048]	@ 0x418
 80009a2:	f502 52a0 	add.w	r2, r2, #5120	@ 0x1400
 80009a6:	f44f 3100 	mov.w	r1, #131072	@ 0x20000
 80009aa:	6191      	str	r1, [r2, #24]
 80009ac:	f3bf 8f4f 	dsb	sy
 80009b0:	6e1a      	ldr	r2, [r3, #96]	@ 0x60
 80009b2:	0512      	lsls	r2, r2, #20
 80009b4:	d50a      	bpl.n	80009cc <fault+0x48>
 80009b6:	4a10      	ldr	r2, [pc, #64]	@ (80009f8 <fault+0x74>)
 80009b8:	6c51      	ldr	r1, [r2, #68]	@ 0x44
 80009ba:	f421 4100 	bic.w	r1, r1, #32768	@ 0x8000
 80009be:	6451      	str	r1, [r2, #68]	@ 0x44
 80009c0:	2100      	movs	r1, #0
 80009c2:	6211      	str	r1, [r2, #32]
 80009c4:	6811      	ldr	r1, [r2, #0]
 80009c6:	f021 0101 	bic.w	r1, r1, #1
 80009ca:	6011      	str	r1, [r2, #0]
 80009cc:	6d9b      	ldr	r3, [r3, #88]	@ 0x58
 80009ce:	045b      	lsls	r3, r3, #17
 80009d0:	bf41      	itttt	mi
 80009d2:	4a0a      	ldrmi	r2, [pc, #40]	@ (80009fc <fault+0x78>)
 80009d4:	6813      	ldrmi	r3, [r2, #0]
 80009d6:	f023 0340 	bicmi.w	r3, r3, #64	@ 0x40
 80009da:	6013      	strmi	r3, [r2, #0]
 80009dc:	4b08      	ldr	r3, [pc, #32]	@ (8000a00 <fault+0x7c>)
 80009de:	f44f 5280 	mov.w	r2, #4096	@ 0x1000
 80009e2:	619a      	str	r2, [r3, #24]
 80009e4:	f3bf 8f4f 	dsb	sy
 80009e8:	4b06      	ldr	r3, [pc, #24]	@ (8000a04 <fault+0x80>)
 80009ea:	2207      	movs	r2, #7
 80009ec:	701a      	strb	r2, [r3, #0]
 80009ee:	2200      	movs	r2, #0
 80009f0:	805a      	strh	r2, [r3, #2]
 80009f2:	4770      	bx	lr
 80009f4:	40021000 	.word	0x40021000
 80009f8:	40012c00 	.word	0x40012c00
 80009fc:	40003800 	.word	0x40003800
 8000a00:	48000400 	.word	0x48000400
 8000a04:	20000018 	.word	0x20000018

08000a08 <pin.constprop.0>:
 8000a08:	6803      	ldr	r3, [r0, #0]
 8000a0a:	b510      	push	{r4, lr}
 8000a0c:	004c      	lsls	r4, r1, #1
 8000a0e:	40e3      	lsrs	r3, r4
 8000a10:	f003 0303 	and.w	r3, r3, #3
 8000a14:	2b01      	cmp	r3, #1
 8000a16:	d001      	beq.n	8000a1c <pin.constprop.0+0x14>
 8000a18:	2000      	movs	r0, #0
 8000a1a:	bd10      	pop	{r4, pc}
 8000a1c:	6844      	ldr	r4, [r0, #4]
 8000a1e:	408b      	lsls	r3, r1
 8000a20:	4223      	tst	r3, r4
 8000a22:	d1f9      	bne.n	8000a18 <pin.constprop.0+0x10>
 8000a24:	6943      	ldr	r3, [r0, #20]
 8000a26:	40cb      	lsrs	r3, r1
 8000a28:	f003 0301 	and.w	r3, r3, #1
 8000a2c:	4293      	cmp	r3, r2
 8000a2e:	d1f3      	bne.n	8000a18 <pin.constprop.0+0x10>
 8000a30:	6900      	ldr	r0, [r0, #16]
 8000a32:	40c8      	lsrs	r0, r1
 8000a34:	f000 0001 	and.w	r0, r0, #1
 8000a38:	1ac3      	subs	r3, r0, r3
 8000a3a:	4258      	negs	r0, r3
 8000a3c:	4158      	adcs	r0, r3
 8000a3e:	e7ec      	b.n	8000a1a <pin.constprop.0+0x12>

08000a40 <blank>:
 8000a40:	b508      	push	{r3, lr}
 8000a42:	2200      	movs	r2, #0
 8000a44:	2105      	movs	r1, #5
 8000a46:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 8000a4a:	f7ff ffdd 	bl	8000a08 <pin.constprop.0>
 8000a4e:	b908      	cbnz	r0, 8000a54 <blank+0x14>
 8000a50:	2000      	movs	r0, #0
 8000a52:	bd08      	pop	{r3, pc}
 8000a54:	2107      	movs	r1, #7
 8000a56:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 8000a5a:	f7ff ffd5 	bl	8000a08 <pin.constprop.0>
 8000a5e:	2800      	cmp	r0, #0
 8000a60:	d0f6      	beq.n	8000a50 <blank+0x10>
 8000a62:	2108      	movs	r1, #8
 8000a64:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 8000a68:	f7ff ffce 	bl	8000a08 <pin.constprop.0>
 8000a6c:	2800      	cmp	r0, #0
 8000a6e:	d0ef      	beq.n	8000a50 <blank+0x10>
 8000a70:	2109      	movs	r1, #9
 8000a72:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 8000a76:	f7ff ffc7 	bl	8000a08 <pin.constprop.0>
 8000a7a:	2800      	cmp	r0, #0
 8000a7c:	d0e8      	beq.n	8000a50 <blank+0x10>
 8000a7e:	210a      	movs	r1, #10
 8000a80:	f04f 4090 	mov.w	r0, #1207959552	@ 0x48000000
 8000a84:	f7ff ffc0 	bl	8000a08 <pin.constprop.0>
 8000a88:	2800      	cmp	r0, #0
 8000a8a:	d0e1      	beq.n	8000a50 <blank+0x10>
 8000a8c:	4812      	ldr	r0, [pc, #72]	@ (8000ad8 <blank+0x98>)
 8000a8e:	4611      	mov	r1, r2
 8000a90:	f7ff ffba 	bl	8000a08 <pin.constprop.0>
 8000a94:	2800      	cmp	r0, #0
 8000a96:	d0db      	beq.n	8000a50 <blank+0x10>
 8000a98:	480f      	ldr	r0, [pc, #60]	@ (8000ad8 <blank+0x98>)
 8000a9a:	2101      	movs	r1, #1
 8000a9c:	f7ff ffb4 	bl	8000a08 <pin.constprop.0>
 8000aa0:	2800      	cmp	r0, #0
 8000aa2:	d0d5      	beq.n	8000a50 <blank+0x10>
 8000aa4:	4a0d      	ldr	r2, [pc, #52]	@ (8000adc <blank+0x9c>)
 8000aa6:	6813      	ldr	r3, [r2, #0]
 8000aa8:	f003 030c 	and.w	r3, r3, #12
 8000aac:	2b04      	cmp	r3, #4
 8000aae:	d1cf      	bne.n	8000a50 <blank+0x10>
 8000ab0:	6853      	ldr	r3, [r2, #4]
 8000ab2:	079b      	lsls	r3, r3, #30
 8000ab4:	d4cc      	bmi.n	8000a50 <blank+0x10>
 8000ab6:	4b0a      	ldr	r3, [pc, #40]	@ (8000ae0 <blank+0xa0>)
 8000ab8:	6e1b      	ldr	r3, [r3, #96]	@ 0x60
 8000aba:	0518      	lsls	r0, r3, #20
 8000abc:	d5c8      	bpl.n	8000a50 <blank+0x10>
 8000abe:	4b09      	ldr	r3, [pc, #36]	@ (8000ae4 <blank+0xa4>)
 8000ac0:	681a      	ldr	r2, [r3, #0]
 8000ac2:	07d2      	lsls	r2, r2, #31
 8000ac4:	d4c4      	bmi.n	8000a50 <blank+0x10>
 8000ac6:	6a1a      	ldr	r2, [r3, #32]
 8000ac8:	2a00      	cmp	r2, #0
 8000aca:	d1c1      	bne.n	8000a50 <blank+0x10>
 8000acc:	6c58      	ldr	r0, [r3, #68]	@ 0x44
 8000ace:	f3c0 30c0 	ubfx	r0, r0, #15, #1
 8000ad2:	4048      	eors	r0, r1
 8000ad4:	e7bd      	b.n	8000a52 <blank+0x12>
 8000ad6:	bf00      	nop
 8000ad8:	48000400 	.word	0x48000400
 8000adc:	48001400 	.word	0x48001400
 8000ae0:	40021000 	.word	0x40021000
 8000ae4:	40012c00 	.word	0x40012c00

08000ae8 <drill_spi_available>:
 8000ae8:	b538      	push	{r3, r4, r5, lr}
 8000aea:	4b29      	ldr	r3, [pc, #164]	@ (8000b90 <drill_spi_available+0xa8>)
 8000aec:	781d      	ldrb	r5, [r3, #0]
 8000aee:	b90d      	cbnz	r5, 8000af4 <drill_spi_available+0xc>
 8000af0:	2000      	movs	r0, #0
 8000af2:	bd38      	pop	{r3, r4, r5, pc}
 8000af4:	2d07      	cmp	r5, #7
 8000af6:	d0fb      	beq.n	8000af0 <drill_spi_available+0x8>
 8000af8:	f7ff ff28 	bl	800094c <spi_clock_ok>
 8000afc:	2800      	cmp	r0, #0
 8000afe:	d0f8      	beq.n	8000af2 <drill_spi_available+0xa>
 8000b00:	f7ff ff9e 	bl	8000a40 <blank>
 8000b04:	2800      	cmp	r0, #0
 8000b06:	d0f4      	beq.n	8000af2 <drill_spi_available+0xa>
 8000b08:	4b22      	ldr	r3, [pc, #136]	@ (8000b94 <drill_spi_available+0xac>)
 8000b0a:	6d9a      	ldr	r2, [r3, #88]	@ 0x58
 8000b0c:	0451      	lsls	r1, r2, #17
 8000b0e:	d5ef      	bpl.n	8000af0 <drill_spi_available+0x8>
 8000b10:	6b9b      	ldr	r3, [r3, #56]	@ 0x38
 8000b12:	045b      	lsls	r3, r3, #17
 8000b14:	d4ec      	bmi.n	8000af0 <drill_spi_available+0x8>
 8000b16:	4c20      	ldr	r4, [pc, #128]	@ (8000b98 <drill_spi_available+0xb0>)
 8000b18:	2d01      	cmp	r5, #1
 8000b1a:	bf18      	it	ne
 8000b1c:	2d06      	cmpne	r5, #6
 8000b1e:	bf0c      	ite	eq
 8000b20:	2201      	moveq	r2, #1
 8000b22:	2200      	movne	r2, #0
 8000b24:	210c      	movs	r1, #12
 8000b26:	4620      	mov	r0, r4
 8000b28:	f7ff ff6e 	bl	8000a08 <pin.constprop.0>
 8000b2c:	2800      	cmp	r0, #0
 8000b2e:	d0e0      	beq.n	8000af2 <drill_spi_available+0xa>
 8000b30:	68e3      	ldr	r3, [r4, #12]
 8000b32:	f1b3 7f80 	cmp.w	r3, #16777216	@ 0x1000000
 8000b36:	d2db      	bcs.n	8000af0 <drill_spi_available+0x8>
 8000b38:	230d      	movs	r3, #13
 8000b3a:	2001      	movs	r0, #1
 8000b3c:	6822      	ldr	r2, [r4, #0]
 8000b3e:	0059      	lsls	r1, r3, #1
 8000b40:	40ca      	lsrs	r2, r1
 8000b42:	f002 0203 	and.w	r2, r2, #3
 8000b46:	2a02      	cmp	r2, #2
 8000b48:	d1d2      	bne.n	8000af0 <drill_spi_available+0x8>
 8000b4a:	6a62      	ldr	r2, [r4, #36]	@ 0x24
 8000b4c:	f1a3 0108 	sub.w	r1, r3, #8
 8000b50:	0089      	lsls	r1, r1, #2
 8000b52:	40ca      	lsrs	r2, r1
 8000b54:	f002 020f 	and.w	r2, r2, #15
 8000b58:	2a05      	cmp	r2, #5
 8000b5a:	d1c9      	bne.n	8000af0 <drill_spi_available+0x8>
 8000b5c:	6862      	ldr	r2, [r4, #4]
 8000b5e:	fa00 f103 	lsl.w	r1, r0, r3
 8000b62:	4211      	tst	r1, r2
 8000b64:	d1c4      	bne.n	8000af0 <drill_spi_available+0x8>
 8000b66:	3301      	adds	r3, #1
 8000b68:	2b10      	cmp	r3, #16
 8000b6a:	d1e7      	bne.n	8000b3c <drill_spi_available+0x54>
 8000b6c:	4b0b      	ldr	r3, [pc, #44]	@ (8000b9c <drill_spi_available+0xb4>)
 8000b6e:	6819      	ldr	r1, [r3, #0]
 8000b70:	f240 3265 	movw	r2, #869	@ 0x365
 8000b74:	4291      	cmp	r1, r2
 8000b76:	d1bb      	bne.n	8000af0 <drill_spi_available+0x8>
 8000b78:	685a      	ldr	r2, [r3, #4]
 8000b7a:	f5b2 6f70 	cmp.w	r2, #3840	@ 0xf00
 8000b7e:	d1b7      	bne.n	8000af0 <drill_spi_available+0x8>
 8000b80:	689b      	ldr	r3, [r3, #8]
 8000b82:	f413 7fb8 	tst.w	r3, #368	@ 0x170
 8000b86:	bf0c      	ite	eq
 8000b88:	2001      	moveq	r0, #1
 8000b8a:	2000      	movne	r0, #0
 8000b8c:	e7b1      	b.n	8000af2 <drill_spi_available+0xa>
 8000b8e:	bf00      	nop
 8000b90:	20000018 	.word	0x20000018
 8000b94:	40021000 	.word	0x40021000
 8000b98:	48000400 	.word	0x48000400
 8000b9c:	40003800 	.word	0x40003800

08000ba0 <drill_spi_init>:
 8000ba0:	b538      	push	{r3, r4, r5, lr}
 8000ba2:	4d33      	ldr	r5, [pc, #204]	@ (8000c70 <drill_spi_init+0xd0>)
 8000ba4:	782b      	ldrb	r3, [r5, #0]
 8000ba6:	4604      	mov	r4, r0
 8000ba8:	b11b      	cbz	r3, 8000bb2 <drill_spi_init+0x12>
 8000baa:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}
 8000bae:	f7ff bf9b 	b.w	8000ae8 <drill_spi_available>
 8000bb2:	f7ff fecb 	bl	800094c <spi_clock_ok>
 8000bb6:	2800      	cmp	r0, #0
 8000bb8:	d039      	beq.n	8000c2e <drill_spi_init+0x8e>
 8000bba:	f7ff ff41 	bl	8000a40 <blank>
 8000bbe:	2800      	cmp	r0, #0
 8000bc0:	d035      	beq.n	8000c2e <drill_spi_init+0x8e>
 8000bc2:	4a2c      	ldr	r2, [pc, #176]	@ (8000c74 <drill_spi_init+0xd4>)
 8000bc4:	6d93      	ldr	r3, [r2, #88]	@ 0x58
 8000bc6:	045b      	lsls	r3, r3, #17
 8000bc8:	d430      	bmi.n	8000c2c <drill_spi_init+0x8c>
 8000bca:	4b2b      	ldr	r3, [pc, #172]	@ (8000c78 <drill_spi_init+0xd8>)
 8000bcc:	f44f 5180 	mov.w	r1, #4096	@ 0x1000
 8000bd0:	6199      	str	r1, [r3, #24]
 8000bd2:	f3bf 8f4f 	dsb	sy
 8000bd6:	6859      	ldr	r1, [r3, #4]
 8000bd8:	f421 4170 	bic.w	r1, r1, #61440	@ 0xf000
 8000bdc:	6059      	str	r1, [r3, #4]
 8000bde:	68d9      	ldr	r1, [r3, #12]
 8000be0:	f021 417f 	bic.w	r1, r1, #4278190080	@ 0xff000000
 8000be4:	60d9      	str	r1, [r3, #12]
 8000be6:	6899      	ldr	r1, [r3, #8]
 8000be8:	f021 417f 	bic.w	r1, r1, #4278190080	@ 0xff000000
 8000bec:	f041 412a 	orr.w	r1, r1, #2852126720	@ 0xaa000000
 8000bf0:	6099      	str	r1, [r3, #8]
 8000bf2:	6819      	ldr	r1, [r3, #0]
 8000bf4:	f021 417f 	bic.w	r1, r1, #4278190080	@ 0xff000000
 8000bf8:	f041 4129 	orr.w	r1, r1, #2835349504	@ 0xa9000000
 8000bfc:	6019      	str	r1, [r3, #0]
 8000bfe:	6a59      	ldr	r1, [r3, #36]	@ 0x24
 8000c00:	f3c1 0113 	ubfx	r1, r1, #0, #20
 8000c04:	f041 41aa 	orr.w	r1, r1, #1426063360	@ 0x55000000
 8000c08:	f441 01a0 	orr.w	r1, r1, #5242880	@ 0x500000
 8000c0c:	6259      	str	r1, [r3, #36]	@ 0x24
 8000c0e:	f3bf 8f4f 	dsb	sy
 8000c12:	6d93      	ldr	r3, [r2, #88]	@ 0x58
 8000c14:	f443 4380 	orr.w	r3, r3, #16384	@ 0x4000
 8000c18:	6593      	str	r3, [r2, #88]	@ 0x58
 8000c1a:	6d93      	ldr	r3, [r2, #88]	@ 0x58
 8000c1c:	f3bf 8f4f 	dsb	sy
 8000c20:	6b93      	ldr	r3, [r2, #56]	@ 0x38
 8000c22:	f413 4380 	ands.w	r3, r3, #16384	@ 0x4000
 8000c26:	d003      	beq.n	8000c30 <drill_spi_init+0x90>
 8000c28:	f7ff feac 	bl	8000984 <fault>
 8000c2c:	2000      	movs	r0, #0
 8000c2e:	bd38      	pop	{r3, r4, r5, pc}
 8000c30:	6b91      	ldr	r1, [r2, #56]	@ 0x38
 8000c32:	f441 4180 	orr.w	r1, r1, #16384	@ 0x4000
 8000c36:	6391      	str	r1, [r2, #56]	@ 0x38
 8000c38:	f3bf 8f4f 	dsb	sy
 8000c3c:	6b91      	ldr	r1, [r2, #56]	@ 0x38
 8000c3e:	f421 4180 	bic.w	r1, r1, #16384	@ 0x4000
 8000c42:	6391      	str	r1, [r2, #56]	@ 0x38
 8000c44:	f3bf 8f4f 	dsb	sy
 8000c48:	4a0c      	ldr	r2, [pc, #48]	@ (8000c7c <drill_spi_init+0xdc>)
 8000c4a:	6013      	str	r3, [r2, #0]
 8000c4c:	f44f 6370 	mov.w	r3, #3840	@ 0xf00
 8000c50:	6053      	str	r3, [r2, #4]
 8000c52:	f240 3365 	movw	r3, #869	@ 0x365
 8000c56:	6013      	str	r3, [r2, #0]
 8000c58:	f3bf 8f4f 	dsb	sy
 8000c5c:	2301      	movs	r3, #1
 8000c5e:	e9c5 4401 	strd	r4, r4, [r5, #4]
 8000c62:	702b      	strb	r3, [r5, #0]
 8000c64:	f7ff ff40 	bl	8000ae8 <drill_spi_available>
 8000c68:	2800      	cmp	r0, #0
 8000c6a:	d1e0      	bne.n	8000c2e <drill_spi_init+0x8e>
 8000c6c:	e7dc      	b.n	8000c28 <drill_spi_init+0x88>
 8000c6e:	bf00      	nop
 8000c70:	20000018 	.word	0x20000018
 8000c74:	40021000 	.word	0x40021000
 8000c78:	48000400 	.word	0x48000400
 8000c7c:	40003800 	.word	0x40003800

08000c80 <drill_spi_start>:
 8000c80:	b570      	push	{r4, r5, r6, lr}
 8000c82:	4c1f      	ldr	r4, [pc, #124]	@ (8000d00 <drill_spi_start+0x80>)
 8000c84:	7823      	ldrb	r3, [r4, #0]
 8000c86:	2b01      	cmp	r3, #1
 8000c88:	4605      	mov	r5, r0
 8000c8a:	460e      	mov	r6, r1
 8000c8c:	d001      	beq.n	8000c92 <drill_spi_start+0x12>
 8000c8e:	2b06      	cmp	r3, #6
 8000c90:	d104      	bne.n	8000c9c <drill_spi_start+0x1c>
 8000c92:	f7ff ff29 	bl	8000ae8 <drill_spi_available>
 8000c96:	b918      	cbnz	r0, 8000ca0 <drill_spi_start+0x20>
 8000c98:	f7ff fe74 	bl	8000984 <fault>
 8000c9c:	2000      	movs	r0, #0
 8000c9e:	bd70      	pop	{r4, r5, r6, pc}
 8000ca0:	68a3      	ldr	r3, [r4, #8]
 8000ca2:	1af3      	subs	r3, r6, r3
 8000ca4:	d4fa      	bmi.n	8000c9c <drill_spi_start+0x1c>
 8000ca6:	6863      	ldr	r3, [r4, #4]
 8000ca8:	4a16      	ldr	r2, [pc, #88]	@ (8000d04 <drill_spi_start+0x84>)
 8000caa:	1af3      	subs	r3, r6, r3
 8000cac:	3b02      	subs	r3, #2
 8000cae:	4293      	cmp	r3, r2
 8000cb0:	d8f4      	bhi.n	8000c9c <drill_spi_start+0x1c>
 8000cb2:	2300      	movs	r3, #0
 8000cb4:	4619      	mov	r1, r3
 8000cb6:	fa45 f203 	asr.w	r2, r5, r3
 8000cba:	3301      	adds	r3, #1
 8000cbc:	f002 0201 	and.w	r2, r2, #1
 8000cc0:	2b10      	cmp	r3, #16
 8000cc2:	4608      	mov	r0, r1
 8000cc4:	ea81 0102 	eor.w	r1, r1, r2
 8000cc8:	d1f5      	bne.n	8000cb6 <drill_spi_start+0x36>
 8000cca:	4282      	cmp	r2, r0
 8000ccc:	d1e6      	bne.n	8000c9c <drill_spi_start+0x1c>
 8000cce:	2201      	movs	r2, #1
 8000cd0:	480d      	ldr	r0, [pc, #52]	@ (8000d08 <drill_spi_start+0x88>)
 8000cd2:	4611      	mov	r1, r2
 8000cd4:	f7ff fe98 	bl	8000a08 <pin.constprop.0>
 8000cd8:	2800      	cmp	r0, #0
 8000cda:	d0e0      	beq.n	8000c9e <drill_spi_start+0x1e>
 8000cdc:	4b0b      	ldr	r3, [pc, #44]	@ (8000d0c <drill_spi_start+0x8c>)
 8000cde:	689b      	ldr	r3, [r3, #8]
 8000ce0:	f013 0381 	ands.w	r3, r3, #129	@ 0x81
 8000ce4:	d1d8      	bne.n	8000c98 <drill_spi_start+0x18>
 8000ce6:	8063      	strh	r3, [r4, #2]
 8000ce8:	2302      	movs	r3, #2
 8000cea:	7023      	strb	r3, [r4, #0]
 8000cec:	4b08      	ldr	r3, [pc, #32]	@ (8000d10 <drill_spi_start+0x90>)
 8000cee:	81a5      	strh	r5, [r4, #12]
 8000cf0:	f04f 5280 	mov.w	r2, #268435456	@ 0x10000000
 8000cf4:	60a6      	str	r6, [r4, #8]
 8000cf6:	6126      	str	r6, [r4, #16]
 8000cf8:	619a      	str	r2, [r3, #24]
 8000cfa:	f3bf 8f4f 	dsb	sy
 8000cfe:	e7ce      	b.n	8000c9e <drill_spi_start+0x1e>
 8000d00:	20000018 	.word	0x20000018
 8000d04:	7ffffffd 	.word	0x7ffffffd
 8000d08:	48001400 	.word	0x48001400
 8000d0c:	40003800 	.word	0x40003800
 8000d10:	48000400 	.word	0x48000400

08000d14 <drill_spi_poll>:
 8000d14:	b570      	push	{r4, r5, r6, lr}
 8000d16:	4c25      	ldr	r4, [pc, #148]	@ (8000dac <drill_spi_poll+0x98>)
 8000d18:	7826      	ldrb	r6, [r4, #0]
 8000d1a:	2e01      	cmp	r6, #1
 8000d1c:	4605      	mov	r5, r0
 8000d1e:	d928      	bls.n	8000d72 <drill_spi_poll+0x5e>
 8000d20:	2e07      	cmp	r6, #7
 8000d22:	d026      	beq.n	8000d72 <drill_spi_poll+0x5e>
 8000d24:	f7ff fee0 	bl	8000ae8 <drill_spi_available>
 8000d28:	b910      	cbnz	r0, 8000d30 <drill_spi_poll+0x1c>
 8000d2a:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}
 8000d2e:	e629      	b.n	8000984 <fault>
 8000d30:	2201      	movs	r2, #1
 8000d32:	481f      	ldr	r0, [pc, #124]	@ (8000db0 <drill_spi_poll+0x9c>)
 8000d34:	4611      	mov	r1, r2
 8000d36:	f7ff fe67 	bl	8000a08 <pin.constprop.0>
 8000d3a:	2800      	cmp	r0, #0
 8000d3c:	d0f5      	beq.n	8000d2a <drill_spi_poll+0x16>
 8000d3e:	68a3      	ldr	r3, [r4, #8]
 8000d40:	1aeb      	subs	r3, r5, r3
 8000d42:	2b0a      	cmp	r3, #10
 8000d44:	d8f1      	bhi.n	8000d2a <drill_spi_poll+0x16>
 8000d46:	6923      	ldr	r3, [r4, #16]
 8000d48:	1aeb      	subs	r3, r5, r3
 8000d4a:	2b64      	cmp	r3, #100	@ 0x64
 8000d4c:	d8ed      	bhi.n	8000d2a <drill_spi_poll+0x16>
 8000d4e:	3e02      	subs	r6, #2
 8000d50:	60a5      	str	r5, [r4, #8]
 8000d52:	2e03      	cmp	r6, #3
 8000d54:	d80d      	bhi.n	8000d72 <drill_spi_poll+0x5e>
 8000d56:	e8df f006 	tbb	[pc, r6]
 8000d5a:	0d02      	.short	0x0d02
 8000d5c:	1c15      	.short	0x1c15
 8000d5e:	2b01      	cmp	r3, #1
 8000d60:	d907      	bls.n	8000d72 <drill_spi_poll+0x5e>
 8000d62:	4b14      	ldr	r3, [pc, #80]	@ (8000db4 <drill_spi_poll+0xa0>)
 8000d64:	689a      	ldr	r2, [r3, #8]
 8000d66:	0791      	lsls	r1, r2, #30
 8000d68:	d503      	bpl.n	8000d72 <drill_spi_poll+0x5e>
 8000d6a:	89a2      	ldrh	r2, [r4, #12]
 8000d6c:	819a      	strh	r2, [r3, #12]
 8000d6e:	2303      	movs	r3, #3
 8000d70:	7023      	strb	r3, [r4, #0]
 8000d72:	bd70      	pop	{r4, r5, r6, pc}
 8000d74:	4b0f      	ldr	r3, [pc, #60]	@ (8000db4 <drill_spi_poll+0xa0>)
 8000d76:	689a      	ldr	r2, [r3, #8]
 8000d78:	07d2      	lsls	r2, r2, #31
 8000d7a:	d5fa      	bpl.n	8000d72 <drill_spi_poll+0x5e>
 8000d7c:	899b      	ldrh	r3, [r3, #12]
 8000d7e:	8063      	strh	r3, [r4, #2]
 8000d80:	2304      	movs	r3, #4
 8000d82:	e7f5      	b.n	8000d70 <drill_spi_poll+0x5c>
 8000d84:	4b0b      	ldr	r3, [pc, #44]	@ (8000db4 <drill_spi_poll+0xa0>)
 8000d86:	689b      	ldr	r3, [r3, #8]
 8000d88:	061b      	lsls	r3, r3, #24
 8000d8a:	d4f2      	bmi.n	8000d72 <drill_spi_poll+0x5e>
 8000d8c:	6165      	str	r5, [r4, #20]
 8000d8e:	2305      	movs	r3, #5
 8000d90:	e7ee      	b.n	8000d70 <drill_spi_poll+0x5c>
 8000d92:	6963      	ldr	r3, [r4, #20]
 8000d94:	1aeb      	subs	r3, r5, r3
 8000d96:	2b01      	cmp	r3, #1
 8000d98:	d9eb      	bls.n	8000d72 <drill_spi_poll+0x5e>
 8000d9a:	4b07      	ldr	r3, [pc, #28]	@ (8000db8 <drill_spi_poll+0xa4>)
 8000d9c:	f44f 5280 	mov.w	r2, #4096	@ 0x1000
 8000da0:	619a      	str	r2, [r3, #24]
 8000da2:	f3bf 8f4f 	dsb	sy
 8000da6:	2306      	movs	r3, #6
 8000da8:	6065      	str	r5, [r4, #4]
 8000daa:	e7e1      	b.n	8000d70 <drill_spi_poll+0x5c>
 8000dac:	20000018 	.word	0x20000018
 8000db0:	48001400 	.word	0x48001400
 8000db4:	40003800 	.word	0x40003800
 8000db8:	48000400 	.word	0x48000400

08000dbc <drill_spi_get>:
 8000dbc:	b570      	push	{r4, r5, r6, lr}
 8000dbe:	4606      	mov	r6, r0
 8000dc0:	460d      	mov	r5, r1
 8000dc2:	b118      	cbz	r0, 8000dcc <drill_spi_get+0x10>
 8000dc4:	4c0d      	ldr	r4, [pc, #52]	@ (8000dfc <drill_spi_get+0x40>)
 8000dc6:	7823      	ldrb	r3, [r4, #0]
 8000dc8:	2b06      	cmp	r3, #6
 8000dca:	d001      	beq.n	8000dd0 <drill_spi_get+0x14>
 8000dcc:	2000      	movs	r0, #0
 8000dce:	bd70      	pop	{r4, r5, r6, pc}
 8000dd0:	f7ff fe8a 	bl	8000ae8 <drill_spi_available>
 8000dd4:	b170      	cbz	r0, 8000df4 <drill_spi_get+0x38>
 8000dd6:	68a3      	ldr	r3, [r4, #8]
 8000dd8:	1aeb      	subs	r3, r5, r3
 8000dda:	2b0a      	cmp	r3, #10
 8000ddc:	d80a      	bhi.n	8000df4 <drill_spi_get+0x38>
 8000dde:	6923      	ldr	r3, [r4, #16]
 8000de0:	1aed      	subs	r5, r5, r3
 8000de2:	2d64      	cmp	r5, #100	@ 0x64
 8000de4:	d806      	bhi.n	8000df4 <drill_spi_get+0x38>
 8000de6:	8863      	ldrh	r3, [r4, #2]
 8000de8:	8033      	strh	r3, [r6, #0]
 8000dea:	2300      	movs	r3, #0
 8000dec:	8063      	strh	r3, [r4, #2]
 8000dee:	2301      	movs	r3, #1
 8000df0:	7023      	strb	r3, [r4, #0]
 8000df2:	e7ec      	b.n	8000dce <drill_spi_get+0x12>
 8000df4:	f7ff fdc6 	bl	8000984 <fault>
 8000df8:	e7e8      	b.n	8000dcc <drill_spi_get+0x10>
 8000dfa:	bf00      	nop
 8000dfc:	20000018 	.word	0x20000018

08000e00 <drill_spi_failed>:
 8000e00:	4b02      	ldr	r3, [pc, #8]	@ (8000e0c <drill_spi_failed+0xc>)
 8000e02:	7818      	ldrb	r0, [r3, #0]
 8000e04:	1fc3      	subs	r3, r0, #7
 8000e06:	4258      	negs	r0, r3
 8000e08:	4158      	adcs	r0, r3
 8000e0a:	4770      	bx	lr
 8000e0c:	20000018 	.word	0x20000018

08000e10 <drill_spi_active>:
 8000e10:	4b04      	ldr	r3, [pc, #16]	@ (8000e24 <drill_spi_active+0x14>)
 8000e12:	7818      	ldrb	r0, [r3, #0]
 8000e14:	3802      	subs	r0, #2
 8000e16:	b2c0      	uxtb	r0, r0
 8000e18:	2804      	cmp	r0, #4
 8000e1a:	bf8c      	ite	hi
 8000e1c:	2000      	movhi	r0, #0
 8000e1e:	2001      	movls	r0, #1
 8000e20:	4770      	bx	lr
 8000e22:	bf00      	nop
 8000e24:	20000018 	.word	0x20000018

08000e28 <drill_spi_abort>:
 8000e28:	4b02      	ldr	r3, [pc, #8]	@ (8000e34 <drill_spi_abort+0xc>)
 8000e2a:	781b      	ldrb	r3, [r3, #0]
 8000e2c:	b103      	cbz	r3, 8000e30 <drill_spi_abort+0x8>
 8000e2e:	e5a9      	b.n	8000984 <fault>
 8000e30:	4770      	bx	lr
 8000e32:	bf00      	nop
 8000e34:	20000018 	.word	0x20000018

08000e38 <timebase_clock_ok>:
 8000e38:	4b09      	ldr	r3, [pc, #36]	@ (8000e60 <timebase_clock_ok+0x28>)
 8000e3a:	681a      	ldr	r2, [r3, #0]
 8000e3c:	f402 62a0 	and.w	r2, r2, #1280	@ 0x500
 8000e40:	f5b2 6fa0 	cmp.w	r2, #1280	@ 0x500
 8000e44:	d001      	beq.n	8000e4a <timebase_clock_ok+0x12>
 8000e46:	2000      	movs	r0, #0
 8000e48:	4770      	bx	lr
 8000e4a:	681a      	ldr	r2, [r3, #0]
 8000e4c:	f412 2fa0 	tst.w	r2, #327680	@ 0x50000
 8000e50:	d1f9      	bne.n	8000e46 <timebase_clock_ok+0xe>
 8000e52:	6898      	ldr	r0, [r3, #8]
 8000e54:	f3c0 000a 	ubfx	r0, r0, #0, #11
 8000e58:	1f43      	subs	r3, r0, #5
 8000e5a:	4258      	negs	r0, r3
 8000e5c:	4158      	adcs	r0, r3
 8000e5e:	4770      	bx	lr
 8000e60:	40021000 	.word	0x40021000

08000e64 <timebase_available>:
 8000e64:	b508      	push	{r3, lr}
 8000e66:	4b1f      	ldr	r3, [pc, #124]	@ (8000ee4 <timebase_available+0x80>)
 8000e68:	7818      	ldrb	r0, [r3, #0]
 8000e6a:	b138      	cbz	r0, 8000e7c <timebase_available+0x18>
 8000e6c:	f7ff ffe4 	bl	8000e38 <timebase_clock_ok>
 8000e70:	b120      	cbz	r0, 8000e7c <timebase_available+0x18>
 8000e72:	4b1d      	ldr	r3, [pc, #116]	@ (8000ee8 <timebase_available+0x84>)
 8000e74:	6d9a      	ldr	r2, [r3, #88]	@ 0x58
 8000e76:	07d1      	lsls	r1, r2, #31
 8000e78:	d401      	bmi.n	8000e7e <timebase_available+0x1a>
 8000e7a:	2000      	movs	r0, #0
 8000e7c:	bd08      	pop	{r3, pc}
 8000e7e:	6b9b      	ldr	r3, [r3, #56]	@ 0x38
 8000e80:	07da      	lsls	r2, r3, #31
 8000e82:	d4fa      	bmi.n	8000e7a <timebase_available+0x16>
 8000e84:	f04f 23e0 	mov.w	r3, #3758153728	@ 0xe000e000
 8000e88:	6918      	ldr	r0, [r3, #16]
 8000e8a:	f04f 4380 	mov.w	r3, #1073741824	@ 0x40000000
 8000e8e:	681a      	ldr	r2, [r3, #0]
 8000e90:	2a01      	cmp	r2, #1
 8000e92:	d1f2      	bne.n	8000e7a <timebase_available+0x16>
 8000e94:	685a      	ldr	r2, [r3, #4]
 8000e96:	2a00      	cmp	r2, #0
 8000e98:	d1ef      	bne.n	8000e7a <timebase_available+0x16>
 8000e9a:	689a      	ldr	r2, [r3, #8]
 8000e9c:	2a00      	cmp	r2, #0
 8000e9e:	d1ec      	bne.n	8000e7a <timebase_available+0x16>
 8000ea0:	68da      	ldr	r2, [r3, #12]
 8000ea2:	2a00      	cmp	r2, #0
 8000ea4:	d1e9      	bne.n	8000e7a <timebase_available+0x16>
 8000ea6:	6a1a      	ldr	r2, [r3, #32]
 8000ea8:	2a00      	cmp	r2, #0
 8000eaa:	d1e6      	bne.n	8000e7a <timebase_available+0x16>
 8000eac:	6a9b      	ldr	r3, [r3, #40]	@ 0x28
 8000eae:	2b0f      	cmp	r3, #15
 8000eb0:	d1e3      	bne.n	8000e7a <timebase_available+0x16>
 8000eb2:	f04f 4380 	mov.w	r3, #1073741824	@ 0x40000000
 8000eb6:	6ada      	ldr	r2, [r3, #44]	@ 0x2c
 8000eb8:	3201      	adds	r2, #1
 8000eba:	d1de      	bne.n	8000e7a <timebase_available+0x16>
 8000ebc:	699a      	ldr	r2, [r3, #24]
 8000ebe:	2a00      	cmp	r2, #0
 8000ec0:	d1db      	bne.n	8000e7a <timebase_available+0x16>
 8000ec2:	69db      	ldr	r3, [r3, #28]
 8000ec4:	2b00      	cmp	r3, #0
 8000ec6:	d1d8      	bne.n	8000e7a <timebase_available+0x16>
 8000ec8:	f04f 23e0 	mov.w	r3, #3758153728	@ 0xe000e000
 8000ecc:	695a      	ldr	r2, [r3, #20]
 8000ece:	f643 637f 	movw	r3, #15999	@ 0x3e7f
 8000ed2:	429a      	cmp	r2, r3
 8000ed4:	d1d1      	bne.n	8000e7a <timebase_available+0x16>
 8000ed6:	f420 3080 	bic.w	r0, r0, #65536	@ 0x10000
 8000eda:	1fc3      	subs	r3, r0, #7
 8000edc:	4258      	negs	r0, r3
 8000ede:	4158      	adcs	r0, r3
 8000ee0:	e7cc      	b.n	8000e7c <timebase_available+0x18>
 8000ee2:	bf00      	nop
 8000ee4:	20000030 	.word	0x20000030
 8000ee8:	40021000 	.word	0x40021000

08000eec <drill_timebase_init>:
 8000eec:	b538      	push	{r3, r4, r5, lr}
 8000eee:	4c28      	ldr	r4, [pc, #160]	@ (8000f90 <drill_timebase_init+0xa4>)
 8000ef0:	7823      	ldrb	r3, [r4, #0]
 8000ef2:	b113      	cbz	r3, 8000efa <drill_timebase_init+0xe>
 8000ef4:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}
 8000ef8:	e7b4      	b.n	8000e64 <timebase_available>
 8000efa:	f7ff ff9d 	bl	8000e38 <timebase_clock_ok>
 8000efe:	2800      	cmp	r0, #0
 8000f00:	d044      	beq.n	8000f8c <drill_timebase_init+0xa0>
 8000f02:	f7ff fc53 	bl	80007ac <drill_pwm_stage_available>
 8000f06:	2800      	cmp	r0, #0
 8000f08:	d040      	beq.n	8000f8c <drill_timebase_init+0xa0>
 8000f0a:	4a22      	ldr	r2, [pc, #136]	@ (8000f94 <drill_timebase_init+0xa8>)
 8000f0c:	6d93      	ldr	r3, [r2, #88]	@ 0x58
 8000f0e:	07d9      	lsls	r1, r3, #31
 8000f10:	d43c      	bmi.n	8000f8c <drill_timebase_init+0xa0>
 8000f12:	f04f 20e0 	mov.w	r0, #3758153728	@ 0xe000e000
 8000f16:	6903      	ldr	r3, [r0, #16]
 8000f18:	07db      	lsls	r3, r3, #31
 8000f1a:	d437      	bmi.n	8000f8c <drill_timebase_init+0xa0>
 8000f1c:	6b93      	ldr	r3, [r2, #56]	@ 0x38
 8000f1e:	f013 0301 	ands.w	r3, r3, #1
 8000f22:	d133      	bne.n	8000f8c <drill_timebase_init+0xa0>
 8000f24:	6d91      	ldr	r1, [r2, #88]	@ 0x58
 8000f26:	f041 0101 	orr.w	r1, r1, #1
 8000f2a:	6591      	str	r1, [r2, #88]	@ 0x58
 8000f2c:	6d91      	ldr	r1, [r2, #88]	@ 0x58
 8000f2e:	f3bf 8f4f 	dsb	sy
 8000f32:	6b91      	ldr	r1, [r2, #56]	@ 0x38
 8000f34:	f041 0101 	orr.w	r1, r1, #1
 8000f38:	6391      	str	r1, [r2, #56]	@ 0x38
 8000f3a:	f3bf 8f4f 	dsb	sy
 8000f3e:	6b91      	ldr	r1, [r2, #56]	@ 0x38
 8000f40:	f021 0101 	bic.w	r1, r1, #1
 8000f44:	6391      	str	r1, [r2, #56]	@ 0x38
 8000f46:	f3bf 8f4f 	dsb	sy
 8000f4a:	f04f 4280 	mov.w	r2, #1073741824	@ 0x40000000
 8000f4e:	210f      	movs	r1, #15
 8000f50:	6013      	str	r3, [r2, #0]
 8000f52:	6053      	str	r3, [r2, #4]
 8000f54:	6093      	str	r3, [r2, #8]
 8000f56:	60d3      	str	r3, [r2, #12]
 8000f58:	6213      	str	r3, [r2, #32]
 8000f5a:	6193      	str	r3, [r2, #24]
 8000f5c:	61d3      	str	r3, [r2, #28]
 8000f5e:	6291      	str	r1, [r2, #40]	@ 0x28
 8000f60:	f04f 31ff 	mov.w	r1, #4294967295	@ 0xffffffff
 8000f64:	62d1      	str	r1, [r2, #44]	@ 0x2c
 8000f66:	2101      	movs	r1, #1
 8000f68:	6253      	str	r3, [r2, #36]	@ 0x24
 8000f6a:	6151      	str	r1, [r2, #20]
 8000f6c:	6113      	str	r3, [r2, #16]
 8000f6e:	6011      	str	r1, [r2, #0]
 8000f70:	f643 627f 	movw	r2, #15999	@ 0x3e7f
 8000f74:	6142      	str	r2, [r0, #20]
 8000f76:	4a08      	ldr	r2, [pc, #32]	@ (8000f98 <drill_timebase_init+0xac>)
 8000f78:	25f0      	movs	r5, #240	@ 0xf0
 8000f7a:	f882 5023 	strb.w	r5, [r2, #35]	@ 0x23
 8000f7e:	6183      	str	r3, [r0, #24]
 8000f80:	2307      	movs	r3, #7
 8000f82:	6103      	str	r3, [r0, #16]
 8000f84:	f3bf 8f4f 	dsb	sy
 8000f88:	7021      	strb	r1, [r4, #0]
 8000f8a:	e7b3      	b.n	8000ef4 <drill_timebase_init+0x8>
 8000f8c:	2000      	movs	r0, #0
 8000f8e:	bd38      	pop	{r3, r4, r5, pc}
 8000f90:	20000030 	.word	0x20000030
 8000f94:	40021000 	.word	0x40021000
 8000f98:	e000ed00 	.word	0xe000ed00

08000f9c <drill_timebase_get>:
 8000f9c:	b510      	push	{r4, lr}
 8000f9e:	4604      	mov	r4, r0
 8000fa0:	b130      	cbz	r0, 8000fb0 <drill_timebase_get+0x14>
 8000fa2:	f7ff ff5f 	bl	8000e64 <timebase_available>
 8000fa6:	b118      	cbz	r0, 8000fb0 <drill_timebase_get+0x14>
 8000fa8:	f04f 4380 	mov.w	r3, #1073741824	@ 0x40000000
 8000fac:	6a5b      	ldr	r3, [r3, #36]	@ 0x24
 8000fae:	6023      	str	r3, [r4, #0]
 8000fb0:	bd10      	pop	{r4, pc}

08000fb2 <SysTick_Handler>:
 8000fb2:	4a02      	ldr	r2, [pc, #8]	@ (8000fbc <SysTick_Handler+0xa>)
 8000fb4:	6853      	ldr	r3, [r2, #4]
 8000fb6:	3301      	adds	r3, #1
 8000fb8:	6053      	str	r3, [r2, #4]
 8000fba:	4770      	bx	lr
 8000fbc:	20000030 	.word	0x20000030

08000fc0 <valid>:
 8000fc0:	b908      	cbnz	r0, 8000fc6 <valid+0x6>
 8000fc2:	2000      	movs	r0, #0
 8000fc4:	4770      	bx	lr
 8000fc6:	6843      	ldr	r3, [r0, #4]
 8000fc8:	2b00      	cmp	r3, #0
 8000fca:	d0fa      	beq.n	8000fc2 <valid+0x2>
 8000fcc:	6883      	ldr	r3, [r0, #8]
 8000fce:	2b00      	cmp	r3, #0
 8000fd0:	d0f7      	beq.n	8000fc2 <valid+0x2>
 8000fd2:	68c3      	ldr	r3, [r0, #12]
 8000fd4:	2b00      	cmp	r3, #0
 8000fd6:	d0f4      	beq.n	8000fc2 <valid+0x2>
 8000fd8:	6900      	ldr	r0, [r0, #16]
 8000fda:	3800      	subs	r0, #0
 8000fdc:	bf18      	it	ne
 8000fde:	2001      	movne	r0, #1
 8000fe0:	4770      	bx	lr

08000fe2 <stop>:
 8000fe2:	b570      	push	{r4, r5, r6, lr}
 8000fe4:	4604      	mov	r4, r0
 8000fe6:	460d      	mov	r5, r1
 8000fe8:	4616      	mov	r6, r2
 8000fea:	b148      	cbz	r0, 8001000 <stop+0x1e>
 8000fec:	6883      	ldr	r3, [r0, #8]
 8000fee:	b113      	cbz	r3, 8000ff6 <stop+0x14>
 8000ff0:	6800      	ldr	r0, [r0, #0]
 8000ff2:	2101      	movs	r1, #1
 8000ff4:	4798      	blx	r3
 8000ff6:	68e3      	ldr	r3, [r4, #12]
 8000ff8:	b113      	cbz	r3, 8001000 <stop+0x1e>
 8000ffa:	6820      	ldr	r0, [r4, #0]
 8000ffc:	2100      	movs	r1, #0
 8000ffe:	4798      	blx	r3
 8001000:	b10d      	cbz	r5, 8001006 <stop+0x24>
 8001002:	2300      	movs	r3, #0
 8001004:	716b      	strb	r3, [r5, #5]
 8001006:	4630      	mov	r0, r6
 8001008:	bd70      	pop	{r4, r5, r6, pc}

0800100a <drv8316_frame>:
 800100a:	b510      	push	{r4, lr}
 800100c:	b90b      	cbnz	r3, 8001012 <drv8316_frame+0x8>
 800100e:	2000      	movs	r0, #0
 8001010:	bd10      	pop	{r4, pc}
 8001012:	293f      	cmp	r1, #63	@ 0x3f
 8001014:	d8fb      	bhi.n	800100e <drv8316_frame+0x4>
 8001016:	ea42 2241 	orr.w	r2, r2, r1, lsl #9
 800101a:	ea42 32c0 	orr.w	r2, r2, r0, lsl #15
 800101e:	2100      	movs	r1, #0
 8001020:	b292      	uxth	r2, r2
 8001022:	4608      	mov	r0, r1
 8001024:	fa42 f400 	asr.w	r4, r2, r0
 8001028:	3001      	adds	r0, #1
 800102a:	f004 0401 	and.w	r4, r4, #1
 800102e:	2810      	cmp	r0, #16
 8001030:	ea81 0104 	eor.w	r1, r1, r4
 8001034:	d1f6      	bne.n	8001024 <drv8316_frame+0x1a>
 8001036:	ea42 2201 	orr.w	r2, r2, r1, lsl #8
 800103a:	801a      	strh	r2, [r3, #0]
 800103c:	2001      	movs	r0, #1
 800103e:	e7e7      	b.n	8001010 <drv8316_frame+0x6>

08001040 <xfer>:
 8001040:	b573      	push	{r0, r1, r4, r5, r6, lr}
 8001042:	461e      	mov	r6, r3
 8001044:	2300      	movs	r3, #0
 8001046:	4605      	mov	r5, r0
 8001048:	460c      	mov	r4, r1
 800104a:	4610      	mov	r0, r2
 800104c:	f8ad 3004 	strh.w	r3, [sp, #4]
 8001050:	f8ad 3006 	strh.w	r3, [sp, #6]
 8001054:	f89d 2018 	ldrb.w	r2, [sp, #24]
 8001058:	ab01      	add	r3, sp, #4
 800105a:	4631      	mov	r1, r6
 800105c:	f7ff ffd5 	bl	800100a <drv8316_frame>
 8001060:	b1e8      	cbz	r0, 800109e <xfer+0x5e>
 8001062:	7126      	strb	r6, [r4, #4]
 8001064:	686b      	ldr	r3, [r5, #4]
 8001066:	f8bd 1004 	ldrh.w	r1, [sp, #4]
 800106a:	6828      	ldr	r0, [r5, #0]
 800106c:	f10d 0206 	add.w	r2, sp, #6
 8001070:	4798      	blx	r3
 8001072:	b1b0      	cbz	r0, 80010a2 <xfer+0x62>
 8001074:	692b      	ldr	r3, [r5, #16]
 8001076:	6828      	ldr	r0, [r5, #0]
 8001078:	2101      	movs	r1, #1
 800107a:	4798      	blx	r3
 800107c:	f8bd 3006 	ldrh.w	r3, [sp, #6]
 8001080:	0a1a      	lsrs	r2, r3, #8
 8001082:	70e2      	strb	r2, [r4, #3]
 8001084:	9a07      	ldr	r2, [sp, #28]
 8001086:	7013      	strb	r3, [r2, #0]
 8001088:	7963      	ldrb	r3, [r4, #5]
 800108a:	78e0      	ldrb	r0, [r4, #3]
 800108c:	b10b      	cbz	r3, 8001092 <xfer+0x52>
 800108e:	0703      	lsls	r3, r0, #28
 8001090:	d509      	bpl.n	80010a6 <xfer+0x66>
 8001092:	f010 00f7 	ands.w	r0, r0, #247	@ 0xf7
 8001096:	bf18      	it	ne
 8001098:	2003      	movne	r0, #3
 800109a:	b002      	add	sp, #8
 800109c:	bd70      	pop	{r4, r5, r6, pc}
 800109e:	2001      	movs	r0, #1
 80010a0:	e7fb      	b.n	800109a <xfer+0x5a>
 80010a2:	2002      	movs	r0, #2
 80010a4:	e7f9      	b.n	800109a <xfer+0x5a>
 80010a6:	2003      	movs	r0, #3
 80010a8:	e7f7      	b.n	800109a <xfer+0x5a>

080010aa <read_status>:
 80010aa:	e92d 43f7 	stmdb	sp!, {r0, r1, r2, r4, r5, r6, r7, r8, r9, lr}
 80010ae:	2400      	movs	r4, #0
 80010b0:	4681      	mov	r9, r0
 80010b2:	460d      	mov	r5, r1
 80010b4:	4617      	mov	r7, r2
 80010b6:	460e      	mov	r6, r1
 80010b8:	46a0      	mov	r8, r4
 80010ba:	e9cd 8600 	strd	r8, r6, [sp]
 80010be:	b2e3      	uxtb	r3, r4
 80010c0:	2201      	movs	r2, #1
 80010c2:	4629      	mov	r1, r5
 80010c4:	4648      	mov	r0, r9
 80010c6:	f7ff ffbb 	bl	8001040 <xfer>
 80010ca:	b980      	cbnz	r0, 80010ee <read_status+0x44>
 80010cc:	7832      	ldrb	r2, [r6, #0]
 80010ce:	4284      	cmp	r4, r0
 80010d0:	bf14      	ite	ne
 80010d2:	23ff      	movne	r3, #255	@ 0xff
 80010d4:	23f7      	moveq	r3, #247	@ 0xf7
 80010d6:	421a      	tst	r2, r3
 80010d8:	d108      	bne.n	80010ec <read_status+0x42>
 80010da:	3401      	adds	r4, #1
 80010dc:	2c03      	cmp	r4, #3
 80010de:	f106 0601 	add.w	r6, r6, #1
 80010e2:	d1ea      	bne.n	80010ba <read_status+0x10>
 80010e4:	b11f      	cbz	r7, 80010ee <read_status+0x44>
 80010e6:	782b      	ldrb	r3, [r5, #0]
 80010e8:	071b      	lsls	r3, r3, #28
 80010ea:	d403      	bmi.n	80010f4 <read_status+0x4a>
 80010ec:	2003      	movs	r0, #3
 80010ee:	b003      	add	sp, #12
 80010f0:	e8bd 83f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, pc}
 80010f4:	78eb      	ldrb	r3, [r5, #3]
 80010f6:	f013 0f08 	tst.w	r3, #8
 80010fa:	bf08      	it	eq
 80010fc:	2003      	moveq	r0, #3
 80010fe:	e7f6      	b.n	80010ee <read_status+0x44>

08001100 <drv8316_configure_off>:
 8001100:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
 8001104:	b085      	sub	sp, #20
 8001106:	4604      	mov	r4, r0
 8001108:	460d      	mov	r5, r1
 800110a:	f7ff ff59 	bl	8000fc0 <valid>
 800110e:	b100      	cbz	r0, 8001112 <drv8316_configure_off+0x12>
 8001110:	b931      	cbnz	r1, 8001120 <drv8316_configure_off+0x20>
 8001112:	2201      	movs	r2, #1
 8001114:	4629      	mov	r1, r5
 8001116:	4620      	mov	r0, r4
 8001118:	b005      	add	sp, #20
 800111a:	e8bd 4ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
 800111e:	e760      	b.n	8000fe2 <stop>
 8001120:	68a3      	ldr	r3, [r4, #8]
 8001122:	6820      	ldr	r0, [r4, #0]
 8001124:	2101      	movs	r1, #1
 8001126:	4798      	blx	r3
 8001128:	2206      	movs	r2, #6
 800112a:	2100      	movs	r1, #0
 800112c:	4628      	mov	r0, r5
 800112e:	f7ff f9d6 	bl	80004de <memset>
 8001132:	68e3      	ldr	r3, [r4, #12]
 8001134:	6820      	ldr	r0, [r4, #0]
 8001136:	2100      	movs	r1, #0
 8001138:	4798      	blx	r3
 800113a:	6923      	ldr	r3, [r4, #16]
 800113c:	6820      	ldr	r0, [r4, #0]
 800113e:	f44f 717a 	mov.w	r1, #1000	@ 0x3e8
 8001142:	4798      	blx	r3
 8001144:	68e3      	ldr	r3, [r4, #12]
 8001146:	6820      	ldr	r0, [r4, #0]
 8001148:	2101      	movs	r1, #1
 800114a:	4798      	blx	r3
 800114c:	6923      	ldr	r3, [r4, #16]
 800114e:	6820      	ldr	r0, [r4, #0]
 8001150:	f44f 61fa 	mov.w	r1, #2000	@ 0x7d0
 8001154:	4798      	blx	r3
 8001156:	2200      	movs	r2, #0
 8001158:	4629      	mov	r1, r5
 800115a:	4620      	mov	r0, r4
 800115c:	f7ff ffa5 	bl	80010aa <read_status>
 8001160:	4602      	mov	r2, r0
 8001162:	2800      	cmp	r0, #0
 8001164:	d1d6      	bne.n	8001114 <drv8316_configure_off+0x14>
 8001166:	f8df 8080 	ldr.w	r8, [pc, #128]	@ 80011e8 <drv8316_configure_off+0xe8>
 800116a:	4606      	mov	r6, r0
 800116c:	4682      	mov	sl, r0
 800116e:	f10d 090f 	add.w	r9, sp, #15
 8001172:	f898 b000 	ldrb.w	fp, [r8]
 8001176:	f898 7001 	ldrb.w	r7, [r8, #1]
 800117a:	f88d a00f 	strb.w	sl, [sp, #15]
 800117e:	2200      	movs	r2, #0
 8001180:	e9cd 7900 	strd	r7, r9, [sp]
 8001184:	465b      	mov	r3, fp
 8001186:	4629      	mov	r1, r5
 8001188:	4620      	mov	r0, r4
 800118a:	f7ff ff59 	bl	8001040 <xfer>
 800118e:	4602      	mov	r2, r0
 8001190:	2800      	cmp	r0, #0
 8001192:	d1bf      	bne.n	8001114 <drv8316_configure_off+0x14>
 8001194:	e9cd 0900 	strd	r0, r9, [sp]
 8001198:	2201      	movs	r2, #1
 800119a:	465b      	mov	r3, fp
 800119c:	4629      	mov	r1, r5
 800119e:	4620      	mov	r0, r4
 80011a0:	f7ff ff4e 	bl	8001040 <xfer>
 80011a4:	4602      	mov	r2, r0
 80011a6:	2800      	cmp	r0, #0
 80011a8:	d1b4      	bne.n	8001114 <drv8316_configure_off+0x14>
 80011aa:	f007 03fe 	and.w	r3, r7, #254	@ 0xfe
 80011ae:	f1bb 0f04 	cmp.w	fp, #4
 80011b2:	bf08      	it	eq
 80011b4:	461f      	moveq	r7, r3
 80011b6:	f89d 300f 	ldrb.w	r3, [sp, #15]
 80011ba:	42bb      	cmp	r3, r7
 80011bc:	d111      	bne.n	80011e2 <drv8316_configure_off+0xe2>
 80011be:	3601      	adds	r6, #1
 80011c0:	2e08      	cmp	r6, #8
 80011c2:	f108 0802 	add.w	r8, r8, #2
 80011c6:	d1d4      	bne.n	8001172 <drv8316_configure_off+0x72>
 80011c8:	2201      	movs	r2, #1
 80011ca:	4629      	mov	r1, r5
 80011cc:	4620      	mov	r0, r4
 80011ce:	f7ff ff6c 	bl	80010aa <read_status>
 80011d2:	4602      	mov	r2, r0
 80011d4:	2800      	cmp	r0, #0
 80011d6:	d19d      	bne.n	8001114 <drv8316_configure_off+0x14>
 80011d8:	2301      	movs	r3, #1
 80011da:	716b      	strb	r3, [r5, #5]
 80011dc:	b005      	add	sp, #20
 80011de:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 80011e2:	2204      	movs	r2, #4
 80011e4:	e796      	b.n	8001114 <drv8316_configure_off+0x14>
 80011e6:	bf00      	nop
 80011e8:	08002360 	.word	0x08002360

080011ec <drv8316_poll_faults>:
 80011ec:	b538      	push	{r3, r4, r5, lr}
 80011ee:	4605      	mov	r5, r0
 80011f0:	460c      	mov	r4, r1
 80011f2:	f7ff fee5 	bl	8000fc0 <valid>
 80011f6:	b110      	cbz	r0, 80011fe <drv8316_poll_faults+0x12>
 80011f8:	b109      	cbz	r1, 80011fe <drv8316_poll_faults+0x12>
 80011fa:	794b      	ldrb	r3, [r1, #5]
 80011fc:	b92b      	cbnz	r3, 800120a <drv8316_poll_faults+0x1e>
 80011fe:	2201      	movs	r2, #1
 8001200:	4621      	mov	r1, r4
 8001202:	4628      	mov	r0, r5
 8001204:	e8bd 4038 	ldmia.w	sp!, {r3, r4, r5, lr}
 8001208:	e6eb      	b.n	8000fe2 <stop>
 800120a:	2201      	movs	r2, #1
 800120c:	4628      	mov	r0, r5
 800120e:	f7ff ff4c 	bl	80010aa <read_status>
 8001212:	4602      	mov	r2, r0
 8001214:	2800      	cmp	r0, #0
 8001216:	d1f3      	bne.n	8001200 <drv8316_poll_faults+0x14>
 8001218:	bd38      	pop	{r3, r4, r5, pc}
 800121a:	bf00      	nop

0800121c <fresh_inputs>:
 800121c:	b908      	cbnz	r0, 8001222 <fresh_inputs+0x6>
 800121e:	2000      	movs	r0, #0
 8001220:	4770      	bx	lr
 8001222:	2a00      	cmp	r2, #0
 8001224:	d0fb      	beq.n	800121e <fresh_inputs+0x2>
 8001226:	7813      	ldrb	r3, [r2, #0]
 8001228:	2b00      	cmp	r3, #0
 800122a:	d0f8      	beq.n	800121e <fresh_inputs+0x2>
 800122c:	7853      	ldrb	r3, [r2, #1]
 800122e:	2b00      	cmp	r3, #0
 8001230:	d0f5      	beq.n	800121e <fresh_inputs+0x2>
 8001232:	7893      	ldrb	r3, [r2, #2]
 8001234:	2b00      	cmp	r3, #0
 8001236:	d0f2      	beq.n	800121e <fresh_inputs+0x2>
 8001238:	78d3      	ldrb	r3, [r2, #3]
 800123a:	2b00      	cmp	r3, #0
 800123c:	d0ef      	beq.n	800121e <fresh_inputs+0x2>
 800123e:	79d3      	ldrb	r3, [r2, #7]
 8001240:	2b00      	cmp	r3, #0
 8001242:	d0ec      	beq.n	800121e <fresh_inputs+0x2>
 8001244:	7a13      	ldrb	r3, [r2, #8]
 8001246:	2b00      	cmp	r3, #0
 8001248:	d1e9      	bne.n	800121e <fresh_inputs+0x2>
 800124a:	7913      	ldrb	r3, [r2, #4]
 800124c:	2b00      	cmp	r3, #0
 800124e:	d1e6      	bne.n	800121e <fresh_inputs+0x2>
 8001250:	7953      	ldrb	r3, [r2, #5]
 8001252:	2b00      	cmp	r3, #0
 8001254:	d1e3      	bne.n	800121e <fresh_inputs+0x2>
 8001256:	6913      	ldr	r3, [r2, #16]
 8001258:	1ac9      	subs	r1, r1, r3
 800125a:	6883      	ldr	r3, [r0, #8]
 800125c:	4299      	cmp	r1, r3
 800125e:	d8de      	bhi.n	800121e <fresh_inputs+0x2>
 8001260:	68d3      	ldr	r3, [r2, #12]
 8001262:	6800      	ldr	r0, [r0, #0]
 8001264:	2b00      	cmp	r3, #0
 8001266:	bfb8      	it	lt
 8001268:	425b      	neglt	r3, r3
 800126a:	4298      	cmp	r0, r3
 800126c:	bf34      	ite	cc
 800126e:	2000      	movcc	r0, #0
 8001270:	2001      	movcs	r0, #1
 8001272:	4770      	bx	lr

08001274 <snapshot>:
 8001274:	b5f0      	push	{r4, r5, r6, r7, lr}
 8001276:	b1e9      	cbz	r1, 80012b4 <snapshot+0x40>
 8001278:	f891 5024 	ldrb.w	r5, [r1, #36]	@ 0x24
 800127c:	680a      	ldr	r2, [r1, #0]
 800127e:	f891 4027 	ldrb.w	r4, [r1, #39]	@ 0x27
 8001282:	f891 7025 	ldrb.w	r7, [r1, #37]	@ 0x25
 8001286:	1e6b      	subs	r3, r5, #1
 8001288:	f247 5630 	movw	r6, #30000	@ 0x7530
 800128c:	2b01      	cmp	r3, #1
 800128e:	bf8c      	ite	hi
 8001290:	2300      	movhi	r3, #0
 8001292:	2301      	movls	r3, #1
 8001294:	4296      	cmp	r6, r2
 8001296:	bf28      	it	cs
 8001298:	4616      	movcs	r6, r2
 800129a:	2c00      	cmp	r4, #0
 800129c:	bf18      	it	ne
 800129e:	4632      	movne	r2, r6
 80012a0:	6bce      	ldr	r6, [r1, #60]	@ 0x3c
 80012a2:	6c89      	ldr	r1, [r1, #72]	@ 0x48
 80012a4:	7005      	strb	r5, [r0, #0]
 80012a6:	e9c0 2601 	strd	r2, r6, [r0, #4]
 80012aa:	7047      	strb	r7, [r0, #1]
 80012ac:	7083      	strb	r3, [r0, #2]
 80012ae:	70c4      	strb	r4, [r0, #3]
 80012b0:	60c1      	str	r1, [r0, #12]
 80012b2:	bdf0      	pop	{r4, r5, r6, r7, pc}
 80012b4:	2503      	movs	r5, #3
 80012b6:	2701      	movs	r7, #1
 80012b8:	460b      	mov	r3, r1
 80012ba:	460c      	mov	r4, r1
 80012bc:	460a      	mov	r2, r1
 80012be:	460e      	mov	r6, r1
 80012c0:	e7f0      	b.n	80012a4 <snapshot+0x30>

080012c2 <limit_target>:
 80012c2:	6803      	ldr	r3, [r0, #0]
 80012c4:	f890 0027 	ldrb.w	r0, [r0, #39]	@ 0x27
 80012c8:	f247 5230 	movw	r2, #30000	@ 0x7530
 80012cc:	429a      	cmp	r2, r3
 80012ce:	bf28      	it	cs
 80012d0:	461a      	movcs	r2, r3
 80012d2:	2800      	cmp	r0, #0
 80012d4:	bf18      	it	ne
 80012d6:	4613      	movne	r3, r2
 80012d8:	ea81 72e1 	eor.w	r2, r1, r1, asr #31
 80012dc:	eba2 72e1 	sub.w	r2, r2, r1, asr #31
 80012e0:	4293      	cmp	r3, r2
 80012e2:	d204      	bcs.n	80012ee <limit_target+0x2c>
 80012e4:	2900      	cmp	r1, #0
 80012e6:	4618      	mov	r0, r3
 80012e8:	da02      	bge.n	80012f0 <limit_target+0x2e>
 80012ea:	4258      	negs	r0, r3
 80012ec:	4770      	bx	lr
 80012ee:	4608      	mov	r0, r1
 80012f0:	4770      	bx	lr

080012f2 <ds_init>:
 80012f2:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
 80012f4:	4606      	mov	r6, r0
 80012f6:	460c      	mov	r4, r1
 80012f8:	4617      	mov	r7, r2
 80012fa:	b908      	cbnz	r0, 8001300 <ds_init+0xe>
 80012fc:	2000      	movs	r0, #0
 80012fe:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
 8001300:	2250      	movs	r2, #80	@ 0x50
 8001302:	2100      	movs	r1, #0
 8001304:	f7ff f8eb 	bl	80004de <memset>
 8001308:	f240 1303 	movw	r3, #259	@ 0x103
 800130c:	84b3      	strh	r3, [r6, #36]	@ 0x24
 800130e:	2c00      	cmp	r4, #0
 8001310:	d0f4      	beq.n	80012fc <ds_init+0xa>
 8001312:	6821      	ldr	r1, [r4, #0]
 8001314:	f24c 334f 	movw	r3, #49999	@ 0xc34f
 8001318:	1e4a      	subs	r2, r1, #1
 800131a:	429a      	cmp	r2, r3
 800131c:	d8ee      	bhi.n	80012fc <ds_init+0xa>
 800131e:	6863      	ldr	r3, [r4, #4]
 8001320:	4a15      	ldr	r2, [pc, #84]	@ (8001378 <ds_init+0x86>)
 8001322:	3b01      	subs	r3, #1
 8001324:	4293      	cmp	r3, r2
 8001326:	d2e9      	bcs.n	80012fc <ds_init+0xa>
 8001328:	68a3      	ldr	r3, [r4, #8]
 800132a:	4a14      	ldr	r2, [pc, #80]	@ (800137c <ds_init+0x8a>)
 800132c:	3b01      	subs	r3, #1
 800132e:	4293      	cmp	r3, r2
 8001330:	d8e4      	bhi.n	80012fc <ds_init+0xa>
 8001332:	68e3      	ldr	r3, [r4, #12]
 8001334:	3b01      	subs	r3, #1
 8001336:	f5b3 7f7a 	cmp.w	r3, #1000	@ 0x3e8
 800133a:	d2df      	bcs.n	80012fc <ds_init+0xa>
 800133c:	6923      	ldr	r3, [r4, #16]
 800133e:	4810      	ldr	r0, [pc, #64]	@ (8001380 <ds_init+0x8e>)
 8001340:	3b01      	subs	r3, #1
 8001342:	4283      	cmp	r3, r0
 8001344:	d8da      	bhi.n	80012fc <ds_init+0xa>
 8001346:	6963      	ldr	r3, [r4, #20]
 8001348:	4299      	cmp	r1, r3
 800134a:	d3d7      	bcc.n	80012fc <ds_init+0xa>
 800134c:	69a3      	ldr	r3, [r4, #24]
 800134e:	3b01      	subs	r3, #1
 8001350:	4293      	cmp	r3, r2
 8001352:	d8d3      	bhi.n	80012fc <ds_init+0xa>
 8001354:	69e3      	ldr	r3, [r4, #28]
 8001356:	2b00      	cmp	r3, #0
 8001358:	d0d0      	beq.n	80012fc <ds_init+0xa>
 800135a:	cc0f      	ldmia	r4!, {r0, r1, r2, r3}
 800135c:	4635      	mov	r5, r6
 800135e:	c50f      	stmia	r5!, {r0, r1, r2, r3}
 8001360:	cc0f      	ldmia	r4!, {r0, r1, r2, r3}
 8001362:	c50f      	stmia	r5!, {r0, r1, r2, r3}
 8001364:	6823      	ldr	r3, [r4, #0]
 8001366:	602b      	str	r3, [r5, #0]
 8001368:	2001      	movs	r0, #1
 800136a:	2300      	movs	r3, #0
 800136c:	84b3      	strh	r3, [r6, #36]	@ 0x24
 800136e:	f886 0026 	strb.w	r0, [r6, #38]	@ 0x26
 8001372:	62f7      	str	r7, [r6, #44]	@ 0x2c
 8001374:	e7c3      	b.n	80012fe <ds_init+0xc>
 8001376:	bf00      	nop
 8001378:	00989680 	.word	0x00989680
 800137c:	7ffffffd 	.word	0x7ffffffd
 8001380:	05f5e0ff 	.word	0x05f5e0ff

08001384 <ds_set_beginner_mode>:
 8001384:	4603      	mov	r3, r0
 8001386:	b908      	cbnz	r0, 800138c <ds_set_beginner_mode+0x8>
 8001388:	2000      	movs	r0, #0
 800138a:	4770      	bx	lr
 800138c:	f890 0026 	ldrb.w	r0, [r0, #38]	@ 0x26
 8001390:	b148      	cbz	r0, 80013a6 <ds_set_beginner_mode+0x22>
 8001392:	f893 2024 	ldrb.w	r2, [r3, #36]	@ 0x24
 8001396:	2a00      	cmp	r2, #0
 8001398:	d1f6      	bne.n	8001388 <ds_set_beginner_mode+0x4>
 800139a:	f893 2025 	ldrb.w	r2, [r3, #37]	@ 0x25
 800139e:	2a00      	cmp	r2, #0
 80013a0:	d1f2      	bne.n	8001388 <ds_set_beginner_mode+0x4>
 80013a2:	f883 1027 	strb.w	r1, [r3, #39]	@ 0x27
 80013a6:	4770      	bx	lr

080013a8 <ds_start>:
 80013a8:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
 80013aa:	4617      	mov	r7, r2
 80013ac:	4604      	mov	r4, r0
 80013ae:	460e      	mov	r6, r1
 80013b0:	461a      	mov	r2, r3
 80013b2:	b910      	cbnz	r0, 80013ba <ds_start+0x12>
 80013b4:	2500      	movs	r5, #0
 80013b6:	4628      	mov	r0, r5
 80013b8:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
 80013ba:	f890 5026 	ldrb.w	r5, [r0, #38]	@ 0x26
 80013be:	2d00      	cmp	r5, #0
 80013c0:	d0f9      	beq.n	80013b6 <ds_start+0xe>
 80013c2:	f890 3024 	ldrb.w	r3, [r0, #36]	@ 0x24
 80013c6:	2b00      	cmp	r3, #0
 80013c8:	d1f4      	bne.n	80013b4 <ds_start+0xc>
 80013ca:	f890 3025 	ldrb.w	r3, [r0, #37]	@ 0x25
 80013ce:	2b00      	cmp	r3, #0
 80013d0:	d1f0      	bne.n	80013b4 <ds_start+0xc>
 80013d2:	ea81 73e1 	eor.w	r3, r1, r1, asr #31
 80013d6:	eba3 73e1 	sub.w	r3, r3, r1, asr #31
 80013da:	6801      	ldr	r1, [r0, #0]
 80013dc:	4299      	cmp	r1, r3
 80013de:	d3e9      	bcc.n	80013b4 <ds_start+0xc>
 80013e0:	2e00      	cmp	r6, #0
 80013e2:	d0e7      	beq.n	80013b4 <ds_start+0xc>
 80013e4:	4639      	mov	r1, r7
 80013e6:	f7ff ff19 	bl	800121c <fresh_inputs>
 80013ea:	4605      	mov	r5, r0
 80013ec:	2800      	cmp	r0, #0
 80013ee:	d0e2      	beq.n	80013b6 <ds_start+0xe>
 80013f0:	68d3      	ldr	r3, [r2, #12]
 80013f2:	6960      	ldr	r0, [r4, #20]
 80013f4:	ea83 72e3 	eor.w	r2, r3, r3, asr #31
 80013f8:	2e00      	cmp	r6, #0
 80013fa:	eba2 72e3 	sub.w	r2, r2, r3, asr #31
 80013fe:	bfd4      	ite	le
 8001400:	f04f 31ff 	movle.w	r1, #4294967295	@ 0xffffffff
 8001404:	2101      	movgt	r1, #1
 8001406:	4290      	cmp	r0, r2
 8001408:	d206      	bcs.n	8001418 <ds_start+0x70>
 800140a:	2b00      	cmp	r3, #0
 800140c:	dc1a      	bgt.n	8001444 <ds_start+0x9c>
 800140e:	d0d1      	beq.n	80013b4 <ds_start+0xc>
 8001410:	f04f 33ff 	mov.w	r3, #4294967295	@ 0xffffffff
 8001414:	4299      	cmp	r1, r3
 8001416:	d1cd      	bne.n	80013b4 <ds_start+0xc>
 8001418:	f884 1029 	strb.w	r1, [r4, #41]	@ 0x29
 800141c:	4620      	mov	r0, r4
 800141e:	4631      	mov	r1, r6
 8001420:	f7ff ff4f 	bl	80012c2 <limit_target>
 8001424:	2301      	movs	r3, #1
 8001426:	63a0      	str	r0, [r4, #56]	@ 0x38
 8001428:	f884 3024 	strb.w	r3, [r4, #36]	@ 0x24
 800142c:	2000      	movs	r0, #0
 800142e:	2300      	movs	r3, #0
 8001430:	2100      	movs	r1, #0
 8001432:	e9c4 0110 	strd	r0, r1, [r4, #64]	@ 0x40
 8001436:	62e7      	str	r7, [r4, #44]	@ 0x2c
 8001438:	f884 3028 	strb.w	r3, [r4, #40]	@ 0x28
 800143c:	63e3      	str	r3, [r4, #60]	@ 0x3c
 800143e:	64a3      	str	r3, [r4, #72]	@ 0x48
 8001440:	6363      	str	r3, [r4, #52]	@ 0x34
 8001442:	e7b8      	b.n	80013b6 <ds_start+0xe>
 8001444:	2301      	movs	r3, #1
 8001446:	e7e5      	b.n	8001414 <ds_start+0x6c>

08001448 <ds_stop>:
 8001448:	b530      	push	{r4, r5, lr}
 800144a:	b180      	cbz	r0, 800146e <ds_stop+0x26>
 800144c:	f890 3024 	ldrb.w	r3, [r0, #36]	@ 0x24
 8001450:	2b03      	cmp	r3, #3
 8001452:	d00c      	beq.n	800146e <ds_stop+0x26>
 8001454:	2300      	movs	r3, #0
 8001456:	2400      	movs	r4, #0
 8001458:	2500      	movs	r5, #0
 800145a:	e9c0 4510 	strd	r4, r5, [r0, #64]	@ 0x40
 800145e:	e9c0 330d 	strd	r3, r3, [r0, #52]	@ 0x34
 8001462:	63c3      	str	r3, [r0, #60]	@ 0x3c
 8001464:	6483      	str	r3, [r0, #72]	@ 0x48
 8001466:	f880 3024 	strb.w	r3, [r0, #36]	@ 0x24
 800146a:	f880 3028 	strb.w	r3, [r0, #40]	@ 0x28
 800146e:	bd30      	pop	{r4, r5, pc}

08001470 <ds_update>:
 8001470:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
 8001474:	b08b      	sub	sp, #44	@ 0x2c
 8001476:	460c      	mov	r4, r1
 8001478:	9001      	str	r0, [sp, #4]
 800147a:	a806      	add	r0, sp, #24
 800147c:	9d14      	ldr	r5, [sp, #80]	@ 0x50
 800147e:	4616      	mov	r6, r2
 8001480:	4698      	mov	r8, r3
 8001482:	f7ff fef7 	bl	8001274 <snapshot>
 8001486:	b154      	cbz	r4, 800149e <ds_update+0x2e>
 8001488:	f894 3026 	ldrb.w	r3, [r4, #38]	@ 0x26
 800148c:	b13b      	cbz	r3, 800149e <ds_update+0x2e>
 800148e:	f894 9024 	ldrb.w	r9, [r4, #36]	@ 0x24
 8001492:	f1b9 0f03 	cmp.w	r9, #3
 8001496:	d002      	beq.n	800149e <ds_update+0x2e>
 8001498:	f1b9 0f00 	cmp.w	r9, #0
 800149c:	d108      	bne.n	80014b0 <ds_update+0x40>
 800149e:	ab06      	add	r3, sp, #24
 80014a0:	cb0f      	ldmia	r3, {r0, r1, r2, r3}
 80014a2:	9c01      	ldr	r4, [sp, #4]
 80014a4:	e884 000f 	stmia.w	r4, {r0, r1, r2, r3}
 80014a8:	9801      	ldr	r0, [sp, #4]
 80014aa:	b00b      	add	sp, #44	@ 0x2c
 80014ac:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 80014b0:	6ae7      	ldr	r7, [r4, #44]	@ 0x2c
 80014b2:	ebb8 0707 	subs.w	r7, r8, r7
 80014b6:	d104      	bne.n	80014c2 <ds_update+0x52>
 80014b8:	9801      	ldr	r0, [sp, #4]
 80014ba:	4621      	mov	r1, r4
 80014bc:	f7ff feda 	bl	8001274 <snapshot>
 80014c0:	e7f2      	b.n	80014a8 <ds_update+0x38>
 80014c2:	68e3      	ldr	r3, [r4, #12]
 80014c4:	42bb      	cmp	r3, r7
 80014c6:	d20e      	bcs.n	80014e6 <ds_update+0x76>
 80014c8:	2300      	movs	r3, #0
 80014ca:	2000      	movs	r0, #0
 80014cc:	2100      	movs	r1, #0
 80014ce:	e9c4 0110 	strd	r0, r1, [r4, #64]	@ 0x40
 80014d2:	e9c4 330d 	strd	r3, r3, [r4, #52]	@ 0x34
 80014d6:	f240 2203 	movw	r2, #515	@ 0x203
 80014da:	63e3      	str	r3, [r4, #60]	@ 0x3c
 80014dc:	64a3      	str	r3, [r4, #72]	@ 0x48
 80014de:	84a2      	strh	r2, [r4, #36]	@ 0x24
 80014e0:	f884 3028 	strb.w	r3, [r4, #40]	@ 0x28
 80014e4:	e7e8      	b.n	80014b8 <ds_update+0x48>
 80014e6:	f8c4 802c 	str.w	r8, [r4, #44]	@ 0x2c
 80014ea:	b97d      	cbnz	r5, 800150c <ds_update+0x9c>
 80014ec:	2204      	movs	r2, #4
 80014ee:	2100      	movs	r1, #0
 80014f0:	2000      	movs	r0, #0
 80014f2:	2300      	movs	r3, #0
 80014f4:	e9c4 0110 	strd	r0, r1, [r4, #64]	@ 0x40
 80014f8:	2103      	movs	r1, #3
 80014fa:	e9c4 330d 	strd	r3, r3, [r4, #52]	@ 0x34
 80014fe:	63e3      	str	r3, [r4, #60]	@ 0x3c
 8001500:	64a3      	str	r3, [r4, #72]	@ 0x48
 8001502:	f884 1024 	strb.w	r1, [r4, #36]	@ 0x24
 8001506:	f884 2025 	strb.w	r2, [r4, #37]	@ 0x25
 800150a:	e7e9      	b.n	80014e0 <ds_update+0x70>
 800150c:	782b      	ldrb	r3, [r5, #0]
 800150e:	2b00      	cmp	r3, #0
 8001510:	d0ec      	beq.n	80014ec <ds_update+0x7c>
 8001512:	786b      	ldrb	r3, [r5, #1]
 8001514:	2b00      	cmp	r3, #0
 8001516:	d0e9      	beq.n	80014ec <ds_update+0x7c>
 8001518:	78eb      	ldrb	r3, [r5, #3]
 800151a:	2b00      	cmp	r3, #0
 800151c:	d0e6      	beq.n	80014ec <ds_update+0x7c>
 800151e:	79eb      	ldrb	r3, [r5, #7]
 8001520:	2b00      	cmp	r3, #0
 8001522:	d0e3      	beq.n	80014ec <ds_update+0x7c>
 8001524:	792b      	ldrb	r3, [r5, #4]
 8001526:	b10b      	cbz	r3, 800152c <ds_update+0xbc>
 8001528:	2205      	movs	r2, #5
 800152a:	e7e0      	b.n	80014ee <ds_update+0x7e>
 800152c:	796b      	ldrb	r3, [r5, #5]
 800152e:	2b00      	cmp	r3, #0
 8001530:	d1fa      	bne.n	8001528 <ds_update+0xb8>
 8001532:	78ab      	ldrb	r3, [r5, #2]
 8001534:	b1cb      	cbz	r3, 800156a <ds_update+0xfa>
 8001536:	692b      	ldr	r3, [r5, #16]
 8001538:	68a2      	ldr	r2, [r4, #8]
 800153a:	eba8 0303 	sub.w	r3, r8, r3
 800153e:	4293      	cmp	r3, r2
 8001540:	d813      	bhi.n	800156a <ds_update+0xfa>
 8001542:	f8d5 a00c 	ldr.w	sl, [r5, #12]
 8001546:	ea8a 73ea 	eor.w	r3, sl, sl, asr #31
 800154a:	eba3 73ea 	sub.w	r3, r3, sl, asr #31
 800154e:	9302      	str	r3, [sp, #8]
 8001550:	ea8a 72ea 	eor.w	r2, sl, sl, asr #31
 8001554:	6823      	ldr	r3, [r4, #0]
 8001556:	eba2 72ea 	sub.w	r2, r2, sl, asr #31
 800155a:	4293      	cmp	r3, r2
 800155c:	d307      	bcc.n	800156e <ds_update+0xfe>
 800155e:	7a2a      	ldrb	r2, [r5, #8]
 8001560:	b13a      	cbz	r2, 8001572 <ds_update+0x102>
 8001562:	4620      	mov	r0, r4
 8001564:	f7ff ff70 	bl	8001448 <ds_stop>
 8001568:	e7a6      	b.n	80014b8 <ds_update+0x48>
 800156a:	2203      	movs	r2, #3
 800156c:	e7bf      	b.n	80014ee <ds_update+0x7e>
 800156e:	2206      	movs	r2, #6
 8001570:	e7bd      	b.n	80014ee <ds_update+0x7e>
 8001572:	ea86 71e6 	eor.w	r1, r6, r6, asr #31
 8001576:	eba1 71e6 	sub.w	r1, r1, r6, asr #31
 800157a:	428b      	cmp	r3, r1
 800157c:	d20d      	bcs.n	800159a <ds_update+0x12a>
 800157e:	2000      	movs	r0, #0
 8001580:	2100      	movs	r1, #0
 8001582:	f240 7303 	movw	r3, #1795	@ 0x703
 8001586:	e9c4 0110 	strd	r0, r1, [r4, #64]	@ 0x40
 800158a:	e9c4 220d 	strd	r2, r2, [r4, #52]	@ 0x34
 800158e:	63e2      	str	r2, [r4, #60]	@ 0x3c
 8001590:	64a2      	str	r2, [r4, #72]	@ 0x48
 8001592:	84a3      	strh	r3, [r4, #36]	@ 0x24
 8001594:	f884 2028 	strb.w	r2, [r4, #40]	@ 0x28
 8001598:	e78e      	b.n	80014b8 <ds_update+0x48>
 800159a:	4631      	mov	r1, r6
 800159c:	4620      	mov	r0, r4
 800159e:	f7ff fe90 	bl	80012c2 <limit_target>
 80015a2:	1e06      	subs	r6, r0, #0
 80015a4:	f300 80d5 	bgt.w	8001752 <ds_update+0x2e2>
 80015a8:	f000 80e4 	beq.w	8001774 <ds_update+0x304>
 80015ac:	f04f 30ff 	mov.w	r0, #4294967295	@ 0xffffffff
 80015b0:	f994 3029 	ldrsb.w	r3, [r4, #41]	@ 0x29
 80015b4:	4283      	cmp	r3, r0
 80015b6:	f000 80dd 	beq.w	8001774 <ds_update+0x304>
 80015ba:	2302      	movs	r3, #2
 80015bc:	2200      	movs	r2, #0
 80015be:	f884 3024 	strb.w	r3, [r4, #36]	@ 0x24
 80015c2:	2300      	movs	r3, #0
 80015c4:	e9c4 2310 	strd	r2, r3, [r4, #64]	@ 0x40
 80015c8:	6963      	ldr	r3, [r4, #20]
 80015ca:	9a02      	ldr	r2, [sp, #8]
 80015cc:	2100      	movs	r1, #0
 80015ce:	4293      	cmp	r3, r2
 80015d0:	63e1      	str	r1, [r4, #60]	@ 0x3c
 80015d2:	64a1      	str	r1, [r4, #72]	@ 0x48
 80015d4:	6361      	str	r1, [r4, #52]	@ 0x34
 80015d6:	f0c0 80ca 	bcc.w	800176e <ds_update+0x2fe>
 80015da:	f894 3028 	ldrb.w	r3, [r4, #40]	@ 0x28
 80015de:	2b00      	cmp	r3, #0
 80015e0:	f040 80b9 	bne.w	8001756 <ds_update+0x2e6>
 80015e4:	2301      	movs	r3, #1
 80015e6:	f884 3028 	strb.w	r3, [r4, #40]	@ 0x28
 80015ea:	f8c4 8030 	str.w	r8, [r4, #48]	@ 0x30
 80015ee:	f894 3024 	ldrb.w	r3, [r4, #36]	@ 0x24
 80015f2:	63a6      	str	r6, [r4, #56]	@ 0x38
 80015f4:	2b02      	cmp	r3, #2
 80015f6:	f43f af5f 	beq.w	80014b8 <ds_update+0x48>
 80015fa:	6b63      	ldr	r3, [r4, #52]	@ 0x34
 80015fc:	6922      	ldr	r2, [r4, #16]
 80015fe:	63a6      	str	r6, [r4, #56]	@ 0x38
 8001600:	f04f 0800 	mov.w	r8, #0
 8001604:	fbe2 3807 	umlal	r3, r8, r2, r7
 8001608:	4699      	mov	r9, r3
 800160a:	f44f 727a 	mov.w	r2, #1000	@ 0x3e8
 800160e:	2300      	movs	r3, #0
 8001610:	4648      	mov	r0, r9
 8001612:	4641      	mov	r1, r8
 8001614:	f000 fcc8 	bl	8001fa8 <__aeabi_uldivmod>
 8001618:	6be3      	ldr	r3, [r4, #60]	@ 0x3c
 800161a:	6362      	str	r2, [r4, #52]	@ 0x34
 800161c:	ebb6 0c03 	subs.w	ip, r6, r3
 8001620:	ea4f 72e6 	mov.w	r2, r6, asr #31
 8001624:	eb62 72e3 	sbc.w	r2, r2, r3, asr #31
 8001628:	2a00      	cmp	r2, #0
 800162a:	4686      	mov	lr, r0
 800162c:	4693      	mov	fp, r2
 800162e:	da03      	bge.n	8001638 <ds_update+0x1c8>
 8001630:	f1dc 0c00 	rsbs	ip, ip, #0
 8001634:	eb62 0b42 	sbc.w	fp, r2, r2, lsl #1
 8001638:	4560      	cmp	r0, ip
 800163a:	eb71 0b0b 	sbcs.w	fp, r1, fp
 800163e:	f0c0 80a3 	bcc.w	8001788 <ds_update+0x318>
 8001642:	2300      	movs	r3, #0
 8001644:	6363      	str	r3, [r4, #52]	@ 0x34
 8001646:	4633      	mov	r3, r6
 8001648:	431e      	orrs	r6, r3
 800164a:	63e3      	str	r3, [r4, #60]	@ 0x3c
 800164c:	d103      	bne.n	8001656 <ds_update+0x1e6>
 800164e:	6962      	ldr	r2, [r4, #20]
 8001650:	9902      	ldr	r1, [sp, #8]
 8001652:	428a      	cmp	r2, r1
 8001654:	d285      	bcs.n	8001562 <ds_update+0xf2>
 8001656:	79aa      	ldrb	r2, [r5, #6]
 8001658:	9204      	str	r2, [sp, #16]
 800165a:	17da      	asrs	r2, r3, #31
 800165c:	ebb3 030a 	subs.w	r3, r3, sl
 8001660:	9303      	str	r3, [sp, #12]
 8001662:	eb62 7bea 	sbc.w	fp, r2, sl, asr #31
 8001666:	69e3      	ldr	r3, [r4, #28]
 8001668:	9a03      	ldr	r2, [sp, #12]
 800166a:	6a21      	ldr	r1, [r4, #32]
 800166c:	6865      	ldr	r5, [r4, #4]
 800166e:	9502      	str	r5, [sp, #8]
 8001670:	fba3 2602 	umull	r2, r6, r3, r2
 8001674:	fb03 660b 	mla	r6, r3, fp, r6
 8001678:	9b03      	ldr	r3, [sp, #12]
 800167a:	9205      	str	r2, [sp, #20]
 800167c:	fba7 0303 	umull	r0, r3, r7, r3
 8001680:	fb07 370b 	mla	r7, r7, fp, r3
 8001684:	fba0 0c01 	umull	r0, ip, r0, r1
 8001688:	f44f 727a 	mov.w	r2, #1000	@ 0x3e8
 800168c:	2300      	movs	r3, #0
 800168e:	fb01 c107 	mla	r1, r1, r7, ip
 8001692:	f000 fc39 	bl	8001f08 <__aeabi_ldivmod>
 8001696:	e9d4 3210 	ldrd	r3, r2, [r4, #64]	@ 0x40
 800169a:	ea4f 4805 	mov.w	r8, r5, lsl #16
 800169e:	18c0      	adds	r0, r0, r3
 80016a0:	eb42 0101 	adc.w	r1, r2, r1
 80016a4:	ea4f 4915 	mov.w	r9, r5, lsr #16
 80016a8:	4580      	cmp	r8, r0
 80016aa:	eb79 0301 	sbcs.w	r3, r9, r1
 80016ae:	db09      	blt.n	80016c4 <ds_update+0x254>
 80016b0:	f1d8 0800 	rsbs	r8, r8, #0
 80016b4:	eb69 0949 	sbc.w	r9, r9, r9, lsl #1
 80016b8:	4580      	cmp	r8, r0
 80016ba:	eb79 0301 	sbcs.w	r3, r9, r1
 80016be:	bfbc      	itt	lt
 80016c0:	4680      	movlt	r8, r0
 80016c2:	4689      	movlt	r9, r1
 80016c4:	9b05      	ldr	r3, [sp, #20]
 80016c6:	eb13 0008 	adds.w	r0, r3, r8
 80016ca:	eb46 0609 	adc.w	r6, r6, r9
 80016ce:	2e00      	cmp	r6, #0
 80016d0:	da66      	bge.n	80017a0 <ds_update+0x330>
 80016d2:	4243      	negs	r3, r0
 80016d4:	eb66 0246 	sbc.w	r2, r6, r6, lsl #1
 80016d8:	2a00      	cmp	r2, #0
 80016da:	da04      	bge.n	80016e6 <ds_update+0x276>
 80016dc:	f64f 71ff 	movw	r1, #65535	@ 0xffff
 80016e0:	185b      	adds	r3, r3, r1
 80016e2:	f142 0200 	adc.w	r2, r2, #0
 80016e6:	0c1b      	lsrs	r3, r3, #16
 80016e8:	ea43 4302 	orr.w	r3, r3, r2, lsl #16
 80016ec:	425b      	negs	r3, r3
 80016ee:	ea4f 4222 	mov.w	r2, r2, asr #16
 80016f2:	eb62 0242 	sbc.w	r2, r2, r2, lsl #1
 80016f6:	4269      	negs	r1, r5
 80016f8:	eb67 0707 	sbc.w	r7, r7, r7
 80016fc:	4299      	cmp	r1, r3
 80016fe:	4197      	sbcs	r7, r2
 8001700:	da00      	bge.n	8001704 <ds_update+0x294>
 8001702:	4619      	mov	r1, r3
 8001704:	17cf      	asrs	r7, r1, #31
 8001706:	4299      	cmp	r1, r3
 8001708:	eb77 0c02 	sbcs.w	ip, r7, r2
 800170c:	da53      	bge.n	80017b6 <ds_update+0x346>
 800170e:	f1bb 0f00 	cmp.w	fp, #0
 8001712:	da59      	bge.n	80017c8 <ds_update+0x358>
 8001714:	2e00      	cmp	r6, #0
 8001716:	e9c4 8910 	strd	r8, r9, [r4, #64]	@ 0x40
 800171a:	da68      	bge.n	80017ee <ds_update+0x37e>
 800171c:	4243      	negs	r3, r0
 800171e:	eb66 0246 	sbc.w	r2, r6, r6, lsl #1
 8001722:	2a00      	cmp	r2, #0
 8001724:	da04      	bge.n	8001730 <ds_update+0x2c0>
 8001726:	f64f 71ff 	movw	r1, #65535	@ 0xffff
 800172a:	185b      	adds	r3, r3, r1
 800172c:	f142 0200 	adc.w	r2, r2, #0
 8001730:	0c1b      	lsrs	r3, r3, #16
 8001732:	ea43 4302 	orr.w	r3, r3, r2, lsl #16
 8001736:	425b      	negs	r3, r3
 8001738:	ea4f 4222 	mov.w	r2, r2, asr #16
 800173c:	eb62 0242 	sbc.w	r2, r2, r2, lsl #1
 8001740:	426d      	negs	r5, r5
 8001742:	eb61 0101 	sbc.w	r1, r1, r1
 8001746:	429d      	cmp	r5, r3
 8001748:	4191      	sbcs	r1, r2
 800174a:	9502      	str	r5, [sp, #8]
 800174c:	bfb8      	it	lt
 800174e:	9302      	strlt	r3, [sp, #8]
 8001750:	e056      	b.n	8001800 <ds_update+0x390>
 8001752:	2001      	movs	r0, #1
 8001754:	e72c      	b.n	80015b0 <ds_update+0x140>
 8001756:	6b23      	ldr	r3, [r4, #48]	@ 0x30
 8001758:	eba8 0803 	sub.w	r8, r8, r3
 800175c:	69a3      	ldr	r3, [r4, #24]
 800175e:	4598      	cmp	r8, r3
 8001760:	f4ff af45 	bcc.w	80015ee <ds_update+0x17e>
 8001764:	2301      	movs	r3, #1
 8001766:	f884 0029 	strb.w	r0, [r4, #41]	@ 0x29
 800176a:	f884 3024 	strb.w	r3, [r4, #36]	@ 0x24
 800176e:	f884 1028 	strb.w	r1, [r4, #40]	@ 0x28
 8001772:	e73c      	b.n	80015ee <ds_update+0x17e>
 8001774:	f1b9 0f02 	cmp.w	r9, #2
 8001778:	bf01      	itttt	eq
 800177a:	2301      	moveq	r3, #1
 800177c:	f884 3024 	strbeq.w	r3, [r4, #36]	@ 0x24
 8001780:	2300      	moveq	r3, #0
 8001782:	f884 3028 	strbeq.w	r3, [r4, #40]	@ 0x28
 8001786:	e738      	b.n	80015fa <ds_update+0x18a>
 8001788:	f5b9 7f7a 	cmp.w	r9, #1000	@ 0x3e8
 800178c:	f178 0800 	sbcs.w	r8, r8, #0
 8001790:	f4ff af5a 	bcc.w	8001648 <ds_update+0x1d8>
 8001794:	2a00      	cmp	r2, #0
 8001796:	bfb8      	it	lt
 8001798:	f1c0 0e00 	rsblt	lr, r0, #0
 800179c:	4473      	add	r3, lr
 800179e:	e753      	b.n	8001648 <ds_update+0x1d8>
 80017a0:	0c03      	lsrs	r3, r0, #16
 80017a2:	ea43 4306 	orr.w	r3, r3, r6, lsl #16
 80017a6:	1432      	asrs	r2, r6, #16
 80017a8:	429d      	cmp	r5, r3
 80017aa:	f04f 0100 	mov.w	r1, #0
 80017ae:	4191      	sbcs	r1, r2
 80017b0:	daa1      	bge.n	80016f6 <ds_update+0x286>
 80017b2:	4629      	mov	r1, r5
 80017b4:	e7a6      	b.n	8001704 <ds_update+0x294>
 80017b6:	428b      	cmp	r3, r1
 80017b8:	eb72 0707 	sbcs.w	r7, r2, r7
 80017bc:	daaa      	bge.n	8001714 <ds_update+0x2a4>
 80017be:	9f03      	ldr	r7, [sp, #12]
 80017c0:	2f01      	cmp	r7, #1
 80017c2:	f17b 0700 	sbcs.w	r7, fp, #0
 80017c6:	daa5      	bge.n	8001714 <ds_update+0x2a4>
 80017c8:	9804      	ldr	r0, [sp, #16]
 80017ca:	b970      	cbnz	r0, 80017ea <ds_update+0x37a>
 80017cc:	fb8a 5001 	smull	r5, r0, sl, r1
 80017d0:	2800      	cmp	r0, #0
 80017d2:	da0a      	bge.n	80017ea <ds_update+0x37a>
 80017d4:	ea4f 71ea 	mov.w	r1, sl, asr #31
 80017d8:	fb0a f202 	mul.w	r2, sl, r2
 80017dc:	fb03 2201 	mla	r2, r3, r1, r2
 80017e0:	fbaa 1303 	umull	r1, r3, sl, r3
 80017e4:	42da      	cmn	r2, r3
 80017e6:	d40d      	bmi.n	8001804 <ds_update+0x394>
 80017e8:	2100      	movs	r1, #0
 80017ea:	64a1      	str	r1, [r4, #72]	@ 0x48
 80017ec:	e664      	b.n	80014b8 <ds_update+0x48>
 80017ee:	0c03      	lsrs	r3, r0, #16
 80017f0:	ea43 4306 	orr.w	r3, r3, r6, lsl #16
 80017f4:	1432      	asrs	r2, r6, #16
 80017f6:	429d      	cmp	r5, r3
 80017f8:	f04f 0100 	mov.w	r1, #0
 80017fc:	4191      	sbcs	r1, r2
 80017fe:	da9f      	bge.n	8001740 <ds_update+0x2d0>
 8001800:	9902      	ldr	r1, [sp, #8]
 8001802:	e7e1      	b.n	80017c8 <ds_update+0x358>
 8001804:	2200      	movs	r2, #0
 8001806:	2300      	movs	r3, #0
 8001808:	e9c4 2310 	strd	r2, r3, [r4, #64]	@ 0x40
 800180c:	e7ec      	b.n	80017e8 <ds_update+0x378>

0800180e <ds_clear_fault>:
 800180e:	b570      	push	{r4, r5, r6, lr}
 8001810:	4604      	mov	r4, r0
 8001812:	460d      	mov	r5, r1
 8001814:	b910      	cbnz	r0, 800181c <ds_clear_fault+0xe>
 8001816:	2300      	movs	r3, #0
 8001818:	4618      	mov	r0, r3
 800181a:	bd70      	pop	{r4, r5, r6, pc}
 800181c:	f890 3026 	ldrb.w	r3, [r0, #38]	@ 0x26
 8001820:	2b00      	cmp	r3, #0
 8001822:	d0f9      	beq.n	8001818 <ds_clear_fault+0xa>
 8001824:	f890 3024 	ldrb.w	r3, [r0, #36]	@ 0x24
 8001828:	2b03      	cmp	r3, #3
 800182a:	d1f4      	bne.n	8001816 <ds_clear_fault+0x8>
 800182c:	f7ff fcf6 	bl	800121c <fresh_inputs>
 8001830:	4603      	mov	r3, r0
 8001832:	2800      	cmp	r0, #0
 8001834:	d0f0      	beq.n	8001818 <ds_clear_fault+0xa>
 8001836:	68d2      	ldr	r2, [r2, #12]
 8001838:	6961      	ldr	r1, [r4, #20]
 800183a:	2a00      	cmp	r2, #0
 800183c:	bfb8      	it	lt
 800183e:	4252      	neglt	r2, r2
 8001840:	4291      	cmp	r1, r2
 8001842:	d3e8      	bcc.n	8001816 <ds_clear_fault+0x8>
 8001844:	2200      	movs	r2, #0
 8001846:	2000      	movs	r0, #0
 8001848:	2100      	movs	r1, #0
 800184a:	e9c4 0110 	strd	r0, r1, [r4, #64]	@ 0x40
 800184e:	84a2      	strh	r2, [r4, #36]	@ 0x24
 8001850:	62e5      	str	r5, [r4, #44]	@ 0x2c
 8001852:	8522      	strh	r2, [r4, #40]	@ 0x28
 8001854:	63e2      	str	r2, [r4, #60]	@ 0x3c
 8001856:	64a2      	str	r2, [r4, #72]	@ 0x48
 8001858:	6362      	str	r2, [r4, #52]	@ 0x34
 800185a:	e7dd      	b.n	8001818 <ds_clear_fault+0xa>

0800185c <safe_off>:
 800185c:	b5f8      	push	{r3, r4, r5, r6, r7, lr}
 800185e:	4607      	mov	r7, r0
 8001860:	460e      	mov	r6, r1
 8001862:	4615      	mov	r5, r2
 8001864:	b1e8      	cbz	r0, 80018a2 <safe_off+0x46>
 8001866:	6844      	ldr	r4, [r0, #4]
 8001868:	b11c      	cbz	r4, 8001872 <safe_off+0x16>
 800186a:	6800      	ldr	r0, [r0, #0]
 800186c:	2100      	movs	r1, #0
 800186e:	47a0      	blx	r4
 8001870:	4604      	mov	r4, r0
 8001872:	693b      	ldr	r3, [r7, #16]
 8001874:	b1bb      	cbz	r3, 80018a6 <safe_off+0x4a>
 8001876:	6838      	ldr	r0, [r7, #0]
 8001878:	2101      	movs	r1, #1
 800187a:	4798      	blx	r3
 800187c:	b15e      	cbz	r6, 8001896 <safe_off+0x3a>
 800187e:	2300      	movs	r3, #0
 8001880:	7073      	strb	r3, [r6, #1]
 8001882:	b194      	cbz	r4, 80018aa <safe_off+0x4e>
 8001884:	4298      	cmp	r0, r3
 8001886:	bf14      	ite	ne
 8001888:	462b      	movne	r3, r5
 800188a:	2307      	moveq	r3, #7
 800188c:	7033      	strb	r3, [r6, #0]
 800188e:	2300      	movs	r3, #0
 8001890:	80b3      	strh	r3, [r6, #4]
 8001892:	80f3      	strh	r3, [r6, #6]
 8001894:	8073      	strh	r3, [r6, #2]
 8001896:	b154      	cbz	r4, 80018ae <safe_off+0x52>
 8001898:	2800      	cmp	r0, #0
 800189a:	bf08      	it	eq
 800189c:	2507      	moveq	r5, #7
 800189e:	4628      	mov	r0, r5
 80018a0:	bdf8      	pop	{r3, r4, r5, r6, r7, pc}
 80018a2:	4604      	mov	r4, r0
 80018a4:	e7ea      	b.n	800187c <safe_off+0x20>
 80018a6:	4618      	mov	r0, r3
 80018a8:	e7e8      	b.n	800187c <safe_off+0x20>
 80018aa:	2307      	movs	r3, #7
 80018ac:	e7ee      	b.n	800188c <safe_off+0x30>
 80018ae:	2507      	movs	r5, #7
 80018b0:	e7f5      	b.n	800189e <safe_off+0x42>

080018b2 <charge_decode_source>:
 80018b2:	b570      	push	{r4, r5, r6, lr}
 80018b4:	9c04      	ldr	r4, [sp, #16]
 80018b6:	b90b      	cbnz	r3, 80018bc <charge_decode_source+0xa>
 80018b8:	2000      	movs	r0, #0
 80018ba:	bd70      	pop	{r4, r5, r6, pc}
 80018bc:	2c00      	cmp	r4, #0
 80018be:	d0fb      	beq.n	80018b8 <charge_decode_source+0x6>
 80018c0:	2500      	movs	r5, #0
 80018c2:	801d      	strh	r5, [r3, #0]
 80018c4:	8025      	strh	r5, [r4, #0]
 80018c6:	064d      	lsls	r5, r1, #25
 80018c8:	d5f6      	bpl.n	80018b8 <charge_decode_source+0x6>
 80018ca:	0905      	lsrs	r5, r0, #4
 80018cc:	1e6e      	subs	r6, r5, #1
 80018ce:	2e01      	cmp	r6, #1
 80018d0:	d81a      	bhi.n	8001908 <charge_decode_source+0x56>
 80018d2:	f242 3228 	movw	r2, #9000	@ 0x2328
 80018d6:	f241 3188 	movw	r1, #5000	@ 0x1388
 80018da:	2d01      	cmp	r5, #1
 80018dc:	bf08      	it	eq
 80018de:	460a      	moveq	r2, r1
 80018e0:	801a      	strh	r2, [r3, #0]
 80018e2:	f000 000f 	and.w	r0, r0, #15
 80018e6:	4b15      	ldr	r3, [pc, #84]	@ (800193c <charge_decode_source+0x8a>)
 80018e8:	f833 3010 	ldrh.w	r3, [r3, r0, lsl #1]
 80018ec:	f5b3 6ffa 	cmp.w	r3, #2000	@ 0x7d0
 80018f0:	f04f 025a 	mov.w	r2, #90	@ 0x5a
 80018f4:	bf28      	it	cs
 80018f6:	f44f 63fa 	movcs.w	r3, #2000	@ 0x7d0
 80018fa:	4353      	muls	r3, r2
 80018fc:	2001      	movs	r0, #1
 80018fe:	2264      	movs	r2, #100	@ 0x64
 8001900:	fbb3 f3f2 	udiv	r3, r3, r2
 8001904:	8023      	strh	r3, [r4, #0]
 8001906:	e7d8      	b.n	80018ba <charge_decode_source+0x8>
 8001908:	2d00      	cmp	r5, #0
 800190a:	d1d5      	bne.n	80018b8 <charge_decode_source+0x6>
 800190c:	0748      	lsls	r0, r1, #29
 800190e:	d509      	bpl.n	8001924 <charge_decode_source+0x72>
 8001910:	f241 3288 	movw	r2, #5000	@ 0x1388
 8001914:	801a      	strh	r2, [r3, #0]
 8001916:	4b09      	ldr	r3, [pc, #36]	@ (800193c <charge_decode_source+0x8a>)
 8001918:	f001 0103 	and.w	r1, r1, #3
 800191c:	eb03 0341 	add.w	r3, r3, r1, lsl #1
 8001920:	8c1b      	ldrh	r3, [r3, #32]
 8001922:	e7e3      	b.n	80018ec <charge_decode_source+0x3a>
 8001924:	0611      	lsls	r1, r2, #24
 8001926:	d5c7      	bpl.n	80018b8 <charge_decode_source+0x6>
 8001928:	f241 3188 	movw	r1, #5000	@ 0x1388
 800192c:	8019      	strh	r1, [r3, #0]
 800192e:	f002 020f 	and.w	r2, r2, #15
 8001932:	4b02      	ldr	r3, [pc, #8]	@ (800193c <charge_decode_source+0x8a>)
 8001934:	f833 3012 	ldrh.w	r3, [r3, r2, lsl #1]
 8001938:	e7d8      	b.n	80018ec <charge_decode_source+0x3a>
 800193a:	bf00      	nop
 800193c:	08002370 	.word	0x08002370

08001940 <bq25798_encode_iindpm>:
 8001940:	b909      	cbnz	r1, 8001946 <bq25798_encode_iindpm+0x6>
 8001942:	2000      	movs	r0, #0
 8001944:	4770      	bx	lr
 8001946:	2a00      	cmp	r2, #0
 8001948:	d0fb      	beq.n	8001942 <bq25798_encode_iindpm+0x2>
 800194a:	f1a0 0364 	sub.w	r3, r0, #100	@ 0x64
 800194e:	f5b3 6f48 	cmp.w	r3, #3200	@ 0xc80
 8001952:	d8f6      	bhi.n	8001942 <bq25798_encode_iindpm+0x2>
 8001954:	230a      	movs	r3, #10
 8001956:	fbb0 f0f3 	udiv	r0, r0, r3
 800195a:	8008      	strh	r0, [r1, #0]
 800195c:	eb00 0080 	add.w	r0, r0, r0, lsl #2
 8001960:	0040      	lsls	r0, r0, #1
 8001962:	8010      	strh	r0, [r2, #0]
 8001964:	2001      	movs	r0, #1
 8001966:	4770      	bx	lr

08001968 <charge_manager_step>:
 8001968:	e92d 41ff 	stmdb	sp!, {r0, r1, r2, r3, r4, r5, r6, r7, r8, lr}
 800196c:	4604      	mov	r4, r0
 800196e:	460e      	mov	r6, r1
 8001970:	4615      	mov	r5, r2
 8001972:	b97a      	cbnz	r2, 8001994 <charge_manager_step+0x2c>
 8001974:	b130      	cbz	r0, 8001984 <charge_manager_step+0x1c>
 8001976:	6843      	ldr	r3, [r0, #4]
 8001978:	b113      	cbz	r3, 8001980 <charge_manager_step+0x18>
 800197a:	6800      	ldr	r0, [r0, #0]
 800197c:	4611      	mov	r1, r2
 800197e:	4798      	blx	r3
 8001980:	6923      	ldr	r3, [r4, #16]
 8001982:	b91b      	cbnz	r3, 800198c <charge_manager_step+0x24>
 8001984:	2008      	movs	r0, #8
 8001986:	b004      	add	sp, #16
 8001988:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}
 800198c:	6820      	ldr	r0, [r4, #0]
 800198e:	2101      	movs	r1, #1
 8001990:	4798      	blx	r3
 8001992:	e7f7      	b.n	8001984 <charge_manager_step+0x1c>
 8001994:	b140      	cbz	r0, 80019a8 <charge_manager_step+0x40>
 8001996:	6847      	ldr	r7, [r0, #4]
 8001998:	b137      	cbz	r7, 80019a8 <charge_manager_step+0x40>
 800199a:	6883      	ldr	r3, [r0, #8]
 800199c:	b123      	cbz	r3, 80019a8 <charge_manager_step+0x40>
 800199e:	68c3      	ldr	r3, [r0, #12]
 80019a0:	b113      	cbz	r3, 80019a8 <charge_manager_step+0x40>
 80019a2:	6903      	ldr	r3, [r0, #16]
 80019a4:	b103      	cbz	r3, 80019a8 <charge_manager_step+0x40>
 80019a6:	b931      	cbnz	r1, 80019b6 <charge_manager_step+0x4e>
 80019a8:	2208      	movs	r2, #8
 80019aa:	4629      	mov	r1, r5
 80019ac:	4620      	mov	r0, r4
 80019ae:	b004      	add	sp, #16
 80019b0:	e8bd 41f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, lr}
 80019b4:	e752      	b.n	800185c <safe_off>
 80019b6:	7a0b      	ldrb	r3, [r1, #8]
 80019b8:	b12b      	cbz	r3, 80019c6 <charge_manager_step+0x5e>
 80019ba:	7a4b      	ldrb	r3, [r1, #9]
 80019bc:	b11b      	cbz	r3, 80019c6 <charge_manager_step+0x5e>
 80019be:	88cb      	ldrh	r3, [r1, #6]
 80019c0:	f5b3 7ffa 	cmp.w	r3, #500	@ 0x1f4
 80019c4:	d901      	bls.n	80019ca <charge_manager_step+0x62>
 80019c6:	2207      	movs	r2, #7
 80019c8:	e7ef      	b.n	80019aa <charge_manager_step+0x42>
 80019ca:	7849      	ldrb	r1, [r1, #1]
 80019cc:	f011 0240 	ands.w	r2, r1, #64	@ 0x40
 80019d0:	d0eb      	beq.n	80019aa <charge_manager_step+0x42>
 80019d2:	7ab3      	ldrb	r3, [r6, #10]
 80019d4:	b90b      	cbnz	r3, 80019da <charge_manager_step+0x72>
 80019d6:	2205      	movs	r2, #5
 80019d8:	e7e7      	b.n	80019aa <charge_manager_step+0x42>
 80019da:	7af3      	ldrb	r3, [r6, #11]
 80019dc:	b90b      	cbnz	r3, 80019e2 <charge_manager_step+0x7a>
 80019de:	2206      	movs	r2, #6
 80019e0:	e7e3      	b.n	80019aa <charge_manager_step+0x42>
 80019e2:	2300      	movs	r3, #0
 80019e4:	f896 8000 	ldrb.w	r8, [r6]
 80019e8:	f8ad 3008 	strh.w	r3, [sp, #8]
 80019ec:	f8ad 300a 	strh.w	r3, [sp, #10]
 80019f0:	f10d 030a 	add.w	r3, sp, #10
 80019f4:	9300      	str	r3, [sp, #0]
 80019f6:	78b2      	ldrb	r2, [r6, #2]
 80019f8:	ab02      	add	r3, sp, #8
 80019fa:	4640      	mov	r0, r8
 80019fc:	f7ff ff59 	bl	80018b2 <charge_decode_source>
 8001a00:	b928      	cbnz	r0, 8001a0e <charge_manager_step+0xa6>
 8001a02:	f1b8 0f2f 	cmp.w	r8, #47	@ 0x2f
 8001a06:	bf94      	ite	ls
 8001a08:	2202      	movls	r2, #2
 8001a0a:	2203      	movhi	r2, #3
 8001a0c:	e7cd      	b.n	80019aa <charge_manager_step+0x42>
 8001a0e:	f8bd 2008 	ldrh.w	r2, [sp, #8]
 8001a12:	f242 3328 	movw	r3, #9000	@ 0x2328
 8001a16:	429a      	cmp	r2, r3
 8001a18:	88b2      	ldrh	r2, [r6, #4]
 8001a1a:	bf0b      	itete	eq
 8001a1c:	f641 71a4 	movweq	r1, #8100	@ 0x1fa4
 8001a20:	f241 1130 	movwne	r1, #4400	@ 0x1130
 8001a24:	f242 63ac 	movweq	r3, #9900	@ 0x26ac
 8001a28:	f241 537c 	movwne	r3, #5500	@ 0x157c
 8001a2c:	428a      	cmp	r2, r1
 8001a2e:	d301      	bcc.n	8001a34 <charge_manager_step+0xcc>
 8001a30:	429a      	cmp	r2, r3
 8001a32:	d901      	bls.n	8001a38 <charge_manager_step+0xd0>
 8001a34:	2204      	movs	r2, #4
 8001a36:	e7b8      	b.n	80019aa <charge_manager_step+0x42>
 8001a38:	f8bd 600a 	ldrh.w	r6, [sp, #10]
 8001a3c:	2300      	movs	r3, #0
 8001a3e:	f10d 020e 	add.w	r2, sp, #14
 8001a42:	a903      	add	r1, sp, #12
 8001a44:	4630      	mov	r0, r6
 8001a46:	f8ad 300e 	strh.w	r3, [sp, #14]
 8001a4a:	f7ff ff79 	bl	8001940 <bq25798_encode_iindpm>
 8001a4e:	b908      	cbnz	r0, 8001a54 <charge_manager_step+0xec>
 8001a50:	2202      	movs	r2, #2
 8001a52:	e7aa      	b.n	80019aa <charge_manager_step+0x42>
 8001a54:	786b      	ldrb	r3, [r5, #1]
 8001a56:	b16b      	cbz	r3, 8001a74 <charge_manager_step+0x10c>
 8001a58:	88aa      	ldrh	r2, [r5, #4]
 8001a5a:	f8bd 300e 	ldrh.w	r3, [sp, #14]
 8001a5e:	429a      	cmp	r2, r3
 8001a60:	d108      	bne.n	8001a74 <charge_manager_step+0x10c>
 8001a62:	88eb      	ldrh	r3, [r5, #6]
 8001a64:	f5b3 7f7a 	cmp.w	r3, #1000	@ 0x3e8
 8001a68:	d104      	bne.n	8001a74 <charge_manager_step+0x10c>
 8001a6a:	2301      	movs	r3, #1
 8001a6c:	702b      	strb	r3, [r5, #0]
 8001a6e:	806e      	strh	r6, [r5, #2]
 8001a70:	2001      	movs	r0, #1
 8001a72:	e788      	b.n	8001986 <charge_manager_step+0x1e>
 8001a74:	6820      	ldr	r0, [r4, #0]
 8001a76:	2100      	movs	r1, #0
 8001a78:	47b8      	blx	r7
 8001a7a:	2800      	cmp	r0, #0
 8001a7c:	d0a3      	beq.n	80019c6 <charge_manager_step+0x5e>
 8001a7e:	6923      	ldr	r3, [r4, #16]
 8001a80:	6820      	ldr	r0, [r4, #0]
 8001a82:	2101      	movs	r1, #1
 8001a84:	4798      	blx	r3
 8001a86:	2800      	cmp	r0, #0
 8001a88:	d09d      	beq.n	80019c6 <charge_manager_step+0x5e>
 8001a8a:	f8bd 700e 	ldrh.w	r7, [sp, #14]
 8001a8e:	68a3      	ldr	r3, [r4, #8]
 8001a90:	6820      	ldr	r0, [r4, #0]
 8001a92:	4639      	mov	r1, r7
 8001a94:	4798      	blx	r3
 8001a96:	2800      	cmp	r0, #0
 8001a98:	d095      	beq.n	80019c6 <charge_manager_step+0x5e>
 8001a9a:	68e3      	ldr	r3, [r4, #12]
 8001a9c:	6820      	ldr	r0, [r4, #0]
 8001a9e:	f44f 717a 	mov.w	r1, #1000	@ 0x3e8
 8001aa2:	4798      	blx	r3
 8001aa4:	2800      	cmp	r0, #0
 8001aa6:	d08e      	beq.n	80019c6 <charge_manager_step+0x5e>
 8001aa8:	6923      	ldr	r3, [r4, #16]
 8001aaa:	6820      	ldr	r0, [r4, #0]
 8001aac:	2100      	movs	r1, #0
 8001aae:	4798      	blx	r3
 8001ab0:	2800      	cmp	r0, #0
 8001ab2:	d088      	beq.n	80019c6 <charge_manager_step+0x5e>
 8001ab4:	6863      	ldr	r3, [r4, #4]
 8001ab6:	6820      	ldr	r0, [r4, #0]
 8001ab8:	2101      	movs	r1, #1
 8001aba:	4798      	blx	r3
 8001abc:	2800      	cmp	r0, #0
 8001abe:	d082      	beq.n	80019c6 <charge_manager_step+0x5e>
 8001ac0:	f240 1301 	movw	r3, #257	@ 0x101
 8001ac4:	802b      	strh	r3, [r5, #0]
 8001ac6:	f44f 737a 	mov.w	r3, #1000	@ 0x3e8
 8001aca:	806e      	strh	r6, [r5, #2]
 8001acc:	80af      	strh	r7, [r5, #4]
 8001ace:	80eb      	strh	r3, [r5, #6]
 8001ad0:	e7ce      	b.n	8001a70 <charge_manager_step+0x108>
 8001ad2:	bf00      	nop

08001ad4 <io_valid>:
 8001ad4:	b908      	cbnz	r0, 8001ada <io_valid+0x6>
 8001ad6:	2000      	movs	r0, #0
 8001ad8:	4770      	bx	lr
 8001ada:	6843      	ldr	r3, [r0, #4]
 8001adc:	2b00      	cmp	r3, #0
 8001ade:	d0fa      	beq.n	8001ad6 <io_valid+0x2>
 8001ae0:	6883      	ldr	r3, [r0, #8]
 8001ae2:	2b00      	cmp	r3, #0
 8001ae4:	d0f7      	beq.n	8001ad6 <io_valid+0x2>
 8001ae6:	68c3      	ldr	r3, [r0, #12]
 8001ae8:	2b00      	cmp	r3, #0
 8001aea:	d0f4      	beq.n	8001ad6 <io_valid+0x2>
 8001aec:	6900      	ldr	r0, [r0, #16]
 8001aee:	3800      	subs	r0, #0
 8001af0:	bf18      	it	ne
 8001af2:	2001      	movne	r0, #1
 8001af4:	4770      	bx	lr

08001af6 <rd>:
 8001af6:	b410      	push	{r4}
 8001af8:	f89d 4004 	ldrb.w	r4, [sp, #4]
 8001afc:	b128      	cbz	r0, 8001b0a <rd+0x14>
 8001afe:	9401      	str	r4, [sp, #4]
 8001b00:	e9d0 0400 	ldrd	r0, r4, [r0]
 8001b04:	46a4      	mov	ip, r4
 8001b06:	bc10      	pop	{r4}
 8001b08:	4760      	bx	ip
 8001b0a:	bc10      	pop	{r4}
 8001b0c:	4770      	bx	lr

08001b0e <read8>:
 8001b0e:	b507      	push	{r0, r1, r2, lr}
 8001b10:	4613      	mov	r3, r2
 8001b12:	2201      	movs	r2, #1
 8001b14:	9200      	str	r2, [sp, #0]
 8001b16:	460a      	mov	r2, r1
 8001b18:	216b      	movs	r1, #107	@ 0x6b
 8001b1a:	f7ff ffec 	bl	8001af6 <rd>
 8001b1e:	b003      	add	sp, #12
 8001b20:	bd00      	pop	{pc}

08001b22 <ce>:
 8001b22:	b110      	cbz	r0, 8001b2a <ce+0x8>
 8001b24:	68c3      	ldr	r3, [r0, #12]
 8001b26:	6800      	ldr	r0, [r0, #0]
 8001b28:	4718      	bx	r3
 8001b2a:	4770      	bx	lr

08001b2c <wr.constprop.0>:
 8001b2c:	b513      	push	{r0, r1, r4, lr}
 8001b2e:	b130      	cbz	r0, 8001b3e <wr.constprop.0+0x12>
 8001b30:	9300      	str	r3, [sp, #0]
 8001b32:	6884      	ldr	r4, [r0, #8]
 8001b34:	6800      	ldr	r0, [r0, #0]
 8001b36:	4613      	mov	r3, r2
 8001b38:	460a      	mov	r2, r1
 8001b3a:	216b      	movs	r1, #107	@ 0x6b
 8001b3c:	47a0      	blx	r4
 8001b3e:	b002      	add	sp, #8
 8001b40:	bd10      	pop	{r4, pc}

08001b42 <write16_verify.constprop.0>:
 8001b42:	b57f      	push	{r0, r1, r2, r3, r4, r5, r6, lr}
 8001b44:	ba53      	rev16	r3, r2
 8001b46:	4614      	mov	r4, r2
 8001b48:	f8ad 3008 	strh.w	r3, [sp, #8]
 8001b4c:	aa02      	add	r2, sp, #8
 8001b4e:	2302      	movs	r3, #2
 8001b50:	4605      	mov	r5, r0
 8001b52:	460e      	mov	r6, r1
 8001b54:	f7ff ffea 	bl	8001b2c <wr.constprop.0>
 8001b58:	b190      	cbz	r0, 8001b80 <write16_verify.constprop.0+0x3e>
 8001b5a:	2302      	movs	r3, #2
 8001b5c:	9300      	str	r3, [sp, #0]
 8001b5e:	4632      	mov	r2, r6
 8001b60:	ab03      	add	r3, sp, #12
 8001b62:	216b      	movs	r1, #107	@ 0x6b
 8001b64:	4628      	mov	r0, r5
 8001b66:	f7ff ffc6 	bl	8001af6 <rd>
 8001b6a:	b148      	cbz	r0, 8001b80 <write16_verify.constprop.0+0x3e>
 8001b6c:	f8bd 300c 	ldrh.w	r3, [sp, #12]
 8001b70:	ba5b      	rev16	r3, r3
 8001b72:	ea84 0003 	eor.w	r0, r4, r3
 8001b76:	f3c0 0008 	ubfx	r0, r0, #0, #9
 8001b7a:	fab0 f080 	clz	r0, r0
 8001b7e:	0940      	lsrs	r0, r0, #5
 8001b80:	b004      	add	sp, #16
 8001b82:	bd70      	pop	{r4, r5, r6, pc}

08001b84 <charge_limit>:
 8001b84:	b178      	cbz	r0, 8001ba6 <charge_limit+0x22>
 8001b86:	f1a1 0332 	sub.w	r3, r1, #50	@ 0x32
 8001b8a:	b29b      	uxth	r3, r3
 8001b8c:	f241 3256 	movw	r2, #4950	@ 0x1356
 8001b90:	4293      	cmp	r3, r2
 8001b92:	d808      	bhi.n	8001ba6 <charge_limit+0x22>
 8001b94:	230a      	movs	r3, #10
 8001b96:	fbb1 f2f3 	udiv	r2, r1, r3
 8001b9a:	fb03 1112 	mls	r1, r3, r2, r1
 8001b9e:	b289      	uxth	r1, r1
 8001ba0:	b909      	cbnz	r1, 8001ba6 <charge_limit+0x22>
 8001ba2:	2103      	movs	r1, #3
 8001ba4:	e7cd      	b.n	8001b42 <write16_verify.constprop.0>
 8001ba6:	2000      	movs	r0, #0
 8001ba8:	4770      	bx	lr

08001baa <input_limit>:
 8001baa:	b168      	cbz	r0, 8001bc8 <input_limit+0x1e>
 8001bac:	f1a1 0364 	sub.w	r3, r1, #100	@ 0x64
 8001bb0:	f5b3 6f48 	cmp.w	r3, #3200	@ 0xc80
 8001bb4:	d808      	bhi.n	8001bc8 <input_limit+0x1e>
 8001bb6:	230a      	movs	r3, #10
 8001bb8:	fbb1 f2f3 	udiv	r2, r1, r3
 8001bbc:	fb03 1112 	mls	r1, r3, r2, r1
 8001bc0:	b289      	uxth	r1, r1
 8001bc2:	b909      	cbnz	r1, 8001bc8 <input_limit+0x1e>
 8001bc4:	2106      	movs	r1, #6
 8001bc6:	e7bc      	b.n	8001b42 <write16_verify.constprop.0>
 8001bc8:	2000      	movs	r0, #0
 8001bca:	4770      	bx	lr

08001bcc <write8_verify>:
 8001bcc:	b57f      	push	{r0, r1, r2, r3, r4, r5, r6, lr}
 8001bce:	461c      	mov	r4, r3
 8001bd0:	2300      	movs	r3, #0
 8001bd2:	f88d 2007 	strb.w	r2, [sp, #7]
 8001bd6:	f88d 300f 	strb.w	r3, [sp, #15]
 8001bda:	f10d 0207 	add.w	r2, sp, #7
 8001bde:	2301      	movs	r3, #1
 8001be0:	4605      	mov	r5, r0
 8001be2:	460e      	mov	r6, r1
 8001be4:	f7ff ffa2 	bl	8001b2c <wr.constprop.0>
 8001be8:	b178      	cbz	r0, 8001c0a <write8_verify+0x3e>
 8001bea:	f10d 020f 	add.w	r2, sp, #15
 8001bee:	4631      	mov	r1, r6
 8001bf0:	4628      	mov	r0, r5
 8001bf2:	f7ff ff8c 	bl	8001b0e <read8>
 8001bf6:	b140      	cbz	r0, 8001c0a <write8_verify+0x3e>
 8001bf8:	f89d 300f 	ldrb.w	r3, [sp, #15]
 8001bfc:	f89d 2007 	ldrb.w	r2, [sp, #7]
 8001c00:	4053      	eors	r3, r2
 8001c02:	421c      	tst	r4, r3
 8001c04:	bf0c      	ite	eq
 8001c06:	2001      	moveq	r0, #1
 8001c08:	2000      	movne	r0, #0
 8001c0a:	b004      	add	sp, #16
 8001c0c:	bd70      	pop	{r4, r5, r6, pc}

08001c0e <ext_ilim>:
 8001c0e:	b537      	push	{r0, r1, r2, r4, r5, lr}
 8001c10:	2300      	movs	r3, #0
 8001c12:	4604      	mov	r4, r0
 8001c14:	460d      	mov	r5, r1
 8001c16:	f88d 3007 	strb.w	r3, [sp, #7]
 8001c1a:	b188      	cbz	r0, 8001c40 <ext_ilim+0x32>
 8001c1c:	f10d 0207 	add.w	r2, sp, #7
 8001c20:	2114      	movs	r1, #20
 8001c22:	f7ff ff74 	bl	8001b0e <read8>
 8001c26:	b158      	cbz	r0, 8001c40 <ext_ilim+0x32>
 8001c28:	f89d 2007 	ldrb.w	r2, [sp, #7]
 8001c2c:	b155      	cbz	r5, 8001c44 <ext_ilim+0x36>
 8001c2e:	f042 0202 	orr.w	r2, r2, #2
 8001c32:	2302      	movs	r3, #2
 8001c34:	2114      	movs	r1, #20
 8001c36:	4620      	mov	r0, r4
 8001c38:	f88d 2007 	strb.w	r2, [sp, #7]
 8001c3c:	f7ff ffc6 	bl	8001bcc <write8_verify>
 8001c40:	b003      	add	sp, #12
 8001c42:	bd30      	pop	{r4, r5, pc}
 8001c44:	f002 02fd 	and.w	r2, r2, #253	@ 0xfd
 8001c48:	e7f3      	b.n	8001c32 <ext_ilim+0x24>

08001c4a <charge_registers_init>:
 8001c4a:	b573      	push	{r0, r1, r4, r5, r6, lr}
 8001c4c:	4604      	mov	r4, r0
 8001c4e:	460d      	mov	r5, r1
 8001c50:	b910      	cbnz	r0, 8001c58 <charge_registers_init+0xe>
 8001c52:	2000      	movs	r0, #0
 8001c54:	b002      	add	sp, #8
 8001c56:	bd70      	pop	{r4, r5, r6, pc}
 8001c58:	4608      	mov	r0, r1
 8001c5a:	f7ff ff3b 	bl	8001ad4 <io_valid>
 8001c5e:	2800      	cmp	r0, #0
 8001c60:	d0f8      	beq.n	8001c54 <charge_registers_init+0xa>
 8001c62:	2214      	movs	r2, #20
 8001c64:	2100      	movs	r1, #0
 8001c66:	4620      	mov	r0, r4
 8001c68:	f7fe fc39 	bl	80004de <memset>
 8001c6c:	cd0f      	ldmia	r5!, {r0, r1, r2, r3}
 8001c6e:	4626      	mov	r6, r4
 8001c70:	c60f      	stmia	r6!, {r0, r1, r2, r3}
 8001c72:	682b      	ldr	r3, [r5, #0]
 8001c74:	6033      	str	r3, [r6, #0]
 8001c76:	6820      	ldr	r0, [r4, #0]
 8001c78:	68e3      	ldr	r3, [r4, #12]
 8001c7a:	2100      	movs	r1, #0
 8001c7c:	4798      	blx	r3
 8001c7e:	2800      	cmp	r0, #0
 8001c80:	d0e8      	beq.n	8001c54 <charge_registers_init+0xa>
 8001c82:	2500      	movs	r5, #0
 8001c84:	f10d 0205 	add.w	r2, sp, #5
 8001c88:	2109      	movs	r1, #9
 8001c8a:	4620      	mov	r0, r4
 8001c8c:	f88d 5005 	strb.w	r5, [sp, #5]
 8001c90:	f7ff ff3d 	bl	8001b0e <read8>
 8001c94:	2800      	cmp	r0, #0
 8001c96:	d0dd      	beq.n	8001c54 <charge_registers_init+0xa>
 8001c98:	f89d 2005 	ldrb.w	r2, [sp, #5]
 8001c9c:	2320      	movs	r3, #32
 8001c9e:	f042 0220 	orr.w	r2, r2, #32
 8001ca2:	2109      	movs	r1, #9
 8001ca4:	4620      	mov	r0, r4
 8001ca6:	f88d 2005 	strb.w	r2, [sp, #5]
 8001caa:	f7ff ff8f 	bl	8001bcc <write8_verify>
 8001cae:	2800      	cmp	r0, #0
 8001cb0:	d0d0      	beq.n	8001c54 <charge_registers_init+0xa>
 8001cb2:	f10d 0206 	add.w	r2, sp, #6
 8001cb6:	2110      	movs	r1, #16
 8001cb8:	4620      	mov	r0, r4
 8001cba:	f88d 5006 	strb.w	r5, [sp, #6]
 8001cbe:	f7ff ff26 	bl	8001b0e <read8>
 8001cc2:	2800      	cmp	r0, #0
 8001cc4:	d0c6      	beq.n	8001c54 <charge_registers_init+0xa>
 8001cc6:	f89d 3006 	ldrb.w	r3, [sp, #6]
 8001cca:	f023 030f 	bic.w	r3, r3, #15
 8001cce:	f043 030d 	orr.w	r3, r3, #13
 8001cd2:	f88d 3006 	strb.w	r3, [sp, #6]
 8001cd6:	f10d 0206 	add.w	r2, sp, #6
 8001cda:	2301      	movs	r3, #1
 8001cdc:	2110      	movs	r1, #16
 8001cde:	4620      	mov	r0, r4
 8001ce0:	f7ff ff24 	bl	8001b2c <wr.constprop.0>
 8001ce4:	2800      	cmp	r0, #0
 8001ce6:	d0b5      	beq.n	8001c54 <charge_registers_init+0xa>
 8001ce8:	f10d 0206 	add.w	r2, sp, #6
 8001cec:	2110      	movs	r1, #16
 8001cee:	4620      	mov	r0, r4
 8001cf0:	f7ff ff0d 	bl	8001b0e <read8>
 8001cf4:	2800      	cmp	r0, #0
 8001cf6:	d0ad      	beq.n	8001c54 <charge_registers_init+0xa>
 8001cf8:	f89d 3006 	ldrb.w	r3, [sp, #6]
 8001cfc:	f003 030f 	and.w	r3, r3, #15
 8001d00:	2b05      	cmp	r3, #5
 8001d02:	d1a6      	bne.n	8001c52 <charge_registers_init+0x8>
 8001d04:	f10d 0207 	add.w	r2, sp, #7
 8001d08:	212e      	movs	r1, #46	@ 0x2e
 8001d0a:	4620      	mov	r0, r4
 8001d0c:	f88d 5007 	strb.w	r5, [sp, #7]
 8001d10:	f7ff fefd 	bl	8001b0e <read8>
 8001d14:	2800      	cmp	r0, #0
 8001d16:	d09d      	beq.n	8001c54 <charge_registers_init+0xa>
 8001d18:	f89d 2007 	ldrb.w	r2, [sp, #7]
 8001d1c:	f002 020f 	and.w	r2, r2, #15
 8001d20:	f042 0280 	orr.w	r2, r2, #128	@ 0x80
 8001d24:	23f0      	movs	r3, #240	@ 0xf0
 8001d26:	212e      	movs	r1, #46	@ 0x2e
 8001d28:	4620      	mov	r0, r4
 8001d2a:	f88d 2007 	strb.w	r2, [sp, #7]
 8001d2e:	f7ff ff4d 	bl	8001bcc <write8_verify>
 8001d32:	e78f      	b.n	8001c54 <charge_registers_init+0xa>

08001d34 <charge_registers_kick_watchdog>:
 8001d34:	b513      	push	{r0, r1, r4, lr}
 8001d36:	2300      	movs	r3, #0
 8001d38:	f10d 0207 	add.w	r2, sp, #7
 8001d3c:	2110      	movs	r1, #16
 8001d3e:	4604      	mov	r4, r0
 8001d40:	f88d 3007 	strb.w	r3, [sp, #7]
 8001d44:	f7ff fee3 	bl	8001b0e <read8>
 8001d48:	b1d8      	cbz	r0, 8001d82 <charge_registers_kick_watchdog+0x4e>
 8001d4a:	f89d 3007 	ldrb.w	r3, [sp, #7]
 8001d4e:	f043 0308 	orr.w	r3, r3, #8
 8001d52:	f88d 3007 	strb.w	r3, [sp, #7]
 8001d56:	f10d 0207 	add.w	r2, sp, #7
 8001d5a:	2301      	movs	r3, #1
 8001d5c:	2110      	movs	r1, #16
 8001d5e:	4620      	mov	r0, r4
 8001d60:	f7ff fee4 	bl	8001b2c <wr.constprop.0>
 8001d64:	b168      	cbz	r0, 8001d82 <charge_registers_kick_watchdog+0x4e>
 8001d66:	f10d 0207 	add.w	r2, sp, #7
 8001d6a:	2110      	movs	r1, #16
 8001d6c:	4620      	mov	r0, r4
 8001d6e:	f7ff fece 	bl	8001b0e <read8>
 8001d72:	b130      	cbz	r0, 8001d82 <charge_registers_kick_watchdog+0x4e>
 8001d74:	f89d 0007 	ldrb.w	r0, [sp, #7]
 8001d78:	f000 000f 	and.w	r0, r0, #15
 8001d7c:	1f43      	subs	r3, r0, #5
 8001d7e:	4258      	negs	r0, r3
 8001d80:	4158      	adcs	r0, r3
 8001d82:	b002      	add	sp, #8
 8001d84:	bd10      	pop	{r4, pc}

08001d86 <charge_registers_observe>:
 8001d86:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
 8001d8a:	4605      	mov	r5, r0
 8001d8c:	b088      	sub	sp, #32
 8001d8e:	460c      	mov	r4, r1
 8001d90:	b918      	cbnz	r0, 8001d9a <charge_registers_observe+0x14>
 8001d92:	2000      	movs	r0, #0
 8001d94:	b008      	add	sp, #32
 8001d96:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
 8001d9a:	2900      	cmp	r1, #0
 8001d9c:	d0f9      	beq.n	8001d92 <charge_registers_observe+0xc>
 8001d9e:	f7ff fe99 	bl	8001ad4 <io_valid>
 8001da2:	2800      	cmp	r0, #0
 8001da4:	d0f6      	beq.n	8001d94 <charge_registers_observe+0xe>
 8001da6:	220c      	movs	r2, #12
 8001da8:	2100      	movs	r1, #0
 8001daa:	4620      	mov	r0, r4
 8001dac:	f7fe fb97 	bl	80004de <memset>
 8001db0:	692b      	ldr	r3, [r5, #16]
 8001db2:	6828      	ldr	r0, [r5, #0]
 8001db4:	4798      	blx	r3
 8001db6:	2303      	movs	r3, #3
 8001db8:	2200      	movs	r2, #0
 8001dba:	9300      	str	r3, [sp, #0]
 8001dbc:	4606      	mov	r6, r0
 8001dbe:	ab05      	add	r3, sp, #20
 8001dc0:	2108      	movs	r1, #8
 8001dc2:	4628      	mov	r0, r5
 8001dc4:	f8ad 2014 	strh.w	r2, [sp, #20]
 8001dc8:	f88d 2016 	strb.w	r2, [sp, #22]
 8001dcc:	f7ff fe93 	bl	8001af6 <rd>
 8001dd0:	7220      	strb	r0, [r4, #8]
 8001dd2:	b128      	cbz	r0, 8001de0 <charge_registers_observe+0x5a>
 8001dd4:	f89d 3016 	ldrb.w	r3, [sp, #22]
 8001dd8:	f8bd 2014 	ldrh.w	r2, [sp, #20]
 8001ddc:	8022      	strh	r2, [r4, #0]
 8001dde:	70a3      	strb	r3, [r4, #2]
 8001de0:	2300      	movs	r3, #0
 8001de2:	9306      	str	r3, [sp, #24]
 8001de4:	f88d 300e 	strb.w	r3, [sp, #14]
 8001de8:	f8cd 301b 	str.w	r3, [sp, #27]
 8001dec:	f88d 300f 	strb.w	r3, [sp, #15]
 8001df0:	f8ad 3010 	strh.w	r3, [sp, #16]
 8001df4:	2307      	movs	r3, #7
 8001df6:	9300      	str	r3, [sp, #0]
 8001df8:	221b      	movs	r2, #27
 8001dfa:	ab06      	add	r3, sp, #24
 8001dfc:	216b      	movs	r1, #107	@ 0x6b
 8001dfe:	4628      	mov	r0, r5
 8001e00:	f7ff fe79 	bl	8001af6 <rd>
 8001e04:	f04f 0801 	mov.w	r8, #1
 8001e08:	f10d 030e 	add.w	r3, sp, #14
 8001e0c:	2218      	movs	r2, #24
 8001e0e:	216b      	movs	r1, #107	@ 0x6b
 8001e10:	4682      	mov	sl, r0
 8001e12:	f8cd 8000 	str.w	r8, [sp]
 8001e16:	4628      	mov	r0, r5
 8001e18:	f7ff fe6d 	bl	8001af6 <rd>
 8001e1c:	f10d 020f 	add.w	r2, sp, #15
 8001e20:	212e      	movs	r1, #46	@ 0x2e
 8001e22:	4607      	mov	r7, r0
 8001e24:	4628      	mov	r0, r5
 8001e26:	f7ff fe72 	bl	8001b0e <read8>
 8001e2a:	2302      	movs	r3, #2
 8001e2c:	4681      	mov	r9, r0
 8001e2e:	9300      	str	r3, [sp, #0]
 8001e30:	2235      	movs	r2, #53	@ 0x35
 8001e32:	ab04      	add	r3, sp, #16
 8001e34:	216b      	movs	r1, #107	@ 0x6b
 8001e36:	4628      	mov	r0, r5
 8001e38:	f7ff fe5d 	bl	8001af6 <rd>
 8001e3c:	b380      	cbz	r0, 8001ea0 <charge_registers_observe+0x11a>
 8001e3e:	ea07 070a 	and.w	r7, r7, sl
 8001e42:	b2ff      	uxtb	r7, r7
 8001e44:	b367      	cbz	r7, 8001ea0 <charge_registers_observe+0x11a>
 8001e46:	f1b9 0f00 	cmp.w	r9, #0
 8001e4a:	d029      	beq.n	8001ea0 <charge_registers_observe+0x11a>
 8001e4c:	f8bd e010 	ldrh.w	lr, [sp, #16]
 8001e50:	f89d 2018 	ldrb.w	r2, [sp, #24]
 8001e54:	f89d 301b 	ldrb.w	r3, [sp, #27]
 8001e58:	f89d 701d 	ldrb.w	r7, [sp, #29]
 8001e5c:	f89d 001e 	ldrb.w	r0, [sp, #30]
 8001e60:	f89d c01a 	ldrb.w	ip, [sp, #26]
 8001e64:	f89d 101c 	ldrb.w	r1, [sp, #28]
 8001e68:	f884 8009 	strb.w	r8, [r4, #9]
 8001e6c:	fa9e fe9e 	rev16.w	lr, lr
 8001e70:	f8a4 e004 	strh.w	lr, [r4, #4]
 8001e74:	f003 030e 	and.w	r3, r3, #14
 8001e78:	f002 0e20 	and.w	lr, r2, #32
 8001e7c:	ea43 030e 	orr.w	r3, r3, lr
 8001e80:	f007 077f 	and.w	r7, r7, #127	@ 0x7f
 8001e84:	433b      	orrs	r3, r7
 8001e86:	f020 000b 	bic.w	r0, r0, #11
 8001e8a:	4303      	orrs	r3, r0
 8001e8c:	bf0c      	ite	eq
 8001e8e:	4643      	moveq	r3, r8
 8001e90:	2300      	movne	r3, #0
 8001e92:	f01c 0f01 	tst.w	ip, #1
 8001e96:	72e3      	strb	r3, [r4, #11]
 8001e98:	d114      	bne.n	8001ec4 <charge_registers_observe+0x13e>
 8001e9a:	2300      	movs	r3, #0
 8001e9c:	72a3      	strb	r3, [r4, #10]
 8001e9e:	e001      	b.n	8001ea4 <charge_registers_observe+0x11e>
 8001ea0:	2300      	movs	r3, #0
 8001ea2:	7263      	strb	r3, [r4, #9]
 8001ea4:	692b      	ldr	r3, [r5, #16]
 8001ea6:	6828      	ldr	r0, [r5, #0]
 8001ea8:	4798      	blx	r3
 8001eaa:	f64f 73ff 	movw	r3, #65535	@ 0xffff
 8001eae:	1b80      	subs	r0, r0, r6
 8001eb0:	4298      	cmp	r0, r3
 8001eb2:	bf28      	it	cs
 8001eb4:	4618      	movcs	r0, r3
 8001eb6:	80e0      	strh	r0, [r4, #6]
 8001eb8:	7a20      	ldrb	r0, [r4, #8]
 8001eba:	2800      	cmp	r0, #0
 8001ebc:	f43f af6a 	beq.w	8001d94 <charge_registers_observe+0xe>
 8001ec0:	7a60      	ldrb	r0, [r4, #9]
 8001ec2:	e767      	b.n	8001d94 <charge_registers_observe+0xe>
 8001ec4:	f89d 300e 	ldrb.w	r3, [sp, #14]
 8001ec8:	f001 010f 	and.w	r1, r1, #15
 8001ecc:	f003 0301 	and.w	r3, r3, #1
 8001ed0:	430b      	orrs	r3, r1
 8001ed2:	d1e2      	bne.n	8001e9a <charge_registers_observe+0x114>
 8001ed4:	f99d 300f 	ldrsb.w	r3, [sp, #15]
 8001ed8:	2b00      	cmp	r3, #0
 8001eda:	dade      	bge.n	8001e9a <charge_registers_observe+0x114>
 8001edc:	f002 0301 	and.w	r3, r2, #1
 8001ee0:	e7dc      	b.n	8001e9c <charge_registers_observe+0x116>

08001ee2 <charge_registers_make_hal>:
 8001ee2:	4b05      	ldr	r3, [pc, #20]	@ (8001ef8 <charge_registers_make_hal+0x16>)
 8001ee4:	6043      	str	r3, [r0, #4]
 8001ee6:	4b05      	ldr	r3, [pc, #20]	@ (8001efc <charge_registers_make_hal+0x1a>)
 8001ee8:	6083      	str	r3, [r0, #8]
 8001eea:	4b05      	ldr	r3, [pc, #20]	@ (8001f00 <charge_registers_make_hal+0x1e>)
 8001eec:	60c3      	str	r3, [r0, #12]
 8001eee:	4b05      	ldr	r3, [pc, #20]	@ (8001f04 <charge_registers_make_hal+0x22>)
 8001ef0:	6001      	str	r1, [r0, #0]
 8001ef2:	6103      	str	r3, [r0, #16]
 8001ef4:	4770      	bx	lr
 8001ef6:	bf00      	nop
 8001ef8:	08001b23 	.word	0x08001b23
 8001efc:	08001bab 	.word	0x08001bab
 8001f00:	08001b85 	.word	0x08001b85
 8001f04:	08001c0f 	.word	0x08001c0f

08001f08 <__aeabi_ldivmod>:
 8001f08:	b97b      	cbnz	r3, 8001f2a <__aeabi_ldivmod+0x22>
 8001f0a:	b972      	cbnz	r2, 8001f2a <__aeabi_ldivmod+0x22>
 8001f0c:	2900      	cmp	r1, #0
 8001f0e:	bfbe      	ittt	lt
 8001f10:	2000      	movlt	r0, #0
 8001f12:	f04f 4100 	movlt.w	r1, #2147483648	@ 0x80000000
 8001f16:	e006      	blt.n	8001f26 <__aeabi_ldivmod+0x1e>
 8001f18:	bf08      	it	eq
 8001f1a:	2800      	cmpeq	r0, #0
 8001f1c:	bf1c      	itt	ne
 8001f1e:	f06f 4100 	mvnne.w	r1, #2147483648	@ 0x80000000
 8001f22:	f04f 30ff 	movne.w	r0, #4294967295	@ 0xffffffff
 8001f26:	f7fe baf6 	b.w	8000516 <__aeabi_ldiv0>
 8001f2a:	f1ad 0c08 	sub.w	ip, sp, #8
 8001f2e:	e96d ce04 	strd	ip, lr, [sp, #-16]!
 8001f32:	2900      	cmp	r1, #0
 8001f34:	db09      	blt.n	8001f4a <__aeabi_ldivmod+0x42>
 8001f36:	2b00      	cmp	r3, #0
 8001f38:	db1a      	blt.n	8001f70 <__aeabi_ldivmod+0x68>
 8001f3a:	f000 f84d 	bl	8001fd8 <__udivmoddi4>
 8001f3e:	f8dd e004 	ldr.w	lr, [sp, #4]
 8001f42:	e9dd 2302 	ldrd	r2, r3, [sp, #8]
 8001f46:	b004      	add	sp, #16
 8001f48:	4770      	bx	lr
 8001f4a:	4240      	negs	r0, r0
 8001f4c:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1
 8001f50:	2b00      	cmp	r3, #0
 8001f52:	db1b      	blt.n	8001f8c <__aeabi_ldivmod+0x84>
 8001f54:	f000 f840 	bl	8001fd8 <__udivmoddi4>
 8001f58:	f8dd e004 	ldr.w	lr, [sp, #4]
 8001f5c:	e9dd 2302 	ldrd	r2, r3, [sp, #8]
 8001f60:	b004      	add	sp, #16
 8001f62:	4240      	negs	r0, r0
 8001f64:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1
 8001f68:	4252      	negs	r2, r2
 8001f6a:	eb63 0343 	sbc.w	r3, r3, r3, lsl #1
 8001f6e:	4770      	bx	lr
 8001f70:	4252      	negs	r2, r2
 8001f72:	eb63 0343 	sbc.w	r3, r3, r3, lsl #1
 8001f76:	f000 f82f 	bl	8001fd8 <__udivmoddi4>
 8001f7a:	f8dd e004 	ldr.w	lr, [sp, #4]
 8001f7e:	e9dd 2302 	ldrd	r2, r3, [sp, #8]
 8001f82:	b004      	add	sp, #16
 8001f84:	4240      	negs	r0, r0
 8001f86:	eb61 0141 	sbc.w	r1, r1, r1, lsl #1
 8001f8a:	4770      	bx	lr
 8001f8c:	4252      	negs	r2, r2
 8001f8e:	eb63 0343 	sbc.w	r3, r3, r3, lsl #1
 8001f92:	f000 f821 	bl	8001fd8 <__udivmoddi4>
 8001f96:	f8dd e004 	ldr.w	lr, [sp, #4]
 8001f9a:	e9dd 2302 	ldrd	r2, r3, [sp, #8]
 8001f9e:	b004      	add	sp, #16
 8001fa0:	4252      	negs	r2, r2
 8001fa2:	eb63 0343 	sbc.w	r3, r3, r3, lsl #1
 8001fa6:	4770      	bx	lr

08001fa8 <__aeabi_uldivmod>:
 8001fa8:	b953      	cbnz	r3, 8001fc0 <__aeabi_uldivmod+0x18>
 8001faa:	b94a      	cbnz	r2, 8001fc0 <__aeabi_uldivmod+0x18>
 8001fac:	2900      	cmp	r1, #0
 8001fae:	bf08      	it	eq
 8001fb0:	2800      	cmpeq	r0, #0
 8001fb2:	bf1c      	itt	ne
 8001fb4:	f04f 31ff 	movne.w	r1, #4294967295	@ 0xffffffff
 8001fb8:	f04f 30ff 	movne.w	r0, #4294967295	@ 0xffffffff
 8001fbc:	f7fe baab 	b.w	8000516 <__aeabi_ldiv0>
 8001fc0:	f1ad 0c08 	sub.w	ip, sp, #8
 8001fc4:	e96d ce04 	strd	ip, lr, [sp, #-16]!
 8001fc8:	f000 f806 	bl	8001fd8 <__udivmoddi4>
 8001fcc:	f8dd e004 	ldr.w	lr, [sp, #4]
 8001fd0:	e9dd 2302 	ldrd	r2, r3, [sp, #8]
 8001fd4:	b004      	add	sp, #16
 8001fd6:	4770      	bx	lr

08001fd8 <__udivmoddi4>:
 8001fd8:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
 8001fdc:	4606      	mov	r6, r0
 8001fde:	f8dd e020 	ldr.w	lr, [sp, #32]
 8001fe2:	4608      	mov	r0, r1
 8001fe4:	46b4      	mov	ip, r6
 8001fe6:	2b00      	cmp	r3, #0
 8001fe8:	d155      	bne.n	8002096 <__udivmoddi4+0xbe>
 8001fea:	428a      	cmp	r2, r1
 8001fec:	4615      	mov	r5, r2
 8001fee:	d974      	bls.n	80020da <__udivmoddi4+0x102>
 8001ff0:	fab2 f482 	clz	r4, r2
 8001ff4:	429c      	cmp	r4, r3
 8001ff6:	f1c4 0220 	rsb	r2, r4, #32
 8001ffa:	fa05 f304 	lsl.w	r3, r5, r4
 8001ffe:	bf18      	it	ne
 8002000:	461d      	movne	r5, r3
 8002002:	fa26 f202 	lsr.w	r2, r6, r2
 8002006:	fa01 f304 	lsl.w	r3, r1, r4
 800200a:	ea42 0203 	orr.w	r2, r2, r3
 800200e:	fa06 f304 	lsl.w	r3, r6, r4
 8002012:	bf0c      	ite	eq
 8002014:	460a      	moveq	r2, r1
 8002016:	469c      	movne	ip, r3
 8002018:	0c2e      	lsrs	r6, r5, #16
 800201a:	b2af      	uxth	r7, r5
 800201c:	fbb2 f1f6 	udiv	r1, r2, r6
 8002020:	ea4f 431c 	mov.w	r3, ip, lsr #16
 8002024:	fb06 2211 	mls	r2, r6, r1, r2
 8002028:	ea43 4302 	orr.w	r3, r3, r2, lsl #16
 800202c:	fb01 f207 	mul.w	r2, r1, r7
 8002030:	429a      	cmp	r2, r3
 8002032:	d909      	bls.n	8002048 <__udivmoddi4+0x70>
 8002034:	18eb      	adds	r3, r5, r3
 8002036:	f101 30ff 	add.w	r0, r1, #4294967295	@ 0xffffffff
 800203a:	f080 8102 	bcs.w	8002242 <__udivmoddi4+0x26a>
 800203e:	429a      	cmp	r2, r3
 8002040:	f240 80ff 	bls.w	8002242 <__udivmoddi4+0x26a>
 8002044:	3902      	subs	r1, #2
 8002046:	442b      	add	r3, r5
 8002048:	1a9b      	subs	r3, r3, r2
 800204a:	fa1f fc8c 	uxth.w	ip, ip
 800204e:	fbb3 f0f6 	udiv	r0, r3, r6
 8002052:	fb06 3310 	mls	r3, r6, r0, r3
 8002056:	ea4c 4c03 	orr.w	ip, ip, r3, lsl #16
 800205a:	fb00 f307 	mul.w	r3, r0, r7
 800205e:	4563      	cmp	r3, ip
 8002060:	d90a      	bls.n	8002078 <__udivmoddi4+0xa0>
 8002062:	eb15 0c0c 	adds.w	ip, r5, ip
 8002066:	f100 32ff 	add.w	r2, r0, #4294967295	@ 0xffffffff
 800206a:	f080 80e8 	bcs.w	800223e <__udivmoddi4+0x266>
 800206e:	4563      	cmp	r3, ip
 8002070:	f240 80e5 	bls.w	800223e <__udivmoddi4+0x266>
 8002074:	44ac      	add	ip, r5
 8002076:	3802      	subs	r0, #2
 8002078:	ea40 4001 	orr.w	r0, r0, r1, lsl #16
 800207c:	ebac 0c03 	sub.w	ip, ip, r3
 8002080:	2100      	movs	r1, #0
 8002082:	f1be 0f00 	cmp.w	lr, #0
 8002086:	d004      	beq.n	8002092 <__udivmoddi4+0xba>
 8002088:	fa2c f404 	lsr.w	r4, ip, r4
 800208c:	2200      	movs	r2, #0
 800208e:	e9ce 4200 	strd	r4, r2, [lr]
 8002092:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
 8002096:	428b      	cmp	r3, r1
 8002098:	d908      	bls.n	80020ac <__udivmoddi4+0xd4>
 800209a:	f1be 0f00 	cmp.w	lr, #0
 800209e:	d001      	beq.n	80020a4 <__udivmoddi4+0xcc>
 80020a0:	e9ce 6100 	strd	r6, r1, [lr]
 80020a4:	2100      	movs	r1, #0
 80020a6:	4608      	mov	r0, r1
 80020a8:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
 80020ac:	4617      	mov	r7, r2
 80020ae:	460a      	mov	r2, r1
 80020b0:	fab3 f183 	clz	r1, r3
 80020b4:	2900      	cmp	r1, #0
 80020b6:	d14c      	bne.n	8002152 <__udivmoddi4+0x17a>
 80020b8:	4283      	cmp	r3, r0
 80020ba:	d302      	bcc.n	80020c2 <__udivmoddi4+0xea>
 80020bc:	42b7      	cmp	r7, r6
 80020be:	f200 810e 	bhi.w	80022de <__udivmoddi4+0x306>
 80020c2:	ebb6 0c07 	subs.w	ip, r6, r7
 80020c6:	eb60 0303 	sbc.w	r3, r0, r3
 80020ca:	2001      	movs	r0, #1
 80020cc:	461a      	mov	r2, r3
 80020ce:	f1be 0f00 	cmp.w	lr, #0
 80020d2:	d0de      	beq.n	8002092 <__udivmoddi4+0xba>
 80020d4:	e9ce c200 	strd	ip, r2, [lr]
 80020d8:	e7db      	b.n	8002092 <__udivmoddi4+0xba>
 80020da:	2a00      	cmp	r2, #0
 80020dc:	f000 8096 	beq.w	800220c <__udivmoddi4+0x234>
 80020e0:	461c      	mov	r4, r3
 80020e2:	fab2 f382 	clz	r3, r2
 80020e6:	2b00      	cmp	r3, #0
 80020e8:	f040 80ad 	bne.w	8002246 <__udivmoddi4+0x26e>
 80020ec:	1a8b      	subs	r3, r1, r2
 80020ee:	0c16      	lsrs	r6, r2, #16
 80020f0:	b290      	uxth	r0, r2
 80020f2:	2101      	movs	r1, #1
 80020f4:	fbb3 f2f6 	udiv	r2, r3, r6
 80020f8:	fb06 3712 	mls	r7, r6, r2, r3
 80020fc:	ea4f 431c 	mov.w	r3, ip, lsr #16
 8002100:	ea43 4307 	orr.w	r3, r3, r7, lsl #16
 8002104:	fb00 f702 	mul.w	r7, r0, r2
 8002108:	429f      	cmp	r7, r3
 800210a:	d907      	bls.n	800211c <__udivmoddi4+0x144>
 800210c:	18eb      	adds	r3, r5, r3
 800210e:	f102 38ff 	add.w	r8, r2, #4294967295	@ 0xffffffff
 8002112:	d202      	bcs.n	800211a <__udivmoddi4+0x142>
 8002114:	429f      	cmp	r7, r3
 8002116:	f200 80e7 	bhi.w	80022e8 <__udivmoddi4+0x310>
 800211a:	4642      	mov	r2, r8
 800211c:	1bdb      	subs	r3, r3, r7
 800211e:	fa1f fc8c 	uxth.w	ip, ip
 8002122:	fbb3 f7f6 	udiv	r7, r3, r6
 8002126:	fb06 3317 	mls	r3, r6, r7, r3
 800212a:	ea4c 4c03 	orr.w	ip, ip, r3, lsl #16
 800212e:	fb07 f000 	mul.w	r0, r7, r0
 8002132:	4560      	cmp	r0, ip
 8002134:	d908      	bls.n	8002148 <__udivmoddi4+0x170>
 8002136:	eb15 0c0c 	adds.w	ip, r5, ip
 800213a:	f107 33ff 	add.w	r3, r7, #4294967295	@ 0xffffffff
 800213e:	d202      	bcs.n	8002146 <__udivmoddi4+0x16e>
 8002140:	4560      	cmp	r0, ip
 8002142:	f200 80ce 	bhi.w	80022e2 <__udivmoddi4+0x30a>
 8002146:	461f      	mov	r7, r3
 8002148:	ebac 0c00 	sub.w	ip, ip, r0
 800214c:	ea47 4002 	orr.w	r0, r7, r2, lsl #16
 8002150:	e797      	b.n	8002082 <__udivmoddi4+0xaa>
 8002152:	f1c1 0520 	rsb	r5, r1, #32
 8002156:	408b      	lsls	r3, r1
 8002158:	fa27 fc05 	lsr.w	ip, r7, r5
 800215c:	ea4c 0c03 	orr.w	ip, ip, r3
 8002160:	fa00 f401 	lsl.w	r4, r0, r1
 8002164:	fa26 f305 	lsr.w	r3, r6, r5
 8002168:	40e8      	lsrs	r0, r5
 800216a:	ea4f 421c 	mov.w	r2, ip, lsr #16
 800216e:	4323      	orrs	r3, r4
 8002170:	fa07 f901 	lsl.w	r9, r7, r1
 8002174:	fa06 fa01 	lsl.w	sl, r6, r1
 8002178:	fbb0 f7f2 	udiv	r7, r0, r2
 800217c:	fa1f f68c 	uxth.w	r6, ip
 8002180:	fb02 0017 	mls	r0, r2, r7, r0
 8002184:	0c1c      	lsrs	r4, r3, #16
 8002186:	ea44 4400 	orr.w	r4, r4, r0, lsl #16
 800218a:	fb07 f006 	mul.w	r0, r7, r6
 800218e:	42a0      	cmp	r0, r4
 8002190:	d90a      	bls.n	80021a8 <__udivmoddi4+0x1d0>
 8002192:	eb1c 0404 	adds.w	r4, ip, r4
 8002196:	f107 38ff 	add.w	r8, r7, #4294967295	@ 0xffffffff
 800219a:	f080 809e 	bcs.w	80022da <__udivmoddi4+0x302>
 800219e:	42a0      	cmp	r0, r4
 80021a0:	f240 809b 	bls.w	80022da <__udivmoddi4+0x302>
 80021a4:	3f02      	subs	r7, #2
 80021a6:	4464      	add	r4, ip
 80021a8:	1a24      	subs	r4, r4, r0
 80021aa:	b29b      	uxth	r3, r3
 80021ac:	fbb4 f0f2 	udiv	r0, r4, r2
 80021b0:	fb02 4410 	mls	r4, r2, r0, r4
 80021b4:	ea43 4304 	orr.w	r3, r3, r4, lsl #16
 80021b8:	fb00 f606 	mul.w	r6, r0, r6
 80021bc:	429e      	cmp	r6, r3
 80021be:	d90a      	bls.n	80021d6 <__udivmoddi4+0x1fe>
 80021c0:	eb1c 0303 	adds.w	r3, ip, r3
 80021c4:	f100 34ff 	add.w	r4, r0, #4294967295	@ 0xffffffff
 80021c8:	f080 8085 	bcs.w	80022d6 <__udivmoddi4+0x2fe>
 80021cc:	429e      	cmp	r6, r3
 80021ce:	f240 8082 	bls.w	80022d6 <__udivmoddi4+0x2fe>
 80021d2:	3802      	subs	r0, #2
 80021d4:	4463      	add	r3, ip
 80021d6:	ea40 4007 	orr.w	r0, r0, r7, lsl #16
 80021da:	fba0 7409 	umull	r7, r4, r0, r9
 80021de:	1b9b      	subs	r3, r3, r6
 80021e0:	42a3      	cmp	r3, r4
 80021e2:	463e      	mov	r6, r7
 80021e4:	46a0      	mov	r8, r4
 80021e6:	d367      	bcc.n	80022b8 <__udivmoddi4+0x2e0>
 80021e8:	d064      	beq.n	80022b4 <__udivmoddi4+0x2dc>
 80021ea:	f1be 0f00 	cmp.w	lr, #0
 80021ee:	d00a      	beq.n	8002206 <__udivmoddi4+0x22e>
 80021f0:	ebba 0206 	subs.w	r2, sl, r6
 80021f4:	eb63 0308 	sbc.w	r3, r3, r8
 80021f8:	fa03 f505 	lsl.w	r5, r3, r5
 80021fc:	40ca      	lsrs	r2, r1
 80021fe:	4315      	orrs	r5, r2
 8002200:	40cb      	lsrs	r3, r1
 8002202:	e9ce 5300 	strd	r5, r3, [lr]
 8002206:	2100      	movs	r1, #0
 8002208:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
 800220c:	0873      	lsrs	r3, r6, #1
 800220e:	ea43 73c0 	orr.w	r3, r3, r0, lsl #31
 8002212:	0849      	lsrs	r1, r1, #1
 8002214:	0c1a      	lsrs	r2, r3, #16
 8002216:	ea42 4201 	orr.w	r2, r2, r1, lsl #16
 800221a:	ea4f 7cc6 	mov.w	ip, r6, lsl #31
 800221e:	b29b      	uxth	r3, r3
 8002220:	4628      	mov	r0, r5
 8002222:	46a8      	mov	r8, r5
 8002224:	462e      	mov	r6, r5
 8002226:	241f      	movs	r4, #31
 8002228:	ea43 4302 	orr.w	r3, r3, r2, lsl #16
 800222c:	fbb1 f1f5 	udiv	r1, r1, r5
 8002230:	fbb2 f2f5 	udiv	r2, r2, r5
 8002234:	eba3 0308 	sub.w	r3, r3, r8
 8002238:	ea42 4101 	orr.w	r1, r2, r1, lsl #16
 800223c:	e75a      	b.n	80020f4 <__udivmoddi4+0x11c>
 800223e:	4610      	mov	r0, r2
 8002240:	e71a      	b.n	8002078 <__udivmoddi4+0xa0>
 8002242:	4601      	mov	r1, r0
 8002244:	e700      	b.n	8002048 <__udivmoddi4+0x70>
 8002246:	461c      	mov	r4, r3
 8002248:	f1c3 0220 	rsb	r2, r3, #32
 800224c:	409d      	lsls	r5, r3
 800224e:	40a0      	lsls	r0, r4
 8002250:	fa26 f302 	lsr.w	r3, r6, r2
 8002254:	4303      	orrs	r3, r0
 8002256:	fa21 f202 	lsr.w	r2, r1, r2
 800225a:	fa06 fc04 	lsl.w	ip, r6, r4
 800225e:	0c2e      	lsrs	r6, r5, #16
 8002260:	b2a8      	uxth	r0, r5
 8002262:	fbb2 f1f6 	udiv	r1, r2, r6
 8002266:	fb06 2711 	mls	r7, r6, r1, r2
 800226a:	0c1a      	lsrs	r2, r3, #16
 800226c:	ea42 4207 	orr.w	r2, r2, r7, lsl #16
 8002270:	fb01 f700 	mul.w	r7, r1, r0
 8002274:	4297      	cmp	r7, r2
 8002276:	d93c      	bls.n	80022f2 <__udivmoddi4+0x31a>
 8002278:	18aa      	adds	r2, r5, r2
 800227a:	d201      	bcs.n	8002280 <__udivmoddi4+0x2a8>
 800227c:	4297      	cmp	r7, r2
 800227e:	d822      	bhi.n	80022c6 <__udivmoddi4+0x2ee>
 8002280:	1bd2      	subs	r2, r2, r7
 8002282:	3901      	subs	r1, #1
 8002284:	fbb2 f7f6 	udiv	r7, r2, r6
 8002288:	fb07 f800 	mul.w	r8, r7, r0
 800228c:	fb06 2217 	mls	r2, r6, r7, r2
 8002290:	b29b      	uxth	r3, r3
 8002292:	ea43 4302 	orr.w	r3, r3, r2, lsl #16
 8002296:	4543      	cmp	r3, r8
 8002298:	d229      	bcs.n	80022ee <__udivmoddi4+0x316>
 800229a:	18eb      	adds	r3, r5, r3
 800229c:	f107 32ff 	add.w	r2, r7, #4294967295	@ 0xffffffff
 80022a0:	d2c8      	bcs.n	8002234 <__udivmoddi4+0x25c>
 80022a2:	3f02      	subs	r7, #2
 80022a4:	4543      	cmp	r3, r8
 80022a6:	bf38      	it	cc
 80022a8:	463a      	movcc	r2, r7
 80022aa:	195f      	adds	r7, r3, r5
 80022ac:	4543      	cmp	r3, r8
 80022ae:	bf38      	it	cc
 80022b0:	463b      	movcc	r3, r7
 80022b2:	e7bf      	b.n	8002234 <__udivmoddi4+0x25c>
 80022b4:	45ba      	cmp	sl, r7
 80022b6:	d298      	bcs.n	80021ea <__udivmoddi4+0x212>
 80022b8:	ebb7 0609 	subs.w	r6, r7, r9
 80022bc:	eb64 040c 	sbc.w	r4, r4, ip
 80022c0:	3801      	subs	r0, #1
 80022c2:	46a0      	mov	r8, r4
 80022c4:	e791      	b.n	80021ea <__udivmoddi4+0x212>
 80022c6:	1bef      	subs	r7, r5, r7
 80022c8:	443a      	add	r2, r7
 80022ca:	3902      	subs	r1, #2
 80022cc:	fbb2 f7f6 	udiv	r7, r2, r6
 80022d0:	fb07 f800 	mul.w	r8, r7, r0
 80022d4:	e7da      	b.n	800228c <__udivmoddi4+0x2b4>
 80022d6:	4620      	mov	r0, r4
 80022d8:	e77d      	b.n	80021d6 <__udivmoddi4+0x1fe>
 80022da:	4647      	mov	r7, r8
 80022dc:	e764      	b.n	80021a8 <__udivmoddi4+0x1d0>
 80022de:	4608      	mov	r0, r1
 80022e0:	e6f5      	b.n	80020ce <__udivmoddi4+0xf6>
 80022e2:	44ac      	add	ip, r5
 80022e4:	3f02      	subs	r7, #2
 80022e6:	e72f      	b.n	8002148 <__udivmoddi4+0x170>
 80022e8:	3a02      	subs	r2, #2
 80022ea:	442b      	add	r3, r5
 80022ec:	e716      	b.n	800211c <__udivmoddi4+0x144>
 80022ee:	463a      	mov	r2, r7
 80022f0:	e7a0      	b.n	8002234 <__udivmoddi4+0x25c>
 80022f2:	1bd2      	subs	r2, r2, r7
 80022f4:	fbb2 f7f6 	udiv	r7, r2, r6
 80022f8:	fb07 f800 	mul.w	r8, r7, r0
 80022fc:	e7c6      	b.n	800228c <__udivmoddi4+0x2b4>
 80022fe:	bf00      	nop

08002300 <AHBPrescTable>:
	...
 8002308:	0201 0403 0706 0908                         ........

08002310 <APBPrescTable>:
 8002310:	0000 0000 0201 0403 0000 4800 0004 4800     ...........H...H
 8002320:	0008 4800 000c 4800 0018 4800 17a0 1000     ...H...H...H....
 8002330:	0400 4800 0404 4800 0408 4800 040c 4800     ...H...H...H...H
 8002340:	0418 4800 0003 0000 1400 4800 1404 4800     ...H.......H...H
 8002350:	1408 4800 140c 4800 1418 4800 0002 0000     ...H...H...H....

08002360 <settings.0>:
 8002360:	0303 4304 4f05 1006 0107 0108 000c 0603     ...C.O..........

08002370 <table.0>:
 8002370:	01f4 02bc 03e8 04e2 05dc 06d6 07d0 08ca     ................
 8002380:	09c4 0abe 0bb8 0cb2 0dac 0fa0 1194 1388     ................

08002390 <typec_ma.1>:
 8002390:	01f4 05dc 0960 0bb8                         ....`...
