
D:/1.Project/git/Cln1/Build/VS/../Bin/Z03In005_App_default/Z03In005_App_default.elf:     file format elf32-littlearm

Sections:
Idx Name          Size      VMA       LMA       File off  Algn
  0 .isr_vector   00000200  08000000  08000000  00010000  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  1 .cfgid_configdata 00000100  08000200  08000200  00010200  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  2 .startup      00000050  08000300  08000300  00010300  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  3 .text         000014f0  08000350  08000350  00010350  2**3
                  CONTENTS, ALLOC, LOAD, READONLY, CODE
  4 .ARM.extab    00000000  08001840  08001840  00020008  2**0
                  CONTENTS
  5 .exidx        00000008  08001840  08001840  00011840  2**2
                  CONTENTS, ALLOC, LOAD, READONLY, DATA
  6 .ARM.attributes 00000032  08001848  08001848  00020008  2**0
                  CONTENTS, READONLY
  7 .data         00000008  20000000  08001848  00020000  2**2
                  CONTENTS, ALLOC, LOAD, DATA
  8 .bss          00000038  20000008  08001850  00020008  2**3
                  ALLOC
  9 .debug_info   0001c8a8  00000000  00000000  0002003a  2**0
                  CONTENTS, READONLY, DEBUGGING
 10 .debug_abbrev 00003b9a  00000000  00000000  0003c8e2  2**0
                  CONTENTS, READONLY, DEBUGGING
 11 .debug_aranges 000004b8  00000000  00000000  0004047c  2**0
                  CONTENTS, READONLY, DEBUGGING
 12 .debug_ranges 00000e90  00000000  00000000  00040934  2**0
                  CONTENTS, READONLY, DEBUGGING
 13 .debug_line   000066f4  00000000  00000000  000417c4  2**0
                  CONTENTS, READONLY, DEBUGGING
 14 .debug_str    0000b54f  00000000  00000000  00047eb8  2**0
                  CONTENTS, READONLY, DEBUGGING
 15 .comment      00000079  00000000  00000000  00053407  2**0
                  CONTENTS, READONLY
 16 .debug_frame  00000948  00000000  00000000  00053480  2**2
                  CONTENTS, READONLY, DEBUGGING
 17 .debug_loc    00002b5d  00000000  00000000  00053dc8  2**0
                  CONTENTS, READONLY, DEBUGGING

Disassembly of section .startup:

08000300 <__my_startup>:
  __attribute__((used, noinline,section(".startup")))
  [[noreturn]] auto __my_startup() -> void;
}

auto __my_startup() -> void
{
 8000300:	b508      	push	{r3, lr}
  // The stack pointer is automatically loaded from
  // the base position of the interrupt vector table.
  // So we do nothing here.

  // Chip init: Watchdog and oscillator.
  ::Mcu_Init(&Mcu_ConfigData);
 8000302:	480e      	ldr	r0, [pc, #56]	; (800033c <__my_startup+0x3c>)
 8000304:	f000 fb30 	bl	8000968 <Mcu_Init>
  static_cast<void>(::Mcu_InitClock(static_cast<Mcu_ClockType>(UINT8_C(0))));
 8000308:	2000      	movs	r0, #0
 800030a:	f000 fbad 	bl	8000a68 <Mcu_InitClock>
  static_cast<void>(::Mcu_DistributePllClock());
 800030e:	f000 fbb1 	bl	8000a74 <Mcu_DistributePllClock>

  ::Port_Init(nullptr);
 8000312:	2000      	movs	r0, #0
 8000314:	f000 fbb0 	bl	8000a78 <Port_Init>
  ::Wdg_Init (nullptr);
 8000318:	2000      	movs	r0, #0
 800031a:	f000 fbb5 	bl	8000a88 <Wdg_Init>
  ::Wdg_Trigger();
 800031e:	f000 fbb5 	bl	8000a8c <Wdg_Trigger>

  // Initialize statics from ROM to RAM.
  // Zero-clear default-initialized static RAM.
  crt::init_ram();
 8000322:	f000 fa35 	bl	8000790 <_ZN3crt8init_ramEv>
  ::Wdg_Trigger();
 8000326:	f000 fbb1 	bl	8000a8c <Wdg_Trigger>

  // Call all ctor initializations.
  crt::init_ctors();
 800032a:	f000 fa51 	bl	80007d0 <_ZN3crt10init_ctorsEv>
  ::Wdg_Trigger();
 800032e:	f000 fbad 	bl	8000a8c <Wdg_Trigger>

  // Jump to main (and never return).
  // Use assembly to call main.

  // AXIVION Next Line AutosarC++19_03-M7.4.1: AUTOSAR permitted
  ASM_INLINE("ldr r3, =main");
 8000332:	4b03      	ldr	r3, [pc, #12]	; (8000340 <__my_startup+0x40>)

  // AXIVION Next Line AutosarC++19_03-M7.4.1: AUTOSAR permitted
  ASM_INLINE("blx r3");
 8000334:	4798      	blx	r3

  // Catch an unexpected return from main.
  while(true)
  {
    // Replace with a loud error if desired.
    ::Wdg_Trigger();
 8000336:	f000 fba9 	bl	8000a8c <Wdg_Trigger>
  while(true)
 800033a:	e7fc      	b.n	8000336 <__my_startup+0x36>
 800033c:	080017a1 	.word	0x080017a1
 8000340:	0800077d 	.word	0x0800077d
 8000344:	55555555 	.word	0x55555555
 8000348:	55555555 	.word	0x55555555
 800034c:	55555555 	.word	0x55555555

Disassembly of section .text:

08000350 <memcpy>:
 8000350:	4684      	mov	ip, r0
 8000352:	ea41 0300 	orr.w	r3, r1, r0
 8000356:	f013 0303 	ands.w	r3, r3, #3
 800035a:	d16d      	bne.n	8000438 <memcpy+0xe8>
 800035c:	3a40      	subs	r2, #64	; 0x40
 800035e:	d341      	bcc.n	80003e4 <memcpy+0x94>
 8000360:	f851 3b04 	ldr.w	r3, [r1], #4
 8000364:	f840 3b04 	str.w	r3, [r0], #4
 8000368:	f851 3b04 	ldr.w	r3, [r1], #4
 800036c:	f840 3b04 	str.w	r3, [r0], #4
 8000370:	f851 3b04 	ldr.w	r3, [r1], #4
 8000374:	f840 3b04 	str.w	r3, [r0], #4
 8000378:	f851 3b04 	ldr.w	r3, [r1], #4
 800037c:	f840 3b04 	str.w	r3, [r0], #4
 8000380:	f851 3b04 	ldr.w	r3, [r1], #4
 8000384:	f840 3b04 	str.w	r3, [r0], #4
 8000388:	f851 3b04 	ldr.w	r3, [r1], #4
 800038c:	f840 3b04 	str.w	r3, [r0], #4
 8000390:	f851 3b04 	ldr.w	r3, [r1], #4
 8000394:	f840 3b04 	str.w	r3, [r0], #4
 8000398:	f851 3b04 	ldr.w	r3, [r1], #4
 800039c:	f840 3b04 	str.w	r3, [r0], #4
 80003a0:	f851 3b04 	ldr.w	r3, [r1], #4
 80003a4:	f840 3b04 	str.w	r3, [r0], #4
 80003a8:	f851 3b04 	ldr.w	r3, [r1], #4
 80003ac:	f840 3b04 	str.w	r3, [r0], #4
 80003b0:	f851 3b04 	ldr.w	r3, [r1], #4
 80003b4:	f840 3b04 	str.w	r3, [r0], #4
 80003b8:	f851 3b04 	ldr.w	r3, [r1], #4
 80003bc:	f840 3b04 	str.w	r3, [r0], #4
 80003c0:	f851 3b04 	ldr.w	r3, [r1], #4
 80003c4:	f840 3b04 	str.w	r3, [r0], #4
 80003c8:	f851 3b04 	ldr.w	r3, [r1], #4
 80003cc:	f840 3b04 	str.w	r3, [r0], #4
 80003d0:	f851 3b04 	ldr.w	r3, [r1], #4
 80003d4:	f840 3b04 	str.w	r3, [r0], #4
 80003d8:	f851 3b04 	ldr.w	r3, [r1], #4
 80003dc:	f840 3b04 	str.w	r3, [r0], #4
 80003e0:	3a40      	subs	r2, #64	; 0x40
 80003e2:	d2bd      	bcs.n	8000360 <memcpy+0x10>
 80003e4:	3230      	adds	r2, #48	; 0x30
 80003e6:	d311      	bcc.n	800040c <memcpy+0xbc>
 80003e8:	f851 3b04 	ldr.w	r3, [r1], #4
 80003ec:	f840 3b04 	str.w	r3, [r0], #4
 80003f0:	f851 3b04 	ldr.w	r3, [r1], #4
 80003f4:	f840 3b04 	str.w	r3, [r0], #4
 80003f8:	f851 3b04 	ldr.w	r3, [r1], #4
 80003fc:	f840 3b04 	str.w	r3, [r0], #4
 8000400:	f851 3b04 	ldr.w	r3, [r1], #4
 8000404:	f840 3b04 	str.w	r3, [r0], #4
 8000408:	3a10      	subs	r2, #16
 800040a:	d2ed      	bcs.n	80003e8 <memcpy+0x98>
 800040c:	320c      	adds	r2, #12
 800040e:	d305      	bcc.n	800041c <memcpy+0xcc>
 8000410:	f851 3b04 	ldr.w	r3, [r1], #4
 8000414:	f840 3b04 	str.w	r3, [r0], #4
 8000418:	3a04      	subs	r2, #4
 800041a:	d2f9      	bcs.n	8000410 <memcpy+0xc0>
 800041c:	3204      	adds	r2, #4
 800041e:	d008      	beq.n	8000432 <memcpy+0xe2>
 8000420:	07d2      	lsls	r2, r2, #31
 8000422:	bf1c      	itt	ne
 8000424:	f811 3b01 	ldrbne.w	r3, [r1], #1
 8000428:	f800 3b01 	strbne.w	r3, [r0], #1
 800042c:	d301      	bcc.n	8000432 <memcpy+0xe2>
 800042e:	880b      	ldrh	r3, [r1, #0]
 8000430:	8003      	strh	r3, [r0, #0]
 8000432:	4660      	mov	r0, ip
 8000434:	4770      	bx	lr
 8000436:	bf00      	nop
 8000438:	2a08      	cmp	r2, #8
 800043a:	d313      	bcc.n	8000464 <memcpy+0x114>
 800043c:	078b      	lsls	r3, r1, #30
 800043e:	d08d      	beq.n	800035c <memcpy+0xc>
 8000440:	f010 0303 	ands.w	r3, r0, #3
 8000444:	d08a      	beq.n	800035c <memcpy+0xc>
 8000446:	f1c3 0304 	rsb	r3, r3, #4
 800044a:	1ad2      	subs	r2, r2, r3
 800044c:	07db      	lsls	r3, r3, #31
 800044e:	bf1c      	itt	ne
 8000450:	f811 3b01 	ldrbne.w	r3, [r1], #1
 8000454:	f800 3b01 	strbne.w	r3, [r0], #1
 8000458:	d380      	bcc.n	800035c <memcpy+0xc>
 800045a:	f831 3b02 	ldrh.w	r3, [r1], #2
 800045e:	f820 3b02 	strh.w	r3, [r0], #2
 8000462:	e77b      	b.n	800035c <memcpy+0xc>
 8000464:	3a04      	subs	r2, #4
 8000466:	d3d9      	bcc.n	800041c <memcpy+0xcc>
 8000468:	3a01      	subs	r2, #1
 800046a:	f811 3b01 	ldrb.w	r3, [r1], #1
 800046e:	f800 3b01 	strb.w	r3, [r0], #1
 8000472:	d2f9      	bcs.n	8000468 <memcpy+0x118>
 8000474:	780b      	ldrb	r3, [r1, #0]
 8000476:	7003      	strb	r3, [r0, #0]
 8000478:	784b      	ldrb	r3, [r1, #1]
 800047a:	7043      	strb	r3, [r0, #1]
 800047c:	788b      	ldrb	r3, [r1, #2]
 800047e:	7083      	strb	r3, [r0, #2]
 8000480:	4660      	mov	r0, ip
 8000482:	4770      	bx	lr

08000484 <__aeabi_uldivmod>:
 8000484:	b953      	cbnz	r3, 800049c <__aeabi_uldivmod+0x18>
 8000486:	b94a      	cbnz	r2, 800049c <__aeabi_uldivmod+0x18>
 8000488:	2900      	cmp	r1, #0
 800048a:	bf08      	it	eq
 800048c:	2800      	cmpeq	r0, #0
 800048e:	bf1c      	itt	ne
 8000490:	f04f 31ff 	movne.w	r1, #4294967295
 8000494:	f04f 30ff 	movne.w	r0, #4294967295
 8000498:	f000 b96e 	b.w	8000778 <__aeabi_idiv0>
 800049c:	f1ad 0c08 	sub.w	ip, sp, #8
 80004a0:	e96d ce04 	strd	ip, lr, [sp, #-16]!
 80004a4:	f000 f806 	bl	80004b4 <__udivmoddi4>
 80004a8:	f8dd e004 	ldr.w	lr, [sp, #4]
 80004ac:	e9dd 2302 	ldrd	r2, r3, [sp, #8]
 80004b0:	b004      	add	sp, #16
 80004b2:	4770      	bx	lr

080004b4 <__udivmoddi4>:
 80004b4:	e92d 47f0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, lr}
 80004b8:	9d08      	ldr	r5, [sp, #32]
 80004ba:	4604      	mov	r4, r0
 80004bc:	468c      	mov	ip, r1
 80004be:	2b00      	cmp	r3, #0
 80004c0:	f040 8083 	bne.w	80005ca <__udivmoddi4+0x116>
 80004c4:	428a      	cmp	r2, r1
 80004c6:	4617      	mov	r7, r2
 80004c8:	d947      	bls.n	800055a <__udivmoddi4+0xa6>
 80004ca:	fab2 f282 	clz	r2, r2
 80004ce:	b142      	cbz	r2, 80004e2 <__udivmoddi4+0x2e>
 80004d0:	f1c2 0020 	rsb	r0, r2, #32
 80004d4:	fa24 f000 	lsr.w	r0, r4, r0
 80004d8:	4091      	lsls	r1, r2
 80004da:	4097      	lsls	r7, r2
 80004dc:	ea40 0c01 	orr.w	ip, r0, r1
 80004e0:	4094      	lsls	r4, r2
 80004e2:	ea4f 4817 	mov.w	r8, r7, lsr #16
 80004e6:	0c23      	lsrs	r3, r4, #16
 80004e8:	fbbc f6f8 	udiv	r6, ip, r8
 80004ec:	fa1f fe87 	uxth.w	lr, r7
 80004f0:	fb08 c116 	mls	r1, r8, r6, ip
 80004f4:	ea43 4301 	orr.w	r3, r3, r1, lsl #16
 80004f8:	fb06 f10e 	mul.w	r1, r6, lr
 80004fc:	4299      	cmp	r1, r3
 80004fe:	d909      	bls.n	8000514 <__udivmoddi4+0x60>
 8000500:	18fb      	adds	r3, r7, r3
 8000502:	f106 30ff 	add.w	r0, r6, #4294967295
 8000506:	f080 8119 	bcs.w	800073c <__udivmoddi4+0x288>
 800050a:	4299      	cmp	r1, r3
 800050c:	f240 8116 	bls.w	800073c <__udivmoddi4+0x288>
 8000510:	3e02      	subs	r6, #2
 8000512:	443b      	add	r3, r7
 8000514:	1a5b      	subs	r3, r3, r1
 8000516:	b2a4      	uxth	r4, r4
 8000518:	fbb3 f0f8 	udiv	r0, r3, r8
 800051c:	fb08 3310 	mls	r3, r8, r0, r3
 8000520:	ea44 4403 	orr.w	r4, r4, r3, lsl #16
 8000524:	fb00 fe0e 	mul.w	lr, r0, lr
 8000528:	45a6      	cmp	lr, r4
 800052a:	d909      	bls.n	8000540 <__udivmoddi4+0x8c>
 800052c:	193c      	adds	r4, r7, r4
 800052e:	f100 33ff 	add.w	r3, r0, #4294967295
 8000532:	f080 8105 	bcs.w	8000740 <__udivmoddi4+0x28c>
 8000536:	45a6      	cmp	lr, r4
 8000538:	f240 8102 	bls.w	8000740 <__udivmoddi4+0x28c>
 800053c:	3802      	subs	r0, #2
 800053e:	443c      	add	r4, r7
 8000540:	ea40 4006 	orr.w	r0, r0, r6, lsl #16
 8000544:	eba4 040e 	sub.w	r4, r4, lr
 8000548:	2600      	movs	r6, #0
 800054a:	b11d      	cbz	r5, 8000554 <__udivmoddi4+0xa0>
 800054c:	40d4      	lsrs	r4, r2
 800054e:	2300      	movs	r3, #0
 8000550:	e9c5 4300 	strd	r4, r3, [r5]
 8000554:	4631      	mov	r1, r6
 8000556:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
 800055a:	b902      	cbnz	r2, 800055e <__udivmoddi4+0xaa>
 800055c:	deff      	udf	#255	; 0xff
 800055e:	fab2 f282 	clz	r2, r2
 8000562:	2a00      	cmp	r2, #0
 8000564:	d150      	bne.n	8000608 <__udivmoddi4+0x154>
 8000566:	1bcb      	subs	r3, r1, r7
 8000568:	ea4f 4e17 	mov.w	lr, r7, lsr #16
 800056c:	fa1f f887 	uxth.w	r8, r7
 8000570:	2601      	movs	r6, #1
 8000572:	fbb3 fcfe 	udiv	ip, r3, lr
 8000576:	0c21      	lsrs	r1, r4, #16
 8000578:	fb0e 331c 	mls	r3, lr, ip, r3
 800057c:	ea41 4103 	orr.w	r1, r1, r3, lsl #16
 8000580:	fb08 f30c 	mul.w	r3, r8, ip
 8000584:	428b      	cmp	r3, r1
 8000586:	d907      	bls.n	8000598 <__udivmoddi4+0xe4>
 8000588:	1879      	adds	r1, r7, r1
 800058a:	f10c 30ff 	add.w	r0, ip, #4294967295
 800058e:	d202      	bcs.n	8000596 <__udivmoddi4+0xe2>
 8000590:	428b      	cmp	r3, r1
 8000592:	f200 80e9 	bhi.w	8000768 <__udivmoddi4+0x2b4>
 8000596:	4684      	mov	ip, r0
 8000598:	1ac9      	subs	r1, r1, r3
 800059a:	b2a3      	uxth	r3, r4
 800059c:	fbb1 f0fe 	udiv	r0, r1, lr
 80005a0:	fb0e 1110 	mls	r1, lr, r0, r1
 80005a4:	ea43 4401 	orr.w	r4, r3, r1, lsl #16
 80005a8:	fb08 f800 	mul.w	r8, r8, r0
 80005ac:	45a0      	cmp	r8, r4
 80005ae:	d907      	bls.n	80005c0 <__udivmoddi4+0x10c>
 80005b0:	193c      	adds	r4, r7, r4
 80005b2:	f100 33ff 	add.w	r3, r0, #4294967295
 80005b6:	d202      	bcs.n	80005be <__udivmoddi4+0x10a>
 80005b8:	45a0      	cmp	r8, r4
 80005ba:	f200 80d9 	bhi.w	8000770 <__udivmoddi4+0x2bc>
 80005be:	4618      	mov	r0, r3
 80005c0:	eba4 0408 	sub.w	r4, r4, r8
 80005c4:	ea40 400c 	orr.w	r0, r0, ip, lsl #16
 80005c8:	e7bf      	b.n	800054a <__udivmoddi4+0x96>
 80005ca:	428b      	cmp	r3, r1
 80005cc:	d909      	bls.n	80005e2 <__udivmoddi4+0x12e>
 80005ce:	2d00      	cmp	r5, #0
 80005d0:	f000 80b1 	beq.w	8000736 <__udivmoddi4+0x282>
 80005d4:	2600      	movs	r6, #0
 80005d6:	e9c5 0100 	strd	r0, r1, [r5]
 80005da:	4630      	mov	r0, r6
 80005dc:	4631      	mov	r1, r6
 80005de:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
 80005e2:	fab3 f683 	clz	r6, r3
 80005e6:	2e00      	cmp	r6, #0
 80005e8:	d14a      	bne.n	8000680 <__udivmoddi4+0x1cc>
 80005ea:	428b      	cmp	r3, r1
 80005ec:	d302      	bcc.n	80005f4 <__udivmoddi4+0x140>
 80005ee:	4282      	cmp	r2, r0
 80005f0:	f200 80b8 	bhi.w	8000764 <__udivmoddi4+0x2b0>
 80005f4:	1a84      	subs	r4, r0, r2
 80005f6:	eb61 0103 	sbc.w	r1, r1, r3
 80005fa:	2001      	movs	r0, #1
 80005fc:	468c      	mov	ip, r1
 80005fe:	2d00      	cmp	r5, #0
 8000600:	d0a8      	beq.n	8000554 <__udivmoddi4+0xa0>
 8000602:	e9c5 4c00 	strd	r4, ip, [r5]
 8000606:	e7a5      	b.n	8000554 <__udivmoddi4+0xa0>
 8000608:	f1c2 0320 	rsb	r3, r2, #32
 800060c:	fa20 f603 	lsr.w	r6, r0, r3
 8000610:	4097      	lsls	r7, r2
 8000612:	fa01 f002 	lsl.w	r0, r1, r2
 8000616:	ea4f 4e17 	mov.w	lr, r7, lsr #16
 800061a:	40d9      	lsrs	r1, r3
 800061c:	4330      	orrs	r0, r6
 800061e:	0c03      	lsrs	r3, r0, #16
 8000620:	fbb1 f6fe 	udiv	r6, r1, lr
 8000624:	fa1f f887 	uxth.w	r8, r7
 8000628:	fb0e 1116 	mls	r1, lr, r6, r1
 800062c:	ea43 4301 	orr.w	r3, r3, r1, lsl #16
 8000630:	fb06 f108 	mul.w	r1, r6, r8
 8000634:	4299      	cmp	r1, r3
 8000636:	fa04 f402 	lsl.w	r4, r4, r2
 800063a:	d909      	bls.n	8000650 <__udivmoddi4+0x19c>
 800063c:	18fb      	adds	r3, r7, r3
 800063e:	f106 3cff 	add.w	ip, r6, #4294967295
 8000642:	f080 808d 	bcs.w	8000760 <__udivmoddi4+0x2ac>
 8000646:	4299      	cmp	r1, r3
 8000648:	f240 808a 	bls.w	8000760 <__udivmoddi4+0x2ac>
 800064c:	3e02      	subs	r6, #2
 800064e:	443b      	add	r3, r7
 8000650:	1a5b      	subs	r3, r3, r1
 8000652:	b281      	uxth	r1, r0
 8000654:	fbb3 f0fe 	udiv	r0, r3, lr
 8000658:	fb0e 3310 	mls	r3, lr, r0, r3
 800065c:	ea41 4103 	orr.w	r1, r1, r3, lsl #16
 8000660:	fb00 f308 	mul.w	r3, r0, r8
 8000664:	428b      	cmp	r3, r1
 8000666:	d907      	bls.n	8000678 <__udivmoddi4+0x1c4>
 8000668:	1879      	adds	r1, r7, r1
 800066a:	f100 3cff 	add.w	ip, r0, #4294967295
 800066e:	d273      	bcs.n	8000758 <__udivmoddi4+0x2a4>
 8000670:	428b      	cmp	r3, r1
 8000672:	d971      	bls.n	8000758 <__udivmoddi4+0x2a4>
 8000674:	3802      	subs	r0, #2
 8000676:	4439      	add	r1, r7
 8000678:	1acb      	subs	r3, r1, r3
 800067a:	ea40 4606 	orr.w	r6, r0, r6, lsl #16
 800067e:	e778      	b.n	8000572 <__udivmoddi4+0xbe>
 8000680:	f1c6 0c20 	rsb	ip, r6, #32
 8000684:	fa03 f406 	lsl.w	r4, r3, r6
 8000688:	fa22 f30c 	lsr.w	r3, r2, ip
 800068c:	431c      	orrs	r4, r3
 800068e:	fa20 f70c 	lsr.w	r7, r0, ip
 8000692:	fa01 f306 	lsl.w	r3, r1, r6
 8000696:	ea4f 4e14 	mov.w	lr, r4, lsr #16
 800069a:	fa21 f10c 	lsr.w	r1, r1, ip
 800069e:	431f      	orrs	r7, r3
 80006a0:	0c3b      	lsrs	r3, r7, #16
 80006a2:	fbb1 f9fe 	udiv	r9, r1, lr
 80006a6:	fa1f f884 	uxth.w	r8, r4
 80006aa:	fb0e 1119 	mls	r1, lr, r9, r1
 80006ae:	ea43 4101 	orr.w	r1, r3, r1, lsl #16
 80006b2:	fb09 fa08 	mul.w	sl, r9, r8
 80006b6:	458a      	cmp	sl, r1
 80006b8:	fa02 f206 	lsl.w	r2, r2, r6
 80006bc:	fa00 f306 	lsl.w	r3, r0, r6
 80006c0:	d908      	bls.n	80006d4 <__udivmoddi4+0x220>
 80006c2:	1861      	adds	r1, r4, r1
 80006c4:	f109 30ff 	add.w	r0, r9, #4294967295
 80006c8:	d248      	bcs.n	800075c <__udivmoddi4+0x2a8>
 80006ca:	458a      	cmp	sl, r1
 80006cc:	d946      	bls.n	800075c <__udivmoddi4+0x2a8>
 80006ce:	f1a9 0902 	sub.w	r9, r9, #2
 80006d2:	4421      	add	r1, r4
 80006d4:	eba1 010a 	sub.w	r1, r1, sl
 80006d8:	b2bf      	uxth	r7, r7
 80006da:	fbb1 f0fe 	udiv	r0, r1, lr
 80006de:	fb0e 1110 	mls	r1, lr, r0, r1
 80006e2:	ea47 4701 	orr.w	r7, r7, r1, lsl #16
 80006e6:	fb00 f808 	mul.w	r8, r0, r8
 80006ea:	45b8      	cmp	r8, r7
 80006ec:	d907      	bls.n	80006fe <__udivmoddi4+0x24a>
 80006ee:	19e7      	adds	r7, r4, r7
 80006f0:	f100 31ff 	add.w	r1, r0, #4294967295
 80006f4:	d22e      	bcs.n	8000754 <__udivmoddi4+0x2a0>
 80006f6:	45b8      	cmp	r8, r7
 80006f8:	d92c      	bls.n	8000754 <__udivmoddi4+0x2a0>
 80006fa:	3802      	subs	r0, #2
 80006fc:	4427      	add	r7, r4
 80006fe:	ea40 4009 	orr.w	r0, r0, r9, lsl #16
 8000702:	eba7 0708 	sub.w	r7, r7, r8
 8000706:	fba0 8902 	umull	r8, r9, r0, r2
 800070a:	454f      	cmp	r7, r9
 800070c:	46c6      	mov	lr, r8
 800070e:	4649      	mov	r1, r9
 8000710:	d31a      	bcc.n	8000748 <__udivmoddi4+0x294>
 8000712:	d017      	beq.n	8000744 <__udivmoddi4+0x290>
 8000714:	b15d      	cbz	r5, 800072e <__udivmoddi4+0x27a>
 8000716:	ebb3 020e 	subs.w	r2, r3, lr
 800071a:	eb67 0701 	sbc.w	r7, r7, r1
 800071e:	fa07 fc0c 	lsl.w	ip, r7, ip
 8000722:	40f2      	lsrs	r2, r6
 8000724:	ea4c 0202 	orr.w	r2, ip, r2
 8000728:	40f7      	lsrs	r7, r6
 800072a:	e9c5 2700 	strd	r2, r7, [r5]
 800072e:	2600      	movs	r6, #0
 8000730:	4631      	mov	r1, r6
 8000732:	e8bd 87f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, pc}
 8000736:	462e      	mov	r6, r5
 8000738:	4628      	mov	r0, r5
 800073a:	e70b      	b.n	8000554 <__udivmoddi4+0xa0>
 800073c:	4606      	mov	r6, r0
 800073e:	e6e9      	b.n	8000514 <__udivmoddi4+0x60>
 8000740:	4618      	mov	r0, r3
 8000742:	e6fd      	b.n	8000540 <__udivmoddi4+0x8c>
 8000744:	4543      	cmp	r3, r8
 8000746:	d2e5      	bcs.n	8000714 <__udivmoddi4+0x260>
 8000748:	ebb8 0e02 	subs.w	lr, r8, r2
 800074c:	eb69 0104 	sbc.w	r1, r9, r4
 8000750:	3801      	subs	r0, #1
 8000752:	e7df      	b.n	8000714 <__udivmoddi4+0x260>
 8000754:	4608      	mov	r0, r1
 8000756:	e7d2      	b.n	80006fe <__udivmoddi4+0x24a>
 8000758:	4660      	mov	r0, ip
 800075a:	e78d      	b.n	8000678 <__udivmoddi4+0x1c4>
 800075c:	4681      	mov	r9, r0
 800075e:	e7b9      	b.n	80006d4 <__udivmoddi4+0x220>
 8000760:	4666      	mov	r6, ip
 8000762:	e775      	b.n	8000650 <__udivmoddi4+0x19c>
 8000764:	4630      	mov	r0, r6
 8000766:	e74a      	b.n	80005fe <__udivmoddi4+0x14a>
 8000768:	f1ac 0c02 	sub.w	ip, ip, #2
 800076c:	4439      	add	r1, r7
 800076e:	e713      	b.n	8000598 <__udivmoddi4+0xe4>
 8000770:	3802      	subs	r0, #2
 8000772:	443c      	add	r4, r7
 8000774:	e724      	b.n	80005c0 <__udivmoddi4+0x10c>
 8000776:	bf00      	nop

08000778 <__aeabi_idiv0>:
 8000778:	4770      	bx	lr
 800077a:	bf00      	nop

0800077c <main>:
  auto main(void) noexcept -> int;
}
#endif

auto main(void) noexcept -> int
{
 800077c:	b508      	push	{r3, lr}
  // Initialize the ECU manager.
  EcuM_Init();
 800077e:	f000 fd7b 	bl	8001278 <EcuM_Init>

  // Start the task scheduler.
  OsSchedulerStartOs();
 8000782:	f000 fd8d 	bl	80012a0 <OsSchedulerStartOs>

  return static_cast<int>(INT8_C(0));
}
 8000786:	2000      	movs	r0, #0
 8000788:	bd08      	pop	{r3, pc}
 800078a:	bf00      	nop

0800078c <_ZdlPv>:
  }

  return static_cast<void*>(const_cast<std::uint8_t*>(p));
}

void operator delete(void*)               noexcept { }
 800078c:	4770      	bx	lr
 800078e:	bf00      	nop

08000790 <_ZN3crt8init_ramEv>:
      const auto p_data_end = p_data + local_data_size;

      // AXIVION Next Line AutosarC++19_03-M5.2.8: AUTOSAR permitted
      auto p_rom_data = static_cast<const std::uint8_t*>(static_cast<const void*>(&_rom_data_begin));

      while(p_data != p_data_end)
 8000790:	4b0a      	ldr	r3, [pc, #40]	; (80007bc <_ZN3crt8init_ramEv+0x2c>)
 8000792:	480b      	ldr	r0, [pc, #44]	; (80007c0 <_ZN3crt8init_ramEv+0x30>)
 8000794:	4283      	cmp	r3, r0
 8000796:	d006      	beq.n	80007a6 <_ZN3crt8init_ramEv+0x16>
      auto p_rom_data = static_cast<const std::uint8_t*>(static_cast<const void*>(&_rom_data_begin));
 8000798:	4a0a      	ldr	r2, [pc, #40]	; (80007c4 <_ZN3crt8init_ramEv+0x34>)
      {
        *p_data++ = *p_rom_data++; // AXIVION This Line AutosarC++19_03-M5.0.15: AUTOSAR permitted
 800079a:	f812 1b01 	ldrb.w	r1, [r2], #1
 800079e:	f803 1b01 	strb.w	r1, [r3], #1
      while(p_data != p_data_end)
 80007a2:	4298      	cmp	r0, r3
 80007a4:	d1f9      	bne.n	800079a <_ZN3crt8init_ramEv+0xa>
      auto p_bss = static_cast<std::uint8_t*>(static_cast<void*>(&_bss_begin));

      // AXIVION Next Line AutosarC++19_03-M5.0.15: AUTOSAR permitted
      const auto p_bss_end = p_bss + local_bss_size;

      while(p_bss != p_bss_end)
 80007a6:	4b08      	ldr	r3, [pc, #32]	; (80007c8 <_ZN3crt8init_ramEv+0x38>)
 80007a8:	4a08      	ldr	r2, [pc, #32]	; (80007cc <_ZN3crt8init_ramEv+0x3c>)
 80007aa:	4293      	cmp	r3, r2
 80007ac:	d004      	beq.n	80007b8 <_ZN3crt8init_ramEv+0x28>
      {
        // AXIVION Next Line AutosarC++19_03-M5.0.15: AUTOSAR permitted
        *p_bss++ = static_cast<std::uint8_t>(UINT8_C(0));
 80007ae:	2100      	movs	r1, #0
 80007b0:	f803 1b01 	strb.w	r1, [r3], #1
      while(p_bss != p_bss_end)
 80007b4:	4293      	cmp	r3, r2
 80007b6:	d1fb      	bne.n	80007b0 <_ZN3crt8init_ramEv+0x20>
}

auto crt::init_ram() -> void
{
  ::crt_init_ram();
}
 80007b8:	4770      	bx	lr
 80007ba:	bf00      	nop
 80007bc:	20000000 	.word	0x20000000
 80007c0:	20000008 	.word	0x20000008
 80007c4:	08001848 	.word	0x08001848
 80007c8:	20000008 	.word	0x20000008
 80007cc:	20000040 	.word	0x20000040

080007d0 <_ZN3crt10init_ctorsEv>:

  static_cast<void>(it_pfn);
}

auto crt::init_ctors() -> void
{
 80007d0:	b538      	push	{r3, r4, r5, lr}
    for_each(_InputIterator __first, _InputIterator __last, _Function __f)
    {
      // concept requirements
      __glibcxx_function_requires(_InputIteratorConcept<_InputIterator>)
      __glibcxx_requires_valid_range(__first, __last);
      for (; __first != __last; ++__first)
 80007d2:	4c09      	ldr	r4, [pc, #36]	; (80007f8 <_ZN3crt10init_ctorsEv+0x28>)
 80007d4:	4b09      	ldr	r3, [pc, #36]	; (80007fc <_ZN3crt10init_ctorsEv+0x2c>)
 80007d6:	429c      	cmp	r4, r3
 80007d8:	d00c      	beq.n	80007f4 <_ZN3crt10init_ctorsEv+0x24>
 80007da:	1f25      	subs	r5, r4, #4
 80007dc:	1aed      	subs	r5, r5, r3
 80007de:	f025 0503 	bic.w	r5, r5, #3
 80007e2:	f085 0503 	eor.w	r5, r5, #3
 80007e6:	43ed      	mvns	r5, r5
 80007e8:	4425      	add	r5, r4
                    pf();
 80007ea:	f854 3d04 	ldr.w	r3, [r4, #-4]!
 80007ee:	4798      	blx	r3
 80007f0:	42ac      	cmp	r4, r5
 80007f2:	d1fa      	bne.n	80007ea <_ZN3crt10init_ctorsEv+0x1a>
  ::crt_init_ctors();
}
 80007f4:	bd38      	pop	{r3, r4, r5, pc}
 80007f6:	bf00      	nop
 80007f8:	08000350 	.word	0x08000350
 80007fc:	08000350 	.word	0x08000350

08000800 <__vector_unused_irq>:
  extern "C"
  {
  #endif

  // AXIVION Next Line AutosarC++19_03-M7.4.1: AUTOSAR permitted
  static inline void HalCpuNop(void) { ASM_INLINE("nop"); }
 8000800:	bf00      	nop
 8000802:	e7fd      	b.n	8000800 <__vector_unused_irq>

08000804 <__nmi_handler>:
 8000804:	bf00      	nop
 8000806:	e7fd      	b.n	8000804 <__nmi_handler>

08000808 <__hard_fault_handler>:
 8000808:	bf00      	nop
 800080a:	e7fd      	b.n	8000808 <__hard_fault_handler>

0800080c <__mem_manage_handler>:
 800080c:	bf00      	nop
 800080e:	e7fd      	b.n	800080c <__mem_manage_handler>

08000810 <__bus_fault_handler>:
 8000810:	bf00      	nop
 8000812:	e7fd      	b.n	8000810 <__bus_fault_handler>

08000814 <__usage_fault_handler>:
 8000814:	bf00      	nop
 8000816:	e7fd      	b.n	8000814 <__usage_fault_handler>

08000818 <__svc_handler>:
 8000818:	bf00      	nop
 800081a:	e7fd      	b.n	8000818 <__svc_handler>

0800081c <__debug_mon_handler>:
 800081c:	bf00      	nop
 800081e:	e7fd      	b.n	800081c <__debug_mon_handler>

08000820 <__pend_sv_handler>:
 8000820:	bf00      	nop
 8000822:	e7fd      	b.n	8000820 <__pend_sv_handler>

08000824 <Adc_Init>:
#include <Adc.h>

extern "C"
void Adc_Init(const Adc_ConfigType*)
{
}
 8000824:	4770      	bx	lr
 8000826:	bf00      	nop

08000828 <Can_Init>:
#include <Can.h>

extern "C"
void Can_Init(const Can_ConfigType*)
{
}
 8000828:	4770      	bx	lr
 800082a:	bf00      	nop

0800082c <Dio_Init>:
        using register_value_type   = RegisterValueType;

        static auto reg_get(const register_address_type address) -> register_value_type { return *reinterpret_cast<volatile register_value_type*>(address); }

        static auto reg_set(const register_address_type address, const register_value_type value) -> void { *reinterpret_cast<volatile register_value_type*>(address) = value; }
        static auto reg_and(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val & value); }
 800082c:	4816      	ldr	r0, [pc, #88]	; (8000888 <Dio_Init+0x5c>)
        static auto reg_or (const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val | value); }
 800082e:	4917      	ldr	r1, [pc, #92]	; (800088c <Dio_Init+0x60>)
        static auto reg_and(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val & value); }
 8000830:	6803      	ldr	r3, [r0, #0]
              | static_cast<register_value_type>(value & mask_value)
            );
        }

        static auto bit_set(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(static_cast<register_value_type>(reg_val) | static_cast<register_value_type>(1UL << value)); }
        static auto bit_clr(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(static_cast<register_value_type>(reg_val) & static_cast<register_value_type>(~static_cast<register_value_type>(1UL << value))); }
 8000832:	4a17      	ldr	r2, [pc, #92]	; (8000890 <Dio_Init+0x64>)
        static auto reg_and(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val & value); }
 8000834:	f423 6340 	bic.w	r3, r3, #3072	; 0xc00
  }
}

extern "C"
void Dio_Init(const Dio_ConfigType*)
{
 8000838:	b430      	push	{r4, r5}
 800083a:	6003      	str	r3, [r0, #0]
        static auto reg_or (const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val | value); }
 800083c:	680b      	ldr	r3, [r1, #0]
 800083e:	4d15      	ldr	r5, [pc, #84]	; (8000894 <Dio_Init+0x68>)
        static auto reg_and(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val & value); }
 8000840:	4c15      	ldr	r4, [pc, #84]	; (8000898 <Dio_Init+0x6c>)
        static auto reg_or (const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val | value); }
 8000842:	f443 6340 	orr.w	r3, r3, #3072	; 0xc00
 8000846:	600b      	str	r3, [r1, #0]
        static auto bit_clr(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(static_cast<register_value_type>(reg_val) & static_cast<register_value_type>(~static_cast<register_value_type>(1UL << value))); }
 8000848:	6813      	ldr	r3, [r2, #0]
 800084a:	f023 0320 	bic.w	r3, r3, #32
 800084e:	6013      	str	r3, [r2, #0]
        static auto reg_or (const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val | value); }
 8000850:	682b      	ldr	r3, [r5, #0]
 8000852:	f443 6380 	orr.w	r3, r3, #1024	; 0x400
 8000856:	602b      	str	r3, [r5, #0]
        static auto reg_and(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val & value); }
 8000858:	6823      	ldr	r3, [r4, #0]
 800085a:	f423 3340 	bic.w	r3, r3, #196608	; 0x30000
 800085e:	6023      	str	r3, [r4, #0]
        static auto reg_or (const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val | value); }
 8000860:	f8d0 37fc 	ldr.w	r3, [r0, #2044]	; 0x7fc
 8000864:	f443 3340 	orr.w	r3, r3, #196608	; 0x30000
 8000868:	f8c0 37fc 	str.w	r3, [r0, #2044]	; 0x7fc
        static auto bit_clr(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(static_cast<register_value_type>(reg_val) & static_cast<register_value_type>(~static_cast<register_value_type>(1UL << value))); }
 800086c:	f8d1 37fc 	ldr.w	r3, [r1, #2044]	; 0x7fc
 8000870:	f423 7380 	bic.w	r3, r3, #256	; 0x100
 8000874:	f8c1 37fc 	str.w	r3, [r1, #2044]	; 0x7fc
        static auto reg_or (const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(reg_val | value); }
 8000878:	f8d2 37fc 	ldr.w	r3, [r2, #2044]	; 0x7fc
 800087c:	f443 3380 	orr.w	r3, r3, #65536	; 0x10000
  set_direction_output(mcal::reg::gpioa_base, static_cast<std::uint32_t>(UINT8_C(5)));
  set_direction_output(mcal::reg::gpioc_base, static_cast<std::uint32_t>(UINT8_C(8)));
}
 8000880:	bc30      	pop	{r4, r5}
 8000882:	f8c2 37fc 	str.w	r3, [r2, #2044]	; 0x7fc
 8000886:	4770      	bx	lr
 8000888:	4002000c 	.word	0x4002000c
 800088c:	40020008 	.word	0x40020008
 8000890:	40020004 	.word	0x40020004
 8000894:	40020000 	.word	0x40020000
 8000898:	4002080c 	.word	0x4002080c

0800089c <Dio_WriteChannel>:

extern "C"
void Dio_WriteChannel(Dio_ChannelType ChannelId, Dio_LevelType Level)
{
  (Level != STD_LOW ? set_pin_high(mcal::reg::gpioa_base + std::uint32_t((ChannelId >> 8U) * 0x0400U), ChannelId & 0xFU)
 800089c:	0a03      	lsrs	r3, r0, #8
 800089e:	f503 1380 	add.w	r3, r3, #1048576	; 0x100000
 80008a2:	3380      	adds	r3, #128	; 0x80
 80008a4:	029b      	lsls	r3, r3, #10
 80008a6:	f000 000f 	and.w	r0, r0, #15
 80008aa:	b131      	cbz	r1, 80008ba <Dio_WriteChannel+0x1e>
        static auto bit_set(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(static_cast<register_value_type>(reg_val) | static_cast<register_value_type>(1UL << value)); }
 80008ac:	6959      	ldr	r1, [r3, #20]
 80008ae:	2201      	movs	r2, #1
 80008b0:	fa02 f000 	lsl.w	r0, r2, r0
 80008b4:	4308      	orrs	r0, r1
 80008b6:	6158      	str	r0, [r3, #20]
  }
 80008b8:	4770      	bx	lr
        static auto bit_clr(const register_address_type address, const register_value_type value) -> void { const auto reg_val = *reinterpret_cast<volatile register_value_type*>(address); *reinterpret_cast<volatile register_value_type*>(address) = static_cast<register_value_type>(static_cast<register_value_type>(reg_val) & static_cast<register_value_type>(~static_cast<register_value_type>(1UL << value))); }
 80008ba:	695a      	ldr	r2, [r3, #20]
 80008bc:	2101      	movs	r1, #1
 80008be:	fa01 f000 	lsl.w	r0, r1, r0
 80008c2:	ea22 0000 	bic.w	r0, r2, r0
 80008c6:	6158      	str	r0, [r3, #20]
                    : set_pin_low (mcal::reg::gpioa_base + std::uint32_t((ChannelId >> 8U) * 0x0400U), ChannelId & 0xFU));
}
 80008c8:	4770      	bx	lr
 80008ca:	bf00      	nop

080008cc <Gpt_Init>:
      {
        using register_value_type   = RegisterValueType;
        using register_address_type = RegisterAddressType;

        static auto reg_get() -> register_value_type { const volatile register_value_type* const pa = reinterpret_cast<const register_value_type*>(address); return *pa; }
        static auto reg_set() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa =       value; }
 80008cc:	4b0c      	ldr	r3, [pc, #48]	; (8000900 <Gpt_Init+0x34>)
 80008ce:	480d      	ldr	r0, [pc, #52]	; (8000904 <Gpt_Init+0x38>)
 80008d0:	490d      	ldr	r1, [pc, #52]	; (8000908 <Gpt_Init+0x3c>)

} } // namespace mcal::gpt

extern "C"
void Gpt_Init(const Gpt_ConfigType*)
{
 80008d2:	b410      	push	{r4}
 80008d4:	2200      	movs	r2, #0
 80008d6:	f06f 447f 	mvn.w	r4, #4278190080	; 0xff000000
 80008da:	601a      	str	r2, [r3, #0]
 80008dc:	6004      	str	r4, [r0, #0]
 80008de:	600a      	str	r2, [r1, #0]
        static auto reg_and() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa & value; }
        static auto reg_or () -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa | value; }
 80008e0:	681a      	ldr	r2, [r3, #0]
  // StkCtrl->TickInt  = SYS_TICK_ENABLE_INT;
  mcal::reg::access<std::uint32_t, std::uint32_t, mcal::reg::sys_tick_ctrl, UINT32_C(2)>::reg_or();

  // StkCtrl->Enable = SYS_TICK_ENABLE_TIMER;
  mcal::reg::access<std::uint32_t, std::uint32_t, mcal::reg::sys_tick_ctrl, UINT32_C(1)>::reg_or();
}
 80008e2:	f85d 4b04 	ldr.w	r4, [sp], #4
 80008e6:	f042 0204 	orr.w	r2, r2, #4
 80008ea:	601a      	str	r2, [r3, #0]
 80008ec:	681a      	ldr	r2, [r3, #0]
 80008ee:	f042 0202 	orr.w	r2, r2, #2
 80008f2:	601a      	str	r2, [r3, #0]
 80008f4:	681a      	ldr	r2, [r3, #0]
 80008f6:	f042 0201 	orr.w	r2, r2, #1
 80008fa:	601a      	str	r2, [r3, #0]
 80008fc:	4770      	bx	lr
 80008fe:	bf00      	nop
 8000900:	e000e010 	.word	0xe000e010
 8000904:	e000e014 	.word	0xe000e014
 8000908:	e000e018 	.word	0xe000e018

0800090c <Gpt_GetTimeElapsed>:

extern "C"
Gpt_ValueType Gpt_GetTimeElapsed(Gpt_ChannelType)
{
 800090c:	b538      	push	{r3, r4, r5, lr}
      - mcal::reg::access<timer_address_type,
                          timer_register_type,
                          mcal::reg::sys_tick_val>::reg_get()
    );

  const auto system_tick_1 = static_cast<std::uint64_t>(system_tick);
 800090e:	4a0d      	ldr	r2, [pc, #52]	; (8000944 <Gpt_GetTimeElapsed+0x38>)
        static auto reg_get() -> register_value_type { const volatile register_value_type* const pa = reinterpret_cast<const register_value_type*>(address); return *pa; }
 8000910:	4b0d      	ldr	r3, [pc, #52]	; (8000948 <Gpt_GetTimeElapsed+0x3c>)
 8000912:	6818      	ldr	r0, [r3, #0]
 8000914:	e9d2 4500 	ldrd	r4, r5, [r2]
 8000918:	6819      	ldr	r1, [r3, #0]
    );
 800091a:	f06f 437f 	mvn.w	r3, #4278190080	; 0xff000000
 800091e:	1a18      	subs	r0, r3, r0
    (
        static_cast<timer_register_type>(UINT32_C(0x00FFFFFF))
      - mcal::reg::access<timer_address_type,
                          timer_register_type,
                          mcal::reg::sys_tick_val>::reg_get()
    );
 8000920:	1a5b      	subs	r3, r3, r1

  const auto consistent_tick =
    static_cast<std::uint64_t>
    (
      // AXIVION Next Line AutosarC++19_03-A5.16.1: AUTOSAR permitted
      tick_is_consistent ? static_cast<std::uint64_t>(system_tick_1 | static_cast<std::uint64_t>(arm_sys_tick_val_1))
 8000922:	4298      	cmp	r0, r3
                         : static_cast<std::uint64_t>(system_tick   | static_cast<std::uint64_t>(arm_sys_tick_val_2))
 8000924:	bf8b      	itete	hi
 8000926:	e9d2 0100 	ldrdhi	r0, r1, [r2]
      tick_is_consistent ? static_cast<std::uint64_t>(system_tick_1 | static_cast<std::uint64_t>(arm_sys_tick_val_1))
 800092a:	ea40 0304 	orrls.w	r3, r0, r4
 800092e:	4303      	orrhi	r3, r0
 8000930:	4629      	movls	r1, r5
    );

  // Perform scaling and include a rounding correction.
  const auto consistent_microsecond_tick =
 8000932:	f113 005a 	adds.w	r0, r3, #90	; 0x5a
 8000936:	f141 0100 	adc.w	r1, r1, #0
 800093a:	22b4      	movs	r2, #180	; 0xb4
 800093c:	2300      	movs	r3, #0
 800093e:	f7ff fda1 	bl	8000484 <__aeabi_uldivmod>
}
 8000942:	bd38      	pop	{r3, r4, r5, pc}
 8000944:	20000018 	.word	0x20000018
 8000948:	e000e018 	.word	0xe000e018

0800094c <SysTick_Handler>:
{
  // Increment the 64-bit system tick with 0x01000000, representing (2^24) ticks.
  mcal::gpt::detail::system_tick =
    static_cast<mcal::gpt::value_type>
    (
        mcal::gpt::detail::system_tick
 800094c:	4905      	ldr	r1, [pc, #20]	; (8000964 <SysTick_Handler+0x18>)
{
 800094e:	b430      	push	{r4, r5}
        mcal::gpt::detail::system_tick
 8000950:	e9d1 2300 	ldrd	r2, r3, [r1]
      + static_cast<std::uint32_t>(UINT32_C(0x01000000))
 8000954:	f112 7480 	adds.w	r4, r2, #16777216	; 0x1000000
 8000958:	f143 0500 	adc.w	r5, r3, #0
  mcal::gpt::detail::system_tick =
 800095c:	e9c1 4500 	strd	r4, r5, [r1]
    );
}
 8000960:	bc30      	pop	{r4, r5}
 8000962:	4770      	bx	lr
 8000964:	20000018 	.word	0x20000018

08000968 <Mcu_Init>:
        static auto reg_or () -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa | value; }
 8000968:	4917      	ldr	r1, [pc, #92]	; (80009c8 <Mcu_Init+0x60>)
 800096a:	4b18      	ldr	r3, [pc, #96]	; (80009cc <Mcu_Init+0x64>)
 800096c:	680a      	ldr	r2, [r1, #0]
 800096e:	f442 0270 	orr.w	r2, r2, #15728640	; 0xf00000
  }
}

extern "C"
auto Mcu_Init(const Mcu_ConfigType*) -> void
{
 8000972:	b4f0      	push	{r4, r5, r6, r7}
 8000974:	600a      	str	r2, [r1, #0]
 8000976:	681a      	ldr	r2, [r3, #0]
        static auto reg_set() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa =       value; }
 8000978:	4f15      	ldr	r7, [pc, #84]	; (80009d0 <Mcu_Init+0x68>)
 800097a:	4c16      	ldr	r4, [pc, #88]	; (80009d4 <Mcu_Init+0x6c>)
 800097c:	4e16      	ldr	r6, [pc, #88]	; (80009d8 <Mcu_Init+0x70>)
 800097e:	4d17      	ldr	r5, [pc, #92]	; (80009dc <Mcu_Init+0x74>)
        static auto reg_or () -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa | value; }
 8000980:	4917      	ldr	r1, [pc, #92]	; (80009e0 <Mcu_Init+0x78>)
        static auto reg_set() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa =       value; }
 8000982:	2000      	movs	r0, #0
        static auto reg_or () -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa | value; }
 8000984:	f042 0201 	orr.w	r2, r2, #1
 8000988:	601a      	str	r2, [r3, #0]
        static auto reg_set() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa =       value; }
 800098a:	6038      	str	r0, [r7, #0]
        static auto reg_and() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa & value; }
 800098c:	681a      	ldr	r2, [r3, #0]
 800098e:	f022 7284 	bic.w	r2, r2, #17301504	; 0x1080000
 8000992:	f422 3280 	bic.w	r2, r2, #65536	; 0x10000
 8000996:	601a      	str	r2, [r3, #0]
        static auto reg_set() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa =       value; }
 8000998:	6026      	str	r6, [r4, #0]
        static auto reg_and() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa & value; }
 800099a:	681a      	ldr	r2, [r3, #0]
 800099c:	f422 2280 	bic.w	r2, r2, #262144	; 0x40000
 80009a0:	601a      	str	r2, [r3, #0]
        static auto reg_set() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa =       value; }
 80009a2:	f240 7305 	movw	r3, #1797	; 0x705
 80009a6:	6028      	str	r0, [r5, #0]
 80009a8:	f8c4 33fc 	str.w	r3, [r4, #1020]	; 0x3fc
        static auto reg_or () -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa | value; }
 80009ac:	680b      	ldr	r3, [r1, #0]
 80009ae:	4a0d      	ldr	r2, [pc, #52]	; (80009e4 <Mcu_Init+0x7c>)
  mcal::reg::access<std::uint32_t,
                    std::uint32_t,
                    mcal::reg::pwr_cr,
                    static_cast<std::uint32_t>(UINT32_C(0x0000C000))>::reg_or();

  Mcu_InitHasBeenCalled() = true;
 80009b0:	480d      	ldr	r0, [pc, #52]	; (80009e8 <Mcu_Init+0x80>)
 80009b2:	f043 5380 	orr.w	r3, r3, #268435456	; 0x10000000
 80009b6:	600b      	str	r3, [r1, #0]
 80009b8:	6813      	ldr	r3, [r2, #0]
 80009ba:	2101      	movs	r1, #1
 80009bc:	f443 4340 	orr.w	r3, r3, #49152	; 0xc000
 80009c0:	6013      	str	r3, [r2, #0]
}
 80009c2:	bcf0      	pop	{r4, r5, r6, r7}
  Mcu_InitHasBeenCalled() = true;
 80009c4:	7001      	strb	r1, [r0, #0]
}
 80009c6:	4770      	bx	lr
 80009c8:	e000ed88 	.word	0xe000ed88
 80009cc:	40023800 	.word	0x40023800
 80009d0:	40023808 	.word	0x40023808
 80009d4:	40023804 	.word	0x40023804
 80009d8:	24003010 	.word	0x24003010
 80009dc:	4002380c 	.word	0x4002380c
 80009e0:	40023840 	.word	0x40023840
 80009e4:	40007000 	.word	0x40007000
 80009e8:	20000020 	.word	0x20000020

080009ec <_ZN5local14mcu_init_clockEv>:
 80009ec:	4a1a      	ldr	r2, [pc, #104]	; (8000a58 <_ZN5local14mcu_init_clockEv+0x6c>)
 80009ee:	6813      	ldr	r3, [r2, #0]
 80009f0:	f443 3380 	orr.w	r3, r3, #65536	; 0x10000
 80009f4:	6013      	str	r3, [r2, #0]
        static auto reg_get() -> register_value_type { const volatile register_value_type* const pa = reinterpret_cast<const register_value_type*>(address); return *pa; }
 80009f6:	6813      	ldr	r3, [r2, #0]
                    std::uint32_t,
                    mcal::reg::rcc_cr,
                    static_cast<std::uint32_t>(UINT32_C(0x00010000))>::reg_or();

  // Wait until the hse is ready.
  while(!mcal::reg::access<std::uint32_t,
 80009f8:	039b      	lsls	r3, r3, #14
{
 80009fa:	b082      	sub	sp, #8
  while(!mcal::reg::access<std::uint32_t,
 80009fc:	d403      	bmi.n	8000a06 <_ZN5local14mcu_init_clockEv+0x1a>
 80009fe:	bf00      	nop
 8000a00:	6813      	ldr	r3, [r2, #0]
 8000a02:	0398      	lsls	r0, r3, #14
 8000a04:	d5fb      	bpl.n	80009fe <_ZN5local14mcu_init_clockEv+0x12>
        static auto reg_set() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa =       value; }
 8000a06:	4b15      	ldr	r3, [pc, #84]	; (8000a5c <_ZN5local14mcu_init_clockEv+0x70>)
        static auto reg_or () -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa | value; }
 8000a08:	4915      	ldr	r1, [pc, #84]	; (8000a60 <_ZN5local14mcu_init_clockEv+0x74>)
        static auto reg_set() -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa =       value; }
 8000a0a:	4a16      	ldr	r2, [pc, #88]	; (8000a64 <_ZN5local14mcu_init_clockEv+0x78>)
 8000a0c:	601a      	str	r2, [r3, #0]
        static auto reg_or () -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa | value; }
 8000a0e:	680b      	ldr	r3, [r1, #0]
 8000a10:	4a11      	ldr	r2, [pc, #68]	; (8000a58 <_ZN5local14mcu_init_clockEv+0x6c>)
 8000a12:	f443 4314 	orr.w	r3, r3, #37888	; 0x9400
 8000a16:	600b      	str	r3, [r1, #0]
 8000a18:	6813      	ldr	r3, [r2, #0]
 8000a1a:	f043 7380 	orr.w	r3, r3, #16777216	; 0x1000000
 8000a1e:	6013      	str	r3, [r2, #0]
        static auto reg_get() -> register_value_type { const volatile register_value_type* const pa = reinterpret_cast<const register_value_type*>(address); return *pa; }
 8000a20:	6813      	ldr	r3, [r2, #0]
                               std::uint32_t,
                               mcal::reg::rcc_cr,
                               static_cast<std::uint32_t>(UINT32_C(0x01000000))>::reg_or();

  // Wait until the pll is locked.
  while(!mcal::reg::access<std::uint32_t,
 8000a22:	0199      	lsls	r1, r3, #6
 8000a24:	d403      	bmi.n	8000a2e <_ZN5local14mcu_init_clockEv+0x42>
 8000a26:	bf00      	nop
 8000a28:	6813      	ldr	r3, [r2, #0]
 8000a2a:	019b      	lsls	r3, r3, #6
 8000a2c:	d5fb      	bpl.n	8000a26 <_ZN5local14mcu_init_clockEv+0x3a>
 8000a2e:	4a0c      	ldr	r2, [pc, #48]	; (8000a60 <_ZN5local14mcu_init_clockEv+0x74>)
 8000a30:	6813      	ldr	r3, [r2, #0]
          volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address);

          *pa =
            register_value_type
            (
                register_value_type(reg_get() & register_value_type(~mask_value))
 8000a32:	f023 0303 	bic.w	r3, r3, #3
              | register_value_type(value & mask_value)
 8000a36:	f043 0302 	orr.w	r3, r3, #2
  mcal::reg::access<std::uint32_t,
                    std::uint32_t,
                    mcal::reg::rcc_cfgr,
                    static_cast<std::uint32_t>(UINT8_C(2))>::reg_msk<static_cast<std::uint32_t>(UINT8_C(3))>();

  volatile auto mcal_osc_rcc_cfgr = static_cast<std::uint32_t>(UINT8_C(0));
 8000a3a:	2100      	movs	r1, #0
          *pa =
 8000a3c:	6013      	str	r3, [r2, #0]
 8000a3e:	9101      	str	r1, [sp, #4]

  // Wait until the pll is latched as the system clock source.
  while(mcal_osc_rcc_cfgr != static_cast<std::uint32_t>(UINT32_C(0x00000008)))
 8000a40:	9b01      	ldr	r3, [sp, #4]
 8000a42:	2b08      	cmp	r3, #8
 8000a44:	d006      	beq.n	8000a54 <_ZN5local14mcu_init_clockEv+0x68>
        static auto reg_get() -> register_value_type { const volatile register_value_type* const pa = reinterpret_cast<const register_value_type*>(address); return *pa; }
 8000a46:	6813      	ldr	r3, [r2, #0]
  {
    mcal_osc_rcc_cfgr =
      mcal::reg::access<std::uint32_t,
                        std::uint32_t,
                        mcal::reg::rcc_cfgr>::reg_get() & static_cast<std::uint32_t>(UINT32_C(0x0000000C));
 8000a48:	f003 030c 	and.w	r3, r3, #12
    mcal_osc_rcc_cfgr =
 8000a4c:	9301      	str	r3, [sp, #4]
  while(mcal_osc_rcc_cfgr != static_cast<std::uint32_t>(UINT32_C(0x00000008)))
 8000a4e:	9b01      	ldr	r3, [sp, #4]
 8000a50:	2b08      	cmp	r3, #8
 8000a52:	d1f8      	bne.n	8000a46 <_ZN5local14mcu_init_clockEv+0x5a>

  // Now we have:
  //   * The hse is ready.
  //   * The pll is locked.
  //   * The pll is the clock source.
}
 8000a54:	b002      	add	sp, #8
 8000a56:	4770      	bx	lr
 8000a58:	40023800 	.word	0x40023800
 8000a5c:	40023804 	.word	0x40023804
 8000a60:	40023808 	.word	0x40023808
 8000a64:	07405a08 	.word	0x07405a08

08000a68 <Mcu_InitClock>:
} // namespace local


extern "C"
Std_ReturnType Mcu_InitClock(Mcu_ClockType ClockSetting)
{
 8000a68:	b508      	push	{r3, lr}
  static_cast<void>(ClockSetting);

  // Configure the system clock for 180MHz using the hse-pll.

  local::mcu_init_clock();
 8000a6a:	f7ff ffbf 	bl	80009ec <_ZN5local14mcu_init_clockEv>

  constexpr auto system_clock_is_ok = true;

  return ((system_clock_is_ok == true) ? E_OK : E_NOT_OK);
}
 8000a6e:	2000      	movs	r0, #0
 8000a70:	bd08      	pop	{r3, pc}
 8000a72:	bf00      	nop

08000a74 <Mcu_DistributePllClock>:

extern "C"
Std_ReturnType Mcu_DistributePllClock(void)
{
  return E_OK;
}
 8000a74:	2000      	movs	r0, #0
 8000a76:	4770      	bx	lr

08000a78 <Port_Init>:
        static auto reg_or () -> void { volatile register_value_type* const pa = reinterpret_cast<volatile register_value_type*>(address); *pa = *pa | value; }
 8000a78:	4a02      	ldr	r2, [pc, #8]	; (8000a84 <Port_Init+0xc>)
 8000a7a:	6813      	ldr	r3, [r2, #0]
 8000a7c:	f043 0305 	orr.w	r3, r3, #5
 8000a80:	6013      	str	r3, [r2, #0]

  mcal::reg::access<std::uint32_t,
                    std::uint32_t,
                    mcal::reg::rcc_ahb1enr,
                    UINT32_C(0x05) >::reg_or();
}
 8000a82:	4770      	bx	lr
 8000a84:	40023830 	.word	0x40023830

08000a88 <Wdg_Init>:
#include <Wdg.h>

extern "C"
void Wdg_Init(const Wdg_ConfigType*)
{
}
 8000a88:	4770      	bx	lr
 8000a8a:	bf00      	nop

08000a8c <Wdg_Trigger>:

extern "C"
void Wdg_Trigger()
{
}
 8000a8c:	4770      	bx	lr
 8000a8e:	bf00      	nop

08000a90 <TaskApplBenchmark_Main_Init>:
}

extern "C"
void TaskApplBenchmark_Main_Init(void)
{
  appl_benchmark_main_result_is_ok = true;
 8000a90:	4b01      	ldr	r3, [pc, #4]	; (8000a98 <TaskApplBenchmark_Main_Init+0x8>)
 8000a92:	2201      	movs	r2, #1
 8000a94:	701a      	strb	r2, [r3, #0]
}
 8000a96:	4770      	bx	lr
 8000a98:	20000021 	.word	0x20000021

08000a9c <TaskApplBenchmark_Main_Func>:

extern "C"
void TaskApplBenchmark_Main_Func(void)
{
 8000a9c:	b510      	push	{r4, lr}
  IoHwAb_DebugPortHigh();
 8000a9e:	f000 fbdd 	bl	800125c <IoHwAb_DebugPortHigh>
  const bool result_is_ok = test_single_hash_sha512_01();
 8000aa2:	f000 facd 	bl	8001040 <test_single_hash_sha512_01>
 8000aa6:	4604      	mov	r4, r0
  IoHwAb_DebugPortLow();
 8000aa8:	f000 fbde 	bl	8001268 <IoHwAb_DebugPortLow>

  appl_benchmark_main_result_is_ok = (appl_benchmark_main_result_is_ok && result_is_ok);
 8000aac:	4b04      	ldr	r3, [pc, #16]	; (8000ac0 <TaskApplBenchmark_Main_Func+0x24>)
 8000aae:	781a      	ldrb	r2, [r3, #0]
 8000ab0:	b102      	cbz	r2, 8000ab4 <TaskApplBenchmark_Main_Func+0x18>
 8000ab2:	b91c      	cbnz	r4, 8000abc <TaskApplBenchmark_Main_Func+0x20>
 8000ab4:	2200      	movs	r2, #0
 8000ab6:	701a      	strb	r2, [r3, #0]
 8000ab8:	bf00      	nop
 8000aba:	e7fd      	b.n	8000ab8 <TaskApplBenchmark_Main_Func+0x1c>
    while(true)
    {
      HalCpuNop();
    }
  }
}
 8000abc:	bd10      	pop	{r4, pc}
 8000abe:	bf00      	nop
 8000ac0:	20000021 	.word	0x20000021

08000ac4 <_ZNK2al6crypto6stream4hash13hash_sha_baseILj512ELj512EyLj128ELj128EE10get_resultEv>:
      }

      this->transform();
    }

    AL_CRYPTO_NODISCARD auto get_result() const -> typename base_class_type::result_type override
 8000ac4:	b4f0      	push	{r4, r5, r6, r7}
 8000ac6:	1e47      	subs	r7, r0, #1
    }

    auto copy_transform_context_reverse(typename base_class_type::result_type::pointer result_dest,
                                        const std::size_t src_offset = static_cast<std::size_t>(UINT8_C(0))) const -> void
    {
      for(auto   output_index = static_cast<std::size_t>(UINT8_C(0));
 8000ac8:	2400      	movs	r4, #0

        // AXIVION Next Line AutosarC++19_03-M5.0.15: AUTOSAR permitted
        *(result_dest + output_index) =
          static_cast<std::uint8_t>
          (
            transform_context[context_index] >> right_shift_amount
 8000aca:	f024 0207 	bic.w	r2, r4, #7
                - static_cast<std::size_t>(output_index % conversion_scale())
 8000ace:	43e3      	mvns	r3, r4
            transform_context[context_index] >> right_shift_amount
 8000ad0:	440a      	add	r2, r1
 8000ad2:	e9d2 2624 	ldrd	r2, r6, [r2, #144]	; 0x90
                - static_cast<std::size_t>(output_index % conversion_scale())
 8000ad6:	f003 0307 	and.w	r3, r3, #7
        const auto right_shift_amount =
 8000ada:	00db      	lsls	r3, r3, #3
            transform_context[context_index] >> right_shift_amount
 8000adc:	f1c3 0520 	rsb	r5, r3, #32
 8000ae0:	40da      	lsrs	r2, r3
 8000ae2:	fa06 f505 	lsl.w	r5, r6, r5
 8000ae6:	3b20      	subs	r3, #32
 8000ae8:	432a      	orrs	r2, r5
 8000aea:	fa26 f303 	lsr.w	r3, r6, r3
      for(auto   output_index = static_cast<std::size_t>(UINT8_C(0));
 8000aee:	3401      	adds	r4, #1
            transform_context[context_index] >> right_shift_amount
 8000af0:	431a      	orrs	r2, r3
                 output_index < std::tuple_size<typename base_class_type::result_type>::value;
 8000af2:	2c40      	cmp	r4, #64	; 0x40
        *(result_dest + output_index) =
 8000af4:	f807 2f01 	strb.w	r2, [r7, #1]!
                 output_index < std::tuple_size<typename base_class_type::result_type>::value;
 8000af8:	d1e7      	bne.n	8000aca <_ZNK2al6crypto6stream4hash13hash_sha_baseILj512ELj512EyLj128ELj128EE10get_resultEv+0x6>

      // Extract the hash result
      base_class_type::copy_transform_context_reverse(result.data());

      return result;
    }
 8000afa:	bcf0      	pop	{r4, r5, r6, r7}
 8000afc:	4770      	bx	lr
 8000afe:	bf00      	nop

08000b00 <_ZN2al6crypto6stream4hash11hash_sha512D1Ev>:

    hash_sha512(const hash_sha512& other) = default;

    hash_sha512(hash_sha512&& other) noexcept = default;

    ~hash_sha512() override = default;
 8000b00:	4770      	bx	lr
 8000b02:	bf00      	nop

08000b04 <_ZN2al6crypto6stream4hash13hash_sha_baseILj512ELj512EyLj128ELj128EE8finalizeEv>:
      base_class_type::message_buffer[base_class_type::message_index] = static_cast<std::uint8_t>(UINT8_C(0x80));
 8000b04:	6843      	ldr	r3, [r0, #4]
 8000b06:	18c2      	adds	r2, r0, r3
      ++base_class_type::message_index;
 8000b08:	3301      	adds	r3, #1
      base_class_type::message_buffer[base_class_type::message_index] = static_cast<std::uint8_t>(UINT8_C(0x80));
 8000b0a:	2180      	movs	r1, #128	; 0x80
      if(base_class_type::message_index > static_cast<std::uint_fast8_t>(buffer_top))
 8000b0c:	2b70      	cmp	r3, #112	; 0x70
    auto finalize() -> void override
 8000b0e:	b570      	push	{r4, r5, r6, lr}
      base_class_type::message_buffer[base_class_type::message_index] = static_cast<std::uint8_t>(UINT8_C(0x80));
 8000b10:	7411      	strb	r1, [r2, #16]
    auto finalize() -> void override
 8000b12:	4604      	mov	r4, r0
      ++base_class_type::message_index;
 8000b14:	6043      	str	r3, [r0, #4]
      if(base_class_type::message_index > static_cast<std::uint_fast8_t>(buffer_top))
 8000b16:	d902      	bls.n	8000b1e <_ZN2al6crypto6stream4hash13hash_sha_baseILj512ELj512EyLj128ELj128EE8finalizeEv+0x1a>
        this->transform();
 8000b18:	6803      	ldr	r3, [r0, #0]
 8000b1a:	69db      	ldr	r3, [r3, #28]
 8000b1c:	4798      	blx	r3
      _GLIBCXX17_CONSTEXPR const_iterator
      begin() const noexcept
      { return const_iterator(data()); }

      _GLIBCXX17_CONSTEXPR iterator
      end() noexcept
 8000b1e:	68a3      	ldr	r3, [r4, #8]
      { return iterator(data() + _Nm); }
 8000b20:	f104 0090 	add.w	r0, r4, #144	; 0x90

      /**
       *  This %iterator will move in the opposite direction that @p x does.
      */
      explicit _GLIBCXX17_CONSTEXPR
      reverse_iterator(iterator_type __x) : current(__x) { }
 8000b24:	f104 0680 	add.w	r6, r4, #128	; 0x80
      auto carry = static_cast<std::uint_fast8_t>(UINT8_C(0));
 8000b28:	2100      	movs	r1, #0
        const auto the_word =
 8000b2a:	00db      	lsls	r3, r3, #3
 8000b2c:	b29d      	uxth	r5, r3
        *ri = static_cast<std::uint8_t>(the_word | static_cast<std::uint_least16_t>(carry));
 8000b2e:	4329      	orrs	r1, r5
 8000b30:	f800 1d01 	strb.w	r1, [r0, #-1]!
            base_class_type::message_length_total >> static_cast<unsigned>(UINT8_C(8))
 8000b34:	e9d4 3202 	ldrd	r3, r2, [r4, #8]
 8000b38:	0a1b      	lsrs	r3, r3, #8
 8000b3a:	ea43 6302 	orr.w	r3, r3, r2, lsl #24
               ri != base_class_type::message_buffer.rbegin() + static_cast<std::ptrdiff_t>(message_length_total_width());
 8000b3e:	42b0      	cmp	r0, r6
            base_class_type::message_length_total >> static_cast<unsigned>(UINT8_C(8))
 8000b40:	ea4f 2212 	mov.w	r2, r2, lsr #8
        base_class_type::message_length_total =
 8000b44:	e9c4 3202 	strd	r3, r2, [r4, #8]
        carry =
 8000b48:	f3c5 2102 	ubfx	r1, r5, #8, #3
               ri != base_class_type::message_buffer.rbegin() + static_cast<std::ptrdiff_t>(message_length_total_width());
 8000b4c:	d1ed      	bne.n	8000b2a <_ZN2al6crypto6stream4hash13hash_sha_baseILj512ELj512EyLj128ELj128EE8finalizeEv+0x26>
      this->transform();
 8000b4e:	6823      	ldr	r3, [r4, #0]
 8000b50:	4620      	mov	r0, r4
 8000b52:	69db      	ldr	r3, [r3, #28]
    }
 8000b54:	e8bd 4070 	ldmia.w	sp!, {r4, r5, r6, lr}
      this->transform();
 8000b58:	4718      	bx	r3
 8000b5a:	bf00      	nop

08000b5c <_ZN2al6crypto6stream4hash13hash_sha_baseILj512ELj512EyLj128ELj128EE23finalize_and_get_resultEPh>:

    auto finalize_and_get_result(typename base_class_type::result_type::pointer result_data) -> void override
    {
      finalize();
 8000b5c:	6803      	ldr	r3, [r0, #0]
    auto finalize_and_get_result(typename base_class_type::result_type::pointer result_data) -> void override
 8000b5e:	b570      	push	{r4, r5, r6, lr}
      finalize();
 8000b60:	691b      	ldr	r3, [r3, #16]
    auto finalize_and_get_result(typename base_class_type::result_type::pointer result_data) -> void override
 8000b62:	460e      	mov	r6, r1
 8000b64:	4604      	mov	r4, r0
 8000b66:	3e01      	subs	r6, #1
      finalize();
 8000b68:	4798      	blx	r3
      for(auto   output_index = static_cast<std::size_t>(UINT8_C(0));
 8000b6a:	2100      	movs	r1, #0
            transform_context[context_index] >> right_shift_amount
 8000b6c:	f021 0207 	bic.w	r2, r1, #7
                - static_cast<std::size_t>(output_index % conversion_scale())
 8000b70:	43cb      	mvns	r3, r1
            transform_context[context_index] >> right_shift_amount
 8000b72:	4422      	add	r2, r4
 8000b74:	e9d2 2524 	ldrd	r2, r5, [r2, #144]	; 0x90
                - static_cast<std::size_t>(output_index % conversion_scale())
 8000b78:	f003 0307 	and.w	r3, r3, #7
        const auto right_shift_amount =
 8000b7c:	00db      	lsls	r3, r3, #3
            transform_context[context_index] >> right_shift_amount
 8000b7e:	f1c3 0020 	rsb	r0, r3, #32
 8000b82:	40da      	lsrs	r2, r3
 8000b84:	fa05 f000 	lsl.w	r0, r5, r0
 8000b88:	3b20      	subs	r3, #32
 8000b8a:	4302      	orrs	r2, r0
 8000b8c:	fa25 f303 	lsr.w	r3, r5, r3
      for(auto   output_index = static_cast<std::size_t>(UINT8_C(0));
 8000b90:	3101      	adds	r1, #1
            transform_context[context_index] >> right_shift_amount
 8000b92:	431a      	orrs	r2, r3
                 output_index < std::tuple_size<typename base_class_type::result_type>::value;
 8000b94:	2940      	cmp	r1, #64	; 0x40
        *(result_dest + output_index) =
 8000b96:	f806 2f01 	strb.w	r2, [r6, #1]!
                 output_index < std::tuple_size<typename base_class_type::result_type>::value;
 8000b9a:	d1e7      	bne.n	8000b6c <_ZN2al6crypto6stream4hash13hash_sha_baseILj512ELj512EyLj128ELj128EE23finalize_and_get_resultEPh+0x10>

      base_class_type::copy_transform_context_reverse(result_data);
    }
 8000b9c:	bd70      	pop	{r4, r5, r6, pc}
 8000b9e:	bf00      	nop

08000ba0 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv>:
  private:
    using local_transform_block_type = std::array<std::uint64_t, static_cast<std::size_t>(UINT8_C(80))>;

    static constexpr auto local_transform_block_size = std::tuple_size<local_transform_block_type>::value;

    auto transform() -> void override
 8000ba0:	e92d 4ff0 	stmdb	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, lr}
 8000ba4:	f2ad 5da4 	subw	sp, sp, #1444	; 0x5a4
 8000ba8:	4603      	mov	r3, r0
      // TBD: It is probably possible to improve the performance
      // of this core block of the transformation. Try looking,
      // for instance, in the original benchmark code in an old
      // CC VOB called Bench1.

      constexpr local_transform_block_type transform_constants
 8000baa:	49c5      	ldr	r1, [pc, #788]	; (8000ec0 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv+0x320>)
    auto transform() -> void override
 8000bac:	9314      	str	r3, [sp, #80]	; 0x50
      constexpr local_transform_block_type transform_constants
 8000bae:	f44f 7220 	mov.w	r2, #640	; 0x280
 8000bb2:	a828      	add	r0, sp, #160	; 0xa0
    auto transform() -> void override
 8000bb4:	461c      	mov	r4, r3
      constexpr local_transform_block_type transform_constants
 8000bb6:	f7ff fbcb 	bl	8000350 <memcpy>
               copy_index < std::tuple_size<message_buffer_type>::value;
 8000bba:	abc6      	add	r3, sp, #792	; 0x318
 8000bbc:	a9c8      	add	r1, sp, #800	; 0x320
 8000bbe:	f104 080f 	add.w	r8, r4, #15
 8000bc2:	930b      	str	r3, [sp, #44]	; 0x2c
 8000bc4:	461f      	mov	r7, r3
 8000bc6:	f50d 7e66 	add.w	lr, sp, #920	; 0x398
      for(auto copy_index = static_cast<std::size_t>(UINT8_C(0));
 8000bca:	f04f 0c00 	mov.w	ip, #0
 8000bce:	4689      	mov	r9, r1
 8000bd0:	2400      	movs	r4, #0
 8000bd2:	3708      	adds	r7, #8
 8000bd4:	4625      	mov	r5, r4
 8000bd6:	eb08 060c 	add.w	r6, r8, ip
 8000bda:	2338      	movs	r3, #56	; 0x38
          *(dest + dest_index) |= static_cast<transform_context_value_type>(static_cast<transform_context_value_type>(message_buffer[copy_index + j]) << left_shift_amount);
 8000bdc:	f816 af01 	ldrb.w	sl, [r6, #1]!
 8000be0:	f1a3 0220 	sub.w	r2, r3, #32
 8000be4:	f1c3 0120 	rsb	r1, r3, #32
 8000be8:	fa0a f003 	lsl.w	r0, sl, r3
 8000bec:	fa0a f202 	lsl.w	r2, sl, r2
 8000bf0:	fa2a f101 	lsr.w	r1, sl, r1
 8000bf4:	3b08      	subs	r3, #8
 8000bf6:	430a      	orrs	r2, r1
        for(auto j = static_cast<std::size_t>(UINT8_C(0)); j < conversion_scale(); ++j)
 8000bf8:	f113 0f08 	cmn.w	r3, #8
          *(dest + dest_index) |= static_cast<transform_context_value_type>(static_cast<transform_context_value_type>(message_buffer[copy_index + j]) << left_shift_amount);
 8000bfc:	ea45 0502 	orr.w	r5, r5, r2
 8000c00:	ea44 0400 	orr.w	r4, r4, r0
        for(auto j = static_cast<std::size_t>(UINT8_C(0)); j < conversion_scale(); ++j)
 8000c04:	d1ea      	bne.n	8000bdc <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv+0x3c>
               copy_index < std::tuple_size<message_buffer_type>::value;
 8000c06:	45be      	cmp	lr, r7
 8000c08:	e9c7 4500 	strd	r4, r5, [r7]
      for(auto copy_index = static_cast<std::size_t>(UINT8_C(0));
 8000c0c:	f10c 0c08 	add.w	ip, ip, #8
               copy_index < std::tuple_size<message_buffer_type>::value;
 8000c10:	d1de      	bne.n	8000bd0 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv+0x30>
 8000c12:	4649      	mov	r1, r9
 8000c14:	f50d 6ca4 	add.w	ip, sp, #1312	; 0x520

      this->copy_message_buffer_reverse(local_transform_block.data());

      for(auto i = static_cast<std::size_t>(UINT8_C(16)); i < local_transform_block_size; ++i)
      {
        local_transform_block[i] =   transform_function4(local_transform_block[static_cast<std::size_t>(i - static_cast<std::size_t>(UINT8_C(2)))])
 8000c18:	e9d1 4e1c 	ldrd	r4, lr, [r1, #112]	; 0x70
    const auto part1 = static_cast<arithmetic_type>(bits_to_shift_is_limited_to_range ? static_cast<arithmetic_type>(value_being_shifted >> shift_limit)       : value_being_shifted);

    // AXIVION Next Line AutosarC++19_03-A5.16.1: AUTOSAR permitted
    const auto part2 = static_cast<arithmetic_type>(bits_to_shift_is_limited_to_range ? static_cast<arithmetic_type>(value_being_shifted << left_shift_amount) : 0U);

    return static_cast<arithmetic_type>(part1 | part2);
 8000c1c:	00e3      	lsls	r3, r4, #3
 8000c1e:	ea4f 49d4 	mov.w	r9, r4, lsr #19
 8000c22:	ea49 394e 	orr.w	r9, r9, lr, lsl #13
    {
      return static_cast<std::uint64_t>
             (
                 al::crypto::math::utils::rotr(x, static_cast<std::size_t>(UINT8_C(19)))
               ^ al::crypto::math::utils::rotr(x, static_cast<std::size_t>(UINT8_C(61)))
               ^ std::uint64_t(x >> static_cast<unsigned>(UINT8_C(6)))
 8000c26:	09a2      	lsrs	r2, r4, #6
 8000c28:	ea43 735e 	orr.w	r3, r3, lr, lsr #29
                                   + transform_function3(local_transform_block[static_cast<std::size_t>(i - static_cast<std::size_t>(UINT8_C(15)))])
 8000c2c:	e9d1 0502 	ldrd	r0, r5, [r1, #8]
               ^ al::crypto::math::utils::rotr(x, static_cast<std::size_t>(UINT8_C(61)))
 8000c30:	ea83 0309 	eor.w	r3, r3, r9
               ^ std::uint64_t(x >> static_cast<unsigned>(UINT8_C(6)))
 8000c34:	ea42 628e 	orr.w	r2, r2, lr, lsl #26
                                   + local_transform_block[static_cast<std::size_t>(i - static_cast<std::size_t>(UINT8_C(16)))];
 8000c38:	6c8e      	ldr	r6, [r1, #72]	; 0x48
 8000c3a:	680f      	ldr	r7, [r1, #0]
 8000c3c:	f8d1 9004 	ldr.w	r9, [r1, #4]
             );
 8000c40:	4053      	eors	r3, r2
 8000c42:	ea4f 48de 	mov.w	r8, lr, lsr #19
 8000c46:	ea4f 02ce 	mov.w	r2, lr, lsl #3
 8000c4a:	ea42 7254 	orr.w	r2, r2, r4, lsr #29
 8000c4e:	ea48 3444 	orr.w	r4, r8, r4, lsl #13
                                   + local_transform_block[static_cast<std::size_t>(i - static_cast<std::size_t>(UINT8_C(16)))];
 8000c52:	19f7      	adds	r7, r6, r7
               ^ al::crypto::math::utils::rotr(x, static_cast<std::size_t>(UINT8_C(61)))
 8000c54:	ea82 0204 	eor.w	r2, r2, r4
                                   + local_transform_block[static_cast<std::size_t>(i - static_cast<std::size_t>(UINT8_C(16)))];
 8000c58:	6cce      	ldr	r6, [r1, #76]	; 0x4c
 8000c5a:	ea4f 2810 	mov.w	r8, r0, lsr #8
 8000c5e:	ea4f 0450 	mov.w	r4, r0, lsr #1
 8000c62:	ea44 74c5 	orr.w	r4, r4, r5, lsl #31
 8000c66:	ea48 6805 	orr.w	r8, r8, r5, lsl #24
 8000c6a:	eb46 0909 	adc.w	r9, r6, r9
             );
 8000c6e:	ea88 0804 	eor.w	r8, r8, r4
               ^  std::uint64_t(x >> static_cast<unsigned>(UINT8_C(7))))
 8000c72:	ea4f 1ad0 	mov.w	sl, r0, lsr #7
 8000c76:	086e      	lsrs	r6, r5, #1
 8000c78:	0a2c      	lsrs	r4, r5, #8
 8000c7a:	ea44 6400 	orr.w	r4, r4, r0, lsl #24
 8000c7e:	ea4a 6a45 	orr.w	sl, sl, r5, lsl #25
 8000c82:	ea46 70c0 	orr.w	r0, r6, r0, lsl #31
                                   + local_transform_block[static_cast<std::size_t>(i - static_cast<std::size_t>(UINT8_C(16)))];
 8000c86:	19db      	adds	r3, r3, r7
             );
 8000c88:	ea82 129e 	eor.w	r2, r2, lr, lsr #6
             );
 8000c8c:	ea88 060a 	eor.w	r6, r8, sl
 8000c90:	ea80 0004 	eor.w	r0, r0, r4
                                   + local_transform_block[static_cast<std::size_t>(i - static_cast<std::size_t>(UINT8_C(16)))];
 8000c94:	eb42 0209 	adc.w	r2, r2, r9
 8000c98:	3108      	adds	r1, #8
 8000c9a:	199b      	adds	r3, r3, r6
             );
 8000c9c:	ea80 10d5 	eor.w	r0, r0, r5, lsr #7
                                   + local_transform_block[static_cast<std::size_t>(i - static_cast<std::size_t>(UINT8_C(16)))];
 8000ca0:	eb40 0202 	adc.w	r2, r0, r2
      for(auto i = static_cast<std::size_t>(UINT8_C(16)); i < local_transform_block_size; ++i)
 8000ca4:	458c      	cmp	ip, r1
        local_transform_block[i] =   transform_function4(local_transform_block[static_cast<std::size_t>(i - static_cast<std::size_t>(UINT8_C(2)))])
 8000ca6:	e9c1 321e 	strd	r3, r2, [r1, #120]	; 0x78
      for(auto i = static_cast<std::size_t>(UINT8_C(16)); i < local_transform_block_size; ++i)
 8000caa:	d1b5      	bne.n	8000c18 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv+0x78>
      typename base_class_type::transform_context_type hash_tmp =
 8000cac:	9b14      	ldr	r3, [sp, #80]	; 0x50
 8000cae:	3390      	adds	r3, #144	; 0x90
 8000cb0:	461d      	mov	r5, r3
 8000cb2:	9315      	str	r3, [sp, #84]	; 0x54
 8000cb4:	cd0f      	ldmia	r5!, {r0, r1, r2, r3}
 8000cb6:	ac18      	add	r4, sp, #96	; 0x60
 8000cb8:	c40f      	stmia	r4!, {r0, r1, r2, r3}
 8000cba:	cd0f      	ldmia	r5!, {r0, r1, r2, r3}
 8000cbc:	c40f      	stmia	r4!, {r0, r1, r2, r3}
 8000cbe:	cd0f      	ldmia	r5!, {r0, r1, r2, r3}
 8000cc0:	c40f      	stmia	r4!, {r0, r1, r2, r3}
 8000cc2:	e895 000f 	ldmia.w	r5, {r0, r1, r2, r3}
 8000cc6:	e884 000f 	stmia.w	r4, {r0, r1, r2, r3}
      for(std::size_t i = 0U; i < local_transform_block_size; ++i)
 8000cca:	ab26      	add	r3, sp, #152	; 0x98
 8000ccc:	9302      	str	r3, [sp, #8]
 8000cce:	9b26      	ldr	r3, [sp, #152]	; 0x98
 8000cd0:	930e      	str	r3, [sp, #56]	; 0x38
 8000cd2:	9b27      	ldr	r3, [sp, #156]	; 0x9c
 8000cd4:	930f      	str	r3, [sp, #60]	; 0x3c
 8000cd6:	9b22      	ldr	r3, [sp, #136]	; 0x88
 8000cd8:	9307      	str	r3, [sp, #28]
 8000cda:	9b23      	ldr	r3, [sp, #140]	; 0x8c
 8000cdc:	9308      	str	r3, [sp, #32]
 8000cde:	9b24      	ldr	r3, [sp, #144]	; 0x90
 8000ce0:	9303      	str	r3, [sp, #12]
 8000ce2:	9b25      	ldr	r3, [sp, #148]	; 0x94
 8000ce4:	9306      	str	r3, [sp, #24]
 8000ce6:	9b1a      	ldr	r3, [sp, #104]	; 0x68
 8000ce8:	9301      	str	r3, [sp, #4]
 8000cea:	e9dd 5418 	ldrd	r5, r4, [sp, #96]	; 0x60
 8000cee:	9b1b      	ldr	r3, [sp, #108]	; 0x6c
 8000cf0:	9309      	str	r3, [sp, #36]	; 0x24
 8000cf2:	9b1e      	ldr	r3, [sp, #120]	; 0x78
 8000cf4:	930c      	str	r3, [sp, #48]	; 0x30
 8000cf6:	9b1f      	ldr	r3, [sp, #124]	; 0x7c
 8000cf8:	930d      	str	r3, [sp, #52]	; 0x34
 8000cfa:	e9dd 0120 	ldrd	r0, r1, [sp, #128]	; 0x80
 8000cfe:	e9dd ec1c 	ldrd	lr, ip, [sp, #112]	; 0x70
 8000d02:	9500      	str	r5, [sp, #0]
 8000d04:	940a      	str	r4, [sp, #40]	; 0x28
 8000d06:	e013      	b.n	8000d30 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv+0x190>
 8000d08:	9c07      	ldr	r4, [sp, #28]
 8000d0a:	9403      	str	r4, [sp, #12]
 8000d0c:	9c08      	ldr	r4, [sp, #32]
 8000d0e:	9406      	str	r4, [sp, #24]
 8000d10:	9c00      	ldr	r4, [sp, #0]
 8000d12:	f8dd e004 	ldr.w	lr, [sp, #4]
 8000d16:	9401      	str	r4, [sp, #4]
 8000d18:	9c0a      	ldr	r4, [sp, #40]	; 0x28
 8000d1a:	f8dd c024 	ldr.w	ip, [sp, #36]	; 0x24
 8000d1e:	9108      	str	r1, [sp, #32]
 8000d20:	9409      	str	r4, [sp, #36]	; 0x24
        hash_tmp[static_cast<std::size_t>(UINT8_C(4))] = hash_tmp[static_cast<std::size_t>(UINT8_C(3))] + tmp1;
 8000d22:	4619      	mov	r1, r3
        hash_tmp[static_cast<std::size_t>(UINT8_C(0))] = tmp1 + tmp2;
 8000d24:	e9dd 3404 	ldrd	r3, r4, [sp, #16]
 8000d28:	9007      	str	r0, [sp, #28]
 8000d2a:	9300      	str	r3, [sp, #0]
        hash_tmp[static_cast<std::size_t>(UINT8_C(4))] = hash_tmp[static_cast<std::size_t>(UINT8_C(3))] + tmp1;
 8000d2c:	4610      	mov	r0, r2
        hash_tmp[static_cast<std::size_t>(UINT8_C(0))] = tmp1 + tmp2;
 8000d2e:	940a      	str	r4, [sp, #40]	; 0x28
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000d30:	9a02      	ldr	r2, [sp, #8]
 8000d32:	9c0b      	ldr	r4, [sp, #44]	; 0x2c
 8000d34:	e9f2 7802 	ldrd	r7, r8, [r2, #8]!
 8000d38:	e9f4 5602 	ldrd	r5, r6, [r4, #8]!
 8000d3c:	ea4f 3b90 	mov.w	fp, r0, lsr #14
 8000d40:	0c83      	lsrs	r3, r0, #18
 8000d42:	9202      	str	r2, [sp, #8]
 8000d44:	ea43 3381 	orr.w	r3, r3, r1, lsl #14
 8000d48:	ea4b 4281 	orr.w	r2, fp, r1, lsl #18
               ^ al::crypto::math::utils::rotr(x, static_cast<std::size_t>(UINT8_C(18)))
 8000d4c:	ea82 0b03 	eor.w	fp, r2, r3
 8000d50:	0b8b      	lsrs	r3, r1, #14
 8000d52:	0c8a      	lsrs	r2, r1, #18
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000d54:	e9cd 7810 	strd	r7, r8, [sp, #64]	; 0x40
 8000d58:	e9cd 5612 	strd	r5, r6, [sp, #72]	; 0x48
 8000d5c:	ea43 4380 	orr.w	r3, r3, r0, lsl #18
 8000d60:	ea42 3280 	orr.w	r2, r2, r0, lsl #14
               ^ al::crypto::math::utils::rotr(x, static_cast<std::size_t>(UINT8_C(18)))
 8000d64:	ea83 0802 	eor.w	r8, r3, r2
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000d68:	9b11      	ldr	r3, [sp, #68]	; 0x44
 8000d6a:	9a13      	ldr	r2, [sp, #76]	; 0x4c
 8000d6c:	940b      	str	r4, [sp, #44]	; 0x2c
 8000d6e:	197e      	adds	r6, r7, r5
                                   + std::uint64_t(  std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(4))] & hash_tmp[static_cast<std::size_t>(UINT8_C(5))])
 8000d70:	9c07      	ldr	r4, [sp, #28]
 8000d72:	ea4f 5ac0 	mov.w	sl, r0, lsl #23
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000d76:	eb43 0902 	adc.w	r9, r3, r2
 8000d7a:	ea4a 2a51 	orr.w	sl, sl, r1, lsr #9
 8000d7e:	9a00      	ldr	r2, [sp, #0]
                                                   ^ std::uint64_t(std::uint64_t(~hash_tmp[static_cast<std::size_t>(UINT8_C(4))]) & hash_tmp[static_cast<std::size_t>(UINT8_C(6))]))
 8000d80:	9b03      	ldr	r3, [sp, #12]
 8000d82:	05cf      	lsls	r7, r1, #23
             );
 8000d84:	ea8b 0a0a 	eor.w	sl, fp, sl
 8000d88:	ea47 2750 	orr.w	r7, r7, r0, lsr #9
                                   + std::uint64_t(  std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(4))] & hash_tmp[static_cast<std::size_t>(UINT8_C(5))])
 8000d8c:	ea00 0b04 	and.w	fp, r0, r4
 8000d90:	9c0a      	ldr	r4, [sp, #40]	; 0x28
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000d92:	eb1a 0a06 	adds.w	sl, sl, r6
                                                   ^ std::uint64_t(std::uint64_t(~hash_tmp[static_cast<std::size_t>(UINT8_C(4))]) & hash_tmp[static_cast<std::size_t>(UINT8_C(6))]))
 8000d96:	ea23 0300 	bic.w	r3, r3, r0
 8000d9a:	ea4f 7612 	mov.w	r6, r2, lsr #28
             );
 8000d9e:	ea88 0707 	eor.w	r7, r8, r7
 8000da2:	ea4f 7882 	mov.w	r8, r2, lsl #30
 8000da6:	4625      	mov	r5, r4
                                                   ^ std::uint64_t(std::uint64_t(~hash_tmp[static_cast<std::size_t>(UINT8_C(4))]) & hash_tmp[static_cast<std::size_t>(UINT8_C(6))]))
 8000da8:	ea83 020b 	eor.w	r2, r3, fp
 8000dac:	ea48 0894 	orr.w	r8, r8, r4, lsr #2
 8000db0:	ea46 1b04 	orr.w	fp, r6, r4, lsl #4
                                   + std::uint64_t(  std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(4))] & hash_tmp[static_cast<std::size_t>(UINT8_C(5))])
 8000db4:	9c08      	ldr	r4, [sp, #32]
                                                   ^ std::uint64_t(std::uint64_t(~hash_tmp[static_cast<std::size_t>(UINT8_C(4))]) & hash_tmp[static_cast<std::size_t>(UINT8_C(6))]))
 8000db6:	9b06      	ldr	r3, [sp, #24]
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000db8:	eb47 0709 	adc.w	r7, r7, r9
                                   + std::uint64_t(  std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(4))] & hash_tmp[static_cast<std::size_t>(UINT8_C(5))])
 8000dbc:	ea01 0904 	and.w	r9, r1, r4
 8000dc0:	9c00      	ldr	r4, [sp, #0]
                                                   ^ std::uint64_t(std::uint64_t(~hash_tmp[static_cast<std::size_t>(UINT8_C(4))]) & hash_tmp[static_cast<std::size_t>(UINT8_C(6))]))
 8000dc2:	ea23 0301 	bic.w	r3, r3, r1
 8000dc6:	ea83 0909 	eor.w	r9, r3, r9
 8000dca:	0666      	lsls	r6, r4, #25
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(0))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]))
 8000dcc:	9b01      	ldr	r3, [sp, #4]
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000dce:	eb1a 0202 	adds.w	r2, sl, r2
 8000dd2:	462c      	mov	r4, r5
 8000dd4:	ea4f 7a15 	mov.w	sl, r5, lsr #28
 8000dd8:	ea46 16d5 	orr.w	r6, r6, r5, lsr #7
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(0))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]))
 8000ddc:	9d00      	ldr	r5, [sp, #0]
 8000dde:	ea8e 0303 	eor.w	r3, lr, r3
               ^ al::crypto::math::utils::rotr(x, static_cast<std::size_t>(UINT8_C(34)))
 8000de2:	ea8b 0b08 	eor.w	fp, fp, r8
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(0))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]))
 8000de6:	ea03 0305 	and.w	r3, r3, r5
 8000dea:	ea4a 1805 	orr.w	r8, sl, r5, lsl #4
 8000dee:	4625      	mov	r5, r4
 8000df0:	ea4f 7a84 	mov.w	sl, r4, lsl #30
 8000df4:	9c00      	ldr	r4, [sp, #0]
 8000df6:	ea4a 0a94 	orr.w	sl, sl, r4, lsr #2
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000dfa:	9c0e      	ldr	r4, [sp, #56]	; 0x38
 8000dfc:	eb47 0709 	adc.w	r7, r7, r9
 8000e00:	eb12 0904 	adds.w	r9, r2, r4
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(1))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]));
 8000e04:	9a01      	ldr	r2, [sp, #4]
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(0))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]))
 8000e06:	9c09      	ldr	r4, [sp, #36]	; 0x24
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(1))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]));
 8000e08:	ea0e 0202 	and.w	r2, lr, r2
 8000e0c:	ea83 0302 	eor.w	r3, r3, r2
 8000e10:	930e      	str	r3, [sp, #56]	; 0x38
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(0))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]))
 8000e12:	ea8c 0204 	eor.w	r2, ip, r4
 8000e16:	9b00      	ldr	r3, [sp, #0]
               ^ al::crypto::math::utils::rotr(x, static_cast<std::size_t>(UINT8_C(34)))
 8000e18:	ea88 0a0a 	eor.w	sl, r8, sl
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(1))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]));
 8000e1c:	ea0c 0804 	and.w	r8, ip, r4
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000e20:	9c0f      	ldr	r4, [sp, #60]	; 0x3c
             );
 8000e22:	ea8b 0b06 	eor.w	fp, fp, r6
 8000e26:	ea4f 6645 	mov.w	r6, r5, lsl #25
 8000e2a:	ea46 16d3 	orr.w	r6, r6, r3, lsr #7
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000e2e:	eb47 0404 	adc.w	r4, r7, r4
        const std::uint64_t tmp2 =   transform_function1(hash_tmp[static_cast<std::size_t>(UINT8_C(0))])
 8000e32:	9b0e      	ldr	r3, [sp, #56]	; 0x38
        const std::uint64_t tmp1 =   hash_tmp[static_cast<std::size_t>(UINT8_C(7))]
 8000e34:	4627      	mov	r7, r4
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(0))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]))
 8000e36:	402a      	ands	r2, r5
        hash_tmp[static_cast<std::size_t>(UINT8_C(4))] = hash_tmp[static_cast<std::size_t>(UINT8_C(3))] + tmp1;
 8000e38:	9c0c      	ldr	r4, [sp, #48]	; 0x30
        const std::uint64_t tmp2 =   transform_function1(hash_tmp[static_cast<std::size_t>(UINT8_C(0))])
 8000e3a:	eb1b 0b03 	adds.w	fp, fp, r3
             );
 8000e3e:	ea8a 0a06 	eor.w	sl, sl, r6
                                                                 ^ std::uint64_t(hash_tmp[static_cast<std::size_t>(UINT8_C(1))] & hash_tmp[static_cast<std::size_t>(UINT8_C(2))]));
 8000e42:	ea82 0808 	eor.w	r8, r2, r8
        const std::uint64_t tmp2 =   transform_function1(hash_tmp[static_cast<std::size_t>(UINT8_C(0))])
 8000e46:	eb4a 0a08 	adc.w	sl, sl, r8
        hash_tmp[static_cast<std::size_t>(UINT8_C(4))] = hash_tmp[static_cast<std::size_t>(UINT8_C(3))] + tmp1;
 8000e4a:	eb14 0209 	adds.w	r2, r4, r9
 8000e4e:	9c0d      	ldr	r4, [sp, #52]	; 0x34
 8000e50:	eb47 0404 	adc.w	r4, r7, r4
 8000e54:	4623      	mov	r3, r4
        hash_tmp[static_cast<std::size_t>(UINT8_C(0))] = tmp1 + tmp2;
 8000e56:	eb19 040b 	adds.w	r4, r9, fp
 8000e5a:	9404      	str	r4, [sp, #16]
 8000e5c:	eb47 040a 	adc.w	r4, r7, sl
 8000e60:	9f03      	ldr	r7, [sp, #12]
 8000e62:	9405      	str	r4, [sp, #20]
      for(std::size_t i = 0U; i < local_transform_block_size; ++i)
 8000e64:	970e      	str	r7, [sp, #56]	; 0x38
 8000e66:	9e02      	ldr	r6, [sp, #8]
 8000e68:	9f06      	ldr	r7, [sp, #24]
 8000e6a:	970f      	str	r7, [sp, #60]	; 0x3c
 8000e6c:	acc6      	add	r4, sp, #792	; 0x318
 8000e6e:	42b4      	cmp	r4, r6
 8000e70:	f8cd e030 	str.w	lr, [sp, #48]	; 0x30
 8000e74:	f8cd c034 	str.w	ip, [sp, #52]	; 0x34
 8000e78:	f47f af46 	bne.w	8000d08 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv+0x168>
 8000e7c:	e9cd 2320 	strd	r2, r3, [sp, #128]	; 0x80
 8000e80:	9b07      	ldr	r3, [sp, #28]
 8000e82:	9324      	str	r3, [sp, #144]	; 0x90
 8000e84:	e9dd 8904 	ldrd	r8, r9, [sp, #16]
 8000e88:	9b08      	ldr	r3, [sp, #32]
 8000e8a:	9c0a      	ldr	r4, [sp, #40]	; 0x28
 8000e8c:	9f03      	ldr	r7, [sp, #12]
 8000e8e:	9d00      	ldr	r5, [sp, #0]
 8000e90:	9a14      	ldr	r2, [sp, #80]	; 0x50
 8000e92:	9325      	str	r3, [sp, #148]	; 0x94
 8000e94:	9b01      	ldr	r3, [sp, #4]
 8000e96:	9726      	str	r7, [sp, #152]	; 0x98
 8000e98:	931c      	str	r3, [sp, #112]	; 0x70
 8000e9a:	9f06      	ldr	r7, [sp, #24]
 8000e9c:	9b09      	ldr	r3, [sp, #36]	; 0x24
 8000e9e:	9727      	str	r7, [sp, #156]	; 0x9c
 8000ea0:	e9cd 0122 	strd	r0, r1, [sp, #136]	; 0x88
 8000ea4:	e9cd 541a 	strd	r5, r4, [sp, #104]	; 0x68
 8000ea8:	931d      	str	r3, [sp, #116]	; 0x74
 8000eaa:	e9cd 8918 	strd	r8, r9, [sp, #96]	; 0x60
 8000eae:	e9cd ec1e 	strd	lr, ip, [sp, #120]	; 0x78
      data() noexcept
      { return _AT_Type::_S_ptr(_M_elems); }

      _GLIBCXX17_CONSTEXPR const_pointer
      data() const noexcept
      { return _AT_Type::_S_ptr(_M_elems); }
 8000eb2:	9b15      	ldr	r3, [sp, #84]	; 0x54
      __glibcxx_function_requires(_OutputIteratorConcept<_OutputIterator,
	    // "the type returned by a _BinaryOperation"
	    __typeof__(__binary_op(*__first1,*__first2))>)
      __glibcxx_requires_valid_range(__first1, __last1);

      for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result)
 8000eb4:	a81a      	add	r0, sp, #104	; 0x68
 8000eb6:	f102 04d0 	add.w	r4, r2, #208	; 0xd0
 8000eba:	4646      	mov	r6, r8
 8000ebc:	464f      	mov	r7, r9
 8000ebe:	e003      	b.n	8000ec8 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv+0x328>
 8000ec0:	08001520 	.word	0x08001520
 8000ec4:	e8f0 6702 	ldrd	r6, r7, [r0], #8
    struct plus : public binary_function<_Tp, _Tp, _Tp>
    {
      _GLIBCXX14_CONSTEXPR
      _Tp
      operator()(const _Tp& __x, const _Tp& __y) const
      { return __x + __y; }
 8000ec8:	e9d3 2100 	ldrd	r2, r1, [r3]
 8000ecc:	eb12 0806 	adds.w	r8, r2, r6
 8000ed0:	eb41 0907 	adc.w	r9, r1, r7
	*__result = __binary_op(*__first1, *__first2);
 8000ed4:	e8e3 8902 	strd	r8, r9, [r3], #8
      for (; __first1 != __last1; ++__first1, (void)++__first2, ++__result)
 8000ed8:	42a3      	cmp	r3, r4
 8000eda:	d1f3      	bne.n	8000ec4 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv+0x324>
    __gnu_cxx::__enable_if<__is_byte<_Tp>::__value, void>::__type
    __fill_a(_Tp* __first, _Tp* __last, const _Tp& __c)
    {
      const _Tp __tmp = __c;
      if (const size_t __len = __last - __first)
	__builtin_memset(__first, static_cast<unsigned char>(__tmp), __len);
 8000edc:	9c14      	ldr	r4, [sp, #80]	; 0x50
 8000ede:	2280      	movs	r2, #128	; 0x80
 8000ee0:	2100      	movs	r1, #0
 8000ee2:	f104 0010 	add.w	r0, r4, #16
 8000ee6:	f000 fac9 	bl	800147c <memset>
      base_class_type::message_index = static_cast<std::size_t>(UINT8_C(0));
 8000eea:	2300      	movs	r3, #0
 8000eec:	6063      	str	r3, [r4, #4]
    }
 8000eee:	f20d 5da4 	addw	sp, sp, #1444	; 0x5a4
 8000ef2:	e8bd 8ff0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, r9, sl, fp, pc}
 8000ef6:	bf00      	nop

08000ef8 <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE12process_dataEPKhj>:
      while(process_index < count)
 8000ef8:	b39a      	cbz	r2, 8000f62 <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE12process_dataEPKhj+0x6a>
    auto process_data(const std::uint8_t* message, const std::size_t count) -> void override
 8000efa:	e92d 43f8 	stmdb	sp!, {r3, r4, r5, r6, r7, r8, r9, lr}
      auto process_chunk_size = static_cast<std::size_t>(0U);
 8000efe:	f04f 0800 	mov.w	r8, #0
 8000f02:	4604      	mov	r4, r0
 8000f04:	460f      	mov	r7, r1
 8000f06:	4616      	mov	r6, r2
      auto process_index      = static_cast<std::size_t>(0U);
 8000f08:	4645      	mov	r5, r8
 8000f0a:	f100 0910 	add.w	r9, r0, #16
 8000f0e:	e001      	b.n	8000f14 <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE12process_dataEPKhj+0x1c>
      while(process_index < count)
 8000f10:	42ae      	cmp	r6, r5
 8000f12:	d924      	bls.n	8000f5e <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE12process_dataEPKhj+0x66>
        message_length_total = static_cast<std::uint_fast64_t>(message_length_total + process_chunk_size);
 8000f14:	e9d4 0102 	ldrd	r0, r1, [r4, #8]
        message_index        = static_cast<std::size_t>       (message_index        + process_chunk_size);
 8000f18:	6863      	ldr	r3, [r4, #4]
        message_length_total = static_cast<std::uint_fast64_t>(message_length_total + process_chunk_size);
 8000f1a:	eb10 0008 	adds.w	r0, r0, r8
        message_index        = static_cast<std::size_t>       (message_index        + process_chunk_size);
 8000f1e:	4443      	add	r3, r8
        message_length_total = static_cast<std::uint_fast64_t>(message_length_total + process_chunk_size);
 8000f20:	f141 0100 	adc.w	r1, r1, #0
        if(message_index == message_buffer_static_size)
 8000f24:	2b80      	cmp	r3, #128	; 0x80
        message_length_total = static_cast<std::uint_fast64_t>(message_length_total + process_chunk_size);
 8000f26:	e9c4 0102 	strd	r0, r1, [r4, #8]
        process_index        = static_cast<std::size_t>       (process_index        + process_chunk_size);
 8000f2a:	4445      	add	r5, r8
        message_index        = static_cast<std::size_t>       (message_index        + process_chunk_size);
 8000f2c:	6063      	str	r3, [r4, #4]
        if(message_index == message_buffer_static_size)
 8000f2e:	d104      	bne.n	8000f3a <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE12process_dataEPKhj+0x42>
          this->transform();
 8000f30:	6823      	ldr	r3, [r4, #0]
 8000f32:	4620      	mov	r0, r4
 8000f34:	69db      	ldr	r3, [r3, #28]
 8000f36:	4798      	blx	r3
 8000f38:	6863      	ldr	r3, [r4, #4]
        const auto count_remaining = static_cast<std::size_t>(count - process_index);
 8000f3a:	eba6 0805 	sub.w	r8, r6, r5
        const auto buf_available   = static_cast<std::size_t>(message_buffer_static_size - message_index);
 8000f3e:	f1c3 0280 	rsb	r2, r3, #128	; 0x80
 8000f42:	4590      	cmp	r8, r2
 8000f44:	bf28      	it	cs
 8000f46:	4690      	movcs	r8, r2
	  if (_Num)
 8000f48:	f1b8 0f00 	cmp.w	r8, #0
 8000f4c:	d0e0      	beq.n	8000f10 <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE12process_dataEPKhj+0x18>
	    __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
 8000f4e:	eb09 0003 	add.w	r0, r9, r3
 8000f52:	4642      	mov	r2, r8
 8000f54:	1979      	adds	r1, r7, r5
 8000f56:	f000 fa25 	bl	80013a4 <memmove>
      while(process_index < count)
 8000f5a:	42ae      	cmp	r6, r5
 8000f5c:	d8da      	bhi.n	8000f14 <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE12process_dataEPKhj+0x1c>
    }
 8000f5e:	e8bd 83f8 	ldmia.w	sp!, {r3, r4, r5, r6, r7, r8, r9, pc}
 8000f62:	4770      	bx	lr

08000f64 <_ZN2al6crypto6stream4hash11hash_sha512D0Ev>:
 8000f64:	b510      	push	{r4, lr}
 8000f66:	4604      	mov	r4, r0
 8000f68:	f7ff fc10 	bl	800078c <_ZdlPv>
 8000f6c:	4620      	mov	r0, r4
 8000f6e:	bd10      	pop	{r4, pc}

08000f70 <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE10initializeEv>:
      message_index        = static_cast<std::size_t>       (0U);
 8000f70:	2100      	movs	r1, #0
    auto initialize() -> void override
 8000f72:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}
	__builtin_memset(__first, static_cast<unsigned char>(__tmp), __len);
 8000f76:	2280      	movs	r2, #128	; 0x80
 8000f78:	4604      	mov	r4, r0
      message_length_total = static_cast<std::uint_fast64_t>(0U);
 8000f7a:	4688      	mov	r8, r1
 8000f7c:	e9c0 1102 	strd	r1, r1, [r0, #8]
      message_index        = static_cast<std::size_t>       (0U);
 8000f80:	6041      	str	r1, [r0, #4]
 8000f82:	3010      	adds	r0, #16
 8000f84:	f000 fa7a 	bl	800147c <memset>
    __fill_n_a(_OutputIterator __first, _Size __n, const _Tp& __value)
    {
      const _Tp __tmp = __value;
      for (__decltype(__n + 0) __niter = __n;
	   __niter > 0; --__niter, (void) ++__first)
	*__first = __tmp;
 8000f88:	4646      	mov	r6, r8
 8000f8a:	4647      	mov	r7, r8
      { return _AT_Type::_S_ptr(_M_elems); }
 8000f8c:	f104 0390 	add.w	r3, r4, #144	; 0x90
	   __niter > 0; --__niter, (void) ++__first)
 8000f90:	f104 00d0 	add.w	r0, r4, #208	; 0xd0
	*__first = __tmp;
 8000f94:	e8e3 6702 	strd	r6, r7, [r3], #8
	   __niter > 0; --__niter, (void) ++__first)
 8000f98:	4298      	cmp	r0, r3
 8000f9a:	d1fb      	bne.n	8000f94 <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE10initializeEv+0x24>
    }
 8000f9c:	e8bd 81f0 	ldmia.w	sp!, {r4, r5, r6, r7, r8, pc}

08000fa0 <_ZN2al6crypto6stream4hash11hash_sha51210initializeEv>:
    auto operator=(const hash_sha512& other) -> hash_sha512& = default;

    // AXIVION Next Line AutosarC++19_03-A10.2.1: AUTOSAR permitted
    auto operator=(hash_sha512&& other) noexcept -> hash_sha512& = default;

    auto initialize() -> void override
 8000fa0:	b5d0      	push	{r4, r6, r7, lr}
 8000fa2:	4604      	mov	r4, r0
    {
      base_class_type::initialize();
 8000fa4:	f7ff ffe4 	bl	8000f70 <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE10initializeEv>

      base_class_type::transform_context[0U] = static_cast<std::uint64_t>(UINT64_C(0x6A09E667F3BCC908));
 8000fa8:	a115      	add	r1, pc, #84	; (adr r1, 8001000 <_ZN2al6crypto6stream4hash11hash_sha51210initializeEv+0x60>)
 8000faa:	e9d1 0100 	ldrd	r0, r1, [r1]
      base_class_type::transform_context[1U] = static_cast<std::uint64_t>(UINT64_C(0xBB67AE8584CAA73B));
 8000fae:	a316      	add	r3, pc, #88	; (adr r3, 8001008 <_ZN2al6crypto6stream4hash11hash_sha51210initializeEv+0x68>)
 8000fb0:	e9d3 2300 	ldrd	r2, r3, [r3]
      base_class_type::transform_context[2U] = static_cast<std::uint64_t>(UINT64_C(0x3C6EF372FE94F82B));
 8000fb4:	a716      	add	r7, pc, #88	; (adr r7, 8001010 <_ZN2al6crypto6stream4hash11hash_sha51210initializeEv+0x70>)
 8000fb6:	e9d7 6700 	ldrd	r6, r7, [r7]
      base_class_type::transform_context[0U] = static_cast<std::uint64_t>(UINT64_C(0x6A09E667F3BCC908));
 8000fba:	e9c4 0124 	strd	r0, r1, [r4, #144]	; 0x90
      base_class_type::transform_context[1U] = static_cast<std::uint64_t>(UINT64_C(0xBB67AE8584CAA73B));
 8000fbe:	e9c4 2326 	strd	r2, r3, [r4, #152]	; 0x98
      base_class_type::transform_context[3U] = static_cast<std::uint64_t>(UINT64_C(0xA54FF53A5F1D36F1));
 8000fc2:	a115      	add	r1, pc, #84	; (adr r1, 8001018 <_ZN2al6crypto6stream4hash11hash_sha51210initializeEv+0x78>)
 8000fc4:	e9d1 0100 	ldrd	r0, r1, [r1]
      base_class_type::transform_context[4U] = static_cast<std::uint64_t>(UINT64_C(0x510E527FADE682D1));
 8000fc8:	a315      	add	r3, pc, #84	; (adr r3, 8001020 <_ZN2al6crypto6stream4hash11hash_sha51210initializeEv+0x80>)
 8000fca:	e9d3 2300 	ldrd	r2, r3, [r3]
      base_class_type::transform_context[2U] = static_cast<std::uint64_t>(UINT64_C(0x3C6EF372FE94F82B));
 8000fce:	e9c4 6728 	strd	r6, r7, [r4, #160]	; 0xa0
      base_class_type::transform_context[3U] = static_cast<std::uint64_t>(UINT64_C(0xA54FF53A5F1D36F1));
 8000fd2:	e9c4 012a 	strd	r0, r1, [r4, #168]	; 0xa8
      base_class_type::transform_context[5U] = static_cast<std::uint64_t>(UINT64_C(0x9B05688C2B3E6C1F));
 8000fd6:	a714      	add	r7, pc, #80	; (adr r7, 8001028 <_ZN2al6crypto6stream4hash11hash_sha51210initializeEv+0x88>)
 8000fd8:	e9d7 6700 	ldrd	r6, r7, [r7]
      base_class_type::transform_context[6U] = static_cast<std::uint64_t>(UINT64_C(0x1F83D9ABFB41BD6B));
 8000fdc:	a114      	add	r1, pc, #80	; (adr r1, 8001030 <_ZN2al6crypto6stream4hash11hash_sha51210initializeEv+0x90>)
 8000fde:	e9d1 0100 	ldrd	r0, r1, [r1]
      base_class_type::transform_context[4U] = static_cast<std::uint64_t>(UINT64_C(0x510E527FADE682D1));
 8000fe2:	e9c4 232c 	strd	r2, r3, [r4, #176]	; 0xb0
      base_class_type::transform_context[7U] = static_cast<std::uint64_t>(UINT64_C(0x5BE0CD19137E2179));
 8000fe6:	a314      	add	r3, pc, #80	; (adr r3, 8001038 <_ZN2al6crypto6stream4hash11hash_sha51210initializeEv+0x98>)
 8000fe8:	e9d3 2300 	ldrd	r2, r3, [r3]
      base_class_type::transform_context[5U] = static_cast<std::uint64_t>(UINT64_C(0x9B05688C2B3E6C1F));
 8000fec:	e9c4 672e 	strd	r6, r7, [r4, #184]	; 0xb8
      base_class_type::transform_context[6U] = static_cast<std::uint64_t>(UINT64_C(0x1F83D9ABFB41BD6B));
 8000ff0:	e9c4 0130 	strd	r0, r1, [r4, #192]	; 0xc0
      base_class_type::transform_context[7U] = static_cast<std::uint64_t>(UINT64_C(0x5BE0CD19137E2179));
 8000ff4:	e9c4 2332 	strd	r2, r3, [r4, #200]	; 0xc8
    }
 8000ff8:	bdd0      	pop	{r4, r6, r7, pc}
 8000ffa:	bf00      	nop
 8000ffc:	f3af 8000 	nop.w
 8001000:	f3bcc908 	.word	0xf3bcc908
 8001004:	6a09e667 	.word	0x6a09e667
 8001008:	84caa73b 	.word	0x84caa73b
 800100c:	bb67ae85 	.word	0xbb67ae85
 8001010:	fe94f82b 	.word	0xfe94f82b
 8001014:	3c6ef372 	.word	0x3c6ef372
 8001018:	5f1d36f1 	.word	0x5f1d36f1
 800101c:	a54ff53a 	.word	0xa54ff53a
 8001020:	ade682d1 	.word	0xade682d1
 8001024:	510e527f 	.word	0x510e527f
 8001028:	2b3e6c1f 	.word	0x2b3e6c1f
 800102c:	9b05688c 	.word	0x9b05688c
 8001030:	fb41bd6b 	.word	0xfb41bd6b
 8001034:	1f83d9ab 	.word	0x1f83d9ab
 8001038:	137e2179 	.word	0x137e2179
 800103c:	5be0cd19 	.word	0x5be0cd19

08001040 <test_single_hash_sha512_01>:
} // namespace local

extern "C" auto test_single_hash_sha512_01(void) -> bool;

extern "C" auto test_single_hash_sha512_01(void) -> bool
{
 8001040:	b5f0      	push	{r4, r5, r6, r7, lr}
    hash_base() = default;
 8001042:	2400      	movs	r4, #0
 8001044:	b0c5      	sub	sp, #276	; 0x114
 8001046:	4621      	mov	r1, r4
 8001048:	2600      	movs	r6, #0
 800104a:	2280      	movs	r2, #128	; 0x80
 800104c:	a814      	add	r0, sp, #80	; 0x50
 800104e:	2700      	movs	r7, #0
 8001050:	e9cd 6712 	strd	r6, r7, [sp, #72]	; 0x48
 8001054:	9411      	str	r4, [sp, #68]	; 0x44
 8001056:	f000 fa11 	bl	800147c <memset>
 800105a:	4621      	mov	r1, r4
 800105c:	2240      	movs	r2, #64	; 0x40
 800105e:	a834      	add	r0, sp, #208	; 0xd0
 8001060:	f000 fa0c 	bl	800147c <memset>
    hash_sha512() = default;
 8001064:	4b60      	ldr	r3, [pc, #384]	; (80011e8 <test_single_hash_sha512_01+0x1a8>)
 8001066:	9310      	str	r3, [sp, #64]	; 0x40
      base_class_type::initialize();
 8001068:	a810      	add	r0, sp, #64	; 0x40
 800106a:	f7ff ff81 	bl	8000f70 <_ZN2al6crypto6stream4hash9hash_baseILj512ELj512EyLj128EE10initializeEv>
      base_class_type::transform_context[0U] = static_cast<std::uint64_t>(UINT64_C(0x6A09E667F3BCC908));
 800106e:	a14e      	add	r1, pc, #312	; (adr r1, 80011a8 <test_single_hash_sha512_01+0x168>)
 8001070:	e9d1 0100 	ldrd	r0, r1, [r1]
      base_class_type::transform_context[1U] = static_cast<std::uint64_t>(UINT64_C(0xBB67AE8584CAA73B));
 8001074:	a34e      	add	r3, pc, #312	; (adr r3, 80011b0 <test_single_hash_sha512_01+0x170>)
 8001076:	e9d3 2300 	ldrd	r2, r3, [r3]
      base_class_type::transform_context[0U] = static_cast<std::uint64_t>(UINT64_C(0x6A09E667F3BCC908));
 800107a:	e9cd 0134 	strd	r0, r1, [sp, #208]	; 0xd0
      base_class_type::transform_context[1U] = static_cast<std::uint64_t>(UINT64_C(0xBB67AE8584CAA73B));
 800107e:	e9cd 2336 	strd	r2, r3, [sp, #216]	; 0xd8
      base_class_type::transform_context[2U] = static_cast<std::uint64_t>(UINT64_C(0x3C6EF372FE94F82B));
 8001082:	a14d      	add	r1, pc, #308	; (adr r1, 80011b8 <test_single_hash_sha512_01+0x178>)
 8001084:	e9d1 0100 	ldrd	r0, r1, [r1]
      base_class_type::transform_context[3U] = static_cast<std::uint64_t>(UINT64_C(0xA54FF53A5F1D36F1));
 8001088:	a34d      	add	r3, pc, #308	; (adr r3, 80011c0 <test_single_hash_sha512_01+0x180>)
 800108a:	e9d3 2300 	ldrd	r2, r3, [r3]
      base_class_type::transform_context[2U] = static_cast<std::uint64_t>(UINT64_C(0x3C6EF372FE94F82B));
 800108e:	e9cd 0138 	strd	r0, r1, [sp, #224]	; 0xe0
      base_class_type::transform_context[3U] = static_cast<std::uint64_t>(UINT64_C(0xA54FF53A5F1D36F1));
 8001092:	e9cd 233a 	strd	r2, r3, [sp, #232]	; 0xe8
      base_class_type::transform_context[4U] = static_cast<std::uint64_t>(UINT64_C(0x510E527FADE682D1));
 8001096:	a14c      	add	r1, pc, #304	; (adr r1, 80011c8 <test_single_hash_sha512_01+0x188>)
 8001098:	e9d1 0100 	ldrd	r0, r1, [r1]
      base_class_type::transform_context[5U] = static_cast<std::uint64_t>(UINT64_C(0x9B05688C2B3E6C1F));
 800109c:	a34c      	add	r3, pc, #304	; (adr r3, 80011d0 <test_single_hash_sha512_01+0x190>)
 800109e:	e9d3 2300 	ldrd	r2, r3, [r3]
      base_class_type::transform_context[4U] = static_cast<std::uint64_t>(UINT64_C(0x510E527FADE682D1));
 80010a2:	e9cd 013c 	strd	r0, r1, [sp, #240]	; 0xf0
      base_class_type::transform_context[5U] = static_cast<std::uint64_t>(UINT64_C(0x9B05688C2B3E6C1F));
 80010a6:	e9cd 233e 	strd	r2, r3, [sp, #248]	; 0xf8
      base_class_type::transform_context[6U] = static_cast<std::uint64_t>(UINT64_C(0x1F83D9ABFB41BD6B));
 80010aa:	a14b      	add	r1, pc, #300	; (adr r1, 80011d8 <test_single_hash_sha512_01+0x198>)
 80010ac:	e9d1 0100 	ldrd	r0, r1, [r1]
      base_class_type::transform_context[7U] = static_cast<std::uint64_t>(UINT64_C(0x5BE0CD19137E2179));
 80010b0:	a34b      	add	r3, pc, #300	; (adr r3, 80011e0 <test_single_hash_sha512_01+0x1a0>)
 80010b2:	e9d3 2300 	ldrd	r2, r3, [r3]
      base_class_type::transform_context[6U] = static_cast<std::uint64_t>(UINT64_C(0x1F83D9ABFB41BD6B));
 80010b6:	e9cd 0140 	strd	r0, r1, [sp, #256]	; 0x100
      base_class_type::transform_context[7U] = static_cast<std::uint64_t>(UINT64_C(0x5BE0CD19137E2179));
 80010ba:	e9cd 2342 	strd	r2, r3, [sp, #264]	; 0x108
      while(process_index < count)
 80010be:	9811      	ldr	r0, [sp, #68]	; 0x44
          std::copy(message                +  process_index,                             // NOLINT(cppcoreguidelines-pro-bounds-pointer-arithmetic)
 80010c0:	4e4a      	ldr	r6, [pc, #296]	; (80011ec <test_single_hash_sha512_01+0x1ac>)
      auto process_index      = static_cast<std::size_t>(0U);
 80010c2:	4625      	mov	r5, r4
 80010c4:	e001      	b.n	80010ca <test_single_hash_sha512_01+0x8a>
      while(process_index < count)
 80010c6:	2d02      	cmp	r5, #2
 80010c8:	d821      	bhi.n	800110e <test_single_hash_sha512_01+0xce>
        message_length_total = static_cast<std::uint_fast64_t>(message_length_total + process_chunk_size);
 80010ca:	e9dd 2312 	ldrd	r2, r3, [sp, #72]	; 0x48
        message_index        = static_cast<std::size_t>       (message_index        + process_chunk_size);
 80010ce:	4420      	add	r0, r4
        message_length_total = static_cast<std::uint_fast64_t>(message_length_total + process_chunk_size);
 80010d0:	1912      	adds	r2, r2, r4
 80010d2:	f143 0300 	adc.w	r3, r3, #0
        if(message_index == message_buffer_static_size)
 80010d6:	2880      	cmp	r0, #128	; 0x80
        message_length_total = static_cast<std::uint_fast64_t>(message_length_total + process_chunk_size);
 80010d8:	e9cd 2312 	strd	r2, r3, [sp, #72]	; 0x48
        message_index        = static_cast<std::size_t>       (message_index        + process_chunk_size);
 80010dc:	9011      	str	r0, [sp, #68]	; 0x44
        process_index        = static_cast<std::size_t>       (process_index        + process_chunk_size);
 80010de:	4425      	add	r5, r4
        if(message_index == message_buffer_static_size)
 80010e0:	d103      	bne.n	80010ea <test_single_hash_sha512_01+0xaa>
          this->transform();
 80010e2:	a810      	add	r0, sp, #64	; 0x40
 80010e4:	f7ff fd5c 	bl	8000ba0 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv>
 80010e8:	9811      	ldr	r0, [sp, #68]	; 0x44
        const auto count_remaining = static_cast<std::size_t>(count - process_index);
 80010ea:	f1c5 0403 	rsb	r4, r5, #3
        const auto buf_available   = static_cast<std::size_t>(message_buffer_static_size - message_index);
 80010ee:	f1c0 0180 	rsb	r1, r0, #128	; 0x80
 80010f2:	428c      	cmp	r4, r1
 80010f4:	bf28      	it	cs
 80010f6:	460c      	movcs	r4, r1
	  if (_Num)
 80010f8:	2c00      	cmp	r4, #0
 80010fa:	d0e4      	beq.n	80010c6 <test_single_hash_sha512_01+0x86>
	    __builtin_memmove(__result, __first, sizeof(_Tp) * _Num);
 80010fc:	ab14      	add	r3, sp, #80	; 0x50
 80010fe:	4418      	add	r0, r3
 8001100:	4622      	mov	r2, r4
 8001102:	1971      	adds	r1, r6, r5
 8001104:	f7ff f924 	bl	8000350 <memcpy>
      while(process_index < count)
 8001108:	2d02      	cmp	r5, #2
 800110a:	9811      	ldr	r0, [sp, #68]	; 0x44
 800110c:	d9dd      	bls.n	80010ca <test_single_hash_sha512_01+0x8a>
      base_class_type::message_buffer[base_class_type::message_index] = static_cast<std::uint8_t>(UINT8_C(0x80));
 800110e:	ab44      	add	r3, sp, #272	; 0x110
 8001110:	4403      	add	r3, r0
      ++base_class_type::message_index;
 8001112:	3001      	adds	r0, #1
      base_class_type::message_buffer[base_class_type::message_index] = static_cast<std::uint8_t>(UINT8_C(0x80));
 8001114:	2280      	movs	r2, #128	; 0x80
      if(base_class_type::message_index > static_cast<std::uint_fast8_t>(buffer_top))
 8001116:	2870      	cmp	r0, #112	; 0x70
      base_class_type::message_buffer[base_class_type::message_index] = static_cast<std::uint8_t>(UINT8_C(0x80));
 8001118:	f803 2cc0 	strb.w	r2, [r3, #-192]
      ++base_class_type::message_index;
 800111c:	9011      	str	r0, [sp, #68]	; 0x44
      if(base_class_type::message_index > static_cast<std::uint_fast8_t>(buffer_top))
 800111e:	d902      	bls.n	8001126 <test_single_hash_sha512_01+0xe6>
        this->transform();
 8001120:	a810      	add	r0, sp, #64	; 0x40
 8001122:	f7ff fd3d 	bl	8000ba0 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv>
 8001126:	9b12      	ldr	r3, [sp, #72]	; 0x48
      auto process_index      = static_cast<std::size_t>(0U);
 8001128:	a834      	add	r0, sp, #208	; 0xd0
 800112a:	2100      	movs	r1, #0
 800112c:	ad30      	add	r5, sp, #192	; 0xc0
        const auto the_word =
 800112e:	00db      	lsls	r3, r3, #3
 8001130:	b29c      	uxth	r4, r3
        *ri = static_cast<std::uint8_t>(the_word | static_cast<std::uint_least16_t>(carry));
 8001132:	4321      	orrs	r1, r4
 8001134:	f800 1d01 	strb.w	r1, [r0, #-1]!
            base_class_type::message_length_total >> static_cast<unsigned>(UINT8_C(8))
 8001138:	e9dd 3212 	ldrd	r3, r2, [sp, #72]	; 0x48
 800113c:	0a1b      	lsrs	r3, r3, #8
 800113e:	ea43 6302 	orr.w	r3, r3, r2, lsl #24
               ri != base_class_type::message_buffer.rbegin() + static_cast<std::ptrdiff_t>(message_length_total_width());
 8001142:	42a8      	cmp	r0, r5
            base_class_type::message_length_total >> static_cast<unsigned>(UINT8_C(8))
 8001144:	ea4f 2212 	mov.w	r2, r2, lsr #8
        base_class_type::message_length_total =
 8001148:	e9cd 3212 	strd	r3, r2, [sp, #72]	; 0x48
        carry =
 800114c:	f3c4 2102 	ubfx	r1, r4, #8, #3
               ri != base_class_type::message_buffer.rbegin() + static_cast<std::ptrdiff_t>(message_length_total_width());
 8001150:	d1ed      	bne.n	800112e <test_single_hash_sha512_01+0xee>
      this->transform();
 8001152:	a810      	add	r0, sp, #64	; 0x40
 8001154:	f7ff fd24 	bl	8000ba0 <_ZN2al6crypto6stream4hash21hash_sha_384_512_baseILj512EE9transformEv>
                 output_index < std::tuple_size<typename base_class_type::result_type>::value;
 8001158:	f10d 35ff 	add.w	r5, sp, #4294967295
      for(auto   output_index = static_cast<std::size_t>(UINT8_C(0));
 800115c:	2200      	movs	r2, #0
            transform_context[context_index] >> right_shift_amount
 800115e:	f022 0107 	bic.w	r1, r2, #7
 8001162:	a844      	add	r0, sp, #272	; 0x110
                - static_cast<std::size_t>(output_index % conversion_scale())
 8001164:	43d3      	mvns	r3, r2
            transform_context[context_index] >> right_shift_amount
 8001166:	4401      	add	r1, r0
 8001168:	e951 1410 	ldrd	r1, r4, [r1, #-64]	; 0x40
                - static_cast<std::size_t>(output_index % conversion_scale())
 800116c:	f003 0307 	and.w	r3, r3, #7
        const auto right_shift_amount =
 8001170:	00db      	lsls	r3, r3, #3
            transform_context[context_index] >> right_shift_amount
 8001172:	f1c3 0020 	rsb	r0, r3, #32
 8001176:	40d9      	lsrs	r1, r3
 8001178:	fa04 f000 	lsl.w	r0, r4, r0
 800117c:	3b20      	subs	r3, #32
 800117e:	4301      	orrs	r1, r0
 8001180:	fa24 f303 	lsr.w	r3, r4, r3
      for(auto   output_index = static_cast<std::size_t>(UINT8_C(0));
 8001184:	3201      	adds	r2, #1
            transform_context[context_index] >> right_shift_amount
 8001186:	4319      	orrs	r1, r3
                 output_index < std::tuple_size<typename base_class_type::result_type>::value;
 8001188:	2a40      	cmp	r2, #64	; 0x40
        *(result_dest + output_index) =
 800118a:	f805 1f01 	strb.w	r1, [r5, #1]!
                 output_index < std::tuple_size<typename base_class_type::result_type>::value;
 800118e:	d1e6      	bne.n	800115e <test_single_hash_sha512_01+0x11e>
      template<typename _Tp>
	static bool
	equal(const _Tp* __first1, const _Tp* __last1, const _Tp* __first2)
	{
	  if (const size_t __len = (__last1 - __first1))
	    return !__builtin_memcmp(__first1, __first2, sizeof(_Tp) * __len);
 8001190:	4917      	ldr	r1, [pc, #92]	; (80011f0 <test_single_hash_sha512_01+0x1b0>)
 8001192:	4668      	mov	r0, sp
 8001194:	f000 f8d6 	bl	8001344 <memcmp>
    local::message_to_hash.data(),
    local::message_to_hash.size()
  );

  return (my_hash.get_result() == local::control);
}
 8001198:	fab0 f080 	clz	r0, r0
 800119c:	0940      	lsrs	r0, r0, #5
 800119e:	b045      	add	sp, #276	; 0x114
 80011a0:	bdf0      	pop	{r4, r5, r6, r7, pc}
 80011a2:	bf00      	nop
 80011a4:	f3af 8000 	nop.w
 80011a8:	f3bcc908 	.word	0xf3bcc908
 80011ac:	6a09e667 	.word	0x6a09e667
 80011b0:	84caa73b 	.word	0x84caa73b
 80011b4:	bb67ae85 	.word	0xbb67ae85
 80011b8:	fe94f82b 	.word	0xfe94f82b
 80011bc:	3c6ef372 	.word	0x3c6ef372
 80011c0:	5f1d36f1 	.word	0x5f1d36f1
 80011c4:	a54ff53a 	.word	0xa54ff53a
 80011c8:	ade682d1 	.word	0xade682d1
 80011cc:	510e527f 	.word	0x510e527f
 80011d0:	2b3e6c1f 	.word	0x2b3e6c1f
 80011d4:	9b05688c 	.word	0x9b05688c
 80011d8:	fb41bd6b 	.word	0xfb41bd6b
 80011dc:	1f83d9ab 	.word	0x1f83d9ab
 80011e0:	137e2179 	.word	0x137e2179
 80011e4:	5be0cd19 	.word	0x5be0cd19
 80011e8:	080017f0 	.word	0x080017f0
 80011ec:	080017a4 	.word	0x080017a4
 80011f0:	080017a8 	.word	0x080017a8

080011f4 <TaskApplBlinky_UserLed_Init>:
#include <Appl/Blinky/ApplBlinky_UserLed.h>
#include <Bsw/IoHwAb/UserLed/IoHwAb_UserLed.h>
#include <Util_Time.h>

void TaskApplBlinky_UserLed_Init(void)
{
 80011f4:	b508      	push	{r3, lr}
  IoHwAb_UserLedInit();
 80011f6:	f000 f827 	bl	8001248 <IoHwAb_UserLedInit>

  IoHwAb_UserLedOn();
}
 80011fa:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  IoHwAb_UserLedOn();
 80011fe:	f000 b825 	b.w	800124c <IoHwAb_UserLedOn>
 8001202:	bf00      	nop

08001204 <TaskApplBlinky_UserLed_Func>:

void TaskApplBlinky_UserLed_Func(void)
{
 8001204:	b510      	push	{r4, lr}
  static TIMER   ApplBlinky_tiUserLedTimer = UTILTIME_SEC(1U);
  static boolean ApplBlinky_boUserLedIsOn  = (boolean) TRUE;

  if(UTILTIME_TIMER_TIMEOUT(ApplBlinky_tiUserLedTimer) == (boolean) TRUE)
 8001206:	2000      	movs	r0, #0
 8001208:	f7ff fb80 	bl	800090c <Gpt_GetTimeElapsed>
 800120c:	4a0c      	ldr	r2, [pc, #48]	; (8001240 <TaskApplBlinky_UserLed_Func+0x3c>)
 800120e:	6813      	ldr	r3, [r2, #0]
 8001210:	1ac0      	subs	r0, r0, r3
 8001212:	2800      	cmp	r0, #0
 8001214:	db09      	blt.n	800122a <TaskApplBlinky_UserLed_Func+0x26>
  {
    ApplBlinky_tiUserLedTimer += UTILTIME_SEC(1U);

    // Toggle the User LED with a frequency of 1/2Hz.
    if(ApplBlinky_boUserLedIsOn == (boolean) FALSE)
 8001216:	4c0b      	ldr	r4, [pc, #44]	; (8001244 <TaskApplBlinky_UserLed_Func+0x40>)
    ApplBlinky_tiUserLedTimer += UTILTIME_SEC(1U);
 8001218:	f503 2374 	add.w	r3, r3, #999424	; 0xf4000
    if(ApplBlinky_boUserLedIsOn == (boolean) FALSE)
 800121c:	7821      	ldrb	r1, [r4, #0]
    ApplBlinky_tiUserLedTimer += UTILTIME_SEC(1U);
 800121e:	f503 7310 	add.w	r3, r3, #576	; 0x240
 8001222:	6013      	str	r3, [r2, #0]
    if(ApplBlinky_boUserLedIsOn == (boolean) FALSE)
 8001224:	b111      	cbz	r1, 800122c <TaskApplBlinky_UserLed_Func+0x28>
    {
      IoHwAb_UserLedOn();

      ApplBlinky_boUserLedIsOn = (boolean) TRUE;
    }
    else if(ApplBlinky_boUserLedIsOn == (boolean) TRUE)
 8001226:	2901      	cmp	r1, #1
 8001228:	d005      	beq.n	8001236 <TaskApplBlinky_UserLed_Func+0x32>
  }
  else
  {
    ;
  }
}
 800122a:	bd10      	pop	{r4, pc}
      IoHwAb_UserLedOn();
 800122c:	f000 f80e 	bl	800124c <IoHwAb_UserLedOn>
      ApplBlinky_boUserLedIsOn = (boolean) TRUE;
 8001230:	2301      	movs	r3, #1
 8001232:	7023      	strb	r3, [r4, #0]
}
 8001234:	bd10      	pop	{r4, pc}
      IoHwAb_UserLedOff();
 8001236:	f000 f80d 	bl	8001254 <IoHwAb_UserLedOff>
      ApplBlinky_boUserLedIsOn = (boolean) FALSE;
 800123a:	2300      	movs	r3, #0
 800123c:	7023      	strb	r3, [r4, #0]
}
 800123e:	bd10      	pop	{r4, pc}
 8001240:	20000004 	.word	0x20000004
 8001244:	20000000 	.word	0x20000000

08001248 <IoHwAb_UserLedInit>:

extern "C"
void IoHwAb_UserLedInit(void)
{
  return;
}
 8001248:	4770      	bx	lr
 800124a:	bf00      	nop

0800124c <IoHwAb_UserLedOn>:

extern "C"
void IoHwAb_UserLedOn(void)
{
  // Set porta.5 high (fixed to one single user-LED port at the moment).
  Dio_WriteChannel(port_a_05, STD_HIGH);
 800124c:	2101      	movs	r1, #1
 800124e:	2005      	movs	r0, #5
 8001250:	f7ff bb24 	b.w	800089c <Dio_WriteChannel>

08001254 <IoHwAb_UserLedOff>:

extern "C"
void IoHwAb_UserLedOff(void)
{
  // Set porta.5 low (fixed to one single user-LED port at the moment).
  Dio_WriteChannel(port_a_05, STD_LOW);
 8001254:	2100      	movs	r1, #0
 8001256:	2005      	movs	r0, #5
 8001258:	f7ff bb20 	b.w	800089c <Dio_WriteChannel>

0800125c <IoHwAb_DebugPortHigh>:

extern "C"
void IoHwAb_DebugPortHigh(void)
{
  // Set portc.8 high (fixed to one single user-debug port at the moment).
  Dio_WriteChannel(port_c_08, STD_HIGH);
 800125c:	2101      	movs	r1, #1
 800125e:	f44f 7002 	mov.w	r0, #520	; 0x208
 8001262:	f7ff bb1b 	b.w	800089c <Dio_WriteChannel>
 8001266:	bf00      	nop

08001268 <IoHwAb_DebugPortLow>:

extern "C"
void IoHwAb_DebugPortLow(void)
{
  // Set portc.8 low (fixed to one single user-debug port at the moment).
  Dio_WriteChannel(port_c_08, STD_LOW);
 8001268:	2100      	movs	r1, #0
 800126a:	f44f 7002 	mov.w	r0, #520	; 0x208
 800126e:	f7ff bb15 	b.w	800089c <Dio_WriteChannel>
 8001272:	bf00      	nop

08001274 <OsSchedulerStartupHook>:
#include <OsScheduler.h>

void OsSchedulerStartupHook(void)
{
  return;
}
 8001274:	4770      	bx	lr
 8001276:	bf00      	nop

08001278 <EcuM_Init>:

void EcuM_Init(void)
{
 8001278:	b508      	push	{r3, lr}
  #if defined(__cplusplus)
  extern "C"
  {
  #endif

  static inline void HalIrqEnableAll (void) { ASM_INLINE("cpsie i"); }
 800127a:	b662      	cpsie	i
  //   * Port_Init() is called from startup code.
  //   * Wdg_Init () is called from startup code.

  HalIrqEnableAll();

  Dio_Init(NULL_PTR);
 800127c:	2000      	movs	r0, #0
 800127e:	f7ff fad5 	bl	800082c <Dio_Init>

  // Initialize a free-running counter counting up.
  // It should have 32-bit or 64-bit resolution running
  // at a frequency of 1MHz. The value of this counter
  // is to be returned from Gpt_GetTimeElapsed().
  Gpt_Init(&Gpt_ConfigData);
 8001282:	4805      	ldr	r0, [pc, #20]	; (8001298 <EcuM_Init+0x20>)
 8001284:	f7ff fb22 	bl	80008cc <Gpt_Init>

  Adc_Init(NULL_PTR);
 8001288:	2000      	movs	r0, #0
 800128a:	f7ff facb 	bl	8000824 <Adc_Init>

  Can_Init(NULL_PTR);
}
 800128e:	e8bd 4008 	ldmia.w	sp!, {r3, lr}
  Can_Init(NULL_PTR);
 8001292:	2000      	movs	r0, #0
 8001294:	f7ff bac8 	b.w	8000828 <Can_Init>
 8001298:	080017a0 	.word	0x080017a0

0800129c <SysIdle_OsIdleTask>:
#include <Sys/Idle/SysIdle.h>
#include <Wdg.h>

void SysIdle_OsIdleTask(void)
{
  Wdg_Trigger();
 800129c:	f7ff bbf6 	b.w	8000a8c <Wdg_Trigger>

080012a0 <OsSchedulerStartOs>:
///
/// \brief    Start the function table multitasking and run it forever
///
/// ---------------------------------------------------------------------------
void OsSchedulerStartOs(void)
{
 80012a0:	e92d 41f0 	stmdb	sp!, {r4, r5, r6, r7, r8, lr}
  OsSchedulerStartupHook();
 80012a4:	f7ff ffe6 	bl	8001274 <OsSchedulerStartupHook>
    OsScheduler_aTcbConstRomPart[TaskIndex].initfunc();
 80012a8:	f7ff ffa4 	bl	80011f4 <TaskApplBlinky_UserLed_Init>
 80012ac:	f7ff fbf0 	bl	8000a90 <TaskApplBenchmark_Main_Init>
  static inline void HalIrqDisableAll(void) { ASM_INLINE("cpsid i"); }
 80012b0:	b672      	cpsid	i
  const OsSchedulerTimerType tySynchronizationTimeNow = (OsSchedulerTimerType) UTILTIME_TIMER_START(0U);
 80012b2:	2000      	movs	r0, #0
 80012b4:	f7ff fb2a 	bl	800090c <Gpt_GetTimeElapsed>
    OsScheduler_aTcbVariableRamPart[TaskIndex].timer =   tySynchronizationTimeNow
 80012b8:	4d1f      	ldr	r5, [pc, #124]	; (8001338 <OsSchedulerStartOs+0x98>)
                                                       + OsScheduler_aTcbConstRomPart[TaskIndex].offset;
 80012ba:	f200 231d 	addw	r3, r0, #541	; 0x21d
    OsScheduler_aTcbVariableRamPart[TaskIndex].timer =   tySynchronizationTimeNow
 80012be:	60ab      	str	r3, [r5, #8]
 80012c0:	6028      	str	r0, [r5, #0]
  static inline void HalIrqEnableAll (void) { ASM_INLINE("cpsie i"); }
 80012c2:	b662      	cpsie	i
 80012c4:	4c1d      	ldr	r4, [pc, #116]	; (800133c <OsSchedulerStartOs+0x9c>)
 80012c6:	4e1e      	ldr	r6, [pc, #120]	; (8001340 <OsSchedulerStartOs+0xa0>)
 80012c8:	2701      	movs	r7, #1
  {
    boolean boAnyTaskIsReady = FALSE;

    // Get a snapshot of a single time-point to be used for all
    // task-timeout checks in the inner loop of the scheduler.
    const OsSchedulerTimerType tyTimeoutCheckTimeNow = (OsSchedulerTimerType) UTILTIME_TIMER_START(0U);
 80012ca:	f04f 0800 	mov.w	r8, #0
 80012ce:	e00e      	b.n	80012ee <OsSchedulerStartOs+0x4e>

    // PRQA S 2461 1 // Program architecture
    for(Os_ucTaskIndex = (uint8_least) 0U; (boAnyTaskIsReady == (boolean) FALSE) && (Os_ucTaskIndex < (uint8_least) OsSchedulerTaskMax_ID); ++Os_ucTaskIndex)
 80012d0:	2300      	movs	r3, #0
                    || (boTaskHasTimeout != (boolean) FALSE)) ? (boolean) TRUE : (boolean) FALSE);

      if(boHasEventOrTimeout != (boolean) FALSE)
      {
        // Call task because of a timeout, an event or both.
        OsScheduler_aTcbConstRomPart[Os_ucTaskIndex].function();
 80012d2:	011b      	lsls	r3, r3, #4
 80012d4:	58f3      	ldr	r3, [r6, r3]
 80012d6:	4798      	blx	r3

        if(boTaskHasTimeout != (boolean) FALSE)
        {
          OsScheduler_aTcbVariableRamPart[Os_ucTaskIndex].timer += OsScheduler_aTcbConstRomPart[Os_ucTaskIndex].cycle;
 80012d8:	6823      	ldr	r3, [r4, #0]
 80012da:	eb06 1103 	add.w	r1, r6, r3, lsl #4
 80012de:	f855 2033 	ldr.w	r2, [r5, r3, lsl #3]
 80012e2:	6888      	ldr	r0, [r1, #8]
 80012e4:	4402      	add	r2, r0
    for(Os_ucTaskIndex = (uint8_least) 0U; (boAnyTaskIsReady == (boolean) FALSE) && (Os_ucTaskIndex < (uint8_least) OsSchedulerTaskMax_ID); ++Os_ucTaskIndex)
 80012e6:	1c59      	adds	r1, r3, #1
          OsScheduler_aTcbVariableRamPart[Os_ucTaskIndex].timer += OsScheduler_aTcbConstRomPart[Os_ucTaskIndex].cycle;
 80012e8:	f845 2033 	str.w	r2, [r5, r3, lsl #3]
    for(Os_ucTaskIndex = (uint8_least) 0U; (boAnyTaskIsReady == (boolean) FALSE) && (Os_ucTaskIndex < (uint8_least) OsSchedulerTaskMax_ID); ++Os_ucTaskIndex)
 80012ec:	6021      	str	r1, [r4, #0]
    const OsSchedulerTimerType tyTimeoutCheckTimeNow = (OsSchedulerTimerType) UTILTIME_TIMER_START(0U);
 80012ee:	2000      	movs	r0, #0
 80012f0:	f7ff fb0c 	bl	800090c <Gpt_GetTimeElapsed>
                      : UTILTIME_TIMER_TIMEOUT_OF_CUSTOM_TICK(OsScheduler_aTcbVariableRamPart[Os_ucTaskIndex].timer,
 80012f4:	682b      	ldr	r3, [r5, #0]
    for(Os_ucTaskIndex = (uint8_least) 0U; (boAnyTaskIsReady == (boolean) FALSE) && (Os_ucTaskIndex < (uint8_least) OsSchedulerTaskMax_ID); ++Os_ucTaskIndex)
 80012f6:	f8c4 8000 	str.w	r8, [r4]
                      : UTILTIME_TIMER_TIMEOUT_OF_CUSTOM_TICK(OsScheduler_aTcbVariableRamPart[Os_ucTaskIndex].timer,
 80012fa:	1ac3      	subs	r3, r0, r3
        (boolean) ((boTaskCycleTimeIsZero != (boolean) FALSE)
 80012fc:	2b00      	cmp	r3, #0
 80012fe:	dae7      	bge.n	80012d0 <OsSchedulerStartOs+0x30>
        (boolean) ((   (boTaskHasEvent   != (boolean) FALSE)
 8001300:	686b      	ldr	r3, [r5, #4]
 8001302:	b13b      	cbz	r3, 8001314 <OsSchedulerStartOs+0x74>
    for(Os_ucTaskIndex = (uint8_least) 0U; (boAnyTaskIsReady == (boolean) FALSE) && (Os_ucTaskIndex < (uint8_least) OsSchedulerTaskMax_ID); ++Os_ucTaskIndex)
 8001304:	2300      	movs	r3, #0
        OsScheduler_aTcbConstRomPart[Os_ucTaskIndex].function();
 8001306:	011b      	lsls	r3, r3, #4
 8001308:	58f3      	ldr	r3, [r6, r3]
 800130a:	4798      	blx	r3
    for(Os_ucTaskIndex = (uint8_least) 0U; (boAnyTaskIsReady == (boolean) FALSE) && (Os_ucTaskIndex < (uint8_least) OsSchedulerTaskMax_ID); ++Os_ucTaskIndex)
 800130c:	6823      	ldr	r3, [r4, #0]
 800130e:	3301      	adds	r3, #1
 8001310:	6023      	str	r3, [r4, #0]
 8001312:	e7ec      	b.n	80012ee <OsSchedulerStartOs+0x4e>
                      : UTILTIME_TIMER_TIMEOUT_OF_CUSTOM_TICK(OsScheduler_aTcbVariableRamPart[Os_ucTaskIndex].timer,
 8001314:	68ab      	ldr	r3, [r5, #8]
 8001316:	1ac0      	subs	r0, r0, r3
        (boolean) ((boTaskCycleTimeIsZero != (boolean) FALSE)
 8001318:	2800      	cmp	r0, #0
 800131a:	db02      	blt.n	8001322 <OsSchedulerStartOs+0x82>
 800131c:	6027      	str	r7, [r4, #0]
    for(Os_ucTaskIndex = (uint8_least) 0U; (boAnyTaskIsReady == (boolean) FALSE) && (Os_ucTaskIndex < (uint8_least) OsSchedulerTaskMax_ID); ++Os_ucTaskIndex)
 800131e:	2301      	movs	r3, #1
 8001320:	e7d7      	b.n	80012d2 <OsSchedulerStartOs+0x32>
        (boolean) ((   (boTaskHasEvent   != (boolean) FALSE)
 8001322:	68eb      	ldr	r3, [r5, #12]
 8001324:	b923      	cbnz	r3, 8001330 <OsSchedulerStartOs+0x90>
    for(Os_ucTaskIndex = (uint8_least) 0U; (boAnyTaskIsReady == (boolean) FALSE) && (Os_ucTaskIndex < (uint8_least) OsSchedulerTaskMax_ID); ++Os_ucTaskIndex)
 8001326:	2302      	movs	r3, #2
 8001328:	6023      	str	r3, [r4, #0]

    if(boAnyTaskIsReady == (boolean) FALSE)
    {
      // No ready task has been found.
      // Service the idle task.
      OS_TASK_IDLE();
 800132a:	f7ff ffb7 	bl	800129c <SysIdle_OsIdleTask>
 800132e:	e7cc      	b.n	80012ca <OsSchedulerStartOs+0x2a>
 8001330:	6027      	str	r7, [r4, #0]
    for(Os_ucTaskIndex = (uint8_least) 0U; (boAnyTaskIsReady == (boolean) FALSE) && (Os_ucTaskIndex < (uint8_least) OsSchedulerTaskMax_ID); ++Os_ucTaskIndex)
 8001332:	2301      	movs	r3, #1
 8001334:	e7e7      	b.n	8001306 <OsSchedulerStartOs+0x66>
 8001336:	bf00      	nop
 8001338:	20000024 	.word	0x20000024
 800133c:	2000003c 	.word	0x2000003c
 8001340:	08001810 	.word	0x08001810

08001344 <memcmp>:
 8001344:	2a03      	cmp	r2, #3
 8001346:	b470      	push	{r4, r5, r6}
 8001348:	d912      	bls.n	8001370 <memcmp+0x2c>
 800134a:	ea40 0501 	orr.w	r5, r0, r1
 800134e:	07ad      	lsls	r5, r5, #30
 8001350:	4604      	mov	r4, r0
 8001352:	460b      	mov	r3, r1
 8001354:	d11e      	bne.n	8001394 <memcmp+0x50>
 8001356:	4619      	mov	r1, r3
 8001358:	4620      	mov	r0, r4
 800135a:	f853 5b04 	ldr.w	r5, [r3], #4
 800135e:	f854 6b04 	ldr.w	r6, [r4], #4
 8001362:	42ae      	cmp	r6, r5
 8001364:	d116      	bne.n	8001394 <memcmp+0x50>
 8001366:	3a04      	subs	r2, #4
 8001368:	2a03      	cmp	r2, #3
 800136a:	4620      	mov	r0, r4
 800136c:	4619      	mov	r1, r3
 800136e:	d8f2      	bhi.n	8001356 <memcmp+0x12>
 8001370:	1e56      	subs	r6, r2, #1
 8001372:	b1a2      	cbz	r2, 800139e <memcmp+0x5a>
 8001374:	3901      	subs	r1, #1
 8001376:	1e44      	subs	r4, r0, #1
 8001378:	e001      	b.n	800137e <memcmp+0x3a>
 800137a:	18c3      	adds	r3, r0, r3
 800137c:	d00c      	beq.n	8001398 <memcmp+0x54>
 800137e:	f814 5f01 	ldrb.w	r5, [r4, #1]!
 8001382:	f811 2f01 	ldrb.w	r2, [r1, #1]!
 8001386:	4295      	cmp	r5, r2
 8001388:	eba6 0304 	sub.w	r3, r6, r4
 800138c:	d0f5      	beq.n	800137a <memcmp+0x36>
 800138e:	1aa8      	subs	r0, r5, r2
 8001390:	bc70      	pop	{r4, r5, r6}
 8001392:	4770      	bx	lr
 8001394:	1e56      	subs	r6, r2, #1
 8001396:	e7ed      	b.n	8001374 <memcmp+0x30>
 8001398:	4618      	mov	r0, r3
 800139a:	bc70      	pop	{r4, r5, r6}
 800139c:	4770      	bx	lr
 800139e:	4610      	mov	r0, r2
 80013a0:	e7f6      	b.n	8001390 <memcmp+0x4c>
 80013a2:	bf00      	nop

080013a4 <memmove>:
 80013a4:	4288      	cmp	r0, r1
 80013a6:	b4f0      	push	{r4, r5, r6, r7}
 80013a8:	d90d      	bls.n	80013c6 <memmove+0x22>
 80013aa:	188b      	adds	r3, r1, r2
 80013ac:	4283      	cmp	r3, r0
 80013ae:	d90a      	bls.n	80013c6 <memmove+0x22>
 80013b0:	1884      	adds	r4, r0, r2
 80013b2:	b132      	cbz	r2, 80013c2 <memmove+0x1e>
 80013b4:	4622      	mov	r2, r4
 80013b6:	f813 4d01 	ldrb.w	r4, [r3, #-1]!
 80013ba:	f802 4d01 	strb.w	r4, [r2, #-1]!
 80013be:	4299      	cmp	r1, r3
 80013c0:	d1f9      	bne.n	80013b6 <memmove+0x12>
 80013c2:	bcf0      	pop	{r4, r5, r6, r7}
 80013c4:	4770      	bx	lr
 80013c6:	2a0f      	cmp	r2, #15
 80013c8:	d80e      	bhi.n	80013e8 <memmove+0x44>
 80013ca:	4603      	mov	r3, r0
 80013cc:	1e54      	subs	r4, r2, #1
 80013ce:	2a00      	cmp	r2, #0
 80013d0:	d0f7      	beq.n	80013c2 <memmove+0x1e>
 80013d2:	3401      	adds	r4, #1
 80013d4:	440c      	add	r4, r1
 80013d6:	3b01      	subs	r3, #1
 80013d8:	f811 2b01 	ldrb.w	r2, [r1], #1
 80013dc:	f803 2f01 	strb.w	r2, [r3, #1]!
 80013e0:	42a1      	cmp	r1, r4
 80013e2:	d1f9      	bne.n	80013d8 <memmove+0x34>
 80013e4:	bcf0      	pop	{r4, r5, r6, r7}
 80013e6:	4770      	bx	lr
 80013e8:	ea40 0301 	orr.w	r3, r0, r1
 80013ec:	079b      	lsls	r3, r3, #30
 80013ee:	d13f      	bne.n	8001470 <memmove+0xcc>
 80013f0:	f1a2 0310 	sub.w	r3, r2, #16
 80013f4:	f023 040f 	bic.w	r4, r3, #15
 80013f8:	f101 0720 	add.w	r7, r1, #32
 80013fc:	4427      	add	r7, r4
 80013fe:	091b      	lsrs	r3, r3, #4
 8001400:	f101 0410 	add.w	r4, r1, #16
 8001404:	f100 0510 	add.w	r5, r0, #16
 8001408:	f854 6c10 	ldr.w	r6, [r4, #-16]
 800140c:	f845 6c10 	str.w	r6, [r5, #-16]
 8001410:	f854 6c0c 	ldr.w	r6, [r4, #-12]
 8001414:	f845 6c0c 	str.w	r6, [r5, #-12]
 8001418:	f854 6c08 	ldr.w	r6, [r4, #-8]
 800141c:	f845 6c08 	str.w	r6, [r5, #-8]
 8001420:	f854 6c04 	ldr.w	r6, [r4, #-4]
 8001424:	f845 6c04 	str.w	r6, [r5, #-4]
 8001428:	3410      	adds	r4, #16
 800142a:	42bc      	cmp	r4, r7
 800142c:	f105 0510 	add.w	r5, r5, #16
 8001430:	d1ea      	bne.n	8001408 <memmove+0x64>
 8001432:	3301      	adds	r3, #1
 8001434:	f012 0f0c 	tst.w	r2, #12
 8001438:	eb01 1103 	add.w	r1, r1, r3, lsl #4
 800143c:	f002 040f 	and.w	r4, r2, #15
 8001440:	eb00 1303 	add.w	r3, r0, r3, lsl #4
 8001444:	d017      	beq.n	8001476 <memmove+0xd2>
 8001446:	3c04      	subs	r4, #4
 8001448:	f024 0c03 	bic.w	ip, r4, #3
 800144c:	08a5      	lsrs	r5, r4, #2
 800144e:	449c      	add	ip, r3
 8001450:	1f1c      	subs	r4, r3, #4
 8001452:	460e      	mov	r6, r1
 8001454:	f856 7b04 	ldr.w	r7, [r6], #4
 8001458:	f844 7f04 	str.w	r7, [r4, #4]!
 800145c:	4564      	cmp	r4, ip
 800145e:	d1f9      	bne.n	8001454 <memmove+0xb0>
 8001460:	1c6c      	adds	r4, r5, #1
 8001462:	eb03 0384 	add.w	r3, r3, r4, lsl #2
 8001466:	eb01 0184 	add.w	r1, r1, r4, lsl #2
 800146a:	f002 0203 	and.w	r2, r2, #3
 800146e:	e7ad      	b.n	80013cc <memmove+0x28>
 8001470:	1e54      	subs	r4, r2, #1
 8001472:	4603      	mov	r3, r0
 8001474:	e7ad      	b.n	80013d2 <memmove+0x2e>
 8001476:	4622      	mov	r2, r4
 8001478:	e7a8      	b.n	80013cc <memmove+0x28>
 800147a:	bf00      	nop

0800147c <memset>:
 800147c:	b4f0      	push	{r4, r5, r6, r7}
 800147e:	0786      	lsls	r6, r0, #30
 8001480:	d046      	beq.n	8001510 <memset+0x94>
 8001482:	1e54      	subs	r4, r2, #1
 8001484:	2a00      	cmp	r2, #0
 8001486:	d03c      	beq.n	8001502 <memset+0x86>
 8001488:	b2ca      	uxtb	r2, r1
 800148a:	4603      	mov	r3, r0
 800148c:	e001      	b.n	8001492 <memset+0x16>
 800148e:	3c01      	subs	r4, #1
 8001490:	d337      	bcc.n	8001502 <memset+0x86>
 8001492:	f803 2b01 	strb.w	r2, [r3], #1
 8001496:	079d      	lsls	r5, r3, #30
 8001498:	d1f9      	bne.n	800148e <memset+0x12>
 800149a:	2c03      	cmp	r4, #3
 800149c:	d92a      	bls.n	80014f4 <memset+0x78>
 800149e:	b2cd      	uxtb	r5, r1
 80014a0:	ea45 2505 	orr.w	r5, r5, r5, lsl #8
 80014a4:	2c0f      	cmp	r4, #15
 80014a6:	ea45 4505 	orr.w	r5, r5, r5, lsl #16
 80014aa:	d934      	bls.n	8001516 <memset+0x9a>
 80014ac:	f1a4 0210 	sub.w	r2, r4, #16
 80014b0:	f022 0c0f 	bic.w	ip, r2, #15
 80014b4:	f103 0720 	add.w	r7, r3, #32
 80014b8:	0916      	lsrs	r6, r2, #4
 80014ba:	4467      	add	r7, ip
 80014bc:	f103 0210 	add.w	r2, r3, #16
 80014c0:	e942 5504 	strd	r5, r5, [r2, #-16]
 80014c4:	e942 5502 	strd	r5, r5, [r2, #-8]
 80014c8:	3210      	adds	r2, #16
 80014ca:	42ba      	cmp	r2, r7
 80014cc:	d1f8      	bne.n	80014c0 <memset+0x44>
 80014ce:	1c72      	adds	r2, r6, #1
 80014d0:	f014 0f0c 	tst.w	r4, #12
 80014d4:	eb03 1202 	add.w	r2, r3, r2, lsl #4
 80014d8:	f004 060f 	and.w	r6, r4, #15
 80014dc:	d013      	beq.n	8001506 <memset+0x8a>
 80014de:	1f33      	subs	r3, r6, #4
 80014e0:	f023 0303 	bic.w	r3, r3, #3
 80014e4:	3304      	adds	r3, #4
 80014e6:	4413      	add	r3, r2
 80014e8:	f842 5b04 	str.w	r5, [r2], #4
 80014ec:	4293      	cmp	r3, r2
 80014ee:	d1fb      	bne.n	80014e8 <memset+0x6c>
 80014f0:	f006 0403 	and.w	r4, r6, #3
 80014f4:	b12c      	cbz	r4, 8001502 <memset+0x86>
 80014f6:	b2ca      	uxtb	r2, r1
 80014f8:	441c      	add	r4, r3
 80014fa:	f803 2b01 	strb.w	r2, [r3], #1
 80014fe:	429c      	cmp	r4, r3
 8001500:	d1fb      	bne.n	80014fa <memset+0x7e>
 8001502:	bcf0      	pop	{r4, r5, r6, r7}
 8001504:	4770      	bx	lr
 8001506:	4634      	mov	r4, r6
 8001508:	4613      	mov	r3, r2
 800150a:	2c00      	cmp	r4, #0
 800150c:	d1f3      	bne.n	80014f6 <memset+0x7a>
 800150e:	e7f8      	b.n	8001502 <memset+0x86>
 8001510:	4614      	mov	r4, r2
 8001512:	4603      	mov	r3, r0
 8001514:	e7c1      	b.n	800149a <memset+0x1e>
 8001516:	461a      	mov	r2, r3
 8001518:	4626      	mov	r6, r4
 800151a:	e7e0      	b.n	80014de <memset+0x62>
 800151c:	0000      	movs	r0, r0
 800151e:	0000      	movs	r0, r0
 8001520:	d728ae22 	.word	0xd728ae22
 8001524:	428a2f98 	.word	0x428a2f98
 8001528:	23ef65cd 	.word	0x23ef65cd
 800152c:	71374491 	.word	0x71374491
 8001530:	ec4d3b2f 	.word	0xec4d3b2f
 8001534:	b5c0fbcf 	.word	0xb5c0fbcf
 8001538:	8189dbbc 	.word	0x8189dbbc
 800153c:	e9b5dba5 	.word	0xe9b5dba5
 8001540:	f348b538 	.word	0xf348b538
 8001544:	3956c25b 	.word	0x3956c25b
 8001548:	b605d019 	.word	0xb605d019
 800154c:	59f111f1 	.word	0x59f111f1
 8001550:	af194f9b 	.word	0xaf194f9b
 8001554:	923f82a4 	.word	0x923f82a4
 8001558:	da6d8118 	.word	0xda6d8118
 800155c:	ab1c5ed5 	.word	0xab1c5ed5
 8001560:	a3030242 	.word	0xa3030242
 8001564:	d807aa98 	.word	0xd807aa98
 8001568:	45706fbe 	.word	0x45706fbe
 800156c:	12835b01 	.word	0x12835b01
 8001570:	4ee4b28c 	.word	0x4ee4b28c
 8001574:	243185be 	.word	0x243185be
 8001578:	d5ffb4e2 	.word	0xd5ffb4e2
 800157c:	550c7dc3 	.word	0x550c7dc3
 8001580:	f27b896f 	.word	0xf27b896f
 8001584:	72be5d74 	.word	0x72be5d74
 8001588:	3b1696b1 	.word	0x3b1696b1
 800158c:	80deb1fe 	.word	0x80deb1fe
 8001590:	25c71235 	.word	0x25c71235
 8001594:	9bdc06a7 	.word	0x9bdc06a7
 8001598:	cf692694 	.word	0xcf692694
 800159c:	c19bf174 	.word	0xc19bf174
 80015a0:	9ef14ad2 	.word	0x9ef14ad2
 80015a4:	e49b69c1 	.word	0xe49b69c1
 80015a8:	384f25e3 	.word	0x384f25e3
 80015ac:	efbe4786 	.word	0xefbe4786
 80015b0:	8b8cd5b5 	.word	0x8b8cd5b5
 80015b4:	0fc19dc6 	.word	0x0fc19dc6
 80015b8:	77ac9c65 	.word	0x77ac9c65
 80015bc:	240ca1cc 	.word	0x240ca1cc
 80015c0:	592b0275 	.word	0x592b0275
 80015c4:	2de92c6f 	.word	0x2de92c6f
 80015c8:	6ea6e483 	.word	0x6ea6e483
 80015cc:	4a7484aa 	.word	0x4a7484aa
 80015d0:	bd41fbd4 	.word	0xbd41fbd4
 80015d4:	5cb0a9dc 	.word	0x5cb0a9dc
 80015d8:	831153b5 	.word	0x831153b5
 80015dc:	76f988da 	.word	0x76f988da
 80015e0:	ee66dfab 	.word	0xee66dfab
 80015e4:	983e5152 	.word	0x983e5152
 80015e8:	2db43210 	.word	0x2db43210
 80015ec:	a831c66d 	.word	0xa831c66d
 80015f0:	98fb213f 	.word	0x98fb213f
 80015f4:	b00327c8 	.word	0xb00327c8
 80015f8:	beef0ee4 	.word	0xbeef0ee4
 80015fc:	bf597fc7 	.word	0xbf597fc7
 8001600:	3da88fc2 	.word	0x3da88fc2
 8001604:	c6e00bf3 	.word	0xc6e00bf3
 8001608:	930aa725 	.word	0x930aa725
 800160c:	d5a79147 	.word	0xd5a79147
 8001610:	e003826f 	.word	0xe003826f
 8001614:	06ca6351 	.word	0x06ca6351
 8001618:	0a0e6e70 	.word	0x0a0e6e70
 800161c:	14292967 	.word	0x14292967
 8001620:	46d22ffc 	.word	0x46d22ffc
 8001624:	27b70a85 	.word	0x27b70a85
 8001628:	5c26c926 	.word	0x5c26c926
 800162c:	2e1b2138 	.word	0x2e1b2138
 8001630:	5ac42aed 	.word	0x5ac42aed
 8001634:	4d2c6dfc 	.word	0x4d2c6dfc
 8001638:	9d95b3df 	.word	0x9d95b3df
 800163c:	53380d13 	.word	0x53380d13
 8001640:	8baf63de 	.word	0x8baf63de
 8001644:	650a7354 	.word	0x650a7354
 8001648:	3c77b2a8 	.word	0x3c77b2a8
 800164c:	766a0abb 	.word	0x766a0abb
 8001650:	47edaee6 	.word	0x47edaee6
 8001654:	81c2c92e 	.word	0x81c2c92e
 8001658:	1482353b 	.word	0x1482353b
 800165c:	92722c85 	.word	0x92722c85
 8001660:	4cf10364 	.word	0x4cf10364
 8001664:	a2bfe8a1 	.word	0xa2bfe8a1
 8001668:	bc423001 	.word	0xbc423001
 800166c:	a81a664b 	.word	0xa81a664b
 8001670:	d0f89791 	.word	0xd0f89791
 8001674:	c24b8b70 	.word	0xc24b8b70
 8001678:	0654be30 	.word	0x0654be30
 800167c:	c76c51a3 	.word	0xc76c51a3
 8001680:	d6ef5218 	.word	0xd6ef5218
 8001684:	d192e819 	.word	0xd192e819
 8001688:	5565a910 	.word	0x5565a910
 800168c:	d6990624 	.word	0xd6990624
 8001690:	5771202a 	.word	0x5771202a
 8001694:	f40e3585 	.word	0xf40e3585
 8001698:	32bbd1b8 	.word	0x32bbd1b8
 800169c:	106aa070 	.word	0x106aa070
 80016a0:	b8d2d0c8 	.word	0xb8d2d0c8
 80016a4:	19a4c116 	.word	0x19a4c116
 80016a8:	5141ab53 	.word	0x5141ab53
 80016ac:	1e376c08 	.word	0x1e376c08
 80016b0:	df8eeb99 	.word	0xdf8eeb99
 80016b4:	2748774c 	.word	0x2748774c
 80016b8:	e19b48a8 	.word	0xe19b48a8
 80016bc:	34b0bcb5 	.word	0x34b0bcb5
 80016c0:	c5c95a63 	.word	0xc5c95a63
 80016c4:	391c0cb3 	.word	0x391c0cb3
 80016c8:	e3418acb 	.word	0xe3418acb
 80016cc:	4ed8aa4a 	.word	0x4ed8aa4a
 80016d0:	7763e373 	.word	0x7763e373
 80016d4:	5b9cca4f 	.word	0x5b9cca4f
 80016d8:	d6b2b8a3 	.word	0xd6b2b8a3
 80016dc:	682e6ff3 	.word	0x682e6ff3
 80016e0:	5defb2fc 	.word	0x5defb2fc
 80016e4:	748f82ee 	.word	0x748f82ee
 80016e8:	43172f60 	.word	0x43172f60
 80016ec:	78a5636f 	.word	0x78a5636f
 80016f0:	a1f0ab72 	.word	0xa1f0ab72
 80016f4:	84c87814 	.word	0x84c87814
 80016f8:	1a6439ec 	.word	0x1a6439ec
 80016fc:	8cc70208 	.word	0x8cc70208
 8001700:	23631e28 	.word	0x23631e28
 8001704:	90befffa 	.word	0x90befffa
 8001708:	de82bde9 	.word	0xde82bde9
 800170c:	a4506ceb 	.word	0xa4506ceb
 8001710:	b2c67915 	.word	0xb2c67915
 8001714:	bef9a3f7 	.word	0xbef9a3f7
 8001718:	e372532b 	.word	0xe372532b
 800171c:	c67178f2 	.word	0xc67178f2
 8001720:	ea26619c 	.word	0xea26619c
 8001724:	ca273ece 	.word	0xca273ece
 8001728:	21c0c207 	.word	0x21c0c207
 800172c:	d186b8c7 	.word	0xd186b8c7
 8001730:	cde0eb1e 	.word	0xcde0eb1e
 8001734:	eada7dd6 	.word	0xeada7dd6
 8001738:	ee6ed178 	.word	0xee6ed178
 800173c:	f57d4f7f 	.word	0xf57d4f7f
 8001740:	72176fba 	.word	0x72176fba
 8001744:	06f067aa 	.word	0x06f067aa
 8001748:	a2c898a6 	.word	0xa2c898a6
 800174c:	0a637dc5 	.word	0x0a637dc5
 8001750:	bef90dae 	.word	0xbef90dae
 8001754:	113f9804 	.word	0x113f9804
 8001758:	131c471b 	.word	0x131c471b
 800175c:	1b710b35 	.word	0x1b710b35
 8001760:	23047d84 	.word	0x23047d84
 8001764:	28db77f5 	.word	0x28db77f5
 8001768:	40c72493 	.word	0x40c72493
 800176c:	32caab7b 	.word	0x32caab7b
 8001770:	15c9bebc 	.word	0x15c9bebc
 8001774:	3c9ebe0a 	.word	0x3c9ebe0a
 8001778:	9c100d4c 	.word	0x9c100d4c
 800177c:	431d67c4 	.word	0x431d67c4
 8001780:	cb3e42b6 	.word	0xcb3e42b6
 8001784:	4cc5d4be 	.word	0x4cc5d4be
 8001788:	fc657e2a 	.word	0xfc657e2a
 800178c:	597f299c 	.word	0x597f299c
 8001790:	3ad6faec 	.word	0x3ad6faec
 8001794:	5fcb6fab 	.word	0x5fcb6fab
 8001798:	4a475817 	.word	0x4a475817
 800179c:	6c44198c 	.word	0x6c44198c

080017a0 <Gpt_ConfigData>:
 80017a0:	                                         .

080017a1 <Mcu_ConfigData>:
 80017a1:	                                         ...

080017a4 <_ZN5localL15message_to_hashE>:
 80017a4:	00636261                                abc.

080017a8 <_ZN5localL7controlE>:
 80017a8:	a135afdd ba7a6193 497341cc 314120ae     ..5..az..AsI. A1
 80017b8:	4efae612 a27ea989 e6ee9e0a 9ad3554b     ...N..~.....KU..
 80017c8:	2a999221 a8c14f27 233cba36 bdebfea3     !..*'O..6.<#....
 80017d8:	23444d45 0ee83c64 4fc99a2a 9fa44ca5     EMD#d<..*..O.L..

080017e8 <_ZTVN2al6crypto6stream4hash11hash_sha512E>:
	...
 80017f0:	08000b01 08000f65 08000fa1 08000ef9     ....e...........
 8001800:	08000b05 08000b5d 08000ac5 08000ba1     ....]...........

08001810 <OsScheduler_aTcbConstRomPart>:
 8001810:	08001205 080011f5 00004268 00000000     ........hB......
 8001820:	08000a9d 08000a91 000186a0 0000021d     ................
	...
